畸变校正实现
1.相机标定
在计算机视觉中,通过相机标定能够获取一定的参数,其原理是基于三大坐标系(摄像机坐标系、图像坐标系和世界坐标系)之间的转换和摄像机的畸变参数矩阵。目前经常用张正友标定法,进行摄像机标定,获取到内参数矩阵和外参数矩阵以及畸变参数矩阵。 1.1三大坐标系 1)图像坐标系
在计算机系统中,描述图像的大小是像素,比如图像分辨率是1240*768.也就是以为图像矩阵行数1024,列数768。图像的原点是在图像的左上角。
以图像左上角为原点建立以像素为单位的坐标系u-v。像素的横坐标u与纵坐标v分别是在其图像数组中所在的列数与所在行数。这是像素坐标,而不是图像坐标系,为了后续的模型转换,有必要建立图像坐标系。
图像坐标系是以图像中心为原点,X轴和u轴平行,Y轴和v轴平行。dx和dy表示图像中每个像素在X轴和Y轴的物理尺寸,其实就是换算比例。比如图像大小是1024*768,图像坐标系x-y中大小为19*17.那么dx就是19/1024。 2)相机坐标系
相机成像的几何关系可由图2.2表示。其中O点为摄像机光心(投影中心),Xc轴和Yc轴与成像平面坐标系的x轴和y轴平行,Zc轴为摄像机的光轴,和图像平面垂直。光轴与图像平面的交点为图像的主点O1,由点O与Xc,Yc,Zc轴组成的直角坐标系称为摄像机的坐标系。OO1为摄像机的焦距。
3)世界坐标系
世界坐标系是为了描述相机的位置而被引入的,如图2.2中坐标系OwXwYwZw即为世界坐标系。平移向量t和旋转矩阵R可以用来表示相机坐标系与世界坐标系的关系。所以,假设空间点P在世界坐标系下的齐次坐标是(Xw,Yw,Zw,1)T,(这
里T是上标转置),在相机坐标下的齐次坐标是(Xc,Yc,Zc,1)T,则存在如下的关系:
1.2 相机标定原理
在计算机视觉中通过相机模型讲三维空间的点和二维图像中的点联系起来。如果不考虑畸变的原因,则是线性模型,如果考虑,则是非线性模型。 1.2.1线性模型
可用针孔模型来近似表示任一点P(Xc,Yc,Zc)在像平面的投影位置,也就是说,任一点P(Xc,Yc,Zc)的投影点p(x,y)都是OP(即光心与点P(Xc,Yc,Zc)的连线)与像平面的交点如图2.2。对应比例关系可得:
上式用齐次坐标与矩阵的形式表示为
点P的世界坐标与其投影坐标(u,v)之间的关系为:
上述公式中完成了从世界坐标系到图像坐标系的转变,中间经过了相机坐标系的过度,Xw中的w表示world世界,单位为毫米,而u,v的单位为像素。
其中ax=f/dx,ay=f/dy。M是3×4的投影矩阵,M1完全由相机的内参数ax,ay,u0,v0决定,(u0,v0)为主点坐标,ax,ay分别表示图像u轴和v轴上的尺度因子,M2则完全由相机的外部参数决定。而相机标定就是确定相机的内外参数。
由式(2.7)可知,若已知相机的内外参数,则相当于已知投影矩阵M.当已知M和空间点P的坐标:矢量Xw=(Xw,Yw,Zw,1)T,(矢量Xw上面有一个矢量标识,T表示矢量的转置)。式(2.7)可以给出三个方程,消去Zc就可以得到其投影点p的坐标(u,v)(其实也就是用一个相机就可以拍摄一个物体的图片了)。但是由于
M为3×4不可逆矩阵,当 点P的投影坐标(u,v)和投影矩阵M为已知时,我们只能得到关于Xw,Yw,Zw的两个线性方程,即射线OP的方程,由图2.2我们可以看出,位于射线OP上的所有空间点的投影点(即图像点)都是p点。所以不能唯一确定空间点P的世界坐标矢量Xw. 1.2.2非线性模型 1)径向畸变
实际中由于成像平面和透镜平面不是绝对平行的,所以存在径向畸变。径向畸变成像仪的中心畸变为0,越到边缘畸变越严重,比如鱼眼透镜。
对于便宜的网络摄像机,我们通常使用前两项,其中通常第一项为k1,而第二项为k2。对畸变很大的摄像机,比如鱼眼透镜,我们使用第三个径向畸变项k3。通常成像仪某点的径向位置按下式调节 2)
切向畸变是由于透镜制造上的缺陷使得透镜本身与图像平面不平行而产生的。径向畸变可以有两个额外的参数p1和p2来描述,如下 因此总共有5个我们需要的畸变参数。由于在OpenCV程序中5个参数是必需的,所以它们被放置到一个畸变向量中,这是一个5×1的矩阵,按顺序依次包含k1,k2,p1,p2和k3 3 本文的算法
在实际的成像过程中,考虑镜头的失真,一般都存在非线性畸变,所以线性模型不能准确描述成像几何关系。非线性畸可用下列公式描述 若考虑非线性畸变,则对相机标定时需要使用非线性优化算法。而有研究表明引入过多的非线性参入(如离心畸变和薄棱畸变)不仅不能提高精度,还会引起解的不稳定。一般情况下径向畸变就足以描述非线性畸变,所有本课题只是考虑径向畸变。则将式(2.9)中的径向畸变代入式(2.8)可得: