【问题标题】:Best-fit algorithm to fit a set of lines onto a polygon将一组线拟合到多边形上的最佳拟合算法
【发布时间】:2013-05-09 22:45:38
【问题描述】:

我有两组线,集 A 和 B。这两组中所有线的起点和终点都是已知的,我想找到最适合集 B 到集 A 的旋转和平移。有没有缩放:

  • 没有一对一的映射。我相信这排除了 Kabsch 算法,尽管我可以设想一个使用它的蛮力算法。
  • 集 B 可能包含 A 中的部分行段。它可能包含相当稀疏的行数。
  • B 中的行将是错误的 - 可能观察到 A 中不存在的行。
  • 当然,可能存在不止一种可能的“匹配”

对于某些背景,这是基于原始图像的机器人定位系统的一部分。

  • Set A 是一个“地图” - 数据是从导入的 dxf 文件中导入的。
  • Set B 是一组观察到的线。

我已经环顾四周了,例如这里:

How to align shapes together? (Geometrical Best-Fit Algorithm)

这是一个聪明的方法吗?浏览图像处理文献中的形状匹配似乎更像是光栅图像的模式匹配——对于这个问题来说可能有点矫枉过正。

目前我能想到的最好方法是使用类似于 Hough 变换的方法,将 B 中的每一行沿 A 中的每一行取走,并为这些表示的旋转/变换设置 bin。我还没有对此进行编码并尝试过 - 有点想避免重新发明轮子。

非常感谢任何想法和意见。

【问题讨论】:

    标签: algorithm polygon shape


    【解决方案1】:

    一般的解决方案是从集合 A 中提取“特征”,并将特征与集合 B 进行比较。

    一个例子:考虑集合 A 中的所有唯一角度并计算不同的唯一角度对。在您的集合 A 示例中,只有三种可能的情况:(0,0)、(0,90)、(90,0)。对集合 B 中所有线的角度进行排序,并与集合 A 中的对进行匹配。示例:如果角度为 0,5,50,93,129,则角度为 (0,5)、(0,93)、( 5,93), (50, 129) 是匹配的候选者。获得候选人后,您可以进一步过滤它们。

    根据您在集合 A 中的线类型,您可以提取相关特征。示例:如果您的所有线都是垂直或平行的,则可以具有线之间的距离等特征。

    【讨论】:

    • 嗨。感谢您的回答。我想我可以看到你来自哪里,尽管我从一开始就被它困住了。我不知道你是如何得到一组 A 罐角对的?例如,在您的示例中,(0,0) 代表什么?
      那么这是我接下来要做什么的问题。这种方法是否有效地为我提供了集合中行之间的可能匹配,因此如果您愿意的话,可以启发式减少我使用 Kabsch 算法(或类似算法)来解决我的平移和旋转问题的搜索空间?
    猜你喜欢
    • 1970-01-01
    • 2013-03-01
    • 2019-06-11
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多