算法:2D变换,找到偏离的点对并省略

时间:2012-02-06 11:12:09

标签: algorithm transform points correspondence

我正在寻找以下类型的算法:

2D中有n对匹配的点。如何根据Affine / Helmert变换识别外围点对,并从变换键中省略它们?我们不知道这些边远对的确切数量。

我不能使用Trimmed Least Squares方法,因为有一个基本的假设,即k对的百分比是正确的。但我们没有关于样本的任何信息,也不知道k ...在这样的所有对的样本中可能是正确的,反之亦然。

哪种算法适合此问题?

2 个答案:

答案 0 :(得分:2)

使用RANSAC

重复以下步骤固定次数:

  • 随机选择计算转换参数所需的对数。
  • 计算参数。
  • 计算投影误差较小的对子集(“共识集”)。
  • 如果共识集足够大,请为其计算投影(例如,使用最小二乘法)。
  • 计算机共识集的投影错误
  • 如果它是迄今为止发现的最佳模型,请记住该模型。

您必须尝试为

找到合适的值
  • “固定次数”
  • “小投影错误”
  • “共识设定足够大”。

答案 1 :(得分:1)

最简单的方法是根据所有点计算变换,计算每个点的残差,删除具有高残差的点,直到达到可接受的变换或达到可接受输入点的最小数量。任何给定点的残差是点的正向变换值与预期目标点之间的连接距离。

注意,仿射变换和Helmert(共形)变换之间的残差将是非常不同的,因为这些变换做了不同的事情。仿射的非均匀尺度具有更大的“拉伸”,因此会导致更小的残差。