引言

在计算机视觉快速发展的领域中,梦想始终如一: 拍摄几张物体或场景的照片,然后立即生成一个照片级真实、可漫游的 3D 模型。很长一段时间以来,这是一项困难且计算量巨大的任务。随后出现了神经辐射场 (NeRFs),它彻底改变了视图合成的质量,但渲染速度却极其缓慢。最近, 3D 高斯泼溅 (3D Gaussian Splatting, 3DGS) 异军突起,提供了可与 NeRF 媲美甚至超越其质量的实时渲染速度。

然而,这其中有一个限制条件。NeRF 和 3DGS 都非常依赖数据。它们通常需要从密集分布的视点拍摄数十甚至数百张图像,才能准确重建场景。如果你让这些模型“挨饿”——只给它们 3 或 4 张图像 (即“稀疏视图”或“少样本”场景) ——它们往往会崩溃。输出结果会变得模糊,几何形状扭曲,并且在空白空间中会出现“漂浮物” (幽灵般的伪影) 。

今天,我们将深入探讨一篇旨在解决这一特定问题的研究论文: NexusGS

Figure 1. NexusGS distinguishes itself from both NeRF-based and 3DGS-based competitors by incorporating epipolar depth priors, significantly improving the accuracy of depth maps and enhancing the fidelity of rendered images. This effectiveness in handling sparse input views is achieved through innovative point cloud densification with depth blending and pruning strategies.

如图 1 所示,NexusGS 即使在输入视图稀缺的情况下,也能重建出高保真的场景并生成精确的深度图。与那些经常产生噪点或过度平滑结果的竞争对手不同,NexusGS 利用几何学的基本定律——特别是对极几何 (Epipolar Geometry)——来正确初始化 3D 模型。

在这篇文章中,我们将剖析 NexusGS 的工作原理。我们将探讨它如何摆脱利用神经网络“猜测”深度的做法,转而使用光流和几何约束来计算深度。我们将详细拆解它的三阶段流程: 极线深度联结 (Epipolar Depth Nexus)、抗光流干扰深度融合 (Flow-Resilient Depth Blending) 和光流过滤深度剪枝 (Flow-Filtered Depth Pruning)。读完本文,你将理解将经典几何先验注入现代神经渲染技术中,是如何解决稀疏视图挑战的。

背景: 稀疏视图的困境

要理解为什么 NexusGS 是必要的,我们首先需要了解 3D 高斯泼溅是如何工作的,以及它为何在稀疏设置下会失败。

3D 高斯泼溅入门

3DGS 不像 NeRF 那样将场景表示为实体网格或神经网络,而是表示为一团 3D 高斯分布 (椭球体) 。每个高斯体都有其参数: 位置、旋转、缩放、颜色 (球谐函数) 和不透明度。为了渲染图像,这些高斯体会被光栅化 (泼溅) 到相机平面上。

高斯体的数学定义如下:

Equation for Gaussian definition

渲染过程涉及对这些高斯体进行排序,并从前向后混合它们:

Equation for Rendering Color

初始化问题

3DGS 最关键的一步是初始化 。 算法需要一个起点——通常是由运动恢复结构 (SfM) 软件 (如 COLMAP) 生成的稀疏点云。在密集设置下 (很多照片) ,COLMAP 能产生丰富的点云,3DGS 进而将其优化成精美的场景。

稀疏设置下 (照片很少) ,SfM 难以在图像之间找到足够的匹配特征,因为视角的改变太大了。由此产生的点云过于稀疏或充满错误。当 3DGS 从糟糕的数据开始时,它会试图通过在随机位置创建高斯体来补偿,从而导致上述的伪影。

现有解决方案的问题

以前解决这个问题的尝试通常依赖于单目深度估计 (Monocular Depth Estimation) 。 这些是经过训练的神经网络,用于观察单个 2D 图像并预测深度图。虽然令人印象深刻,但它们存在尺度模糊性 (它们不知道世界的真实大小) 和不一致性 (为图像 A 预测的深度可能无法与为图像 B 预测的深度在几何上对齐) 。

NexusGS 采取了不同的方法。它不依赖“黑盒”深度估计器,而是使用相机之间明确的几何关系——对极几何——来精确计算深度。

核心方法: NexusGS 流程

NexusGS 背后的研究人员认为,如果我们一开始就拥有更好的点云,就不需要复杂的正则化。他们的方法侧重于在标准 3DGS 训练开始之前,生成一个密集、准确的点云。

整体流程可视化如下:

Figure 2. Given a few input images, our method first computes depth using optical flow and camera poses at the Epipolar Depth Nexus step. We then fuse depth values from different views, minimizing flow errors with flow-resilient depth blending. Before forming the final dense point cloud, outlier depths are removed at the flow-filter depth pruning step. In training, we do not need depth regularization, thanks to the embedded epipolar depth prior in the point cloud.

