如何解决Matlab-根据regionprops过滤标记矩阵
我已经标记了图像(使用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函数才能执行此操作。
解决方法
如果您仍在尝试解决此问题,请考虑以下示例:
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)
, 好的,看起来函数ѭ6可以解决问题,但是我敢肯定,你们知道更好的方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。