![](/style/images/good.png)
![](/style/images/bad.png)
BAD SLAM | 直接法实时BA+RGBD基准数据集(CVPR2019)
source link: https://mp.weixin.qq.com/s/850K1kKgzqtccAOU7SmAgg
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
BAD SLAM | 直接法实时BA+RGBD基准数据集(CVPR2019)
点击上方“3D视觉工坊”,选择“星标”
干货第一时间送达
论文解读:BAD SLAM | 直接法实时BA+RGBD基准数据集(CVPR2019)
本文解读的论文为发表于CVPR 2019的 "Schops, Thomas, Torsten Sattler, and Marc Pollefeys. Bad slam: Bundle adjusted direct rgb-d slam. Proceedings of the IEEE conference on computer vision and pattern recognition. 2019."虽然这篇论文的主要创新是对SLAM中优化步骤中常用的Bundle Adjustment算法进行改进,本篇文章对BAD SLAM整个SLAM系统进行了介绍,对SLAM中常见的前后端架构,以及其中涉及到的每个步骤都有简单的介绍,利于读者对SLAM系统有大概的认知。这篇论文还建立了一个RGB-D SLAM的基准数据集,由于论文中提到的它相对于RGB-D SLAM领域常用数据集TUM RGB-D在硬件、评测设置等方面的优越性,该论文的数据集也是RGB-D SLAM领域研究者值得关注、使用的数据集。主要贡献- 提出一个快速的直接法的BA,用于RGB-D SLAM系统中,一个GPU就可以实现实时性能,且效果性能超过其他现有系统
- 建立并公开了一个RGB-D SLAM的基准数据集,相比以往的数据集,主要优势是数据在采集时就保障了高度同步性,且消除了卷帘快门的影响;此外还在项目官网www.eth3d.net上建立一个排行榜,保留了一部分测试数据没有公开,专门用于测试不同算法的性能
- 预处理:深度图双边滤波去噪
- 里程计:每10秒取一帧为关键帧,对每一帧首先估计它相对上一个关键帧的位姿(直接法几何对齐与光度对齐),本文的一个改进是使用RGB图像的梯度而不是像素值,目的是为了对照明变化更加鲁棒。前端里程计目的是为后续BA提供良好的初始位姿。
- 回环检测:使用标准的基于Binary feature的bag-of-words方法,找到与当前关键帧m最相似的关键帧k。通过关键点匹配得到m和k的初始相对位姿,通过直接法进行位姿估计修正。在位姿图优化步骤中,使用平均相对位姿作为初始值,然后应用本文的BA策略。
- 数据表示形式:使用稠密surfel表示场景地图,使用关键帧的形式减少BA的输入数据量
- 关键帧:RGB-D图像及其对应的6自由度的相机位姿。
- surfel:有方向的圆盘,由3D中心点,表面法向量,半径,标量视觉描述子构成。选择surfel作为场景表示,是因为可以通过BA对其进行有效融合和更新,并且可以快速变形以适应回环。与基于体素的场景表示相比,surfel可以轻松表示任意比例的薄表面和场景细节。相比于网格,它不需要额外拓扑上的更新。
- 优化代价函数:优化的总体目的是通过调整上述surfel和关键帧中的参数来最大化整体一致性。优化的参数包含surfel的属性,关键帧的位姿,相机内参(可选)
- 代价计算是通过将每个surfel投影至每个关键帧上来建立像素对应关系以实现的,具体包含几何约束和光度约束的加权和:
- 几何约束衡量不同帧中深度图像素的一致性,公式如下所示,其中s是surfel,k是关键帧,ps是surfel中心点在世界坐标系下的三维坐标,经过T转换到当前k帧坐标系下的三维坐标。π将这个三维坐标转换为像素坐标,π-1根据像素坐标和该像素在深度图上对应的深度计算出三维坐标,这个新计算出的三维坐标和直接由T转换至当前帧的三维坐标应该尽可能一致。将上述两个三维坐标作差投影至当前k帧下法向量方向,就得到下面公式的几何约束代价:
- 光度约束衡量的是RGB像素的一致性,为了尽可能不受不同角度的照明影响,本文主要考虑梯度值而不是RGB值,公式如下所示,ps是surfel中心点在世界坐标系下的三维坐标,s1和s2是surfel圆盘两个边界点在世界坐标系下的三维坐标,边界点投影到图像上去像素坐标对应的像素值,计算像素值差异即为梯度向量,求向量的二范数作为梯度值,和surfel的属性值作差,得到下面公式的光度约束代价:
- 由于surfel和关键帧的数量很大,使用二阶方法如牛顿法联合优化所有参数很慢,我们选择交替优化的策略,如下所示:
- 创建surfel:第一步,为所有关键帧创建新的surfel。将关键帧划分为4×4像素单元。如果单元格中没有像素对应于现有的surfel,则在单元格中随机选择一个深度以创建新的surfel。从创建的像素p计算surfel属性:中心点三维坐标ps根据像素和深度计算出相机系三维坐标再根据相机位姿转换到世界坐标系下;法向量是通过深度图像上居中的有限差分来计算的;r半径定义为ps与p的4个邻域像素的3D点之间的最小距离;ds初始化为上文中光度约束方程式r_photo中的第一项。创建新的surfels时,仅考虑所有相邻像素都具有深度测量值的像素。
- surfel法向量更新:为了限制surfel的更新,本文的更新策略为只允许surfel沿着法向量方向进行更新,因此surfel法向量主要仅影响冲浪允许移动的方向。因此,本文并不是从代价函数中得出更新步骤,而是平均所有相应测量值的法线,然后通过重新归一化为单位长度。
- surfel位置和描述子的优化:根据几何约束和光度约束,使用高斯牛顿法联合优化surfel中心位置ps和描述子ds。由于ps仅被允许沿法线移动,ps+t*ns,这里需要优化的参数只有一个t,优化的复杂度下降了,每一个surfel优化是独立的。
- surfel合并:在BA方案的第一个迭代中优化位置后,将具有相似属性的surfel合并,以减少不必要的surfel。为了快速找到合并候选者,将surfel投影到所有关键帧中,并考虑将投影到同一单元格的surfel进行合并。
- 关键帧位姿优化:根据几何约束和光度约束,使用高斯牛顿法优化关键帧的位姿。每一个关键帧的位姿优化都是独立的。
- Surfel清理和半径更新:过滤异常surfel。每个surfel的半径都更新为所有相应测量值的最小半径。
重磅!3DCVer-学术论文写作投稿 交流群已成立
扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。同时也可申请加入我们的细分方向交流群,目前主要有3D视觉、CV&深度学习、SLAM、三维重建、点云后处理、自动驾驶、多传感器融合、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流、ORB-SLAM系列源码交流、深度估计等微信群。
一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。
▲长按关注公众号
3D视觉从入门到精通知识星球:针对3D视觉领域的知识点汇总、入门进阶学习路线、最新paper分享、疑问解答四个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近2000星球成员为创造更好的AI世界共同进步,知识星球入口:
学习3D视觉核心技术,扫描查看介绍,3天内无条件退款
圈里有高质量教程资料、可答疑解惑、助你高效解决问题觉得有用,麻烦给个赞和在看~![640?wx_fmt=gif](https://mmbiz.qpic.cn/mmbiz_gif/gYUsOT36vfpFnEj3CMde0iaOKfGiaAmbfRRPePWld5pUR0niaibYOvNP5cx7nKS5I6180xeya4ZIYJClvHqSpQecqA/640?wx_fmt=gif)
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK