3D Gaussian Splatting 入门

1 摘要

3D Gaussian Splatting是一种将点云表示为高斯分布(Gaussian Distributions)的方法,用于3D重建、渲染等领域。这种方法通过在3D空间中对点云进行参数化,使得每个点不仅有位置(XYZ坐标),还拥有大小、方向和颜色等属性,从而可以更好地模拟3D结构的细节。这些属性通常通过高斯分布的参数(如均值、方差和颜色值)进行表示。

2 基本概念

  1. 高斯分布 (Gaussian Distribution):在3D高斯分布中,每个点会被视为一个"高斯点 (Gaussian Splat)"。这些点不仅包含位置,还具有形状和方向(通常以协方差矩阵描述)。协方差矩阵决定了该点的空间扩展方向,从而可以用来表示表面平滑度和物体细节。

  2. 点云的高斯参数化:点云中的每个点通常会被参数化为一个高斯核,用均值(位置)、协方差(形状)和颜色等来描述。与传统的3D重建方法相比,这种参数化能更有效地压缩数据,同时还能保留细节。

  3. 渲染过程:在3D渲染时,将每个高斯点投影到2D图像上,得到每个像素的颜色和透明度值。可以通过混合多个高斯点来渲染复杂场景。这种方法不需要网格化过程,相比三角网格(例如Mesh),能更高效地渲染点云数据。

3 预备知识

3.1 球谐函数

球谐函数(Spherical Harmonics)是一组定义在球面上的特殊函数,经常用于3D计算和图形学中,因为它们可以有效地描述球面上的任意函数。特别是在计算机图形学、物理和几何处理中,球谐函数被广泛应用于处理和表示照明、反射、以及高效压缩环境光照等任务。

1. 球谐函数的定义

2. 球谐函数的性质

3. 在计算机图形学中的应用

  1. 环境光照 (Ambient Occlusion):通过球谐函数可以高效地表示环境光。图形学中,环境光经常需要快速计算,球谐函数能够很好地捕捉场景中的低频光照,适用于静态的环境光表示。

  2. 全局照明:球谐函数常用于全局照明中低频光照分量的压缩和表示,使得在复杂光照下可以高效渲染出近似的高质量效果。

  3. 反射和BRDF表示:球谐函数可以用来表示物体表面的双向反射分布函数(BRDF),从而在不同角度下模拟出精细的反射效果。

4. 球谐函数展开

5. 球谐函数的可视化

由于球谐函数会在不同阶数 lll 和阶数 mmm 之间呈现不同的球面振荡模式,因此在图形上呈现出多种多样的形态。较低的阶数对应于较平滑、低频的特征,高阶数则对应较高频的特征。这些特征有助于捕捉复杂的光照和反射模式。

球谐函数的分解和表示通常在 3D 场景中用于快速计算环境光、阴影及物体反射。

3.2 Splatting

Splatting是一种点云渲染和处理技术,旨在通过在空间中绘制"点"或"高斯核"来表现复杂的3D场景。这种方法在计算机图形学和3D重建中广泛应用,尤其在处理大规模点云数据时,能够提供高效且高质量的渲染效果。

1. Splatting的基本原理

Splatting的核心思想是将每个点视为一个小的"斑点"或"高斯核",而不是单独渲染成一个点。每个点的"斑点"在屏幕上被映射为一个具有特定大小、形状和颜色的区域。通过将这些斑点叠加在一起,可以形成一个平滑且连续的图像。

关键步骤:
  • 点云数据:输入数据通常为一组3D点(如扫描或深度传感器获得的数据),每个点包含位置、颜色和可能的法线信息。

  • 高斯核定义:为每个点定义一个高斯核,核的大小和形状可以根据点的密度和所需的平滑程度进行调整。通常使用一个3D高斯分布来表示每个点的影响范围。

  • 投影到屏幕:在渲染过程中,将每个高斯核投影到2D屏幕上,计算每个像素的颜色和透明度。多个高斯核的叠加可以产生柔和的图像效果。

2. Splatting的优点

  • 高效性:Splatting能够有效处理大量点云数据,避免了传统三角网格化所带来的复杂性和计算负担。

  • 柔和渲染:由于每个点被视为一个区域而非一个离散的像素,splatting可以产生更平滑的图像,尤其适合于视觉上需要平滑过渡的场景。

  • 适应性强:可以根据场景的需要调整每个点的高斯核大小,能够在细节和性能之间找到平衡。

3. 应用场景

  1. 3D重建:在3D重建中,splatting可以用来构建复杂的物体表面和环境,尤其是在处理稀疏或不规则的点云时。

  2. 体绘制:在医学成像和科学可视化领域,splatting常被用于体数据的渲染,以显示内部结构和细节。

  3. 环境光渲染:可以使用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. 渲染过程

在渲染过程中,通常会执行以下步骤:

  1. 投影:将每个高斯点从3D空间投影到2D屏幕空间中,确定其影响范围和大小。

  2. 颜色贡献计算:对于每个像素,计算所有影响该像素的高斯点的颜色贡献和透明度。每个点的颜色会根据其在该像素的影响程度(通常与距离和高斯核的大小有关)进行加权。

  3. 合成颜色:使用 alpha blending 的公式将所有高斯点的贡献结合起来,生成最终的像素颜色。

在 Gaussian Splatting 中,alpha blending 允许多个高斯点以平滑的方式组合,从而在渲染稠密点云时产生自然的效果。这种技术不仅提高了视觉质量,还可以有效处理场景中的复杂光照和反射效果。通过适当调整每个点的透明度和影响范围,可以实现丰富的视觉效果和细节。

4 Gaussian Splatting 流程

相关推荐
LeapMay2 小时前
3D Gaussian Splatting代码详解(一):模型训练、数据加载
人工智能·深度学习·3d
BH042509094 小时前
VQGAN(2021-06:Taming Transformers for High-Resolution Image Synthesis)
计算机视觉·扩散模型·图像生成·cv
xhload3d4 小时前
掌控物体运动艺术:图扑 Easing 函数实践应用
大数据·3d·智慧城市·html5·webgl·数字孪生·可视化·数据可视化·工业互联网·轻量化·demo·hightopo·大屏展示·图形组件
BH042509094 小时前
VQ-VAE(2018-05:Neural Discrete Representation Learning)
人工智能·计算机视觉
贵州晓智信息科技7 小时前
Three.js Shader 与自定义材质—深入理解与应用
开发语言·javascript·3d·材质
Extraovo8 小时前
利用 Direct3D 绘制几何体—8.光栅器状态
c++·笔记·学习·3d
Extraovo8 小时前
利用 Direct3D 绘制几何体—10.几何图形辅助结构体
c++·笔记·学习·3d
思通数科大数据舆情9 小时前
开源AI助力医疗革新:OCR系统与知识图谱构建
人工智能·目标检测·机器学习·计算机视觉·目标跟踪·ocr·知识图谱
梦里水乡85717 小时前
MATLAB车道检测与跟踪
人工智能·计算机视觉·matlab