3DGS如何重塑点云配准?港中大开源首例3DGS配准工作!

论文标题:

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+智驾+机器人

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3266782.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

JavaScript(15)——操作表单元素属性和自定义属性

操作表单元素属性 表单很多情况,也需要修改属性,比如点击眼睛可以看到密码,本质是把表单类型转换为文本框正常的有属性有取值的,跟其他的标签属性没有任何区别 获取:DOM对象.属性名 设置:DOM对象.属性名…

国产超低功耗、±0.5℃精度的数字温度传感芯片 - M601B

温度传感芯片感温原理基于CMOS半导体PN节温度与带隙电压的特性关系,经过小信号放大、模数转换、数字校准补偿后,数字总线输出,具有精度高、一致性好、测温快、功耗低、可编程配置灵活、寿命长等优点。 数字温度传感芯片 - M601B,该…

如何解决 Nginx 与自动驾驶系统的集成问题?

🍅关注博主🎗️ 带你畅游技术世界,不错过每一次成长机会! 文章目录 如何解决 Nginx 与自动驾驶系统的集成问题? 如何解决 Nginx 与自动驾驶系统的集成问题? 在当今科技飞速发展的时代,自动驾驶…

【基础算法总结】队列 + 宽搜(BFS)

队列 宽搜BFS 1.N 叉树的层序遍历2.二叉树的锯齿形层序遍历3.二叉树最大宽度4.在每个树行中找最大值 点赞👍👍收藏🌟🌟关注💖💖 你的支持是对我最大的鼓励,我们一起努力吧!😃&#…

配置web服务器练习

4练习要求: 练习一:配置web服务器,当访问网站 www.haha.com 时显示:haha 练习二:配置web服务器,当访问网站 www.xixi.com/secret/ 时显示:this is secret 具体步骤: 1、配置yum…

go程序在windows服务中优雅开启和关闭

本篇主要是讲述一个go程序,如何在windows服务中优雅开启和关闭,废话不多说,开搞!!!   使用方式:go程序 net服务启动 Ⅰ 开篇不利 Windows go进程编译后,为一个.exe文件,直接执行即…

docker挂载部署reids6.2.1

1.拉取镜像 docker pull redis:6.2.12.创建挂在目录(根据自己要求修改具体目录) mkdir -p /home/admin/redis/{data,conf}3.在/home/admin/redis/conf目录下创建redis.conf文件 cd /home/admin/redis/conf touch redis.conf4.复制下面文本到redis.conf…

实时同步:使用 Canal 和 Kafka 解决 MySQL 与缓存的数据一致性问题

目录 1. 准备工作 2. 将需要缓存的数据存储 Redis 3. 监听 canal 存储在 Kafka Topic 中数据 1. 准备工作 1. 开启并配置MySQL的 BinLog(MySQL 8.0 默认开启) 修改配置:C:\ProgramData\MySQL\MySQL Server 8.0\my.ini log-bin"HELO…

数据库练习——编写触发器及存储过程

1. 触发器 建立两个表:goods(商品表)、orders(订单表) 在商品表中导入商品记录 mysql> create database mydb16_trigger; Query OK, 1 row affected (0.00 sec)mysql> use mydb16_trigger; Database changed mysql> create table goods(-> gid char(8) primary …

系统架构师(每日一练7)

每日一练 1.关于网络延迟正确的是()。答案与解析 A.在对等网络中,网络的延迟大小与网络中的终端数量无关 B.使用路由器进行数据转发所带来的延迟小于交换机, C.使用internet服务器可最大程度地减小网络延迟 D.服务器延迟的主要影响因素是队列延迟和磁盘10延迟 2.以…

idea中项目目录,文件显示不全问题

问题:idea中项目目录显示不全问题 解决办法1: 删除目录中的.idea文件 用idea重新打开文件就行了 办法2:手动导入为maven项目 1. 2. 3. 4.选择要导入的项目,导入为maven

【网络流】——初识(最大流)

网络流-最大流 基础信息引入一些概念基本性质 最大流定义 Ford–Fulkerson 增广Edmons−Karp算法Dinic 算法参考文献 基础信息 引入 假定现在有一个无限放水的自来水厂和一个无限收水的小区,他们之间有多条水管和一些节点构成。 每一条水管有三个属性&#xff1a…

重拾CSS,前端样式精读-函数(颜色,计算,图像和图形)

前言 本文收录于CSS系列文章中,欢迎阅读指正 在计算机编程中,函数有着重要的作用和意义,它可以实现封装,复用,模块化,参数等功能效果,在如何在CSS中写变量?一文带你了解前端样式利…

AI学习记录 - 图像识别的基础入门

代码实现,图像识别入门其实非常简单,这里使用的是js,其实就是把二维数组进行公式化处理,处理方式如上图,不同的公式代表的不同的意义,这些意义网上其实非常多,这里就不细讲了。 const getSpecif…

【YOLOv8系列】图像分类篇----通过YOLOv8实现图像分类功能

最近需要使用YOLOv8对自己的数据集进行训练,从而实现图像分类的功能,因此记录一下整个过程。 YOLOv8的github地址:https://github.com/ultralytics/ultralytics 参考链接:超详细YOLOv8图像分类全程概述:环境、训练、验证与预测详解 文章目录 一、YOLOv8环境搭建二、准备…

电脑QQ录屏功能怎么用?图文教程,轻松掌握电脑录屏

“想问一下大家知道电脑QQ录屏功能怎么打开吗?一直以来我使用电脑QQ截图非常方便,但不知道原来QQ还有录屏功能。希望知道QQ录屏功能使用方法的朋友教一下我好吗?” 今天,就让我带大家一起探索电脑QQ录屏功能怎么用?看…

怎么注册自己的电子邮件地址

无论是在职场上的工作沟通、日常的在线购物、或是订阅各类新闻资讯,电子邮件都是您不可或缺的数字化工具。本文将手把手引导您完成注册过程,从选择服务商到完成所有必要步骤,帮助您轻松拥有自己的电子邮件账户。 一、选择电子邮件服务商 市…

友盟U-APM——优秀的前端性能监控工具

在数字化转型浪潮的推动下,移动应用已成为企业连接用户、驱动业务增长的核心载体。然而,随着应用复杂度的日益提升,用户对于应用性能稳定性的期待也水涨船高。面对应用崩溃、卡顿、加载缓慢等频发问题,如何确保应用的流畅运行,成为产研团队亟待解决的关键挑战。在此背景下,友盟…

常见的CSS属性(一)——字体、文本、边框、内边距、外边距、背景、行高、圆角、透明度、颜色值

一、字体 二、文本 三、边框 四、外边距 五、内边距 六、背景 七、行高 八、圆角 九、透明度 九、颜色值 元素的继承性是指给父元素设置了某些属性,子元素或后代元素也会有作用。 一、字体 “font-*”是字体相关的属性,具有继承性。代码如下&a…

浅谈监听器之简单数据写入

浅谈监听器之简单数据写入 “简单数据写入”(Simple Data Writer)监听器便是其中之一,它提供了一种简便的方式来将测试结果直接输出到文件中,便于后续的数据分析与处理。 简单数据写入监听器概述 “简单数据写入”监听器&#…