class="toc">
【3DGS (1) 】3D Gaussian Splatting全解 (原理+代码+公式) - 笔记
class="toc">
本文为 B 站 3D GS 讲解视频 -【1】捏雪球的文字笔记,以及个人理解补充。
1-什么是 splatting?
- Splatting 是一种主动的**
体渲染
**方法,从 3D 物体渲染到 2D 平面- 主动: 计算出每个发光粒子**
如何影响像素点
**
- 主动: 计算出每个发光粒子**
- Ray-casting 是被动的(NerF)
- 计算出每个像素点受到发光粒子的影响来生成图像
-
在这个3D高斯渲染的上下文中,
发光粒子指的是3D空间中的点
,每个点都具有一定的属性(如颜色、不透明度等)
,可以影响最终渲染图像上的像素。这些"发光粒子"可以理解为**
空间中的采样点
**,它们:- 在Splatting方法中,主动计算每个粒子如何影响2D平面上的像素
- 而在Ray-casting(如NeRF)中,则是从像素出发,被动计算它们受到这些粒子的影响
2- Splatting 的流程
-
选择【雪球 / 核】
-
抛掷雪球:从3D投影到2D,得到足迹
-
将足迹加以合成,形成最后的图像
3-为什么3d gaussian: 是椭球?
- 2D 时是椭圆,3D 时是实心的椭球(一层层的椭球面套娃)
4-各向异性和各向同性是什么意思?
- 各向同性:在所有方向具有相同的扩散程度(梯度), 球
- 各向异性:在不同方向具有不同的扩散程度(梯度),椭球
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
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
评论记录:
回复评论: