摄像机标定是计算机视觉中一个很基础很关键的问题。
摄像机摄入的图像中的每一点的亮度反映了空间物体表面某点反射光的强度,而该点在图像上的位置于空间物体表面相应点的几何位置有关,这些位置的相互关系,由摄像机成像几何模型所决定,该几何模型的参数称为摄像机参数。这些参数必须由试验和计算决定,试验和计算的过程称为摄像机标定。摄像机模型是光学成像几何关系的简化,最简单的模型是线性模型,或称针孔模型(pin-hole model)。当计算精度要求较高,尤其是当摄像机的镜头是广角镜头时,线性模型不能准确的描述摄像机的成像几何关系,所以要用非线性模型。摄像机标定还与计算机视觉系统的任务有关,在立体视觉中,一般需要使用两个或更多的摄像机,所以,还需要知道各个摄像机之间的几何关系。另外,还有hand-eye calibration等。一般的摄像机标定方法都需要在摄像机前放一个已知形状与尺寸的物体,称为标定物或标定参照物(reference object)。由于,在某些视觉系统中(如机器人视觉系统,主动视觉系统),需要经常改变摄像机的位置或调整摄像机光学系统(如光圈与焦距),因此,在每次调整后,都需要做摄像机标定。在这种情况下,在摄像机工作环境中放一个标定块常常是不现实的,而摄像机自标定是指不需要使用标定物的定标方法。
下面主要讨论的只会涉及到线性摄像机的标定问题。
线性摄像机的标定涉及到三个坐标系:图像坐标系、摄像机坐标系和世界坐标系。
设(u,v)表示以像素为单位的图像坐标系的坐标,(x,y)表示以毫米为单位的图像坐标系的坐标。在x,y坐标系中,原点o1定义在摄像机光轴与图像平面的交点,该点一般位于图像中心,当由于摄像机制作的原因,也会有些偏离。若o1在u,v坐标系中的坐标为(u0,v0),每一个像素在x轴与y轴方向上的物理尺寸为dx,dy,则图像中任意一个像素在两个坐标系下的坐标有如下关系:
摄像机成像关系可用下图表示。其中,O点称为摄像机光心,Xc轴和Yc轴与图像的x轴与y轴平行,Zc轴为摄像机的光轴,它与图像平面垂直。光轴与图像平面的交点,即为图像坐标系的原点,由点O与Xc,Yc,Zc轴组成的直角坐标系称为摄像机坐标系。OO1为摄像机焦距。由于摄像机可安放在环境中的任何位置,我们在环境中还选择一个基准坐标系来描述摄像机的位置,并用它描述环境中任何物体的位置,该坐标系称为世界坐标系。它由Xw,Yw,Zw组成。
在线性摄像机模型(针孔模型)中,空间任何一点P在图像中的成像位置可以用针孔模型近似表示,即任何点p在图像上的投影位置p,为光心O与P点的连线OP与图像平面的交点,这种关系也称为中心射影或透视投影。
摄像机坐标系与世界坐标系之间的关系可以用旋转矩阵R与平移向量t来描述。于是,有下式成立:
经过几个坐标系的变换,最后,可以推导出一个关系式:
上面的公式,对于标定是很重要的。其中,ax=f/dx,ay=f/dy;M为3×4矩阵,称为投影矩阵;M1完全由ax,ay,u0,v0决定,由于,ax,ay,u0,v0只与摄像机内部结构有关,我们称这些参数为摄像机内部参数;M2完全由摄像机相对于世界坐标系的方位决定,称为摄像机外部参数,确定某一摄像机的内外参数,称为摄像机标定。
摄像机定标一般都需要一个放在摄像机前的特制的标定参数,摄像机获取该物体的图像,并由此计算摄像机的内外参数,标定参照物上的每一个特征点相对于世界坐标系的位置在制作时应精确测定,世界坐标系的位置的选取可以任意,当然要考虑到以后和现在的方便问题。得到这些已知点在图像上的投影后,就可以计算出摄像机的内外参数,具体做法如下。
由这个方程可以推导出下面的式子
上面的这个式子表示,如果标定块上有n个已知点,并已知它们的空间坐标和图像坐标,这我们会有2n个关于M矩阵元素的线性方程,下面是用矩阵形式写出的这些方程:
由上式可见,M矩阵乘以任意不为0的常数并不影响(Xw,Yw,Zw)与(u,v)的关系,因此,可以指定m34=1,从而得到关于M矩阵其它元素的2n个线性方程,这些未知元素的个数为11个,记为11维向量m,所以,上式可以简写成Km=U,其中,K为2n×11矩阵,m为未知的11维向量,U为2n维向量。K和U为已知向量,当2n>11时,可用最小二乘法求出上述线性方程的解为:m=(KTK)-1 KTU
由此可见,由空间6个以上已知点与它们的图像点坐标,我们可以求出M矩阵。在一般的定标工作中,我们都使定标块上有数十个已知点,使方程的个数大大超过未知数的个数,从而用最小二乘法求解以降低误差造成的影响。求出M矩阵后,就可以通过一些推导算出摄像机的全部内外参数了。
综上,由空间6个以上已知点以及它们的图像点坐标,就可以求出M矩阵,并可以由一定的公式求出全部的内外参数。
需要注意的是,M矩阵确定了空间点坐标与它的图像点坐标的关系,在许多应用场合(如立体视觉),计算出M矩阵后,不必要在分解求出摄像机的内外参数,也就是说,M矩阵本身也代表了摄像机参数,但这些参数并没有具体的物理意义,在有些文献中,称为隐参数。在有些应用场合(如运动分析),则需要将M矩阵分解,从而求出摄像机的内外参数。而摄像机的内外参数的分解会引起误差。