当前位置: 首页 > article >正文

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 流程

 

 


http://www.kler.cn/a/377968.html

相关文章:

  • 商品信息的修改、删除功能
  • DCRNN解读(论文+代码)
  • Docker可视化管理面板DPanel的安装
  • [neo4j报错]py2neo.errors.ClientError: [Request.Invalid] Not Found解决方案
  • Windows的MySQL开机自动启动问题
  • ELK之路第三步——日志收集筛选logstash和filebeat
  • 8.5K+ Star!Skyvern:一个基于LLMs和计算机视觉自动化浏览器工作流的工具
  • Day 41 || 1049. 最后一块石头的重量 II 、494. 目标和、474.一和零
  • 机器学习之fetch_olivetti_faces人脸识别--基于Python实现
  • 数据智能驱动金融策略优化:民锋智能分析技术的应用
  • 深度学习-38-基于PyTorch的卷积神经网络AlexNet
  • 【Java笔记】1-JDK/JRE/JVM是个啥?
  • Golang | Leetcode Golang题解之第518题零钱兑换II
  • pgsql数据量大之后可能遇到的问题
  • SpringCloudAlibaba实战入门之OpenFeign高级用法(十)
  • 数据结构-二叉树中的递归
  • [每周一更]-(第121期):模拟面试|微服务架构面试思路解析
  • 虚函数和纯虚函数是 C++ 中实现多态性的关键概念
  • 【算法笔记】位运算算法原理深度剖析
  • 单向函数、单向陷门函数、困难问题
  • PHP的 CSRF、XSS 攻击和防范
  • promise的catch放在then前面的场景
  • OpenGL入门003——使用Factory设计模式简化渲染流程
  • 从零开始的c++之旅——继承
  • SMTP协议,即简单邮件传输协议
  • 20241031 Apache2修改日志里面的时间格式