Skip to content

从“调一调重建”到可审计估计:重读 Bundle Adjustment 的现代综合

多视图重建很容易被讲成一串彼此独立的招式:先匹配,再由两视图几何求相对位姿,再三角化,最后“做一点 refinement”。这种叙事在计算机视觉里很方便,却遮住了一个更重要的问题:每一步都在消费同一批有噪声、会错配、且几何约束彼此交叠的观测;为什么要把它们分开处理,最后才修补不一致?

Triggs、McLauchlan、Hartley 与 Fitzgibbon 在 2000 年的综述把 bundle adjustment(BA)放回摄影测量与大地测量的传统中。按该文的简史,最小二乘与测量网理论早已成熟,Brown 团队在 1957–59 年已用电子计算机实现摄影测量的 bundle 方法;作者写作的动机正是让这些知识为计算机视觉实现者所用,而非再造一套临时迭代 (文献 [1])。

因此,这里的“现代综合”不是把 2000 年的论文事后包装成 GPU、自动微分或学习式匹配的起源。它指的是一种仍然有用的视角:把统计估计稀疏数值线性代数非线性几何参数化可靠性/测量网设计当作一个系统来使用。BA 的“最优”也只能理解为:在明确写出的观测、噪声、先验与代价下,得到代价最小的联合估计;它并不自动等于真实世界的唯一真相 (文献 [1])。

BA 真正在估计什么

设相机集合为 ,三维点集合为 ,而 是点 在图像 中实际测得的像素位置。投影模型 可以包含位姿、内参和畸变;残差为 。令 表示该观测的协方差, 是按误差分布选定的鲁棒负对数似然形状, 则代表控制点、IMU、标定或软约束等先验信息。一个可解释的 MAP 形式可写成:

这里 不是所有相机—点对的笛卡尔积,而是实际看见且被接受为观测的边集。若误差是高斯且没有先验, 退化为与加权平方残差成比例的函数;若要容纳离群匹配,尾部不能被不现实地压得过小。原文将这种“总的 inlier + outlier 误差分布”的负对数似然作为代价建模原则,也强调 inlier 协方差必须现实,不能把“鲁棒核”当成任意可换的装饰 (文献 [1])。

这也解释了 BA 与“两视图 + 三角化”的差别。两视图估计和逐点三角化提供了很有价值的初始化:它们把搜索带入一个可能收敛的邻域。但它们通常在局部子问题内决定参数,不能同时让同一条轨迹、相机间共享内参、控制测量及其权重相互协调。联合目标则让每一次相机更新都同时面对它观测到的所有点,也让每一个三维点对所有看见它的相机负责。是否更好,仍取决于模型、初值和数据;其确定的含义只是对上述全局目标更一致,而非绕开非凸性。

从观测到联合估计的 BA 流程示意图

图 1:原创示意图。特征轨迹与初始化把图像观测组织为一个联合问题;鲁棒 BA 输出彼此一致的相机与三维结构。图意是数据流,不是某个软件包的固定接口。

局部线性化:非线性问题怎样变成一次可解的步长

投影随旋转、深度和内参非线性变化,所以 BA 不是一次线性求解。迭代第 步在当前估计附近使用局部增量 ,并把残差一阶展开:

符号 有意提醒我们:相机状态不必是普通欧氏向量。例如旋转可保存在矩阵或单位四元数中,却用三维小扰动更新;更新后还须回到合法的旋转表示。Triggs 等人把状态视为非线性流形上的点,明确区分全局状态与局部步长,并建议避开欧拉角奇异性等病态参数化 (文献 [1])。

把所有线性化残差堆叠,带权最小二乘(或鲁棒估计在本轮诱导出的权重)给出 Gauss–Newton 的近似二次子问题。将未知量按点增量 (structure)与相机增量 分块,正规方程具有下列结构:

