Camera Calibration 相机标定:原理简介(一)
1 相机标定常见方法
广义来说,相机标定不单包括成像过程的几何关系标定,还包括辐射关系的标定,本文只探讨几何关系。相机标定是3D计算机视觉(Computer Vision)里从2D图像中提取量测信息的必要步骤。最初发展于摄影测量学(Photogrammetry),后逐渐被大量应用于计算机视觉中。
相机标定一般来说需要参照物或标定物,按照标定物的维数,来分可以分为:
基于三维参照物标定法(3D reference object based calibration):通过相机观测具有较高精度的已知三维信息进行标定解算的方法。标定物一般由两个或者三个正交的平面组成,该方法需要较为昂贵的标定设备和精心设计的标定步骤。在摄影测量学里,最经典的就是利用已知控制点通过共线方程(Collinearity Equation),使用后方交会法(Resection Method)或光束法(Bundle Method )求解。计算机视觉中最流行的标定方法是Roger Y. Tsai(1987). A versatile camera calibration technique for high-accuracy 3D machine vision metrology using off-the-shelf tv cameras and lenses.
基于二维平面标定法(2D plane based calibration):这该类方法中,使用相机对具有某种图案的平面(planar pattern)在不同的方位进行观测。(以张正友标定法(2000)为经典,参见论文:A Flexible New Technique for Camera Calibration)
基于一维线标定法(1D line based calibration):使用一组共线的点进行标定解算,通常的使用相机观测绕某一固定点移动的直线,例如悬挂在天花板上的一行小球等。(参见论文:Z. Zhang(2002). Camera calibration with one-dimensional objects)
自检校法(Self-calibration):顾名思义,不使用任何标定物,仅仅利用像点间的对应关系进行标定解算,因此也可称之为:基于0维标定物的方法。通常做法是移动相机,对一静态的场景进行成像,通过核线变换后,满足两个代数约束条件,继而可以进行相机标定。虽然不需要标定物,但是却需要大量的参数需要估算,由此也导致较多很难的数学问题。(参见论文:O. D. Faugeras at all(1992). Camera self-calibration: Theory and experiments)
除了上述的方法,还有利用灭点( Vanishing points)解算正交方向的方法和只存在旋转情形的标定方法等。
除了上述分类方法外,还有将标定算法分为:传统相机标定法、主动视觉相机标定方法、相机自标定法,感兴趣的话可以进行相关了解。必须要指出的是,上述的方法,不能一概而论地认为某一种方法优于其他方法,具体选择哪种标定方法,完全取决具体的情形,如下简单对比一下几种主要的标定方法:
有标定物法 vs. 自检校法:无论何时,如果我们能够事先进行相机标定,就应该利用标定设备进行相机标定。一般来说,自检校方法很难达到这种事先标定所取得的精度,因为前文已经介绍过,自检校需要对很多参数进行估算,涉及很复杂的数学问题。但是在事先标定不可能实现的情况下,例如用旧电影进行场景重建,这个时候就只能利用自检校的方法。
部分(Partial) vs. 全(full)自检校:部分自检校指的是,针对相机的一部分内参( Intrinsic parameters)进行标定。往往在只能选自检校方法时,情况允许的时候,人们更倾向于使用部分自检校的方法,原因很简单,需要估算的参数会更少,算法相对全参自检校要简单。以使用变焦镜头的相机进行三维重建( 3D reconstruction)为例,合理的做法是解算出部分参数如像素宽高比和像素偏斜度。
3D vs. 2D 标定物:3D标定物通常可以获得很高的精度,因此如果对于标定的精度要求很高而且又负担得起(标定设备相对昂贵得多),就可以选择3D标定物。从全世界计算机视觉的研究者和开发者们的反馈来看,使用2D标定物往往是最佳的选择,使用方便,造价便宜,而且也能获得不错的精度。
1D标定物:通常应用于标定多摄像机之间的相对几何关系以及各个摄像机的内参,做法上是让不同安装位置的多个摄像机对同一组点同时成像观测,通常来讲3D或者2D的标定物很难实现这一点。