机器视觉:(1) 单应矩阵Homography

本文转自这里

在计算机视觉中,平面的单应性被定义为一个平面到另外一个平面的投影映射。因此一个二维平面上的点映射到摄像机成像仪上的映射就是平面单应性的例子。如果点Q到成像仪上的点q的映射使用齐次坐标,这种映射可以用矩阵相乘的方式表示。若有一下定义:


机器视觉:(1) 单应矩阵Homography

则可以将单应性简单的表示为:


机器视觉:(1) 单应矩阵Homography

这里引入参数s,它是任意尺度的比例(目的是使得单应性定义到该尺度比例)。通常根据习惯放在H的外面。
H有两部分组成:用于定位观察的物体平面的物理变换和使用摄像机内参数矩阵的投影。


机器视觉:(1) 单应矩阵Homography

物理变换部分是与观测到的图像平面相关的部分旋转R和部分平移t的影响之和,表示如下


机器视觉:(1) 单应矩阵Homography

这里R为3*3大小的矩阵,t表示一个一个3维的列矢量。

摄像机内参数矩阵用M表示,那么我们重写单应性如下:


机器视觉:(1) 单应矩阵Homography

我们知道单应性研究的是一个平面上到另外一个平面的映射,那么上述公式中的Q,就可以简化为平面坐标中的Q’,即我们使Z=0。即物体平面上的点我们用x,y表示,相机平面上的点,我们也是用二维点表示。我们去掉了Z方向的坐标,那么相对于旋转矩阵R,R可以分解为R=[r1 r2 r3],那么r3也就不要了,参考下面的推导:


机器视觉:(1) 单应矩阵Homography

其中H为:


机器视觉:(1) 单应矩阵Homography

是一个3×3大小的矩阵.
故最终的单应性矩阵可表示如下:


机器视觉:(1) 单应矩阵Homography

OpenCV就是利用上述公式来计算单应性矩阵。它使用同一物体的多个图像来计算每个视场的旋转和平移,同时也计算摄像机的内参数。我们知道旋转和平移共6个参数,摄像机内参数为4个参数。对于每一个视场有6个要求解的新参数和4个不变的相机内参数。对于平面物体如棋盘,能够提供8个方差,即映射一个正方形到四边形可以用4个(x,y)来描述。那么对于两个视场,我们就有8*2=16=2*6+4,即求解所有的参数,至少需要两个视场。

为什么正方形到四边形的四个点的映射可以确定8个方程呢,结果是显然的,我们假设物体平面上的正方形的一个顶点坐标为(u,v),成像仪与该点对应的点坐标为(x,y),我们假设它们之间的关系如下:
u=f(x,y);
v=g(x,y);

显然,我们把四点的对应坐标带入到上述公式可以得到8个方程。