其中 是观测对状态的雅可比, 汇集协方差的逆与当前鲁棒权重。原文以 定义 Gauss–Newton 近似,并讨论用阻尼/信赖域控制非线性步长的必要性 (文献 [1])。实际系统还会检查步长是否让原目标下降;线性化给的是局部模型,不是一次成功的保证。

稀疏性不是实现细节,而是 BA 能扩展的原因

把相机和点画成两类节点;每个像素观测只连一台相机与一个三维点。这就是相机—点二部观测图。单个残差只依赖自己的 ,故不会直接把所有变量耦合起来: 按点为块对角,而跨块非零项只沿观测边出现。缺失观测不是异常,它正是稀疏图的一部分。

先消去每个点的小块,就能把问题缩成只含相机增量的系统。其 Schur 补可写为:

直觉上,每个点先把“它被多台相机共同看见”所提供的信息压缩为对相机块的贡献;相机步长解出后,再回代恢复各点。因为 是按点分块对角,求其逆的作用可以逐点进行,不需要构造整个逆矩阵。原文给出同样的 reduced camera system,并指出这一约化完整吸收了被消去结构变量的作用 (文献 [1])。

BA 的块稀疏性与 Schur 补直觉图

图 2:原创示意图。左侧是相机—点观测二部图和稀疏块耦合;右侧表示先消去点块,再得到相机约化系统。它阐释结构,不指定块大小、排序或分解器。

这正是“BA 很慢”常被误解的地方。若把所有参数塞进通用稠密优化器,内存、分解和填充都会按错误的结构假设付费,于是得到的只是“稠密求解很贵”的结论。BA 本身的大规模能力来自保留对称性、块结构与稀疏性,并选择合适的变量排序和分解。Triggs 等人的暂定批处理建议正是 Gauss–Newton 加 Hessian 的稀疏分解;它是对当时方法的工程性建议,而不是脱离问题规模与图结构的定理 (文献 [1])。

统计建模:把“不相信所有匹配”写进目标函数

鲁棒性不是“残差大就删”的同义词。一个观测的马氏距离由 标定:同为两像素的偏差,在定位本就不稳定的纹理上和在高精度角点上不应有相同含义。鲁棒损失随后限制极端残差的影响,但其尺度仍须与 inlier 离散度相称。更进一步,若一组特征来自同一可能共同失效的匹配机制,鲁棒分组应与这个失效单位对应;把相关错误伪装成独立证据会高估信息量 (文献 [1])。

先验也不等于“强行固定”。已知标定、GPS、IMU 或控制点可作为带不确定性的项加入目标;它们与重投影观测一起定义估计问题。只有当先验的尺度和分布假设可辩护时,结果才值得按该尺度解释。原文特别把这些异质信息源列入同一加性代价框架 (文献 [1])。

几何自由度、误差条与质量控制

没有外部基准的重建常存在 gauge freedom(基准/规范自由度):整体平移、旋转,单目情形下还有整体尺度的改变,可能不改变重投影代价。它不是“算法没收敛”,而是问题本来没有为这些方向提供绝对证据。求解时可以选一个数值方便的工作基准;报告坐标、协方差和与地面真值的比较时,则必须说明输出基准,或加入可追溯的外部约束。原文还提醒,不应为了固定规范而直接付出稠密伪逆等高代价;可在低成本工作规范中计算后再做转换 (文献 [1])。

在良好局部近似下,目标的曲率(Hessian)或等价分解可用来近似估计不确定性;但这不是一张自动颁发的“准确证书”。弱网络、小样本、错误噪声模型或未处理离群值都会让局部二次近似过于乐观。Triggs 等人把质量控制概括为“accuracy + reliability”:除了估计的精度,还要问离群观测能否被发现、未发现的错误会怎样影响结果、模型是否过度一般化 (文献 [1])。

