【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-协方差矩阵怎么就能用旋转和缩放矩阵表达?

python 复制代码
# 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 (A⋅B)⊤=B⊤⋅A⊤

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

7-仿射变换

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

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

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

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

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

相关推荐
你觉得20512 分钟前
山东大学:《DeepSeek应用与部署》|附PPT下载方法
大数据·人工智能·python·机器学习·ai·aigc·内容运营
LoserChaser24 分钟前
李宏毅机器学习笔记(1)—机器学习基本概念+深度学习基本概念
笔记·深度学习·机器学习
go54631584651 小时前
使用Python和PyTorch库实现基于DNN、CNN、LSTM的极化码译码器模型的代码示例
pytorch·python·dnn
夏有凉风,冬有雪1 小时前
AI写一个视频转图片帧工具(python)
人工智能·python·音视频
全栈派森1 小时前
从SQL到向量:解锁MySQL+RAG的高效语义检索与AI应用落地
后端·python
倾云鹤1 小时前
APNS和FCM推送服务脚本
python
_She0011 小时前
步进电机 cia402协议 报文自己的理解 (笔记)
笔记·嵌入式硬件
IT从业者张某某2 小时前
Python数据可视化-第1章-数据可视化与matplotlib
python·信息可视化·matplotlib
电力程序小学童2 小时前
【强化学习】基于深度强化学习的微能源网能量管理与优化策略研究【Python】
python·强化学习·dqn·q学习·微能源网
eqwaak02 小时前
京东商品爬虫技术解析:基于Selenium的自动化数据采集实战
开发语言·人工智能·爬虫·python·selenium·自动化