接触过机器视觉的人都知道,无论是在图像测量或者机器视觉应用中,相机参数的标定都是非常关键的环节,其标定结果的精度及算法的稳定性直接影响相机工作产生结果的准确与稳定。
什么是相机标定?
在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立相机成像的几何模型,这些几何模型参数就是相机参数。
在大多数条件下这些参数必须通过实验与计算才能得到,这个求解参数的过程就称之为相机标定。
计算机视觉的基本任务之一是依据相机获取的图像信息计算三维空间中物体的几何信息,并由此重建和识别物体。
我们用简单的数学模型来表达复杂的成像过程,并且求出成像的反过程。标定之后的双目相机,可以进行三维场景的重建,这是计算机视觉的一大分支。
经典的针孔相机模型
小孔成像的实验大家都很熟悉,如上图,依据这个实验也可以抽象出一个经典的针孔相机模型,如下图:
相机标定常用到四种坐标系,分别为:
● 像素坐标系(u,v):描述物体成像后的像点在数字图像上(相片)的坐标,单位为个(像素数目)。
● 成像平面坐标系(x,y):描述成像过程中物体从相机坐标系到图像坐标系的投影透射关系,单位为m。
● 相机坐标系(xc,yc, zc):原点落在相机上的三维坐标系,单位为m。
● 世界坐标系(xw,yw, zw):用户定义的三维世界的坐标系,为了描述目标物在真实世界里的位置而被引入,单位为m。
世界坐标系到相机坐标系的转换关系今天暂不讨论,我们把重点放在相机坐标系到成像平面坐标系的转换关系上。
上文中小孔成像实验的成像过程可以描述为一点通过针孔相机模型的示意图(如图A)。为了在数学上更方便描述,我们将相机坐标系和图像坐标系位置对调,变成图B所示的布置方式:
经过一系列推导,我们就可以得到一个结果转化公式:
透镜的畸变
透镜的畸变主要分为径向畸变和切向畸变:
径向畸变就是沿着透镜半径方向分布的畸变,产生原因是光线在远离透镜中心的地方比靠近中心的地方更加弯曲,径向畸变主要包括桶形畸变和枕形畸变两种。以下分别是枕形和桶形畸变示意图。
切向畸变是由于透镜本身与图像平面不平行而产生的,这种情况多是由于透镜被粘贴到镜头模组上的安装偏差导致。
常用的相机标定方法
常用的相机标定方法有:传统相机标定法、主动视觉相机标定方法、相机自标定法。
● 传统相机标定法
传统相机标定法需要使用尺寸已知的标定物,通过建立标定物上坐标已知的点与其图像点之间的对应,利用一定的算法获得相机模型的内外参数。根据标定物的不同可分为三维标定物和平面型标定物。传统相机标定法在标定过程中始终需要标定物,且标定物的制作精度会影响标定结果。
● 主动视觉相机标定法
基于主动视觉的相机标定法是指已知相机的某些运动信息对相机进行标定。该方法不需要标定物,但需要控制相机做某些特殊运动,利用这种运动的特殊性可以计算出相机内部参数。基于主动视觉的相机标定法的优点是算法简单,往往能够获得线性解,故鲁棒性较高,缺点是系统的成本高、实验设备昂贵、实验条件要求高,而且不适合于运动参数未知或无法控制的场合。
● 相机自标定法
相机自标定算法主要是利用场景中的一些平行或者正交的信息。其中空间平行线在相机图像平面上的交点被称为消失点,它是射影几何中一个非常重要的特征,所以很多学者研究了基于消失点的相机自标定方法。自标定方法灵活性强,可对相机进行在线定标。但由于它是基于绝对二次曲线或曲面的方法,其算法鲁棒性差。