如果你环顾此刻身处的房间,你会看到什么?理想情况下,你会看到墙壁、地板、天花板,或许还有一张桌子或书架。从几何角度看,你被平面包围着。

虽然人类能瞬间感知这些结构化的平坦表面,但让计算机从 2D 图像中重建它们却极其困难。传统的 3D 重建方法通常输出“点云”或“网格”,它们看起来像融化的蜡——凹凸不平、充满噪点,且缺乏真实墙壁或桌子那种清晰的几何定义。

高斯泼溅 (Gaussian Splatting, 3DGS) 这样的近期进展彻底改变了我们渲染场景的方式,但即使是它们,在处理室内环境严格的结构规律性时也显得力不从心。它们将世界表示为模糊的斑点,这对毛皮大衣来说效果极佳,但对厨房台面来说却很糟糕。

这就是 PlanarSplatting 登场的地方,这是一篇提出了全新思路的研究论文。与其使用点或高斯,为什么不将世界视为一系列 3D 矩形基元呢?更重要的是,我们如何快速实现这一点?

在这篇文章中,我们将深入探讨 PlanarSplatting。我们将探索它是如何在 3 分钟内实现精确平面重建的,它如何在数学上定义“平面泼溅 (plane splat)”,以及为什么它可能是你下一个 NeRF 或高斯泼溅项目的完美初始化步骤。

问题: 为什么室内重建很难?

几十年来,重建室内场景一直是计算机视觉领域的一个主要课题。挑战在于“曼哈顿世界”假设——即人造场景主要由正交平面组成。

以前的方法大致分为两派:

  1. 几何拟合: 这些方法首先构建密集的点云 (使用经典的摄影测量法) ,然后尝试使用 RANSAC 等算法将平面“拟合”到这些数据上。这既缓慢又容易出错;如果初始点云充满噪点 (在纹理缺失的白色房间中通常如此) ,平面就会出错。
  2. 深度学习流程:PlanarReconAirPlanes 这样的方法试图端到端地学习平面检测。然而,它们严重依赖标注数据 (地面真值 3D 平面) ,这些数据既昂贵又稀缺。它们还经常面临细节“过度平滑”的问题。

PlanarSplatting 的作者发现了一个空白: 我们需要一种直接从图像优化显式 3D 平面基元的方法,不需要地面真值平面标注,并且它需要是可微的,以便我们可以使用梯度下降对其进行调整。

解决方案: PlanarSplatting 概览

核心思想简单而强大: 将场景表示为一系列 3D 矩形

系统不再通过检查射线是否击中一个点来渲染像素,而是检查射线是否击中一个矩形。但这里有个转折: 为了使其可学习 (可微) ,他们处理矩形的方式类似于 3D 高斯泼溅处理高斯的方式。他们将平面“泼溅 (splat)”到屏幕上。

图 1. PlanarSplatting 与基线方法的比较。注意与 PlanarRecon 相比,墙壁的清晰度。

图 1 所示,结果不言自明。顶部部分显示,PlanarSplatting (第三列) 生成了与地面真值 (Ground Truth) 紧密匹配的干净、平坦的表面,而像 PlanarRecon 这样的基线方法则留下了间隙或错位。也许最令人印象深刻的是,底部部分显示该方法可以与高斯泼溅结合使用,以改善新视图合成 (渲染新摄像机角度) ,在更短的时间内实现更高的质量。

深入剖析: 方法论

让我们拆解一下架构。我们在数学上如何表示一面“可学习的墙”?

1. 可学习的平面基元 (The Learnable Planar Primitive)

在标准几何中,平面是无限的。但在房间里,墙壁有边界。因此,基元必须是一个 3D 矩形

作者定义了一个平面基元 \(\pi\),包含三组可学习参数:

  1. 位置 (\(\mathbf{p}_{\pi}\)): 矩形的 3D 中心。
  2. 朝向 (\(\mathbf{q}_{\pi}\)): 代表旋转的四元数。
  3. 形状 (\(\mathbf{r}_{\pi}\)): 矩形的尺寸。

关键在于,作者不仅使用了宽度和高度。他们使用了一种 双半径 (Double Radii) 表示法。

图 2. 3D 平面基元的表示。注意从中心向各个方向的独特半径。

