1. 相机畸变及其数学模型
畸变类型
相机畸变主要分为两种:
- 径向畸变(枕形、桶形):光线在远离透镜中心的地方 比 靠近透镜中心的地方 更加弯曲。
- 切向畸变:透镜不完全平行于图像平面,即sensor在安装时与镜头之间的角度不准。
畸变数学模型
径向畸变
成像仪 光轴中心的畸变为 0 0 0,沿着镜头半径方向 越靠近边缘,畸变越严重。
畸变的数学模型可以用主点(principle point)周围的泰勒级数展开式的前几项来进行描述。
-
通常使用前两项和,即 k 1 k_1 k1和 k 2 k_2 k2
-
对于畸变很大的镜头,如鱼眼镜头,需要增加第三项 k 3 k_3 k3来进行描述。
成像仪上的某点,根据其在径向方向上的分布位置,调节公式为:
x ^ = x ( 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 ) \widehat{x} =x(1 + k_1r^2 + k_2r^4 + k_3r^6) x =x(1+k1r2+k2r4+k3r6)
y ^ = y ( 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 ) \widehat{y} =y(1 + k_1r^2 + k_2r^4 + k_3r^6) y =y(1+k1r2+k2r4+k3r6)
公式中:
( x ^ , y ^ ) (\widehat{x} , \widehat{y} ) (x ,y )——畸变后的归一化图像坐标
( x , y ) (x, y) (x,y)——无畸变的归一化的图像坐标
r r r——图像像素点到图像中心点的距离,即为: r 2 = x 2 + y 2 r^2 = x^2 + y^2 r2=x2+y2
径向畸变的偏移示意图
切向畸变
切向畸变是由于透镜本身与相机传感器平面(成像平面)或图像平面不平行而产生的,这种情况多是由于透镜被粘贴到镜头模组上的安装偏差导致
畸变可以由两个额外的参数 p 1 p_1 p1、 p 2 p_2 p2来描述:
x ^ = x + [ 2 p 1 x y + p 2 ( r 2 + 2 x 2 ) ] \widehat{x} = x + [2p_1xy + p_2(r^2 + 2x^2)] x =x+[2p1xy+p2(r2+2x2)]
y ^ = y + [ 2 p 2 x y + p 1 ( r 2 + 2 y 2 ) ] \widehat{y} = y + [2p_2xy + p_1(r^2 + 2y^2)] y =y+[2p2xy+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
个参数后,就可以矫正由镜头畸变引起的图像的变形失真。
因此,包含径向畸变和切向畸变的总体畸变模型:
x ^ = x ( 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 ) + [ 2 p 1 x y + p 2 ( r 2 + 2 x 2 ) ] \widehat{x} = x(1 + k_1r^2 + k_2r^4 + k_3r^6) + [2p_1xy + p_2(r^2 + 2x^2)] x =x(1+k1r2+k2r4+k3r6)+[2p1xy+p2(r2+2x2)]
y ^ = y ( 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 ) + [ 2 p 2 x y + p 1 ( r 2 + 2 y 2 ) ] \widehat{y} = y(1 + k_1r^2 + k_2r^4 + k_3r^6) + [2p_2xy + p_1(r^2 + 2y^2)] y =y(1+k1r2+k2r4+k3r6)+[2p2xy+p1(r2+2y2)]
其中,
( x ^ , y ^ ) (\widehat{x} , \widehat{y} ) (x ,y )——畸变后的归一化图像坐标
( x , y ) (x, y) (x,y)——无畸变的归一化的图像坐标
r r r——图像像素点到图像中心点的距离,即为: r 2 = x 2 + y 2 r^2 = x^2 + y^2 r2=x2+y2
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——畸变参数