引言

在 3D 计算机视觉和图形学领域,从点云重建表面是一项基础任务。无论你是为 AR 应用扫描房间,还是为视频游戏创建资产,目标通常都是一致的: 将一堆不连贯的点转化为一个水密 (watertight) 、平滑且细节丰富的 3D 网格。

多年来,这一过程的“金标准”一直是 移动立方体算法 (Marching Cubes, MC) 。 当与神经隐式表示——特别是符号距离函数 (SDFs)——结合使用时,MC 非常可靠。然而,它有一个显著的缺陷: 它很死板。MC 在固定分辨率的网格上运行。如果你想要高细节,就需要高分辨率的网格,这会生成数百万个微小的三角形,导致巨大的文件大小和内存占用。如果你想要轻量级的文件,降低网格分辨率后,你会立即失去锐利的边缘和精细的细节。

这就造成了一个令人沮丧的权衡: 高保真 (High Fidelity) vs. 轻量级 (Lightweight) 。 通常情况下,两者不可兼得。

在这篇文章中,我们将深入探讨一篇 CVPR 论文,题目为 “High-Fidelity Lightweight Mesh Reconstruction from Point Clouds” (从点云进行高保真轻量级网格重建) 。 研究人员提出了一种新的流程,避开了传统体素网格的局限性。他们的方法不再同等对待空间的所有部分,而是根据几何形状进行自适应,在表面弯曲的地方放置更多的网格元素,而在平坦的地方放置更少的元素。

图 1. 我们的自适应网格生成方法与使用相同元素数量的 MC 方法的比较。两种方法的输入 SDFs 均相同。我们的方法实现了顶点的曲率自适应分布,并生成了细节更丰富的网格。

如图 1 所示,当限制在相同数量的元素 (顶点和面) 时,传统的移动立方体 (MC) 无法捕捉雕塑复杂的面部特征。相比之下,我们今天要讨论的方法 (Ours) 生成的结果几乎与真值 (Ground Truth, GT) 无法区分。

让我们来看看他们是如何做到这一点的。

背景: 均匀网格的问题

要理解这里的创新,我们首先必须了解当前的标准做法。现代重建方法通常从点云中学习一个 符号距离函数 (SDF) 。 SDF 是一个连续的数学函数,它告诉你,对于 3D 空间中的任意一点,你距离表面有多远。如果值为 0,你就位于表面上。

一旦学习了 SDF,我们需要提取网格。像移动立方体这样的算法将 3D 空间划分为均匀的立方体网格 (体素) 。它检查每个立方体角点的 SDF 值。如果一个立方体与零水平集 (表面) 相交,它就在该立方体内绘制三角形。

问题在于 均匀性 。 一面平坦的墙只需要极少的三角形来表示,而一尊细节丰富的雕像面部则需要数千个。移动立方体对墙和脸的处理方式完全相同。这导致了“冗余的网格元素”——在平坦表面上浪费了三角形——并且除非提高整个网格的分辨率,否则在细节区域就会缺乏分辨率。

研究人员提出了一种 轻量级网格重建 (Lightweight Mesh Reconstruction, LMR) 流程,摒弃了这种均匀的方法。他们的方法主要包含两个阶段:

  1. SDF 学习: 使用混合特征表示来学习高精度的隐式表面。
  2. 自适应网格生成: 根据表面曲率生成顶点,并使用 Delaunay 三角剖分连接它们。

图 2. 我们的轻量级网格重建 (LMR) 流程。

第一部分: 学习更好的 SDF

在生成网格之前,我们需要形状的高质量隐式表示。许多以前的方法使用简单的多层感知机 (MLP) 来学习 SDF。虽然 MLP 是连续的,但它们往往难以记忆高频细节 (锐利的边缘或纹理) ,因为它们倾向于过度平滑数据。

为了解决这个问题,作者引入了 混合特征表示 (Hybrid Feature Representation)

结合网格与三平面 (Tri-planes)

该方法不仅仅依赖 MLP,而是在两个结构中显式存储可学习的特征:

  1. 体素网格 (\(\mathcal{V}\)): 特征向量的 3D 网格。这提供了强大的空间感知能力。
  2. 三平面 (\(\mathcal{T}\)): 存储投影特征的三个 2D 平面 (\(xy, yz, zx\))。这有助于保持平滑性并减少纯体素网格有时会出现的伪影。

当网络需要知道特定查询点 \(q\) 的特征时,它会从网格和三平面中提取数据。

