🗒️3D Gaussian Splatting
type
status
date
slug
summary
tags
category
icon
password
3D Gaussian Splatting是对NeRF技术的一种革新,通过精巧的利用3D高斯函数来改善传统NeRF在处理复杂场景时的效率和质量。这一方法不仅仅在于创建一个由3D高斯函数组成的点云来表示场景,还在于如何处理这些点云以达到高效的渲染。在3D Gaussian Splatting中,场景中的每一个点都被一个高斯函数表示,这个函数的峰值代表了点的位置,其宽度和方向由协方差矩阵控制,这使得渲染器可以捕捉到由于物体细微结构造成的细致阴影和光照变化。与此同时,球谐函数的使用允许每个点携带关于其颜色的信息,而不透明度参数则控制了点云中每个点的影响范围,即Splatting的大小。这使得3D Gaussian Splatting不仅可以处理光线在场景中的复杂交互,而且可以通过调整高斯函数的参数实时地优化这些交互,以生成高质量的图像。因此,3D Gaussian Splatting在保证图像质量的同时,大大提高了渲染的速度,解决了传统NeRF在实时渲染高质量图像时的瓶颈。在实际应用中,如实时图像合成、增强现实和虚拟现实等领域,3D Gaussian Splatting已展现出其巨大的潜力和实用价值。
3D Gaussian Splatting接受由Colmap生成的点云作为输入,并根据这些点云生成对应的高斯点云。这个过程涉及到球谐函数、高斯函数、不透明度和协方差等概念。通过可微渲染器对生成的高斯点云进行形状修正。
具体而言,球谐函数用来描述高斯点云的光照特性,它可以帮助我们模拟光照的效果。高斯函数则用来描述每个点的空间分布特征,通过调整高斯函数的参数,我们可以控制点云的密度和形状。不透明度则决定了每个点的透明程度,从而影响点云的可见性。协方差则用来表示点云中点的分布情况,从而影响点云的整体形状。
通过可微渲染器,我们可以对生成的高斯点云进行形状修正。这一过程可能会涉及到调整和优化高斯函数的参数,以获得更加真实和逼真的渲染效果。通过这种技术,我们可以创建具有细节丰富、逼真的场景表示,增强图像的真实感和细节。
高斯函数
一维高斯
高斯函数,又称正态分布函数,是一个在自然科学和社会科学广泛应用的概率函数,它在中心点附近呈钟形,并以其平均值对称。在3D Gaussian Splatting中,高斯函数被用作权重,定义点云中每个点对其周围空间的影响。这些点被视为具有高斯分布的“印迹”或“斑点”,其中点的“宽度”代表高斯的标准差,这允许场景以细致的方式进行光滑渲染,尤其在实时应用中,能够快速处理光照和阴影的复杂交互。
广义上的一维高斯函数为表达式:
假设一维随机变量,此时高斯函数就是正态分布的PDF,即:
这样保证了,均值为,方差为。考虑到点云是三维的,我们推广出一下多维的高斯函数。
多维高斯
假设存在多维随机变量向量,有,即服从标准正态分布,并且与相互独立,那就有:
现考虑,,为了使用标准正态分布,需要将标准化。定义一个变换矩阵,做如下线性变换以标准化:
代入关于的高斯函数:
为了确定,可以由推导:
将被积变量,通过雅可比行列式换元变换为:
于是:
这时就能得到多维情况下的:
为了将该式子转换为均值向量和协方差矩阵表示,由于均值向量已经求出,需要将A转换为协方差矩阵表示:
最终用协方差矩阵表示的:
全景图与透视图的转换
给定透视空间和球面空间,我们需要将球面空间的位置转换到透视空间里。的描述集为(半径),的描述集为(宽和高)。
假设水平视角为,垂直视角为,那么两空间的转换方程:
我们需要确定矩阵。
在此之前,首先获得描述集和视角的关系:
根据几何关系(以后补证明),可以确定: