Matlab - фильтрация помеченной матрицы по regionprops - PullRequest
2 голосов
/ 11 июня 2011

Я пометил изображение (используя bwlabel), и после этого я использовал regionprops, чтобы получить эксцентриситеты помеченных объектов.Теперь я хочу отфильтровать каждый помеченный объект, эксцентриситет которого меньше 0,5.

До сих пор я мог использовать find, чтобы получить количество областей, соответствующих критериям, ноЯ не знаю, как использовать их для фильтрации исходного изображения с меткой.

Например:

labeledImage = bwlabel(originalImage);
properties = regionprops(labeledImage, 'eccentricity');
eccentricities = cat(1, properties.Eccentricity);

regions = find(eccentricities > 0.5);
% now what?

Я пытался сделать это с помощью for циклов, но это медленночерт возьми, и я уверен, что для этого должна быть скрытая функция matlab.

Ответы [ 2 ]

4 голосов
/ 13 июня 2011

Если вы все еще пытаетесь решить эту проблему, рассмотрите следующий пример:

BW = imread('text.png');

CC = bwconncomp(BW);
L = labelmatrix(CC);

props = regionprops(CC, 'eccentricity');
idx = ( [props.Eccentricity] > 0.6);

BW2 = ismember(L,find(idx));    %# filter components with Eccentricity>0.6
BW3 = ismember(L,find(~idx));   %# filter components with Eccentricity<0.6

subplot(131), imshow(BW)
subplot(132), imshow(BW2)
subplot(133), imshow(BW3)

enter image description here

0 голосов
/ 11 июня 2011

Хорошо, похоже, что функция ismember сделала свое дело, но я уверен, что вы, ребята, знаете лучшие способы сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...