3D Gaussian Splatting

3D高斯溅射(3D Gaussian Splatting )是一种基于显式三维高斯分布的场景表示与渲染方法。与传统的三维重建技术(如多边形网格、点云或隐式神经辐射场NeRF)不同,3DGS将场景表示为大量带有属性的3D高斯椭球的集合,每个高斯椭球包含位置、形状(协方差矩阵)、颜色(球谐系数)和不透明度等信息。

3DGS的核心思想源自计算机图形学中的"溅射"(Splatting)技术,这是一种将离散的点数据转换为连续图像的方法。在3DGS中,每个3D高斯椭球被"溅射"到二维图像平面上,通过可微分的渲染流程生成最终的图像。这种方法结合了点云的直观性和神经渲染的高质量,同时克服了传统方法的诸多限制。

与传统方法相比,3DGS具有几个显著优势:

  • 渲染效率高:支持实时渲染(30FPS以上),比NeRF快数百至数千倍

  • 训练速度快:通常只需几分钟到几十分钟即可完成一个场景的训练

  • 显式表示:场景由明确的高斯椭球构成,便于编辑和控制

  • 高质量细节:能够捕捉场景的精细几何和复杂外观

什么是Splatting?

Splatting流程

选择雪球

为什么选择3D高斯椭球?

3d高斯为什么是椭球?

协方差矩阵?

  • μ表示高斯中心的位置(3D坐标)

  • Σ是协方差矩阵,控制高斯的形状和方向

  • x是空间中的任意点

各向同性和各向异性?

协方差矩阵如何控制椭球形状?

协方差矩阵为什么能用旋转和缩放矩阵表达?

A是旋转R乘以缩放S,已知协方差矩阵可以通过特征值分解来求R,S。

计算协方差矩阵代码

左边是CUDA代码,右边是用Python代码重写。mod是缩放,rot是旋转。协方差矩阵可以控制椭球形状,用旋转和缩放控制协方差矩阵

如何参数估计?

3D到像素

观测变换

投影变换

视口变换

光栅化

3D高斯的观测变换

3D高斯投影变换

均值可以正常变到NDC的坐标系因为他是一个数,但协方差矩阵不行。

雅可比矩阵

投影变换的雅可比矩阵

对高斯核中心做视口变换

高斯中心变换:

观测变换->投影变换->视口变换->光栅化

3D高斯球的颜色

合成图片

  • 不透明度(α):控制该高斯对最终图像的贡献程度

  • 球谐系数(SH):用于表示视角相关的颜色,支持复杂光照效果的建模

  • 颜色(c):基础颜色值

nerf

为什么3dgs更快

机器学习与参数评估

 

3DGS的渲染流程是将3D高斯投影到2D图像平面的过程,主要包括以下步骤:

  1. 投影变换:将3D高斯根据相机参数投影到2D图像平面。投影后的2D高斯协方差矩阵Σ'可表示为:
    Σ' = JWΣW^TJ^T
    其中J是投影变换的雅可比矩阵,W是视图变换矩阵

  2. 光栅化:对每个像素,收集所有重叠的2D高斯,按深度排序后,采用alpha混合公式计算最终颜色:
    C = Σ(ci αi Π(1-αj))
    其中ci是第i个高斯的颜色,αi是其不透明度,j遍历所有前面的高斯

  3. 梯度回传:渲染过程是完全可微分的,允许通过反向传播优化所有高斯参数

3DGS的完整技术流程

3DGS的实现包含一系列精心设计的步骤,从数据准备到最终渲染。下面我们将详细剖析3DGS的完整技术流程,帮助您理解这一技术如何从多视角图像重建出高质量的三维场景。

1. 数据预处理与相机标定

3DGS流程的第一步是场景数据的准备和相机参数的标定。这一阶段通常使用运动恢复结构(Structure from Motion, SfM)技术完成:

  • 输入数据:一组从不同视角拍摄的场景图像(通常需要一定重叠度)

  • 特征提取与匹配:检测图像中的特征点并在多视图间建立对应关系

  • 稀疏重建:通过多视图几何计算相机参数(位置、朝向、内参)和稀疏3D点云

  • 输出:校准后的相机参数和初始稀疏点云(如COLMAP格式)

这一步骤为后续的高斯初始化提供了几何基础视角约束,对最终重建质量至关重要。相机标定的准确性直接影响3DGS的重建效果,因此在实际应用中常需要精心调整SfM参数或进行人工校验。

2. 3D高斯初始化

基于SfM输出的稀疏点云,3DGS开始构建初始的高斯表示:

  • 高斯创建:为每个稀疏3D点创建一个初始高斯椭球

  • 初始参数设置

    • 位置(μ):直接使用点云中的3D点坐标

    • 协方差(Σ):初始化为各向同性小椭球(通常基于点云密度自动确定)

    • 不透明度(α):初始设为中等值(如0.5)

    • 颜色(c):从输入图像中采样对应点的颜色

    • 球谐系数(SH):初始化为产生视角无关的基础颜色

初始高斯的数量通常与稀疏点云中的点数相同,但在后续优化过程中会通过自适应密度控制动态调整。

3. 可微分渲染与优化

初始化后,系统进入迭代优化阶段,通过可微分渲染不断调整高斯参数:

  1. 前向渲染

    • 对于每个训练视角,将3D高斯投影到图像平面

    • 使用alpha混合光栅化生成预测图像

    • 计算预测图像与真实图像之间的差异(L1、SSIM等损失)

  2. 反向传播

    • 通过可微分渲染管道回传梯度

    • 更新高斯的位置、形状、颜色和不透明度等参数

    • 采用类似Adam的优化器进行参数更新

  3. 自适应密度控制

    • 定期评估各高斯对最终渲染的贡献

    • 移除不重要的高斯(透明度高或视角一致性差)

    • 在重建不足的区域分裂高斯(将一个大高斯分裂为多个小高斯)

    • 在过度重建的区域克隆高斯(复制并略微偏移)

这一阶段通常需要数万次迭代,但在现代GPU上只需几分钟到几十分钟即可完成。

4. 场景渲染与后处理

优化完成后,3DGS场景可以高效渲染新视角:

  • 实时渲染:使用优化后的高斯集合,任何新视角都可以通过GPU光栅化管道快速渲染

  • 抗锯齿处理:通过各向异性滤波或超采样减少边缘锯齿

  • 动态效果:支持运动模糊、景深等后处理效果

值得注意的是,3DGS的渲染不需要预先烘焙或复杂预处理,使得它特别适合交互式应用。

流程总结

3DGS的完整流程可以概括为:数据采集→相机标定→高斯初始化→可微分渲染优化→自适应密度控制→最终渲染。这一流程巧妙结合了传统多视图几何与现代可微分渲染技术,实现了高质量且高效的三维重建

3DGS的关键技术与创新点

3DGS之所以能够取得突破性进展,得益于其多项关键技术设计。这些创新点共同解决了传统三维表示和渲染中的诸多难题,使3DGS在质量、速度和灵活性方面都达到了新高度。

1. 自适应密度控制

自适应密度控制是3DGS最核心的创新之一,它动态调整场景中高斯点的分布和密度,以平衡重建质量和计算效率:

  • 高斯分裂:在重建不足的区域(如高频细节处),将大高斯分裂为多个小高斯,提升局部细节表现

  • 高斯克隆:在需要更多覆盖的区域(如边缘处),复制现有高斯并略微偏移,增强连续性

  • 高斯修剪:定期移除对渲染贡献小的高斯(透明度高于阈值或视角一致性差),提高存储和计算效率

这一机制使3DGS能够自动适应不同复杂度的场景区域,无需人工干预。与需要预设分辨率的网格或体素方法不同,3DGS的自适应密度控制使其在简单区域节省资源,在复杂区域增加容量。

2. 可微分高斯溅射渲染

3DGS设计了完全可微分的溅射渲染管道,这是实现端到端优化的关键:

  • 精确投影:将3D高斯准确投影到2D图像平面,保持几何一致性

  • 高效光栅化:利用现代GPU的并行计算能力,快速计算各像素受哪些高斯影响

  • Alpha混合:沿深度方向正确混合重叠高斯的颜色和不透明度

  • 梯度传播:精心设计的导数计算,确保梯度能够有效回传到所有高斯参数

与传统点云渲染不同,3DGS的溅射渲染考虑了高斯形状和视角变化,避免了空洞和走样问题。同时,其可微分特性使优化过程能够同时考虑几何和外观因素。

3. 基于球谐函数的视角相关外观