该过程包含三个主要阶段,我们将详细检查:

  1. 极线深度联结 (Epipolar Depth Nexus): 使用光流和几何计算深度。
  2. 抗光流干扰深度融合 (Flow-Resilient Depth Blending): 智能地合并深度估计。
  3. 光流过滤深度剪枝 (Flow-Filtered Depth Pruning): 移除不可靠的点。

第一步: 极线深度联结

这种方法的基础是极线 (Epipolar Line) 。 在立体视觉中,如果你在图像 A 中有一个点,那么它在图像 B 中的对应点必须位于一条特定的线上,这条线被称为极线。这是一个由两个相机的相对位置决定的硬性几何约束。

光流 + 几何

作者利用光流 (Optical Flow) 估计器 (具体来说是一个预训练的网络) 来寻找图像之间的匹配像素。光流预测源视图中的一个像素会移动到目标视图的哪个位置。

\[M_{flow}^{i \rightarrow j} = f(I_i, I_j)\]\[\hat{p}_j = p_i + M_{flow}^{i \rightarrow j}(p_i)\]

这里,\(\hat{p}_j\) 是目标视图中的预测位置。然而,光流并不完美。由于估计误差,预测点 \(\hat{p}_j\) 可能不会精确地落在极线上。

为了解决这个问题,NexusGS 计算“垂足”——即极线上距离光流预测点最近的点。

Equation for perpendicular foot calculation

通过强制点落在极线上,系统满足了三角测量的几何要求。一旦点位于线上,就可以使用三角测量逻辑显式计算深度。论文推导出了这个深度 \(D^{i \rightarrow j}\) 的具体公式:

Equation for Depth Calculation

该计算的几何示意图如下方图 8 所示。它本质上是利用相机中心和图像点形成的三角形面积来推导深度距离。

Figure 8. Illustration of the geometry relationships used in Epipolar Depth Nexus step.

通过对每个像素执行此操作,NexusGS 生成了一个基于实际多视图几何而非单视图猜测的深度图。

第二步: 抗光流干扰深度融合

这里有个挑战: 如果你有 3 张图像,你可以通过将图像 1 中的像素与图像 2 进行比较来计算深度,也可以通过将其与图像 3 进行比较来计算。这会给你同一个像素的多个深度值。哪一个是正确的?

一个天真的方法是取平均值。然而,如果其中一个光流估计明显错误,它将扭曲平均值,导致错误的 3D 点。

NexusGS 引入了抗光流干扰深度融合 (Flow-Resilient Depth Blending, FRDB) 。 这里的核心见解纯粹是数学上的: 我们希望选择那个对光流误差最不敏感的深度估计。

敏感性分析

考虑下方的图 3。它展示了潜在的误差情况。

Figure 3. We summarize potential depth blending error scenarios and compare the strategies of selecting the minimum depth versus the average depth.

作者定义了两个距离:

  • \(dis_{ref}\): 从源相机到 3D 点的距离 (我们想要的) 。
  • \(dis_{pro}\): 目标视图中的投影距离 (与像素位置相关) 。

如果光流稍有错误 (像素位置的小幅偏移) ,它会改变计算出的深度 (\(dis_{ref}\))。这种关系不是线性的。在某些几何配置中,微小的像素误差会导致巨大的深度误差。而在其他配置中,即使像素稍微偏离,深度也是稳定的。

作者计算了参考距离相对于投影距离的梯度 (变化率) :

Equation for Gradient of Reference Distance

较小的梯度意味着深度计算是稳定的——它对光流误差具有弹性。较大的梯度意味着计算是不稳定的。

因此,NexusGS 不是对深度取平均,而是选择使该梯度最小的视图所对应的深度值:

Equation for selecting the best depth

这个巧妙的选择过程确保了初始化的点云由几何上最可靠的点组成。

第三步: 光流过滤深度剪枝

即使有了最好的融合策略,有些点仍然是坏点。这种情况发生在光流完全失败时——可能是由于遮挡 (物体在一个视图中可见,但在另一个视图中被挡住了) 或重复纹理。

为了清理数据,作者引入了光流过滤深度剪枝 (Flow-Filtered Depth Pruning, FFDP)

还记得第一步中的“垂足”吗?我们将光流预测点移到了极线上。我们移动的距离是对误差的一种度量。如果光流预测点距离极线非常远,这意味着光流估计器可能失败了,或者几何约束被违反了。

距离 \(g^{i \rightarrow j}\) 的计算公式为:

Equation for Epipolar Distance

该方法简单地应用了一个阈值 \(\epsilon_d\)。如果到极线的距离太大,该点就会被丢弃。

Equation for Pruning Threshold

这一过滤步骤移除“离群点”——那些否则会在最终 3D 重建中成为漂浮伪影或噪点的点。

