【3DGS (1) 】3D Gaussian Splatting全解 (原理+代码+公式) - 笔记

server/2025/1/16 4:36:44/

文章目录

      • 1-什么是 splatting?
      • 2- Splatting 的流程
      • 3-为什么3d gaussian: 是椭球?
      • 4-各向异性和各向同性是什么意思?
      • 5-`协方差矩阵`怎么就能控制椭球形状呢?
      • 6-协方差矩阵怎么就能用旋转和缩放矩阵表达?
      • 7-仿射变换


本文为 B 站 3D GS 讲解视频 -【1】捏雪球的文字笔记,以及个人理解补充。

1-什么是 splatting?

  1. Splatting 是一种主动的**体渲染**方法,从 3D 物体渲染到 2D 平面
    1. 主动: 计算出每个发光粒子**如何影响像素点**
  2. Ray-casting 是被动的(NerF)
    1. 计算出每个像素点受到发光粒子的影响来生成图像
  • 在这个3D高斯渲染的上下文中,发光粒子指的是3D空间中的点每个点都具有一定的属性(如颜色、不透明度等),可以影响最终渲染图像上的像素。

    这些"发光粒子"可以理解为**空间中的采样点**,它们:

    • 在Splatting方法中,主动计算每个粒子如何影响2D平面上的像素
    • 而在Ray-casting(如NeRF)中,则是从像素出发,被动计算它们受到这些粒子的影响
      在这里插入图片描述

2- Splatting 的流程

  1. 选择【雪球 / 核】

    • 选 3D 高斯椭球的原因:仿射变换后的高斯核仍然**封闭**

      在3D Gaussian Splatting中,"封闭"指的是**高斯核在经过仿射变换后仍然保持其数学特性和形状的封闭性**。这是选择使用3D高斯椭球的一个重要原因。

      具体来说,这种封闭性意味着:

      • 当我们对高斯核进行仿射变换(如旋转、缩放等)时,结果仍然是一个高斯核
      • 当从3D投影到2D平面时,结果依然保持高斯分布的特性

      这种数学上的封闭性质使得高斯核在图形渲染过程中具**有良好的可控性和可预测性**。

  2. 抛掷雪球:从3D投影到2D,得到足迹

  3. 将足迹加以合成,形成最后的图像

3d_gaussian__37">3-为什么3d gaussian: 是椭球?

  1. 2D 时是椭圆,3D 时是实心的椭球(一层层的椭球面套娃)
    在这里插入图片描述
    3d511bd5474041b717a536d448b22a.png" alt="在这里插入图片描述" />

4-各向异性和各向同性是什么意思?

  1. 各向同性:在所有方向具有相同的扩散程度(梯度), 球
  2. 各向异性:在不同方向具有不同的扩散程度(梯度),椭球

5-协方差矩阵怎么就能控制椭球形状呢?

  • 任意高斯可以看作是标准高斯通过仿射变换得到
    • 任意椭球可以看作是通过仿射变换得到
      在这里插入图片描述

6-协方差矩阵怎么就能用旋转和缩放矩阵表达?

在这里插入图片描述

python"># mod 是一个缩放(另外的缩放def computeConv3D(scale, mod, rot):# create scaling matrixS = np.array([[scale[0] * mod, 0, 0],[0, scale[0] * mod, 0],[0, 0, scale[0] * mod])R = rotM = np.dot(R, S)conv3D = np.dot(M, M.T) # R S S^T R^Treturn conv3D

仿射变换是一种**线性变换加上平移**的组合,它可以:

  • w = A x + b (线性变化 + 平移)
  • A = RS (旋转 * 缩放)

转置的分配律:对于任意两个矩阵

( A ⋅ B ) ⊤ = B ⊤ ⋅ A ⊤ (A \cdot B)^\top = B^\top \cdot A^\top (AB)=BA

  • 旋转和缩放 可以通过 协方差矩阵 通过 特征值分解得到

7-仿射变换

