视觉SLAM笔记(40) 特征点的缺陷


1. 特征点估计相机运动的缺陷

之前介绍了使用特征点估计相机运动的方法
尽管特征点法在视觉里程计中占据主流地位,研究者们认识到它至少有以下几个缺点:

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

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

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


2. 克服使用特征点缺陷

看到使用特征点确实存在一些问题,至于克服这些缺点
有以下几种思路:

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

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

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


3. 思路分析

第一种方法仍然使用特征点,只是把匹配描述子替换成了光流跟踪
估计相机运动时仍使用对极几何、 PnP 或 ICP 算法

使用特征点法估计相机运动时,把特征点看作固定在三维空间的不动点
根据它们在相机中的投影位置,通过 最小化重投影误差(Reprojection error)来优化相机运动
在这个过程中,需要精确地知道空间点在两个相机中投影后的像素位置
这也就是为何要对特征进行匹配或跟踪的理由
同时,也知道,计算、匹配特征需要付出大量的计算量

在后两个方法中,会 根据图像的像素灰度信息 来计算相机运动,它们都称为直接法

相对的,在直接法中,并 不需要知道点与点之间之间的对应关系
而是通过 最小化光度误差(Photometric error)来求得它们


4. 直接法

它是为了克服特征点法的上述缺点而存在的
直接法 根据像素的亮度信息,估计相机的运动,可以完全不用计算关键点和描述子
于是,既避免了特征的计算时间,也避免了特征缺失的情况
只要场景中存在明暗变化(可以是渐变,不形成局部的图像梯度),直接法就能工作

根据使用像素的数量,直接法分为稀疏、稠密和半稠密三种
相比于特征点法只能重构稀疏特征点(稀疏地图),直接法还具有恢复稠密或半稠密结构的能力

历史上,虽然早期也有一些对直接法的使用
但直到 RGB-D 相机出现后,人们才发现直接法对 RGB-D 相机,进而对于单目相机,都是行之有效的方法
随着一些使用直接法的开源项目的出现(如 SVO、 LSD-SLAM 等)
它们逐渐地走上主流舞台,成为视觉里程计算法中重要的一部分


参考:

《视觉SLAM十四讲》


相关推荐:

视觉SLAM笔记(39) 求解 ICP
视觉SLAM笔记(38) 3D-3D: ICP
视觉SLAM笔记(37) 求解 PnP
视觉SLAM笔记(36) 3D-2D: PnP
视觉SLAM笔记(35) 三角化求特征点的空间位置


发布了217 篇原创文章 · 获赞 290 · 访问量 288万+

猜你喜欢

转载自blog.csdn.net/qq_32618327/article/details/102673243