总结与分享一下自己学习到的关于这方面的知识。
相机将三维世界中的坐标点映射到二维图像平面的过程能够用一个几何模型来描述。这个几何模型有很多种。其中最简单最有效的模型是针孔模型。同时相机中由于镜头的存在,光线投影到成像平面会发生畸变。因此我们用针孔和畸变两个模型来描述整个投影过程。但我们应该认识到:实际相机的物理特性很可能没办法通过上述两个模型得到完全的拟合,每一次相机标定仅仅只是对物理相机模型的一次近似,再具体一点来说,每一次标定仅仅是对相机物理模型在采样空间范围内的一次近似。
1 针孔模型
在初中物理课堂上,大家应该都见过这样一个实验:在一个暗箱的前方放着一个点燃的蜡烛,蜡烛的光透过暗箱上的一个小孔投影在暗箱的后方平面上,并且在这个平面上形成一个倒立的蜡烛图像。针孔模型将三维世界中的蜡烛投影到一个二维成像平面。我们可以用这个模型来简单描述相机成像过程。
相机的成像过程涉及到四个坐标系:世界坐标系、相机坐标系、归一化相机坐标系、像素坐标系以及这四个坐标系的转换。
设O-xyz为相机坐标系。习惯上让z轴指向相机前方,x向右,y向下,o为相机的光心,也是针孔模型当中的针孔。三维世界中的一点p经过小孔o投影后,落在物理成像平面O'-x'y'z'上,设p坐标为[X,Y,Z]T,p'为[X',Y',Z']T,这两个坐标都是在相机坐标系下的坐标。我们设物理成像平面到小孔的距离为焦距f(实际中成像平面是安装在焦距f的附近的)。根据三角形相似的关系有
负号表示成像是倒立的。为简化模型,我们将成像平面对称到相机前方,如下图所示,这可以把负号去掉。
归一化成像平面之后会涉及
整理公式得:
(1)
从小孔成像的原理上讲应该成的是倒像,我们这种处理方式仅仅是从数学手段上对其进行简化。在不引起歧义的方式下,我们称后一种情况也为针孔模型。
我们设在物理成像平面上固定着一个像素平面坐标系O-uv,设p'的像素坐标为:[u,v]T
像素坐标系定义:原点O位于图像的左上角,u轴向右与x轴平行,v轴向下与y轴平行。
像素坐标系与成像平面之间相差一个缩放和一个原点的平移。设像素坐标在u轴上缩放了α倍,在v轴上缩放了β倍。同时原点平移了[Cx,Cy]T,呢么P'的坐标和它的像素坐标之间的关系为:
u=αX'+Cx
v=βY'+Cy (2)
带入(1)式,将αf合并成fx,将βf合并成fy,得
关于v的公式的右边Cx应改为Cy。
关于公式中每个字母的单位问题:f的单位是像素,α,β的单位是像素/米,所以fx和fy的单位是像素
对于(3)式,我们可以用齐次坐标表示
习惯上将z挪到左侧
其中K就是内参数矩阵(camera intrinsics)。
上面所有的式子中的P的坐标都是它的世界坐标(记为Pw),根据当前相机的位姿变换到相机坐标系下的结果。相机的位姿由旋转矩阵R和平移向量t来描述。
(6)式隐含着齐次坐标到非齐次的转换。TPw表示吧世界坐标系下的齐次坐标转换到相机坐标系下。而K是一个
3x3的矩阵。若要两者相乘,需取TPw的前三维向量--最后一维是1。对于这个三维向量,可以按照齐次坐标的形式,把最后一维归一化处理。得到P在相机归一化平面上的投影
相机的归一化平面在相机的正前方z=1的位置。
由于p经过相机内参相乘之后,得到它的像素坐标,所以我们可以把像素坐标[u,v]T看成是对归一化平面上的点测量的结果。
2 相机畸变
相机的前方都会加入透镜,而透镜会对光线的传播产生影响:一是透镜的形状对光线的传播有影响;二是组装过程中,透镜和成像平面不可能完全平行。这两个原因都会使光线穿过透镜投影到成像平面时的位置发生变化。
畸变分为两大类:一类是 透镜形状引起的畸变称为径向畸变;一类是透镜和成像平面不能严格平行导致的畸变称为切向畸变。
2.1 径向畸变
这类畸变主要分为桶形畸变和枕形畸变。
桶形畸变是由于图像放大率随着与光轴之间的距离增加而减小,而枕形畸变恰好向相反。如下图所示
对于径向畸变。由于畸变都是随着与中心之间的距离增加而增加,可以用一个与距中心的距离有关的多项式函数来描述畸变前后的坐标变化:
公式右边的x,y表示未纠正的点的坐标,左边的是纠正后的坐标。注意他们都是归一化平面上的点,不是像素平面上的点。
2.2切向畸变
切向畸变的来源示意图如下:
对于这种畸变可以用下列公式进行纠正
将这两种畸变综合起来考虑,对于相机坐标系下的一点P[X,Y,Z],我们能够通过这四个公式周到这个点在像素平面上的正确位置:
1 将三维空间点投影到归一化平面上,设它的归一化坐标为[x,y]T.
2 对这个点进行径向畸变和切向畸变纠正。
3 将纠正后的点通过内参数矩阵投影到像素平面上去,得到该点在图像上的正确位置。
实际应用中,可以灵活选用这四个公式中的参数,不一定要都用上。
这篇博客还没有写完,之后还会补充一些知识!!!
参考资料:《视觉slam十四讲,从理论到实践》 高翔,张涛。