目录
一、三角化
1. 理论推导
由于噪声影响,通常来说
D
D
D是一个满秩矩阵,我们应该求最小二乘解
y
y
y
2.最小二乘解 y y y几何意义
由于噪声的影响,
O
1
P
O_{1}P
O1P和
O
2
P
O_{2}P
O2P不能相交于一点,解出的最小二乘解就是到两条射线距离和最短的点
二、求最小二乘解 y y y
三角化问题最终转化为最小二乘问题
m i n ∥ D y ∥ 2 2 s . t . ∥ y ∥ = 1 \begin{aligned} min \|D y\|_{2}^{2} \\ s.t. \|y\|=1 \end{aligned} min∥Dy∥22s.t.∥y∥=1
其中
∥
D
y
∥
2
2
=
y
T
D
⊤
D
y
\begin{aligned} \|D y\|_{2}^{2} =y^{T} D^{\top} D y \end{aligned}
∥Dy∥22=yTD⊤Dy
对D进行SVD分解
D
2
n
∗
4
=
U
2
n
∗
2
n
Σ
2
n
∗
4
V
4
∗
4
T
\begin{aligned} D_{2n*4} = \mathrm{U}_{2n*2n} \Sigma_{2n*4} \mathrm{V}_{4*4}^{\mathrm{T}} \end{aligned}
D2n∗4=U2n∗2nΣ2n∗4V4∗4T
则有
(
D
T
D
)
4
∗
4
=
V
Σ
⊤
Σ
V
⊤
=
∑
i
=
1
4
σ
i
2
v
i
v
i
T
\begin{aligned} \left(D^{T} D\right)_{4 * 4}=V \Sigma^{\top} \Sigma V^{\top}=\sum_{i=1}^{4} \sigma_{i}^{2} v_{i} v_{i}^{T} \end{aligned}
(DTD)4∗4=VΣ⊤ΣV⊤=i=1∑4σi2viviT
D满秩且 σ 1 2 > σ 2 2 > σ 3 2 > σ 4 2 \sigma_{1}^{2}>\sigma_{2}^{2}>\sigma_{3}^{2}>\sigma_{4}^{2} σ12>σ22>σ32>σ42
因为 v 1 , v 2 , v 3 , v 4 v_{1} , v_{2} ,v_{3}, v_{4} v1,v2,v3,v4为一组标准正交基,且 y y y维数为四
设 y = ∑ i = 1 4 k i v i y=\sum_{i=1}^{4} k_{i} v_{i} y=∑i=14kivi,因为 ∥ y ∥ 2 2 = 1 \|y\|_{2}^{2}=1 ∥y∥22=1,故有 ∑ i = 1 4 k i 2 = 1 \sum_{i=1}^{4} k_{i}^{2}=1 ∑i=14ki2=1
则
y
T
D
T
D
y
=
(
∑
i
=
1
4
k
i
v
i
)
⊤
(
∑
i
=
1
4
σ
i
2
v
i
v
i
⊤
)
(
∑
i
=
1
4
k
i
v
i
)
=
∑
i
=
1
4
k
i
2
σ
i
2
⩾
σ
4
2
\begin{aligned} y^{T} D^{T} D y &=\left(\sum_{i=1}^{4} k_{i} v_{i}\right)^{\top}\left(\sum_{i=1}^{4} \sigma_{i}^{2} v_{i} v_{i}^{\top}\right)\left(\sum_{i=1}^{4} k_{i} v_{i}\right) \\ &=\sum_{i=1}^{4} k_{i}^{2} \sigma_{i}^{2} \geqslant \sigma_{4}^{2} \end{aligned}
yTDTDy=(i=1∑4kivi)⊤(i=1∑4σi2vivi⊤)(i=1∑4kivi)=i=1∑4ki2σi2⩾σ42
当且仅当
y
=
v
4
y=v_{4}
y=v4时等号成立,原问题取最小值
故路标点
y
y
y的齐次坐标归一化后的坐标即为SVD分解后最小奇异值对应的向量
v
4
v_{4}
v4。
最终求得路标点坐标
y
=
k
∗
v
4
y=k*v_{4}
y=k∗v4,其中
k
∗
(
v
4
)
4
=
1
k*(v_{4})_{4}=1
k∗(v4)4=1(将归一化形式恢复成齐次坐标形式)
三、三角化仿真
1. 代码实现
注意要对
D
T
D
D^{T}D
DTD进行SVD分解,不是对
D
D
D进行SVD分解。
投影矩阵是
P
=
[
R
c
w
,
t
c
w
]
\mathbf{P}=\left[\mathbf{R}_{cw}, \mathbf{t}_{cw}\right]
P=[Rcw,tcw]
表示从世界坐标系到camera系投影,别搞错了。
2. 仿真结果
四、奇异值比例与观测噪声之间的关系
\quad 若不存在噪声,则矩阵 D T D D^{T}D DTD秩为3,即 σ 4 = 0 \sigma_4 = 0 σ4=0,但实际场景通常是存在噪声的,我们要判断 σ 4 < < σ 3 \sigma_4<<\sigma_3 σ4<<σ3是否成立。此部分我们将讨论观测噪声与 σ 4 σ 3 \frac{\sigma_4}{\sigma_3} σ3σ4之间的关系。
1. 观测噪声建模
在三角化时我们都是用归一化平面坐标,首先要确定像素平面误差与归一化平面误差之间的关系。
根据观测方程有
u
=
f
x
X
Z
+
c
x
v
=
f
y
Y
Z
+
c
y
\begin{aligned} u = f_{x} \frac{X}{Z} + c_x &\\ v = f_{y} \frac{Y}{Z} + c_y & \end{aligned}
u=fxZX+cxv=fyZY+cy
以横坐标为例,若像素平面观测误差为
δ
u
\delta u
δu个像素,设归一化平面差
σ
\sigma
σ个单位
δ
u
=
f
x
(
X
Z
+
σ
)
−
f
x
(
X
Z
)
=
f
x
σ
\begin{aligned} \delta u= f_{x} (\frac{X}{Z} + \sigma) - f_{x} (\frac{X}{Z} ) = f_{x}\sigma&\\ \end{aligned}
δu=fx(ZX+σ)−fx(ZX)=fxσ
解得
σ
=
δ
u
f
x
\begin{aligned} \sigma = \frac{\delta u}{f_{x}}&\\ \end{aligned}
σ=fxδu
其中
f
x
=
f
d
x
\begin{aligned} f_{x}= \frac{f}{dx} \end{aligned}
fx=dxf
f f f为相机焦距, f x f_{x} fx为相机在 u u u轴上的归一化焦距, d x dx dx为相机一个像素单元的长度。
现以NiKon D700相机为例进行求解其内参:
焦距
f
=
35
m
m
f = 35mm
f=35mm 最高分辨率:4256×2832 传感器尺寸:36.0×23.9 mm
根据以上定义可以有:
u 0 = 4256 / 2 = 2128 v 0 = 2832 / 2 = 1416 d x = 36.0 4256 ( m m / p i x e l ) d y = 23.9 2832 ( m m / p i x e l ) f x = f / d x = 4137.8 f y = f / d y = 4147.3 \begin{aligned} u_0 = 4256/2 = 2128 \\ v_0 = 2832/2 = 1416 \\ dx = \frac{36.0}{4256} (mm/pixel) \\ dy = \frac{23.9}{2832} (mm/pixel) \\ f_x = f/dx = 4137.8 \\ f_y = f/dy = 4147.3 \\ \end{aligned} u0=4256/2=2128v0=2832/2=1416dx=425636.0(mm/pixel)dy=283223.9(mm/pixel)fx=f/dx=4137.8fy=f/dy=4147.3
由此看来 f x 、 f y f_{x}、f_{y} fx、fy通常是 1 e 3 1e^{3} 1e3量级。
所以我们设归一化平面观测误差建模 e \textbf e e服从 N ( 0 , δ u 1000 ) \mathcal N(0, \frac{\delta u}{1000}) N(0,1000δu)分布。
2. 实验
仿真代码
假设第三帧和第四帧可观测到路标点P
实验结果
标准差 | 奇异值比例 | 标准差 | 奇异值比例 |
---|---|---|---|
1/1000 | 0.0000495412 | 6/1000 | 0.0271588 |
2/1000 | 0.000788281 | 7/1000 | 0.036579 |
3/1000 | 0.00312873 | 8/1000 | 0.0472432 |
4/1000 | 0.0069819 | 9/1000 | 0.0590794 |
5/1000 | 0.0190476 | 10/1000 | 0.0720082 |
五、奇异值比例与观测帧数之间的关系
为了尽可能消除随机性,得到奇异值比例与观察测帧数更普遍的结论,固定标准差为1/1000,对每一个观测帧数都测试100次,奇异值比值取平均数。
代码
实验结果
可以看出比值总体呈上升趋势,因为观测帧数多,误差累积大,如一、2所示,空间中某点到各条射线的距离和将增大。