Gaussian Splatting
开山论文:3D Gaussian Splatting for Real-Time Radiance Field Rendering
入门
- 3D GS的输入是SFM(Structure-from-Motion)和图像,SFM点可以是随机初始化的; NeRF的输入是相机位姿和图像和SFM和初始点云
公式
3D GS的核心是一堆高斯点云,需要对点云的一些参数进行拟合
点云颜色C
- NeRF和α混合的体积渲染:
颜色C是通过沿着射线的体积渲染得到的
C=i=1∑NTi(1−exp(−σiδi))ci
Ti=exp(−j=1∑i−1σiδi)
沿着间隔为δ,采集射线上密度σ,透射率T和颜色c的样本,可以重写为:
C=i=1∑NTiαici
αi=(1−exp(−σiδi)) 和 Ti=j=1∏i−1(1−αi)
- 基于神经点的学习方法:
C=i∈N∑ciαij=1∏i−1(1−αj)
其中N是N个与像素重叠的有序点,用以计算一个像素的颜色C,ci是每个点的颜色,αi是通过计算协方差Σ的二维高斯分布乘以学习的每点不透明度给出的
- 区别:图像生成模型相同,但是渲染算法不同
- NeRF是一种隐式表示,是连续表示,随机抽样代价较大
- 点是一种结构化、离散的表示方式
3D高斯是可微的,能够很容易投影到2D平米,允许快速α混合渲染。
3D Gaussian
- 高斯函数(一维):
Nμ,σ(x)=2πσ1exp(−2σ2(x−μ)2)
- 三维高斯函数:
Gs(x)=(2π31det(∑))e−21(x−μ)T∑−1(x−μ)
其中,x=[a,b,c]T,μ是椭球中心,协方差矩阵表示椭球在三轴上的伸缩和旋转,$$\sum=\begin{bmatrix}\sigma_a^2&Cov(a,b)&Cov(a,c)\\Cov(b,a)&\sigma_b^2&Cov(b,c)\\Cov(c,a)&Cov(c,b)&\sigma_c^2\end{bmatrix}$$
协方差的特征向量就是椭球对称轴。
输入
处理流程

- 由输入,创建一组三维高斯分布,由位置(mean)、协方差矩阵和不透明度(α)定义。
- 辐射场的各个方向的颜色由球谐波(Sphere Harmonics) 表示。
- 高斯函数:
G(x)=e21(x)T∑−1(x)
在α混合中,这个高斯将与α相乘,其中心点均值为μ
- 3D向2D投影渲染,,给定观察变换W,相机坐标中的协方差矩阵为:
∑′=JW∑WTJT
J是射影变换的仿射近似的雅可比矩阵。可以直接优化∑来获得三维高斯分布,但协方差矩阵只有在正半定的时候才具有物理意义。使用梯度下降不能轻易约束地产生有效的矩阵,并且更新步骤和梯度可以很容易地创建无效的矩阵。
- 因此,使用更加直观的方法来进行处理。三维高斯分布的协方差∑类似于描述椭球体的构型,给定一个比例矩阵S和旋转矩阵R,可以得到相应的∑:
∑=RSSTRT
为了独立优化,分别存储用于缩放的三维向量s和表示旋转的四元素q。
- 交叉优化的参数包括:
- 点的三维位置p
- 协方差矩阵∑
- 不透明度α
- 球谐函数
- 自适应控制:通过复制高斯点解决重建不足问题,通过分裂高斯点解决重建过度问题

3D Gaussian Splatting in SLAM