【3D-GS】Gaussian Splatting SLAM——基于3D Gaussian Splatting的全网最详细的解析

【3D-GS】Gaussian Splatting SLAM——基于3D Gaussian Splatting的定SLAM

    • 3D-GS 与 Nerf 和 Gaussian Splatting
      • 1. 开山之作 Nerf
      • 2. 扛鼎之作 3D Gaussian Splatting
        • 2.1 什么是3D高斯?高斯由1D推广到3D的数学推导
        • 2.2 什么是光栅化?
        • 2.3 什么是Splatting?
        • 2.4 什么是交叉优化?
        • 2.5 什么是自适应控制?
        • 2.6 什么是快速可微光栅化?
        • 2.8 什么是 α-混合(Alpha Blending)?
        • 2.9 留给网友们继续补充?
      • 3. 终极 3DGS in SLAM/三维重建

3D-GS 与 Nerf 和 Gaussian Splatting

3D Gaussian Splatting for Real-Time Radiance Field Rendering

论文:link
code:link

video:link

1. 开山之作 Nerf

一切的开始都是起源于 NERF 开山之作 这里由详细的学习与拆解
【NERF】入门学习整理(一)

【NERF】入门学习整理(二)

【NERF】入门学习整理(三)

【NeRF数据集】LLFF格式数据集处理colmap结果记录

基于上面的了解,这个模型的输入:是一个五维的相机位姿(x,y,z,Yaw,Pitch);输出:4D(R G B 不透明度);
那这个模型有啥缺点和优点呢?

逼真的渲染效果: NERF 可以生成逼真的图像和视频,与真实照片和视频难以区分。
灵活性和可扩展性: NERF 可以用于渲染各种形状和大小的 3D 场景,包括室内和室外场景。
易于使用: NERF 只需要少量数据即可训练,并且可以使用标准的硬件进行训练和推理。

缺点包括:

计算成本高: NERF 的训练和推理过程需要大量的计算资源。
数据需求: NERF 需要大量的数据才能训练出高质量的模型。
泛化能力差: NERF 模型通常只适用于训练数据所代表的场景。
以下是 NERF 算法的一些具体应用:

虚拟现实和增强现实: NERF 可以用于创建逼真的虚拟环境和增强现实体验。
3D 建模: NERF 可以用于从照片或视频中生成 3D 模型。
逆向渲染: NERF 可以用于从图像或视频中恢复 3D 场景的几何形状和材质。
以下是 NERF 算法的一些研究方向:

提高计算效率: 研究人员正在开发更有效的 NERF 训练和推理算法。
提高数据效率: 研究人员正在开发能够从少量数据中学习的 NERF 模型。
提高泛化能力: 研究人员正在开发能够泛化到新场景的 NERF 模型。
总体而言,NERF 是一种具有巨大潜力的 3D 表示和渲染技术。随着研究的不断深入,NERF 算法将有望在更多的领域得到应用。

此外,NERF 还存在一些潜在的风险和挑战,包括:

模型偏见: NERF 模型可能会受到训练数据的偏见影响,从而导致生成不准确或偏颇的结果。
滥用风险: NERF 技术可能会被滥用来生成虚假信息或宣传材料。

2. 扛鼎之作 3D Gaussian Splatting

3D Gaussian Splatting是最近NeRF方面的突破性工作,它的特点在于重建质量高的情况下还能接入传统光栅化,优化速度也快(能够在较少的训练时间,实现SOTA级别的NeRF的实时渲染效果,且可以以 1080p 分辨率进行高质量的实时(≥ 30 fps)新视图合成)。开山之作就是论文“3D Gaussian Splatting for Real-Time Radiance Field Rendering”是2023年SIGGRAPH最佳论文。

首先,3DGS可以认为是NeRF的一种,做的任务也是新视图的合成

对于NeRF而言,它属于隐式几何表达(Implicit Geometry ),这里我们在上面的【NERF】入门学习整理系列已经有了更加完整的百表达和分析;顾名思义,不表达点的具体位置,而表示点与点的关系。通过选取空间坐标作为采样点输入,隐式场景将输出这些点的几何密度是多少,颜色是什么。而所谓的神经隐式几何则是用神经网络转换上述输入输出的方法(输入三维空间坐标和观测视角,输出对应点的几何密度和颜色)。把光线上的一系列采样点加权积起来就渲染得到一个像素颜色,这便是NeRF神经辐射场渲染的流程

此外,何的隐式表达可以分为体积类表达和表面类表达两种:

