我已经标记了一张图片(使用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函数才能完成。
答案 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)
答案 1 :(得分:0)
好的,看起来函数ismember
可以解决问题,但我相信你们知道更好的方法。