3DGS使用球谐函数(Spherical Harmonics, SH)建模视角相关的光照效果:

  • 低阶SH系数(通常2-3阶)表示基础颜色和简单光照变化

  • 高阶SH系数捕捉更复杂的光照变化和材质特性

  • 每个高斯存储一组SH系数,在渲染时根据视角方向计算实际颜色

这种方法使3DGS能够以相对紧凑的表示(相比存储所有可能视角的颜色)实现真实的视角相关效果,如镜面高光和漫反射变化。

4. 显式与隐式表示的融合

3DGS巧妙结合了显式和隐式表示的优势

  • 显式方面:高斯参数直接控制几何形状和空间分布,便于编辑和分析

  • 隐式方面:通过可微分渲染和优化,隐式地编码复杂外观和光照效果

  • 混合特性:自适应密度控制实现了类似隐式表示的连续适应性,同时保持显式表示的效率

这种融合使3DGS既能像传统点云一样直接操控,又能达到神经渲染的视觉质量,开辟了三维表示的新范式

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/86617.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/86617.shtml

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

相关文章

鸿蒙5:布局组件

注意:博主有个鸿蒙专栏,里面从上到下有关于鸿蒙next的教学文档,大家感兴趣可以学习下 如果大家觉得博主文章写的好的话,可以点下关注,博主会一直更新鸿蒙next相关知识 专栏地址: https://blog.csdn.net/qq_56760790/…

Flink状态和容错-基础篇

1. 概念 flink的状态和容错绕不开3个概念,state backends和checkpoint、savepoint。本文重心即搞清楚这3部分内容。 容错机制是基于在状态快照的一种恢复方式。但是状态和容错要分开来看。 什么是状态,为什么需要状态? 流计算和批计算在数…

【若依学习记录】RuoYi后台手册——分页实现

目录 若依系统简介 前端调用实现 前端调用举例 后台逻辑实现 若依系统简介 RuoYi 是一个基于 Spring Boot、Apache Shiro、MyBatis 和 Thymeleaf 的后台管理系统,旨在降低技术难度,助力开发者聚焦业务核心,从而节省人力成本、缩短项目周…

从台式电脑硬件架构看前后端分离开发模式

在软件开发领域,前后端分离早已成为主流架构设计理念。它将系统的业务逻辑处理与用户界面展示解耦,提升开发效率与系统可维护性。有趣的是,我们日常生活中常见的台式电脑硬件架构,竟与这一理念有着异曲同工之妙。今天,就让我们从台式电脑的硬件组成出发,深入探讨其与前后…

可观测性的哲学

在现代系统架构中,“可观测性(Observability)”已不仅仅是一个工程实践,是一种关于“理解世界”的哲学姿态, 还是一种帮助架构演变的认知工具。从柏拉图的“洞穴寓言”出发,我们可以构建起一条从被动接受投影&#xff…

开疆智能CCLinkIE转ModbusTCP网关连接傲博机器人配置案例

本案例是通过CClinkIE转ModbusTCP网关,连接傲博机器人的配置案例 PLC配置 打开三菱PLC组态软件GXWORK3设置CClinkIE一侧的参数配置,首先设置PLC的IP地址 双击详细设置进入CClinkIE配置 添加通用从站IP地址以及占用点数 设置好分配的软元件,确…

Bash Shellshock

CVE-2014-6271(Bash Shellshock远程命令注入漏洞) 该服务启动后有路径http://your-ip:port/victim.cgi和http://your-ip:port/safe.cgi。其中safe.cgi是新版页面,victim是bash4.3生成的页面。 漏洞位置在User-Agent中victim.cgi: User-Agent: () { foo; }; echo C…

以软件系统开发为例,解释PMO 与IPD、CMMI、项目管理什么区别和联系

以「开发一套智能仓储管理系统(WMS)」为例,拆解软件项目经理视角下的IPD、CMMI、项目管理和PMO如何协同运作: 场景设定 项目目标:6个月内交付WMS系统,支持日均10万订单处理关键角色: 你&#x…

TDengine 3.3.5.0 新功能 —— 查看库文件占用空间、压缩率

1. 背景 TDengine 之前版本一直没有通过 SQL 命令查看数据库占用的磁盘空间大小,从 3.3.5.0 开始,增加了这个方便且实用的小功能,这里详细介绍下。 2. SQL 基本语法 select expr from information_schema.ins_disk_usage [where condtion]…