图 2 所示,形状由四个值定义: \(r^{x+}, r^{x-}, r^{y+}, r^{y-}\)。这使得中心点 \(\mathbf{p}_{\pi}\) 实际上可以是矩形内的任何位置,而不必是几何质心。这给了优化器更大的灵活性,可以在特定方向上拉伸平面以适应墙壁或地板片段。

半径向量的数学定义为:

定义四个半径参数的方程。

根据旋转四元数,系统推导出平面的局部坐标系 (X 轴向量 \(\mathbf{v}^x\),Y 轴向量 \(\mathbf{v}^y\),以及法向量 \(\mathbf{n}\)) 。

从旋转推导局部轴向量的方程。

推导法向量的方程。

2. 可微平面基元渲染

这是论文的核心引擎。我们有了 3D 矩形;现在我们需要将它们渲染成 2D 图像,以便与输入照片进行比较并计算损失。

如下图所示,该流程遵循“泼溅 (Splatting)”范式。

图 3. PlanarSplatting 流程。输入图像驱动通过渲染的深度图和法向图进行 3D 基元的优化。

该过程包括三个步骤: 相交泼溅混合

步骤 A: 射线与平面相交 (Ray-to-Plane Intersection)

对于图像中的一个像素,我们向场景中投射一条射线 \(\mathbf{r}\)。我们计算这条射线与基元定义的无限平面相交的位置。这给了我们一个交点 \(\mathbf{x}_{\pi}^{\mathbf{r}}\)。

射线-平面相交方程。

步骤 B: 平面泼溅函数 (创新点)

这是本文与高斯泼溅的分歧点。在 3DGS 中,基元的影响力根据高斯分布 (钟形曲线) 平滑衰减。这对于有机形状很好,但对于矩形来说很糟糕。高斯泼溅没有硬边缘——它会逐渐淡出。而墙壁需要在拐角处戛然而止。

如果在矩形上使用高斯函数,你会得到模糊、不明确的边界。作者提出了一种新颖的 基于矩形的平面泼溅函数 (Rectangle-based Plane Splatting Function)

他们使用 Sigmoid 函数而不是高斯函数来定义平面上某点的“权重” (不透明度/影响力) 。逻辑如下:

  • 计算交点到中心的距离 (投影到局部 X 和 Y 轴上) 。我们称这些距离为 \(\mathcal{P}_X\) 和 \(\mathcal{P}_Y\)。
  • 将这些距离与半径 (\(r^{x+}\) 等) 进行比较。
  • 将差值输入 Sigmoid 函数。

定义投影距离 P_X 和 P_Y 的方程。

沿 X 轴的权重 \(w_X\) 计算如下:

沿 X 轴的泼溅权重方程。

Y 轴同理:

沿 Y 轴的泼溅权重方程。

这在数学上起什么作用? 项 \((r - |\mathcal{P}|)\) 衡量点在矩形“内部”的深度。

  • 如果点在半径内,该值为正。\(\text{Sigmoid}(\text{大正数}) \approx 1\)。平面是不透明的。
  • 如果点在半径外,该值为负。\(\text{Sigmoid}(\text{大负数}) \approx 0\)。平面是透明的。
  • 在边界附近,它会急剧过渡。

参数 \(\lambda\) 控制锐度。随着训练的进行,\(\lambda\) 会增加 (退火) ,使得边缘越来越锋利。

图 4. 高斯泼溅与平面泼溅的视觉对比。注意平面泼溅 (中/右) 如何形成清晰的矩形形状。

图 4 完美地展示了这一点。左侧,标准高斯泼溅创建了一个柔和的斑点。在中间和右侧,原本提出的平面泼溅创建了一个实际上看起来像矩形的形状,并且随着迭代次数增加,边界变得更加锐利。

一个点的最终权重仅仅是 X 和 Y 权重的最小值 (两个条带的交集) :

最终组合泼溅权重的方程。

步骤 C: 混合合成 (Blending Composition)

一旦计算出权重,渲染器就会按深度对平面进行排序,并使用标准的 Alpha 合成进行混合——类似于 Photoshop 中透明图层的堆叠或标准的体积渲染。

系统渲染两样东西:

  1. 深度图 (Depth Map): 到表面的预期距离。
  2. 法向图 (Normal Map): 每个像素处的表面朝向。

