下面用直观解释 + 数学形式来回答你“什么是重投影误差”(reprojection error),并结合 ORB‑SLAM3 的使用场景。

一、直观理解

  • 场景里有一个三维点(地图点/路标点)。相机在某个位姿下看到它,并在图像上检测到一个像素位置(特征点)。
  • 如果我们拿当前估计的相机内参和位姿,把这个三维点“投影”回图像平面,就会得到一个预测的像素位置。
  • “重投影误差”就是“观测到的像素位置”和“根据当前估计投影得到的像素位置”的差值。差值越小,说明位姿和地图越与观测一致。

二、数学形式

  • 给定三维点 X(世界坐标),相机位姿 T(R,t)和内参 K,投影模型记作 π:
    • 相机坐标:Xc = R X + t
    • 归一化坐标:(x̂, ŷ) = (Xc/Zc, Yc/Zc)
    • 像素坐标:û = fx x̂ + cx, v̂ = fy ŷ + cy(含畸变时还要经过畸变模型)
  • 观测像素为 z = (u, v),预测像素为 ẑ = (û, v̂)
  • 重投影误差 e = z − ẑ,常用二范数或马氏距离度量:
    • 最小化 ρ(e^T W e),ρ 为鲁棒核(如 Huber),W 为信息矩阵(权重)

三、在 ORB-SLAM3 中如何用

  • 作用场景
    • 跟踪(Tracking):给定地图点与当前帧匹配的特征点,通过最小化重投影误差来优化当前相机位姿(PnP + 迭代优化)。
    • 局部/全局 BA(Bundle Adjustment):同时优化关键帧位姿与地图点位置,目标就是所有观测的重投影误差之和最小。
    • 回环/闭环后优化(Pose Graph / GBA):闭环约束加入后也通过最小化总体误差(包含视觉重投影和惯性误差)来一致化全图。
  • 误差加权与鲁棒性
    • ORB 类特征有图像金字塔尺度。ORB‑SLAM 系列会用该尺度对应的方差对误差加权(每个观测有 invSigma2)。
    • 使用 Huber 等鲁棒核抑制外点影响。
    • 常用卡方检验阈值(例如 2 自由度的 χ² 95% 分位约 5.99)来剔除外点。
  • 多传感器与多模型
    • 单目:误差是 2D 像素残差 e = (u − û, v − v̂)。
    • 立体:通常左目与右目都有观测。对校正过的双目,误差包含左目 2D 残差与右目 u(或视差)残差;v 在理想校正下应一致。
    • RGB‑D:深度用于初始化/尺度恢复;视觉优化仍以 2D 重投影误差为主(有实现会额外加入深度一致性项,但 ORB‑SLAM 常见做法是主要优化 2D 残差)。
    • 惯性(VI 模式):在视觉重投影误差之外,还加入 IMU 预积分的惯性残差共同优化。

四、为什么重投影误差会大

  • 数据关联错误(错误匹配、动态物体)
  • 相机标定不准(内参/畸变/外参)
  • 时间不同步(与 IMU、双目、或滚动快门影响)
  • 初始位姿差太大/漂移积累
  • 地图点质量差(深度不准、三角化基线太小)

五、如何降低

  • 高质量相机标定(内参、畸变、左 - 右或相机 -IMU 外参)
  • 更稳健的匹配策略与外点剔除(RANSAC、金字塔层权重、鲁棒核)
  • 充分的视差/基线,避免共面/退化几何
  • 良好的时间同步与曝光控制,减少运动模糊与滚快效应
  • 定期局部/全局 BA 校正漂移

六、一个极简数值例子

  • 假设 fx=fy=500, cx=cy=320,三维点在相机坐标为 (Xc,Yc,Zc)=(1,2,5)
    • 预测像素:û=500*(1/5)+320=420,v̂=500*(2/5)+320=520
    • 若观测为 (u,v)=(418, 523),则 e=(−2, 3),|e|≈3.6 像素
    • 经过尺度方差加权与鲁棒核后进入优化目标

七、和”标定误差报告里的重投影误差”的关系

  • 相机标定也会报告“平均重投影误差”,其定义一样:棋盘角点观测与模型投影差。
  • 在 SLAM 里,这个概念被推广到任意特征点与地图点/位姿的联合优化。

一句话总结:重投影误差是“观测到的特征点像素位置”与“用当前相机模型和位姿把对应三维点投影回图像得到的像素位置”之间的差异。ORB‑SLAM3 通过最小化所有观测的重投影误差(结合鲁棒核与权重),联合优化相机位姿与地图点,实现稳定、准确的定位与建图。