真正的底线在采集阶段。宽基线、会聚视角、子网络重叠和冗余观测会改善约束;对需要自标定的任务,视角变化尤其重要。作为摄影测量中的经验规则,原文建议一个特征点通常至少由四幅图像看见,并说明两视图虽在原则上可重建,却几乎没有抵抗提取失败的冗余 (文献 [1])。这不是每个场景都必须套用的硬阈值,而是网络设计问题的提醒:优化器不能从近乎共线的视线、过小的基线或根本不存在的重复观测中创造信息。鲁棒损失能降低坏数据的破坏性,却不能修复弱几何和缺失冗余 (文献 [1])。

放回今天的 SfM 与 SLAM 流水线

从当代工程视角读 BA,可以把它看成反复出现的后端,而非一次性的“最后一步”。下面的映射是本文的实践性解释;它不声称这些系统划分由 2000 年论文提出。

  • 初始化:增量或全局 SfM 通常先用相对几何、三角化和轨迹构造可行初值;BA 随后让所有已纳入的问题变量共同协调。初值质量仍决定非凸问题能否进入好盆地。
  • 局部 BA:增量建图时,只优化最近加入的相机、相关地图点及其邻域,以控制延迟;这以牺牲部分全局一致性换取及时反馈。
  • 全局 BA:在回环、分块合并或重要阶段完成后,扩大优化变量和观测范围,消解先前局部决策积累的张力;大规模时,稀疏结构和内存预算决定可行的求解策略。
  • 滑动窗口 BA:在线 SLAM 只保留一段活跃状态与观测,老状态被边缘化或用先验概括;窗口长度改变了计算量、信息保留与一致性之间的权衡。原文也已讨论在线更新与时间窗口的影响,但没有预言今天的具体软件架构 (文献 [1])。

现代工具让雅可比、鲁棒核和稀疏求解的实现更易获得,但没有取消上述判断。Ceres Solver 的问题建模接口就是一个很实用的提醒:残差块、参数块、损失函数与局部参数化(现称 manifold)仍是 BA 的核心边界 [5]。工具负责把声明的模型高效算出来;是否该信任模型、是否有足够几何信息、以及不确定度应在哪个基准下报告,仍是使用者的责任。

实战检查清单

  • 先说明变量、观测、投影模型和坐标基准;不要只说“做了 BA”。
  • 用可解释的协方差/尺度和鲁棒代价;检查鲁棒分组是否对应共同失效的观测单位。
  • 把旋转等非线性量用稳定的局部更新表示,并对非下降步长设置阻尼或信赖域策略。
  • 面对大问题,优先审视观测图、块稀疏性、消元次序与填充,而不是先给 BA 贴上“太慢”的标签。
  • 报告重投影残差之外的诊断:异常轨迹、敏感观测、模型选择、坐标规范和可解释的不确定度。
  • 在拍摄/采集前设计基线、视角、覆盖与重叠;低冗余和弱几何的后果不能靠更多迭代抵消。

参考文献

[1] B. Triggs, P. F. McLauchlan, R. I. Hartley, and A. W. Fitzgibbon. Bundle Adjustment — A Modern Synthesis. In Vision Algorithms: Theory and Practice, LNCS 1883, pp. 298–372, Springer, 2000. DOI: 10.1007/3-540-44480-7_21。本文的历史与技术事实主要据用户提供的 LNCS 排版本 Triggs00.pdf;页码均为 LNCS 印刷页码。

[2] R. Hartley and A. Zisserman. Multiple View Geometry in Computer Vision, 2nd ed. Cambridge University Press, 2004. DOI: 10.1017/CBO9780511811685

[3] J. Nocedal and S. J. Wright. Numerical Optimization, 2nd ed. Springer, 2006. DOI: 10.1007/978-0-387-40065-5

[4] S. Agarwal, N. Snavely, S. M. Seitz, and R. Szeliski. “Bundle Adjustment in the Large.” In ECCV 2010, pp. 29–42, 2010. DOI: 10.1007/978-3-642-15552-9_3

[5] Sameer Agarwal, Keir Mierle, and others. Ceres Solver Documentation. ceres-solver.readthedocs.io。访问日期:2026-07-22。

Released under the MIT License.

View:   User: