可重打光的 3D 高斯:BRDF 分解和光线追踪的逼真点云重打光技术

24年8月来自南京大学、复旦大学和华为诺亚实验室的论文“Relightable 3D Gaussians: Realistic Point Cloud Relighting with BRDF Decomposition and Ray Tracing”。

本文提出一种可微分点渲染框架来实现照片级真实感的重打光方法。为了使重建的场景可重打光,关联额外属性(包括法线向量、BRDF 参数和来自各个方向的入射光)来增强原始 3D 高斯。从一组多视图图像中,通过 3D Gaussian Splatting 优化 3D 场景,同时通过基于物理的可微分渲染分解 BRDF 和打光。为了在照片级真实感的重打光中产生合理的阴影效果,引入一种基于点的光线追踪和有边界的体分层结构,实现高效的可见性预计算。与最先进的方法相比,大量实验证明了改进的 BRDF 估计、新视图合成和重打光结果。所提出的框架展示了基于点的流水线实现编辑、跟踪和重打光的基于网格图形学流水线潜力。

如图所示:在该流水线中,将场景表示为可重打光的 3D 高斯。从多视图图像中,用逆向渲染技术恢复单个目标的几何形状和材质。然后,由于显式表示,目标很容易合成到新场景中。之后,通过基于点的光线追踪解决复杂的遮挡问题并重打光新场景。最终,实现高保真度的重打光,阴影非常逼真。

请添加图片描述

神经辐射场。以神经辐射场 (NeRF) [31] 为例的可微分渲染技术,引起了广泛关注 [3,12,32]。NeRF 利用隐式多层感知器 (MLP),将 3D 位置和观察方向作为输入,为可微分体渲染生成密度和视图相关颜色。尽管它具有强大的神经隐式表示,但速度和质量都有待提高。效率改进主要集中在优化神经场上的查询和最小化查询 [12,13,15, 16,21,22,32,39]。质量增强包括抗锯齿 [3-5] 或利用外部监督 [14,48] 等。

基于可微分的渲染。使用点作为渲染基元最早是在 [29] 中提出的。为了解决直接光栅化离散点时产生多孔图像的问题,解决方案分为两类。一种方法直接使用点作为渲染基元,并使用 SIFT 描述符 [37] 或神经描述符 [1,38] 对点附近的几何和光度特征进行编码。这将产生具有间隙的一个特征图像,然后对其进行解码以恢复无孔 RGB 图像。另一类方法将点建模为占据特定空间的基元,如面元(surfel) [36,47] 或 3D 高斯 [26]。然后使用 splatting 技术生成渲染图像。这项技术在 21 世纪得到了重大发展 [36, 57, 58],在可微分渲染时代,PointRF [52]、DSS [47] 和 3DGS [26] 是值得注意的例子。点,由于其固有的易于编辑,是一种很有前途的渲染基元,这一点也在 [54] 中得到证实。

材质和照明估计。由于其内在的高维复杂性,从多视角图像中分解场景的材质和光照是一项艰巨的挑战。一些方法在可控光的假设下简化了问题 [2,6–8,18,34,35,40]。后续研究探索了更复杂的光照模型以应对现实场景。NeRV [41] 和 PhySG [51] 利用环境图来管理任意光照条件。NeRD [9] 将球面高斯分布归因于每张图像,解决在不同光照下捕获的图像所带来的挑战。IRON [50] 引入一种针对神经 SDF 量身定制的边缘采样算法。NeRFactor [53] 利用光可见性来实现卓越的材质和光照分解。进一步的研究 [19,52] 考虑了间接光照,从而提高了 BRDF 估计质量。[20, 33] 利用可微分行进四面体(marching tetrahedrons)对网格表面进行直接优化。 [10,28] 处理不同的摄像机、照明和背景。Ref-NeRF [42] 建议使用集成的方向编码来改善反射目标的重建保真度。[30,33] 使用split-sum逼近方法来近似阴影效果。NeMF [55] 将场景表示为微薄片体(micro-flake volume)。NeFII [44] 通过蒙特卡洛采样的路径追踪去积分照明。InvRender [56] 直接利用神经辐射场来计算间接照明,而不是在分解直接照明和材料的同时对其进行估计。TensoIR [23] 基于张量分解和神经场执行逆渲染。NeILF [45] 和 NeILF++ [49] 将入射光表示为神经入射光场,而 NeILF++ 通过相互反射将 VolSDF [46] 与 NeILF 集成。然而现有的方案很少深入研究点云的BRDF估计,估计和渲染质量还有待提高。

