Matlab - 根据regionprops过滤标记的矩阵

时间:2011-06-11 16:13:23

标签: image matlab image-processing

我已经标记了一张图片(使用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 个答案:

答案 0 :(得分:4)

如果您仍在尝试解决此问题,请考虑以下示例:

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

答案 1 :(得分:0)

好的,看起来函数ismember可以解决问题,但我相信你们知道更好的方法。