3D Gaussian Splatting 入门
1 摘要
3D Gaussian Splatting是一种将点云表示为高斯分布(Gaussian Distributions)的方法,用于3D重建、渲染等领域。这种方法通过在3D空间中对点云进行参数化,使得每个点不仅有位置(XYZ坐标),还拥有大小、方向和颜色等属性,从而可以更好地模拟3D结构的细节。这些属性通常通过高斯分布的参数(如均值、方差和颜色值)进行表示。
2 基本概念
高斯分布 (Gaussian Distribution):在3D高斯分布中,每个点会被视为一个“高斯点 (Gaussian Splat)”。这些点不仅包含位置,还具有形状和方向(通常以协方差矩阵描述)。协方差矩阵决定了该点的空间扩展方向,从而可以用来表示表面平滑度和物体细节。
点云的高斯参数化:点云中的每个点通常会被参数化为一个高斯核,用均值(位置)、协方差(形状)和颜色等来描述。与传统的3D重建方法相比,这种参数化能更有效地压缩数据,同时还能保留细节。
渲染过程:在3D渲染时,将每个高斯点投影到2D图像上,得到每个像素的颜色和透明度值。可以通过混合多个高斯点来渲染复杂场景。这种方法不需要网格化过程,相比三角网格(例如Mesh),能更高效地渲染点云数据。
3 预备知识
3.1 球谐函数
球谐函数(Spherical Harmonics)是一组定义在球面上的特殊函数,经常用于3D计算和图形学中,因为它们可以有效地描述球面上的任意函数。特别是在计算机图形学、物理和几何处理中,球谐函数被广泛应用于处理和表示照明、反射、以及高效压缩环境光照等任务。
1. 球谐函数的定义
2. 球谐函数的性质
3. 在计算机图形学中的应用
-
环境光照 (Ambient Occlusion):通过球谐函数可以高效地表示环境光。图形学中,环境光经常需要快速计算,球谐函数能够很好地捕捉场景中的低频光照,适用于静态的环境光表示。
-
全局照明:球谐函数常用于全局照明中低频光照分量的压缩和表示,使得在复杂光照下可以高效渲染出近似的高质量效果。
-
反射和BRDF表示:球谐函数可以用来表示物体表面的双向反射分布函数(BRDF),从而在不同角度下模拟出精细的反射效果。
4. 球谐函数展开
5. 球谐函数的可视化
由于球谐函数会在不同阶数 lll 和阶数 mmm 之间呈现不同的球面振荡模式,因此在图形上呈现出多种多样的形态。较低的阶数对应于较平滑、低频的特征,高阶数则对应较高频的特征。这些特征有助于捕捉复杂的光照和反射模式。
球谐函数的分解和表示通常在 3D 场景中用于快速计算环境光、阴影及物体反射。
3.2 Splatting
Splatting是一种点云渲染和处理技术,旨在通过在空间中绘制“点”或“高斯核”来表现复杂的3D场景。这种方法在计算机图形学和3D重建中广泛应用,尤其在处理大规模点云数据时,能够提供高效且高质量的渲染效果。
1. Splatting的基本原理
Splatting的核心思想是将每个点视为一个小的“斑点”或“高斯核”,而不是单独渲染成一个点。每个点的“斑点”在屏幕上被映射为一个具有特定大小、形状和颜色的区域。通过将这些斑点叠加在一起,可以形成一个平滑且连续的图像。
关键步骤:
-
点云数据:输入数据通常为一组3D点(如扫描或深度传感器获得的数据),每个点包含位置、颜色和可能的法线信息。
-
高斯核定义:为每个点定义一个高斯核,核的大小和形状可以根据点的密度和所需的平滑程度进行调整。通常使用一个3D高斯分布来表示每个点的影响范围。
-
投影到屏幕:在渲染过程中,将每个高斯核投影到2D屏幕上,计算每个像素的颜色和透明度。多个高斯核的叠加可以产生柔和的图像效果。
2. Splatting的优点
-
高效性:Splatting能够有效处理大量点云数据,避免了传统三角网格化所带来的复杂性和计算负担。
-
柔和渲染:由于每个点被视为一个区域而非一个离散的像素,splatting可以产生更平滑的图像,尤其适合于视觉上需要平滑过渡的场景。
-
适应性强:可以根据场景的需要调整每个点的高斯核大小,能够在细节和性能之间找到平衡。
3. 应用场景
-
3D重建:在3D重建中,splatting可以用来构建复杂的物体表面和环境,尤其是在处理稀疏或不规则的点云时。
-
体绘制:在医学成像和科学可视化领域,splatting常被用于体数据的渲染,以显示内部结构和细节。
-
环境光渲染:可以使用splatting方法进行环境光照的快速渲染,利用球谐函数表示光照场。
3.3 alpha-blending
在 Gaussian Splatting 中,alpha blending 是一种重要的技术,用于将多个高斯点的颜色和透明度结合起来,从而生成最终的图像效果。这种方法尤其适合处理稠密点云数据,因为每个点被视为一个高斯核,而不是简单的离散点。这使得渲染效果更加平滑和连续。
1. Gaussian Splatting 中的基本原理
在 Gaussian Splatting 中,每个点被表示为一个高斯分布,它具有以下属性:
- 位置:在三维空间中的位置(XYZ)。
- 颜色:点的颜色(RGB)。
- 透明度:通过 alpha 值来控制每个点的透明度。
当多个高斯点影响同一个像素时,alpha blending 被用来计算最终的像素颜色。
2. Alpha Blending 的公式
在 Gaussian Splatting 中,合成颜色的计算类似于常规的 alpha blending,但考虑到每个高斯点的贡献,公式如下:
3. 渲染过程
在渲染过程中,通常会执行以下步骤:
-
投影:将每个高斯点从3D空间投影到2D屏幕空间中,确定其影响范围和大小。
-
颜色贡献计算:对于每个像素,计算所有影响该像素的高斯点的颜色贡献和透明度。每个点的颜色会根据其在该像素的影响程度(通常与距离和高斯核的大小有关)进行加权。
-
合成颜色:使用 alpha blending 的公式将所有高斯点的贡献结合起来,生成最终的像素颜色。
在 Gaussian Splatting 中,alpha blending 允许多个高斯点以平滑的方式组合,从而在渲染稠密点云时产生自然的效果。这种技术不仅提高了视觉质量,还可以有效处理场景中的复杂光照和反射效果。通过适当调整每个点的透明度和影响范围,可以实现丰富的视觉效果和细节。
4 Gaussian Splatting 流程