引言

在计算机视觉的世界里,我们正见证着单目深度估计 (Monocular Depth Estimation, MDE) 的黄金时代。得益于深度学习和海量数据,现代神经网络仅凭一张平面的 2D 图像就能预测出惊人准确的密集深度图。诸如 MiDaS、Marigold 和 Depth Anything 等模型已将 2D 图像转化为伪 3D 表征。

然而,在生成漂亮的 3D 可视化与将数据实际用于严谨的几何任务之间,存在着鸿沟。计算机视觉中最基础的任务之一是相对位姿估计 (Relative Pose Estimation) : 确定拍摄同一场景的两台相机之间的旋转和平移。传统上,这是通过匹配图像间的特征点并利用对极几何来完成的。

理想情况下,如果我们拥有来自 MDE 模型的密集深度图,我们应该能在 3D 空间中完美锁定这两张图像。但在实践中,简单地信任这些深度图会导致显著误差。为什么?因为神经网络引入了看不见的失真。它们通常能搞对结构,但在尺度 (scale) 和“偏移 (shift) ”上会出错。

在本文中,我们将深入探讨研究论文 “Relative Pose Estimation through Affine Corrections of Monocular Depth Priors” 。 这项工作提出了一套鲁棒的数学框架来修正这些失真。通过显式地建模仿射校正——具体来说是同时求解尺度偏移——研究人员开发了一种显著优于传统几何求解器的方法。

来自论文的图 1。左侧,基线方法尝试仅利用尺度对齐深度图,导致房间扭曲。右侧,本文提出的方法使用了仿射校正 (尺度 + 偏移) ,实现了正确的 3D 重建。

如上所示,忽略偏移会导致扭曲的“哈哈镜”效应 (左) ,而对其建模则能恢复真实的几何结构 (右) 。

背景: 深度的歧义性

要理解为何这种新方法是必要的,我们首先必须了解单目深度估计的局限性。

当深度学习模型从单张图像预测深度时,它面临着固有的歧义性。远处的大物体看起来和近处的小物体一模一样。因此,大多数 MDE 模型被训练为尺度不变 (scale-invariant)仿射不变 (affine-invariant) 。 它们预测的值与真实深度相关,但并非真实深度本身。

如果 \(D_{pred}\) 是预测深度,\(D_{gt}\) 是真实 (度量) 深度,它们通常存在线性关系:

\[ D_{gt} = \alpha \cdot D_{pred} + \beta \]

这里,\(\alpha\) 代表尺度 , \(\beta\) 代表偏移

现有求解器的问题

在位姿估计中使用深度先验的传统方法通常假设 \(\beta = 0\)。它们将预测深度视为“在尺度上”是正确的。对于某些传感器来说这是一个合理的假设,但对于深度学习模型来说,这通常是错误的。模型可能会判定背景墙深度为 100,前景椅子深度为 50。实际上,它们可能分别在 10 米和 5 米处 (尺度因子) ,或者在 15 米和 10 米处 (偏移) 。

如果强行让求解器仅利用尺度来对齐这些不匹配的深度图,就会引入几何不一致性,从而破坏对相机旋转和平移的估计。

核心方法: 仿射校正

研究人员提出了一组新的几何求解器,将深度图视为需要通过仿射变换进行“校正”的先验。

1. 问题表述

目标是估计两张图像 \(I_1\) 和 \(I_2\) 之间的相对位姿 \((\mathbf{R}, \mathbf{t})\)。我们要有一组 2D 像素对应关系 \((p_{1}, p_{2})\) 和预测的深度图 \(D_1, D_2\)。

作者将预测深度与用于重建的度量深度之间的关系建模如下:

公式 1: 预测深度与校正深度之间的仿射关系。

这里,\(a_i\) 和 \(b_i\) 是每张图像未知的尺度和偏移。为了对齐两张图像,我们不需要世界的绝对度量尺度 (仅凭单目视觉也无法获得) ;我们只需要相对尺度。因此,研究人员简化了未知数。他们定义了一个相对尺度 \(\alpha\) 和两个相对偏移 \(\beta_1, \beta_2\):

展示带有相对尺度和偏移的深度图变换公式。

