目前我们团队在做一个项目,通过采集到的人脸图像测量人脸上两个瞳孔间的实际距离。注意是实际距离,不是两个瞳孔之间隔多少个像素点。找了很久资料,好像“相机标定”可以解决我的问题,看了不少资料来理解【相机标定】,张正友博士的论文我看了,百度文库我也看了。
【相机标定】分为【内标定】与【外标定】,【内标定】得到相机相关的内参数,【外标定】得到相机的外参数,之后还要标定多个相机之间的位置关系。
【相机标定】可以说是计算机视觉/机器视觉的基础,但是初学者不易搞清楚【相机标定】的逻辑是怎样的。下面有感兴趣的朋友可以一起来介绍一下。
为什么要相机标定?
在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立相机成像的几何模型,这些几何模型参数就是相机参数。
在大多数条件下这些参数必须通过实验与计算才能得到,这个求解参数的过程就称之为【相机标定或摄像机标定】。 摄像机标定过程,简单的可以简单的描述为通过标定板,经过一系列的矩阵变换得到。
相机标定的目的和意义
我们所处的世界是三维的,而照片是二维的,这样我们可以把相机认为是一个函数,输入量是一个场景,输出量是一幅灰度图。这个从三维到二维的过程的函数是不可逆的。
相机标定的目标是我们找一个合适的数学模型,求出这个模型的参数,这样我们能够近似这个三维到二维的过程,使这个三维到二维的过程的函数找到反函数。
这个逼近的过程就是【相机标定】,我们用简单的数学模型来表达复杂的成像过程,并且求出成像的反过程。标定之后的相机,可以进行三维场景的重建,即深度的感知,这是计算机视觉的一大分支。
相机成像过程的简化与建模
提到相机的成像,从根本上来说,就是在讨论相机的镜头。固定结构的相机镜头决定了一对固定的物像共轭关系,所谓【共轭】,意思是镜头前某个位置的物,它的像一定在镜头后的某个位置,这个关系是固定的。
举个最简单的例子,无穷远处的物必然会在镜头的焦点处成像。这里说的固定结构,指的是镜头的焦距固定,光圈固定。
上图是佳能(Canon)某款摄像机成像原理,我们可以找一个与这个镜头具有相同的物像共轭关系的凸透镜来等效这个镜头,我们把这个凸透镜称作等效透镜,用朝外的双箭头表示。
所以准确的讲把相机的成像过程简化成【针孔相机模型】,只是借用了针孔相机中简单的数学关系来表达一些本来难以表达的数学关系。
按我个人的理解,除了焦距固定之外,也应当包含光圈固定,因为改变光圈的大小,除了景深之外,是有可能改变针孔相机模型中的光心位置,但是影响并不是很大。这意味着标定好的相机如果改变光圈大小,会使得标定误差变大但应该不会大到难以接受的地步。
那么这里就引发了两个问题:
(1) 这么多像点和物点到底谁和谁是一对儿?(2) 即便我知道物点在哪里,可是我怎么样用相机坐标系来表达物点的位置 X,Y,Z ?
为了解决上述的两个问题,【标定板】应运而生。标定板的第一大作用,确定物点和像点的对应性。这里用到的原理主要是【透视不变性】,打个比方,你近看一个人和远看一个人,虽然他的鼻子大小变了,你看鼻子的视角也变了,但是拓扑结构肯定是不变的,你也不可能把鼻子看成是嘴巴。
在【标定板】中,印刷了拓扑结构,广泛应用的是【棋盘格】和【圆点格】,这两种之所以成为主流,不仅是因为它们的拓扑结构明确且均匀,更重要的是检测其拓扑结构的算法简单且有效。
棋盘格检测的是角点,只要对拍摄到的棋盘格图像横纵两个方向计算梯度就可获得;而圆点格的检测只需要对拍摄到的圆点格图样计算质心即可。假如你开发了一套非常完美的检测人脸全部特征的算法,你完全可以用你的照片当作标定板。圆点格的效果应该是好于棋盘格,因为圆点质心的【透视不变性】要比棋盘格的角点稳定的多。
如果用OpenCV或Matlab标定工具箱进行标定,需要给出棋盘格的物理尺寸,这其实就是在建立标定板坐标系,从测量的角度讲,标定板的精度是相机标定精度的基准,是误差传递链上的第一个环节。所以为了使针孔相机模型更逼近真实相机,对标定板的质量有以下要求(按重要性顺序):
- 标定板的平面度高,棋盘格是直角;
- 标定板每个格子尺寸的高一致性;
- 真实尺寸与标称尺寸的差异小。
综上所述,我们知道了【相机标定】的重要意义,无论是在图像测量或者机器视觉应用中,相机参数的标定都是非常关键的环节,其标定结果的精度及算法的稳定性直接影响相机工作产生结果的准确性。因此,做好相机标定是做好后续工作的前提,提高标定精度是科研工作的重点所在。
相机标定方法有哪些?
【相机标定】方法有:【传统相机标定法】、【主动视觉相机标定方法】、【相机自标定法】。
【传统相机标定法】需要使用尺寸已知的标定物,通过建立标定物上坐标已知的点与其图像点之间的对应,利用一定的算法获得相机模型的内外参数。
根据标定物的不同可分为三维标定物和平面型标定物。三维标定物可由单幅图像进行标定,标定精度较高,但高精密三维标定物的加工和维护较困难。平面型标定物比三维标定物制作简单,精度易保证,但标定时必须采用两幅或两幅以上的图像。传统相机标定法在标定过程中始终需要标定物,且标定物的制作精度会影响标定结果。同时有些场合不适合放置标定物也限制了传统相机标定法的应用。
【基于主动视觉的相机标定法】是指已知相机的某些运动信息对相机进行标定。该方法不需要标定物,但需要控制相机做某些特殊运动,利用这种运动的特殊性可以计算出相机内部参数。基于主动视觉的相机标定法的优点是算法简单,往往能够获得线性解,缺点是系统的成本高、实验设备昂贵、实验条件要求高,而且不适合于运动参数未知或无法控制的场合。
【相机自标定算法】主要是利用相机运动的约束。相机的运动约束条件太强,因此使得其在实际中并不实用。利用场景约束主要是利用场景中的一些平行或者正交的信息。其中空间平行线在相机图像平面上的交点被称为【消失点】,它是射影几何中一个非常重要的特征,所以很多学者研究了基于消失点的相机自标定方法。自标定方法灵活性强,可对相机进行在线定标。
【 常用术语】
【内参矩阵】: Intrinsic Matrix
【焦距】: Focal Length
【主点】: Principal Point
【径向畸变】: Radial Distortion
【切向畸变】: Tangential Distortion
【旋转矩阵】: Rotation Matrices
【平移向量】: Translation Vectors
【平均重投影误差】: Mean Reprojection Error
【重投影误差】: Reprojection Errors
【重投影点】: Reprojected Points
【标定板】: Calibration Target
在机器视觉、图像测量、摄影测量、三维重建等应用中,为校正镜头畸变、确定物理尺寸和像素间的换算关系,通过相机拍摄带有固定间距图案阵列平板、经过标定算法的计算,可以得出相机的几何模型,从而得到高精度的测量和重建结果,而带有固定间距图案阵列的平板就是【标定板】。
【世界坐标系】:World Coordinate
也称为测量坐标系,是一个三维直角坐标系,以其为基准可以描述相机和待测物体的空间位置。世界坐标系的位置可以根据实际情况自由确定。
【相机坐标系】: Camera Coordinate
也是一个三维直角坐标系,原点位于镜头光心处,x、y轴分别与相面的两边平行,z轴为镜头光轴,与像平面垂直。