1. 三维高斯泼溅(3DGS)

1.1 3DGS原理分析

3D Gaussian Splatting for Real-Time Radiance Field Rendering原文:

论文地址:https://arxiv.org/abs/2308.04079

项目主页:https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/

整体流程:

【新芽结业汇报】DIP、NeRF 与 3DGS:自监督式图像处理及3D场景渲染_哔哩哔哩_bilibili

3DGS总体流程

三维高斯的优点:

img

球谐函数:

球谐函数特点:

总结:

抛雪球(splatting):

可微光栅化:

参数优化:

自适应密度控制机制:

与其他改进nerf效果比较:

结论:

1.2 3DGS原理分析(另一个up主)

多元/多维高斯/正态分布概率密度函数推导 (Derivation of the Multivariate/Multidimensional Normal/Gaussian Density)

3DGS那些点只提供渲染,几何未必准确。但可以导出mesh之后再做测量,可以试试:


1.3 B站UP主孤心不寒的视频:

三维重建\渲染算法3D Gaussian Splatting代码部署|环境配置|训练

三维重建\渲染算法3D Gaussian Splatting代码部署|环境配置|训练_哔哩哔哩_bilibili

3D Gaussian Splatting查看器SIBR_viewers以及其它相关网页\软件分享

3D Gaussian Splatting查看器SIBR_viewers以及其它相关网页\软件分享_哔哩哔哩_bilibili

三维重建\渲染算法3D Gaussian Splatting详解:

三维重建\渲染算法3D Gaussian Splatting详解_哔哩哔哩_bilibili

3D Gaussian Splatting代码调试之前的一些相关知识介绍(坐标变换|四元数|球谐函数)

3D Gaussian Splatting代码调试之前的一些相关知识介绍(坐标变换|四元数|球谐函数)_哔哩哔哩_bilibili

  • 3D Gaussian Splatting代码解读第一期(Gaussian_module|Camera)

3D Gaussian Splatting代码解读第一期(Gaussian_module|Camera)_哔哩哔哩_bilibili

  • 3D Gaussian Splatting代码解读第二期part1(forward.cu)

3D Gaussian Splatting代码解读第二期part1(forward.cu)_哔哩哔哩_bilibili

  • 3D Gaussian Splatting代码解读第二期part2(backward.cu)

3D Gaussian Splatting代码解读第二期part2(backward.cu)_哔哩哔哩_bilibili

1.4 3dgs工具

3DGS查看编辑处理工具supersplat,网页在线使用:SuperSplat

1.5 三维重建\渲染算法3D Gaussian Splatting详解:

image-20241120213641560

image-20241120213813961 image-20241120214627703 image-20241120220106631 image-20241120221108398 image-20241120221150659

image-20241120221522604

image-20241120221852702

深度值就是高斯椭球到视图平面的距离

  • 实时渲染解决方案,它使用快速的GPU排序算法,并受到 tile-based 的栅格化的启发,遵循工作 :

    [Pulsar: Efficient Sphere-Based Neural Rendering CVPR2021]

image-20241121105438311

image-20241121105822564

伪代码解释:

$w,h$:输入图像宽高,用于光栅化

$M,S$:高斯的均值和协方差,在世界空间中的

$C,A$:高斯的颜色和不透明度

$V$:当前相机视角

步骤:

  • 1、剔除相机视角以外的高斯

  • 2、转换,已知三维高斯分布和它的视角,就可以投影到视图平面里转换成二维高斯分布

  • 3、创建栅格

  • 4、复制二维高斯分布的信息到存储区

  • 5、根据深度信息快速排序

  • 6、确定每个栅格的第一个椭球以及最后一个椭球的范围

  • 7、视图平面初始化为0,把它当做一张白纸,再进行渲染操作

  • 8、再进行循环:

    • 逐栅格循环
      • 逐像素循环渲染
        • 获得每个像素的位置,像素里面的椭球位置
        • 把第一个椭球到最后一个椭球的颜色进行混合,这样一个像素的颜色就出来了

image-20241121153037843

总结:3DGS能并行渲染,效率高,但是3dgs速度上更有优势不仅是因为它并行的tile base rendering, 因为nerf的volume rendering也可以开很大的batch size,很多ray一起渲。3dgs最大的优势在于利用了成熟的带硬件加速的光栅化管线,其次还有对于一些弱纹理区域可以用更大的gs来更省成本的表达

裁剪减小伪影:

image-20241121153753885

致密化:

image-20241121160231184

整个高斯泼溅的算法流程:image-20241121161205021

流程图中写错了,初始化参数应该是$i$=0

其它相关工作

1、驱动高斯:用于周围动态自动驾驶场景的复合高斯分层渲染

DrivingGaussian: Composite Gaussian Splatting for Surrounding Dynamic Autonomous Driving Scenes.

​ 原文链接:arxiv.org/pdf/2312.07920

2、ewa volume splatting

​ 3d高斯是将ewa volume splatting与可微渲染方法结合起来的工作,使用高斯函数的idea出自ewa volume splatting,而ewa volume splatting算法中高斯函数的作用是充当重建核。ewa volume splatting选择高斯函数的原因是它在变换层面有着一些良好的性质,而这和概率论意义上的高斯分布没半点关系。