这是本文的核心方程。我们需要找到旋转 \(\mathbf{R}\)、平移 \(\mathbf{t}\)、尺度 \(\alpha\) 和偏移 \(\beta_1, \beta_2\),使两个视图在几何上保持一致。

2. 几何约束

我们如何求解这么多变量?我们要利用刚体变换的性质。如果我们将 2D 像素利用校正后的深度提升为 3D 点,无论哪个相机在看它们,场景中任意两点之间的距离必须是相同的。

首先,我们将 2D 像素 \(p_{ij}\) (图像 \(i\) 中的点 \(j\)) 提升到 3D 空间 \(P_{ij}\):

利用相机内参和校正深度将 2D 点提升为 3D 点的公式。

两个相机视图之间的标准关系是:

标准的刚体变换公式。

由于旋转和平移保持距离不变,任意两点 \(j\) 和 \(k\) 之间的距离平方在两个相机坐标系中必须相同。设 \(\delta\) 为两点之间的向量:

两 3D 点之间差向量的定义。

核心约束为:

距离保持约束: 视图 1 中的距离必须等于视图 2 中的距离。

通过利用仿射深度变量 (\(\alpha, \beta\)) 展开此方程,旋转和平移矩阵被消去,留下一个仅依赖于深度参数的多项式方程组。

展开后的距离约束公式。

这一推导允许作者创建求解器,首先找到深度校正参数,然后恢复位姿。

3. 三种求解器

