最适合多条线的交叉点

INS*_*INS 5 algorithm geometry opencv computational-geometry

我正在尝试解决以下问题:

  • 我正在分析图像,我从这个分析中得到了一组段
  • 我想知道这些线的交叉点(最合适)

我正在使用这个opencv的函数cvSolve.对于相当好的输入一切正常.

我遇到的问题是,当我只有一个坏段作为输入时,结果与预期的不同.

坏线影响结果

细节:

  • 左上角的图像显示影响结果的"孤独"紫色线条(所有线条都用作输入).

  • 右上角的图像显示了单个紫色线(一个被移除)如何影响结果.

  • 左下方的图像显示了我们想要的东西 - 预期的线条交叉(两条紫色线都消除了).

  • 右下图显示另一条紫色线(另一条紫色线)如何影响结果.

你只能看到两行,结果与预期的完全不同.任何有关如何避免这种情况的想法都值得赞赏

谢谢,

尤利安

Cof*_*ars 6

您正在使用的算法,如链接中所述,找到问题的最小平方误差解决方案.这意味着如果有更多的交叉点,结果将是真实解决方案的平均值(对于平均值的合理定义).

我会尝试一个迭代的解决方案:如果第一个解决方案的错误太大,从段集中移除最远离解决方案的段,并迭代直到错误可接受地小.这应该删除多个交叉点中的一个,并收敛于附近大多数线的那个.

  • 您可以使用"80/20规则"跳过几个步骤,即找到所有线条的最佳拟合交点,按距离交叉点的距离排序,消除最差的20%并使用剩余的80%再次求解. (2认同)