与广泛采用的神经辐射场不同,3DGS [26] 采用显式 3D 高斯点作为其渲染基元。每个高斯点还配备不透明度 o 和视图相关颜色 c。

请添加图片描述

3DGS 中的渲染过程分为两个主要步骤。首先,将 3D 高斯投影到图像平面上的 2D 高斯。2D 均值由 3D 均值的精确投影确定,而 2D 协方差矩阵则近似为:Σ′ = JW ΣW⊤J⊤,其中 W 和 J 表示视角变换和透视投影变换的仿射近似的雅可比矩阵 [57]。随后,从前到后对 N 个有序 2D 高斯进行 alpha 混合,得出像素颜色。

请添加图片描述

其中 α 是将不透明度 o 与根据 Σ′ 和图像空间中的像素坐标计算的二维协方差贡献相乘而得到的 [26]。在实施细节中,协方差矩阵 Σ 被参数化为一个单位四元数 q 和一个三维缩放向量 s,在整个优化过程中保持其有意义的解释。此外,视图相关颜色 ci 通过一组球谐函数 (SH) 表示。

总之,3D 场景由一组 3D 高斯函数表示,其中第 i 个高斯 Pi 参数化为 {μi, qi, si, oi, ci}。

这里为每个 3D 高斯函数添加一个法线属性 n 并尝试求解。一种潜在的方法将 3D 高斯函数的空间均值视为常规点,并根据局部平面假设估计法线。然而,这种方法不能提供准确的法线估计。原因有两个:首先,重建的高斯点云通常很稀疏。更重要的是,高斯点自然很“软”,这意味着这些点与目标表面并不精确对齐。

为了解决这些限制,通过反向传播为每个 3D 高斯函数从初始随机向量优化 n。沿一个射线的所有高斯函数深度视为一个分布,并将像素深度估计为该分布的期望。类似地,确定每个像素的法线。这个过程描述如下:

请添加图片描述

为了在细节区域实现出色的渲染保真度,原始 3DGS [26] 通过视空间点的梯度对 3D 高斯函数进行致密化。在此基础上,为了改善薄区域中的法线恢复,在法线梯度上引入了额外的致密化标准。具体来说,对法线梯度超过阈值 Tn 的高斯函数进行致密化。

用渲染方程[24]来模拟光与表面的相互作用,并考虑它们的材质特性和几何形状。

请添加图片描述

先前的方法 [49, 51] 通常首先通过可微分渲染获取射线和表面之间的交点。然后,在这些点上应用渲染方程以促进基于物理的渲染 (PBR)。然而,这些方法在基于点的框架中提出了重大挑战。当然,在 3DGS [17] 中提取表面是可行的;但是,对于逆 PBR,它需要基于坐标的入射光场。每次迭代期间在数百万个点处查询该光场会带来巨大的计算负担。此外,必须承认,在 3DGS 系统中准确提取几何表面具有相当大的挑战。

为了解决这个问题,为每个 3D 高斯计算 PBR 颜色 {c′i},然后通过 alpha 混合获得 PBR 图像 C′,如图所示。执行光栅化和 alpha 混合以获得原始颜色图 C、PBR 颜色图 C’、深度图 D、法线图 N 等。为了优化可重打光的 3D 高斯,利用真值图像 Cgt 和从 D 得出的伪法线图进行监督。

请添加图片描述
这种渲染方法更有效,主要有两个原因。首先,由于每个高斯会根据其尺度影响多个像素,因此 PBR 在更少的 3D 高斯上执行,而不是在所有输入视图中对图像像素执行。其次,通过为每个高斯分配离散属性,避免对全局神经场的需求。

为了使 3D 高斯可重打光,为每个高斯分配 BRDF 属性,并采用简化的 Disney BRDF 模型 [11]。BRDF 属性包括反照率 b ∈ [0, 1]3 和粗糙度 r ∈ [0, 1],等式(7)中的 BRDF f 分为一个漫反射项 fd = b/π 和一个镜面反射项如下:
请添加图片描述
为每个高斯函数优化 NeILF,可能会过于不受约束,从而导致难以从外观上准确分解入射光。为了解决这个问题,应用先验,将入射光划分为全局共享的直接分量和单个高斯的间接分量。从方向 ωi 高斯函数处采样的入射光表示为:
请添加图片描述
尽管利用了相对低层的球面谐波 (SH),仍然可以捕捉到一些相互反射的效果,因为给定像素的渲染颜色来自于多个可重打光的 3D 高斯协作。

