Speed and Memory Efficient Dense RGB-D SLAM in Dynamic Scenes论文笔记
论文中的主要引用文献:
[7:A coarse and relevant 3d representation for fast and lightweight rgb-d mapping] 超表元建图
[14: Fast optical flow using dense inverse search] 稠密光流逆搜索
[15:“Lightweight visual odometry for autonomous mobile robots] LVT轻量级视觉跟踪
摘要
假设许多机器人应用程序不需要重建表面的高分辨率水平,并且可以从不太准确但成本较低的地图中受益,从而获得和内存效率。本文针对主流计算平台,提出了一种基于粗糙、轻量级三维表示的快速RGB-D SLAM,用于动态室内环境的稠密紧凑建图。文中还提出了一种简单快速的动态元素检测和过滤公式。我们展示了我们的系统的健壮性,它的低内存需求和良好的性能。
系统总览
A.系统结构
以RGB-D帧(C,D)颜色深度对为输入,同时重建环境静态部分的稠密全局三维地图M,并估计传感器在全局空间中的位姿T∈SE(3)。摄像机姿态T由方向R∈SO(3)和位置T∈r3组成。
全局地图M被建模成3D超表元的紧凑集合[7:A coarse and relevant 3d representation for fast and lightweight rgb-d mapping]
首先从当前帧中的超像素分割F中提取一组超surfels Fl,并在并行线程中同时检测稀疏特征。
然后,基于鲁棒自运动补偿的超像素级快速运动目标检测和稠密逆搜索(DIS)光流[14: Fast optical flow using dense inverse search]用于从后续的相机跟踪和映射过程中提取和丢弃动态元素。
跟踪步骤使用基于稀疏特征的轻量级VO初始化,并使用**稠密帧到模型配准(alignment)**进行细化,以获得当前相机姿态的鲁棒和准确估计(这里目测是直接法的直接图像对齐?)
将检测到的兴趣点匹配一个小的稀疏局部特征地图的稀疏VO建立在[15]中的实现上,基于改进了ORB特征匹配[16]的GMS。
基于点到面的对称ICP[17],稠密配准细化尝试将当前帧的三维点测量值与稠密全局地图M中supersurfel Ms对齐。
最后,从当前帧中注册的检测特征和SuperSurfels Fl分别集成到稀疏局部图和稠密全局图m中,使用非刚性空间变形策略实时应用闭环来校正局部和全局图,如ElasticFusion[6]所做的那样。
B.Supersurfel 表示
使用一个近似但连续且轻量级的表示[7]用于对环境进行建模。
稠密全局地图M被重建为一个supersurfels的无序列表Ms,它们可以被看作是超像素的近似2D到3D的反投影。超像素是颜色和几何形状相同的一组像素集合。而基于表元的方法进行逐个像素的表元建模来对环境建图。超表元3D的术语是从RGB-D超像素产生的,生成一个低分辨率的表面重建。这种易于管理的3D数据表示允许更快的处理,并减少内存占用和噪声,同时保留重要信息(纹理和深度不连续)。
每个地图超表元 Ms用以下属性描述:
为了方便起见,我们还指定一个超表元的法线为[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
对应于其方向的第三列
系统描述
A. 基于超表元的建图
1)超表元生成
输入帧被分割成超像素块,尽可能保留纹理边界和深度不连续,这遵循[19]中提出的方法的GPU实现,它为每个分割分配一个3D斜面。
每个超像素块可以提取出一个超表元Fl,如图二所示
超像素块(左)与相关的斜面和生成的超表元(右),显示为矩形补丁而不是椭圆补丁,以便更快地可视化。
通过对超像素所包含的像素的2D到3D反投影应用主成分分析(PCA),如[7]所述
2)全局地图更新
在这一步中,每一帧的超表元被整合进全局地图M。将相应的帧和模型超表元进行融合,细化重构,减少冗余,而没有对应的帧超表元只是在地图中添加了一个低置信权重。(这里指的应该是删除的帧中提取的超表元)
为了从地图M和当前帧F中找到超表元之间可能的对应关系,我们使用了投影数据关联策略。
将每个模型超表元在相机视场中的位置投影到超像素分割RGB-D帧中,把包含投影位置的超像素块与该超表元进行关联。(这里就是一个根据位置进行投影匹配的过程,类似于3D点投影2D相机平面,投影点的位置所处的超像素块视为3D点的投影超像素块)
然后我们检查全局地图Ms和当前帧超表元Fl之间的相似性,确保它们在Lab空间中颜色之间的距离、法线之间的发散角和中心之间的欧几里得距离都很小,以避免不同的超曲面融合。采用加权平均和协方差交点策略对相似的超曲面进行合并,更新方案类似于[7]。增加衡量可靠性的置信值。
最后,通过执行一个快速的自由空间违反检查来清理模型(a fast freespace violation check),以删除可行超表元前的超表元,这些超表元通常与动态对象相关。长时间处于不稳定状态(低置信值)的超表元也会被淘汰。(这里没太懂)
B. 相机追踪
1)稀疏特征视觉里程计:
首先,应用ORB特征[20]的稀疏VO得到摄像机姿态的初始估计。
当捕获帧时,提取ORB特征,深度图像作为掩码来拒绝具有无效深度的点。
然后,通过最小化新提取的2D特征点与匹配的3D局部地图点之间的重投影误差,将检测到的特征用于注册新帧与过去帧上创建的有限稀疏局部特征地图:
ρ是处理对应异常值的鲁棒柯西代价函数
局部地图管理的实现基于轻量级视觉跟踪(LVT)系统。这是一种用于实时操作的视觉里程计算法,具有低计算开销和内存需求。与标准的帧对帧方法相比,使用局部地图可以大大减少错误的积累。当一个特征不再可跟踪时,它将从局部地图中清除,以便跟踪有限数量的兴趣点。
为了实现当前帧2D特征与投影的局部地图特征之间的快速高质量匹配,GPU暴力匹配后应用基于网格的运动统计(grid - based Motion Statistics, GMS)[16]。GMS**依赖于一个统计公式来根据相邻匹配的数量区分假匹配和真匹配。**即使在弱纹理环境或强运动场景下,它也能呈现良好的结果。
如果发现的匹配数量太少,则只能根据前面两个姿势的匀速模型来预测摄像机姿态的初始估计。
2) 帧到模型的稠密配准
接下来采用稠密配准来改进初始姿势估计T。我们在全局空间中计算与输入RGB-D帧像素相关联的3D点的集合Xi,并向Xi中的每一个3D点分配法线ni=R*Fnl,其中Fnl是当前帧超表元Fl中包含3D点集合X的法线,R是当前姿态估计T的旋转部分。然后,将3D点集合Xi与位于相机视野中的模型的超表元对齐
应用了文献[17]中提出的快速可靠的对称ICP变型。这是对传统的点到面ICP的简单改进,可以产生更快、更可靠的收敛。使用高斯-牛顿计算从前一个相机位姿到当前位姿的相对变换Trel的旋转Rrel和平移Trel部分,以最小化以下成本函数:
其中,
是当前帧的3D点和全局模型的超曲面之间的关联列表
ICP后相机姿态更新:
利用快速投影数据关联的ICP算法在每次迭代中计算最接近的对应关系。将模型超表元的中心Msp投影到当前帧,并选择与投影位置相关联的3D点Xi进行配对。在LAB空间中具有高深度差异、高颜色不相似或表面法线之间有大角度的对应关系将被拒绝。
C. 移动目标检测
1)自运动补偿
为了检测动态元素,我们选择将图像空间中的相机自我运动建模为2D透视变换矩阵H∈SE(2)。
由于三维空间中的自运动补偿对计算的要求更高,而且由于有噪声的深度测量而不那么健壮。
因此从前一帧(Cprev,Dprev)和当前帧(C,D)中检测到的ORB特征与RANSAC结合使用,计算将两幅图像关联起来的2D变换H。我们假设摄像机所看到的场景中静态元素占主导地位,否则RANSAC可能会选择一组动态特征作为内线,估计的变换H不能反映真实的摄像机运动。然后计算与当前RGBD帧的彩色图像C相关联的强度图像I,以及与Cprev相关联的前一个强度Iprev。然后将计算出的透视变换H应用于Iprev和Dprev,生成两张新的图像:经过扭曲的强度Iwarp和深度Dwarp图像,在正确估计的情况下,完全静态的场景应该看起来像I和D。
2) 静态/动态分割
在第二步中,我们计算当前图像I和预测图像Iwarp之间的稠密光流。我们使用DIS光流算法[14]来估计每个像素的表观运动,因为它能够在单个CPU核心上以高达600Hz的速度运行,并在大位移下达到最先进的性能。然后,通过对当前帧内像素的超像素进行平均,将二维位移向量∆x分配给当前帧的每个超像素。使用超像素作为刚性移动元素可以加快分类速度,并减少错误值的影响。我们对超像素流向量的大小和补偿深度差(使用深度D和Dwarf计算)使用自适应阈值来检测移动片段。
(也就是通过2D图像变换和稠密光流追踪,对比同一个超像素块的深度变化)
如果为以下情况,质心为x的超像素被归类为动态的:
τ f和τd是两个自适应阈值。τd考虑到深度传感器的不确定度,由以下因素确定:
k设为10,σd(x)为像素x的深度噪声的标准偏差。阈值τf在[21]中定义为:
其中α = 1.0被设置为补偿由传感器的分辨率或光流的精度引起的不稳定,β = 0.5加权透视变换矩阵元素H(1,3)和H(2,3)的大小,反映传感器运动的速度。为了限制由于不准确的光流或深度数据造成的错误检测,我们设置这些被标记为动态,但只连接到静态分割的超像素为静态超像素。运动目标检测结果如图3所示。与动态超像素相关联的特征和超表元被舍弃。
D. 回环检测
1)检测:
使用随机化的 fern[22]进行关键帧数据库管理和检测候选回环,因为fern描述符计算和比较非常快。如果在关键帧数据库中检测到与当前帧相似的图像,则使用GMS[16]匹配来自当前帧和候选关键帧的ORB特征。如果有足够的匹配,则使用EPnP[23]解决方案结合RANSAC计算两幅图像之间的转换T LC,以去除异常值。
如果RANSAC给出的inlier小于30%,回环将被丢弃。然后位姿变换T LC通过候选关键帧的超表元和当前帧之间进行密集ICP配准(如节IV-B.2所示)。
2)地图变形
如果闭环被接受,则构建嵌入全局模型表面的变形图,并对其进行优化,使稠密建图发生非刚性变形,从而从累积漂移中恢复。
与ElasticFusion[6]类似,我们遵循[24]引入的嵌入式变形公式,并将其适应于我们基于supersurf的表示。
Sumner et al[24]将变形图G定义为一组节点Gj和稀疏均匀分布的边,通过稠密的三维模型进行变形:
节点从全局地图Ms的超表元集合中采样得到。节点Gj被定义为以tj为时间戳,以超表元的位置初始化的节点从而和超表元相关联。
它还存储了一个由旋转矩阵GRj,和平移向量Gtj组成的仿射变换作为优化参数。每个节点与时间上最近的k个邻居N (G j)连接。在我们的实现中k = 4。节点的仿射变换是根据目标函数的优化计算的,该目标函数鼓励平滑刚性变形,给定一组稀疏位置回环约束(见[6])。
在优化变形图后,这些节点用于变形图m中的超表元。全局图Ms中的每个超表元都受到一组相邻变形图节点I (Ms,G)的影响,这些节点收集为k个最近的欧氏距离节点,在更大的α个节点集中,其时间戳为Gjt0,在超表元初始化时间戳Mst0附近。超表元Ms的变形位置,通过其相关节点I (Ms,G)的优化刚性变换组合计算:
其中
超表元的方向和协方差矩阵更新如下:
其中R是混合旋转,计算为影响超冲浪的节点I (Ms,G)旋转的四元数表示的加权平均。
变形图也用于从稀疏跟踪使用的局部地图上变形点(节IV-B.1)。当前相机姿态被修正T = TLC*TKF,其中TKF是关键帧的姿态。