特征提取定义如下:

公式 3

这里,\(TriI\) 代表从 3D 网格进行三线性插值,\(BiI\) 代表从 2D 平面进行双线性插值。通过将这些相加,模型获得了一个丰富的特征向量 \(fea(q)\),它结合了 3D 的精度和 2D 的平滑度。

该特征向量与坐标 \(q\) 拼接后,传入一个小型的 MLP (\(g_{mlp}\)) 以预测 SDF 值:

公式 4

使用 Neural Pull 进行训练

为了训练这个网络,作者利用了 Neural Pull 机制。核心思想是利用预测的 SDF 值 \(f_\theta(q)\) 及其梯度 \(\nabla f_\theta(q)\) 将查询点 \(q\) 投影到表面上。

投影操作如下所示:

公式 1

这里,\(s_{\theta, q}\) 是表面上的投影点。通过最小化该投影点与真值点云中最近点 \(p\) 之间的距离来训练网络。

公式 2

此外,为了确保梯度准确 (这对后续的网格生成步骤至关重要) ,他们强制执行梯度一致性损失:

公式 15

这确保了查询点 \(q\) 处的梯度与表面点 \(s\) 处的梯度保持一致。SDF 学习的总损失结合了这两个目标:

公式 16

第二部分: 曲率自适应顶点生成

这是论文的核心部分。一旦学习了 SDF,标准方法会运行移动立方体算法。然而,这种方法通过智能地放置顶点,从零开始构建网格。

直觉

想象一下你是一位正在素描人脸的艺术家。你不会在任何地方都画上均匀分布的点。你会把点密集地聚拢在眼睛、鼻子和嘴唇周围 (高曲率) ,而在前额和脸颊上 (低曲率) 则画得稀疏一些。这种方法在数学上做的正是这件事。

计算曲率

首先,系统需要“看到”表面曲率。它通过将随机点投影到 SDF 的零水平集上,创建一组 表面查询点 (\(S\))

对于特定点 \(s\),通过观察其邻居来估计曲率。该方法计算点 \(s\) 与其邻居 \(s_k\) 之间的表面法线 (垂直于表面的方向) 变化了多少。

公式 7

这里,\(\delta_k\) 代表偏差。如果法线指向同一方向,\(\delta_k\) 接近 0 (平坦) 。如果它们发散,该值较高 (弯曲) 。这些偏差根据距离由高斯核 \(w_k\) 进行加权:

公式 8

最后,该点的平均曲率 \(c_s\) 通过对这些加权偏差求和得到:

公式 9

顶点生成器网络

系统初始化一组顶点 \(v_o\) (使用最远点采样以确保良好的覆盖) ,然后使用 顶点生成器 (Vertex Generator) 网络来优化它们的位置。目标是移动这些顶点,使它们聚集在高曲率区域。

优化后的位置 \(v\) 计算为原始位置加上一个学习到的位移:

公式 10

网络 \(\gamma\) 是一个 Point-Transformer。但它如何知道将点移动到哪里呢?作者设计了特定的损失函数来引导这种行为。

1. 曲率加权吸引 (\(\mathcal{L}_{cur}\)): 这个损失将顶点拉向表面点 (\(s \in S\)),但如果表面点具有高曲率 (\(c_s\)),它会拉得更用力

公式 11

2. 法线一致性 (\(\mathcal{L}_{nc}\)): 为了确保顶点正确地落在表面上,它们的法线必须与底层的 SDF 法线一致。

公式 12

3. 排斥损失 (\(\mathcal{L}_{rep}\)): 为了防止所有顶点塌陷到一个奇点或聚集得过于密集,排斥损失强制它们之间保持一定的距离。

公式 18

结合这些损失产生了一个“力场”,顶点沿着隐式表面滑动,自然地在锐利的边缘和角落处累积,同时在平坦区域保持稀疏分布。

图 5. 我们的方法与 PoNQ 的视觉比较。蓝点代表顶点。我们的方法生成曲率自适应的顶点,在相同数量的元素下捕捉更多细节。

图 5 清晰地展示了结果。注意“Ours”方法如何将蓝色顶点集中在形状的锐利边缘,而对比方法 (PoNQ) 的分布则更加均匀、效率较低。

第三部分: Delaunay 网格生成

我们现在有一团位于表面上的优化后的顶点。为了将其转化为网格,我们需要用三角形连接它们。

