港科大 实时可扩展稠密面元建图 Real-time Scalable Dense Surfel Mapping 翻译

实时可扩展稠密面元建图

摘要 - 在本文中,我们提出了一种新颖的稠密建图系统,它可以在不同的环境中很好地扩展,只需CPU计算。使用稀疏SLAM系统来估计相机姿势,所提出的建图系统可以将灰度图像和深度图像融合成全局一致的模型。该系统经过精心设计,可以使用RGB-D摄像机,立体摄像机甚至单目摄像机的深度图像,从室内环境到城市规模环境。首先,从灰度和深度图像中提取的超像素用于模拟系统中地图的面元。基于超像素的面元处理使我们的方法既有运行效率又有内存效率。其次,根据SLAM系统的位姿图进一步组织面元,以实现O(1)融合时间,而不管重建模型的规模如何。第三,使用优化的位姿图的快速地图变形使得地图能够实时地实现全局一致性。提出的面元建图系统与合成数据集上的其他最先进的方法进行比较。使用KITTI数据集[1]和自主攻击飞行分别演示了城市规模和房间重建的表现。该代码可用于社区的利益。

I.导言

估算周围的3D环境是机器人安全导航或操作高级任务的基本能力之一。为了在移动机器人应用中可用,建图系统需要满足以下四个要求。首先,3D重建必须稠密地覆盖环境,以便提供足够的导航信息。其次,建图系统应该具有良好的可扩展性和效率,以便可以使用有限的板载计算资源将其部署在不同的环境中。从室内规模(几米)到城市规模(几公里)环境,建图系统应保持运行时效率和内存效率。第三,建图系统需要全局一致性。如果检测到回环,系统应该能够实时变形地图以保持不同访问之间的一致性。第四,为了能够在不同的机器人应用中使用,系统应该能够融合RGB-D相机,立体相机甚至单目相机的不同质量的深度图

近年来,已经提出了许多使用RGB-D相机的方法来重建环境,以满足上述若干要求的。KinectFusion [3]是一项开创性的工作,它使用截断的符号距离场(TSDF)[4]来表示3D环境。 许多后续工作改进了可扩展性(例如Kintinuous [5]),效率(例如CHISEL [6])和基于TSDF的方法的全局一致性(例如BundleFusion [7])。 基于面元的方法将环境建模为一系列面元。例如,ElasticFusion [8]使用面元重建场景并实现全局一致性。 虽然所有这些方法使用RGB-D相机都能获得令人印象深刻的效果,但扩展它们以满足所有四个要求并可用于不同的
机器人应用程序并非易事。

图1.我们提出的稠密建图方法可以融合低质量深度图,在没有GPU加速的情况下实时重建大规模全局一致的环境。 顶行显示了使用立体相机和环形角落的细节重建KITTI odometry 00。 底行显示仅使用一个具有深度预测的单目相机进行重建[2]。

在本文中,我们提出了一种满足所有四个要求的建图方法,可以应用于一系列移动机器人系统。我们的系统使用最先进的稀疏视觉SLAM系统来跟踪相机位姿,并将灰度图像和深度图像融合成一个全局一致的模型。与将每个像素视为面元处理的ElasticFusion [8]不同,我们使用超像素来表示面元。如果像素具有相似的灰度,深度和空间位置,则它们被聚类成超像素。将超像素建模为面元图大大降低了我们系统的内存需求,并使系统能够融合来自立体相机或单目相机的噪声深度图。 面元们根据他们最后被观察到的关键帧进行组织。使用SLAM系统的位姿图,我们进一步找到局部一致的关键帧和面元,相互之间的相对漂移可以忽略不计。只有局部一致的面元与输入图像融合,实现O(1)融合时间和局部精度。通过根据优化的位姿图变形面元来实现全局一致性。由于精心设计,我们的系统可用于在没有GPU加速的情况下实时重建全局一致的城市规模环境。

总之,我们的建图方法的主要贡献如下:

我们使用从灰度和深度图像中提取的超像素来模拟系统中的面元。超像素使我们的方法能够融合低质量的深度图使用基于超像素的面元也可以获得运行时效率和内存效率

 •我们根据稀疏SLAM系统的位姿图进一步组织面元。使用该组织,提取局部一致的地图用于融合,并且无论重建规模如何,融合时间都保持O1。基于优化的位姿图,还提出了快速地图变形,​​使系统能够实时实现全局一致性。

•我们仅使用CPU计算实现建议的稠密建图系统。我们使用公共数据集评估该方法,并使用自主激进飞行器证明其可用性。据我们所知,所提出的方法是第一种仅使用CPU计算实现城市规模全局一致性的在线深度融合方法

II 相关工作

大多数在线稠密重建方法将RGB-D相机的深度图作为输入。在本节中,我们将介绍不同的方法来扩展这些建图系统的可伸缩性,全局一致性和运行时效率。

Kintinuous [5]通过使用循环缓冲区扩展了建图系统的可扩展性。TSDF体素根据摄像机的运动进行虚拟变换。Nießner等人提出的体素散列[9]是另一种提高可扩展性的解决方案。由于空间中表面的稀疏性,仅使用散列函数存储有效体素。DynSLAM [10]使用散列体素和高端GPU加速来重建城市规模模型。与基于体素的方法相比,基于面元的方法相对可扩展,因为只有面元存储在系统中。如果没有明确的数据优化,ElasticFusion [8]可以详细构建可扩展的房间环境。傅等人[11]通过维护局部面元设置进一步提高基于面元的方法的可扩展性。

为了消除相机跟踪的偏差并保持全局一致性,建图系统应该能够在检测到回环时快速变形模型。惠兰等人[12]用点云变形改进了Kintinuous [5]。随着摄像机的移动,变形图逐渐构建。当检测到回环时,变形图被优化并应用于点云。基于面元的方法通常使用类似的方法使地图变形。BundleFusion [7]引入了另一种解决方案,使用RGB-D帧的去积分和重新集成来实现全局一致性。当由于位姿图优化而更新相机位姿时,首先从TSDF体素中去除RGB-D帧并使用更新的相机位姿重新集成。许多基于TSDF的方法(如InfiniTAM [13])使用子图来生成全局一致的结果。这些方法将空间划分为多个低漂移子图,并使用更新的姿势将它们合并为全局模型。

已经提出了不同的方法来加速融合过程。Steinbrucker等人[14]使用八叉树作为数据结构来表示环境。Voxblox [15]用于规划TSDF和欧几里德符号距离场的计算。Voxblox [15]提出了一种分组光线投射来加速整合,以及一种新的加权策略来处理由大体素尺寸引起的失真。FlashFusion [16]使用有效的块选择来加速融合步骤,并基于重新积分方法实现全局一致性。大多数基于面元的建图系统都需要GPU来呈现用于数据关联的索引图。MREMap [17]将八叉树组织的体素定义为面元,因此它不需要GPU。然而,MREMap的重建模型是体素而不是网格。

III 系统总览

系统架构如图2所示。我们的系统将灰度和深度图像对融合成一个全局一致的模型。我们使用最先进的稀疏视觉SLAM系统(例如ORB-SLAM2 [18]或VINS-MONO [19])作为定位系统来跟踪摄像机的运动,检测闭环并优化位姿图。我们的建图系统的关键是(1)基于超像素的面元,(2)基于位姿图的面元融合,以及(3)快速地图变形。对于每个灰度和深度图像输入,定位系统生成相机跟踪结果并提供更新的位姿图。如果位姿图被优化,我们的系统首先会变形地图数据库中的所有面元以确保全局一致性。在变形之后,建图系统基于从灰度和深度图像提取的超像素来初始化面元。然后,根据位姿图从地图数据库中提取局部面元,并与初始化的面元融合。最后,融合的面元和新观察到的面元都被添加回地图数据库。图3示出了当检测到回环时处理两个帧的系统的流水线。


