如何使用OpenCV获取Homography矩阵(拼接2个图像)

时间:2013-03-16 22:15:53

标签: opencv matrix homography

我正在使用Visual Studio 2012中的OpenCV,我试图在Opencv中将Homography矩阵转换为Stitch 2图像,所以我真的不知道要遵循的步骤:

enter image description here enter image description here

2 个答案:

答案 0 :(得分:8)

首先你应该知道,你在图像中说明的两点对应关系不足以进行单应性估计。单应性有7个自由参数 - 有8个矩阵元素,但单应性是同质量。这意味着您可以根据需要缩放矩阵,从而将自由参数减少一个。要估计7个参数,您需要至少四个对应点。

我认为理解你所做的比盲目调用OpenCv方法更重要,所以请阅读真正的算法。用于单应性计算的最简单(但非最优)的方法是DLT,其为了解决最小二乘意义上的y = Hx的分量,重新排列等式H四个或更多个点。这是对细节的一个很好的解释: https://engineering.purdue.edu/kak/courses-i-teach/ECE661.08/solution/hw4_s1.pdf 主要的学术参考是Heartley和Zisserman的计算机视觉多视图几何。

正如评论中所指出的,OpenCv文档在这里: http://docs.opencv.org/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html#findhomography

答案 1 :(得分:1)

要在两个图像之间建立单应性,您至少需要4个点。 每个都有两个坐标,给你两个方程/约束。 单应性有8个自由度(它是一个3x3全秩矩阵,有9个元素,-1 d.o.f.因为它在齐次坐标上运行,因此有规模)。

请注意,只有平面表面的图像或由围绕其中心旋转的相机拍摄的图像可以通过单应性相关联(在后一种情况下,平面表面是无穷远处的平面)。

这个page显示了如何使用特征提取和RANSAC计算单应性。