在视觉里程计中,通常需要通过三角化方法来计算路标点在世界坐标系下坐标。
三角化方法的数学表述如下:
- 考虑某路标点 y y y 在若干个关键帧 k = 1 , … , n k = 1, \dots, n k=1,…,n 中被观察到。
- y ∈ R 4 y \in \R^4 y∈R4,是齐次坐标。每次的观测值为 x k = [ u k , v k , 1 ] ⊤ x_k = [u_k, v_k, 1]^⊤ xk=[uk,vk,1]⊤,取相机坐标系下的归一化平面坐标,这样的好处是可以不考虑相机的内参。
- 记投影矩阵 P k = [ R k ∣ t k ] ∈ R 3 × 4 P_k = [R_k | t_k] \in \R^{3×4} Pk=[Rk∣tk]∈R3×4,为世界坐标系到相机坐标系。
- 投影关系: ∀ k , λ k x k = P k y (1) \tag 1\forall k, \lambda_kx_k = P_ky ∀k,λkxk=Pky(1)其中, λ k \lambda_k λk 为路标点在第 k k k 帧的深度值。
- 根据式(1)的第三行,有: λ k = P k , 3 y (2) \tag 2 \lambda_k = P_{k,3} y λk=Pk,3y(2)其中 P k , 3 P_{k,3} Pk,3 为 P k P_k Pk 的第3 行。
- 将式(2)代入式(1)的前两行,得到 u k P k , 3 y = P k , 1 y v k P k , 3 y = P k , 2 y (3) \tag 3 u_k P_{k,3} y= P_{k,1} y \\ v_k P_{k,3} y = P_{k,2} y ukPk,3y=Pk,1yvkPk,3y=Pk,2y(3)
- 每一次观测将提供两个这样的方程,视 y y y 为未知量,并将 y y y 移到等式一侧,得到: [ u 1 P 1 , 3 − P 1 , 1 v 1 P 1 , 3 − P 1 , 2 ⋮ u n P n , 3 − P n , 1 v n P n , 3 − P n , 2 ] y = 0 → D y = 0 (4) \tag 4 \begin{bmatrix} u_1 P_{1,3} - P_{1,1} \\ v_1 P_{1,3} - P_{1,2} \\ \vdots \\ u_n P_{n,3} - P_{n,1} \\ v_n P_{n,3} - P_{n,2} \end{bmatrix} y=0 \to Dy=0 ⎣⎢⎢⎢⎢⎢⎡u1P1,3−P1,1v1P1,3−P1,2⋮unPn,3−Pn,1vnPn,3−Pn,2⎦⎥⎥⎥⎥⎥⎤y=0→Dy=0(4)于是, y y y 是系数矩阵D的零空间中的一个非零元素。
- 由于 D ∈ R 2 n × 4 D \in \R^{2n×4} D∈R2n×4,在观测次数大于等于两次时,很可能 D D D 满秩,没有非零元素 y y y 满足式(4)。
- 因此我们将最小二乘问题式(5)的解作为
y
y
y 的解。
y
y
y 是齐次坐标,归一化以后得到路标点在世界坐标系下的坐标。
min y f ( y ) = min y ∥ D y ∥ 2 2 , s . t . ∥ y ∥ 2 2 = 1 (5) \tag 5 \min_y f(y) =\min_y {\Vert Dy \Vert}_2^2, s.t.{\Vert y \Vert }_2^2= 1 yminf(y)=ymin∥Dy∥22,s.t.∥y∥22=1(5)
下面来证明式(5)的解就是系数矩阵D的最小的奇异值所对应的特征向量:
式(5)即
min
y
f
(
y
)
=
min
y
∥
D
y
∥
2
2
=
min
y
y
T
D
T
D
y
∥
y
∥
2
2
=
y
T
y
=
1
(6)
\tag 6 \min_y f(y) =\min_y {\Vert Dy \Vert}_2^2 = \min_y y^T D^T D y\\ {\Vert y \Vert}_2^2 = y^T y = 1
yminf(y)=ymin∥Dy∥22=yminyTDTDy∥y∥22=yTy=1(6)
对
D
T
D
D^TD
DTD 进行SVD分解,得到:
D
T
D
=
U
Σ
U
T
=
∑
i
=
1
4
σ
i
2
u
i
u
i
T
(7)
\tag 7 D^TD=U \Sigma U^T = \sum_{i=1}^4 \sigma_i^2 u_i u_i^T
DTD=UΣUT=i=1∑4σi2uiuiT(7)其中
σ
i
\sigma_i
σi是矩阵D的奇异值,由大到小排列,
u
i
,
u
j
u_i, u_j
ui,uj 是正交的单位特征向量,构成
R
4
\R^4
R4的一组单位正交基。
σ
1
≥
σ
2
≥
σ
3
≥
σ
4
>
0
u
i
T
u
j
=
{
1
if
i
=
j
0
if
i
≠
j
(8)
\tag 8 \sigma_1 \ge \sigma_2 \ge \sigma_3 \ge \sigma_4 >0 \\ u_i^T u_j = \begin{cases} 1 &\text{if } \quad i=j \\ 0 &\text{if } \quad i \not = j \end{cases}
σ1≥σ2≥σ3≥σ4>0uiTuj={10if i=jif i=j(8)
因此,
y
y
y 可以表达成
u
i
u_i
ui 的一个线性组合。假设
y
=
∑
i
=
1
4
x
i
u
i
y=\sum_{i=1}^4 x_i u_i
y=i=1∑4xiui其中
x
i
x_i
xi为未知数,则由式(6)、(7)和(8)可得
min
y
f
(
y
)
=
min
x
i
∑
i
=
1
4
x
i
2
σ
i
2
∑
i
=
1
4
x
i
2
=
1
(9)
\tag 9 \min_y f(y)=\min_{x_i} \sum_{i=1}^4 x_i^2 \sigma_i^2 \quad \\ \sum_{i=1}^4 x_i^2 =1
yminf(y)=ximini=1∑4xi2σi2i=1∑4xi2=1(9)又由于
σ
i
\sigma_i
σi由大到小排列且大于0,易知
∑
i
=
1
4
x
i
2
σ
i
2
≥
(
∑
i
=
1
4
x
i
2
)
σ
4
2
=
σ
4
2
(10)
\tag {10} \sum_{i=1}^4 x_i^2 \sigma_i^2 \ge (\sum_{i=1}^4x_i^2) \sigma_4^2 = \sigma_4^2
i=1∑4xi2σi2≥(i=1∑4xi2)σ42=σ42(10) 式(10)中的等号,在
x
1
=
x
2
=
x
3
=
0
,
x
4
=
1
x_1=x_2=x_3=0,x_4=1
x1=x2=x3=0,x4=1时成立。
因此,
min
y
f
(
y
)
=
min
x
i
∑
i
=
1
4
x
i
2
σ
i
2
=
σ
4
2
(11)
\tag {11} \min_y f(y) = \min_{x_i} \sum_{i=1}^4 x_i^2 \sigma_i^2 = \sigma_4^2
yminf(y)=ximini=1∑4xi2σi2=σ42(11)
此时
y
=
∑
i
=
1
4
x
i
u
i
=
u
4
(12)
\tag {12} y = \sum_{i=1}^4 x_i u_i = u_4
y=i=1∑4xiui=u4(12)即,
y
y
y 是系数矩阵D的最小奇异值所对应的特征向量,证明完毕。
此时的 y ∈ R 4 y \in \R^4 y∈R4是一个4维单位向量,乘以一个比例因子使得第4维等于1之后,取前3维的值,即可得到路标点在世界坐标系下的坐标。