图2.所提方法的系统架构,传感器由机器人应用程序确定。我们的系统可以融合来自有源RGB-D摄像机,立体摄像机或单目摄像机的深度图。定位系统用于跟踪相机位姿,检测回环,并提供关键帧的优化位姿图。系统中的每个面元都匹配到一个关键帧,所有面元都存储在地图数据库中。

图3.使用KITTI odometry 05作为示例,在相机重新访问街道时显示地图变形和以前地图的重复使用。为简单起见,面元可视化为点云,局部地图以彩色突出显示。在重新访问期间,在第1327帧上检测到回环。(a):提取局部地图用来融合第1326帧。(b):第1326帧的结果。如(a)和(b)中的红色圆圈所示,地图由于回环检测前的漂移而未对准。(c):1327帧检测到一个回环,并相应地变形地图以消除漂移。由于更新的位姿图,可以找到更多局部一致的位姿和面元。(d):提取局部地图用来融合1327帧。如图所示,先前的地图被重新用于融合当前帧。(e)是第1327帧融合后的结果。

IV 面元建图系统

  1. 符号

面元用于表示环境。每个面元S = [Sp,Sn,Sc,Sw,Sr,St,Si] T具有以下属性:位置Sp∈R3,法线Sn∈R3,强度Sc∈R,权重Sw∈R+,半径Sr ∈R+,更新时间St∈N,匹配关键帧的索引Si∈N。更新时间St用于检测临时异常值或动态对象,Si表示观察到该面元的上一个关键帧。

我们系统输入的是灰度图像,深度图像,相机的自我运动以及来自SLAM系统的位姿图。 第i个灰度图像是Ii:Ω⊂R2 7→R,第i个深度图像是Di:Ω⊂R2 7→R。一个在相机坐标系中的3D点p = [x,y,z] T 可以使用相机投影函数投影到图像中作为像素u:= [u,v]T∈Ω:u =π(p)。 像素可以作为点反投影到相机坐标系中:p =π-1(u,d)其中d是像素的深度。

  1. 定位系统和位姿图

我们使用稀疏的视觉SLAM方法作为定位系统来跟踪相机运动并在有闭环时优化姿势图。对于每个帧,定位系统估计相机位姿Twi∈SE(3)并且给出与Ii共享大多数特征的参考关键帧Fref。Twi包括旋转矩阵Rwi∈SO(3)和平移向量twi∈R3。使用Twi,Ii相机坐标系中的点pc可以转换为全局坐标系pw = Rwi *pc + twi。相机坐标系中的矢量(例如,面元法线)nc可以变换为全局坐标系nw = Rwi*nc。类似地,pw和nw可以使用Tiw = T -1 wi 转换回灰度图像的相机坐标系。

我们系统中使用的位姿图是一个无向图,类似于ORB-SLAM2中的隐含图。图中的顶点是SLAM系统中维护的关键帧,边指示关键帧共享共同特征。由于帧的相对位姿受到通过束调整的稀疏SLAM系统中的共同特征的约束,因此我们假设如果关键帧彼此之间的最小边缘数小于Gδ,则关键帧是局部一致的。

  1. 快速地图变形

如果更新了定位系统的位姿图,我们的方法会改变所有面元,以便在面元处理初始化和融合之前保持全局一致性。 与之前使用嵌入在全局地图中的变形图的方法不同,我们对面元进行变形,以使每个面元的相对位姿和其匹配的关键帧保持不变。 虽然匹配在同一关键帧上的面元会严格变形,但地图的整体变形是非刚性的。

对于匹配在关键帧F上的面元S,面元的位置和法线使用TwF和T -1 wF进行变换,其中TwF和TwF分别是优化前后关键帧F的位姿。 在变形之后,变换TwF被下一变形的优化位姿代替。

  1. 超像素提取

