我的图像包括圆形,椭圆形,方形物体和类似的东西。我想只得到循环物体。我通过使用objets的Solidity和Enccentricity级别来应用过滤器但是我无法移除方形对象。没有尖角的方形物体与圆形物体具有几乎相同的Solidity和Enccentricity水平。
我的问题是有没有其他参数或方法来检测方形物体?
答案 0 :(得分:11)
您可以使用以下公式将面具的面积与其周长进行比较
ratio = 4 * pi * Area / ( Perimeter^2 )
对于圆圈,这个口粮应该非常接近一个,对于其他形状,它应该明显更低 有关示例,请参阅this tutorial。
这个公式背后的基本原理:圆的周长 - 面积比最佳 - 给定周长的最大面积。给定周长,您可以使用Perimeter = 2*pi*R
估算等效圆的半径,使用此R
您可以使用eqArea = pi*R^2
计算“等效圆圈区域”。现在,您只需要检查形状的实际面积与计算的“等效面积”之间的比率。
注意:由于掩码中的Area
和Perimeter
对象是基于像素级离散化估算的,因此这些估计可能非常粗糙,特别是对于小形状。如果发现量化/离散化错误,请考虑使用更高分辨率的掩码。
答案 1 :(得分:3)
存在霍夫变换(imfindcircles),以便在图像中找到您首先需要的圆圈。