直接法(摘抄于高翔博士的《视觉SLAM十四讲》)

8.4.1直接法的推导

如图8-3所示,

考虑某个空间点P和两个时刻的相机。P的世界坐标为[XYZ],它在两个相机上成像,记非齐次像素坐标为。我们的目标是求第一个相机到第二个相机的相对位姿变换。我们以第一个相机为参照系,设第二个相机旋转和平移为Rt(对应李代数为ξ )。同时,两相机的内参相同,记为K。为清楚起见,我们列写完整的投影方程:

其中P的深度,P在第二个相机坐标系下的深度,也就是RP+t的第三个坐标值。由于只能和齐次坐标相乘,所以我们乘完之后要取出前三个元素。这和上一讲以及相机模型部分的内容是一致的。

回忆特征点法中,由于我们通过匹配描述子,知道了的像素位置,所以可以计算重投影的位置。但在直接法中,由于没有特征匹配,我们无从知道哪一个对应着同一个点。直接法的思路是根据当前相机的位姿估计值,来寻找的位置。但若相机位姿不够好,的外观和会有明显差别。于是,为了减小这个差别,我们优化相机的位姿,来寻找与更相似的。这同样可以通过解一个优化问题,但此时最小化的不是重投影误差,而是光度误差(Photometric Error),也就是P的两个像的亮度误差:

注意这里e是一个标量,所以没有加粗。同样的,优化目标为该误差的二范数,暂时取不加权的形式,为:

能够做这种优化的理由,仍是基于灰度不变假设。在直接法中,我们假设一个空间点在各个视角下,成像的灰度是不变的。我们有许多个(比如N个)空间点,那么,整个相机位姿估计问题变为:

注意这里的优化变量是相机位姿ξ 。为了求解这个优化问题,我们关心误差e是如何随着相机位姿变化的,需要分析它们的导数关系。因此,使用李代数上的扰动模型。我们给exp⁡(ξ) 左乘一个小扰动exp⁡(δξ) ,得:

类似于上一章,记

这里的qP在扰动之后,位于第二个相机坐标系下的坐标,而u为它的像素坐标。利用一阶泰勒展开,有:

我们看到,一阶导数由于链式法则分成了三项,而这三项都是容易计算的:

1.u 处的像素梯度;

2. 为投影方程关于相机坐标系下的三维点的导数。记,根据上一节的推导,导数为:

3. 为变换后的三维点对变换的导数,这在李代数章节已经介绍过了:

在实践中,由于后两项只与三维点q有关,而与图像无关,我们经常把它合并在一起:

这个2×6的矩阵在上一讲中也出现过。于是,我们推导了误差相对于李代数的雅可比矩阵:

对于N个点的问题,我们可以用这种方法计算优化问题的雅可比,然后使用G-N或L-M计算增量,迭代求解。至此,我们推导了直接法估计相机位姿的整个流程,下面我们通过程序来演示一下直接法是如何使用的。

8.4.2直接法的讨论

在我们上面的推导中,P是一个已知位置的空间点,它是怎么来的呢?在RGB-D相机下,我们可以把任意像素反投影到三维空间,然后投影到下一个图像中。如果在单目相机中,这件事情要更为困难,因为我们还需考虑由P的深度带来的不确定性。现在我们先来考虑简单的情况,即P深度已知的情况。

根据P的来源,我们可以把直接法进行分类:

1. P来自于稀疏关键点,我们称之为稀疏直接法。通常我们使用数百个至上千个关键点,并且像L-K光流那样,假设它周围像素也是不变的。这种稀疏直接法不必计算描述子,并且只使用数百个像素,因此速度最快,但只能计算稀疏的重构。

2. P来自部分像素。我们看到式(8.16)中,如果像素梯度为零,整一项雅可比就为零,不会对计算运动增量有任何贡献。因此,可以考虑只使用带有梯度的像素点,舍弃像素梯度不明显的地方。这称之为半稠密(Semi-Dense)的直接法,可以重构一个半稠密结构。

3. P为所有像素,称为稠密直接法。稠密重构需要计算所有像素(一般几十万至几百万个),因此多数不能在现有的CPU上实时计算,需要GPU的加速。但是,如前面所讨论的,梯度不明显的点,在运动估计中不会有太大贡献,在重构时也会难以估计位置。

可以看到,从稀疏到稠密重构,都可以用直接法来计算。它们的计算量是逐渐增长的。稀疏方法可以快速地求解相机位姿,而稠密方法可以建立完整地图。具体使用哪种方法,需要视机器人的应用环境而定。特别地,在低端的计算平台上,稀疏直接法可以做到非常快速的效果,适用于实时性较高且计算资源有限的场合。

