特征点法的缺点:

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

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

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

优化的方法:

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

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

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

  • 第一种仍然使用特征点,只是把匹配描述子替换成了光流跟踪,估计相机运动时仍使用对极几何、PnP或ICP算法。而后两个方法中,根据图像的像素灰度信息来计算相机运动,成为直接法。
  • 不使用特征匹配的思路:
    • 通过其他方式寻找配对点:光流
    • 不需要配对点:直接法

特征点法:根据特征点在相机中的投影位置,通过最小化重投影误差来优化相机运动。在这个过程中,我们需要精确的知道空间点在两个相机中投影的像素位置,因此我们需要对特征进行匹配或跟踪。而计算、匹配特征需要付出大量的计算量

直接法:我们并不需要知道点与点之间的对应关系,而是通过最小化是光度误差来求得。

直接法根据像素的亮度信息,估计相机的运动,可以完全不用计算关键点和描述子,避免了特征点的计算时间,也避免了特征缺失的情况。只要场景中存在明暗变化就可以工作。根据使用像素的数量,直接法分为稀疏、稠密和半稠密三种。相比特征点法只能重构稀疏特征点,直接法还具有恢复稠密或半稠密结构的能力。

1. 光流法

直接法是从光流演变而来。光流描述了像素在图像中的运动,而直接法则附带着一个相机运动模型。

光流是一种描述像素随着时间,在图像之间运动的方法。

计算部分像素运动的成为稀疏光流,计算所有像素的称为稠密光流。

光流:追踪源图像某个点在其他图像中的运动
• 一般分为稀疏光流和稠密光流
• 稀疏以Lucas-Kanade(LK)光流为代表
• 稠密以Horn–Schunck(HS)光流为代表
• 本质上是估计像素在不同时刻图像中的运动

Lucas-Kanade光流(稀疏光流),LK光流。

LK光流

设 t 时刻位于 x,y 处像素点的灰度值为
• 在 t+dt 时刻,该像素运动到了
• 希望计算运动 dx, dy
• 灰度不变假设:

同一个空间点的像素灰度值,在各个图像中是固定不变的。
• 注意:灰度不变是一种理想的假设,实际当中由于高光/阴影/材质/曝光等不同,很可能不成立。

假设某一个窗口内的像素具有相同的运动。

注解:
• 可以看成最小化像素误差的非线性优化
• 每次使用了Taylor一阶近似,在离优化点较远时效果不佳,往往需要迭代多次
• 运动较大时要使用金字塔
• 可以用于跟踪图像中的稀疏关键点的运动轨迹
• 得到配对点后,后续计算与特征法VO中相同
• 按方法可分为正向/反向+平移/组合的方式,具体在习题中介绍

沿着边缘移动时特征块的内容基本不变。LK光流跟踪能够直接得到特征点的对应关系(描述子的匹配),但实际中大多数时候只会碰到特征点跟丢的情况,而不太会遇到误匹配,光流相对于描述子的优势。

匹配描述子的方法在相机运动较大时仍能成功,而光流必须要求相机运动是微小的,光流的鲁棒性必描述子差一些。

光流法可以加速基于特征点的视觉里程计算法,避免计算和匹配描述子的过程,但要求相机运动较慢(或采集频率较高)。

2. 直接法

光流仅估计了像素间的平移,但
• 没有用到相机本身的几何结构
• 没有考虑到相机的旋转和图像的缩放
• 对于边界上的点,光流不好追踪
• 直接法则考虑了这些信息

为了估计相机的运动,建立最小化问题

光度误差:P的两个像素投影的亮度误差 

待估计的量为相机运动X,我们关心误差相对于相机的导数

直接法的雅可比项有一个图像梯度因子。因此,在图像梯度不明显的地方,对相机运动估计的贡献就小。
根据使用的图像信息不同,可分为:
• 稀疏直接法:只处理稀疏角点或关键点
• 稠密直接法:使用所有像素
• 半稠密直接法:使用部分梯度明显的像素

直接法的直观解释

• 像素灰度引导着优化的方向
• 要使优化成立,必须保证从初始估计到最优估计中间的梯度一直下降
• 这很容易受到图像非凸性的影响(可部分地由金字塔减轻)

优缺点小结

优势
• 省略特征提取的时间。省去计算特征点、描述子的时间
• 只需有像素梯度而不必是角点(对白墙等地方有较好效果)。可在特征缺失的场合下使用。
• 可稠密或半稠密。
劣势
• 灰度不变难以满足(易受曝光和模糊影响)。目前的直接法开始使用更细致的光度模型标定相机,以便在曝光时间变化时也能让直接法工作。
• 单像素区分性差。要么计算图像块,要么计算复杂的相关性。
• 图像非凸性。完全依靠梯度搜索,降低目标函数来计算相机位姿。优化算法容易进入绩效,只在运动很小时直接法才成功。

