3D Gaussian Splatting

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

一个讲得非常好得视频

overview:

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

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

高斯椭球:

3D高斯的形状是一个椭球,论文中对于高斯椭球的定义:

G(x)=e^{-\frac{1}{2}(x)^T\Sigma^{-1}(x) }

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

1.每个点的坐标(3D高斯的均值);
2.每个点的高斯表示中的𝛴;
3.每个点的颜色c
4.每个点的不透明度𝛼;
接下来我们看看论文中是如何处理这四个信息

position

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

𝛴的处理:

表示:

3DGaussian的𝛴需要半正定,直接优化𝛴可能导致𝛴满足不了这一条件
使用 放缩变换  S 和旋转变换  R  组合得到  𝛴   ,即:

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

3D ->2D:

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

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

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

颜色:

每个点的颜色:

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

计算颜色:

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

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

自适应密度控制:

rasterization:

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

forward :

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

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

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

4-计算每个像素的颜色

算法流程:

GS-SLAM:

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值