当前位置:   article > 正文

Paper Reading — 3D Gaussian Splatting_3d gaussian splatting对角尺度矩阵

3d gaussian splatting对角尺度矩阵

1. 3D Guassian 概述

3D GS的工作是在SFM生成的点云基础上,初始化一个一个呈3D Gaussian分布的椭球体来进行三维空间的表达。类似mesh三角面片,3D高斯分布的椭球体也可以作为基元来进行三维的空间表达(魔城迷踪)。和mesh的区别就是把基元从三角面片换成了3D Gaussian分布的椭球体
通过把这些椭球体Splatting到图像平面上,并与真实的GT图像计算Loss,使用梯度下降对3D Gaussian椭球体的参数进行优化。这个过程的示意图如下:Splatting示意图
splatting示意图
一个3D Guassian分布的椭球体Splatting到2D图像上的示意图:
3D椭球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高斯分布示意图

特征值:表示在对应特征向量方向(主轴方向)上的方差,方差就决定了在这个方向上的分布范围。方差越大,分布的越离散;方差越小,分布的越集中。
上图中这个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

在这里插入图片描述
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/喵喵爱编程/article/detail/937168
推荐阅读
相关标签
  

闽ICP备14008679号