匹配来自两组的对的算法

时间:2013-01-10 20:25:17

标签: algorithm set

我有两套,每套都是一对数字的列表

Set1 =[(x1, y1), (x2, y2), ..., (xN, yN)]
Set2 =[(a1, b1), (a2, b2), ..., (aN, bN)]

如果在XY平面上绘制,则Set1和Set2具有相同的基本形状,但是set2的数据点是set1的旋转/平移/缩放/噪声/偏斜版本。每组内对的排序是随机的。有没有一种有效的方法来确定set1中哪些点与set2中的对应点相对应?

2 个答案:

答案 0 :(得分:8)

您正在寻找一系列算法,以尽量减少两点云之间的差异。这是一个相当难以解决的问题,并且可以有多个解决方案(例如,如果给你两个立方体,有许多可能的旋转可以工作)。

一种特别受欢迎的方法是ICP (iterative closest point) algorithm,它以候选猜测开始并持续细化,直到达到某些正确性标准或时间到期。这可能是一个很好的起点。

希望这有帮助!

答案 1 :(得分:1)

是的,假设只有旋转,缩放和翻译,这可以做到(除了“噪音”和“倾斜”部分,我不确定)。

一种方法:

  1. 确定每组的质心(2D均值)。
  2. 确定每组的最小二乘(2D)斜率。
  3. 确定每组的2D方差。
  4. 重新映射第一组,使用质心差异转换,斜率差异旋转(*)和方差差异缩放,以便两个集合现在具有相同的质心,斜率和方差。
  5. 对两组进行排序,然后比较相等/相似点。 (或者,您可以将它们之间的RSM(均方根)差异作为“噪音”/差异的度量。)
  6. (* - 请注意,反射和/或对称可能会导致旋转部件出现问题。)

相关问题