渲染深度图的方程。 渲染法向图的方程。

3. 优化与监督

系统如何学习?它不使用地面真值 3D 平面 (这很难获取) 。相反,它使用 单目线索 (monocular cues)

作者使用现成的基础模型 (如用于深度的 Metric3Dv2 和用于法向的 Omnidata) 为输入图像生成“伪地面真值”图。损失函数试图最小化渲染深度/法向与这些预测深度/法向之间的差异。

总损失函数方程。

初始化与分裂

为了达到 3 分钟的速度,初始化是关键。他们不是从零开始。他们使用单目深度图创建一个粗糙的点云,在其上散布随机平面,并将它们与估计的法向对齐。

在训练期间,他们还执行 平面分裂 (Plane Splitting) 。 如果单个平面基元具有高梯度 (意味着它试图拉伸以适应复杂的形状) ,系统会将其切成两半,创建两个新的较小平面。

图 S1. 平面分裂机制示意图。

这种自适应分裂 (如图 S1 所示) 使得系统能够捕捉更精细的细节,例如橱柜门和抽屉之间的分隔。

实验结果

作者在 ScanNetV2 和 ScanNet++ 数据集上评估了 PlanarSplatting。

定量精度

他们将自己的方法与基于几何的方法 (如 2DGS + RANSAC) 和基于学习的方法 (PlanarRecon, AirPlanes) 进行了比较。

表 1. ScanNetV2 上的定量结果。PlanarSplatting 实现了最佳的倒角距离 (越低越好) 和 F-score (越高越好) 。

表 1 显示 PlanarSplatting (Ours) 实现了最低的 倒角距离 (Chamfer Distance) (几何误差的度量) ,为 4.83,显著击败了 PlanarRecon (9.89) 和 AirPlanes (5.30)。在平面保真度方面,它也是最准确的。

视觉质量

视觉差异非常明显。标准高斯方法通常会在平坦墙壁附近产生混乱的、纸屑般的伪影。

图 5. 源自高斯泼溅 vs. 平面泼溅 vs. 地面真值的网格比较。

图 5 中,看最左边的图像 (w/ GS Splatting)。墙壁凹凸不平且不规则。中间的图像 (w/ Plane Splatting) 平滑且一致,更接近右侧的地面真值网格。

图 6. 展示不同平面分割的定性结果。

图 6 进一步突出了分割能力。颜色代表不同的平面实例。注意 PlanarSplatting (c 列) 如何干净地捕捉家具和墙壁的独特平面,而 PlanarRecon (a 列) 则遗漏了整个部分。

提升新视图合成 (NVS)

对于更广泛的社区来说,最令人兴奋的应用或许是与 3D 高斯泼溅 (3DGS) 的集成。

3DGS 以实时渲染闻名,但在几何结构上可能会遇到困难。通过使用 PlanarSplatting 来初始化场景 (替换 3DGS 通常使用的随机点云初始化) ,作者实现了:

  1. 更快的收敛: NVS 的训练时间显著下降。
  2. 更好的质量: 更高的 PSNR 和 SSIM 分数。
  3. 更少的基元: 场景表示更高效。

图 7. 新视图合成比较。使用 PlanarSplatting 初始化消除了标准 3DGS 中看到的伪影。

图 7 中,比较 (a) “3DGS” 和 (c) “Ours+3DGS”。标准的 3DGS 结果在橱柜周围有“漂浮物”和模糊。而 PlanarSplatting 初始化的版本则清晰锐利。

结论

PlanarSplatting 代表了室内 3D 重建的一大步。通过尊重室内场景的结构本质 (它们是由平面组成的!) 并专门为矩形设计可微渲染流程,作者实现了一个既 快速准确 的系统。

主要收获如下:

  1. 表示法很重要: 从通用高斯转向双半径矩形提高了人造场景的几何保真度。
  2. 专用泼溅: 基于 Sigmoid 的泼溅函数有效地模拟了硬边缘,这对于墙壁和家具至关重要。
  3. 速度: 3 分钟内的优化速度使其适用于从 AR/VR 到机器人的实际应用。

随着我们迈向“数字孪生”和更具沉浸感的虚拟环境,能够快速将房间视频转化为结构化、干净的 3D 模型的工具将不可或缺。PlanarSplatting 证明了有时候,方形才是王道。