视觉SLAM--直接法相关推荐

  1. 视觉SLAM直接法与特征法及其在多传感融合中的思考

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 本文由知乎作者Welson WEN授权转载,不得擅自二次转载. 原文链接:https://zhuanl ...

  2. SVO: 视觉SLAM中特征点法与直接法结合

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 前面的话 VSLAM 是利用多视图几何理论,根据相机拍摄的图像信息 ...

  3. SLAM | 视觉SLAM中特征点法与直接法结合:SVO

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 前面的话 VSLAM 是利用多视图几何理论,根据相机拍摄的图像信息对相机进行定位并同时构建周围环境地图 ...

  4. 视觉SLAM——特征点法与直接法对比以及主流开源方案对比 LSD SVO ORB DSO

    前言 单目视觉SLAM可以根据其前端视觉里程计或是后端优化的具体实现算法进行分类:前端可以分为特征点法与直接法,后端可以分为基于滤波器和基于非线性优化.其中在后端上目前已经公认基于非线性优化的方法在同 ...

  5. 视觉SLAM——特征点法与直接法对比以及主流开源方案对比 ORB LSD SVO DSO

    前言 单目视觉SLAM可以根据其前端视觉里程计或是后端优化的具体实现算法进行分类:前端可以分为特征点法与直接法,后端可以分为基于滤波器和基于非线性优化.其中在后端上目前已经公认基于非线性优化的方法在同 ...

  6. 视觉SLAM技术应用

    视觉SLAM技术应用 · SLAM技术背景 SLAM技术全称Simultaneous localization and mapping,中文为"同时定位与地图构建".SLAM可以在 ...

  7. 视觉SLAM前端特征检测与跟踪的思考

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 就目前视觉SLAM的引用来区分,分为基于特征法的和直接法的视觉SL ...

  8. SLAM综述:激光雷达与视觉SLAM

    第一节概述. 第二节讲述激光SLAM:激光传感器,开源系统,深度学习的应用. 第三节讲述视觉SLAM:相机传感器,开源系统,视觉惯性里程计,深度学习的应用. 第四节讲述激光雷达与视觉的融合. 最后展望 ...

  9. 转:SLAM算法解析:抓住视觉SLAM难点,了解技术发展大趋势

    SLAM(Simultaneous Localization and Mapping)是业界公认视觉领域空间定位技术的前沿方向,中文译名为"同步定位与地图构建",它主要用于解决机器 ...

  10. 视觉SLAM总结——LSD SLAM中关键知识点总结

    视觉SLAM总结--LSD SLAM中关键知识点总结 视觉SLAM总结--LSD SLAM中关键知识点总结 1. LSD SLAM的创新点/关键点是什么? 2. LSD SLAM的整体框架是怎样的? ...

最新文章

  1. 利用ACS实现AAA认证
  2. Hihocoder 小Hi小Ho扫雷作死一二三
  3. Linux版本JDK1.8下载与安装
  4. JQuery------实现鼠标摁下抬起时div背景色改变
  5. Android 多屏幕适配 dp和px的关系
  6. 简单介绍如何用Reporting Service制作报表
  7. 编程简单的计算机,计算机简单编程示例
  8. 使用 pyecharts 以及matplotlib分析猫眼哪吒影评
  9. 面试记录五:腾讯后台研发
  10. 瞻博网络Contrail多云解决方案荣获最佳创新解决方案奖
  11. 毕业论文文献综述写作技巧,超级详细!
  12. html分行分列代码,表格内如何强制换行 选中单元格后,点击数据中的分列
  13. muma很可能在陪你玩游戏
  14. 次佛锅_上海理工大学2022天梯选拔
  15. 点乘叉乘坐标公式_向量的点乘与叉乘应用
  16. 图表绘制与处理的常用软件
  17. java 中long型数据的对比
  18. 叠加原理--戴维南等效电路--第四篇
  19. wandb使用方法以及具体设置
  20. Windows平台,在Python上安装Shogun

热门文章

  1. 光学分频器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  2. IText实现对PDF文档属性的基本设置
  3. LTE-A载波聚合技术(14)---PHICH
  4. 基于搜狗微信的爬虫知识总结
  5. css多行文本溢出显示省略号
  6. 蓝桥杯试题:Fibonacci数列
  7. Javascript事件绑定的几种方式
  8. win10 打开控制面板 和 启用 Telnet 的方法
  9. win7计算机启动修复,win7启动修复功能无法正常进入系统的解决方法
  10. qute图(女生勿进