计算机视觉中的Homography(单应)矩阵应用小结
Homography矩阵在Structure from Motion(SfM)或三维重建、视觉SLAM的初始化过程有着重要应用,本文总结了单应矩阵出现场景与常见问题求解。
单应矩阵的推导
一般地,单应模型出现的前提条件是空间点分布在同一个平面上,例外条件是相机在做纯旋转运动时的射极约束退化为单应模型,即前后帧匹配的特征点满足单应性质。计算机视觉应用中的单应矩阵具体分为两类,一类是约束空间中平面上的3D点与图像帧的2D点的单应矩阵,一类是前述3D点的两帧上的2D点的单应矩阵。
3D-2D点的单应矩阵常出现在摄像机内(外)参标定及PnP位姿求解问题,笔者在关于相机标定的笔记中已有具体介绍 ,另外有一篇小论文具体介绍了针对单应矩阵位姿分解的改进方法基于单应矩阵的相对位姿改进算法
设有空间中一平面P的两幅图像,相机的内参分别为
K
1
K_1
K1、
K
2
K_2
K2,以第一幅图的相机坐标系为参考,投影矩阵为
P
1
=
K
1
[
I
∣
0
]
P_1=K_1[I|0]
P1=K1[I∣0]
设平面上一点在两个相机坐标系下的非齐次坐标为
X
1
X_1
X1,
X
2
X_2
X2,第二个相机的投影矩阵为
P
2
=
K
2
[
R
∣
t
]
P_2=K_2[R|t]
P2=K2[R∣t]
则有,
X
2
=
R
X
1
+
t
X_2=RX_1+t
X2=RX1+t
平面的单位法向量为
N
=
(
n
1
,
n
2
,
n
3
)
T
N=(n_1,n_2,n_3)^T
N=(n1,n2,n3)T,方向指向相机,第一个相机到平面的距离为d,则有
1
d
N
T
X
1
=
−
1
\frac{1}{d}N^TX_1=-1
d1NTX1=−1
X
2
=
(
R
−
t
d
N
T
)
X
1
X_2=(R-\frac{t}{d}N^T)X_1
X2=(R−dtNT)X1
进一步地,设
x
1
x_1
x1,
x
2
x_2
x2为相应的图像点,则有
x
2
=
K
2
(
R
−
t
d
N
T
)
K
1
−
1
x
1
x_2=K_2(R-\frac{t}{d}N^T)K_1^{-1}x_1
x2=K2(R−dtNT)K1−1x1
故有,两帧图像特征点对的单应矩阵为
H
=
K
2
(
R
−
t
d
N
T
)
K
1
−
1
H=K_2(R-\frac{t}{d}N^T)K_1^{-1}
H=K2(R−dtNT)K1−1
笔者将 H = K 2 ( R − t d N T ) K 1 − 1 H=K_2(R-\frac{t}{d}N^T)K_1^{-1} H=K2(R−dtNT)K1−1称为非归一化的单应矩阵, H = ( R − t d N T ) H=(R-\frac{t}{d}N^T) H=(R−dtNT)为归一化的单应矩阵,以类比于基础(fundamental)矩阵和本征(essential)矩阵的关系。
如果相机做纯旋转运动,或者由于空间点与相机距离远大于相机运动距离(弱视差),将会导致旋转单应(rotational homography)矩阵,该情形摆脱了空间点须呈现平面分布的约束,可参考论文中方法进行识别此类单应避免SfM或V-SLAM初始化不良问题,同时该类单应矩阵常用于全景拼接应用。
单应矩阵的求解与分解位姿问题
一般地,采用四点法求解单应矩阵,类似于八点法求解基础矩阵,五点法求解本征矩阵,当对图像特征进行了归一化后,单应矩阵的自由度将会下降,从8DoF减为5DoF,即R、N(单位向量)的自由度,理论上采用2.5对点即可估计。
关于位姿分解问题的讨论,Olivier Faugeras等人提出的位姿分解法有8个候选解,论文基于单应矩阵的相对位姿改进算法通过归一化单应矩阵的性质证明,提出了4个候选解的方法。