结果: 密集的初始化

经过这三个步骤,我们获得了一组密集、准确的 3D 点。这些点用于初始化 3D 高斯体。由于初始化非常强大,作者发现他们在训练期间不需要在损失函数中添加复杂的深度正则化项。他们只需使用标准的颜色 (L1) 和结构相似性 (D-SSIM) 损失进行训练:

Equation for Loss Function

实验与结果

研究人员在标准基准上评估了 NexusGS,包括 LLFF (真实世界前向场景) 、DTU (以物体为中心) 和 Mip-NeRF360 数据集。他们将其与 SparseNeRF、FSGS 和 DNGaussian 等顶级方法进行了比较。

定量优势

结果令人信服。表 1 (下文) 总结了三个主要数据集上的性能。

Table 1. Quantitative evaluations on the LLFF, DTU and Mip-NeRF360 datasets.

NexusGS (标记为“Ours”) 始终获得最高的 PSNR (峰值信噪比) 和 SSIM (结构相似性指数) ,以及最低的 LPIPS (感知误差) 。

  • 在 LLFF (3 个视图) 上,它的 PSNR 比第二名高出 0.62 dB,优势显著。
  • 它在 MipNeRF-360 上的表现也非常出色,这是一个具有无界背景的挑战性数据集,其他方法在这里往往会出现过度平滑的问题。

定性视觉效果

数字背后有视觉证据的支持。让我们看看对比。

LLFF 数据集 (真实世界) : 在图 4 中,对比“Ours”列和其他列。

  • ViP-NeRF 未能正确重建叶子的几何形状。
  • SimpleNeRF 的边缘不完整。
  • CoR-GS 产生了一个模糊、过度平滑的结果。
  • NexusGS 捕捉到了叶子的锐利边缘和花朵的复杂细节,几乎完美匹配了 Ground Truth (真实值) 。

Figure 4. Visual comparisons on LLFF (3 views). Our method produces richer details and more accurate depth than all competitors.

DTU 数据集 (物体) : 在图 6 中,观察花瓶和毛绒玩具的重建。像 CoR-GS 这样的其他方法难以处理花瓶上的精细图案或玩具的模糊纹理。NexusGS 保留了这些高频细节。

Figure 6. Visual comparisons on the DTU dataset (3 views). Our method produces a more comprehensive point cloud than others, resulting in higher-quality renderings.

深度图: 最能说明问题的可视化可能是深度图对比 (图 14) 。好的深度图应该在物体内部平滑,但在边缘处有清晰的不连续性。看看兰花场景 (底行) 。竞争对手的深度图充满了噪点或模糊不清。NexusGS 生成的深度图清晰地将花瓣与背景分离开来。

Figure 14. Visual comparisons of depth maps on the LLFF dataset with 3 input views.

消融实验: 各个组件重要吗?

作者进行了消融实验,以证明 FRDB (融合) 和 FFDP (剪枝) 实际上起到了关键作用。

在下面的可视化 (图 7) 中,你可以看到简单平均与所提出方法之间的区别。

  • Avg (平均) : 点云充满噪点,渲染图像模糊。
  • FRDB + FFDP: 点云干净且与物体表面对齐,从而产生清晰的渲染。

Figure 7. Visualization of ablation study results using 3-views.

定量消融表证实了这一点: 简单地平均深度产生的 PSNR 为 20.39,而完整的 NexusGS 流程达到了 21.07。

Table 3. Ablation study on LLFF with 3 training views.

结论与启示

NexusGS 代表了“少样本”场景下 3D 重建的一大进步。它的成功突显了深度学习和计算机视觉领域的一个重要教训: 几何先验依然重要。

虽然目前的趋势是用更多的神经网络层来解决问题 (比如从单张图像学习深度) ,但 NexusGS 表明,通过将我们的模型锚定在相机工作的物理定律中,我们可以获得更好的结果。通过将光流不仅仅视为特征匹配器,而是作为极线上的几何约束,NexusGS 生成了基于物理的初始化。

主要收获:

  1. 密集初始化是关键: 稀疏视图不一定意味着稀疏点云。利用光流和几何学可以合成 3DGS 所需的密度。
  2. 几何 > 猜测: 通过三角测量显式计算深度比隐式单目深度估计更可靠,更能保持视图之间的尺度一致性。
  3. 智能融合: 并非所有数据点都是平等的。分析深度计算的数学稳定性 (梯度) 使得模型能够忽略不稳定的数据。

对于学生和研究人员来说,NexusGS 提醒我们,理解视觉的底层几何——外参、内参和极线——与理解最新的神经架构一样强大。随着我们迈向数据可能受限的 VR/AR 应用 (例如用户用手机快速拍摄 3 张照片) ,像 NexusGS 这样的技术对于即时创建沉浸式、照片级真实的体验将至关重要。