我正在使用OpenCV / C ++框架,在一个基本上计算可以重叠的椭圆对象的程序上工作。
对图像进行阈值处理并找到所有对象的轮廓
我的下一步是排除不是由重叠椭圆组成的对象(稍后我将对剩余的对象进行分段)。
我最终得到了这些对象:
在此示例图像中,右侧的所有对象都是负的,而左侧的对象是有效的。
我当前的过滤器主要以isoperimetric quotient为基础排除对象。 然而,由于我有不同大小和噪音的物体,我并不总是对这种方法感到满意。
理想情况下,我希望有一个额外的指标来提高当前过滤器的效率。
由于我必须在许多轮廓上重复这种分析,因此不应该付出昂贵的代价。
我考虑过以下方法:
但我确信我错过了一些更有效,更少杂乱的明显事物。 你有什么建议吗, 谢谢:),
修改 正如瑞吉斯正确地建议的那样,任何形状实际上都可以由足够数量的圆圈组成。 因此,为了使我的问题可以解决,我将添加以下假设:
答案 0 :(得分:2)
一种可能性是尝试:
您期望看到的曲线图是一系列常数值(如果形状是椭圆形而不是圆形,则会缓慢变化),突然不连续,从一个圆变为另一个圆。
如果您的图像有噪声,您可能希望先低通滤波曲率值。
由圆/椭圆形成的形状在周边几乎都有明显的曲率,而由直边形成的形状将具有低曲率的部分。
答案 1 :(得分:0)
我怀疑任何形状都可以从足够大的重叠椭圆集创建,并且你的手上有一个不明确的问题。除非我误解了你的问题陈述。
答案 2 :(得分:0)
您是否查看了Hough-Transformations的圆圈和椭圆?可用的圈子甚至有OpenCV implementation个。这些变换必须应用于对象的轮廓。