1 摄像头四个坐标系
如图所示,小孔成像过程中,涉及到四个坐标系:世界坐标系、摄像头坐标系、像平面坐标系、像素坐标系。
a) 世界坐标系 ( O w − X w Y w Z w ) (O_w-X_wY_wZ_w) (Ow−XwYwZw):世界坐标系一般为参考坐标系,其坐标原点和坐标轴方向是根据实际情况来选择的。
b) 摄像头坐标系 ( O c − X c Y c Z c ) (O_c-X_cY_cZ_c) (Oc−XcYcZc):以摄像头光心 为原点,X轴和Y轴分别与成像平面的x轴和y轴平行,Z轴与摄像机的光轴重合。
c) 像平面坐标系 ( O − x y ) (O-xy) (O−xy):原点位于摄像头光轴与图像平面的交点。
d) 像素坐标系 ( O − u v ) (O-uv) (O−uv):原点位于像平面的左上角点, 以像素为单位的图像坐标系坐标。
在摄像头成像模型中,空间中一物点 ( X w , Y w , Z w ) (X_w,Y_w,Z_w) (Xw,Yw,Zw)经过摄像头成像得到图片中对应像点 ,这一过程需要经历三次变换:
1)世界坐标系
(
O
w
−
X
w
Y
w
Z
w
)
(O_w-X_wY_wZ_w)
(Ow−XwYwZw)——摄像机坐标系
(
O
c
−
X
c
Y
c
Z
c
)
(O_c-X_cY_cZ_c)
(Oc−XcYcZc)
[
X
c
Y
c
Z
c
]
=
[
R
T
0
1
]
[
X
w
Y
w
Z
w
1
]
\left[\begin{matrix} X_c \\ Y_c \\ Z_c \end{matrix}\right] = \left[\begin{matrix} R & T \\ 0 & 1 \end{matrix}\right] \left[\begin{matrix} X_w\\ Y_w\\ Z_w\\ 1 \end{matrix}\right]
⎣⎡XcYcZc⎦⎤=[R0T1]⎣⎢⎢⎡XwYwZw1⎦⎥⎥⎤
2)摄像头坐标系
(
O
c
−
X
c
Y
c
Z
c
)
(O_c-X_cY_cZ_c)
(Oc−XcYcZc)——像平面坐标系
(
O
−
x
y
)
(O-xy)
(O−xy)
空间任何一点在图像上投影点 ,为光心与该点的连线与图像平面的交点,由比例关系有如下关系式
{
x
=
f
x
c
Z
c
y
=
f
Y
c
Z
c
\begin{cases} x = f\frac{x_c}{Z_c} \\ y = f\frac{Y_c}{Z_c} \end{cases}
{x=fZcxcy=fZcYc
转化为齐次坐标与矩阵形式,可得
Z
c
[
x
y
1
]
=
[
f
0
0
0
0
f
0
0
0
0
1
0
]
[
X
c
Y
c
Z
c
1
]
Z_c \left[\begin{matrix} x\\y\\1 \end{matrix}\right] = \left[\begin{matrix} f & 0 & 0 & 0\\ 0 & f & 0 & 0\\ 0 & 0 & 1 & 0 \end{matrix}\right] \left[\begin{matrix} X_c\\Y_c\\Z_c\\1 \end{matrix}\right]
Zc⎣⎡xy1⎦⎤=⎣⎡f000f0001000⎦⎤⎣⎢⎢⎡XcYcZc1⎦⎥⎥⎤
3)像平面坐标系
(
O
−
x
y
)
(O-xy)
(O−xy)——像素坐标系
(
O
−
u
v
)
(O-uv)
(O−uv)
如图 所示,若主点 在像素坐标系中的坐标为 ,每一个像素在x轴与y轴方向上的物理尺寸为 (一个像素CCD单元的 x,y方向的实际长度),则图像中任意个象素在两个坐标系下的坐标关系可表示为下面的公式
{
u
=
x
d
x
+
u
0
v
=
y
d
y
+
v
0
\begin{cases} u = \frac{x}{dx}+u_0\\ v = \frac{y}{dy} + v_0 \end{cases}
{u=dxx+u0v=dyy+v0
转化为齐次坐标与矩阵形式,可得
[
u
v
1
]
=
[
1
d
x
0
u
0
0
1
d
y
v
0
0
0
1
]
[
x
y
1
]
\left[\begin{matrix} u \\ v \\ 1 \end{matrix}\right] = \left[\begin{matrix} \frac{1}{dx} & 0 & u_0\\ 0 & \frac{1}{dy} & v_0\\ 0 & 0 & 1 \end{matrix}\right] \left[\begin{matrix} x \\ y \\ 1 \end{matrix}\right]
⎣⎡uv1⎦⎤=⎣⎡dx1000dy10u0v01⎦⎤⎣⎡xy1⎦⎤
2 摄像头成像模型
立体视觉的基本任务是通过二维的图像得到目标点的空间坐标,因此,建立图像像素坐标与目标点的世界坐标的关系至关重要。不考虑镜头的畸变,理想的成像模型为针孔成像模型是一种线性模型。根据小孔成像的原理,空间中一点 与它的投影点 都经过小孔 ,根据透视投影的比例关系,可以得到物点在世界坐标系内的坐标与其像点在像素坐标系内的坐标关系如下
式中,
f
x
=
f
d
x
f_x=\frac{f}{dx}
fx=dxf ,
f
y
=
f
d
y
f_y=\frac{f}{dy}
fy=dyf分别表示图像坐标系在u轴和v轴的尺度因子,
γ
γ
γ为图像坐标系两轴在非正交下的倾斜因子,
H
H
H为投影矩阵。
M
1
M_1
M1为摄像头内部参数矩阵;
M
2
M_2
M2为摄像头外参数矩阵,确定内外参数的过程称为摄像头标定。
3 摄像头畸变模型
由于摄像头制造的不足以及成像过程中的噪声影响,摄像头成像往往不满足针孔模型,这种成像模型称为非线性模型。非线性模型中畸变主要有三种,包括径向畸变、切向畸变和薄棱镜畸变。假设理想的成像点坐标 ,畸变后的实际成像点坐标 ,则非线性畸变模型如下
{
x
d
=
x
u
+
δ
x
y
d
=
y
u
+
δ
y
\begin{cases} x_d = x_u + δ_x \\ y_d = y_u + δ_y \\ \end{cases}
{xd=xu+δxyd=yu+δy
a) 径向畸变
图像的径向畸变是指像点相对理想位置发生向内或者向外的偏移,即像点在径向上出现误差。
{
δ
x
=
x
u
(
k
1
r
u
2
+
k
2
r
u
4
+
k
3
r
u
6
+
.
.
.
)
δ
y
=
y
u
(
k
1
r
u
2
+
k
2
r
u
4
+
k
3
r
u
6
+
.
.
.
)
\begin{cases} δ_x = x_u(k_1r_u^2 + k_2r_u^4 + k_3r_u^6 + ...)\\ δ_y = y_u(k_1r_u^2 + k_2r_u^4 + k_3r_u^6 + ...) \end{cases}
{δx=xu(k1ru2+k2ru4+k3ru6+...)δy=yu(k1ru2+k2ru4+k3ru6+...)
式中,
r
u
2
=
x
u
2
+
y
u
2
r_u^2 = x_u^2+y_u^2
ru2=xu2+yu2,
k
1
,
k
2
,
k
3
k_1,k_2,k_3
k1,k2,k3为径向畸变系数。
b) 切向畸变
图像的切向畸变是指由于光学系统的光学镜头装配产生误差,光轴不可能完全共线,即像点在切向上出现了偏差。
{
δ
x
=
p
1
(
3
x
u
2
+
y
u
2
)
+
2
p
2
x
u
y
u
δ
y
=
p
2
(
3
y
u
2
+
x
u
2
)
+
2
p
1
x
u
y
u
\begin{cases} δ_x = p_1(3x_u^2 + y_u^2) + 2p_2x_uy_u\\ δ_y = p_2(3y_u^2 + x_u^2) + 2p_1x_uy_u \end{cases}
{δx=p1(3xu2+yu2)+2p2xuyuδy=p2(3yu2+xu2)+2p1xuyu
式中,
p
1
,
p
2
p_1,p_2
p1,p2为切向畸变系数。
c) 薄棱镜畸变
图像的薄棱镜畸变是指由光学镜头制造误差和成像敏感阵列制造误差引起的图像变形。
{
δ
x
=
s
1
(
x
u
2
+
y
u
2
)
δ
y
=
s
1
(
x
u
2
+
y
u
2
)
\begin{cases} δ_x = s_1(x_u^2+y_u^2)\\ δ_y = s_1(x_u^2+y_u^2)\\ \end{cases}
{δx=s1(xu2+yu2)δy=s1(xu2+yu2)
式中,
s
1
,
s
2
s_1,s_2
s1,s2为薄棱镜畸变系数。
据上,总结出完整的畸变模型
其中径向畸变(主要是前两阶的)和切向畸变影响较大,占畸变的95%,而薄棱镜畸变会造成额外的径向畸变和切向畸变,影响较小。一般情况下,只需考虑径向畸变和切向畸变,薄棱镜畸往往忽略不计。因此,非线性模型需要标定的参数包括内参数:
f
x
,
f
y
,
u
0
,
v
0
,
k
1
,
k
2
,
p
1
,
p
2
f_x,f_y,u_0,v_0,k_1,k_2,p_1,p_2
fx,fy,u0,v0,k1,k2,p1,p2,外参数:旋转矩阵和平移矢量 。
{
δ
x
=
x
u
(
k
1
r
u
2
+
k
2
r
u
4
)
+
p
1
(
3
x
u
2
+
y
u
2
)
+
2
p
2
x
u
y
u
δ
y
=
y
u
(
k
1
r
u
2
+
k
2
r
u
4
)
+
p
2
(
3
y
u
2
+
x
u
2
)
+
2
p
1
x
u
y
u
\begin{cases} δ_x = x_u(k_1r_u^2 + k_2r_u^4) + p_1(3x_u^2+y_u^2) + 2p_2x_uy_u\\ δ_y = y_u(k_1r_u^2 + k_2r_u^4) + p_2(3y_u^2 + x_u^2) +2p_1x_uy_u \end{cases}
{δx=xu(k1ru2+k2ru4)+p1(3xu2+yu2)+2p2xuyuδy=yu(k1ru2+k2ru4)+p2(3yu2+xu2)+2p1xuyu