与其他模拟每个像素作为面元的基于面元的方法不同,我们基于从灰度和深度图像中提取的超像素提取面元。使用超像素可以大大减少应用于大型任务时系统的内存负担。更重要的是,可以基于提取的超像素减少来自低质量深度图的异常值和噪声。这种新颖的表现方式使我们能够使用立体相机甚至单眼相机重建环境。

通过改进来自于SLIC的k均值方法提取超像素[20]。原始SLIC是对RGB图像进行操作,我们将其扩展为分割灰度和深度图像。像素被聚类,根据他们的灰度值,深度值和空间位置,通过首先初始化聚类中心然后在分配步骤和更新步骤之间交替。与SLIC相比的一个重大改进是我们的超像素分割对图像进行操作,其中并非所有像素都具有有效的深度测量。

聚类中心Ci = [xi,yi,di,ci,ri] T在图像上的规则网格上初始化。 [xi,yi] T是聚类像素的平均位置,di是平均深度,ci是平均强度值,ri是超像素的半径,被定义为指定像素与[xi,yi]之间的最大距离 T. [xi,yi] T被初始化为中心的位置。 di和ci被初始化为像素[xi,yi] T的深度和强度值。 对于在没有有效深度估计的像素上初始化的聚类中心,深度di被初始化为NaN。


在分配步骤中,来自SLIC的每个聚类扫描被每像素更新替换,以便在复杂性保持不变的同时处理无效深度。 我们将一个像素u和一个候选聚类中心Ci之间的两个距离定义为:

其中Dd和D分别是有和没有深度信息的距离。 [ux,uy],ud和ui分别是像素u的位置,深度和灰度。在求和之前,N2s,N2c和N2d分别用于归一化距离,灰度值和深度接近度。每个像素扫描四个相邻候选聚类中心。如果像素u和所有中心都具有有效的深度值,则通过比较Dd来完成分配。否则,D用于分配。


分配完所有像素后,将更新聚类中心。xi,yi和ci由所有指定像素的平均值更新。另一方面,平均深度di通过最小化具有半径δ的Huber损失来更新(通过最小二乘迭代求解):

其中u是具有有效深度值的指定像素,ud是其深度。di可以通过Gauss-Newton迭代估计。这种离群值稳定的平均深度不仅使系统能够处理低质量的深度图,而且还能保持深度不连续性。

  1. 面元初始化

对于具有足够分配像素的超像素聚类中心Ci = [xi,yi,di,ci,ri] T,我们用一种异常鲁棒的方式初始化一个面元S = [Sp,Sn,Sc,Sw,Sr,St,Si] T  。将灰度Sc初始化为聚类的平均灰度ci。Si被初始化为稀疏SLAM系统给出的参考关键帧Fref的索引。St被初始化为0意味着面元没有被其他帧融合。


通过使用来自超像素的所有像素的信息来初始化位置Sp和法线Sn。Sn被初始化为这些像素的平均法线,然后通过最小化拟合误差进行微调(通过最小二乘迭代求解),定义为:

 


其中pu =π-1(u,ud),p¯是3D点pu的平均值,b估计偏差。 Sp被定义为相机作为像素[xi,yi] T观察到的表面上的点:

 


并且可以以封闭形式求解:

其中K是相机内参矩阵。


初始化面元半径Sr,使得它的投影可以覆盖输入灰度图像中提取的超像素:

其中Sp(z)是面元的深度,f是相机的焦距。

    大多数深度估计方法,如双目匹配或主动双目(例如Ultrastereo [21])通过首先估计像素视差ddis,然后将其反转为深度值d = bf / ddis来工作,其中b是双目传感器的基线。假设视差估计的方差是σ2,则Sw
被初始化为估计的面元深度的逆方差:

  1. 局部地图提取

重建大规模环境可能会产生数百万个面元。然而,由于以下原因,仅基于位姿图提取面元的子集与初始化的面元融合。首先,无论重建规模如何,局部地图融合确保O(1)更新时间。其次,由于稀疏SLAM系统的累积跟踪误差,融合大漂移的面元会破坏系统,从而无法实现全局一致性即使之后检测到回环。

