在之前的博文OpenCV,计算两幅图像的单应矩阵,介绍调用OpenCV中的函数,通过4对对应的点的坐标计算两个图像之间单应矩阵 H ,然后调用射影变换函数,将一幅图像变换到另一幅图像的视角中。当时只是知道通过单应矩阵,能够将图像1中的像素坐标
单应(Homography)是射影几何中的概念,又称为射影变换。它把一个射影平面上的点(三维齐次矢量)映射到另一个射影平面上,并且把直线映射为直线,具有保线性质。总的来说,单应是关于三维齐次矢量的一种线性变换,可以用一个 3×3 的非奇异矩阵 H 表示
这是一个齐次坐标的等式, H 乘以一个非零的比例因子上述等式仍然成立,即
假设已经取得了两图像之间的单应,则可单应矩阵 H 可以将两幅图像关联起来
其中, (u1,v1,1)T 表示图像1中的像点, (u2,v2,1)T 是图像2中的像点,也就是可以通过单应矩阵 H 将图像2变换到图像1,如下图。这有了很多实际的应用,例如图像的校正、对齐以及在SLAM中估计两个相机间的运动。
同一相机在不同的位姿得到同一平面的图像
假设使用同一相机在不同的位姿拍摄同一平面,如下图:
上图表示场景中的平面
NTX1=d
即
1dNTX1=1,∀X1∈π
其中, X1 是三维点 P 在第一相机坐标系下的坐标,其在第二个相机坐标系下的坐标为
X2=RX1+T
将上面式子结合起来,
X2=RX1+T1dNTX1=(R+T1dNT)X1=H′X1