algorithm - 最适合多条线的交集

标签 algorithm opencv geometry computational-geometry

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

  • 我正在分析一幅图像,并从该分析中获得一组片段
  • 我想知道这些线的交点(最适合)

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

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

Bad lines influencing result

详细信息:

  • 左上图显示影响结果的“孤独”紫色线(所有线都用作输入)。

  • 右上图显示了一条紫色线(一条被移除)如何影响结果。

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

  • 右下图显示了另一条紫色线(另一条已移除)如何影响结果。

正如您所看到的只有两行,结果与预期的完全不同。任何有关如何避免这种情况的想法都将受到赞赏。

谢谢,

尤利安

最佳答案

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

我会尝试一种迭代解决方案:如果第一个解决方案的误差太大,则从线段集中移除距离该解决方案最远的线段,然后迭代直到误差小到可以接受的程度。这应该删除许多交叉点之一,并收敛到附近线最多的那个。

关于algorithm - 最适合多条线的交集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6357625/

相关文章:

c++ - 将 Mat 转换为 vector <float> 并将 Vector<float> 转换为 opencv 中的 mat

delphi - 如何用线段创建二维圆弧的近似值?

c# - 边界框内是否有经纬度?

algorithm - 每种可能的组合算法

algorithm - 是否有 OSS 或算法来计算许多 3D 对象所需的总 3D 空间?

c# - 使用 Entity Framework 的最佳比较算法

python - 如何计算两条线之间的交点,其中一条线由数据框列定义

python - 在 Python 中实现基于策略的深度优先遍历

python - 将 opengl 缓冲区写入视频的工件

c++ - 如何将 cv::Mat 转换为 cv::Rect