【视觉SLAM十四讲】第八讲 光流法与直接法相关推荐

  1. 视觉SLAM总结——视觉SLAM十四讲笔记整理

    视觉SLAM总结--视觉SLAM十四讲笔记整理 说明 基础知识点 1. 特征提取.特征匹配 (1)Harris (2)SIFT (3)SUFT (4)ORB (5)特征匹配 2. 2D-2D:对极约束 ...

  2. 视觉SLAM十四讲学习笔记-第七讲-视觉里程计-对极几何和对极约束、本质矩阵、基础矩阵

    专栏系列文章如下:  专栏汇总 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLA ...

  3. 高翔视觉SLAM十四讲(第二版)各种软件、库安装的以及报错解决方法

    目录 前言 系统版本 下载高翔视觉SLAM十四讲第二版的源代码 一.安装 Vim 二.安装 g++ 三.安装 KDevelop 以及汉化 1.安装 2.汉化 四.安装 Eigen 库 五.安装 Pan ...

  4. 【视觉SLAM入门】一些关于视觉SLAM十四讲的重要基础概念

    文章目录 高翔. *视觉SLAM十四讲 从理论到实践*. 电子工业出版社, 2017. Print. 第二章:初识SLAM 第三章:三维空间刚体运动 第四章:李群与李代数 第五章:相机与图像 第六章: ...

  5. 视觉SLAM十四讲 报错 Could not find a configuration file for package “OpenCV“ that is compatible with reques

    视觉SLAM十四讲 报错 Could not find a configuration file for package "OpenCV" that is compatible w ...

  6. 视觉 SLAM 十四讲 —— 第十三讲 建图

    视觉 SLAM 十四讲 -- 第十三讲 建图 在前端和后端中,我们重点关注同时估计相机运动轨迹与特征点空间位置的问题.然而,在实际使用 SLAM 时,除了对相机本体进行定位之外,还存在许多其他的需求. ...

  7. 视觉SLAM十四讲笔记-7-2

    视觉SLAM十四讲笔记-7-2 文章目录 视觉SLAM十四讲笔记-7-2 估计相机运动 7.3 2D-2D:对极几何 7.3.1 对极约束 7.3.2 本质矩阵 7.3.3 单应矩阵 7.4 实践:对 ...

  8. 视觉SLAM十四讲学习笔记-第七讲-视觉里程计-PnP和实践

      专栏汇总 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记- ...

  9. 视觉SLAM十四讲——ch7

    视觉SLAM十四讲--ch7 ch7视觉里程计 本章目标: 1.理解图像特征点的意义,并掌握在单副图像中提取出特征点及多副图像中匹配特征点的方法 2.理解对极几何的原理,利用对极几何的约束,恢复出图像 ...

  10. 半闲居士视觉SLAM十四讲笔记(1)前言

    本系列文章由 youngpan1101 出品,转载请注明出处. 文章链接: http://blog.csdn.net/youngpan1101/article/details/70193823 作者: ...

最新文章

  1. Linux下安装JDK和Eclipse
  2. iOS 清除未使用图标
  3. App项目内存优化计划
  4. 以下python语言关键字在异常处理_【单选题】以下 Python 语言关键字在异常处理结构中用来捕获特定类型异常的选项是: ( )...
  5. linux ip 访问记录,linux 精确记录用户IP以及用户操作命令
  6. POJ1256 (C++ compare函数)
  7. 想学web前端啊?初学者必看,HTML入门指南
  8. 随想录(最简单的windows图形编程之Easyx)
  9. 华为机试HJ17:坐标移动
  10. [转] Scala Try 与错误处理
  11. 三菱Q PLC解密 用户名功能块FB破解
  12. Local-DPP论文阅读笔记
  13. WiFi相关知识介绍
  14. 【金融人士工具大全】整理不易,且珍惜
  15. unity 摄像头跟着鼠标移动_lwj_unity_模拟第一人称摄像机前后左右移动、摄像机随鼠标移动旋转、鼠标点击添加物体...
  16. 驱动精灵等软件卸载后剩余文件的删除
  17. 《全数据时代的炼金师》读书笔记(一)
  18. fastdfs 沧海一粟
  19. MySQL 数据库定时备份
  20. 关于人脸识别技术的调研报告

热门文章

  1. LInux sed命令详解
  2. 探寻软件的永恒之道 ——评介《建筑的永恒之道》 - 撰文/透明
  3. Java中使用es条件构造器BoolQueryBuilder
  4. Leetcode 685. 冗余连接 II Redundant Connection II
  5. seafile-搭建自己的私有云盘
  6. android tv tts,android触摸语音事件
  7. 云扩科技获ISIG RPA 产品奖
  8. C语言知识-零零散散(四)
  9. 重磅!阿里版本【ChatGPT】开放测评!
  10. 大三第十一周学习笔记