第四章 SLAM前端算法面试题:特征点提取匹配、光流法、直接法、ORB-SLAM架构
| 核心技术 | 核心原理 | SLAM中应用 | 面试高频切入点 |
| 特征点法 | ORB: FAST角点 + rBRIEF描述子 | 前端稀疏特征匹配、PnP求解 | 尺度/旋转不变性实现、汉明距离匹配 |
| 光流法 | LK光流: 亮度恒定+小运动+空间一致 | 特征点跟踪(替代描述子计算) | 金字塔策略、可靠性判断 |
| 直接法 | 最小化光度误差,无需特征提取 | 半稠密/稠密重建,DVO | 亮度一致性、对运动初值敏感 |
| ORB-SLAM架构 | 三线程: 跟踪、局部建图、回环检测 | 基于ORB特征,词袋模型加速 | 关键帧筛选、局部/全局BA区别 |
🎯 问题一:请说明ORB特征点提取的关键步骤,以及如何进行特征匹配?
| 面试官考察点 | 对ORB算法细节的掌握(尺度/旋转不变性、描述子设计)、匹配策略的工程理解 |
| 回答框架 | ① 构建图像金字塔实现尺度不变性 → ② 每层提取FAST角点并用灰度质心法计算方向 → ③ 基于方向生成旋转补偿的BRIEF描述子(rBRIEF) → ④ 使用汉明距离进行暴力匹配 → ⑤ 通过最近邻与次近邻距离比(<0.75)筛选误匹配 |
| 简短示例回答 | ORB=改进FAST角点+旋转BRIEF。先建金字塔,每层用oFAST检测角点并算方向,再提取rBRIEF描述子。匹配时计算汉明距离,取最近邻与次近邻比值小于0.75为正确匹配,速度快且具有旋转/尺度不变性。 |
| 可能追问 | 如何确定FAST阈值?方向计算为什么用灰度质心?ORB-SLAM为什么选ORB而非SIFT? |
| 🚫 避坑提醒 | 不要只说“用ORB匹配”,需具体到金字塔层数、方向计算方法、描述子旋转步骤;避免混淆FAST与Harris等检测子。 |
🎯 问题二:请解释LK光流法的假设条件,以及在SLAM中的典型应用。
| 面试官考察点 | 光流基本假设理解、求解方法、金字塔的作用、与特征点法的对比认知 |
| 回答框架 | ① 三大假设:亮度恒定、小运动(<1像素)、空间一致性(邻域运动相同) → ② 由泰勒展开得光流约束方程 → ③ 对窗口内像素构建最小二乘求解 → ④ 实际使用图像金字塔解决大位移 → ⑤ SLAM中常用于跟踪已提取的特征点,避免描述子计算,提升速度 |
| 简短示例回答 | LK光流假设亮度不变、小运动和空间一致。通过局部窗口像素构建超定方程,最小二乘得运动向量。金字塔从粗到细迭代可处理大位移。在ORB-SLAM中可用光流替代描述子匹配进行跟踪,效率高但对光照和纹理敏感。 |
| 可能追问 | 如何判断光流跟踪是否可靠?若亮度不恒定怎么办?与直接法有什么异同? |
| 🚫 避坑提醒 | 不要只背诵假设,要会推导光流方程;强调金字塔的必要性;注意区分光流法(跟踪特征点)和直接法(优化光度误差)。 |
🎯 问题三:请描述ORB-SLAM系统的整体架构,并说明前端选择特征点法的原因。
| 面试官考察点 | 整体系统认知、三线程分工、特征点法与直接法的比较优势、工程细节(关键帧、BA) |
| 回答框架 | ① 三线程:跟踪线程(提取ORB、匹配、PnP定位) → 局部建图(局部BA) → 回环检测(词袋+Sim3) → ② 前端特征点法:提取ORB特征,用词袋加速匹配,支持重定位 → ③ 相比直接法:更鲁棒,适应大位姿变化,但计算描述子有开销 → ④ 关键帧筛选策略:内点数、跟踪质量等 |
| 简短示例回答 | ORB-SLAM三线程工作:跟踪线程提取ORB特征,通过恒速/参考帧/重定位三种模式匹配,PnP+BA优化位姿并筛选关键帧;局部建图执行局部BA;回环检测用DBoW2词袋。前端选择特征点法是因为它在纹理丰富场景稳定、支持大范围重定位,比直接法更适合大规模地图。 |
| 可能追问 | 局部BA和全局BA的区别?如何保证无纹理环境鲁棒?词袋如何训练? |
| 🚫 避坑提醒 | 避免只背线程名称,需说出跟踪线程的三种模式;说明特征点法重定位优势;提及关键帧筛选条件体现工程细节。 |
💡 章节小结: SLAM前端算法面试重点集中在特征点法(ORB)、光流法(LK)、直接法的对比,以及ORB-SLAM系统架构。备考时需掌握各算法的核心假设、计算流程、工程优化(金字塔、描述子旋转补偿),并能结合实际场景(重定位、大位移)分析优劣。对于实习生,面试官更关注你对基础原理的清晰表达和对比分析能力。