如何选择面积最大的物体?

use*_*838 6 matlab image-processing object matrix area

我曾经习惯于bwconvhull检测图像的某个部分,正如你在图像中看到的那样,有许多具有某些质心的物体.我想要做的是检测具有最大区域的对象(左起第一个大)并忽略其他对象.我应该遵循哪种方法?

我将非常感谢你的帮助.以下是代码(由于我仍在处理,因此非常粗略地写了.抱歉给您带来任何不便)

CH_objects = bwconvhull(c,'objects');
imshow(CH_objects);
title('Objects Convex Hull');
bwarea(CH_objects)
Ilabel = bwlabel(CH_objects,8);
stat = regionprops(Ilabel,'centroid');
imshow(CH_objects);
hold on;
for x = 1:numel(stat)
    plot(stat(x).Centroid(1),stat(x).Centroid(2),'ro');
end
Run Code Online (Sandbox Code Playgroud)

是图像.

bla*_*bla 11

使用AreaPixelIdxList在regionprops中,这意味着编辑到以下行:

stat = regionprops(Ilabel,'Centroid','Area','PixelIdxList');
Run Code Online (Sandbox Code Playgroud)

最大区域及其结构索引由下式给出

[maxValue,index] = max([stat.Area]);
Run Code Online (Sandbox Code Playgroud)

每个区域的像素线性索引由`stat.PixelIdxList'给出,您可以使用它们来删除给定区域(我假设这意味着为它分配零)

YourImage(stat(index).PixelIdxList)=0;
Run Code Online (Sandbox Code Playgroud)