2017-02-17 6 views
0

У меня есть эта матрица: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 

ответ

2

только значения, которые в вашей входной матрицы в 1 рассматриваются как компоненты к этикетке. Если вы хотите получить второй вывод, как вы показали, вам необходимо также применить bwlabel к обратным вашей матрицы, чтобы маркировать значения 0.

[labels, number] = bwlabel(ima, 4); 

% Compute the labels of the inverse 
labels2 = bwlabel(~ima, 4); 

% Combine the labels 
labels = max(labels, labels2 + number + 1); 

Если вы хотите маркировать 0 значения, которые полностью окруженными 1-х вы можете сделать что-то вроде этого

[labels, number] = bwlabel(ima, 4); 

% Find the 0's that are surrounded by 1's and label them 
filled = imfill(ima, 'holes'); 
labels2 = bwlabel(filled & ~ima, 4); 

% Combine the labels 
labels(filled) = max(labels(filled), labels2(filled) + number + 1); 
+0

Я отметит это как правильно! Благодарю. Но пример matlab [link] (https://www.mathworks.com/help/images/ref/bwlabel.html) не использовал оператор '~'. Какая разница с этим примером с мин? – Jam1

+0

@ Jam1 '~' - это оператор '' not' (https://www.mathworks.com/help/matlab/ref/not.html) и превращает все не-нули в нуль и все нули в 1. Поскольку 'bwlabel' работает только с значениями' 1', '~' позволяет ему работать только с 0 значениями. – Suever

+0

Спасибо, но я не могу использовать 'imfill' lol – Jam1

Смежные вопросы