体积类表达:NeRF 属于体积类表达,通过几何密度决定采样点颜色的贡献度。
表面类表达:在表面类表达方式中,输入采样点,符号距离函数 SDF 输出空间中距离该点最近的表面的距离,正值表示表面外,负值表示表面内,表面类方法判定越靠近表面的采样点颜色贡献度越高。
既然有隐式,那么就有显式几何表达( Explicit geometry),就是类似点云、三角mesh这类可以沿着存储空间遍历所有元素。(通过某些方式,真正的把物体上的点都表示出来)

对于渲染,NeRF是非常典型的backward mapping过程,即计算出每个像素点受到每个体素影响的方式来生成最终图像,对每个像素,投出一条视线,并累积其颜色和不透明度
而3DGaussian Splatting是forward mapping的过程,将每个体素视作一个模糊的球,投影到屏幕上。在Splatting中,我们计算出每个体素如何影响每个像素点.

2.1 什么是3D高斯?高斯由1D推广到3D的数学推导

对于高常说的高斯函数,其实是1D的高斯,也就是正态分布:
f ( x ) = 1 σ 2 π e − ( x − μ ) 2 2 σ 2 f(x) = \frac{1}{\sigma \sqrt{2\pi}} e^{-\frac{(x-\mu)^2}{2\sigma^2}} f(x)=σ2π 1e2σ2(xμ)2
其中:

μ 是正态分布的 均值,代表数据中心的位置。
σ 是正态分布的 标准差,代表数据离散程度。

在这里插入图片描述
对于一段x区间,进行积分可以得到分布中的数据落在这一-区间的概率,其中绝大多数落在3sigma区域(概率是0.9974)。因此,一组 m u mu mu / s i g m a /sigma /sigma 可以确定一个1D高斯分布函数,进而确定一条1D线段通过改变这两个值就可以表达1D数轴上的一根线段。类似地,将这个思路从1D拓展到3D,那么就可以确定一个空间的椭球形,这个椭球分别以xyz轴对称,
从对称轴的垂直面切出来的横截面都是椭圆。不过由于这个椭球可以旋转移动,所以它的xyz对称轴不一定和世界坐标系重叠。对于标准的3DGaussians标准形式,是:
G ( x ) = 1 2 π σ 2 exp ⁡ [ − ( x − μ ) 2 2 σ 2 ] \begin{equation} G(x) = \frac{1}{\sqrt{2 \pi \sigma^2}} \exp \left[ -\frac{(x - \mu)^2}{2 \sigma^2} \right] \end{equation} G(x)=2πσ2

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

互联网医院APP开发攻略:搭建智能医疗平台

