视觉SLAM十四讲学习笔记(五)相机模型
一、针孔相机模型
针孔相机模型可用下图表示
其中涉及到相机坐标系、图像坐标系、物理呈像坐标系。经过三角形相似等推导(针孔相机成像平面和三维空间点放在同一侧),可得
其中、
,
和
表示每米有多少像素,单位pixel/m,f为焦距。
和
表示定义像素坐标系时,原点的像素平移距离。
从上述公式中,在有Z坐标的情况下,也可得到从像素平面到相机坐标系的转换。
一般将点转换为归一化相机坐标系比较方便。
二、镜头畸变
畸变主要分为两种。
1、由镜头自身的形状引起的畸变:径向畸变
主要分为桶形畸变和枕形畸变
2、由镜头和成像平面不可能完全平行造成的畸变:切向畸变
径向畸变矫正:
其中是未矫正的点的坐标,
是矫正之后的点的坐标,他们都定义于归一化坐标平面,
表示点与坐标系原点之间的距离。对于一般镜头,只使用
和
两个参数就好,对于畸变较大的镜头,应该加入
.
切向畸变矫正
于是,对于一点转换到像素平面的过程可表示为
- 将三维点投影到归一化图像平面,设它的归一化坐标为[x,y]
- 对归一化平面上的点进行径向畸变和切向畸变矫正
- 将矫正后的点通过内参矩阵投影到像素平面,得到改点的正确位置
在实际使用过程中可灵活选取参数的使用个数。
三、双目相机和深度相机
最简单的双目相机模型可用下图表示
通过三角形相似关系有
其中d称为视差(disparity),最小为1个像素,因此双目测量距离有最大值fb。
深度相机常见有结构光法和飞行时间法两种。各有不同的优劣点。
关于双目相机和深度相机更加详细的介绍,可以看下面三篇很详细的博客。
深度相机原理揭秘--双目立体视觉:https://blog.****.net/electech6/article/details/78526800
深度相机原理揭秘--结构光:https://blog.****.net/electech6/article/details/78707839
深度相机原理揭秘--飞行时间:https://blog.****.net/electech6/article/details/78349107
关于各种类型相机优劣对比,可见:https://blog.****.net/qq_37764129/article/details/81011221
四、实践
1、图像的存储方式以及openCV读取图像的方式,比较简单。
2、PCL点云库:根据每张图像对应的pose,将点云显示出来,比较简单易懂。
3、手写图像的去畸变:注意图像坐标的赋值。
4、双目视差:视差图转换为深度图。