蚂蚁百宝箱体验:如何快速创建“旅游小助手”AI智能体

蚂蚁百宝箱作为站式智能体应用开发平台,致力于为AI开发者提供简单、高效、快捷的智能体创作体验。作为业内领先的AI应用开发平台,开发者可以根据自身的个性化需求,基于各式各样的大模型来创建一个属于自己的智能体应用。 蚂蚁百宝箱&#xf…

AI助力JMeter—从静态参数化到智能动态化的进化之路

Apache JMeter作为开源利器被广泛应用于Web系统、API接口、数据库及消息队列等多场景性能验证。而“变量的使用”作为测试脚本灵活性和可维护性的核心手段,决定了脚本的复用性、可扩展性和数据驱动能力。传统的变量管理手段已难以应对大规模复杂测试任务中“动态化、…

第十六届蓝桥杯C/C++程序设计研究生组国赛 国二

应该是最后一次参加蓝桥杯比赛了,很遗憾,还是没有拿到国一。 大二第一次参加蓝桥杯,印象最深刻的是居然不知道1s是1000ms,花了很多时间在这题,后面节奏都乱了,抗压能力也不行,身体也不适。最后…

OpenCV计算机视觉实战(12)——图像金字塔与特征缩放

OpenCV计算机视觉实战(12)——图像金字塔与特征缩放 0. 前言1. 高斯金字塔1.1 应用场景1.2 实现过程 2. 拉普拉斯金字塔2.1 应用场景2.2 实现过程 3. 图像融合实例3.1 应用场景3.2 实现过程 小结系列链接 0. 前言 图像金字塔技术通过对原始图像按不同分…

【案例】基于Python的生源数据可视化分析:从Excel处理到动态地图展示

文章目录 需求分析技术要点程序流程一些细节核心代码表格的一些操作 心得体会代码汇总 需求分析 请设计一个程序,要求能够统计分析分散在不同表格中的数万条信息,以信息中的身份证号码或生源地代码字段为目标字段,统计每一年全国各省份及本省…

设计模式 | 原型模式

原型模式通过克隆机制实现对象高效创建,是性能敏感场景的利器。本文结合C示例详解实现原理、深拷贝陷阱、应用场景,并与工厂模式对比分析。 为何需要原型模式? 当遇到以下场景时,传统构造方法面临挑战: 创建成本高&am…

Go 语言中的单元测试

1、如何编写单元测试 在任何生产级别的项目开发中,单元测试都扮演着至关重要的角色。尽管许多初创项目在早期可能忽略了它,但随着项目逐渐成熟并成为核心业务,为其编写健壮的单元测试是保障代码质量和项目稳定性的必然选择。本文将带您快速掌…

8. 接口专业测试报告生成pytest-html

pytest-html 终极指南:打造专业级接口测试报告 在接口自动化测试中,清晰的测试报告是质量保障的关键。本文将深入解析如何通过pytest-html插件生成专业级测试报告。 一、核心安装与基础使用 快速安装(国内镜像) pip install -i …

Day45 Tensorboard使用介绍

目录 一、tensorboard的发展历史和原理及基本操作 1.1 发展历史 1.2 tensorboard的原理 1.3 日志目录自动管理 1.4 记录标量数据(Scalar) 1.5 可视化模型结构(Graph) 1.6 可视化图像(Image) 1.7 记…

用AI给AR加“智慧”:揭秘增强现实智能互动的优化秘密

用AI给AR加“智慧”:揭秘增强现实智能互动的优化秘密 引子:增强现实,到底还能怎么更聪明? 还记得当年Pokmon GO火爆全球的场景吗?玩家们手机对准街头,虚拟小精灵活灵活现地跳出来,那就是增强现实(AR)最经典的应用之一。随着硬件发展和算法进步,AR正逐步从“炫酷玩具…

1 Studying《Computer Vision: Algorithms and Applications 2nd Edition》1-5

目录 Chapter 1 Introduction 1.1 什么是计算机视觉? 1.2 简史 1.3 书籍概述 1.4 样本教学大纲 1.5 符号说明 1.6 其他阅读材料 Chapter 2 Image formation 2.1 几何基本元素和变换 2.2 光度图像形成 2.3 数码相机 2.4 其他阅读材料 2.5 练习 Chapter…