[英]Minimize error in homography matrix
我有一个单应矩阵
[h1 h2 h3
h4 h5 h6
h7 h8 h9]
我使用上面的单应矩阵将点p1 to P1
转换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 重投影误差)。 但是,当点对的数量超过 4 时,您可能无法获得 0-error 单应性。 这是因为这些点可能不在一个 3D 平面中。
因此,首先您必须处理这样一个事实,即在实际应用中,可能没有 100% 准确的单应性(由于匹配错误),但有一个最佳(最小重投影误差矩阵)。
公式:
关于您的问题,您似乎有两组点对。 一种用于获取 Homography,另一种用于基于它验证模型,然后您想用它来增强模型。
我怎样才能增强单应性?
首先,使用两个集合来使用一些稳健的估计方法(例如 RANSAC)获得单应性。 您可以在此处找到更多信息。
其次,遍历您的集合并按照您的描述计算每个点的重投影误差。 然后,消除所有重投影误差超过某个阈值的点。
第三,仅对内点应用微调优化技术,直到根据内点之间的误差总和获得良好的单应性。
第三步怎么做?
您有 8 个参数需要优化:
h11 h12 h13
h21 h22 h23
h31 h32 1
优化函数:
并且您已经使用 RANSAC 计算了单应性。 所以,你有一个非常好的估计,它接近全局最优。 这意味着对于这种情况,非线性局部优化技术就足够了。 存在许多算法。 选择一个并开始(一些建议:爬山,模拟退火)
在 OP 评论后编辑,只有第二组之间的距离是已知的:
其中AD_ij
是 Pi 和 Pj 之间的实际距离。
您可以尝试通过例如对参考和查询使用欧几里得距离的序列来降低复杂性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.