# 单应矩阵

单应矩阵(homography matrix)等同于透视变换中使用的矩阵。

透视变换描述了两个平面之间的映射关系。理解之所以称为单应矩阵,是因为两个平面之间的关系是确定的,只能通过唯一的矩阵来表示这个变换,故称之为单应矩阵。

单应矩阵通常描述处于共同平面上的一些点在两张图像间的变换关系。对于空间中固定平面上的点P(如墙面),对于运动的相机,可根据P在时刻图像中的位置来估计相机的运动。

设点P所处的固定平面的方程为:

nTP+d=0

上式参考空间中平面的方程:

A(x−x0)+B(y−y0)+C(z−z0)=0

化简为:

−nTPd=1

设是相机的内参矩阵,和相机外参旋转矩阵,是相机外参平移向量,则根据相机模型的推导,空间点P到像素坐标系的映射可写为:

p=sK(RP+t→)

使用齐次坐标表示像素坐标,因齐次坐标最后一维为0或1,则带尺度因子的与是相等的,

[uv1]≃[susvs]

表示齐次坐标这种尺度相等的关系。

则方程

p=sK(RP+t→)

可写成

p2≃K(RP+t→⋅(−nTPd))

将时刻的相机坐标系当做世界坐标系,则R表示到时刻相机的姿态变化,表示到时刻相机的平移变化,上述方程可写成:

p2≃K(R−t→nTd)K−1p1

记,则上式写为:

p2=sHp1

因和是齐次坐标,具有尺度不变性,s尺度缩放因子,而齐次坐标的最后一维要么为0要么为1,因此s最后都会被约掉,因此,

p2≃Hp1

H即为单应矩阵。

[u2v21]≃[h1h2h3h4h5h6h7h8h9][u1v11]

这里还是而非=,因此对矩阵乘以任意的缩放因子上式仍然成立。假设取则矩阵H可以重新写成:

H=[h1h2h3h4h5h6h7h81]

因此可令,单应矩阵只包含8个自由度。

{u2=h1u1+h2v1+h3h7u1+h8v1+1v2=h4u1+h5v1+h6h7u1+h8v1+1

整理之后可以写为:

{h1u1+h2v1+h3−h7u1u2−h8v1u2=u2h4u1+h5v1+h6−h7u1v2−h8v1v2=v2

由以上推理过程,1组匹配点可以得到2个方程,因此自由度为8的单应矩阵H可以通过4组匹配点(不能有3点共线)得到8个方程来求得,方程组可写为:

[u11v111000−u11u21−v11u21000u11v111−u11v21−v11v21u12v121000−u12u22−v12u22000u12v121−u12v22−v12v22u13v131000−u13u23−v13u23000u13v131−u13v23−v13v23u14v141000−u14u24−v14u24000u14v141−u14v24−v14v24][h1h2h3h4h5h6h7h8]=[u21v21u22v22u23v23u24v24]

通过求解上述方程组,可以恢复,这种方法称为直接线性变换法Direct Linear Transform(DLT)。求得H后再对其进行分解可以求得和.

(adsbygoogle = window.adsbygoogle || []).push({});

# 参考资料