如何使用纵横比减少斑点?

How to reduce blob using aspect ratio?

我有一个包含 4 个斑点的二进制图像。其中 3 个的纵横比大于 1。1 个的纵横比为 1。现在我想减少二值图像中纵横比大于 1 的斑点。我怎么能这样做。有人可以提供一个代码吗??

这里是一张link的二进制图像。我想减少纵横比大于 1 的 3 个斑点。并且只想保持三角形形状。

https://www.dropbox.com/s/mngjlcsin46fgim/demo.png?dl=0

您可以为此使用 regionprops,例如:

 s=regionprops(bw,'BoundingBox','PixelIdxList');

其中 bw 是您的二值图像。

s.BoundingBox的输出是一个[x,y,width,height]向量 你可以遍历 s

for i=1:numel(s)
    ar(i) = s(i).BoundingBox(3)/s(i).BoundingBox(4)          
end

并查看 width/height 比率 ar(或您定义的纵横比)是否大约大于 1(由于噪音,我会取 ar>1.2 的值)。然后对于 i 使用你可以使用像素列表 s(i).PixelIdxList

 bw(s(ar>1.2).PixelIdxList)=0; 

将这些强度归零...