3D Gaussian Splatting 入门

news2024/11/29 10:50:27

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.coloradmin.cn/o/2227244.html

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

相关文章

https和http的区别,及HTTPS的工作流程

HTTP(HyperText Transfer Protocol)和HTTPS(HyperText Transfer Protocol Secure)都是超文本传输协议,但它们之间的关键区别在于安全性。 安全性: HTTP:数据以明文传输,没有加密&…

Docker | 将本地项目发布到阿里云的实现流程

发布到阿里云 本地镜像发布到阿里云流程具体流程1. docker commit 生成新镜像文件2. 查看镜像3. 阿里云开发者平台选择控制台,进入容器镜像服务,选择个人实例创建命名空间仓库名称进入管理界面获得脚本推送到阿里云 补充: docker tag 命令基本…

基于Pyecharts的数据可视化开发(二)调用通义千问api分析爬虫数据

上一篇博客做了关于“广州市2023年天气情况”的数据爬取,并保存为.csv文件。下一步是想用生成的.csv文件,直接调用大模型api进行分析,得出结论。通过调研,阿里云的通义千问大模型qwen-long可以实现对文件数据的分析。 通义千问大模…

【C++】入门C++

1.C的第一个程序 之前写的C语言文件都是后缀为.c的文件,进入C后就要把后缀改为.c了,vs编译器看到是.cpp就会调⽤C编译器编译。C兼容C语言的绝大多数语法,所以C语言的 hallo word 依旧可以在C下使用。 //test.cpp //c语言的hallo world #inc…

快速上手机器学习-朴素贝叶斯

朴素贝叶斯 引言:本文通过介绍先验概率,后验概率,条件概率计算和贝叶斯定理等概率论内容引入朴素贝叶斯分类算法的基本思路,朴素贝叶斯的最终分类思想是将输入分类给概率最大的类,这也是概率模型算法的共有思想。本文专…

【测试平台】打包 子节点android环境配置

背景 本文记录不是安卓Gradle打包,因为我们google play提审,为了规避跟下架包的相似度避免马甲包封号,使用混淆逻辑。 打包环境部署 申请对应虚拟机会有两个账号root和admin,主要避免root账号权限过高造成脚本误操作。这里面问题…

模型融合新趋势!Transformer领域专家纷纷布局,高分成果轻松达成!

今天给大家分享一个能发A会且不卷的方向:模型融合! 光是ICLR2025的投稿,其增长就跃升至前30,可见热度很高!但相比其他领域,总量还不大,相对蓝海,创新空间很大。 其所以这么热门&am…

1.机器人抓取与操作介绍-深蓝学院

介绍 操作任务 操作 • Insertion • Pushing and sliding • 其它操作任务 抓取 • 两指(平行夹爪)抓取 • 灵巧手抓取 7轴 Franka 对应人的手臂 6轴 UR构型去掉一个自由度 课程大纲 Robotic Manipulation 操作 • Robotic manipulation refers…

spark豆瓣书籍推荐系统-计算机毕业设计源码53447

摘要 本论文主要论述了如何基于Spark开发一个豆瓣书籍推荐系统,本系统将严格按照软件开发流程进行各个阶段的工作,面向对象编程思想进行项目开发。在引言中,作者将论述豆瓣书籍推荐系统的当前背景以及系统开发的目的,后续章节将严…

macOS开发环境配置与应用开发教程

macOS开发环境配置与应用开发教程 引言 macOS是一个强大的操作系统,广泛应用于软件开发,尤其是iOS和macOS应用开发。本文将详细介绍如何配置macOS开发环境,并通过实例演示如何进行应用开发。希望通过这篇文章,帮助读者快速上手m…

Unity吃鸡背包系统笔记

功能需求 查看玩家拥有的所有物品,可以放下其中的任意物品;查看已死的他人背包的物品,可以拿起其中的任意物品;查看附近的物品,可以拿起其中的任意物品(暂时不考虑背包容量); 难点 …

《Linux系统编程篇》fork函数——基础篇

文章目录 引言fork() 函数概述父子进程 fork函数fork() 的常见问题fork() 的优势与限制 结论 命为志存。 —— 朱熹 引言 《Linux系统编程篇》——基础篇首页传送门 本节我们正式进入Linux的进程代码编写。 fork() 是 Unix 系统中一个重要的系统调用,用于创建一个…

MySQL 8 下载与安装攻略

MySQL是一个流行的关系型数据库管理系统,目前MySQL属于Oracle公司的,关于MySQL的详细介绍可以参考: MySQL 的完整介绍 本篇主要关注MySQL 的下载和安装。 MySQL 下载 官方下载 进入MySQL 的下载页面 :https://dev.mysql.com/do…

HarmonyOS 鸿蒙开发 路由跳转报错this uri is empty, not support in route push.

检查方案1: 工程目录下 entry > src > main > resources > base > profile > main_pages.json中检查是否配置了NextPage 检查方案2: 在路由跳转的代码中检查是否路径配置错误 这里要注意,url的路径一定要和main_pages.json…

芯片上音频相关的验证

通常芯片设计公司(比如QUALCOMM)把芯片设计好后交由芯片制造商(比如台积电)去生产,俗称流片。芯片设计公司由ASIC部门负责设计芯片。ASIC设计的芯片只有经过充分的验证(这里说的验证是FPGA(现场…

【VSCode】配置

安装插件 C vscode-icons gdb调试 https://www.bilibili.com/video/BV15U4y1x7b2/?spm_id_from333.999.0.0&vd_sourcedf0ce73d9b9b61e6d4771898f1441f7f https://www.bilibili.com/video/BV1pU4y1W74Z?spm_id_from333.788.recommend_more_video.-1&vd_sourcedf0…

springboot使用枚举作为接口的参数

1.定义枚举类 2.定义接口 3.具体实现方法 4.apifox传入参数 枚举的具体’名称’就可以了 5.调试 6.进入断点,这样我们发现在接口的参数就映射到应的枚举类上了

数据结构(8.4_3)——堆的插入删除

在堆中插入新元素 在堆中删除元素 总结:

《计算机网络网络层:连接虚拟世界的关键桥梁》

一、网络层概述 网络层在计算机网络中占据着至关重要的地位,它作为连接不同网络的关键层次,起着承上启下的作用。网络层的主要任务是实现网络互连,将数据设法从源端经过若干个中间节点传送到目的端,为分组交换网上的不同主机提供通…

【linux】fdisk磁盘分区管理

介绍 fdisk是一个磁盘分区管理工具,可以用来创建、删除、修改和查看磁盘分区。 fdisk一般都是交互式使用,基础语法: fdisk /dev/sdd。进入交互窗口后,有一些选项,需要了解下: 选项含义n创建新分区p查看磁盘的分区情…