【发布时间】:2012-07-27 12:17:01
【问题描述】:
我正在使用 OpenCV/C++ 框架,在一个基本上计算可以重叠的椭圆对象的程序上工作。
对图像进行阈值处理并找到所有对象的轮廓
我的下一步是排除不是由重叠椭圆组成的对象(我稍后会分割其余的)。
我最终得到了这些对象:
在此示例图像中,右侧的所有对象都是负数,而左侧的所有对象都是有效的。
我当前的过滤器主要排除对象isoperimetric quotient。 但是,由于我的对象具有不同的大小和噪声,我并不总是对这种方法感到满意。
理想情况下,我希望有一个额外的指标来提高我当前过滤器的效率。
由于我必须在许多轮廓上重复此分析,因此成本不应该很高。
我考虑过以下方法:
- 基于轮廓中连续点的所有三元组之间角度值的直方图?
- 在数学上拟合“多边形椭圆”(我不知道该怎么做)?
- 匹配freeman链?
但我确信我错过了一些更有效、更简洁的显而易见的东西。 你有什么建议吗, 谢谢你:),
编辑: 正如雷吉斯正确地建议的那样,任何形状实际上都可以由足够数量的圆圈组成。 因此,为了使我的问题可解决,我将添加以下假设:
- 不超过 16 个椭圆/对象。
- 椭圆不能太平:长轴/短轴
- 在一个对象中,最大椭圆的面积与最小椭圆的面积必须小于 10。
【问题讨论】:
标签: c++ algorithm image-processing opencv geometry