如何使用宽高比减少斑点?

时间:2017-07-18 04:06:51

标签: matlab blob reduce aspect-ratio

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

这是二进制图像的链接。我想减少宽高比大于1的3个blob。只想保持那个三角形。

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

1 个答案:

答案 0 :(得分: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

并查看宽度/高度比ar(或任何您定义的宽高比)是否大约等于1(因为噪音我的值为ar> 1.2)。然后,对于i使用,您可以使用像素列表s(i).PixelIdxList

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

将这些强度归零......