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.xdnf.cn/news/2282.html

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

相关文章

快速遍历包含合并单元格的Word表格

Word中的合并表格如下,现在需要根据子类(例如:果汁)查找对应的品类,如果这是Excel表格,那么即使包含合并单元格,也很容易处理,但是使用Word VBA进行查找,就需要一些技巧。…

微服务系列四:热更新措施与配置共享

目录 前言 一、基于Nacos的管理中心整体方案 二、配置共享动态维护 2.1 分析哪些配置可拆,需要动态提供哪些参数 2.2 在nacos 分别创建共享配置 创建jdbc相关配置文件 创建日志相关配置文件 创建接口文档配置文件 2.3 拉取本地合并配置文件 2.3.1 拉取出现…

抖音短剧小程序上线:短视频平台的全新娱乐体验

抖音短剧小程序的开发是一个结合了创意与技术的过程,旨在通过简洁而富有吸引力的方式,向用户提供高质量的短剧内容。随着移动互联网的快速发展,短视频平台成为了人们日常生活中不可或缺的一部分,而短剧作为一种新兴的内容形式&…

【解决】Ubuntu18.04 卸载python之后桌面异常且终端无法打开,重启后进入tty1,没有图形化界面

我因为python版本太过于混乱 (都是为了学习os) ,3.6—3.9版本我都安装了,指向关系也很混乱,本着“重装是最不会乱”的原则,我把全部版本都卸载了。然后装了3.9 发现终端打不开了,火狐浏览器的图…

Golang | Leetcode Golang题解之第521题最长特殊序列I

题目: 题解: func findLUSlength(a, b string) int {if a ! b {return max(len(a), len(b))}return -1 }func max(a, b int) int {if b > a {return b}return a }

【英特尔IA-32架构软件开发者开发手册第3卷:系统编程指南】2001年版翻译,2-13

文件下载与邀请翻译者 学习英特尔开发手册,最好手里这个手册文件。原版是PDF文件。点击下方链接了解下载方法。 讲解下载英特尔开发手册的文章 翻译英特尔开发手册,会是一件耗时费力的工作。如果有愿意和我一起来做这件事的,那么&#xff…

二叉树中的深搜 算法专题

二叉树中的深搜 一. 计算布尔二叉树的值 计算布尔二叉树的值 class Solution {public boolean evaluateTree(TreeNode root) {if(root.left null) return root.val 0? false: true;boolean left evaluateTree(root.left);boolean right evaluateTree(root.right);return…

VisionPro —— CogPatInspectTool对比工具

一、CogPathInspectTool工具简介 CogPathInspectTool是VisionPro重要的工具,主要用于缺陷检测,通过将当前图像与“训练图像”对比,获取“原始差异图像”,再将“原始差异图像”与“阈值图像”进行对比,进而获取“阈值差…

Linux 系统启动

1.Linux系统启动过程 Linux系统启动过程可以分为5个阶段:内核的引导、运行 init、系统初始化、建立终端、用户登录系统。 2.内核引导 当计算机打开电源后,首先是BIOS开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启…

Qt 坐标系统与坐标变换

Qt 坐标系统与坐标变换 坐标变换函数 QPainter坐标变换相关函数 分组函数原型功能坐标变换void translate(qreal dx,qreal dy)坐标系统一定的偏移量,坐标原点平移到新的点void rotate(qreal angle)坐标系统顺时针旋转-一个角度void scale(qreal sx,qreal sy)坐标…

奥数与C++小学四年级(第十六题 魔法学院)

参考程序代码&#xff1a; #include <iostream>int main() {int maxStudentsPerSubject 9; // 每个科目最多有9个比哈利高的学生int students maxStudentsPerSubject * 3; // 三个科目// 加上哈利自己int totalStudents students 1;std::cout << "最大学…

高空作业未系安全带监测系统 安全带穿戴识别预警系统

在各类高空作业场景中&#xff0c;安全带是保障作业人员生命安全的关键防线。然而&#xff0c;由于人为疏忽或其他原因&#xff0c;作业人员未正确系挂安全带的情况时有发生&#xff0c;这给高空作业带来了巨大的安全隐患。为有效解决这一问题&#xff0c;高空作业未系安全带监…

备战“双11”丨AI+物流:你的快递会有什么变化?

背景 在中国&#xff0c;每天有数以亿计的包裹在运输&#xff0c;尤其在电商促销季如“双十一”、“618”期间&#xff0c;快递量更是激增。快递物流行业面临人员短缺、配送效率低下和物流承载能力有限等问题。快瞳科技提供的AI识别解决方案通过智能化手段提高工作效率和配送准…

Cesium的PickModel浅析

Cesium中的拣选(pick)具备一套比较巧妙机制&#xff0c;。可以简单的认为&#xff0c;Cesium的常规的鼠标拣选是基于最终成图做的。就如同下面的这幅画&#xff0c;红色的箭头指向牛的臀&#xff0c;而不是后面的房子&#xff0c;是因为牛挡住了房子。这是一种比较自然的理解方…

针对告警数量、告警位置、告警类型等参数进行统计,并做可视化处理的智慧能源开源了

一、简介 AI视频监控平台, 是一款功能强大且简单易用的实时算法视频监控系统。愿景在最底层打通各大芯片厂商相互间的壁垒&#xff0c;省去繁琐重复的适配流程&#xff0c;实现芯片、算法、应用的全流程组合&#xff0c;减少企业级应用约 95%的开发成本&#xff0c;在强大视频算…

【教学类-12-10】20241104《连连看竖版6*6 (3套题目空心图案)中2班

【教学类-12-09】20230228《连连看竖版6*6 &#xff08;3套题目空心图案&#xff08;中班教学&#xff09;》&#xff08;中班主题《玩具总动员》)-CSDN博客文章浏览阅读121次。【教学类-12-09】20230228《连连看竖版6*6 &#xff08;3套题目空心图案&#xff08;中班教学&…

Windows系统使用diskpart命令格式化U盘

Windows系统使用diskpart命令格式化U盘 1、以管理员身份运行CMD命令提示符 2、输入【diskpart】进入diskpart命令行界面 3、输入【list disk】命令&#xff0c;查看本机所有磁盘 4、这里以格式化【磁盘4】为列&#xff0c;输入【select disk 4】命令&#xff0c;选择磁盘4…

Uni商城-开源项目

目录 概述 技术选型 前端 后端 数据库&#xff1a;MongoDB 项目原型图 项目实现效果图 Tabbar页面 微信一键登录 ​编辑加入购物车 ​编辑 首页商品分类过滤 商品搜索 商品下单 收货地址选择/管理&#xff08;内置组件&#xff09; ​编辑 购物车下单 ​编辑 优…

电脑开机显示无信号然后黑屏怎么办?

当我们打开电脑时&#xff0c;遇到电脑屏幕出现了无信号并且黑屏&#xff0c;常常会让我们感到困扰。很多朋友都会遇到显示器无信号的情况&#xff0c;其实这种故障是很好解决的&#xff0c;但是电脑小白&#xff0c;并不知道电脑屏幕显示无信号然后黑屏了要怎么去修复。不用担…

Linux Kernel Programming (个人读书笔记)

目录 Before everything begins 笔者的环境 关于如何在Arch Linux下载Virtual Box 下载一个镜像&#xff0c;然后开启一个简单的虚拟机 在Ubuntu虚拟机下东西 配置我们的内核 啥是KConfig和KBuild? 构建内核配置选择 启动&#xff01;一个好的内核配置的开始 使用分发…