在这里,我们介绍一种新方法,使用来自定位系统的位姿图来识别局部地图。正如在第IV-B节中假设的,当前关键帧Fref的最小边数低于Gδ是局部一致的,我们将匹配到这些关键帧的面元提取为局部地图。可以通过位姿图上的广度优先搜索找到局部一致的关键帧。当检测到回环并添加这些关键帧之间的边时,可以重复使用先前的面元,从而减少地图增长。如图3的(d)所示,由于回环闭合,先前的建图被重用。

  1. 面元融合


在本节中,将Section. IV-F提取的局部面元与Section IV-E中新初始化的面元融合。给定当前相机位姿估计Twc,首先使用T-1wc将局部面元的位置和法线变换到当前相机坐标系。然后将每个局部面元S1作为像素反投影到输入帧中:u =π(S l p)。如果面元Sn被初始化是基于包含u的超像素,如果它们有相似的深度和法线我们确定它们是匹配的:| Snp(z-S lp(z)| <Sl p(z)2 /(bf) ·2σ,S nn·S ln> 0.8。 局部面元S l与相应的初始化面元S n融合:

融合后,使用Twc将所有局部面元变换到全局坐标系,并移到全局地图中。在当前帧中初始化但尚未与局部地图融合的面元也会被转换并添加到全局地图中。为了处理异常值,使用| Si-Fref |> 10,但更新不到5次的面元被移除。

V.实施细节

面元建图系统仅使用CPU计算实现,即使在重建城市规模环境时也能实现实时性能。超像素在规则网格上初始化,间隔8个像素。小尺寸超像素使系统在效率和重建精度之间取得平衡。在公式1和公式2中的像素分配期间,使用Ns = 4,Nc = 10和Nd = 0.05。在面元初始化处理和融合期间,具有超过16个指定像素的超像素用于初始化面元。在Huber损耗中使用的δ和视差误差σ由深度传感器或深度估计方法确定。

VI实验

在本节中,我们首先使用ICLNIUM [22]数据集将提出的建图系统与其他最先进的方法进行比较。还使用KITTI[1]数据集分析了所提出的系统在大规模环境中的性能。评估我们方法的平台是带有Intel i7-7700的工作站。最后,我们使用重建的地图来支持无人机自主激进飞行,以证明系统的可用性。在实验中,我们表明所提出的方法可以融合来自双目匹配,深度预测和单眼深度估计的深度图。

A重建精度

我们使用ICL-NIUM [22]数据集评估重建模型的精度,并将其与其他建图方法进行比较。数据集提供渲染的RGB图像和合成房间的相应深度图。为了模拟真实世界的数据,数据集为RGB图像和深度图像添加了噪声。 δ= 0.05,σ= 1.0用于面元初始化处理。我们在RGB-D模式下使用ORB-SLAM2来跟踪相机运动。 Gδ= 20用于提取融合的局部地图。

重建精度定义为重建模型和地面实况模型之间的平均差异。在这里,我们将提出的建图方法与BundleFusion [7],ElasticFusion [8],InfiniTAM [13]和最近发布的FlashFusion [16]进行比较。为了评估维持全局一致性的能力,我们还评估了我们w / o循环,其中ORB-SLAM2中的循环闭包被禁用。

结果如表I和图4所示。请注意,只有FlashFusion [16]和我们提出的系统不需要GPU加速。另一方面,BundleFusion [7]使用两个高端桌面GPU重新集成帧并存储所有融合的RGB-D帧。虽然我们的方法是为大规模高效重建而设计的,但与FlashFusion相比,它获得了类似的结果。只有kt3具有全局回环,并且我们的方法通过消除运动跟踪期间的漂移​​将重建误差从1.7减少到0.8。


表I ICL-NIUM数据集的重建精度(CM)

图4.我们系统在ICL-NIUM数据集的kt3序列上的重建结果。左边是重建的网格。 右边是面元位置的错误图。 红色代表4厘米误差,蓝色代表0厘米误差。如图像中所示,我们的方法生成密集的面元结构,并覆盖精细结构(如杆)。

B.重建效率

以前的大多数在线稠密重建方法都侧重于使用RGB-D摄像机的室内环境。在这里,由于内存和计算效率,我们表明我们的方法可以重建更大的环境,例如KITTI数据集中的街道。当重建规模增长时,研究融合更新时间和存储器使用。我们使用PSMNet [23]从双目图像生成深度图,并在双目模式下使用ORBSLAM2来跟踪移动摄像机。 δ= 0.5,σ= 2.0根据环境和立体方法设定。在这里,我们使用KITTI测距序列00进行评估。


图1的第一行显示了重建结果和一个环形角的细节。图5显示了地图变形之前的地图和变形之后的。我们的方法在KITTI序列00重建期间的时间效率如图6所示。如图所示,平均融合时间约为每帧80 ms,使得我们的方法仅使用CPU实时超过10 Hz计算。与其他稠密建图方法(如基于TSDF的方法)不同,我们的方法大部分时间都在提取超像素和初始化面元。异常强大的超像素提取和面元处理初始化使我们的系统能够使用低质量的双目深度图。另一方面,无论环境规模如何,面元融合仅消耗不到6毫秒。由于ORB-SLAM2经常优化整个姿势图,我们的系统会相应地改变地图以保持全局一致性。运行期间系统的存储器使用情况如图7所示。在帧3000和4000之间,车辆重新访问一条街道,ORB-SLAM2检测关键帧之间的回环。基于更新的位姿图,我们的系统重用以前的面元,以便内存根据环境规模而不是运行时增长。

(a)地图变形前的细节                        (b)地图变形后的细节

图5.地图变形前后的一个街角的细节。在闭环之前,道路和汽车由于大的漂移而未对准(以红色框显示)。 在闭环和地图变形之后,漂移被移除。


图6.我们的方法重建KITTI测距序列00的时间效率。如图所示,我们的系统在重建KITTI序列期间实现了10 Hz的实时性能。

图7.重建KITTI测距序列00的方法的存储效率。如图所示,当更多帧融合到模型中时,存储器使用量增加。 在帧3000和4000之间,存储器占用率几乎保持不变,因为车辆重新访问一条街道并且重复使用之前面元。

C.使用单目相机

所提出的方法的一个优点是它可以融合来自不同种类传感器的深度图。 在前面的部分中,我们展示了使用渲染的RGB-D图像和双目相机的稠密建图。 在本节中,所提出的稠密建图系统用于仅使用一个单目摄像机重建KITTI序列。 仅使用来自数据集的左图像来预测深度图[2],并且在RGB-D模式下使用ORB-SLAM2跟踪相机姿势(具有左图像和预测的深度图)。 重建结果显示在图1的底行。在融合期间,根据单眼深度估计的方差将σ设置为4.0。 我们的方法是第一个使用预测深度图重建KITTI序列的方法。

D.支持自主激进飞行


Scene Overview        Our method’s Result        CHISEL’s Result

图8.使用所提出的方法重建自主飞行的环境。 左边是环境概述。 中间是我们方法的重建,正确是CHISEL广泛使用的结果

结论

在本文中,我们提出了一种新颖的面元建图方法,可以在没有GPU加速的情况下将顺序深度图融合成实时全局一致的模型。该系统经过精心设计,可以处理低质量的深度图并保持运行时效率。 我们系统中使用的面元使用提取的异常强大的超像素进行初始化。根据定位系统的位姿图进一步组织面元,以便系统保持O(1)融合时间并且可以使地图变形以实现全局一致性。 该系统的所有特征使得所提出的建图系统适用于机器人应用。

致谢

这项工作得到了香港博士研究生奖学金计划的支持。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

樱桃木

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值