机器视觉模型——畸变模型

1 概述

镜头透镜由于制造精度以及组装工艺的偏差会引入畸变,导致成像的失真,即图像畸变。
在前一篇文章《机器视觉模型——投影矩阵》中描述了机器视觉系统成像模型,在这个模型里包含了相机内参(与像元尺寸、焦距、像素中心有关)以及相机外参(与相机在世界坐标系的位姿有关),这个模型是一个理想模型,或者说线性模型,没有考虑到镜头透镜产生的畸变所带来的影响。
结合上文成像模型,可以把畸变理解成像点和物点之间的光线是弯曲的,如下图所示。
在这里插入图片描述
图中本来应该共线的三个点 O O O P c r t P_{crt} Pcrt、Q,现在由于透镜的某种偏差原因而不共线了, P c r t P_{crt} Pcrt被成像在了 P P P点,很明显,此时的关系不再是前文讨论的矩阵关系了,也就是说,在畸变存在的条件下,用前文的矩阵公式计算出来的结果是不正确的。
所以,在用这个视觉模型矩阵公式前,需要先把产生的畸变消除掉,与前文同样原理,如果透镜畸变能用一个数学模型或者数学公式来表达,我们就可以很方便地消除畸变,我们把这个模型称为“畸变模型”。

2 透镜的畸变

透镜的畸变主要包括:径向畸变、切向畸变、薄透镜畸变等等,但最显著的是径向畸变和切向畸变,所以我们这个模型里只考虑这两种畸变。同时,图像的畸变是两种畸变的组合,因此把整个畸变分解为径向畸变分量和切向畸变分量。

2.1 径向畸变

径向畸变:就是沿着透镜半径方向分布的畸变,如我们所熟知的鱼眼镜头产生的畸变、枕形畸变、桶形畸变等。
在这里插入图片描述
在这里插入图片描述
下图为径向畸变的分布,一般越远离中心越严重。
在这里插入图片描述
由于这种畸变是从中心沿径向方向向外分布的,我们用r=0处的泰勒级数展开的前几项来近似描述径向畸变,径向畸变前后的坐标关系为
x d i s t o r t e d = x ( 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 ) y d i s t o r t e d = y ( 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 ) x_{distorted}=x(1+k_1r^2+k_2r^4+k_3r^6)\\ y_{distorted}=y(1+k_1r^2+k_2r^4+k_3r^6) xdistorted=x(1+k1r2+k2r4+k3r6)ydistorted=y(1+k1r2+k2r4+k3r6)
式中:
x d i s t o r t e d , y d i s t o r t e d x_{distorted},y_{distorted} xdistorted,ydistorted——原畸变图像坐标
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 2 , k 3 k_1,k_2,k_3 k1,k2,k3——引入的径向畸变参数

2.2 切向畸变

切向畸变:是由于透镜本身与相机传感器平面(像平面)或图像平面不平行而产生的,这种情况多是由于透镜被粘贴到镜头模组上的安装偏差导致,如下图所示。
在这里插入图片描述
在这里插入图片描述
随着相机制造工艺的大大提升,这种情况很少出现了,所以很多时候已经可以不考虑切向畸变。
下图为切向畸变的分布
在这里插入图片描述
切向畸变可以用两个额外的参数p1和p2来描述
x d i s t o r t e d = x + 2 p 1 x y + p 2 ( r 2 + 2 x 2 ) y d i s t o r t e d = y + 2 p 2 x y + p 1 ( r 2 + 2 y 2 ) x_{distorted}=x+2p_1xy+p_2(r^2+2x^2)\\ y_{distorted}=y+2p_2xy+p_1(r^2+2y^2) xdistorted=x+2p1xy+p2(r2+2x2)ydistorted=y+2p2xy+p1(r2+2y2)
式中:
x d i s t o r t e d , y d i s t o r t e d x_{distorted},y_{distorted} xdistorted,ydistorted——原畸变图像坐标
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 2 p_1,p_2 p1,p2——引入的切向畸变参数

3 机器视觉畸变模型

综上,可以得到机器视觉系统透镜畸变模型如下
畸变径向分量:
x d i s t o r t e d = x ( 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 ) y d i s t o r t e d = y ( 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 ) x_{distorted}=x(1+k_1r^2+k_2r^4+k_3r^6)\\ y_{distorted}=y(1+k_1r^2+k_2r^4+k_3r^6)\\ xdistorted=x(1+k1r2+k2r4+k3r6)ydistorted=y(1+k1r2+k2r4+k3r6)
畸变切向分量:
x d i s t o r t e d = x + 2 p 1 x y + p 2 ( r 2 + 2 x 2 ) y d i s t o r t e d = y + 2 p 2 x y + p 1 ( r 2 + 2 y 2 ) x_{distorted}=x+2p_1xy+p_2(r^2+2x^2)\\ y_{distorted}=y+2p_2xy+p_1(r^2+2y^2) xdistorted=x+2p1xy+p2(r2+2x2)ydistorted=y+2p2xy+p1(r2+2y2)
其中包含了5个畸变参数: k 1 , k 2 , k 3 , p 1 , p 2 k_1,k_2,k_3,p_1,p_2 k1,k2,k3,p1,p2
对于一个给定的镜头成像系统,这5个畸变参数怎么获得?这就涉及到“相机标定”,即需要根据一系列已知的若干对原成像点与畸变成像点的坐标值,带入以上公式来解出,具体见《机器视觉-相机标定》

猜你喜欢

转载自blog.csdn.net/hangl_ciom/article/details/106252235