У меня есть эта матрица:Matlab bwlabel не соединяет все компоненты
ima = [0 0 0 0 0;
0 0 0 0 0;
0 255 255 255 0;
0 255 255 255 0;
0 255 0 255 0;
0 255 0 255 0;
0 255 255 255 0;
0 0 0 0 0;
0 0 0 0 0];
[labels, number] = bwlabel(ima, 4);
labels
В результате я получаю это:
labels =
0 0 0 0 0
0 0 0 0 0
0 1 1 1 0
0 1 1 1 0
0 1 0 1 0
0 1 0 1 0
0 1 1 1 0
0 0 0 0 0
0 0 0 0 0
Почему не два нуля в окружении тех, видели, как другой компонент со значением 2?
Это то, что я хочу:
этикетки =
0 0 0 0 0
0 0 0 0 0
0 1 1 1 0
0 1 1 1 0
0 1 2 1 0
0 1 2 1 0
0 1 1 1 0
0 0 0 0 0
0 0 0 0 0
Я отметит это как правильно! Благодарю. Но пример matlab [link] (https://www.mathworks.com/help/images/ref/bwlabel.html) не использовал оператор '~'. Какая разница с этим примером с мин? – Jam1
@ Jam1 '~' - это оператор '' not' (https://www.mathworks.com/help/matlab/ref/not.html) и превращает все не-нули в нуль и все нули в 1. Поскольку 'bwlabel' работает только с значениями' 1', '~' позволяет ему работать только с 0 значениями. – Suever
Спасибо, но я не могу использовать 'imfill' lol – Jam1