使用腐蚀和膨胀

Working with erosion and dilatation

从上一个link:

Working with an specific region generated by BoundingBox

以下代码以此为基础

se = strel('disk',9);

p_mask=imerode(Ic(BB,1).Image,se);
k_mask=imdilate(p_mask,se);

Ipointer=I2.*repmat( k_mask , [1 1 3]);

figure,imshow(Ipointer)

Mch=Ic(BB,1).Image-k_mask;
Mbch=bwareaopen(Mch,3000);
Ichaplet=I2.*repmat( Mbch , [1 1 3]);
figure,imshow(Ichaplet)

所以,我不明白

google 是你的朋友。如果您不知道函数的作用,google matlab + 它的名称并阅读参考文档。

se 是您的结构元素。这里定义为半径为 9 的圆盘 http://de.mathworks.com/help/images/ref/strel-class.html

你的二值图像被腐蚀,然后膨胀(这被称为开放) https://en.wikipedia.org/wiki/Opening_(morphology)

假设白色被认为是前景(没有你的图像我只能猜测)打开将去除小白点。侵蚀通过蚕食轮廓来缩小一切。如果你啃得足够多,你就会吃掉洞对象 :) 膨胀会调整那些没有被完全侵蚀的对象的大小。膨胀将在轮廓周围添加像素。

bwareaopen 将删除小于 3000 像素的连通分量 http://de.mathworks.com/help/images/ref/bwareaopen.html

我相信你可以自己解决剩下的问题!