图像成像原理:小孔成像
公式:
(
u
v
1
)
=
1
Z
(
f
x
0
c
x
0
f
y
c
y
0
0
1
)
(
X
Y
Z
)
=
1
Z
K
P
\begin{pmatrix} u \\ v \\ 1 \end{pmatrix} = \frac{1}{Z} {\begin{pmatrix} f_x&0&c_x \\ 0 & f_y& c_y \\ 0& 0& 1\end{pmatrix} }{\begin{pmatrix} X \\ Y \\ Z \end{pmatrix}} = \frac{1}{Z}KP
uv1
=Z1
fx000fy0cxcy1
XYZ
=Z1KP
这里的
(
X
Y
Z
)
{\begin{pmatrix} X \\ Y \\ Z \end{pmatrix}}
XYZ
位于相机坐标系,一般我的空间点
P
w
P_w
Pw在世界坐标系下,所以这两个坐标系之间有一个外参数,也个外参数(R,t)代表机器人在世界坐标系下的运动轨迹。
Z
P
u
v
=
Z
[
u
v
1
]
=
K
(
R
P
w
+
t
)
=
K
T
P
w
ZP_{uv} = Z{\begin{bmatrix} u \\ v \\ 1 \end{bmatrix}} = K(RP_w + t) = KTP_w
ZPuv=Z
uv1
=K(RPw+t)=KTPw
把
P
c
P_c
Pc在相机坐标系下的点进行归一化,使得Z=1,即得到相机归一化平面
这时:
P
c
=
[
X
/
Z
Y
/
Z
1
]
P_c = {\begin{bmatrix} X/Z \\ Y/Z \\ 1 \end{bmatrix}}
Pc=
X/ZY/Z1
畸变
畸变产生的原因:一是透镜自身的形状对光线传播的影响,二是在机械组装过程中,透镜和成像平面不可能完全平行,这也会使得光线穿过透镜投影到成像面时的位置发生变化。
主要包括径向畸变和切向畸变。
我们可以使用棋盘格进行标定,这一点张正友博士做了很多的工作。
考虑到视觉SLAM中一般都使用普通的摄像头,针孔模型及径向畸变和切向畸变模型已经足够。
我们小结一下单目相机的成像过程:
1.世界坐标系下的一个点
P
w
P_w
Pw.
2.
P
w
P_w
Pw转换到相机坐标系
P
c
P_c
Pc.
3.
P
c
P_c
Pc投影到归一化平面Z=1上,得到
P
c
′
P_c^{'}
Pc′
P
c
′
=
[
X
/
Z
Y
/
Z
1
]
P_c^{'}= {\begin{bmatrix} X/Z \\ Y/Z \\ 1 \end{bmatrix}}
Pc′=
X/ZY/Z1
4.
P
c
′
P_c^{'}
Pc′经过内参后,对应到它的像素坐标:
P
u
v
=
K
P
c
′
P_{uv}=KP_c^{'}
Puv=KPc′.