3DGS原理分析
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
三维高斯的优点:
球谐函数:
球谐函数特点:
总结:
抛雪球(splatting):
可微光栅化:
参数优化:
自适应密度控制机制:
与其他改进nerf效果比较:
结论:
1.2 3DGS原理分析(另一个up主)
建议看这里的3D高斯分布概率密度函数的推导,视频里的有点问题:
多元/多维高斯/正态分布概率密度函数推导 (Derivation of the Multivariate/Multidimensional Normal/Gaussian Density)
3DGS那些点只提供渲染,几何未必准确。但可以导出mesh之后再做测量,可以试试:
SuGaR: Surface-Aligned Gaussian Splatting for Efficient 3D Mesh Reconstruction and High-Quality Mesh Rendering
3DGS年度进展评述:【VALSE2024】0505 高林《APR:三维高斯泼溅(3D Gaussian Splatting)》
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)_哔哩哔哩_bilibili
3D Gaussian Splatting代码解读第二期part1(forward.cu)_哔哩哔哩_bilibili
3D Gaussian Splatting代码解读第二期part2(backward.cu)_哔哩哔哩_bilibili
1.4 3dgs工具
3DGS查看编辑处理工具supersplat,网页在线使用:SuperSplat
1.5 三维重建\渲染算法3D Gaussian Splatting详解:
深度值就是高斯椭球到视图平面的距离
实时渲染解决方案,它使用快速的GPU排序算法,并受到 tile-based 的栅格化的启发,遵循工作 :
[Pulsar: Efficient Sphere-Based Neural Rendering CVPR2021]
伪代码解释:
$w,h$:输入图像宽高,用于光栅化
$M,S$:高斯的均值和协方差,在世界空间中的
$C,A$:高斯的颜色和不透明度
$V$:当前相机视角
步骤:
1、剔除相机视角以外的高斯
2、转换,已知三维高斯分布和它的视角,就可以投影到视图平面里转换成二维高斯分布
3、创建栅格
4、复制二维高斯分布的信息到存储区
5、根据深度信息快速排序
6、确定每个栅格的第一个椭球以及最后一个椭球的范围
7、视图平面初始化为0,把它当做一张白纸,再进行渲染操作
8、再进行循环:
- 逐栅格循环
- 逐像素循环渲染
- 获得每个像素的位置,像素里面的椭球位置
- 把第一个椭球到最后一个椭球的颜色进行混合,这样一个像素的颜色就出来了
- 逐像素循环渲染
- 逐栅格循环
总结:3DGS能并行渲染,效率高,但是3dgs速度上更有优势不仅是因为它并行的tile base rendering, 因为nerf的volume rendering也可以开很大的batch size,很多ray一起渲。3dgs最大的优势在于利用了成熟的带硬件加速的光栅化管线,其次还有对于一些弱纹理区域可以用更大的gs来更省成本的表达
裁剪减小伪影:
致密化:
整个高斯泼溅的算法流程:
流程图中写错了,初始化参数应该是$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选择高斯函数的原因是它在变换层面有着一些良好的性质,而这和概率论意义上的高斯分布没半点关系。