十四讲——第8讲.视觉里程计 2 消化笔记(1):直接法的意义

1. 首先是采用特征点法面临的一些问题

依旧引用书中的原文:

1.关键点的提取与描述子的计算非常耗时。实践当中,SIFT目前在CPU上是无法实时计算的,而ORB也需要近20ms的计算。如果整个SLAM以30毫秒/帧的速度运行,那么一大半时间都将花在计算特征点上。

受限于硬件规格导致SIFT无法实现实时计算,其实我更想知道,对于什么级别的硬件规格,这种方法的实时性有多差呢?我觉得有必要亲手去尝试一下

2.使用特征点时,忽略了除特征点以外的所有信息。一幅图像有几十万个像素,而特征点只有几百个。只使用特征点丢弃了大部分可能有用的图像信息。

3.相机有时会运动到 特征缺失 的地方,这些地方往往没有明显的纹理信息。例如,有时我们会面对一堵白墙,或者一个空荡荡的走廊。这些场景下特征点数量会明显减少,我们可能找不到足够的匹配点来计算相机运动。

2. 其次来看解决这些问题的思路

对于解决问题的思路,主要是对三部分的取舍构成。即:特征点,关键点,描述子。

1.保留特征点,但只计算关键点,不计算描述子。同时,使用光流法 (OpticalFlow)来跟踪特征点的运动。这样可以回避计算和匹配描述子带来的时间,但光流本身的计算需要一定时间。

↑第1种:特征点/关键点/描述子:仍然使用特征点,只是把匹配描述子替换成了光流跟踪,仍然使用对极几何、PnP、ICP等方法。

2.只计算关键点,不计算描述子。同时,使用直接法(Direct Method)来计算特征点在下一时刻图像中的位置。这同样可以跳过描述子的计算过程,而且直接法的计算更加简单。

↑第2种:特征点/关键点/描述子

3.既不计算关键点,也不计算描述子,而是根据像素灰度的差异,直接计算相机运动。

↑第3种:特征点/关键点/描述子

对于后两种方法,由于放弃了对特征点的使用,主要根据图像的像素灰度信息来对估算相机运动,都可以称之为直接法

3.相关分析
特征点法:

把特征点看做固定在三维空间不动的点,根据投影关系,利用最小化重投影误差,优化求解的方式计算相机 运动。但是在这一过程中,需要精确知道空间点在两位姿下的像素位置,连续的捕、提取、跟踪,导致计算量的大幅提升。特征点法只能构建稀疏地图。

直接法:

并不需要知道点与点之间的对应关系,而通过最小化光度误差来求解。避免了特征的计算时间、特征丢失等缺点。只要场景中存在明暗变化,直接法就能工作。并实现稠密、半稠密、稀疏三种方法。同时,直接法还具有恢复稠密或半稠密结构的能力。

你可能感兴趣的:(SLAM)