问题背景#
室内场景重建是计算机视觉领域的重要课题。挑战在于“曼哈顿世界”假设——即人造场景主要由正交平面组成。
为此,我们可以将世界视为一系列 3D 矩形基元。先前的方法大致分为两派:
1. 几何拟合: 这些方法首先构建密集的点云 (使用经典的摄影测量法) ,然后尝试使用 RANSAC 等算法将平面“拟合”到这些数据上。这既缓慢又容易出错;如果初始点云充满噪点 (在纹理缺失的白色房间中通常如此) ,平面就会出错。#
2. 深度学习流程: 像 PlanarRecon 或 AirPlanes 这样的方法试图端到端地学习平面检测。然而,它们严重依赖标注数据 (地面真值 3D 平面) ,这些数据既昂贵又稀缺。它们还经常面临细节“过度平滑”的问题。#
PlanarSplatting 的作者提出:我们需要一种直接从图像优化显示 3D 平面基元的方法,不需要地面真值平面标注,并且它需要是可微的,一边我们可以用梯度下降对其进行调整。
方法:"Plane Splatting"#
将场景表示为一系列 3D 矩形。系统不再通过检查射线是否击中一个点来渲染像素,而是检查射线是否击中一个矩形。为了使其可学习 (可微) ,他们处理矩形的方式类似于 3DGS 处理高斯的方式——将平面“泼溅 (splat)”到屏幕上。
1. 平面基元的数学表示#
在标准几何中,平面是无限的。但在房间里,墙壁有边界。因此,基元必须是一个 3D 矩形。
作者定义了一个平面基元,包含三组可学习参数:
1. 位置(pπ):矩形的 3D 中心。#
2. 朝向(qπ):代表旋转的四元数。#
3. 形状(rπ):矩形的尺寸。#
如图所示,形状由四个值定义:
rπx+,rπx−,rπy+,rπy−。
这使得中心点 pπ 实际上可以是矩形内的任意位置,而不必是几何质心。这给予优化器更大的灵活性,可以在特定方向上拉伸平面以适应墙壁或地板片段。
半径向量的数学定义为:
rπ={rπx+,rπx−,rπy+,rπy−}∈R+4
根据旋转四元数,推导出平面的局部坐标系(X轴向量 vπx,Y轴向量 vπy,以及法向量nπ)。
vπx=R(qπ)[1,0,0]⊤,vπy=R(qπ)[0,1,0]⊤,nπ=R(qπ)[0,0,1]⊤
2. 平面基元可微渲染#
我们有了 3D 矩形;现在我们需要将它们渲染成 2D 图像,以便与输入照片进行比较并计算损失。如上图所示,该流程遵循“泼溅 (Splatting)”范式。
该过程包括三个步骤: 相交、泼溅和混合:
步骤 1:射线与平面相交 (Ray-to-Plane Intersection)#
对于图像中的一个像素,我们向场景中投射一条射线 r。我们计算这条射线与基元定义的无限平面相交的位置。这给了我们一个交点 xπr。
xπr=o+d⋅nπ(pπ−o⋅nπ)d,
步骤 2:平面泼溅函数(创新点)#
在 3DGS 中,基元的影响力根据高斯分布的钟形曲线平滑衰减。这对于矩形来说很糟糕。高斯泼溅没有硬边缘——它会逐渐淡出,墙壁需要在拐角处戛然而止。
作者提出了一种新颖的基于矩形的平面泼溅函数 (Rectangle-based Plane Splatting Function) 。使用 Sigmoid 函数来定义平面上某点的“权重”(不透明度/影响力)。
逻辑如下:
1. 计算交点到中心的距离(投影到局部 X 和 Y 轴上)。我们称这些距离为 PX 和 PY。#
2. 将这些距离与半径(rx+ 等)进行比较。#
3. 将差值输入 Sigmoid 函数。#
PX=(xπr−pπ)⋅vπx,PY=(xπr−pπ)⋅vπy.
沿 X 轴的权重 wX 计算如下:
wX(xπr)={2σ(5λ(rπx+−∣PX∣)),2σ(5λ(rπx−−∣PX∣)),if PX>0,otherwise.
Y 轴同理:
wY(xπr)={2σ(5λ(rπy+−∣PY∣)),2σ(5λ(rπy−−∣PY∣)),if PY>0,otherwise.
项 (r−∣P∣) 衡量点在矩形“内部”的深度。
如果点在半径内,该值为正。Sigmoid(大正数)≈ 1,平面是不透明的。
如果点在半径外,该值为负。Sigmoid(大负数)≈ 0,平面是透明的。
在边界附近,它会急剧过渡。
参数 λ 控制锐度。随着训练的进行,λ 会增加(退火),使得边缘越来越锐利。

一个点的最终权重是 X 和 Y 权重的最小值 (两个条带的交集):
w(xπr)={wX,wY,if wX<wY,otherwise.
步骤 3:混合合成#
一旦计算出权重,渲染器就会按深度对平面进行排序,并使用标准的 Alpha 合成进行混合——类似于 Photoshop 中透明图层的堆叠或标准的体积渲染。系统渲染两样东西:
深度图 (Depth Map): 到表面的预期距离。
法向图 (Normal Map): 每个像素处的表面朝向。
DrenderΠ(r)=j=1∑MTjw(xπ(j)r)tj
NrenderΠ(r)=j=1∑MTjw(xπ(j)r)nπ(j)
优化与监督#
系统如何学习?它不使用地面真值 3D 平面 (这很难获取) 。相反,它使用 单目线索 (monocular cues) 。
作者使用现成的基础模型 (如用于深度的 Metric3Dv2 和用于法向的 Omnidata) 为输入图像生成“伪地面真值”图。损失函数试图最小化渲染深度/法向与这些预测深度/法向之间的差异。
LrenderΠ=α1r∈I∑1−NrenderΠ(r)⊤Npre(r)1+
α1r∈I∑NrenderΠ(r)−Npre(r)1+
α2r∈I∑DrenderΠ(r)−Dpre(r)1
为了达到 3 分钟的速度,初始化是关键。他们不是从零开始。他们使用单目深度图创建一个粗糙的点云,在其上散布随机平面,并将它们与估计的法向对齐。
在训练期间,他们还执行平面分裂 (Plane Splitting)。 如果单个平面基元具有高梯度 (意味着它试图拉伸以适应复杂的形状) ,系统会将其切成两半,创建两个新的较小平面。

这种自适应分裂使得系统能够捕捉更精细的细节。