说起相机大家都比较熟悉,现在已经是手机的标配和卖点,而且做的非常便捷易用,随便按都能拍出不错的照片,但如果想更手动、更专业一点,或者将相机用于工业应用(如机器视觉、摄影测量等),还是需要了解一下成像方面的东西,本文力求通俗易懂,先介绍一些相机相关的基本概念,然后对相机的标定过程进行简单的阐述。
一、基本概念
1、景深
我们拍照片的时候常有“虚化”的效果,其实就是利用“景深”来突出重点:
上图只有中间部分是清晰的,远景和近景都模糊掉,原理上从下图可以理解
即理论上只有处于镜头焦点距离的景物是成像清晰的,而在焦点前后,光线开始扩散,成像变的模糊,成像点形成一个扩大的圆:弥散圆(circle of confusion),而人眼的分辨能力有限,只有当弥散圆直径大到一定程度,我们才感觉到模糊,比如上图的草地看起来中间一段都是清晰的,这一段“看起来清晰”的距离就是景深(Depth of Field)。
景深的”深、浅“、“大、小”就是指这个距离的“长、短”,影响景深的因素主要有光圈、焦距和拍摄距离,后面会提到,景深有前景深和后景深的区分,以及一些计算公式,对摄影感兴趣的可以研究研究。
2、光圈
如果把相机拍照理解成小孔成像,那么光圈就是小孔的大小,即光圈就是控制光线进入镜头面积的装置,经典的如采用叶片组的方式来实现:
光圈数值分母越大,表示光圈越小,光圈主要有两方面的作用:控制进光量和景深:
- 进光量
这个容易理解,光圈越大,相同的快门,成像进来的光越多,照片就越亮,反之光圈越小照片越暗。
- 景深
这个可以通过如下图理解:
即光圈越大,景深越小,适合做背景虚化效果,如人像;反之光圈越小,景深越大。
3、快门
之前说光圈可以控制进光量,快门也可以,光圈从空间上限制进光面积来控制进光量,而快门则是从曝光时间上来控制。可以简单地理解为:快门挡在镜头或底片前,平时处于关闭状态,成像时快门打开一段时间再关闭,完成成像,这个快门打开的时间就是快门时间,通常以1/N秒为单位。快门除了可以控制进光量从而影响照片曝光,还可以制造一些特别的拍照效果。
如图子弹穿过灯泡的照片,需要极高的快门速度,而有些照片效果又需要长时间的快门才行,如城市的车流效果:
需要注意的是,当快门时间较长时,相机的抖动可能会造成成像模糊,使用三脚架是不错的选择。
4、焦距
焦距指镜头光学中心(主点)到成像平面的距离,平常说的长焦镜头就是指焦距较大的镜头,焦距是相机的重要参数,对成像有多方面的影响,首先是成像大小和视场角(FOV):焦距越大,成像越大,FOV越小:
因此,如果想从远距离拍摄野生动物,往往需要采用长焦镜头,而与长焦镜头对应的广角镜头,焦距小,能拍摄较大的场景,如建筑、风景等。
焦距对景深也有影响,通常焦距越大,景深越小,如长焦镜头的景深比较小,而广角镜头的景深都比较大。焦距还影响照片的透视效果,如下图:
可以看出,广角镜头下透视效果比较明显,人脸有一定变形,而长焦镜头下则没什么失真。
5、感光度
感光度表示的是底片或感光器件对光线的敏感度,常称为ISO(国际标准),对光线的敏感度也可理解为感光速度,感光度可以配合进光量来控制照片的曝光,比如光线不足时可以提高感光度以获得亮度足够的照片,但感光度越高,照片中的噪点也会相应增加,取决于器件的工艺质量。
6、色差
由于透镜对不同波长的折射率不同,相当于镜头对不同波长的光的焦距不同,特别是镜头的边缘处,从而会造成成像模糊。如下图,镜头中心的成像(左)色差不明显,而边缘处的成像则可以看到明显的色差现象。
7、畸变
畸变指真实成像点与理想成像点间的偏移,产生原因是镜头工艺的不完美,从而导致了不规则的折射。畸变有多种类型,如下图所示的枕形畸变和桶形畸变。后面相机标定部分会对畸变进行更详细的讨论。
二、成像模型
相机在计算机视觉应用中起着重要作用,作为图像数据来源,影响着后续各个处理步骤。成像模型就是用数学公式刻画整个成像过程,即被拍摄物体空间点到照片成像点之间的几何变换关系。
总体上,相机成像可以分为四个步骤:刚体变换、透视投影、畸变校正和数字化图像。
1、刚体变换
刚体变换只改变物体的空间位置(平移)和朝向(旋转),而不改变其形状,可用两个变量来描述:旋转矩阵R和平移向量t
齐次坐标下可写为:
旋转矩阵R是正交矩阵,可通过罗德里格斯(Rodrigues)变换转换为只有三个独立变量的旋转向量:
因此,刚体变换可用6个参数来描述,这6个参数就称为相机的外参(Extrinsic),相机外参决定了空间点从世界坐标系转换到相机坐标系的变换,也可以说外参描述了相机在世界坐标系中的位置和朝向。
2、透视投影
我们可以将透镜的成像简单地抽象成下图所示:
设 f=OB 表示透镜的焦距,m=OC 为像距,n=AO 为物距,有:
一般地,由于物距远大于焦距,即 n>>f,所以 m≈f,此时可以用小孔模型代替透镜成像:
可得:
齐次坐标下有:
如果将成像平面移到相机光心与物体之间,则有中心透视模型:
可得:
齐次坐标下有:
总体上看,透视投影将相机坐标系中的点投影到理想图像坐标系,其变换过程只与相机焦距 f 有关。
3、畸变校正
理想的针孔成像模型确定的坐标变换关系均为线性的,而实际上,现实中使用的相机由于镜头中镜片因为光线的通过产生的不规则的折射,镜头畸变(lens distortion)总是存在的,即根据理想针孔成像模型计算出来的像点坐标与实际坐标存在偏差。畸变的引入使得成像模型中的几何变换关系变为非线性,增加了模型的复杂度,但更接近真实情形。畸变导致的成像失真可分为径向失真和切向失真两类:
畸变类型很多,总体上可分为径向畸变和切向畸变两类,径向畸变的形成原因是镜头制造工艺不完美,使得镜头形状存在缺陷,包括枕形畸变和桶形畸变等,可以用如下表达式来描述:
切向畸变又分为薄透镜畸变和离心畸变等,薄透镜畸变则是因为透镜存在一定的细微倾斜造成的;离心畸变的形成原因是镜头是由多个透镜组合而成的,而各个透镜的光轴不在同一条中心线上。切向畸变可以用如下数学表达式来描述:
在引入镜头的畸变后,成像点从理想图像坐标系到真实图像坐标系的变换关系可以表示为:
实际计算过程中,如果考虑太多高阶的畸变参数,会导致标定求解的不稳定。
4、数字化图像
光线通过相机镜头后最终成像在感光阵列(CCD或CMOS)上,然后感光阵列将光信号转化为电信号,最后形成完整的图像。我们用dx和dy分别表示感光阵列的每个点在x和y方向上物理尺寸,即一个像素是多少毫米,这两个值一般比较接近,但由于制造工艺的精度问题,会有一定误差,同样的,感光阵列的法向和相机光轴也不是完全重合,即可以看作成像平面与光轴不垂直。
我们用仿射变换来描述这个过程,如上图,O点是图像中心点,对应图像坐标(u0,v0),Xd - Yd是真实图像坐标系,U-V是数字化图像坐标系,有:
齐次坐标下有:
上式中的变换矩阵即为相机的内参数矩阵 K,其描述了相机坐标系中点到二维图像上点的变换过程。
综上所述,在不考虑镜头畸变的情况下,相机的整个成像过程可表示为:
三、参数标定
参数标定即通过一定方法求得上述成像模型中的各个未知量(5个内参、6个外参以及畸变参数)。相机标定主要有传统标定方法和自标定方法两类,传统标定方法需要标定参照物,参照物的参数已知,然后分析拍摄到的参照物图像,求得相机参数,如直接线性变换(DLT)方法、Tsai两步标定法和张正友平面标定法等。传统方法操作相对复杂,但精度较高。
自标定方法不需要标定参照物,只需要多幅图像点的对应关系就能求解出相机参数,如基于无穷远平面、绝对二次曲面的自标定方法、基于Kruppa方程的自标定方法等。自标定方法灵活方便,但由于是非线性标定,精度和鲁棒性都不高。
这里主要介绍张正友平面标定法,其操作相对简单,且精度较高,实际应用中很常用。
论文原文:A Flexible New Technique forCamera Calibration
整个标定过程包括如下步骤:
- 打印一张棋盘格,把它贴在一个平面上,作为标定物。
- 通过调整标定物或摄像机的方向,为标定物拍摄一些不同方向的照片。
- 从照片中提取棋盘格角点。
- 估算理想无畸变的情况下,五个内参和六个外参。
- 应用最小二乘法估算实际存在径向畸变下的畸变系数。
- 极大似然法,优化估计,提升估计精度。
由于棋盘格上所有的角点都位于同一平面上,角点的世界坐标系的Z轴全部取0,即假定模板平面位于世界坐标系Z=0的平面上,因此,旋转矩阵减少一维,得到如下变换:
令 H=[h1 h2 h3]=K[r1 r2 t],H即为单应性矩阵,由旋转矩阵R正交性质,有:
变换一下,可得约束方程:
K中有5个未知变量,因此当拍摄3幅图像后,即可得3个H,在上述2个约束下可产生6个方程,就可以解出K的全部5个变量。再求得K后,可通过如下变换求得外参R、t:
此时得到的内参K和外参[R|t]都是假设理想无畸变的情况,张正友标定法在此基础上,接着应用最小二乘法估计径向畸变系数,最后用极大似然法进行整体的估计优化。
实际应用中,常使用MATLAB标定工具箱进行相机标定 Camera Calibration Toolbox for Matlab,只需导入拍摄的棋盘格照片,输入一些参数,然后对每张照片选择棋盘区域,就可以自动完成整个标定过程,并得到可视化的标定结果。