删除方形对象

时间:2014-07-17 11:15:44

标签: image matlab image-processing computer-vision image-segmentation

enter image description here

我的图像包括圆形,椭圆形,方形物体和类似的东西。我想只得到循环物体。我通过使用objets的Solidity和Enccentricity级别来应用过滤器但是我无法移除方形对象。没有尖角的方形物体与圆形物体具有几乎相同的Solidity和Enccentricity水平。

我的问题是有没有其他参数或方法来检测方形物体?

2 个答案:

答案 0 :(得分:11)

您可以使用以下公式将面具的面积与其周长进行比较

ratio = 4 * pi * Area / ( Perimeter^2 )

对于圆圈,这个口粮应该非常接近一个,对于其他形状,它应该明显更低 有关示例,请参阅this tutorial

这个公式背后的基本原理:圆的周长 - 面积比最佳 - 给定周长的最大面积。给定周长,您可以使用Perimeter = 2*pi*R估算等效圆的半径,使用此R您可以使用eqArea = pi*R^2计算“等效圆圈区域”。现在,您只需要检查形状的实际面积与计算的“等效面积”之间的比率。

注意:由于掩码中的AreaPerimeter对象是基于像素级离散化估算的,因此这些估计可能非常粗糙,特别是对于小形状。如果发现量化/离散化错误,请考虑使用更高分辨率的掩码。

答案 1 :(得分:3)

存在霍夫变换(imfindcircles),以便在图像中找到您首先需要的圆圈。