作者使用 Delaunay 三角剖分 (Delaunay Triangulation) 。 在 3D 中,该算法连接点以形成填充体积的四面体 (具有 4 个三角形面的金字塔) 。结果是一个实心的四面体块。

为了提取表面网格,我们必须将每个四面体分类为形状的 内部 (Inside)外部 (Outside) 。 物体的表面本质上就是“内部”四面体和“外部”四面体之间的边界。

多标签投票

确定四面体是否在形状内部,在边界附近可能会很棘手。作者提出了一种概率方法。他们在每个四面体内采样多个随机参考点。对于每个参考点,他们检查 SDF 值。

  • SDF < 0: 该点在内部。
  • SDF > 0: 该点在外部。

四面体被分配获得最多票数的标签 (内部/外部) 。

邻域标签约束

这种投票方法的一个常见问题是,表面附近的细窄四面体可能会被错误分类,导致“非流形 (non-manifold)”几何结构 (边由两个以上的面共享,或顶点连接两个不连通的体积) 。这会破坏网格拓扑。

为了解决这个问题,作者实施了一个基于邻居的约束。

图 3. 邻域标签约束的 2D 示例。

如图 3 所示,该方法查看四面体的四个邻居。如果一个四面体的标签与其大多数邻居的标签不一致,则翻转其标签。这种简单的“同伴压力”规则平滑了分类噪声,并确保生成的网格是 水密、流形且无自相交的

实验与结果

作者将他们的方法与几种最先进的技术进行了测试,包括 Neural Marching Cubes (NMC)、Neural Dual Contouring (NDC) 和 PoNQ。

视觉质量

视觉结果非常惊人,特别是在观察复杂的有机形状和锐利的机械部件时。

图 4. Thingi10K 上网格分辨率为 32 时的视觉结果。

在图 4 中,看看恐龙骨架 (底行) 。NMC 和 VoroMesh 方法在骨骼的细微结构上表现挣扎,留下了缺口或形成了团块。提出的方法 (Ours) 即使在这种低分辨率下也能保持骨架的结构完整性。

细节保留

在比较 Stanford 数据集上的重建时,该方法展示了其保留细节的能力明显优于标准方法。

图 6. Stanford 数据集上的视觉比较。

在图 6 中,比较“Ours / MC512” (使用高分辨率移动立方体) 和“Ours / AM5%” (使用仅 5% 顶点数量的自适应网格生成) 。视觉差异微乎其微,但 AM 版本使用的数据量却只是九牛一毛。这验证了论文的核心前提: 自适应网格生成可以在不牺牲保真度的情况下实现轻量级文件。

可扩展性

该方法不仅适用于单个物体;它还可以扩展到整个场景。

图 8. ScanNet 上的视觉结果。

图 8 展示了 ScanNet 室内场景的重建。自适应网格生成 (AM) 比 GridPull 或 NeuralPull 更好地保留了家具 (如桌子和椅子) 的清晰边界,后两者往往会生成嘈杂或凹凸不平的表面。

定量分析

论文提供了详尽的表格,但关键结论在于 曲率误差 (CE)拓扑正确性 (CT)

  • 曲率误差: 提出的方法始终实现较低的曲率误差,这意味着它准确地跟随了真值表面的弯曲和扭转。
  • 拓扑: 许多神经网格生成方法无法生成流形网格 (CT < 1.0) 。提出的方法在几乎所有测试中都获得了完美的 1.0 水密性和流形性得分。

结论

“High-Fidelity Lightweight Mesh Reconstruction from Point Clouds” 中提出的研究为 3D 重建中的效率问题提供了一个令人信服的解决方案。通过放弃移动立方体的均匀网格并采用 曲率自适应策略 , 作者弥合了高视觉保真度和低存储需求之间的鸿沟。

这项工作的主要收获:

  1. 混合特征至关重要: 将体素网格与三平面结合比单独使用 MLP 能创建更稳健的 SDF。
  2. 基于点的表示: 将隐式表面视为一组动态的点,允许根据几何形状直接优化顶点位置。
  3. 拓扑是关键: 使用带有邻域约束的 Delaunay 三角剖分确保最终网格无需大量清理即可用于下游应用 (如物理模拟或 3D 打印) 。

随着 3D 内容在网络和移动应用中变得越来越普遍,像这样能在最大化质量的同时最小化带宽和处理能力的技术,将日益成为计算机视觉流程中的标准。