【问题标题】: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;
    

    【讨论】:

    • 很好的解释!非常感谢!!
    猜你喜欢
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 2014-04-26
    • 1970-01-01
    • 1970-01-01
    • 2011-08-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多