仿射变换是一个更大的概念,它包含两个部分:

  1. 线性变换:包括旋转、缩放、切变等
    • 旋转:改变方向,但不改变形状大小
    • 缩放:改变大小,但不改变方向
    • 切变:使形状倾斜变形
  2. 平移:单纯的位置移动,不改变形状、大小或方向

这就是为什么仿射变换可以将球体转换成椭球体,因为它结合了这些基本变换来实现更复杂的形状变化,同时还能保持某些重要的几何特性,比如点的共线性和线段的比例。

  • 保持点的共线性(直线上的点变换后仍在一条直线上)
  • 保持线段的比例
  • 可以实现旋转、缩放、平移、切变等几何变换

在3D高斯椭球的上下文中,仿射变换的一个重要特性是它可以将球体变换为椭球体,同时保持**高斯分布的数学性质。这种变换后的结果仍然具有可预测性和可控性。


http://www.ppmy.cn/server/158731.html

相关文章

从字符串使用看Golang和Rust对内存使用的区别

从字符串使用看Golang和Rust对内存使用的区别 ​ 今天从Rust偶然回到Golang的世界,怎么写代码怎么别扭,总是忍不住在句子结尾加个分号…看到golang的字符串使用起来特别爽可以到处复制疯狂乱用,有一种从部队宿舍豆腐块被子的生活回归到居家肥…

集中式架构vs分布式架构

一、集中式架构 如何准确理解集中式架构 1. 集中式架构的定义 集中式架构是一种将系统的所有计算、存储、数据处理和控制逻辑集中在一个或少数几个节点上运行的架构模式。这些中央节点(服务器或主机)作为系统的核心,负责处理所有用户请求和…

nginx增加新模块

一、动态增加第三方模块(不需要停止nginx进程就可以增加新模块。只需要reload) NGINX 从1.9.11开始增加动态模块支持,从此不再需要替换nginx文件即可增加第三方扩展。目前官方只有9个模块支持动态加载,其它的第三方模块还是需要使用传统方式安装。 这九…

探索图像编辑的无限可能——Adobe Photoshop全解析

文章目录 前言一、PS的历史二、PS的应用场景三、PS的功能及工具用法四、图层的概念五、调整与滤镜六、创建蒙版七、绘制形状与路径八、实战练习结语 前言 在当今数字化的世界里,视觉内容无处不在,而创建和编辑这些内容的能力已经成为许多行业的核心技能…

SpringCloud:gateway分发服务报302,Network Error

springcloud使用gateway分发服务&#xff0c;访问接口时一直报错&#xff1a; 多次试验后发现是pom.xml文件中引入的security依赖的问题&#xff0c;注释后重新启动&#xff0c;可以正常访问。 <!-- spring security 安全认证 --> <dependency><groupId>org…

GPU算力平台|在GPU算力平台部署Linly-Talker 数字人对话应用教程

文章目录 一、平台介绍GPU算力平台概述 二、人工智能研发为什么选择GPU算力平台GPU算力平台的独特魅力账号注册流程Linly-Talker 数字人对话的部署 一、平台介绍 GPU算力平台概述 GPU算力平台就像是一个专门为GPU加速计算打造的云端“超级加油站”&#xff0c;属于软件和信息…

git merge 压缩提交

在 Git 中&#xff0c;执行 git merge 时可以通过一些操作来“压缩”提交&#xff0c;通常是指将合并过程中的多个提交压缩成一个单一的提交。这可以通过使用 --squash 选项来完成&#xff0c;或者在合并后进行交互式 rebase。以下是两种常见的方法&#xff1a; 方法 1&#x…

如何用 SSH 访问 QNX 虚拟机

QNX 虚拟机默认是开启 SSH 服务的&#xff0c;如果要用 SSH 访问 QNX 虚拟机&#xff0c;就需要知道虚拟机的 IP 地址&#xff0c;用户和密码。本文我们来看看如何获取这些参数。 1. 启动虚拟机 启动过程很慢&#xff0c;请耐心等待。 2. 查看 IP 地址 等待 IDE 连接到虚拟机。…