相机将三维世界中的坐标点(单位为米)映射到二维图像平面(单位为像素)的过程能够用一个几何模型进行描述,称为针孔模型,它描述了一束光线通过针孔之后,在针孔背面投影成像的关系。同时,由于相机镜头上的透镜的存在,使得光线投影到成像平面的过程中会产生畸变。因此,我们使用针孔和畸变两个模型来描述整个投影过程。这两个模型能够把外部的三维点投影到相机内部成像平面,构成相机的内参数
初中物理的蜡烛投影实验:在一个暗箱的前方放着一支点燃的蜡烛,蜡烛的光透过暗箱上的一个小孔投影在暗箱的后方平面上,并在这个平面上形成一个倒立的蜡烛图像。小孔模型能够把三维世界中的蜡烛投影到一个二维成像平面。同理,可以用这个简单的模型来解释相机的成像过程。对这个简单的针孔模型进行几何建模。设 O − x − y − z 为相机坐标系,z 轴指向相机前方,x 向右,y 向下。O为摄像机的光心,也是针孔模型中的针孔。现实世界的空间点P,经过小孔O投影之后,落在物理成像平面 O′ − x′ − y′ 上,成像点为 P′。设 P 的坐标为 [X,Y,Z]T,P′ 为 [X′,Y′,Z′]T,设物理成像平面到小孔的距离为f(焦距),如图1所示:
那么,根据三角形相似关系,有:
其中负号表示成的像是倒立的。不过,实际相机得到的图像并不是倒像,可以等价地把成像平面对称地放到相机前方,和三维空间点一起放在摄像机坐标系的同一侧,如图2所示
这样可以把公式中的负号去掉,更加简洁:
整理可得:
这描述了点 P和它的像之间的空间关系。不过,在相机中最终获得的是一个个的像素,这还需要在成像平面上对像进行采样和量化。为了描述传感器将感受到的光线转换成图像像素的过程,设在物理成像平面上固定着一个像素平面 o − u − v,在像素平面有P′的像素坐标:[u,v]T。像素坐标系通常的定义方式是:原点o′位于图像的左上角,u 轴向右与 x 轴平行,v 轴向下与 y 轴平行。像素坐标系与成像平面之间,相差了一个缩放和一个原点的平移。设像素坐标在 u 轴上缩放了 α 倍,在 v 上缩放了 β 倍。同时,原点平移了 [cx,cy]T。那么,P′ 的坐标与像素坐标[u,v]T 的关系为:
代入式1.3,令αf=fx, βf=fy得:
其中f(焦距)的单位为米,α 、β的单位为像素/米,所以fx、fy和cx、cy的单位为像素,把该式写为矩阵形式,表达的就是相机坐标系中的一点与像素坐标系中的一个像素之间的关系:
其中,K矩阵称为相机的内参数矩阵(相机坐标系与像素坐标系转换的矩阵),通常相机的内参在出厂之后是固定的,不会在使用过程中发生变化。但有时需要自己确定相机的内参,也就是所谓的标定。
公式1.6中的Pc是在相机坐标系下的坐标。由于相机在运动,所以P是相机的世界坐标(记为Pw)根据相机的当前位姿变换到相机坐标系下的结果。相机的位姿由它的旋转矩阵R和平移向量t来描述。那么有:
上式描述了P点的世界坐标系到像素坐标系的转换投影关系,相机的位姿R,t称为相机的外参数, 相比于不变的内参,外参会随着相机运动发生改变,同时也是 SLAM 中待估计的目标,代表着机器人的轨迹。
两边同除以z:
相当于把一个世界坐标点先转化到相机坐标系,再除掉它的最后一维的数值,这样的过程称为归一化处理其中,Pc1称为归一化坐标:可以看成相机前方z=1处的平面上的一个点,这个z=1的平面也称为归一化平面
归一化坐标左乘内参就得到了像素坐标,故像素坐标[u,v]看成对归一化平面上的点进行量化测量的结果