首先介绍一个经典的物理实验,蜡烛投影实验。实验会在暗盒前放置一个燃烧着的蜡烛,然后蜡烛的光就会透过暗盒上的一个小孔投影到暗盒的后方平面上,这个平面上就会出现一个倒立的蜡烛。通过这个过程,三维世界中立体的蜡烛通过针孔就被投影到了二维成像平面上。
这也就是针孔相机拍照的几何成像过程(如图1所示),相机将三维世界中的物体的坐标点(单位:米)投影到二维平面上(单位:像素)。但是由于相机中存在透镜的原因,光线在投影到平面上时就会产生畸变,相机的针孔模型和透镜的畸变模型共同就组成了相机的内参数。
图1 针孔相机模型
实际上相机得到的图像并不是倒立的,这是由于相机软件自身会预处理进行翻转。相机将空间点映射获得一个个像素,就需要在成像平面上进行采样和量化,这个处理的过程用数学方式表示就是一个矩阵,也就是相机的内参数,这个参数是由相机的型号所决定的,并不会在使用过程中发生变化,具体的矩阵解析过程可参考高翔等人著写的《视觉SLAM十四讲:从理论到实践》。
有内参,就有对应的外参。外参就是指空间点在相机坐标系下的坐标,但是相机在拍摄过程中是在不断运动中的,所以求解外参也需要类似上述处理将相机在世界坐标中的位置变换到相机坐标系下的位置,即相机的位姿。
除了相机位置的内外参数外,相机前方的透镜也会在成像过程中对光线的传播投影产生影响:
①透镜的形状引起的径向畸变。针孔模型中直线经过投影到平面上仍然是直线,但是经过不同形状的透镜之后,直线在平面上就会变成曲线,越靠近边缘,变形越明显。下图所示即桶形畸变和枕形畸变示意图;
图2 径向畸变的两种类型
②相机机械组装时,透镜和成像平面不可能完全平行,就会使得光线的传播到平面上时位置发生偏移。过程示意如下图所示。
图3 切向畸变示意图
通过以上现实世界空间点的成像过程,我们发现要想得到相机成像时的准确位置和姿态,就必须要对该成像过程进行反向解算,也就是我们平常所说的空中三角测量。因为一个准确的空三结果是摄影测量的核心算法之一,也是建立二三维模型的基础。
空中三角测量以重投影残差最小化为目标重新求解相机成像时的位置和姿态,总结就是成像过程中的相机内参(主要指两个焦距)、外参(相机位置XYZ,相机姿态)、畸变参数(像点偏移等)。