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



本文为 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. 将足迹加以合成,形成最后的图像

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

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

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

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

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

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

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

在这里插入图片描述

# mod 是一个缩放(另外的缩放

def computeConv3D(scale, mod, rot):
	# create scaling matrix
	S = np.array([[scale[0] * mod, 0, 0],
							 [0, scale[0] * mod, 0],
							 [0, 0, scale[0] * mod])
							 
	R = rot
	M = np.dot(R, S)
	conv3D = np.dot(M, M.T) # R S S^T R^T
	
	return 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高斯椭球的上下文中,仿射变换的一个重要特性是它可以将球体变换为椭球体,同时保持**高斯分布的数学性质。这种变换后的结果仍然具有可预测性和可控性。

### 3DGS-Enhancer 使用方法概述 对于希望深入了解或使用3DGS-Enhancer的技术人员而言,掌握该工具的具体操作流程至关重要。然而,在提供的参考资料中并未直接提及名为“3DGS-Enhancer”的具体项目或库[^1][^2][^3][^4]。 尽管如此,考虑到3DGS(3D Gaussian Splatting)作为核心技术被广泛应用于多个领域,可以推测所谓的3DGS-Enhancer可能是指增强或改进3D高斯喷射效果的相关技术和实践。为了更好地理解和利用这类技术,建议关注以下几个方面: #### 获取源码资源 如果存在特定于3DGS-Enhancer的开源项目,则可以从官方仓库获取最新版本的源代码。例如,类似的XV3DGS-UEPlugin项目已经托管在一个公开平台上,开发者可以通过访问该项目主页来下载所需文件并查看详细的安装指南。 ```bash git clone https://gitcode.com/gh_mirrors/xv/XV3DGS-UEPlugin.git cd XV3DGS-UEPlugin/ ``` #### 安装依赖环境 确保本地开发环境中已正确设置必要的软件包和库。这通常涉及Python解释器及相关扩展模块的安装,以及其他可能影响程序运行的支持组件。具体的依赖项列表应当由所使用的实际框架决定,并可以在README.md或其他形式的说明文档中找到指导信息。 #### 学习核心概念和技术细节 深入研究有关3D高斯喷射的基础理论及其在不同应用场景下的变体实现方式。ARAH论文介绍了如何构建具有动画功能的角色模型;而关于3DGS-SLAM的研究则探讨了这一技术在即时定位与地图构建中的潜力。 #### 实践案例分析 参考现有成功案例的学习笔记,特别是那些专注于解析复杂系统的内部机制的文章。CSDN博客上有一篇详尽描述了多种基于3DGS SLAM解决方案的实际部署经验分享,这对于理解整个工作流非常有帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值