单映性矩阵是一个3*3矩阵,描述了摄影几何中平面到平面的映射,其自由度为8,由九个元素组成(为什么是9个元素,8个自由度,下文求解过程会详细说明),通常令最后一个元素为1或者使其F范数为1,该矩阵可将无穷远点投射于有限处,即空间中平行线在图像上相交于有限处.其表达式如下:
其中,单映性矩阵为:
单映性矩阵一般应用在全景拼接上,所拍摄的全景是相机绕其光心所得,若不满足相机绕光心旋转这一条件,那么全景拼接的效果很差.另外,当H的最后一行为[0,0,1]时,则不能将无穷远点投射于有限处,称为仿射变换(Affine),自由度为6.
图像满足单映性矩阵的条件:当相机拍摄的是平面物体,或者相机绕其光心旋转拍摄,那么图像两帧之间满足单映性条件.
那么如何从符合针孔模型的相机透视投影矩阵推倒出单映性矩阵呢?
在回答这个问题之前,让我们再回顾一下相机的成像模型.一般情况下,相机的数学的模型都符合针孔模型,因此相机透视投影矩阵一般为(世界坐标系到计算机图像坐标系的转换关系):
其中:
(1)s为缩放因子;
(2)dx,dy表示像素的物理长度一般为毫米单位;
(3)f(mm)为物理焦距;
(4)u0,v0为光轴和图像的交点,在理想情况下为图像中心,比如图像分辨率为640*480,那么u0=320,v0=240
(5)R为3*3的旋转矩阵,T为3*1的平移矩阵;
(6)Pw为世界坐标系中一点;
当相机绕光心旋转时,假设相机之间的旋转矩阵为R(此时没有平移),那么相机坐标系之间的转换关系为:
其中:
,
因此上面表达式等价于:
相机坐标系到计算机图像坐标系之间的转换为:
所以:
由(5)(7)(8)得:
至此,推倒完毕.
下面用几何图像形象说明,绕相机中心可以求得单映性矩阵.
上图中O为投影中心,P为世界坐标系中一个物点,P1,P2为P在像平面中的点,由图可知,已知像平面1,2的关系,把像平面统一到同一个坐标系下,可以得到两个平面方程s1和s2,就可以求得直线OP1和像平面2的交点P2.
那有些同学可能要问了,为什么一定要让相机绕光心旋转才能满足单映性条件?因为如果相机两帧之间存在平移,那么图像之间的映射跟深度有关.在这里我也一并给出推倒过程.
我们对(6)进行一个等价变形得到:
那么同理(7)(8)等价变形得到:
由(4)(11)(12)得:
其中
由(13)得:
可见,u1,v1依赖于z2.
同样这里依然用几何图形来直观的解释为什么不绕相机中心旋转(也即相机投影中心存在偏移),不能求得单映性矩阵.如下图所示:
O1和O2是两个相机的投影中心,S1和S2为其对应的像平面,S21为S2的延长面,P为世界坐标系中的一物点,其在S1和S2以及S21上的投影分别为P1,P2,P3,从几何上很直观的可以看到,已知S1,S2,直线O1P1,只能求得P3,无法求得P2,所以无法获得单映射性矩阵.
以上通过数学推倒以及几何上的直观解释,说明了单映性矩阵的适用条件,若有不对的地方或者不足的地方,欢迎大家批评指正.