本文最后更新于:2026年7月9日 上午
词袋模型(DBoW2)给出了回环的"候选"——当前帧可能和某个历史关键帧拍的是同一个地方。但候选只是开始:单帧命中不可靠,真假回环必须经过几何验证、尺度校正、全局优化三步才能确认并消除漂移。这篇接在词袋模型之后,记录"候选之后"的完整流程。
候选的不足
词袋检索给出的是"单帧命中"的候选,但单帧命中不可靠。原因有两层:
- 感知偏差(perceptual aliasing):不同位置看起来可能很像(走廊、农田、幕墙),BoW 相似度高,但根本不是同一处。词袋本身解决不了——它衡量的就是"看起来像"。
- 单帧巧合:光照、视角偶然相似,让一帧误命中。
真回环和假阳在时间行为和几何一致性上有本质区别,这正是后续三步过滤的依据。
时序与空间一致性
倒排索引给出的候选先过两道廉价判据,避免把昂贵的几何验证浪费在偶然命中上:
时序一致性:真回环在连续多帧里持续命中同一片历史区域;假阳只偶然命中一次、位置跳变。DBoW2 原文的做法是维护一个滑动窗口,对候选 $(q_t,d_t)$(当前帧及其最佳匹配历史帧),回看前几帧的匹配结果,要求它们都落在 $d_t$ 的邻域里。连续几帧都"钉在同一区域"才升级为稳定候选。
空间一致性:回环不应在刚走过的地方检测到(那是前端跟踪的活)。ORB-SLAM 的做法是把互相共视的历史关键帧聚成"组"、候选以组为单位比较,并要求候选在连续 3 个关键帧的候选列表里都出现,才送去做几何验证;同时要求候选离当前帧的图上距离足够远。
这两步把"单帧误报"压到极低,是几何验证之前的廉价过滤器。整体是个三级漏斗:倒排检索命中(多)→ 时序/空间一致性(少)→ 几何验证(极少),每一级用更贵但更准的判据逐级过滤。
几何验证
几何验证是判定的本质。当前帧和候选历史帧做特征匹配(用直接索引只在同词组内匹配,加速),然后 RANSAC 求一个能解释大量匹配的统一几何模型:
- 一般 3D 场景 → 基础矩阵 F(对极约束 $\mathbf{x}_B^\top F\,\mathbf{x}_A=0$);
- 纯平面场景 → 单应矩阵 H;
- 若历史帧已有 3D 路标 → PnP 求相对位姿。
错误匹配是随机散落的,不服从任何单一变换;正确匹配服从同一个几何模型。RANSAC 反复采样最小点集估模型、数内点,内点数(或比例)超阈值就判"同一场景"。再配合 cheirality 检查(三角化几个点确认都在相机前方),排除镜像误报。
判定同场景的原子标准是"存在一个能解释大量匹配的统一几何模型",而不是匹配的绝对数量——一面满是相同窗户的墙能匹配上千个但不服从单一几何,内点反而少。这一条是回环检测最根本的判据。
Sim3 校正
确认回环后,要把当前帧位姿和历史帧位姿对齐。这里有个单目 SLAM 特有的问题:尺度漂移。
单目 SLAM 的尺度不可观——本质矩阵只有 5 个自由度,平移方向已知但长度未知。不同时间段的局部地图可能建立在不同尺度上:时刻 $T_0$ 的局部地图尺度是 $s_1$,时刻 $T$ 的是 $s_2$。若 $s_1\ne s_2$,用刚体变换 SE(3)(只有 R, t)对齐就错了,必须用相似变换 Sim3(含尺度因子 s):
$$ \mathbf{X}'=s\,R\,\mathbf{X}+\mathbf{t} $$Sim3 同时估计旋转 R、平移 t、尺度 s,把回环两端的局部地图对齐到同一尺度。双目 / RGBD / 有 IMU 的系统提供了绝对尺度,理论上可以用 SE(3),但工程上 Sim3 对残余尺度误差更稳健,所以也常用。
全局优化
Sim3 校正只对齐了回环两端,但中间整条轨迹的累积漂移还在。消除它的办法是把回环约束加进位姿图,做全局优化:
- 位姿图优化:只优化相机位姿(3D 点固定),把回环约束作为一条边加入图,全局调整所有关键帧位姿。秒级,精度中等,用于快速消除漂移。
- 全局 BA:优化全部相机位姿加全部 3D 点,最精但最贵(分钟级)。实际策略是先位姿图优化快速拉直,再全局 BA 精化。
优化后,原本漂移的轨迹被"拉回"对齐到回环点,整条轨迹全局一致。如果有双目/RGBD/GPS 提供的绝对约束,也一并加入因子图。
地图融合
全局优化调整了位姿后,原本因漂移而"分裂"的重复观测需要合并:把回环两端对应的重复 3D 路标融合为同一个,并对之前因漂移三角化失败的点做重三角化(回环校正后视角关系变好,原本失败的三角化可能成功)。这一步让地图也变得全局一致,不只是位姿。
完整流程
以 ORB-SLAM 为例,回环线程(与跟踪、局部映射并行的第三个线程)的完整流程:
1 | |
关键分工是:词袋负责"粗筛、快速找候选",时序/空间一致性加几何验证负责"精筛、确认",Sim3 加全局优化负责"校正、消漂移"。粗筛只保召回(不漏真回环),精筛只保精度(不误报假阳),两者缺一不可——单靠词袋阈值同时保召回和精度理论上不可能,所以必须级联。
小结
词袋给出的候选只是回环检测的起点。完整流程是:候选 → 时序/空间一致性(廉价过滤偶然命中)→ 几何验证(RANSAC 找一致几何模型,判定真假)→ Sim3 校正(处理单目尺度漂移)→ 全局优化(沿共视图把漂移拉直)→ 地图融合。BoW 衡量"看起来像",几何验证确认"真的是同一处",全局优化把这份确认转化为整条轨迹的一致性——三步合起来,才把 SLAM 从"会漂移的里程计"提升为"全局一致的建图系统"。
参考资料
- D. Gálvez-López and J. D. Tardós, “Bags of Binary Words for Fast Place Recognition in Image Sequences,” IEEE T-RO, 2012.(DBoW2,时序一致性)
- H. Strasdat, A. J. Davison, J. M. M. Montiel, “Scale Drift-Aware Large Scale Monocular SLAM,” RSS, 2010.(单目尺度漂移与 Sim3)
- R. Mur-Artal and J. D. Tardós, “ORB-SLAM2,” IEEE T-RO, 2017.(回环线程、共视图、Sim3)
- C. Campos et al., “ORB-SLAM3,” IEEE T-RO, 2021.
- 高翔,《视觉SLAM十四讲》。
- 相关笔记:词袋模型 BoW 与回环检测(检索候选部分)、SLAM 全景、RANSAC、PnP 算法
文章链接:
https://www.zywvvd.com/notes/study/SLAM/loop-closure-sim3/loop-closure-sim3/
“觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭”
微信支付
支付宝支付