3DGS是目前三维重建领域中的大作和经典之作,原理相信有很多人介绍过了,原理篇会在后面有空的时候更新,这里只做实例讲解。事实上,3DGS做了这样一件事情:首先输入一个稀疏的点云(一般是利用colmap的经典稀疏重建方法得到)相比于神经辐射场NeRF,3DGS不对每根光线做建模以及采样点的神经网络计算(太耗费内存与计算资源),他将每一个点建模为一个椭球(高斯分布),具体地,每一个高斯分布的参数涉及协方差,而这个协方差之列向量正好可以看作是旋转平移变换!
然后,就是这个Splatting过程,对于任意的点,会经过分裂或者clone的过程,得到一个稠密点云,然后渲染(注意这个渲染叫可微光栅化,与NeRF对于每条光线采样建模不一样)得到估计的图像,与原始图像做loss,以调整里面的各个参数。我们可以发现,3DGS是一个显式建模的过程,即可以看作是由一个几百万(这个数字是建模以后得到的)个高斯分布组成的庞大的高斯群(字面意思,非数学中的群),而NeRF对于场景的建模则是一个MLP!
3DGS在很多方面优于NeRF,比如训练速度,渲染速度,建模场景等,NeRF的优势在于,它可以表示连续的高分辨的场景,并且可以转成mesh来使用,而3DGS转mesh一直是一个令人头疼的问题,正如valse2024的workshop中学者方杰民所表达的,对于3DGS来说,consistency与geometry是一个trade-off。
1.先从官网开始配置环境
放上原作的code链接: