在重叠处划分轮廓

时间:2012-11-06 09:05:37

标签: c++ image-processing opencv

我有一张图片,我用1号提取了几个轮廓cvCanny和2nd)findContours。我只对外部点感兴趣,所以我得到了几个封闭的轮廓,我会进一步分析。我正在寻找椭圆或圆圈,由于图像中有一些重叠,我得到了一些实际上对我有意义的轮廓,但我的算法丢弃了它们,因为它们看起来不是椭圆形的。
有没有办法将这些轮廓分开,例如基于两个重叠轮廓之间的小连接“桥”,检测为一个?

Example contour

在这个例子中,我想在右下角切割杆 由于性能问题,霍夫圆检测不是一种选择。

谢谢!

1 个答案:

答案 0 :(得分:1)

之前从未使用过这些类型的算法,但这里有一个想法:在点之间定义一个小于你想要创建桥的点的最小长度L.然后,对于轮廓上的每个点,构造长度为L的切线线段,其原点位于该点。无论切线线段与两个点相交,您都会有一个轮廓有效地被“挤压”的位置,就像图中的杆/椭圆连接点一样。当发生这种情况时,绘制桥梁,这将是切线段本身。

如果您在单个点(例如在曲线的顶部,朝向左侧)拍摄单个线段并沿着轮廓移动线段,沿着创建的桥移动线段,可能更容易想象或做满足上述条件时在线。