相机模型(针孔模型+畸变模型)

目录

  • 1 相机模型
    • 1.1 针孔模型
    • 1.2 畸变模型
  • 1.2.1 径向畸变
  • 1.2.2 切向畸变
  • 1.3 去畸变
  • 1.4 单目相机成像小结
  • 2 非常感谢您的阅读!
  • 3 期待您加入

1 相机模型

1.1 针孔模型

相机将三维世界中的坐标点(单位为米)映射到二维图像平面(单位为像素)的过程能够用一个几何模型进行描述,这个几何模型就是所谓的相机模型。模型有很多种,其中一种最简单有效的模型称为针孔模型。它描述了一束光线通过针孔之后,在针孔背面投影成像的关系。同时,由于相机镜头上的透镜的存在,会使得光线投影到成像平面的过程中会产生畸变

所以整个相机成像过程可以用针孔和畸变两个模型来描述

相机模型(针孔模型+畸变模型)_第1张图片

上面就是简单的针孔相机模型,图中只涉及了像素坐标系和相机坐标系两个

在相机中,我们最终获得的是一个个的像素信息,这需要在成像平面上对像进行采样和量化。像素坐标系通常的定义方式是:原点 o′ 位于图像的左上角,u 轴向右与 x 轴平行,v轴向下与 y 轴平行。像素坐标系与成像平面之间,相差了一个缩放和一个原点的平移。这个过程是通过相机内参造成的。

相机坐标系的点P投影到像素坐标系中的P′过程写成矩阵形式:
相机模型(针孔模型+畸变模型)_第2张图片
相应的,相机也会有外参。由于相机在运动,所以 P 的相机坐标应该是它的世界坐标(记为 Pw),根据相机的当前位姿,变换到相机坐标系下的结果。相机的位姿就是由前面一直讨论的欧式变换矩阵来表示。
相机模型(针孔模型+畸变模型)_第3张图片
按着上式从右向左看,实现了世界坐标系下的点经过相机外参T投影到相机坐标系,然后再经过相机内参K投影到像素坐标系。
注意:内参是不变的我们可以提前标定,而外参会随着相机运动发生改变,同时也是 SLAM中待估计的目标,代表着机器人的轨迹。

在SLAM算法中,经常用到的是世界点相机归一化平面上的坐标值。那么这个归一化平面到底是什么呢
相机模型(针孔模型+畸变模型)_第4张图片
从上图可以看到归一化相机平面其实就是将世界点投影到相机系之后将其相机系下的深度置为1,这时 Pc 可以看成一个二维的齐次坐标,称为归一化坐标
相机模型(针孔模型+畸变模型)_第5张图片

1.2 畸变模型

为了获得好的成像效果,我们在相机的前方加了透镜。透镜的加入对成像过程中光线传播会产生新的影响:

①是透镜自身的形状对光线传播的影响,
②是在机械组装过程中,透镜和成像平面不可能完全平行

这些都会使得光线穿过透镜投影到成像面时的位置发生变化

1.2.1 径向畸变

由透镜形状引起的畸变称之为径向畸变。在实际拍摄的照片中,摄像机的透镜往往使得真实环境中的一条直线在图片中变成了曲线。越靠近图像的边缘,这种现象越明显。由于实际加工制作的透镜往往是中心对称的,这使得不规则的畸变通常径向对称。主要分为两大类,桶形畸变枕形畸变
相机模型(针孔模型+畸变模型)_第6张图片

1.2.2 切向畸变

在相机的组装过程中由于不能使得透镜和成像面严格平行也会引入切向畸变。
相机模型(针孔模型+畸变模型)_第7张图片
由于上述两种畸变的存在使得我们的成像位置发生了偏移,所以需要进行图像矫正,也就是去畸变

1.3 去畸变

对于径向畸变,去畸变公式为:
相机模型(针孔模型+畸变模型)_第8张图片
对于切向畸变,去畸变公式为:
相机模型(针孔模型+畸变模型)_第9张图片
非常值得注意的是:畸变是发生在世界点通过透镜投影到相机坐标系这个过程中的,所以去畸变操作是在相机坐标系下进行的,由于我们经常把世界点投影到归一化相机平面,所以我们在归一化相机平面上对图像去畸变!

因此,我们可以联合径向畸变和切向畸变的矫正模型,对于相机坐标系中的一点 P(X, Y, Z),通过五个畸变系数找到这个点在像素平面上的正确位置。

相机模型(针孔模型+畸变模型)_第10张图片
将纠正后的点通过内参数矩阵投影到像素平面,得到该点在图像上的正确位置。
相机模型(针孔模型+畸变模型)_第11张图片

1.4 单目相机成像小结

①首先,世界坐标系下有一个固定的点 P,世界坐标为 Pw;
②由于相机在运动,它的运动由 R, t 或变换矩阵 T ∈ SE(3) 描述。P 的相机坐标为:P˜c = RPw + t。
③这时的 P˜c 仍有 X, Y, Z 三个量,把它们投影到归一化平面 Z = 1 上,得到 P 的归一化相机坐标:Pc = [X/Z, Y /Z, 1]T;
④对归一化平面上的投影点进行径向畸变和切向畸变纠正;
⑤最后,P 的归一化坐标经过内参后,对应到它的像素坐标:Puv = KPc。

2 非常感谢您的阅读!

有关相机标定的,可以看这篇博文。

视觉成像和位姿表示已经学完,接下来就可以真正进入视觉SLAM算法部分的学习了!

3 期待您加入

也非常期待您能关注我的微信公众号–“过千帆”,里面不仅有技术文章还有我的读书分享,希望您在那里也有收获。我们一起进步。

你可能感兴趣的:(视觉SLAM基础,人工智能,opencv)