k030 Gaussian Splashing, Direct Volumetric Rendering Underwater

Zhangwenniu 于 2025-03-03 发布

如果有研究水下3D重建的研究者,可以通过邮箱zhangwenniu@163.com联系我,我目前创建了一个水下3D重建的研究者交流群,欢迎感兴趣的研究者加入。

论文链接

发表时间:[v1] Fri, 29 Nov 2024 10:04:38 UTC (23,878 KB)

重点难点讲解

论文的重点和难点内容

论文重点

  1. 提出了一种新的水下场景重建和渲染方法——Gaussian Splashing

    • 核心思想:将3D Gaussian Splatting(3DGS)与水下成像模型相结合,通过引入新的渲染方程和优化过程,实现快速且高质量的水下场景重建和渲染。

    • 创新点

      • 新的渲染方程,考虑了水下的散射和吸收效应。

      • 新的深度估计方法,结合水下成像特性优化深度图。

      • 完全基于CUDA的实现,确保高效的计算和实时渲染。

  2. 显著提升的效率和性能

    • 速度:训练时间仅需几分钟,渲染速度可达140帧/秒(FPS),远超现有的基于NeRF的方法(如Sea-thru NeRF,训练需数小时,渲染速度不到1 FPS)。

    • 效果:在多个水下数据集(如Red Sea、Curac¸ao、Panama和TableDB)上表现出色,尤其是在处理远距离和高散射区域时,细节清晰度显著优于其他方法。

  3. 新的水下数据集——TableDB

    • 特点:包含172张高分辨率图像,覆盖不同距离的水下场景,具有更大的场景深度变化范围,适合验证方法的有效性。
  4. 广泛的应用前景

    • 水下导航和SLAM:快速重建水下场景几何,为自主水下机器人提供更好的导航能力。

    • 海洋科学教育:通过实时渲染高质量的水下场景,增强教育的互动性和趣味性。

    • 文化遗产保护:为水下考古和文化遗产保护提供高精度的三维重建和可视化工具。

论文难点

  1. 水下成像模型的复杂性

    • 难点:水下图像的成像过程比空气中的图像复杂得多,主要由于光在水中的散射和吸收。这种物理过程导致图像颜色失真、对比度降低和细节模糊,现有的三维重建方法(如NeRF和3D Gaussian Splatting)在水下场景中表现不佳。

    • 解决方案:作者引入了新的渲染方程,基于Sea-thru成像模型,考虑了水下的散射和吸收效应。通过引入新的参数(如直接衰减系数 $B_d$ 和背景散射系数 $B_\infty$、$B_b$)来模拟水下图像的形成过程。

  2. 高效的深度估计和优化

    • 难点:在水下场景中,深度信息对于重建和渲染至关重要,但现有的深度估计方法在水下环境中表现不佳,尤其是在能见度极差或场景深度变化较大的情况下。

    • 解决方案:作者提出了一种新的深度估计方法,利用3DGS的渲染管道提取每个像素的深度信息,并通过优化过程不断改进深度图。此外,通过引入新的损失项 $L_{bs}$,同时优化场景几何和水下成像参数。

  3. 实时渲染的实现

    • 难点:水下场景的重建和渲染需要处理大量的计算任务,尤其是在考虑散射和吸收效应时,实时渲染是一个巨大的挑战。

    • 解决方案:作者将整个算法完全用CUDA实现,确保了快速的训练和渲染速度。通过优化算法设计和充分利用GPU的并行计算能力,实现了140 FPS的实时渲染。

  4. 数据集的多样性和代表性

    • 难点:现有的水下数据集在场景深度变化范围和视角多样性方面存在不足,难以全面验证方法的有效性。

    • 解决方案:作者收集了一个新的水下数据集TableDB,包含172张高分辨率图像,覆盖不同距离的水下场景,具有更大的场景深度变化范围,适合验证方法的有效性。

总结

论文的核心贡献在于提出了一种结合水下成像模型的高效三维重建和渲染方法,通过创新的渲染方程、深度估计和优化过程,实现了快速且高质量的水下场景重建。尽管面临水下成像模型的复杂性和实时渲染的挑战,作者通过高效的算法设计和CUDA实现,成功解决了这些难点,为水下计算机视觉领域提供了重要的技术突破。

详细介绍

这篇论文《Gaussian Splashing: Direct Volumetric Rendering Underwater》由Nir Mualem、Roy Amoyal、Oren Freifeld和Derya Akkaynak共同撰写,提出了一种针对水下场景的高效三维重建和渲染方法。该方法结合了3D Gaussian Splatting(3DGS)的速度优势和水下成像模型的物理特性,实现了快速且高质量的水下场景重建和渲染。以下是对论文的详细介绍:

1. 研究背景

水下图像的成像过程比空气中的图像复杂得多,主要由于光在水中的散射和吸收。这种物理过程导致图像颜色失真、对比度降低和细节模糊。现有的三维重建方法(如NeRF和3D Gaussian Splatting)在水下场景中表现不佳,因为它们没有考虑水下的特殊成像模型。尽管一些基于NeRF的方法在水下场景中取得了不错的效果,但它们的训练和渲染速度非常慢,难以实现实时应用。

2. 研究动机

3. 研究方法

3.1 Gaussian Splashing方法概述

Gaussian Splashing 是一种针对水下场景的三维重建和渲染方法,结合了3D Gaussian Splatting(3DGS)的速度优势和水下成像模型的物理特性。该方法通过以下创新实现快速且高质量的水下场景重建和渲染:

  1. 新的渲染方程:基于Sea-thru成像模型,考虑了水下的散射和吸收效应。

  2. 新的深度估计方法:利用3DGS的渲染管道提取每个像素的深度信息,并通过优化过程不断改进深度图。

  3. 优化过程:引入新的损失项 $L_{bs}$,同时优化场景几何和水下成像参数。

  4. CUDA实现:将整个算法完全用CUDA实现,确保高效的计算和实时渲染。

