1. 3D Guassian 概述
3D GS的工作是在SFM生成的点云基础上,初始化一个一个呈3D Gaussian分布的椭球体来进行三维空间的表达。类似mesh三角面片,3D高斯分布的椭球体也可以作为基元来进行三维的空间表达(魔城迷踪)。和mesh的区别就是把基元从三角面片换成了3D Gaussian分布的椭球体。
通过把这些椭球体Splatting到图像平面上,并与真实的GT图像计算Loss,使用梯度下降对3D Gaussian椭球体的参数进行优化。这个过程的示意图如下:
一个3D Guassian分布的椭球体Splatting到2D图像上的示意图:
2. 3D Guassian分布函数
3D高斯分布函数是高斯分布在三维空间的扩展,它的数学表达如下:
3D Guassian分布的中心坐标为:
下式为3D Guassian分布的协方差矩阵,其中每个σ都表示在该方向上高斯分布的情况,σ的值越大说明数据分布的越离散。假设每个方向上的σ值相同,那么它是个圆,不然它就是个椭圆。
σxx为x方向的方差,σxy为x,y方向的协方差,其他同理。
当x,y,z分量之间相互无关的时候,此时3D Guassian就成了如下特殊形式:
关于协方差矩阵,我们可以从以下几个角度来理解它的物理意义:
• 数据分布
特征向量:数据分布的主轴方向(这个主轴的方向向量是基于原始坐标系的),像下面这种标准的2D guassian分布中,特征向量就是(0,1)和(1,0),但是如果不是标准guassian分布,比如有个旋转之类的,那么特征向量方向就变了。
特征值:表示在对应特征向量方向(主轴方向)上的方差,方差就决定了在这个方向上的分布范围。方差越大,分布的越离散;方差越小,分布的越集中。
上图中这个2D guassian类比到三维,不难理解这个协方差矩阵决定了数据分布的方向和范围。
• 数据的相关性
协方差矩阵的非对角元素表示不同维度之间的相关性。如果两个维度的协方差是正的,表示这两个维度是正相关的,即一个维度增加,另一个维度也倾向于增加。如果协方差是负的,表示这两个维度是负相关的,即一个维度增加,另一个维度倾向于减少。如果协方差是零,表示这两个维度是相互独立的,没有线性相关性(比如x,y,z轴互相垂直的情况)。
• 分布的形状和大小
形状:就像前面说的,协方差矩阵的特征值和特征向量决定了高斯分布。换句话说就是决定了椭圆形状。椭圆的长轴和短轴的方向由特征向量决定,轴的长度由特征值决定。
大小:协方差矩阵的行列式(determinant)与分布的体积成正比。较大的行列式表示较大的分布范围。
3. 3D Guassian 初始化
空间中的3D Guassian分布公式如下,其中u表示Guassian椭圆的中心位置,Σ表示协方差矩阵。如前所述下方差矩阵中包含了3D Guassian分布的主轴方向(旋转),以及数据分布(伸缩)
在3D GS的工作中,3D Guassian初始化被化简成:
可以看到公式中
u
=
0
u = 0
u=0表示在初始化椭球的时候先默认椭球的中心就在坐标原点。Σ表示旋转和缩放,原文中指出,不是所有的协方差矩阵都可以表达一个椭球,只有半正定的协方差矩阵才能表达一个椭球,所以设计了如下的协方差矩阵,其中s表示伸缩,R表示旋转。
3D Guassian的协方差矩阵特征值表示在主轴上的分布范围,对于椭球而言它必须是非负的。而半正定矩阵的特征值都是非负的,对称矩阵被称为半正定矩阵(这是解释为什么:半正定的协方差矩阵才能表达一个椭球)。
4. Splatting过程
4.1 3D空间中的分布变化
公式如下:
通过前面的内容,我们已经通过Σ确定了 gaussian 椭圆的形状与旋转,然后通过sfm的先验坐标信息确定μ ,也就是这个gaussian椭圆在世界坐标中的位置。
首先,通过外参矩阵W,可以将gaussian 椭圆的分布从世界空间转换到相机空间;
然后,通过雅各比矩阵J做一次project(类似透视投影),将透视空间变得和像素对齐,这样才能进行光栅化,示意图如下,原本是标准的透视投影,做了一次projcet之后,变成了平行投影,物体在空间中发生了形变。
需要做project的原因是:在进行光栅化之前,需要将透视空间转换为与像素对齐的屏幕空间。
光栅化:用于将三维图形对象转换成二维图像。输入三维模型的几何数据,如顶点和面,将三维模型转换到二维屏幕坐标系中,确定哪些像素在屏幕上被每个多边形覆盖(处理前后遮挡),计算每个像素的颜色值,包括光照、纹理等效果,最终得到二维图像。
这一节中,将3D gaussian从世界空间转到相机空间,然后再做一次project 将透视空间变得和像素对齐。
4.2 3D->2D Splatting
OK,4.1中我们已经通过W和J两个矩阵变换,将透视空间与画布像素对齐,这时候对Gaussian椭球分布函数在第三维度上进行积分,就可以得到椭球在某个像素上的着色。
精彩的来了:根据3D高斯的特点,沿着某一轴线积分的结果是一个2D高斯,所以这里可以直接用2D高斯替换积分过程。与Nerf相比具有天然的优势:Nerf是用离散累加的方式来拟合连续积分,这将不可避免地存在误差。
5. 优化过程
5.1 3D Guassian的待优化参数
• position-μ
3D高斯椭圆的中心位置(基于世界坐标)
• covariance-Σ
包含旋转、放缩参数
• α
3D guassian椭圆的不透明度
• C-color
f_rest和f_dc为球谐函数的参数,球谐函数可以理解为一组基函数,组合在一起用于表示color。当然由于在不同角度,球谐函数的参数不同,也就可以在不同角度上表现出不同的颜色。
5.2 Guassian 椭圆密度调整
• 对于透明度α很小的高斯椭圆(有个阈值),去除掉
• 对于位置梯度较大的高斯椭圆(梯度较大说明这个位置基于高斯椭圆的三维重建效果有问题,不够平滑):
协方差的行列式表示高斯椭圆的分布体积
(1)体积较大的高斯椭圆进行分裂
(2)体积较小的高斯椭圆进行clone
6. 整体pipline