最合适的算法,将一组线条拟合到多边形上

时间:2013-05-09 22:45:38

标签: algorithm polygon shape

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

enter image description here

  • 没有一对一的映射。我相信这排除了Kabsch算法,尽管我可以设想一个使用它的强力算法。
  • 集合B可能包含A中的部分线段。它可能包含非常稀疏的行数。
  • B中的行将是错误的 - 可能存在A中不存在的行。
  • 当然,可能有多个可能的'匹配'

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

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

我看了看周围,例如:

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

这是一个聪明的方法吗?轻击图像处理文献形状匹配似乎是光栅图像的更多模式匹配 - 这可能是这个问题的过度杀伤。

我现在能够感知的最好的方法是使用类似Hough变换的方法,沿着A中的每条线取B中的每条线,并且具有用于这些代表的旋转/变换的箱。我没有对此进行编码并尝试了 - 有点想避免重新发明轮子。

任何想法和输入都非常感激。

1 个答案:

答案 0 :(得分:0)

一般解决方案是从集合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中的行类型,您可以提取相关要素。示例:如果所有线条都是垂直或平行的,则可以使用线条之间的距离等功能。