3.2 新的渲染方程

水下图像的成像过程可以分为两个主要部分:

  1. 直接信号:由场景反射的光在到达相机时受到衰减,导致颜色失真。

  2. 背景散射信号:由水体中的粒子散射的光进入相机,导致图像对比度降低和细节模糊。

基于Sea-thru成像模型,作者提出了一个新的渲染方程,考虑了直接信号和背景散射信号的影响:

\[C_{uw} = \left( \sum_{i=1}^{M} c_i \alpha_i T_i \right) e^{-B_d z} + B_\infty (1 - e^{-B_b z})\]

其中:

这些参数($ B_d $、$ B_\infty $ 和 $ B_b $)是可学习的,通过优化过程不断调整,以更好地模拟水下成像过程。

3.3 深度估计方法

在水下场景中,深度信息对于重建和渲染至关重要。作者提出了一种新的深度估计方法,利用3DGS的渲染管道提取每个像素的深度信息。具体步骤如下:

  1. 深度提取:在渲染过程中,对于每个像素,提取其深度信息 $ z $:

    \[z = \frac{\sum_{i=1}^{M} d_i \alpha_i T_i}{\sum_{i=1}^{M} \alpha_i T_i}\]

    其中,$ d_i $ 是第 $ i $ 个高斯分布的深度。

  2. 优化过程:通过迭代优化,不断改进深度图的质量。深度图的改进有助于更好地估计背景散射参数 $ B_\infty $ 和 $ B_b $,从而进一步优化场景几何。

3.4 优化过程

为了优化场景几何和水下成像参数,作者引入了一个新的损失函数 $ L $,包括以下部分:

  1. 图像相似性损失:使用 $ \ell_1 $ 范数和结构相似性指数(SSIM)衡量渲染图像与真实图像之间的相似性。

  2. 背景散射损失:引入一个新的损失项 $ L_{bs} $,用于估计背景散射参数 $ B_\infty $ 和 $ B_b $:

    \[L_{bs}(B_\infty, B_b) = \| B_\infty - \hat{B}_\infty \|_{\ell_1} + \| B_b - \hat{B}_b \|_{\ell_1}\]

    其中,$ \hat{B}_\infty $ 和 $ \hat{B}_b $ 是通过非线性最小二乘拟合得到的背景散射参数的初始估计值。

通过优化上述损失函数,该方法能够同时优化场景几何和水下成像参数,从而实现高质量的水下场景重建和渲染。

3.5 CUDA实现

为了实现高效的计算和实时渲染,作者将整个算法完全用CUDA实现。具体优化措施包括:

  1. 并行渲染:利用CUDA的并行计算能力,加速渲染过程。

  2. 深度图提取:通过CUDA实现深度图的提取和优化过程,确保高效的计算。

  3. 优化过程:使用Adam优化器,结合CUDA的高效计算能力,加速优化过程。

4. 实验结果

4.1 数据集

作者在多个水下数据集上验证了Gaussian Splashing方法的有效性,包括:

4.2 与其他方法的比较

作者将Gaussian Splashing方法与其他现有方法进行了比较,包括:

比较结果表明:

4.3 定性结果

作者还提供了多个定性结果,展示了Gaussian Splashing方法在不同场景下的表现。例如:

5. 研究贡献

5.1 方法创新

5.2 性能提升

5.3 新数据集

5.4 应用前景

6. 研究限制

尽管Gaussian Splashing方法取得了显著的进展,但仍存在一些限制:

  1. 成像模型的局限性:该方法依赖于现有的水下成像模型,尚未考虑多重散射或人工照明等复杂现象。

  2. 相机姿态估计的挑战:该方法需要提取相机姿态,这在能见度极差的环境中可能难以实现。

  3. 场景深度变化的依赖性:该方法的成功依赖于场景深度的多样性,如果场景深度变化不足,可能会影响重建效果。

7. 总结

Gaussian Splashing方法为水下场景的三维重建和渲染提供了一种高效且高质量的解决方案。通过结合3D Gaussian Splatting的速度优势和水下成像模型的物理特性,该方法能够在短时间内完成训练,并实现实时渲染。尽管面临水下成像模型的复杂性和实时渲染的挑战,作者通过高效的算法设计和CUDA实现,成功解决了这些难点,为水下计算机视觉领域提供了重要的技术突破。

方法部分详解

论文《Gaussian Splashing: Direct Volumetric Rendering Underwater》的方法部分详细介绍了如何将3D Gaussian Splatting(3DGS)与水下成像模型相结合,从而实现快速且高质量的水下场景重建和渲染。以下是对方法部分的详细讲解:

方法部分的核心内容

1. 方法概述

Gaussian Splashing的核心思想是将3D Gaussian Splatting(3DGS)的高效渲染能力与水下成像模型相结合,通过引入新的渲染方程、深度估计方法和优化过程,实现快速的水下场景重建和渲染。该方法的主要创新点包括:

2. 3D Gaussian Splatting(3DGS)基础

3DGS是一种基于点的渲染方法,通过一组三维高斯分布(Gaussians)来表示场景的几何和外观。每个高斯分布包含以下参数:

在3DGS中,场景的渲染通过将这些高斯分布投影到二维图像平面上完成,利用α-混合(alpha-compositing)技术计算每个像素的颜色。这种方法的优点是渲染速度快,适合实时应用。

3. 水下成像模型

水下图像的成像过程比空气中的图像复杂得多,主要由于光在水中的散射和吸收。这种物理过程导致图像颜色失真、对比度降低和细节模糊。论文中采用了Sea-thru成像模型,该模型将成像过程分为两部分:

  1. 直接信号:由场景反射的光在到达相机时受到衰减,导致颜色失真。

  2. 背景散射信号:由水体中的粒子散射的光进入相机,导致图像对比度降低和细节模糊。

