Stable and Scalable Bundle Adjustment of Holistic 3D Structures
Shaohui Liu, Rémi Pautrat, Daniel Barath, Richard Hartley, Viktor Larsson, Marc Pollefeys
ECCV 2026
cs.CV
2026-09-04
ETH与微软把平面、灭点、线框约束写成像素重投影,Schur消元结构不变。1DSfM流水线只比点BA慢约1.3倍,ScanNet++相对位姿AUC@3°从84.0提到87.4。
经典光束法平差(Bundle Adjustment,BA)联合优化相机内参、位姿和稀疏三维点。人造场景里还有线、平行关系、共面、线框交点,这些结构本该把重建钉得更稳,但一加进去就会踩两个坑。
第一个坑是结构耦合。点与点本来互不直接相连,Hessian 对路标块对角,Schur 消元很快。共面或点落在线上会在路标之间拉出非对角块,稀疏性被破坏。第二个坑是三维正则:点到平面距离跟像素重投影混在一起,尺度对不上,优化器还会靠把场景缩小来压三维惩罚。
几何实体分成两类。特征(点、线)有直接的二维观测,数量可以成千上万,放在被消元的块里。群组(灭点、平面、球、柱等)编码高阶关系,数量远少于特征,跟相机一起放进不被消元的块。每个特征-群组残差只牵一个特征和一个群组,路标 Hessian 继续块对角。
位置类群组不用三维点到面距离,而用群组诱导的重投影:把点投到平面上再投影回图像,跟原始投影的像素差就是残差。点正好在平面上时残差为零。统计上,这等价于用该点的 Fisher 信息做马氏距离。观测充分的点会把平面锚住,观测差的点几乎不影响群组。
线框约束直接耦合两个特征。做法是交叉重投影:在只看到线的图像里,用观测到的二维线段当常数,约束三维点的投影落在这条线上;反过来在只看到点的图像里约束线。每个残差仍只含一个特征加一个相机,特征块保持对角。方向类群组(灭点)继续用角度残差。群组之间的正交、平行先验只进相机-群组块,不影响 Schur 结构。
合成问题上,点、点线、加群组、再加线框四种配置,在 SPARSESCHUR 和 DENSESCHUR 下渐近复杂度与经典 BA 同阶。DENSESCHUR 的耗时几乎只由缩减系统大小决定,点和点线一组、群组和整体一组,印证群组在法方程里的角色接近相机。
1DSfM 三条大场景里,完整流水线相对点基线大约 1.3 倍耗时,低于先前线重建系统相对 COLMAP 报过的 2–4 倍。Tower of London 上点基线 46.4 分钟,整体 SfM 59.2 分钟,注册图像 963/1322,点重投影 1.03 px,同时多出 2.8k 条线和 117 个群组。每次 BA 迭代次数从 4.8 升到 11.8,约束更密,收敛更慢,总墙钟时间仍可控。
| 设置 | 指标 | 点法 | 整体 |
| Hypersim 点 inlier@1mm | 比例 | 9.3% | 11.9% |
| ETH3D 精度@1cm | 比例 | 45.17% | 47.05% |
| ScanNet++ 相对位姿 | AUC@3° | 84.0 | 87.4 |
| Hypersim 相对位姿 | AUC@3° | 89.3(COLMAP) | 92.5 |
Hypersim 上线长度召回@1mm 从 72.1 m 升到 93.3 m。三维平面距离权重大了(w=1000)会把 ScanNet++ AUC@3° 从峰值拉回 85.1,二维公式不用调权就拿到 87.4。ETH3D 位姿几乎不动:AUC@3° 从 50.2 到 50.4。
这是一次残差配方整理,检测器可以照旧。结构约束全部落到像素空间,权重由观测几何自动给出,终止判据也不用在米和像素之间对拍。代码接到 LIMAP,兼容 COLMAP 生态。室内、有平面和线框的建图,可以直接换这个后端。提升是渐进的:结构稀的室外场景几乎吃不到,ScanNet++ 这种室内场景才拉开差距。
依赖上游关联质量。实例化策略偏向精确率,约束至少要在 3 张图上投到票,错误关联仍靠 Cauchy 核压。视线几乎平行于平面的点,二维残差推不动它们贴面;三维公式能推,但相机从中得不到信息。线如果当群组放进未消元块,缩减系统会过大。评测把图像最长边压到 800 像素,平面来自 MoGe-2 的深度和法向拟合,换检测器数字会变。