论文标题:
GaussReg: Fast 3D Registration with Gaussian Splatting
论文作者:
Jiahao Chang, Yinglin Xu, Yihao Li, Yuantao Chen, and Xiaoguang Han
开源地址:https://jiahao620.github.io/gaussreg
导读:
点云配准是实现大规模3D场景SLAM和三维重建的关键问题。传统的配准方法已经逐渐淡出视野,而当前的配准方法通过借助深度学习技术取得了显著进展。
NeRF凭借强大的多视角图像渲染能力成为最受欢迎的三维重建方法之一,然而NeRF在大规模场景重建中的配准问题却鲜有研究。这是因为用隐式表示描绘两个场景之间的几何关系非常困难。现有的方法通常需要将隐式表示转换为显式表示,才能进行进一步的配准。
而3DGS不仅能够实现与NeRF一样高质量的图像渲染,还可以使用显式的高斯表示场景,使场景之间的配准成为可能。本文是基于3DGS进行配准的首份工作,作者相信这将为后续基于3DGS配准技术的研究提供宝贵的思路和参考。©️【深蓝AI】编译
1.引入
在传统的3D场景扫描和重建中,大规模场景通常会被分成不同的区块,生成很多位于不同坐标系的独立子场景。因此,这些子场景之间的配准非常重要。目前,点云配准技术已经得到了广泛研究并达到了相对成熟的阶段,典型的方法包括ICP、D3Feat和Geotransformer等。主流方法通常涉及从点云中提取特征并定位匹配点,以计算两个输入场景之间的变换关系。
在NeRF被提出且迅速席卷三维重建领域之后,3DGS的发布又成了一个新的里程碑,其实时的渲染能力,显性的场景表达,逼真的图像级场景重建使其迅速受到关注,广泛应用于三维场景表示。然而,在基于3DGS进行大规模场景重建时,面临两大主要挑战:
1)由于现实场景中存在复杂的遮挡情况,通常需要拍摄大量图像或视频来进行大规模重建,导致数据采集过程耗时较长。
2)3DGS是基于图像进行渲染和训练的,当场景较大,输入图像较多时,会带来比较大的运算量。
因此,一种直接的方法是将大规模场景划分为若干较小的场景,分别进行重建,然后利用配准技术将这些小场景组合在一起。
在图像处理领域,面对这样的挑战,一种非常有效的解决方案是将场景中重叠的部分进行配准,配准之后融合为同一个场景表示,从而节省了计算资源,减免了对于重复场景的运算。而3DGS在进行重建时,由于其显性表达,能够找到场景的各个部分,其中包括重叠的场景。考虑到两个重叠的场景,每个场景都有自己的3DGS模型。
于是,出现了一个有趣的问题:“既然3DGS提供了一种显示的点状表示,能否利用点云配准方法进行3DGS配准?”
在本文中,作者探索了使用3DGS进行快速且准确的3D配准,作者首先从两个场景的3DGS模型中提取点云。一个直接的方法是使用点云配准方法对这些3DGS点云进行配准。为此,作者设计了一种粗配准方法,该方法遵循标准的点云配准流程,如GeoTransformer,但特别考虑了3D高斯中的额外属性(如不透明度)。
然而,与传统的点云数据相比,来自3DGS的点云仅捕获粗略的几何结构且通常包含噪声。因此,粗配准无法达到足够精度的结果。作者进一步提出了一种新颖的基于粗配准结果的图像引导精细配准流程。作者的主要思想是基于观察到高斯展开不仅包含几何信息,还内在地包含详细的图像信息,这可以支持更精确的对齐。因此,作者首先在粗配准的帮助下定位重叠区域,并在高斯展开的帮助下渲染一些图像。然后,精细配准流程将图像投影到三维体积特征中进行最终匹配和变换估计。最终,作者提出了一种新颖的粗到细的高斯展开配准框架GaussReg。然而,目前缺乏使用高斯展开进行场景级配准的评估基准。为此,作者构建了一个名为ScanNet-GSReg的数据集,该数据集包含来自ScanNet数据集的1379个场景。此外,作者还收集了一个名为GSReg的数据集,包含6个室内和4个室外场景,以评估作者方法的泛化能力。作者在ScanNet-GSReg数据集、DReg-NeRF中使用的Objaverse数据集以及GSReg数据集上进行了广泛的实验,证明了作者方法的有效性。
图1|高斯配准效果图©️【深蓝AI】编译
2.具体方法与实现
图2|全文方法Pipeline©️【深蓝AI】编译
如图2所示,GaussReg主要包括两个阶段:粗配准和图像引导精细配准。假设有两个重叠的场景A和B,每个场景都有自己的高斯展开3DGS模型,且仅保存并可访问所有训练图像的相机姿态。将A和B的所有训练图像的相机姿态分别进行提取,并标记对应的3DGS模型。
作者的目标是找到刚性变换 ( s , R , T ) (s,R,T) (s,R,T),使得场景B与场景A对齐,其中 s s s表示尺度因子, R R R表示旋转矩阵, T T T表示平移向量。在粗匹配阶段通过配准AB两个场景的点云,输出一个粗略的变换 ( s c , R c , T c ) (s_c,R_c,T_c) (sc,Rc,Tc)。由于从3DGS模型中提取的点云往往包含噪声和畸变,因此粗匹配的精度是无法达到配准要求的,还需要进行进一步的精匹配~
然后,在图像引导的精细配准阶段,作者首先根据粗对齐结果定位一个高度重叠区域。在该高度重叠区域周围,作者分别从已经提取的相机位姿集合中选择两个相机子集,并从这些子集中渲染出几幅图像。之后,采用图像引导的特征提取方法从图像中提取体积特征,这些特征用于后续的局部匹配,最终实现准确的变换输出 ( s f , R f , T f ) (s_f,R_f,T_f) (sf,Rf,Tf),实现两个3DGS场景的配准。接下来笔者就方法中涉及到的每个细节,进行展开介绍:
2.1 重叠图像选择
图3|重叠点选择流程©️【深蓝AI】编译
如图3所示,这部分的主要目标是分别从提取的相机姿态集合中找到两个小的相机子集,这两个子集尽可能共享较大的共同视角区域,也就是V-SLAM领域常提到的“共视”区域。在选择之前,作者通过降采样的方式选择了部分子集用于查找,降低计算成本。随后作者使用3DGS把图像渲染出来,准备通过粗配准的方式找到共视区域。在作者的实验中,每个子集包含30张图像。作者的选择过程遵循以下三个步骤:
1)相机方向匹配:对于每一对可能得相机位姿,作者计算它们相机方向之间的角度的余弦值。最后,保留最接近的 k k k对,其中 k = 10 k=10 k=10在作者的实验中。由于粗对齐的存在,这一步可以准确且快速地剔除许多无用的相机位姿匹配对。
2)视角共享区域计算:为了实现更精确的选择,对于步骤1后保留的每一对匹配对,作者进一步计算它们共享的视角区域面积。为此,作者分别从GaussianA和GaussianB渲染出两个低分辨率的深度图,随后作者计算深度图中的共视点数量,以及该共视点数量所占所有可视点的比例。通过评估这两个比例的平均值,作者找到最接近的一对相机位姿对。由于高斯渲染的速度是实时的,因此这部分能够以很快的速度完成。
3)选择训练相机子集:作者分别在找到的相机位姿匹配点对的邻域内挑选两个训练相机子集。在所选的相机位姿子集下,通过从GaussianA和GaussianB渲染得到图像集,以供后续的特征提取阶段使用。
2.2 渲染图像配准
在上一步中,作者已经找到了共视区域最大的几个相机位姿集合,并渲染出了对应的图像,这实际上已经完成了全文Pipeline中的粗匹配过程。然而,粗匹配的精度往往是不够的,因此需要进一步进行精细化配准。为此,作者选择将渲染出来的图像进行配准,从而进一步细化配准结果。
首先,作者从上一步中渲染得到的两个渲染图像集合中提取图像。这些图像是从共视区域最大的几个相机位姿渲染而来的,确保了图像之间具有足够的重叠区域,为后续的特征提取和匹配打下基础。对于提取到的图像,作者遵循了多视图立体重建(MVS)的原理,对图像进行特征点提取。对每张图像应用特征提取算法,检测出关键特征点,这些特征点通常是在图像中具有显著局部特征的点,如角点和边缘点等。随后,作者对检测到的每个特征点计算其局部图像区域的描述符,描述符是一个向量,用于表示特征点的局部信息,便于后续的匹配过程。
完成特征点提取后,作者对提取到的特征点进行匹配。使用描述符匹配算法找到两个图像中特征点之间的对应关系,通常使用欧氏距离来衡量描述符之间的相似性,距离越小的点对被认为是匹配的。通过特征点匹配,作者得到了两个图像之间的对应关系。接下来,利用三角测量法计算出初步的场景稀疏点云。根据前一步得到的匹配对,结合相机的内参(如焦距、主点坐标)和外参(相机的位置和姿态),计算出每对匹配点的三维坐标。利用两张图像中匹配点的像素坐标,通过三角测量法求解出这些点在三维空间中的位置,从而生成初步的稀疏点云。
初步生成的稀疏点云会比粗匹配的精度更高,但依旧存在一定的误差,需要进一步优化。作者使用全局优化的策略,利用之前提取到的相机共视位姿集合,一次性优化所有的匹配点对,通过上述步骤,作者从粗配准到精细化配准,最终得到了高精度的匹配结果。
2.3 高斯配准与融合
在上一步中,作者已经得到了精确的匹配结果,下一步就是将高斯进行融合了,这一步实际上非常简单,因为我们知道高斯的属性中(位置,尺度,不透明度,SH函数),匹配结果已经可以提供最关键的位置和尺度,其中的SH函数,不透明度在进行刚性变化的时候是保持不变的,因此只需要将高斯的位置和尺度按照匹配结果进行一个变换,即可实现高斯的融合,通过一张图像可以更好地了解这个过程。从图4可以看出作者的方法很好的将不同视角的高斯模型进行了准确的配准,与GT相比达到了很高的一致。
图4|高斯融合图示©️【深蓝AI】编译
3.实验
作者进行了数值实验和可视化实验来证明了方法的可靠性,首先是数值实验,从表格中可以看出,作者的方法在各项指标上基本上能够达到对比方法的数倍优化效果,时间上更是减少了接近44倍。
图5|对比实验结果©️【深蓝AI】编译
接下来是在不同数据集上的实验,作者为了更全面的评估提出的方法,在不同的数据集上进行了实验,从下表能够看到,即便是数据集更换了,作者的方法依旧稳坐性能最优的宝座,各项指标均是能够战胜SOTA。
图6|不同数据集实验结果©️【深蓝AI】编译
图7|配准可视化实验©️【深蓝AI】编译
最后是配准可视化实验,从场景A和B中,使用本文提出的方法能够实现准确的配准,从可视化结果来看无论是图像的纹理还是配准部分的边界都十分清晰,能够将3DGS的点云有效的进行融合,证明本文方法的有效性。
4.总结
本文提出了首个基于3DGS的点云配准方法,通过使用3DGS的点云进行粗匹配得到了初始的匹配结果,随后使用3DGS渲染图像,将图像进行精细配准,实现了对于匹配结果的优化,最终通过实验证明,该方法能够有效配准3DGS的点云,在速度上相较于SOTA方法能够提升近44倍,图像质量上保持了3DGS渲染图像的一贯高质量,为后续基于3DGS点云配准的研究提供了十分不错的借鉴思路!
编译|阿豹
审核|Los
移步公众号【深蓝AI】,第一时间获取自动驾驶、人工智能与机器人行业最新最前沿论文和科技动态👇
深蓝AI·赋能AI+智驾+机器人