1. 相机畸变及其数学模型
畸变类型
相机畸变主要分为两种:
- 径向畸变(枕形、桶形):光线在远离透镜中心的地方 比 靠近透镜中心的地方 更加弯曲。
- 切向畸变:透镜不完全平行于图像平面,即sensor在安装时与镜头之间的角度不准。
畸变数学模型
径向畸变
成像仪 光轴中心的畸变为0,沿着镜头半径方向 越靠近边缘,畸变越严重。
畸变的数学模型可以用主点(principle point)周围的泰勒级数展开式的前几项来进行描述。
成像仪上的某点,根据其在径向方向上的分布位置,调节公式为:
x
0
=
x
(
1
+
k
1
r
2
+
k
2
r
4
+
k
3
r
6
)
x_0=x(1 + k_1r^2 + k_2r^4 + k_3r^6)
x0?=x(1+k1?r2+k2?r4+k3?r6)
y
0
=
y
(
1
+
k
1
r
2
+
k
2
r
4
+
k
3
r
6
)
y_0=y(1 + k_1r^2 + k_2r^4 + k_3r^6)
y0?=y(1+k1?r2+k2?r4+k3?r6)
公式中:
(
x
0
,
y
0
)
(x_0, y_0)
(x0?,y0?)——畸变点在成像仪上的原始位置
(
x
,
y
)
(x, y)
(x,y)——矫正后的位置
径向畸变的偏移示意图
切向畸变
切向畸变是由于透镜本身与相机传感器平面(成像平面)或图像平面不平行而产生的,这种情况多是由于透镜被粘贴到镜头模组上的安装偏差导致
畸变可以由两个额外的参数
p
1
p_1
p1?、
p
2
p_2
p2?来描述:
x
0
=
x
+
[
2
p
1
y
+
p
2
(
r
2
+
2
x
2
)
]
x_0 = x + [2p_1y + p_2(r^2 + 2x^2)]
x0?=x+[2p1?y+p2?(r2+2x2)]
y
0
=
y
+
[
2
p
2
x
+
p
1
(
r
2
+
2
y
2
)
]
y_0 = y + [2p_2x + p_1(r^2 + 2y^2)]
y0?=y+[2p2?x+p1?(r2+2y2)]
大体上,切向畸变的畸变位移相对于左下——右上角的连线 是对称的,说明该镜头在垂直于该方向上有一个旋转角度。
切向畸变的偏移示意图
畸变数学模型总结
径向畸变和切向畸变中,一共有5 个畸变参数,OpenCV中他们被排列为一个
5
×
1
5\times1
5×1的矩阵,依次包含
k
1
k_1
k1?、
k
2
k_2
k2?、
p
1
p_1
p1?、
p
2
p_2
p2?、
k
3
k_3
k3?,经常被定义为Mat矩阵的形式,如Mat distCoeffs = Mat(1, 5, CV_32FC1, Scalar::all(0));
上述5 个参数就是相机标定中需要的相机的5个畸变参数,求得这5 个参数后,就可以矫正由镜头畸变引起的图像的变形失真。
|