引言
想象一下,试图用一组照片构建一个房间的 3D 地图。这个过程被称为运动恢复结构 (Structure-from-Motion,简称 SfM) ,它是现代摄影测量和 3D 重建的基石。当你使用智能手机或单反相机拍摄的标准照片时,像 COLMAP 这样的现有算法效果极佳。但是,如果你使用鱼眼镜头、广角 GoPro 或复杂的折反射 (catadioptric) 360 度全景相机,会发生什么呢?
突然之间,标准流程就失效了。
原因在于用于对相机进行建模的数学方法。大多数 SfM 工具依赖于参数化模型 (parametric models) ——即用来近似透镜如何弯曲光线的刚性数学公式 (如多项式) 。如果相机的畸变不符合你选择的特定多项式,或者你事先不知道校准参数,重建就会失败。
在最近的一篇 CVPR 论文中,研究人员介绍了 GenSfM , 这是一个通用的 SfM 流程,它抛弃了僵化的多项式。取而代之的是,它使用灵活的非参数化模型 (non-parametric model) 在运行过程中学习相机的行为。这种方法使得单一算法能够从标准相机、极端鱼眼镜头以及介于两者之间的任何设备重建 3D 场景,而无需事先了解透镜类型。

在这篇文章中,我们将剖析 GenSfM 的工作原理,解释为何在此任务中样条曲线 (splines) 优于多项式,以及该方法如何设法对即使是畸变最严重的相机进行自校准。
背景: 参数化模型的局限性
为了理解为什么需要这种新方法,我们需要先看看计算机传统上是如何理解相机的。
针孔与畸变
最简单的相机模型是针孔模型。它假设光线穿过一个点沿直线传播。然而,真实的透镜——尤其是广角透镜——会弯曲光线,导致现实世界中的直线在图像中呈现弯曲状。
为了修正这一点,计算机视觉工程师使用了畸变模型。一个通用的投影方程如下所示:

这里,\(\Pi\) 是针孔投影,而 \(\mathcal{D}\) 是模拟畸变的非线性函数。几十年来,行业标准一直是 Brown-Conrady 模型 , 它根据距图像中心的径向距离 \(r\) 将畸变表示为多项式:

这对标准摄影很有效。但随着视场角 (FOV) 的增大,\(r\) 会迅速增长。对于视场角达到或超过 180 度的鱼眼镜头,标准多项式会变得不稳定或无法捕捉复杂的映射关系。
替代方案: 非参数化模型
与其猜测哪个多项式适合镜头 (\(k_1, k_2, k_3...\)) ,我们可以使用非参数化模型 。 可以将其视为一个查找表或平滑曲线,将入射光的角度映射到像素位置。它不假设特定的形状 (如抛物线) ;它只是拟合数据。
虽然非参数化模型很灵活,但将它们集成到完整的运动恢复结构 (SfM) 流程中非常困难。你需要同时估计 3D 结构、相机位姿以及这个灵活的透镜模型。在不陷入局部极小值 (陷入错误的解) 的情况下做到这一点,是这篇论文解决的核心问题。
GenSfM 流程
作者提出了一个“通用 SfM” (Generic SfM) 流程。它遵循标准的增量式方法 (逐张添加图像) ,但引入了一种处理相机校准的新颖方法。

该流程包含三个创新阶段:
- 利用径向约束进行初始化 (忽略畸变) 。
- 利用样条曲线进行自适应校准 。
- 处理已校准和未校准数据的混合三角化 。
1. 相机表示 (样条曲线)
作者没有使用参数 \(k_1, k_2\),而是将相机内参建模为张角 (opening angle) \(\theta\) (入射光线与光轴之间的夹角) 和图像半径 (image radius) \(r\) (距中心像素的距离) 之间的映射。

这里,\(M[\theta]\) 是决定光线落在距图像中心多远处的函数。为了使这个函数具有灵活性,他们使用了三次样条 (cubic splines) 。
样条由一组控制点定义。通过调整这些控制点的位置,曲线几乎可以呈现任何形状,从而使其能够同样好地对标准透镜或复杂的折反射镜面进行建模。

这种表示法是平滑的、可微的 (这对优化至关重要) 且通用的。
2. 初始化与径向约束
在系统不知道镜头畸变的情况下,它如何弄清楚相机在哪里?
作者利用了径向对齐约束 (Radial Alignment Constraint, RAC) 。 核心洞察很简单: 无论镜头在径向上 (将像素从中心推入或推出) 使图像畸变多少,像素相对于中心的角度保持不变。
该流程首先选择四张图像并估计一个“径向四焦张量 (radial quadrifocal tensor) ”。这听起来很复杂,但它本质上允许系统仅通过查看特征点的角度来计算场景的初始几何结构,完全忽略径向畸变。这提供了一个粗略的初始结构,而无需知道相机是鱼眼还是针孔。
3. 自适应校准
这是论文最关键的贡献。在非参数化模型中,你有很大的自由度。如果你试图利用稀疏数据一次性校准整个图像,模型可能会在图像的空白区域“臆造”出畸变。
为了防止这种情况,GenSfM 采用了自适应校准 。
它不会立即尝试学习整个图像的畸变。相反,它识别一个已校准区间 \([\theta_{min}, \theta_{max}]\),在该区间内有足够的一致观测值。
- 数据收集 : 随着图像的注册,系统收集 2D-3D 对应关系。
- 过滤 : 识别具有高密度匹配的区域。
- 样条拟合 : 仅在该有效区域拟合样条。
随着重建的增长和更多点的加入,这个有效区域会扩大,逐步从中心向外校准相机。
4. 混合三角化与光束法平差
由于相机通常只是“部分”校准的 (例如,中心已知,但边缘尚未校准) ,系统需要一种方法来使用这种混合状态对 3D 点进行三角测量。
作者提出了混合三角化 (Mixed Triangulation) 方法:
情况 A: 未校准区域 如果一个点落在畸变未知的区域,系统使用径向约束。它强制 3D 点位于由相机中心和图像中的径向线定义的平面上。

情况 B: 已校准区域 如果点落在已校准的样条区域内,系统可以对其进行“去畸变”,并使用完整的 2D 重投影约束,这更加紧密和准确。

最后,在光束法平差 (Bundle Adjustment) (全局优化步骤) 期间,系统同时优化两个不同的误差函数。
对于已校准的点,它使用学习到的样条 \(M[\theta]\) 最小化标准重投影误差:

对于未校准的点,它最小化到径向线的距离 (几何误差) ,确保即使没有畸变模型,它们也能对几何结构做出贡献:

实验与结果
研究人员将 GenSfM 与行业标准 COLMAP 以及其他基于径向的方法进行了对比测试。他们使用的数据集范围从标准数码单反照片到严重畸变的鱼眼和折反射图像。
在畸变图像上的表现
最引人注目的结果来自于图像具有显著畸变的数据集。在下图中,你可以看到对比。上面的行显示标准场景,而下面的行显示鱼眼和朝上的广角拍摄。

主要结论 : 当畸变很大或选择了错误的参数化模型时,COLMAP (左栏) 经常无法注册图像或创建破碎、稀疏的模型。无论镜头类型如何,GenSfM (右栏) 都能始终如一地生成密集、准确的点云。
定量精度
作者在 BabelCalib 数据集上验证了他们的方法,这是一个专门为多样化相机模型设计的基准测试。

如表所示,GenSfM 的重投影误差 (RMSE) 与使用预校准参数模型的方法相当甚至更好。在添加了人工畸变的“Distorted ETH3D”数据集上,COLMAP 的性能显著下降,而 GenSfM 保持稳健。
校准的可视化
这项工作令人满意的一个方面是可视化学习到的校准。下面,我们看到 BabelCalib 数据集上的结果。蓝线代表估计的样条曲线,它几乎完美地追踪了真值 (橙色) 。

此外,该系统可以有效地对人眼看起来完全陌生的图像进行“去畸变”,例如来自折反射系统 (使用镜子的相机) 的图像。

需要多少个控制点?
非参数化模型提出了一个问题: 样条曲线应该多复杂?作者进行了一项消融研究,以找到最佳的控制点数量。

结果表明, 10 个控制点是“最佳平衡点”。少于这个数量,模型无法捕捉透镜的复杂曲率。多于这个数量,优化会变得不稳定,可能会过拟合噪声。
结论与启示
“GenSfM” 流程代表了 3D 重建向前迈出的重要一步。通过摆脱僵化的参数化模型,它使 SfM 能够适用于更广泛的成像设备。
主要收获 :
- 灵活性 : 基于样条的模型无需手动调整即可适应针孔、鱼眼和折反射相机。
- 鲁棒性 : 自适应校准方案确保模型不会对稀疏数据过拟合,仅在安全时才扩展校准区域。
- 混合优化 : 同时使用 1D 径向约束和 2D 重投影约束,使系统能够利用每一个可用的几何线索。
对于计算机视觉领域的学生和研究人员来说,这突显了一个重要趋势: 几何学和深度学习并不是唯一的前进道路;有时,更好的数学表示 (如样条) 结合稳健的工程设计 (自适应校准) 会产生最好的结果。 这种方法为使用来自未知相机的混合众包图像进行“野外”重建打开了大门,这是大规模地图绘制项目的圣杯。
](https://deep-paper.org/en/paper/file-2237/images/cover.png)