对于每个 3D 高斯,通过斐波那契(Fibonacci)采样 [45] 在半球空间上采样 Ns 个入射方向,提供等式(7)的数值积分。然后,每个高斯的 PBR 颜色由以下公式给出:

请添加图片描述

其中 ωi 是立体角。

总而言之,该方法将 3D 场景表示为一组可重打光的 3D 高斯和一个全局环境光 lenv,其中第 i 个高斯 Pi 被参数化为 {μi, qi, si, oi, ci, ni, bi, ri, li}。

为了减轻材料打光的模糊性[45],利用适当的正则化来促进其合理分解。

3D 高斯的射线追踪技术建立在有边界体分层结构 (BVH) 的基础上,能够高效地查询射线的可见性。该方法采用了 [25] 中的思想,即一种构建二叉基树(binary radix tree)的就地算法,可最大限度地提高并行性并促进实时 BVH 构建。具体来说,从一组给定的 3D 高斯函数构建一个二叉基树,其中每个叶节点代表高斯函数的紧边框,每个内部节点表示其两个子节点的边框。

与不透明多边形网格的射线跟踪不同,其仅需要最近交点,而半-透明高斯函数的射线追踪。需要考虑所有可能影响射线透射率的高斯函数。三维高斯点上的光线追踪过程可以描述如下:光线从相机中心出发,在穿过三维高斯点时累积透射率,直到透射率为零。要解决的第一个关键问题是如何定义单个三维高斯对透射率的贡献。实际上,将三维高斯转换为二维高斯涉及逼近,这使得识别高斯和一个光线之间的准确交点变得复杂。受 [27] 的启发,将射线与三维高斯的交点近似为三维高斯贡献峰值的点。等价的相交点定义为
请添加图片描述
其中 tj 定义为:

请添加图片描述

高斯函数在射线上的出现顺序不会影响整体透射率。如图所示,从二叉基树的根节点开始,在射线和每个节点的子节点有边界体之间递归执行相交测试。到达叶节点后,将识别相关的高斯函数。通过这种遍历,透射率 T 逐渐衰减:
请添加图片描述
请添加图片描述

注:图中给出获得射线与高斯的交点的三步,即(a)与 BVH 根节点相交;(b)递归地深入到相交的子节点,直到叶节点;(c)执行公式;从公式(13)得到等效交点。(d)3D 高斯实际上对一段射线,有不可忽略的影响。

为了加快射线跟踪速度,如果射线的透射率低于某个阈值 Tmin,则该过程将提前终止。

虽然可以通过提出的 3D 高斯射线跟踪得出基本可见性项,但由于计算复杂性,通过在线射线跟踪查询可见性项具有挑战性。尽管如此,专注于静态场景,可以预计算对每个高斯在由法向量 n 确定的半球域上可见性项 V (ωi),然后将其积分到渲染方程中。

因此,将优化过程分为两个阶段。在第一阶段,优化原始 3D 高斯点云,并为每个高斯增加一个额外的法向量 n。紧接着,通过提出的射线跟踪,预计算每个高斯的可见性。在第二阶段,锁定 3D 高斯的几何形状,并专注于使用渲染的流水线去优化材料和光照参数。

基于可重打光的 3D 高斯,设计了一个基于点的图形学流水线,无缝集成了轻松的场景编辑和逼真的重打光。虽然显式点表示使场景编辑变得容易,但在现有基于点的渲染流水线中,实现照片般逼真的重打光几乎是无法克服的。相反,在基于隐式表示的逆渲染方法中,虽然高度逼真的重打光是可行的,但场景编辑却是一项具有挑战性的工作。

作为一个例子,专注于在多目标合成场景中重打光。最初,流水线通过光线跟踪计算每个高斯点的可见性 V(ωi)基于点的光线跟踪方法能够熟练地管理这些复杂性并确保在新场景中准确更新遮挡。随后,渲染过程展开,从高斯级 PBR 开始,以 alpha 混合结束。在此过程中,每个目标的原始间接照明被丢弃。因此,仅基于一组离散点就实现了具有非常生动的阴影效果的重打光。

猜你喜欢

转载自blog.csdn.net/yorkhunter/article/details/143367019