三维高斯分布

一维高斯分布 $x\sim{}\mathcal{N}(\mu,\sigma^2)$ 的概率密度函数:
三维独立高斯分布的概率密度函数为:

其中,$\mathbf{x}=(x_1,x_2,x_3)^\top$,将二次型形式转换为矩阵表达,

其中,三个变量$\mathbf{x}=(x_1,x_2,x_3)^\top$之间都是相互独立的,所以变量之间的协方差是对角阵的形式,即

也就是,$\sigma_1\sigma_2\sigma_3=\lvert\Sigma\rvert^\frac{1}{2}$。因此,用向量形式表达的三维高斯分布的概率函数为,

对于更为一般的,相关多元高斯分布,我们先假设有$n$个相关的变量$\mathbf{X}=[X_1,X_2,X_3]^\top$,其协方差矩阵为$\Sigma$,由协方差矩阵的性质可知,其一定为实对称矩阵,因此协方差矩阵可以正交分解,即

其中,$\mathbf V$是单位特征向量组成的矩阵,$\Lambda=\text{diag}(\lambda_1,\lambda_2,\lambda_3)$。
对相关变量应用一次变换,$\mathbf{X’}=\mathbf{V}^\top\mathbf{X}$。变换后的高斯分布的期望为$\mathbf{\mu’}=\mathbf{V}^\top\mathbf{\mu}$。

变换后高斯分布的协方差矩阵为,

由于$\mathbf{\Lambda}$是对角阵,所以高斯分布各分量之间不相关;又因为多元高斯分布不相关和相互独立等价,因此变换后的$\mathbf{X’}$变量之间是相互独立的。

三维高斯溅射

论文中对三维高斯分布做了简化处理,和标准形式对比可以看到去掉了指数部分前面的尺度系数,默认模型坐标中心在原点,方便旋转放缩

其中,$\mathbf{x}=[a,b,c]^\top$是三维列坐标,$\mu$是椭球中心,协方差矩阵$\Sigma$为:

协方差矩阵控制椭球在3轴向的伸缩和旋转,其中协方差矩阵的特征向量就是椭球对称轴。且根据协方差矩阵的性质,$\Sigma$半正定。因此为了避免带约束条件的优化,将协方差矩阵看作一个椭球,而一个椭球是可以通过将球按轴向放缩在旋转得到。因此,

因为旋转矩阵也需要满足正定的条件,因此论文中使用四元数来表示旋转。

三维高斯溅射(世界系 $\rightarrow$ 相机系 $\rightarrow$ 图像平面)

将三维高斯从世界系转到相机系,需要一个旋转$\mathbf{W}$和平移$\mathbf{t}$,由于平移不改变高斯的形状,所以

因此,相机系下三维高斯的协方差矩阵为

即,

这样,我们就得到了相机系下三维高斯基元的分布。紧接着,我们需要将相机系下的三维高斯溅射到图像平面上的二维高斯。
根据小孔成像相机模型:相机系下的三维坐标到相机平面坐标的二维坐标的映射过程为:

我们将这个映射过程记为$\mathbf{x}=\widehat{m}(\mathbf{X}_c)$,对这个投影变换做局部仿射近似(local affine approximation):

其中${\mu}_c$是高斯中心在相机坐标系下的坐标,且

也就是

为了方便,我们将$\mathbf{J}_{\mathbf{\mu}_c}$简记为$\mathbf{J}$。因此,图像平面上二维高斯的协方差为:

最后,被投影的二维高斯被定义为:

雅可比矩阵对应3DGS中的代码是:

1
2
3
4
glm::mat3 J =
glm::mat3(focal_x / t.z, 0.0f, -(focal_x * t.x) / (t.z * t.z),
0.0f, focal_y / t.z, -(focal_y * t.y) / (t.z * t.z),
0, 0, 0);

3DGS为什么要分tile?