Sea-thru成像模型的数学表达为:

\[I = J \cdot e^{-B_d z} + B_\infty (1 - e^{-B_b z})\]

其中:

4. 新的渲染方程

为了将3DGS与水下成像模型相结合,论文提出了一个新的渲染方程,考虑了水下的散射和吸收效应。新的渲染方程如下:

\[C_{uw} = \left( \sum_{i=1}^{M} c_i \alpha_i T_i \right) e^{-B_d z} + B_\infty (1 - e^{-B_b z})\]

其中:

5. 深度估计方法

在水下场景中,深度信息对于重建和渲染至关重要。论文提出了一种新的深度估计方法,利用3DGS的渲染管道提取每个像素的深度信息。具体步骤如下:

  1. 深度提取

    在渲染过程中,对于每个像素,提取其深度信息 $z$:

    \[z = \frac{\sum_{i=1}^{M} d_i \alpha_i T_i}{\sum_{i=1}^{M} \alpha_i T_i}\]

    其中,$d_i$ 是第 $i$ 个高斯分布的深度。

  2. 优化过程

    通过迭代优化,不断改进深度图的质量。深度图的改进有助于更好地估计背景散射参数 $B_\infty$ 和 $B_b$,从而进一步优化场景几何。

6. 优化过程

为了优化场景几何和水下成像参数,论文引入了一个新的损失函数 $L$,包括以下部分:

  1. 图像相似性损失

    使用 $\ell_1$ 范数和结构相似性指数(SSIM)衡量渲染图像与真实图像之间的相似性:

    \[L_{\text{sim}} = \| I_{\text{gt}} - I_{\text{render}} \|_{\ell_1} + \lambda_1 \cdot \text{SSIM}(I_{\text{gt}}, I_{\text{render}})\]
  2. 背景散射损失

    引入一个新的损失项 $L_{bs}$,用于估计背景散射参数 $B_\infty$ 和 $B_b$:

    \[L_{bs}(B_\infty, B_b) = \| B_\infty - \hat{B}_\infty \|_{\ell_1} + \| B_b - \hat{B}_b \|_{\ell_1}\]

    其中,$\hat{B}_\infty$ 和 $\hat{B}_b$ 是通过非线性最小二乘拟合得到的背景散射参数的初始估计值。

  3. 总损失函数

    \[L = L_{\text{sim}} + \lambda_2 \cdot L_{bs}\]

通过优化上述损失函数,该方法能够同时优化场景几何和水下成像参数,从而实现高质量的水下场景重建和渲染。

7. CUDA实现

为了实现高效的计算和实时渲染,论文将整个算法完全用CUDA实现。具体优化措施包括:

  1. 并行渲染:利用CUDA的并行计算能力,加速渲染过程。

  2. 深度图提取:通过CUDA实现深度图的提取和优化过程,确保高效的计算。

  3. 优化过程:使用Adam优化器,结合CUDA的高效计算能力,加速优化过程。

8. 方法的优势

  1. 高效性:训练时间仅需几分钟,渲染速度可达140帧/秒(FPS),远超现有的基于NeRF的方法。

  2. 高质量重建:在多个水下数据集上表现出色,尤其是在处理远距离和高散射区域时,细节清晰度显著优于其他方法。

  3. 实时性:能够实现实时渲染,适用于水下导航和虚拟现实等应用。

方法部分的总结

Gaussian Splashing方法通过结合3D Gaussian Splatting的速度优势和水下成像模型的物理特性,提出了一种新的渲染方程、深度估计方法和优化过程。通过高效的CUDA实现,该方法能够在短时间内完成训练,并实现实时渲染。尽管面临水下成像模型的复杂性和实时渲染的挑战,作者通过创新的算法设计和高效的计算实现,成功解决了这些难点,为水下计算机视觉领域提供了重要的技术突破。

原文翻译

高斯溅射:水下直接体绘制

Nir Mualem

本古里安大学

nirmu@post.bgu.ac.il

Roy Amoyal

本古里安大学

amoyalr@post.bgu.ac.il

Oren Freifeld

本古里安大学

orenfr@cs.bgu.ac.il

Derya Akkaynak

海洋科学跨大学研究所和海法大学

dakkaynak@univ.haifa.ac.il

摘要

在水下图像中,大多数有用的特征被水遮挡。遮挡的程度取决于成像几何条件,甚至在一系列连拍图像中也会有所不同。因此,对于空气中的场景表现出色的三维重建方法(如神经辐射场方法[NeRFs]或三维高斯绘制[3DGS])在水下场景中会失败。尽管最近对NeRFs的水下适应性改进取得了最先进的结果,但它速度过慢:重建需要数小时,渲染速度(以每秒帧数[FPS]计)不到1帧。在此,我们提出了一种新的方法,仅需几分钟即可完成重建,并以140 FPS的速度渲染新的水下场景。该方法名为“高斯溅射”,它将3DGS的速度优势与用于捕捉散射的成像模型相结合,并在渲染和深度估计过程以及3DGS损失函数中引入创新。尽管水下适应性存在复杂性,但我们的方法能够以无与伦比的速度生成具有卓越细节的图像。此外,它比其他方法更清晰地揭示了远处场景的细节,显著提高了重建和渲染图像的质量。我们在现有的数据集以及我们收集的新数据集上展示了结果。

1. 引言

理解和解释水下场景对计算机视觉提出了独特的挑战。对于检测、分割、分类和跟踪等下游任务至关重要的图像特征,通常会被水引起的颜色失真和雾霭遮挡,这些现象源于光在水中的距离和波长依赖性衰减。如果能够从水下照片中持续去除水的退化效应,现有的计算机视觉方法似乎可以立即应用。然而,在实践中,这是一项具有挑战性的任务。

