【问题标题】:Deleting objects based on area calculation根据面积计算删除对象
【发布时间】:2018-02-26 12:41:08
【问题描述】:
我有一张带有小物体的图像。我使用
计算了它们的面积
area=regionprops(CC,'Area');
CC是由
返回的连通分量
CC=bwconncomp(BW);
现在我需要移除面积小于 15 的对象(在原始图像 BW 中将它们设置为零)。
我知道我可以用比regionprops 更简单的方法来做到这一点,但我需要从regionprops 的输出中做到这一点,因为我将提取regionprops 支持的其他属性和以类似的方式根据这些提取的特征再次过滤图像。谁能帮我完成这项任务?
【问题讨论】:
标签:
matlab
image-processing
【解决方案1】:
在你显示的两个命令之后,
CC=bwconncomp(BW);
area=regionprops(CC,'Area');
area 是一个结构体数组,其中area(ii).Area 是对象ii 的区域。这对应于CC.PixelIdxList{ii}给出的连通分量。
你可以通过
找到面积较小的索引
I = find([area.Area] < 15);
那么,
CC.PixelIdxList{I}
给出一个以逗号分隔的带有像素索引的向量列表。您可以使用cat 将这些向量连接成一个向量:
pixels = cat(1,CC.PixelIdxList{I});
现在剩下的就是在输入图像中将这些像素设置为 0:
BW(pixels) = 0;