SLAM——视觉里程计

视觉SLAM 主要分为视觉前端和优化后端。前端也称为视觉里程计(VO)。它根据相邻图像的信息,估计出粗略的相机运动,给后端提供较好的初始值。VO 的主要问题是如何根据图像来估计相机运动。VO 的实现方法,按是否需要提取特征,分为特征点法的前端以及不提特征的直接法前端。

首先,从图像中选取比较有代表性的点。这些点在相机视角发生少量变化后会保持不变,所以我们会在各个图像中找到相同的点。然后,在这些点的基础上,讨论相机位姿估计问题,以及这些点的定位问题。

特征点由关键点(Key-point)和描述子(Descriptor)两部分组成。关键点是指该特征点在图像里的位置,有些特征点还具有朝向、大小等信息。描述子通常是一个向量,按照某种人为设计的方式,描述了该关键点周围像素的信息。描述子是按照“外观
相似的特征应该有相似的描述子”的原则设计的。

ORB 特征由关键点和描述子两部分组成。它的关键点称为“Oriented FAST”,是一种改进的FAST 角点。它的描述子称为BRIEF(Binary Robust Independent Elementary Features)。因此,提取ORB 特征分为两个步骤:
1. FAST 角点提取:找出图像中的” 角点”。相较于原版的FAST, ORB 中计算了特征点的主方向,为后续的BRIEF 描述子增加了旋转不变特性。
2. BRIEF 描述子:对前一步提取出特征点的周围图像区域进行描述。

 

(质心是指以图像块灰度值作为权重的中心。)

特征匹配是视觉SLAM 中极为关键的一步,解决了SLAM 中的数据关联问题(data association),即确定当前看到的路标与之前看到的路标之间的对应关系。

描述子距离表示了两个特征之间的相似程度,在实际运用中还可以取不同的距离度量范数。对于浮点类型的描述子,使用欧氏距离进行度量即可。而对于二进制的描述子(比如BRIEF 这样的),我们往往使用汉明距离(Hamming distance)做为度量——两个二进制串之间的汉明距离,指的是它们不同位数的个数。

接下来,我们希望根据匹配的点对,估计相机的运动。这里由于相机的原理不同,情况发生了变化:

1. 当相机为单目时,我们只知道2D 的像素坐标,因而问题是根据两组2D 点估计运动。该问题用对极几何来解决。
2. 当相机为双目、RGB-D 时,或者我们通过某种方法得到了距离信息,那问题就是根据两组3D 点估计运动。该问题通常用ICP 来解决。
3. 如果我们有3D 点和它们在相机的投影位置,也能估计相机的运动。该问题通过PnP求解。

对极约束:几何意义——O1; P;O2 三者共面。对极约束中同时包含了平移和旋转。把中间部分记作两个矩阵:基础矩阵(Fundamental Matrix)F 和本质矩阵(Essential Matrix)E,本质矩阵E = t^R(旋转R和平移t的外积,叉乘)。由于平移和旋转各有三个自由度,故t^R 共有六个自由度。但由于尺度等价性,故E实际上有五个自由度。

SLAM——视觉里程计_第1张图片

 单应矩阵(Homography)H 描述了两个平面之间的映射关系。若场景中的特征点都落在同一平面上(比如墙,地面等),则可以通过单应性来进行运动估计。p2 = Hp1。它的定义与旋转、平移以及平面的参数有关。(听说找工作面试时有被问到单应矩阵的相关问题)。

 

 

你可能感兴趣的:(SLAM)