透镜畸变和畸变校准(OpenCV)
透镜畸变
理想的相机模型应该是小孔成像模型,但由于透镜制造和相机镜头安装等因素,必然会导致畸变的存在。畸变主要分为径向畸变、切向畸变和薄棱镜畸变。
1.径向畸变
径向畸变主要由透镜本身导致的,远离透镜中心的光线比靠近中心的光线弯曲的更严重。图1显示矩形网格因镜像畸变而产生的位移。从前面看,光心越向外,矩形网格上的点的位移越大。
图1 透镜的径向畸变图,箭头显示径向畸变图像上外部矩形网格的偏移
具体参考Learning OpenCV,Page412
数学模型表示如下,其中(xd,yd)为畸变点的位置,(xu,yu)为无畸变点的位置,(k1,k2,k3,k4,k5,k6)为径向畸变参数,此处为OpenCV的径向畸变模型:
图2显示了两种典型的径向畸变,分别为桶形畸变和枕形畸变
2.切向畸变
切向畸变主要由镜头安装导致,当透镜不完全平行于图像平面的时候产生切向畸变。下图显示了某透镜的切向畸变图像。
数学模型表示如下,其中(xd,yd)为畸变点的位置,(xu,yu)为无畸变点的位置,(p1,p2)为切向畸变参数。
3.薄棱镜畸变
薄棱镜畸变一般由镜头设计和加工安装误差导致,一般情况下,可忽略此畸变。
数学模型可表示为,(s1,s2)为薄棱镜畸变参数。
畸变模型
一般情况下,薄棱镜畸变可以忽略不计,故OpenCV 2.0版本的畸变模型只考虑了径向畸变和切向畸变,畸变参数为(k1,k2,p1,p2,k3,k4,k5,k6)共8个参数。完整的数学模型如下所示(p3 为考虑切向畸变的扩展,此外设为0即可)
畸变校准
OpenCV提供对图像点的反畸变函数<