相机的成像过程实质上是坐标系的转换。首先空间中的点由 “世界坐标系” 转换到 “像机坐标系”,然后再将其投影到成像平面 ( 图像物理坐标系 ) ,最后再将成像平面上的数据转换到 图像像素坐标系。但是由于透镜制造精度以及组装工艺的偏差会引入畸变,导致原始图像的失真。
图像及畸变主要有两种:径向畸变、切向畸变
(双目标定后会得到内参K、外参RT,以及畸变参数k1,k2,k3,p1,p2)
1.径向畸变:正中心位置的畸变最小,随着半径的增大,畸变增大。径向畸变可以分为枕形畸变和桶形畸变:
成像仪光轴中心的畸变为0,沿着镜头半径方向向边缘移动,畸变越来越严重。畸变的数学模型可以用主点(principle point)周围的泰勒级数展开式的前几项进行描述,通常使用前两项,即k1和k2,对于畸变很大的镜头,如鱼眼镜头,可以增加使用第三项k3来进行描述,成像仪上某点根据其在径向方向上的分布位置,调节公式如下(泰勒级数展开式前3项):
x
r
=
x
(
1
+
k
1
r
2
+
k
2
r
4
+
k
3
r
6
)
x_r = x(1+k_1r^2+k_2r^4+k_3r^6)
xr=x(1+k1r2+k2r4+k3r6)
y
r
=
y
(
1
+
k
1
r
2
+
k
2
r
4
+
k
3
r
6
)
y_r = y(1+k_1r^2+k_2r^4+k_3r^6)
yr=y(1+k1r2+k2r4+k3r6)
其中, x r y r x_r y_r xryr为畸变后的像素坐标,也就是相机取图后得到的图像坐标, x y x y xy为理想坐标,即为去去畸变后的坐标,另外, r 2 = x 2 + y 2 r^2=x^2+y^2 r2=x2+y2
2.切向畸变:在透镜与成像平面不平行时就会产生,类似于透视变换。
切向畸变是由于透镜本身与相机传感器平面(成像平面)或图像平面不平行而产生的,这种情况多是由于透镜被粘贴到镜头模组上的安装偏差导致。畸变模型可以用两个额外的参数p1和p2来描述:
x
t
=
x
+
[
2
p
1
y
+
p
2
(
r
2
+
2
x
2
)
]
x_t=x+[2p_1y+p_2(r^2+2x^2)]
xt=x+[2p1y+p2(r2+2x2)]
y
t
=
y
+
[
2
p
2
x
+
p
1
(
r
2
+
2
y
2
)
]
y_t=y+[2p_2x+p_1(r^2+2y^2)]
yt=y+[2p2x+p1(r2+2y2)]
计算得到
x
r
y
r
x
t
y
t
x_r y_r x_t y_t
xryrxtyt后,左右图像对应点坐标畸变校正公式如下:
x
=
(
x
0
−
(
2
p
1
y
+
p
2
(
r
2
+
2
x
2
)
)
)
∗
(
1
+
k
1
r
2
+
k
2
r
4
+
k
3
r
6
)
x=(x_0-(2p_1y+p_2(r^2+2x^2)))*(1+k_1r^2+k_2r^4+k_3r^6)
x=(x0−(2p1y+p2(r2+2x2)))∗(1+k1r2+k2r4+k3r6)
y
=
(
y
0
−
(
2
p
2
x
+
p
1
(
r
2
+
2
y
2
)
)
∗
(
1
+
k
1
r
2
+
k
2
r
4
+
k
3
r
6
)
y=(y_0-(2p_2x+p_1(r^2+2y^2))*(1+k_1r^2+k_2r^4+k_3r^6)
y=(y0−(2p2x+p1(r2+2y2))∗(1+k1r2+k2r4+k3r6)