互联网医院APP为患者提供了便捷的就医途径,还为医生和医院提供了更加高效的服务和管理手段。接下来,小编将我们本文将就互联网医院APP的开发攻略,以及如何搭建智能医疗平台进行探讨。 1.确定需求和目标 这包括确定服务对象(患者、…

Redis分布式锁红锁

Redisson实现分布式锁 lock()上锁解析: 1,hexist判断redis是否有这个锁 2,hset设置锁,hash类型,key为锁名字,value是一对kv,k是当前redisson1的id,v为计数器,表示当前锁持有次数&am…

基于Springboot的学生选课系统(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的学生选课系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构&…

ML-Decoder: Scalable and Versatile Classification Head

1、引言 论文链接:https://openaccess.thecvf.com/content/WACV2023/papers/Ridnik_ML-Decoder_Scalable_and_Versatile_Classification_Head_WACV_2023_paper.pdf 因为 transformer 解码器分类头[1] 在少类别多标签分类数据集上表现得很好,但由于其查询…

axios+springboot上传图片到本地(vue)

结果&#xff1a; 前端文件&#xff1a; <template> <div> <input type"file" id"file" ref"file" v-on:change"handleFileUpload()"/> <button click"submitFile">上传</button> </div&g…

2024第17届计算机设计大赛开始啦(保研竞赛)

中国大学生计算机设计大赛是面向高校本科生的竞赛&#xff0c;旨在培养创新型、复合型、应用型人才。2024年大赛的主题包括软件应用、微课与教学辅助等11个大类。参赛队由1&#xff5e;3名本科生组成&#xff0c;指导教师不多于2人。在组队和选题方面&#xff0c;强调团结协作和…

Linux——线程概念与线程的创建

目录 一、什么是线程 二、线程的创建 三、重新理解线程 四、进程和线程对比 一、什么是线程 在一个程序里的一个执行路线就叫做线程&#xff08;thread&#xff09;。更准确的定义是&#xff1a;线程是“一个进程内部的控制序列”一切进程至少都有一个执行线程线程在进程内部…

车道线中心线生成方法

车道线中心线生成方法 附赠自动驾驶学习资料和量产经验&#xff1a;链接 基于摄像头传感器输出车道线方程&#xff1a; (1) 其中&#xff1a;、、、为车道线方程系数。 1 车道宽度计算 当车辆直行时&#xff0c;车道宽度计算可根据如下公式计算&#xff1a; …

【BlossomRPC】手把手教你写一个RPC协议

文章目录 新的开始什么是RPC?设计一个RPC需要些什么&#xff1f; 新的开始 经常会遇到一些项目&#xff0c;看着看着就发现看不懂文档了&#xff0c;也就是会出现一些跳过讲解的文章&#xff0c;使得自己很难了解某种中间件的开发全貌&#xff0c;所以想着自己先设计一个比较…

编程实现黄金分割法、平分法和不精确一维搜索等最优化算法

解&#xff1a; 1、黄金分割法 思想&#xff1a; 黄金分割法是通过不断缩短搜索区间的长度来寻求一维函数的极小点&#xff0c;这种方法的基本原理是&#xff1a;在搜索区间[a,b]内按如下规则对称地取两点a1和a2 a1a0.382(b-a); a2a0.618(b-a); 黄金分割法的搜索过程是&#x…

代码随想录算法训练营第二十五天| 回溯算法理论基础、LeetCode77.组合

一、216.组合总和III 题目链接/文章讲解/视频讲解&#xff1a; https://programmercarl.com/0216.%E7%BB%84%E5%90%88%E6%80%BB%E5%92%8CIII.html 状态&#xff1a;已解决 1.思路 做过77题&#xff08;上篇博客&#xff09;后&#xff0c;这道题也就不难了&#xff0c;无非是多…

数字化转型导师坚鹏:BLM新质生产力发展方法论

BLM新质生产力发展方法论 ——新质生产力发展之知行果合一 课程背景&#xff1a; 很多学员存在以下问题&#xff1a; 不知道如何理解新质生产力&#xff1f; 不清楚如何发展新质生产力&#xff1f; 不知道新质生产力发展案例&#xff1f; 课程特色&#xff1a; 原创…

echarts统计图占满整个容器

原先的统计图表没有占满容器&#xff0c;感觉整个被压缩了 网上查阅相关资料后发现需要设置grid一个配置项&#xff08;有些数值需要根据实际情况进行调整&#xff09; grid:{top:"0px",left:"0px",right:"0px",bottom:"0px"} 对于gr…

用户登录.java

分析&#xff1a; 1&#xff0c;用String来定义两个变量&#xff0c;记录正确的用户名和密码----->直接赋值得来 2&#xff0c;键盘录入用户名和密码------>new开辟空间得来&#xff0c;存的是地址值 他们直接用比较大小,必定不相同&#xff0c;需要用到String里面的方…

沙箱安全机制

Java安全模型的核心就是Java沙箱(sandbox)&#xff0c; 什么是沙箱&#xff1f; 沙箱是一个 限制程序运行的环境。沙箱机制就是将Java代码限定在虚拟机(JVM) 特定的运行范围中&#xff0c;并且严格限制代码对本地系统资源访问&#xff0c;通过这样的措施来保证 对代码的 有效隔…

QT中的文件操作QFile、QDataStream、QTextStream、QBuffer

文件操作概述 1、Qt中IO操作的处理方式 &#xff08;1&#xff09;、Qt通过统一的接口简化了文件与外部设备的操作方式 &#xff08;2&#xff09;、Qt中的文件被看做是一种特殊的外部设备 &#xff08;3&#xff09;、Qt中的文件操作与外部设备操作相同 2、IO操作中的关键…

基于协同过滤算法的图书推荐系统(ssm+jsp)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的基于协同过滤算法的图书推荐系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 管理员功能需求…

C语言例1-11:语句 while(!a); 中的表达式 !a 可以替换为

A. a!1 B. a!0 C. a0 D. a1 答案&#xff1a;C while()成真才执行&#xff0c;所以!a1 &#xff0c;也就是 a0 原代码如下&#xff1a; #include<stdio.h> int main(void) {int a0;while(!a){a;printf("a\n");} return 0; } 结果如…

Soot入门学习笔记

Soot 适合参考的文档和教程如下&#xff1a; 北京大学软件分析技术 南京大学软件分析 Tutorials for soot McGill University 198:515 (vt.edu) 比较好的笔记资料&#xff1a; 南京大学《软件分析》课程笔记 比较好的入门作业或者案例&#xff1a; CSCE710 Assignmen…

vue3如何二次封装el-upload组件进行图片上传及删除

实现功能&#xff1a; 1、封装el-upload组件&#xff0c;父组件可以控制图片上传框的宽高 2、父组件可以传入提示信息&#xff0c;利用具名插槽 3、上传前的校验 4、实现删除功能 不同配置下的效果&#xff1a; 下边案例是图片上传的时候没有掉接口&#xff0c;在整体提交的时…