Advertisement

3D Gaussian Splatting

阅读量:

https://www.youtube.com/watch?v=2SQUMYw0h0A

一个讲得非常好得视频

overview:

把利用SFM得到的点云坐标作为高斯椭球均值,然后初始化高斯椭球。

将高斯椭球投影到像素平面---->光栅化得到I---->计算与Imageat{I}的差异作为梯度传播---->自适应密度控制调整高斯求数量---->将高斯椭球投影到像素平面

高斯椭球:

3D高斯的形状是一个椭球,论文中对于高斯椭球的定义:
G=e{-\frac{1}{2}(x)Tigma^{-1} }

在这种表示下面,我们希望存储(优化)的信息就是:

1. 每个点的坐标(3D高斯的均值);

2. 每个点的高斯表示中的𝛴;

3. 每个点的颜色c

4. 每个点的不透明度𝛼;

接下来我们看看论文中是如何处理这四个信息

position

初始化时,利用SFM得到的点云坐标作为高斯椭球均值

𝛴的处理:

表示:

3DGaussian的𝛴需要半正定,直接优化𝛴可能导致𝛴满足不了这一条件

使用 放缩变换 S 和旋转变换 R 组合得到 𝛴 ,即:

由于放缩变换都是沿着坐标轴,所以只需要一个3D向量 s ,旋转则用四元数 q 表达

3D ->2D:

在渲染时,我们需要将3D高斯投影到2D

其中这里 W 为世界坐标到相机坐标的转换;J代表project变换,对其进行仿射近似,再取雅克比矩阵(Jacobian)。我们可以对每个高斯在其中心点展开,得到其雅可比矩阵,就可以得到这个高斯的线性变换矩阵****J.

经过这个变换之后,我们只要丢掉Σ′的第三行的第三列就是投影到相机平面的协方差矩阵。

颜色:

每个点的颜色:

每个点的颜色时学习球谐函数获得的;

计算颜色:


其中lpha是2D高斯与不透明度的乘积,即:

这部分code主要位于这个模块:submodules/diff-gaussian-rasterization

自适应密度控制:

rasterization:

https://www.youtube.com/watch?v=1buFrKUaqwM

forward :

1-计算投影出来的半径,计算投影出来COV2D,取最大特征值*3作为圆的半径。

2-计算这些圆覆盖哪些像素,蓝色区域认为其覆盖的像素范围。

3-计算每个高斯的贡献度

4-计算每个像素的颜色

算法流程:



GS-SLAM:

全部评论 (0)

还没有任何评论哟~