最小化单应矩阵中的误差

Minimize error in homography matrix

我有一个单应矩阵

 [h1 h2 h3 
  h4 h5 h6 
  h7 h8 h9]

我改造了一个点 p1 to P1 使用上面的单应矩阵。 同样

    p2 to P2
    p3 to P3
    p4 to P4

我知道两者的区别

P1-P2 = D1
P2-P3 = D2
P3-P4 = D3

由于单应性错误 D1、D2、D3 有小误差。 (我知道实际的差值) 设误差为 E1, E2, E3(已知值)。

(E1 = D1 - Actual_Difference_between_P1_andP2)

同样计算E2、E3、E4。

现在我需要修改我的单应矩阵,使我的 E1、E2、E3、E4 最小化。

简介:

可以从 4 对点获得 100% 准确度的单应性(真实 0 reprojection-error)。但是,当点对的数量超过 4 个时,您可能无法获得 0 错误的单应性。这是因为这些点可能不在一个 3D 平面中。

所以,首先你必须处理这样一个事实,即在实际应用中,可能没有 100% 准确的单应性(由于匹配误差),但有一个最优的(最小重投影误差矩阵)。

公式:

关于你的问题,你似乎有两组对点。一个是你用来获得单应性的,另一个是你正在基于它验证你的模型,然后你想用它来增强你的模型。

如何增强单应性?

首先,使用这两个集合使用一些稳健的估计方法(例如 RANSAC)获得单应性。您可能会找到更多信息 here.

其次,遍历您的集合并按照您的描述计算每个点的重投影误差。然后,消除所有重投影误差超过某个阈值的点。

第三,仅对内点应用微调优化技术,直到根据内点之间的误差总和获得良好的单应性。

第三步怎么做?

您有 8 个参数需要优化:

h11    h12    h13
h21    h22    h23
h31    h32     1

优化函数:

并且您已经使用 RANSAC 计算了单应性。因此,您有一个非常好的估计,它 接近全局最优值 。这意味着 非线性局部优化 技术对于这种情况就足够了。存在许多算法。选择一个开始(一些建议:Hill Climbing, Simulated Annealing


编辑 在 OP 评论说只有第二组之间的距离是已知的之后:

优化函数应该是:

其中 AD_ij 是 Pi 和 Pj 之间的实际距离。

您可以尝试降低复杂性,例如使用 欧几里德距离 的序列作为参考和查询。