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

相关推荐
花王江不语28 分钟前
设计模式学习笔记
笔记·学习·设计模式
前端熊猫1 小时前
CSS Grid 布局学习笔记
css·笔记·学习·grid
奔跑吧邓邓子1 小时前
【Python爬虫(27)】探索数据可视化的魔法世界
开发语言·爬虫·python·数据可视化
恋恋西风1 小时前
CT dicom 去除床板 去除床位,检查床去除
python·vtk·dicom·去床板
Doker 多克2 小时前
Python Django系列—入门实例
python·django
geovindu2 小时前
python: SQLAlchemy (ORM) Simple example using mysql in Ubuntu 24.04
python·mysql·ubuntu
nuclear20112 小时前
Python 将PPT幻灯片和形状转换为多种图片格式(JPG, PNG, BMP, SVG, TIFF)
python·ppt转图片·ppt转png·ppt转jpg·ppt转svg·ppt转tiff·ppt转bmp
肥肠可耐的西西公主2 小时前
前端(AJAX)学习笔记(CLASS 2):图书管理案例以及图片上传
前端·笔记·学习
没有晚不了安2 小时前
1.13作业
开发语言·python