相关文档
2DGS
Introduction
- 作者在 introduction 中介绍 3dgs 目前在捕捉复杂几何形状方面存在不足,因为其体积化的 3d 高斯模型和物体表面的薄片性质相冲突。
- 同时,历史已经有一些文章证明,surfels(surface elements)可以很好的表示复杂物体表面信息。并且在 SLAM 中也有一些基于 surfels 的 SLAM 算法。
- 3DGS 由于使用椭球体作为基础元素,是带有体积的。其是在光线和高斯椭球体相交的位置计算出一个"高斯值",但当光线从不同位置射向椭球体时,这个其对应的深度信息是不一致的,这就无法渲染出准确且一致的深度信息。
- 作者提出自己的方法的优点:
- 使用带有朝向信息的 2D 椭圆盘作为基础元素,利用显式射线散射交点,从而实现透视正确散射
- 2D 高斯基本元素的表面法线可以直接通过法线约束进行表面平滑

- 总结一下,2DGS 方法的主要贡献:
- 提出了一个高效的可微分 2D 高斯渲染器,通过利用 2D 表面建模、射线-高斯交点和体积积分实现了透视正确的 splatting
- 引入了两个正则化损失项以改善和实现无噪声的表面重建,分别是深度失真和法线一致性
2DGS 方法
建模
- 2DGS 采用平坦的 2D 椭圆盘来表示稀疏点云,2D 基元将密度分布在平面圆盘上,并且定义法向量为密度变化最剧烈的方向(TODO:)。以下图为例:

- 定义高斯的中心点为pk,两个主要切向量为tu和tv,以及缩放向量S=(su,sv),利用以上信息可以定义一个 2D 高斯函数。其法向量由两个切向量叉乘得到tw=tu×tv。此时,2D 高斯的朝向参数可以用旋转矩阵R=[tutvtw]表示,缩放参数可以表示为最后一行为 0 的对角矩阵S=su000sv0000。此时 2D 高斯函数可以表示为:
P(u,v)whereH=pk+sutuu+svtvv=H[u,v,1,1]T=[sutu0svtv000pk1]=[RS0pk1]
- 举个例子,假如有如下参数:
- pk=[1,1,1]tu=[1,0,0]tv=[0,1,0]su=2sv=3u=0.5v=0.5
- 则其对应在 3D 空间中的点坐标为:P(u,v)=[1,1,1]+2[1,0,0]∗0.5+3[0,1,0]∗0.5=[2,2.5,1]
- 同时,每个 2D 高斯还包含和 3D 高斯中一样的不透明度α和与观察角度有关的,使用球谐函数表示的颜色c。
- 总结,一个 2D 高斯函数,有以下可学习的参数:
- 2D 高斯中心点pk
- 缩放参数S=(su,sv)
- 朝向[tu,tv]
- 不透明度α
- 颜色c(3 阶的话也是 16 个参数)
Splatting
- 3DGS 中,对透视投影做局部线性近似,来实现将 3D 投影到 2D 平面上,但这个方法只在中心点附近才准确,举例越远误差越大。
- 作者这里将 2D 的高斯投影到 image 上的过程,表示为齐次坐标系下的 2D-to-2D 的投影。定义W∈4×4为从世界坐标到屏幕空间的变换矩阵,则有:
x=[xz,yz,z,1]T=WP(u,v)=WH(u,v,1,1)T
- 屏幕空间:相机坐标系下的点,经过投影变换后的结果,是二维空间
- 其中,x表示从位置(x,y)发射的一条齐次坐标表示的光线,其与 2D splat 在深度z处相交。根据上式,给定一个屏幕坐标(x,y),可以通过u=(WH)−1x计算出像素坐标。但逆变换带来数值不稳定的问题,尤其是从侧面观察 splat 时,平面就退化为了一根线。为了解决这个问题,作者提出使用显式射线散射交点(ray-splat intersection)
ray-splat intersection:作者采用计算 3 个非平行平面的交点来得到 ray 和 splat 的交点。
- 首先对于图像坐标(x,y),定义两个正交平面hx=[−1,0,0,x]T和hy=[0,−1,0,y]T,此时光线与 2D splat 的交点一定在这两个平面的交线上。
- 将两个平面变换到 2D 高斯的局部坐标系下,根据前面的定义,WH为从 2D splat 的世界坐标系到屏幕空间的变换矩阵。且将一个点通过变换矩阵M变换的平面上等价于将使用M−T变换平面的齐次参数,因此这里的M=(WH)−1=(WH)T。通过下式可以将两个正交平面变换到 2D 高斯局部坐标系下:
hu=(WH)Thxhv=(WH)Thy
- 前面定义过,2D 高斯平面的点定义为(u,v,1,1),且交点一定落在这两个正交平面上,因此有:
hu=(u,v,1,1)T=hv(u,v,1,1)T=0
- 最终计算出 2D splat 局部坐标下的交点为:
u(x)=hu1hv2−hu2hv1hu2hv4−hu4hv2v(x)=hu1hv2−hu2hv1hu4hv1−hu1hv4
- 其中hui表示 4D 齐次平面参数中第i个元素。
退化解 (Degenerate Solutions)
- 当二维高斯从倾斜角度观察时,在屏幕空间中可能会退化为一条线。这意味着在光栅化过程中,高斯分布可能会被忽略,从而导致渲染结果的精度降低。为了处理这种情况,论文引入了一个低通滤波器来稳定优化过程。具体方法如下:
- 最大值滤波器:定义了一个新的高斯值G^(x)=max{G(u(x)),G(σx−c)},它取原始高斯值G(u(x))和低通滤波器值G(σx−c)的最大值。这样可以确保即使在退化情况下,二维高斯分布仍然能被正确处理。
- 其中, u(x)由上面的方程解给出,c 是中心boldsymbolpk的投影。直观地说,G^(x)由固定的屏幕空间高斯低通滤波器限定,该滤波器的中心为 ck 且半径为 σ,在实验中,作者设置σ=2/2以确保在渲染过程中使用足够的像素。
光栅化 (Rasterization)
训练
深度失真(Depth Distortion) loss
- 问题:当使用三维高斯分布进行渲染时,不同高斯分布可能会在深度上有交叠,这会导致渲染结果中的深度和颜色出现混乱,特别是在不同的高斯分布看起来很接近但实际上应该有不同深度时。
- 解决方案:引入深度失真正则化项,通过最小化交点之间的深度差距,来确保这些高斯分布在正确的深度位置上。这可以帮助集中权重分布,使得重建的几何形状更加清晰和准确。
公式如下:Ld=i,j∑ωiωj∣zi−zj∣
法线一致性(Normal Consistency) loss
- 问题:在渲染过程中,如果二维高斯分布的法线(指向相机的方向)不一致,会导致表面不光滑,看起来不自然。特别是在处理半透明表面时,这个问题会更明显。
- 解决方案:引入法线一致性正则化项,通过对齐二维高斯分布的法线和实际表面的法线,确保重建的表面是光滑的,且局部几何形状准确。这意味着二维高斯分布的法线要与由深度图估计的表面法线一致。
结果对比

实测数据
