镜头畸变是光学透镜固有的透视失真的总称,这种失真对图片的成像质量是非常不利的。由于透镜的固有特性,镜头畸变是无法消除的,只能改善。在实际应用中,可以通过优化镜片组设计、选用高质量光学玻璃(萤石玻璃)来改善,从而使透视变形降到较低的程度。但是,这些方法仍然不能完全消除镜头畸变。目前,即使最高质量的镜头在极其严格的条件下测试,在镜头的边缘也会产生不同程度的失真。
失真发生的原因是透视。众所周知,眼睛感觉远近的一种方法是利用物体的相对大小,即近大远小。在图像采集中,也是用相同方法表达透视关系的,即平行的铁轨会随着向远处瞭望而显得越来越靠近,直至汇聚成一点。这一现象的本质是铁轨之间的距离在表面上看变小了。透视的一种表现是物体越近,透视效果越强烈。比如,图3-7所示的森林,距离较近的树木显得强烈突出,而距离较远的树木显得比较柔和平缓。透视的两方面特征同样适用于所有镜头,即被拍摄物体越远,物体显得越小,镜头离被拍摄物体越远,被拍摄物体在外观上的大小变化越小。实际上,被拍摄物体越来越远,透视畸变会变得越来越小,但开始变得扁平,即失去了层次和细节。由于被拍摄物体距离照相机非常遥远,从而产生了扁平的透视效果。
在几何光学和阴极射线管(Cathode Ray Tube,CRT)显示中,畸变是对直线投影的一种偏移。简单来说,直线投影是场景内的一条直线投影到图像上也保持为一条直线,畸变是一条直线投影到图像上不能保持为一条直线了,这是一种光学畸变。
通常,畸变可以分为两大类:径向畸变和切向畸变。
由透镜形状引起的畸变称为径向畸变。在实际拍摄中,照相机的透镜往往使真实环境中的一条直线在图像中变成了曲线。越靠近图像的边缘,这种现象越明显。实际加工制作的透镜往往是中心对称的,使得不规则的畸变通常是径向对称的。径向畸变主要分为两大类:桶形畸变和枕形畸变,如图3-10所示。
图3-10 径向畸变示意图
对于桶形畸变,图像放大率随着光轴距离的增加而减小,而枕形畸变却恰好相反。在这两种畸变中,穿过图像中心并与光轴有交点的直线能保持形状不变。
除了透镜的形状会引起径向畸变,在照相机的组装过程中,透镜和图像平面(垂直平面)不能严格平行也会引起切向畸变,如图3-11所示。
图3-11 切向畸变示意图
平面上任意一点 p 可以用笛卡儿坐标表示为( x , y ),也可以把它写成极坐标的形式( r , θ ),其中, r 表示点 p 离坐标系原点的距离, θ 表示其与水平轴的夹角。径向畸变可以看成坐标点沿着长度方向发生了变化δ r ,即坐标点距离原点的长度发生了变化。切向畸变可以看成坐标点沿着切线方向发生了变化,即水平夹角发生了变化δ θ 。
对于径向畸变,无论桶形畸变还是枕形畸变,由于它们都是随着中心距离增加而增加的,因此可以用一个多项式函数来描述畸变前后的坐标变化,即这类畸变可以用与中心距离有关的二次多项式函数和高次多项式函数进行纠正,即
(3-17)
式中,( x , y ) 是未畸变纠正的点的坐标,( x corrected , y corrected ) T 是畸变纠正后的点的坐标。注意,它们都是归一化平面上的点,而不是像素平面上的点。
对于畸变较小的图像中心区域,畸变纠正主要是 k 1 起作用,而对于畸变较大的边缘区域,畸变纠正主要是 k 2 起作用。普通摄像头用这两个系数就能很好地纠正径向畸变。对畸变很大的摄像头,如鱼眼镜头,可以加入 k 3 畸变项对畸变进行纠正。
对于切向畸变,可以使用两个参数 p 1 、 p 2 来进行纠正:
(3-18)
联合式(3-17)和式(3-18),对于照相机坐标系中的一点 P ( X , Y , Z ),能够通过5个畸变系数找到这个点在像素平面上的正确位置,具体步骤如下。
(1)将三维空间点投影到归一化图像平面,设它的归一化坐标为( x , y )。
(2)对归一化图像平面上的点进行径向畸变和切向畸变纠正。给定归一化坐标,可以求出点 P 在原始图像坐标系上的坐标,即
(3-19)
(3)将畸变纠正后的点通过内参数矩阵投影到像素平面,得到该点在图像上的正确位置:
(3-20)
上面的畸变纠正过程使用了5个畸变系数。在实际应用中,可以灵活选择畸变纠正模型,如只选择 k 1 、 p 1 、 p 2 这3个畸变系数等。