lsd-slam源码解读第三篇:算法解析

本文详细解读了LSD-SLAM算法的跟踪、深度图估计和地图优化三个核心模块。在跟踪阶段,通过优化误差方程确定相机位姿;深度图估计涉及新深度估计、前向传播和正则化;地图优化解决单目SLAM的尺度漂移问题,通过全局优化确保地图准确性。

lsd-slam源码解读第三篇:算法解析

标签: lsd-slam

我希望朋友们看着篇博客的时候已经看过我写的第二篇:lsd-slam源码解读第二篇:DataStructures
与此同时对代码已经有一定的了解,如果有朋友还未下载到源码,请看我的第一篇:http://blog.csdn.net/lancelot_vim/article/details/51706832


当你对Frame有一定的了解后,自然希望知道这个算法是如何构建的(所谓程序=数据结构+算法)
需要先了解整个slam是如何运作的

Overview over the complete LSD-SLAM algorithm

我直接把论文中的图片截了过来,实际上整个过程分为三大模块,第一个模块是Tracking,第二个模块是Depth Map Estimation, 第三个模块是Map Optimization,这三个过程分别位于论文的3.3,3.4和3下的其他部分(实际上Optimization可以说是整个算法的核心部分)

Tracking

回想之前写过的数据结构Frame,里面包含了图像,深度和深度方差,即
KeyFrame
式中下标i表示关键帧的id,I表示从图像向一个实数的映射,D表示深度图到正实数的映射,V表示深度的方差到正实数的映射(注意这里的深度都是逆深度,简单称呼成深度)

当一个新的图像(或者说新的观测)输入时,认为它与关键帧之间有个se(3)的变换关系,这个变换关系我们需要根据关键帧和当前图像的数据优化得到,优化方程为
优化
映射
范数

这似乎看起来是比较抽象的几个方程,实际上可以简单地理解把r理解为图像误差,sigma理解为不确定度,w表示从图像向keyFrame的一个映射(先映射之后,发现可能对应点没有重合,出现误差),最后是误差的衡量边准,E是总的误差。
最后实际上我们就通过优化E,算出当前观测到的图像到关键帧的变换,从而得到当前的位置姿态信息


Depth Map Estimation

tracking成功之后,就进入深度估计过程,首先是判断,是不是新建关键帧,论文中如此写道:

If the camera moves too far away from the existing map, a new keyframe is created from the most recent tracked image.

就是说关键帧的创建是根据相机移动来判断的,如果相机移动了足够远,那么就重新创建一个关键帧,否则就refine当前的关键帧
事实上,这个过程有一整套很复杂的过程,在论文Semi-Dense Visual Odometry for a Monocular Camera

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值