在物理世界中,水中的光衰减仅由水体的成分决定。在照片中,衰减参数与真实世界场景中的参数关系不大;它们与图像本身、成像设备以及图像拍摄条件密切相关[1, 3]。因此,从宽波段角度来看,不存在代表水“类型”的通用介质参数,也没有可以推广到所有水下图像的规则。因此,为了成功地重建颜色——进而执行检测和分割等下游任务——必须针对每张图像估计介质参数,同时估计场景深度。

最近,Akkaynak和Treibitz通过Sea-thru算法[2]证明,如果已知场景深度,介质参数可以轻松估计(见图1)。水下场景的深度通常通过多视图预处理获得,例如通过运动恢复结构(Structure-From-Motion, SFM)[2, 34],或者最近的神经辐射场(NeRFs)[18]。然而,遗憾的是,目前还无法在水下实时获取场景深度,而不使用多个相机或专用传感器。针对水下的单目深度估计方法(例如[4, 10, 37, 48, 49])虽然表现越来越好,但在场景浑浊或物体被后向散射严重遮挡时,仍无法产生足够准确的结果,并且无法泛化到在不同光学条件下拍摄的场景。Depth Anything[44]虽然并非专门为水下训练,但即使它对多样的陆地场景具有出色的零样本深度估计能力,也无法泛化到水下场景。因此,从尽可能少的图像中稳健估计场景几何仍然是最有希望的方向。

在从稀疏图像集合中恢复场景几何方面,NeRFs取得了巨大成功[9, 24]。经典的场景表示方法依赖于显式的几何模型(例如网格[38]),而神经渲染则使用函数[26]或数据结构([8], [11])来捕捉场景的外观和几何。在神经渲染的新视角中,NeRFs学习一个隐式函数,用于表示空间中每个点的场景辐射度。Levy等人[18]首次将NeRFs应用于水下,将原始渲染方程改编为适用于散射介质中的成像。他们的方法Seathru-NeRF在水下场景的新视角合成和颜色重建方面取得了最先进的结果(SOTA)。然而,尽管作为原型算法取得了成功,Seathru-NeRF的实用性受到其性能的限制——需要15-20张图像,训练时间约为3小时[33, 36]。即使在更强大的硬件上和更优化的实现中,也难以实现更快的训练和接近实时的渲染,因为沿视图光线评估隐式函数的要求使得基于NeRF的方法本质上计算成本高昂。

幸运的是,最近的一种非神经辐射场方法,3D高斯绘制(3DGS)[13]作为一种替代方案出现,我们认为它本质上更适合适应水下场景。简而言之,3DGS通过一组有限的各向异性3D高斯分布来表示场景,并增加了不透明度和颜色信息。

重要的是,[13]中的算法实现了加速训练(约几分钟),并且可以实现实时新视角合成。然而,与大多数计算机视觉方法一样,3DGS并不直接适用于水下场景。为了填补这一空白,我们提出了一种新方法,称为“高斯溅射”,这是3DGS针对水下场景的特定适应,其速度与3DGS相当。该方法的关键在于,整个水下图像形成公式可以无缝集成到3DGS数据表示和3DGS渲染管线中。因此,我们能够将整个新算法完全用CUDA实现,而无需借助外部(即非CUDA)计算。反过来,这促进了更平滑的反向传播过程,并使该方法以最小的渲染时间实现了最先进的性能,使其成为该领域最快的算法。

我们的主要贡献包括:

  1. 新方法:该方法的创新之处有四点:

    1. 高斯溅射基于Sea-thru散射介质成像模型[2],使用新的渲染方程。

    2. 新的渲染方程通过引入可学习的后向散射系数和深度,修改了原始损失函数(来自[13])。

    3. 我们还增加了一个与这些系数相关的新的损失项。

    4. 我们提出了一种新的深度估计程序,并将其整合到整体优化中。

  2. SOTA结果:在几何估计(特别是在高后向散射下的远处像素)、场景颜色重建以及高频区域(即锐利视觉细节)的重建方面表现出色(见图1)。

  3. 速度:快速训练(约几分钟)和实时渲染(见图2),尽管我们使用的是图像的原始高分辨率(即不像基于NeRF的方法那样需要下采样),并且能够实时合成原始和颜色重建场景的新视角。这种速度得益于我们算法的设计以及整个算法完全用纯CUDA实现(带有用户友好的Python包装器)。

  4. 新数据集:我们收集了一个水下3D场景的图像数据集。与现有的此类数据集不同,我们的数据集在相机到场景的距离方面具有很大的变化性。我们的结果和方法的速度是朝着克服主要瓶颈——稳健深度估计——迈出的重要一步,这一瓶颈阻碍了水下计算机视觉在过去十年中取得与空中计算机视觉相同的进展和性能。

2. 相关工作

鉴于水下成像过程的不同和复杂性,我们在此重点关注水下领域的相关工作。对于陆地场景,关于基于NeRF的方法和3DGS方法的最新综述分别可以在文献[46]和[7]中找到。由于在海上收集高质量、校准过的数据存在后勤困难和成本问题,因此关于水下场景重建和新视角合成的研究明显少于陆地场景。

基于NeRF的方法

3DGS[13]

3DGS是本文的核心,它通过显式地用带有颜色和不透明度信息的三维高斯分布来建模场景,提供了一种不同的场景表示方法。与依赖隐式表示的NeRF不同,3DGS不仅增强了场景几何的可解释性,还使得对场景几何的直观操作成为可能。其渲染方法利用了绘制技术(即将三维高斯分布投影到二维)、解析导数以及基于瓦片的处理,从而能够快速估计增强高斯分布的参数。重要的是,通过用离散表示和直接渲染取代NeRF的复杂过程,3DGS在推理过程中实现了实时渲染,显著提高了渲染效率和性能。

