论文地址:https://arxiv.org/abs/2308.04079
项目:
https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/
代码:
git clone
https://github.com/graphdeco-inria/gaussian-splatting ---recursive
一、文章概述
1.问题导向
辐射场:辐射场是三维空间中光分布的表示,它捕捉光如何与环境中的表面和材料相互作用。
显式辐射场:相反,显式辐射场直接表示离散空间结构中的光分布,
隐式辐射场 :隐式辐射场表示场景中的光分布,而不明确定义场景的几何体。
显式表达方法(点、网格、体素)的连续性质有助于优化,但渲染所需的随机采样成本高昂,并且可能会导致噪声。隐式表达(NeRF)耗费计算资源巨大,运行速度慢。3D GS 表示从隐式辐射场到显式辐射场的转变。它通过利用3D高斯作为灵活高效的表示,利用了这两种方法的优势。
2.目标
提出一个实时且能够高质量渲染场景的方法,通过结合离散和连续表示方法的优势,不仅克服了传统方法在噪声和渲染质量方面的限制,而且极大地提高了渲染速度。
3.摘要
辐射场方法最近彻底改变了用多张照片或视频捕获的场景的新颖视角合成。然而,要获得高视觉质量,仍然需要训练和渲染成本高昂的神经网络,而最近更快的方法不可避免地要牺牲速度来换取质量。对于无界和完整的场景(而不是孤立的对象)和1080p分辨率的渲染,目前还没有一种方法可以达到实时显示速率。我们引入了三个关键元素,使我们能够在保持有竞争力的训练时间的同时获得最先进的视觉质量,并重要的是允许在1080p分辨率下进行高质量的实时(≥30 fps)新颖视图合成。
首先,从摄像机标定过程中产生的稀疏点开始,我们用3D高斯球 表示场景,它保留了场景优化中连续体积辐射场的理想性质,同时避免了在空空间中不必要的计算;其次,我们对 3D高斯线进行交错优化/密度控制 ,特别是优化了各向异性协方差,以获得准确的场景表示;第三,我们开发了一种支持各向异性飞溅的快速可见性感知渲染算法,既加快了训练速度,又允许实时渲染。我们在几个已建立的数据集上演示了最先进的视觉质量和实时渲染。
4.贡献
-
引入各向异性3D高斯球作为辐射场的高质量、非结构化表示。
-
一种3D高斯属性的优化方法,与自适应密度控制交织在一起,为捕获的场景创建高质量的表示。
-
一种适用于GPU的快速可微渲染器。
二、方法解析
2.1 系统pipeline
输入:点云
输出:渲染图像
-
从初始的sfm点云出发,以每个点为中心生成3DGS。
-
用相机参数把点投影到图像平面上(splatting)。
-
从splatting的痕迹中tile-based光栅化,得到渲染图像,将渲染图像和GT求LOSS,反向传播。
-
自适应的密度控制模块根据传递到点上的梯度,来决定是否需要对3DGS做分割或者克隆。梯度传递到3DGS里面对其存储的那几个参数进行更新。
2.2 3D Gaussian 球表示三维模型
使用 3D Gaussian 球表示三维模型,效果如下,其主要分为两步1、构建雪球 2、抛雪球。高斯抛雪球表示三维场景效果如下
- 构建雪球
直接使用球体来表示三维模型效果并不好,如下图所示,就像《我的世界》用方块来表示世界一样不能精细的表达场景,因为每个体的边缘过于僵硬。一个有效解决是让边缘变得模糊,这时便想到了高斯分布,重要信息的地方权重大一些,边缘信息的权重小一些。我们在冬天捏雪球时,也是雪球中间的地方最硬。
- 抛雪球
"Splatting" 是一种计算机图形学中常用的渲染技术。它的基本思想是将点云中的每个点视为一个二维的、具有一定大小和属性的粒子(或称为"splat"),然后将这些粒子投影到屏幕上并绘制成像素,以生成最终的图像。把场景用球体表示后,如何将3D空间转化为2D视角,作者用的抛雪球这个名字很形象。我们可以想象一个朝一面墙抛雪球的场景,雪球扁扁的贴到墙上,越中心的位置雪越多。我们假设空间中有很多雪球,我们依次将其抛到墙上,最后就将3D雪球转化到2D墙面。我们发现一些雪球的边缘地方慢慢会被其他雪球覆盖和吞噬,上述过程就是高斯抛雪球的核心思想。
点击【文献】3D Gaussian Splatting for Real-Time Radiance Field Rendering可查看全文