图像运动解析中最出名的就是对极约束。它以公式简洁著称,本质矩阵如下:
E
=
t
∧
R
E = t^{\wedge}R
E=t∧R t是平移变量,R是旋转变量。可以理解为本质就是t和R。
基础矩阵就是加上相机内参矩阵K,如下:
F
=
K
−
T
E
K
−
1
F=K^{-T}EK^{-1}
F=K−TEK−1
本质矩阵的求解使用的是8点法,细节这里不再展开复述,使用的公式如下:
x
2
T
E
x
1
=
p
2
T
F
p
1
=
0
x_2^{T}Ex_1=p_2^{T}Fp_1 = 0
x2TEx1=p2TFp1=0
单应矩阵的引出 当在所有特征点都在同一个平面上,例如相机看到的棋盘格,无人机俯视看到的地面等。两个不同姿态下的相机,看到同一个平面的特征时,这两张图像之间的旋转平移关系(R和t)可以用单应矩阵表示。 单应矩阵可以使用4点法来求解,这里不再复述,使用的公式如下:
p
2
=
H
p
1
p_2 = Hp_1
p2=Hp1
三角测量的引出: 在SLAM中,我们主要用三角化来估计像素点的距离。 按照对极几何中的定义,设
x
1
x_1
x1,
x
2
x_2
x2为两个特征点的归一化坐标,那么他们满足:
s
1
x
1
=
s
2
R
x
2
+
t
s_1x_1 = s_2Rx_2+t
s1x1=s2Rx2+t 现在我们已经知道了R,t,想要求解的是两个特征点的深度
s
1
s_1
s1
s
2
s_2
s2。如果要算
s
2
s_2
s2,那么先对上式两侧左乘一个
x
1
∧
x_1^{\wedge}
x1∧,得:
s
1
x
1
∧
x
2
=
0
=
s
2
x
1
∧
R
x
2
+
x
1
∧
t
s_1x_1^{\wedge}x_2 = 0 = s_2x_1^{\wedge}Rx_2+x_1^{\wedge}t
s1x1∧x2=0=s2x1∧Rx2+x1∧t 可以根据上式直接求解
s
2
s_2
s2。
重投影误差的引出 BA中的残差方程就是重投影误差,考虑n个三维空间点P及其投影p,我们希望计算相机的位姿R,t,它的李代数表示为
ξ
\xi
ξ。
s
i
[
u
i
v
i
1
]
=
K
e
x
p
(
ξ
∧
)
[
X
i
Y
i
Z
i
1
]
s_i {\begin{bmatrix} u_i \\ v_i \\ 1 \end{bmatrix}} = Kexp({\xi}^{\wedge}){\begin{bmatrix} X_i \\ Y_i \\ Z_i \\ 1 \end{bmatrix}}
siuivi1=Kexp(ξ∧)XiYiZi1
注意这里的
ξ
\xi
ξ代表的是se(3)。 构建残差方程:
ξ
∗
=
a
r
g
m
i
n
1
2
∑
i
=
1
n
∥
u
i
−
1
s
i
K
e
x
p
(
ξ
∧
)
P
i
∥
2
{\xi}^{*} = arg min\frac{1}{2}\sum_{i=1}^n \begin{Vmatrix} u_i-\frac{1}{s_i}Kexp({\xi}^{\wedge})P_i \end{Vmatrix}^{2}
ξ∗=argmin21i=1∑nui−si1Kexp(ξ∧)Pi2
首先记变换到相机坐标系下的空间点坐标为
P
′
P^{'}
P′,并且将其前3维取出来:
P
′
=
(
e
x
p
(
ξ
∧
)
P
)
1
:
3
=
[
X
′
,
Y
′
,
Z
′
]
P^{'}=(exp({\xi}^{\wedge})P)_{1:3}={\begin{bmatrix}X^{'},Y^{'},Z^{'} \end{bmatrix}}
P′=(exp(ξ∧)P)1:3=[X′,Y′,Z′]
相机投影模型相对于
P
′
P^{'}
P′为
s
∗
u
=
K
P
′
s*u = KP^{'}
s∗u=KP′
展开可以得到
u
=
f
x
X
′
Z
′
+
c
x
u=f_x{\frac{X^{'}}{Z^{'}}}+c_x
u=fxZ′X′+cx
u
=
f
y
Y
′
Z
′
+
c
y
u=f_y{\frac{Y^{'}}{Z^{'}}}+c_y
u=fyZ′Y′+cy