据我们所知,迄今为止,只有一篇经过同行评审的论文将3DGS应用于水下场景:Qu等人提出了Z-Splat[27],这是3DGS的一个扩展,它结合了声纳数据来解决“缺失锥问题”。然而,该方法不仅需要光学数据,还需要声学数据(因此需要专用设备),这与我们基于纯视觉的多视图方法形成对比。

在撰写本文时,我们了解到还有三篇最近的ArXiv论文描述了与我们同时进行的研究工作。这些工作与我们一样,旨在将3DGS适应于水下场景。然而,这些工作将3DGS与神经网络相结合[19][39],这一事实对它们的渲染时间产生了负面影响,或者引入了额外的可学习参数和众多损失项以实现模型拟合[43]。截至本文撰写时,这三篇论文中只有WaterSplatting[19]发布了代码,因此我们无法直接比较结果。未来对这四篇同时进行的工作(包括我们的工作)进行全面比较将是一件有趣的事情。无论如何,需要注意的是,与那些方法不同,我们的方法1)不需要深度神经网络,2)完全用CUDA实现,因此比那些方法要快得多。在性能方面,我们的方法与[19](这些工作中表现最好的方法)实现了相当的结果。例如,见图2。

3. 预备知识

3.1 三维高斯绘制(3DGS)

3DGS[13]通过$N$个三维高斯分布来表示一个三维场景,每个高斯分布增加了两个属性:颜色和不透明度。设$\theta_i = (\mu_i, m\Sigma_i, c_i, \sigma_i)$表示第$i$个高斯分布的参数,其中$\mu_i \in \mathbb{R}^3$是其三维位置(即均值),$m\Sigma_i$是一个$3\times 3$的对称正定矩阵,表示其协方差矩阵,$c_i \in \mathbb{R}^3$是颜色(用球谐表示),$\sigma_i \geq 0$是不透明度。因此,$\Theta \triangleq (\theta_i)_{i=1}^N$表示整个场景。如果已知$\Theta$和相机姿态,可以通过渲染场景生成对应的二维图像。渲染过程基于可微分的基于点的渲染技术[16][42][40],沿着视图光线累积每个高斯分布的贡献,生成图像如下。给定相机姿态后,像素的二维位置定义了一条从相机原点到像素的三维光线。设$p_i \in \mathbb{R}^3$是该光线上距离$\mu_i$最近的点。像素的颜色,记为$C$,通过一种称为α混合的技术计算:

\[C = \sum_{i=1}^{M} c_i \alpha_i T_i, \quad T_i \triangleq \prod_{j=0}^{i-1}(1 - \alpha_j), \quad (1)\]

其中$M < N$,并且在略微滥用符号的情况下,可能重新命名索引,参与公式(1)的$M$个高斯分布根据它们的深度(即与相机的距离)按递增顺序排序,$\alpha_i > 0$是第$i$个高斯分布对该像素的不透明度贡献,定义为:

\[\alpha_i = \text{sigmoid}(\sigma_i) \exp\left(-\frac{1}{2}(p_i - \mu_i)^T m\Sigma_i^{-1}(p_i - \mu_i)\right). \quad (2)\]

通常,依赖于像素的数目$M \ll N$,即只有$N$个高斯分布的一个小子集会影响像素的颜色。如何选择这个子集将在后面讨论瓦片时变得清晰。此外,在实际中,$(p_i - \mu_i)^T m\Sigma_i^{-1}(p_i - \mu_i)$是通过一个仿射投影在二维(而非三维)中计算的,该投影近似了相机对$p_i$、$\mu_i$和$m\Sigma_i$的投影;详细信息见[51]。注意$\alpha_i \in [0, 1]$对所有$i$均成立,并且$T_i$(称为高斯分布$i$对该特定像素的透过率)的作用是,深度小于高斯分布$i$的前$i - 1$个高斯分布会根据它们的不透明度、协方差矩阵和与光线的距离,降低高斯分布$i$的颜色贡献。

为了实现实时渲染,3DGS采用了两种策略[5]:

  1. 瓦片:为了避免为每个像素计算每个高斯分布的贡献,图像被划分为不重叠的块,称为瓦片,大小为$16 \times 16$像素。在$N$个二维投影的高斯分布中,只有那些足够接近(例如,小于几个标准差)瓦片的高斯分布被认为与该瓦片相关(其他高斯分布被忽略)。因此,在渲染像素时,α混合(公式2)仅使用与包含该像素的瓦片相关的投影高斯分布。换句话说,瓦片内的所有像素共享$M$的值。

  2. 并行渲染:基于瓦片的方法与直接渲染相结合,实现了大规模并行化,从而带来了巨大的加速。

到目前为止,我们讨论了正问题,即如何在已知$\Theta$和相机姿态的情况下渲染二维图像。逆问题,使用正问题作为子程序,如下所述:给定一组二维图像及其相关的估计相机姿态,通过优化$\Theta$来重建三维场景。这种重建也被称为场景的学习。重建完成后,通过给定新的相机姿态渲染场景来完成新视角合成(即泛化)。最后,在3DGS的后处理中,通常使用合成技术来结合各种效果(例如光照、材质、抗锯齿[12][22][45])的贡献。

3.2 水下图像形成

根据定义,清澈的空气不会使光线衰减,因此适用于清澈空气的图像形成模型不包含介质参数。当介质会使光线衰减时(例如,大气雾霾、雾、烟雾以及所有水体),一个图像形成模型至少必须包含两种影响光线的过程:光线在朝向相机传播时来自场景的外散射(通常称为衰减,会导致颜色失真),以及来自相机和场景之间水体的内散射(即,通常称为后向散射或路径辐射,会导致 haze/能见度降低)。我们采用Sea-thru图像形成模型[1],该模型包含这两种过程,并且适用于空气中或水下的场景:

\[I = \overbrace{ \underbrace{J}_{\text{clean image}} \cdot \underbrace{(e^{-\beta_d(\boldsymbol{v}_d)\cdot z})}_{\text{attenuation}} }^{direct\space signal} + \overbrace{ \underbrace{B^{\infty}}_{\text{color at }\infty} \cdot \underbrace{(1 - e^{-\beta_b(\boldsymbol{v}_b)\cdot z})}_{\text{backscatter}}}^{backscatter\space signal} \tag{3}\]

这里,$I$ 是相机捕捉到的图像,其颜色已衰减,而 $J$ 是 “无水” 的清晰图像。$\beta_d$ 和 $\beta_b$ 这两项分别是控制衰减和后向散射的宽带介质参数,它们与 $\boldsymbol{v}_d$ 和 $\boldsymbol{v}_b$ 相关,$\boldsymbol{v}_d$ 和 $\boldsymbol{v}_b$ 取决于物体反射率、环境光光谱、相机的光谱响应以及水体的物理衰减系数,所有这些都是与波长相关的函数。$B^{\infty}$ 是无穷远处水的饱和颜色,即在没有物体的区域中存在的信号,$z$ 是场景深度,每个像素的场景深度都必须已知。直接信号决定场景中物体的颜色如何受到光线在给定水体中传播距离的影响,而后向散射信号决定遮挡场景的 “雾” 的密度和颜色。后向散射信号由于水体中的散射而存在,并且与场景/物体无关。

需要注意的是,假设相机传感器对光线具有线性响应,否则公式(3) 不成立。同样,用于估计参数的图像也必须是线性的,这意味着相机内处理的.jpg 图像或经过伽马校正的图像不能使用,除非可以反转其非线性特性。

4. 提出的方法:高斯溅射

不出所料,正如我们将在第6节中展示的那样,3DGS在水下场景中非常有限。因此,我们通过引入三个额外的可学习参数来扩展传统的3DGS,并调整渲染过程以适应散射(见第4.1节)。同样,我们修改了适用于水下条件的深度估计(见第4.2节),从而改变了3DGS中使用的原始损失项,并引入了一个额外的相关的损失项(见第4.3节)。在第4.4节中,我们讨论了我们的纯CUDA实现。图3展示了整个方法。

4.1 水下场景的直接渲染

根据[1],在一幅图像中,$\beta_b(\boldsymbol{v}_d)$ 可以被视为常数,而 $\beta_d$ 主要随物体距离(即 $z$)变化,并且在较小程度上随物体反射率变化。类似地,除了对场景深度 $z$ 的依赖外,$\beta_d(\boldsymbol{v}_d)$ 的所有相关因素都可以认为是较小的[3] ,我们将 $\beta_d(\boldsymbol{v}_d)$ 对 $z$ 的依赖建模为线性关系。因此,公式4可以很好地近似为:

\[I = \overbrace{\underbrace{J}_{\text{clean image}} \cdot \underbrace{(e^{-B_d\cdot z})}_{\text{attenuation}}}^{direct\space signal} + \overbrace{\underbrace{B^{\infty}}_{\text{color at }\infty} \cdot \underbrace{(1 - e^{-B_b\cdot z})}_{\text{backscatter}}}^{backscatter\space signal} \tag{4}\]

其中,$B_b$ 是近似 $\beta_b(\boldsymbol{v}_d)$ 的常数,$B_d$ 是一个常数,使得 $B_d \cdot z \approx \beta_d(\boldsymbol{v}_d) \cdot z$(即,$\beta_d(\boldsymbol{v}_d)$ 对 $z$ 的线性依赖关系被并入 $B_d$ 中)。

类似于[18]将神经辐射场(NeRF)扩展到水下场景的做法,我们将后向散射和衰减效应纳入3D高斯溅射(3DGS)公式中。利用公式4中的系数,我们为高斯溅射(即水下高斯溅射)提出一个新的渲染公式:

\[C_{\text{uw}} = \left(\sum_{i = 1}^{M} c_i \alpha_i T_i\right) e^{-B_{\text{d}}z} + B_{\infty}(1 - e^{-B_{\text{b}}z}) \tag{5}\]

其中 $T_i \triangleq \prod_{j = 0}^{i - 1}(1 - \alpha_j)$。这里,$C_{\text{uw}}$ 是水下场景的最终颜色,$B_{\text{d}}$ 是直接衰减参数,$(B_{\infty}, B_{\text{b}})$ 这组参数是后向散射衰减参数。我们强调,$B_{\text{d}}$、$B_{\infty}$ 和 $B_{\text{b}}$ 是可学习的参数,并且不假定事先已知。公式5中的其他变量与公式1中的相同。

4.2 密集深度图估计

在使用3DGS处理陆地场景时,通常不需要估计密集深度图。然而,在水下场景中,颜色失真强烈依赖于场景深度(以及其他因素)。受文献[23]和[6]方法的启发,我们提出了一种技术,用于从当前估计的场景参数$\Theta$中提取深度$z$,同时利用光栅化管线(更多细节见第4.3节)。具体而言,在渲染图像时,我们在每个像素处提取深度$z$,公式如下:

\[z = \frac{\sum_{i=1}^{M} d_i \alpha_i T_i}{\sum_{i=1}^{M} \alpha_i T_i} \quad (6)\]

其中$d_i$是第$i$个高斯分布的深度。正如我们将在第4.3节中解释的,在优化过程中,我们使用公式(6)提取$z$值,这些值有助于引导学习过程。

4.3 优化

文献[13]中使用的原始损失函数相对简单,包含两个广泛使用的损失项:

\[\mathcal{L} = \sum_{k=1}^{K} \left[(1 - \lambda_1) \| I_{\text{gt}}^k - I_{\text{r}}^k(\Theta) \|_{\ell_1} + \lambda_1 \cdot \text{LD-SSIM}(I_{\text{gt}}^k, I_{\text{r}}^k(\Theta)) \right] \quad (7)\]

其中,$K$是图像的数量,$\lambda_1 \in [0, 1]$是用户定义的参数,$I_{\text{gt}}^k$和$I_{\text{r}}^k$分别是第$k$幅图像的真实图像(即观测图像)和渲染图像,$| \cdot |{\ell_1}$表示$\ell_1$范数,而LD-SSIM[41]用于衡量两幅图像之间的结构相似性,提供一个基于感知的度量指标。设$B_s = B\infty (1 - e^{-B_b \cdot z})$表示像素处的真实但未知的后向散射(来自公式(4))。3DGS相对于基于NeRF的方法的一个优势是能够在优化过程中快速渲染整个图像。这与NeRF形成了鲜明对比,由于计算原因,NeRF在优化过程中只能渲染少量(例如500个)随机选择的像素[24][26][20]。快速渲染使我们能够在优化过程中从渲染图像中获得$B_\infty$和$B_b$的粗略估计。为了更好地估计后向散射参数,我们引入了一个额外的损失项$L_{\text{bs}}$,该方法受到文献[2]中后向散射估计方法的启发。后向散射随深度$z$增加而增加,并最终饱和[1, 2]。因此,整个图像中的阴影区域可以很好地估计没有直接信号的后向散射。最初,我们将从当前场景估计(见第4.2节)获得的深度图划分为10个均匀间隔的聚类,覆盖从$z$的最小值到最大值的范围。在每个聚类中,我们在真实图像中识别出RGB三元组低于底部1%的像素。这些三元组作为后向散射的高估,我们将其建模为:

\[B_{\text{bs}} = B_{d_\infty} (1 - e^{-B_{c_b} z}) \quad (8)\]

其中$B_{\text{bs}}$和$z$是这种像素处的颜色值和深度估计。给定$(B_{\text{bs}}, z)$值对,我们使用非线性最小二乘拟合来估计每个RGB通道的参数$B_{d_\infty}$和$B_{c_b}$,同时确保它们分别保持在[0, 1]和[0, 5]的范围内。估计这些参数的完整算法出现在附录中。尽管这些估计值$B_{d_\infty}$和$B_{c_b}$相当有效,但与其直接使用它们,我们选择将它们作为整体优化的一部分进行学习,在此过程中,我们仅让这些估计值引导$B_\infty$和$B_b$参数的学习。具体而言,我们提出的损失函数为:

\[\mathcal{L}(\Theta, B_d, B_\infty, B_b) = \sum_{k=1}^{K} \left[(1 - \lambda_1) \| I_{\text{gt}}^k - I_{\text{r}}^k(\Theta, B_d, B_\infty, B_b) \|_{\ell_1} + \lambda_1 \cdot \text{LD-SSIM}(I_{\text{gt}}^k, I_{\text{r}}^k(\Theta, B_d, B_\infty, B_b)) \right] + \lambda_2 L_{\text{bs}}(B_\infty, B_b) \quad (9)\]

其中,$\lambda_2 > 0$是用户定义的参数,$L_{\text{bs}}(B_\infty, B_b) = | B_\infty - B_{d_\infty} |{\ell_1} + | B_b - B{c_b} |{\ell_1}$。随着优化过程中深度图的改进,每500次迭代,我们重新计算(使用公式(6)和前面提到的非线性最小二乘过程)出现在$L{\text{bs}}$中的$B_{d_\infty}$和$B_{c_b}$值。这种方法代表了一种替代学习策略,其中深度图的逐步改进导致了$B_{d_\infty}$和$B_{c_b}$的细化,然后我们利用这些改进来优化3D场景(这反过来又影响深度$z$;见公式(6))。因此,额外的损失项有助于在水下场景中实现更好的重建和深度估计。需要注意的是,公式(7)和公式(9)之间的区别不仅仅是(周期性地包括)$L_{\text{bs}}$,而且还在于公式(9)中的渲染图像(出现在两个公式中的$| \cdot |{\ell_1}$和LD-SSIM损失项中)是$\Theta$、$B_d$、$B\infty$和$B_b$的函数(而不仅仅是$\Theta$)。为了最小化公式(9),我们在$\Theta$、$B_d$、$B_\infty$和$B_b$上使用Adam优化器[15],并采用与文献[13]中相同的初始学习率。我们的额外参数(即$B_d$、$B_\infty$和$B_b$)使用与每个高斯颜色参数$c_i$相同的学习率进行训练。所有额外参数的偏导数细节出现在附录中。总的来说,我们的方法基于已建立的水下图像形成公式,我们将其用于将3DGS渲染适应于水下环境。结合我们提出的额外损失项和逐步深度估计,这使我们能够提出一种快速且有效的水下三维重建和新视角合成方法。

4.4 实现

我们通过自己定制的CUDA实现,从3DGS表示中提取深度图$z$。从经验上看,通过(平移和缩放后的)逻辑函数将深度映射到$[0, 1.0)$范围内可以取得最佳结果,该逻辑函数为:

\[z = \frac{2}{1 + e^{-0.1 \cdot z_b}} - 1\]

其中$z_b$是基于文献[6]的3DGS操作的初始输出。这个逻辑函数将原始深度值转换,确保它们落在水下可视化所需的范围内。借鉴文献[13]中的见解,我们开发了一个基于CUDA的软件包,利用了差分光栅化管线的强大功能。这种方法确保了在整合针对水下场景定制的额外参数时的速度和效率。最后,文献[14]中提到,在3DGS的一个步骤——所谓的增密过程(高斯分布的添加和移除)中,最近通过使用MCMC方法为后续迭代采样高斯分布实现了改进。我们采用了这一改进,因为我们发现它有助于捕捉场景中的高频细节。

5. 新数据集

鉴于现有的公共水下数据集在相机到场景距离的变化方面存在局限性,我们采集了一个新的水下数据集(TableDB)。该数据集包含172张分辨率为1384×918像素的图像(示例图像见附录),与现有的公共数据集不同,它在相机到场景的距离方面是无界的。该数据集将在被接受后公开。