根据我们对相机的了解程度,未知数的数量会发生变化。作者利用 Gr{"o}bner 基方法 (一种求解多项式方程组的代数几何技术) 开发了三种不同的求解器。

A. 已标定求解器 (3点)

  • 场景: 我们知道两台相机的焦距和内参 (\(K_1, K_2\) 已知) 。
  • 未知数: 相对位姿、相对尺度 \(\alpha\)、偏移 \(\beta_1, \beta_2\)。
  • 要求: 这是一个最小问题,需要 3 个点对应
  • 过程: 距离约束生成 3 个方程。求解器建立的系统最多得到 4 个可能的参数解。

B. 共享焦距求解器 (4点)

  • 场景: 我们不知道焦距,但知道两张图像的焦距相同 (例如,由同一台相机拍摄的视频) 。
  • 未知数: 位姿、\(\alpha, \beta_1, \beta_2\) 以及共享焦距 \(f\)。
  • 要求: 需要 4 个点对应
  • 过程: 这会导致一个超定系统 (方程数多于 4 个点严格需要的数量) ,但作者选择了特定的约束来与仿射参数一起求解焦距。

C. 双焦距求解器 (4点)

  • 场景: 两台完全不同的未标定相机 (例如,互联网照片集) 。
  • 未知数: 位姿、\(\alpha, \beta_1, \beta_2\) 以及两个不同的焦距 \(f_1, f_2\)。
  • 要求: 需要 4 个点对应
  • 过程: 令人惊讶的是,这种通用情况也有高效的解法,最多生成 4 个实数解。

4. 混合估计流程

仅有求解器是不够的。在现实世界中,特征匹配存在噪声,深度图也有伪影。为了处理这个问题,作者将他们的求解器集成到了一个混合 LO-MSAC (局部优化 RANSAC) 流程中。

流程概览展示了输入、混合求解步骤以及最终输出。

“混合”方面至关重要。该流程不仅使用新的仿射深度求解器。它会在以下两者之间动态切换:

  1. 经典基于点的求解器: (例如 5 点算法) 。这些方法忽略深度图,纯粹依赖对极几何。
  2. 深度感知求解器: 上述的新型仿射求解器。

这种鲁棒性确保了如果深度图很糟糕 (例如一面白墙) ,系统会回退到标准特征匹配。如果深度图很好,系统则利用它来解决基于点的方法无法处理的歧义。

解决方案评分

为了在 RANSAC 循环中确定哪个解是“最好”的,系统使用了一个组合评分。

它计算深度诱导重投影误差 (Depth-Induced Reprojection Error) :

两个方向 (1->2 和 2->1) 的重投影误差公式。

并将其与对极几何中使用的标准 Sampson 误差 (\(E_s\)) 相结合:

包含重投影误差和 Sampson 误差总和的总代价函数。

这个综合评分函数确保了所选位姿与 2D 特征匹配和 3D 深度先验均保持一致。

实验与结果

研究人员在 ScanNet (室内) 、MegaDepth (室外) 和 ETH3D 等标准基准上验证了他们的方法。他们测试了已标定和未标定的场景。

已标定数据的性能

下表展示了 ScanNet-1500 上的结果。指标包括旋转误差 (\(\epsilon_R\))、平移误差 (\(\epsilon_t\)) 和位姿误差 AUC (曲线下面积——越高越好) 。

表 1: ScanNet-1500 上的结果显示 Ours-calib 优于基线。

主要结论:

  • 持续改进: “Ours-calib” 始终获得比 PoseLib (标准 RANSAC) 和仅尺度求解器 (2PT+D) 更低的误差和更高的 AUC。
  • 度量深度 vs. 仿射深度: 有趣的是,即使使用像 Depth Anything (DA-met) 这样的“度量”深度模型,该方法也能提高性能。这证明即使是训练用于输出绝对深度的模型,仍然包含需要校正的仿射失真。

处理未知焦距

杰出的贡献之一是处理未标定相机的能力。在下表中 (使用具有随机焦距的生成图像对) ,“Ours-tf” (双焦距) 求解器大幅优于标准的 7 点算法。

表 4: 未标定结果显示相对于 PoseLib-7pt 的巨大改进。

焦距误差中位数 (\(\epsilon_f\)) 显著下降 (从 PoseLib 的约 60% 误差降至 Ours 的约 17-29%) ,这反过来允许了更精确的位姿估计。

可视化改进

数字固然重要,但点云更能说明问题。下面是 ETH3D 数据集上的对比。

图 4: 点云的视觉对比。左为基线,中为 Ours,右为真值。

  • 左 (基线) : 注意墙壁是倾斜的,地板是扭曲的。仅尺度的假设未能对齐几何结构。
  • 中 (Ours) : 仿射校正恢复了墙壁的直线和平整的地板,与 右 (真值) 非常接近。

ScanNet 的另一个例子展示了忽略偏移造成的严重失真:

ScanNet 上的视觉对比,显示仅尺度方法中的严重扭曲与所提出方法的对比。

“仅尺度”重建 (左) 看起来像是被错误地压扁或拉伸了。仿射方法 (中) 保持了场景的结构完整性。

为何偏移至关重要: 消融研究

怀疑论者可能会问: “偏移参数 \(\beta\) 真的那么重要吗?也许只求解尺度 \(\alpha\) 就够了?”

作者通过消融研究直接回应了这一点。他们在真值深度图上添加了合成偏移,并测量了不同方法的错误率变化。

展示旋转和平移误差随深度偏移变化的图表。

在上图中:

  • 蓝线 (Ours) : 无论偏移幅度如何,误差都保持平坦且处于低位。求解器正确识别并移除了偏移。
  • 红/绿线 (基线) : 随着偏移增加,误差呈爆炸式增长。

作者还分析了 MDE 模型在现实世界预测中的偏移值分布:

真实数据集中偏移值的直方图。

红线表示 10% 的偏移。正如直方图所示,现实世界的偏移值经常远大于 10%,尤其是对于室外数据集 (MegaDepth) 上的非度量模型 (如 Marigold) 。这证实了 \(\beta\) 不是一个可忽略的噪声项——它是一个必须建模的重要几何分量。

结论

论文“Relative Pose Estimation through Affine Corrections of Monocular Depth Priors”提出了一个令人信服的观点: 我们不能信任单目深度模型的原始输出作为完美的度量几何。 然而,只要我们应用正确的数学校正,我们可以信任它们的内部一致性。

通过引入一个同时考虑尺度和偏移的仿射变换模型,并将其封装在一个必要时回退到经典几何的混合求解器中,研究人员为 3D 视觉创造了一个强大的新工具。

主要收获:

  1. 偏移至关重要: 将深度视为“尺度不变”是不够的;“仿射不变”才是正确的方法。
  2. 可解性: 仅用 3 或 4 个点就可以同时求解位姿、尺度、偏移和焦距。
  3. 混合鲁棒性: 将基于深度的求解器与经典基于点的求解器相结合,可产生最先进的结果。

这项工作为更可靠的运动恢复结构 (SfM) 和 SLAM 系统铺平了道路,使其能够利用单目深度估计的巨大进步,而不会被其固有的歧义性误导。