6. 实验与结果

数据集和相机姿态提取

除了我们的TableDB数据集外,我们还在文献[18]中提供的几个公开水下数据集上进行了实验。我们使用COLMAP[30, 31]提取相机姿态,并利用其稀疏三维点初始化来确定高斯分布的初始位置。

竞争方法和评估指标

在自然环境中对水下场景进行三维重建和渲染的关键工作是Sea-Thru NeRF(STNeRF)[18],它在质量方面作为主要的比较对象。STNeRF有两种实现方式:一种使用[25]作为NeRF的主干包,另一种由[35]提供,其中使用了强大的NeRF版本Nerfacto作为主干。我们将后者称为STNeRFacto。我们将我们的工作与这两种实现进行了比较。需要指出的是,我们的方法通过引入相关的海洋光学特性,将原始3DGS[13]适应于水下场景,从而对其进行了改进。因此,我们还对[13]和文献[47]中的Splatfacto进行了比较,后者在野外场景中取得了最佳结果。我们使用三种广泛使用的指标来衡量性能:PSNR、LPIPS和SSIM。峰值信噪比(PSNR)通过测量信号的最大可能功率与干扰噪声的功率之比来量化图像质量。学习感知图像块相似性(LPIPS)通过比较从神经网络中提取的深度特征来评估感知相似性,如文献[17]所述,提供与人类感知一致的视觉相似性评估。结构相似性指数(SSIM)基于亮度、对比度和结构来评估图像相似性,从而捕捉与人类视觉感知密切相关的感知差异。

超参数、内存和计算资源

在我们的实验中,我们设置$\lambda_2 = 0.1$和$\lambda_1 = 0.3$。所有其他超参数的值均与文献[13]中的相同;详细信息见附录。训练在单个NVIDIA GeForce RTX 4090 GPU上进行。在30,000步训练过程中,每个场景的平均内存消耗约为500 MB,略低于STNeRF平均约600 MB的内存消耗。

6.1 结果

图4展示了不同方法之间的视觉比较。表1总结的定量分析显示了所提方法的有效性。基于3DGS,我们的方法非常快速,远快于基于NeRF的方法。例如,我们的方法训练仅需几分钟,在推理阶段,平均渲染速度可达140帧/秒(FPS,跨不同数据集)。关于不同方法在训练和推理阶段运行时间的全面比较,请参阅附录。表1还显示,尽管原始3DGS(虽然速度快)在处理水下场景时效果不佳(见图4),但我们的方法在速度和质量方面均表现出色。尽管由于水下场景中占主导地位的蓝色调,传统的PSNR等指标可能会产生误导,但仔细观察时,尤其是在检查场景中的远处物体时,我们的方法的优越性变得明显。这一优势在TableDB数据集上尤为突出,与公开数据集不同,该数据集在视角和场景深度方面不受限制。值得注意的是,由于高效的渲染速度,我们的方法在保留渲染场景的原始分辨率方面表现出色,如图2所示。相比之下,STNeRF和STNeRFacto在训练过程中必须对图像进行下采样。更多视觉结果请参阅附录。此外,为了获得最佳效果,我们强烈建议读者访问我们的项目网页观看相关视频。

6.2 消融研究

我们的消融研究总结于表2,考虑了以下几种条件:

  1. 移除我们额外的损失项$L_{\text{bs}}$;

  2. 强制将$B_d$设为零,以测试仅靠$B_s$是否能够捕捉足够的水下场景失真;

  3. 使用文献[13]中的原始增密过程,而不是文献[14]中的MCMC增密方法;

  4. 将我们的深度估计替换为标准的单目深度模型([28] [29])。

为了完整性,表2还包含了作为基线的原始3DGS[13]以及我们的完整模型。如表2所示,所有这些组件都非常重要。

7. 结论

我们提出了高斯溅射(Gaussian Splashing),这是3D高斯绘制(3D-Gaussian Splatting)的一个变体,专门用于水下成像。我们的方法能够从最少五张图像中准确估计水下场景的几何结构,这是从包含颜色衰减的原始图像中提取最大量有用信息的必要步骤。或许更重要的是,我们的方法仅需几分钟即可完成少量场景的几何估计(相比之下,基于NeRF的方法需要数小时)。我们并未发现这项工作存在任何潜在的负面社会影响。

准确的场景几何结构是实现一致颜色重建的必要条件,之后可以使用为陆地图像开发的强大计算机视觉和机器学习方法来处理水下图像。因此,接近实时的训练为水下场景的实时颜色重建提供了可能性,这将提升自主或远程操作水下航行器的导航、同时定位与地图构建(SLAM)以及障碍物规避能力。最后,借助准确估计的场景几何结构,我们能够实时渲染水下场景的新视角。这一能力具有广泛且积极的社会影响,因为它立即为以下应用提供了支持:水下培训(例如潜水员或潜艇飞行员、搜救团队、商业潜水员等)、电脑游戏、海洋科学教育以及文化遗产记录。

我们的方法与文献[18, 33]共享以下三个局限性:

  1. 尽管我们像[18, 33]一样依赖于最先进的成像模型,但该模型并未涵盖多散射或人工照明等现象。

  2. 该方法需要提取相机姿态,如果能见度过低(例如在浑浊的水中),这一过程将变得困难。这一局限性不仅与[18, 33]共享,还与其他基于NeRF或3DGS的方法存在。

  3. 尽管我们的公式的优势在于能够学习介质的特性,但这种学习的成功依赖于场景范围的足够变化。然而,与[18, 33]在图像间范围变化过大时会遇到困难(见图4)不同,我们的方法能够优雅地处理此类情况。

致谢

该项目部分由美国海军研究办公室(US Office of Naval Research, US ONR)资助。

评论