单目视觉SLAM综述
摘要
单目视觉SLAM基于其体积小、功耗低以及信息获取丰富的特点而得到了广泛应用。为了全面探讨其优势所在, 本研究首先阐述了单目视觉SLAM的基本原理, 包括特征点检测、相机姿态估计、关键帧选取、地图构建等核心环节的技术要点。随后, 基于特征方法、直接法及混合半直接法等不同理论框架, 对当前主流单目视觉SLAM系统的总体设计架构进行了详细解析, 并对超过20种典型算法的性能特性和适用场景展开了深入分析[(https://营销..net/p/3127db09a98e0723b83b2914d9256174?pId=2782&utm_source=glcblog&spm=1001.2101.3001.7020)。此外, 本研究还重点探讨了深度学习技术在关键环节中的应用, 并与其传统方法进行了对比分析, 最终旨在讨论单目视觉SLAM的发展趋势及未来研究方向。
0 引言
同步定位与地图创建(Simultaneous Localization and Mapping, SLAM)源自于机器人技术领域。指移动式机器人在未知环境下通过自身传感器构建一个与环境高度一致的地图,并确定自身在地图中的位置关系。
在视觉SLAM系统中,相机被视为主要的传感器设备,而图像数据则被视为获取环境信息的主要来源。基于不同的工作模式或应用场景,相机可以被分类为单目、立体成像以及基于RGB-D技术的三类。其中,在单目相机系统中仅配备一个摄像头作为核心传感器设备,并通过该装置完成定位与环境地图构建的过程。由于其结构简洁明了、成本低廉且操作相对直观的特点,在实际应用中具有较高的适用性和推广价值。
目前,较多国内外学者对该领域展开了深入研究。Cadena等[3]对其实施过程展开了系统分析与对比。Taheri等[4]对历史进程中的先进SLAM算法进行了系统梳理。文献[5-6]对其核心技术及其发展脉络展开了深入探讨。丁文东等[7]重点阐述了提升算法鲁棒性的关键方法。朱凯等[8]系统归纳了单目视觉SLAM的关键技术特点及应用现状。刘瑞军等[9]深入探讨了深度学习技术在SLAM领域的实际应用效果。
本研究聚焦于结合传统方法与深度学习的单目视觉SLAM技术展开深入探讨。首先,从单目视觉SLAM的整体流程入手,系统梳理各组分的关键技术要点。其次,在具体实施层面,则分别采用特征方法、直接法以及混合半直接法来阐述过去及当前主流的单目视觉SLAM系统的构建方案。通过对约20种不同的算法进行对比分析,在定位精度、定位效率以及在特征缺失情况下的鲁棒性等关键性能指标上展开全面评估。随后深入探讨深度学习技术在相机姿态估计、地图构建以及闭环检测等多个关键环节中的应用实践,并重点对比分析其相较于传统方法的优势与不足。最后结合当前研究热点与未来发展趋势,在理论与实际应用层面对未来Single-View SLAM的发展方向作出展望。
1 基本原理
单目视觉SLAM技术主要依赖于以相机捕获的连续图像序列数据为基础,在结合成像模型的基础上推导出环境与相机之间的相互关系,并通过动态更新机制随着相机运动轨迹动态构建周围环境的地图。该系统最终能够计算出相机在环境空间中的具体位置信息。
传统单目视觉SLAM系统框架如图1所示,具体流程如下:

图1单目视觉SLAM系统框架
Fig. 1 Monocular visual SLAM system framework

下载: 原图 | 高精图 | 低精图
步骤1:单目相机实时获取图像帧并传入SLAM前端。
步骤2:前端系统首先识别并提取出关键的特征点;随后可以选择应用优化算法进行求解;或者直接通过最小化像素光度误差来确定相机的姿态
改写说明
第4步:完成获取的图像帧的闭环检测以确认相机是否归位。若确认为闭环,则将收集的信息传递至处理模块以实现优化。
步骤5:输出3D环境地图和相机运动轨迹。
1.1 特征点检测
为了确保特征点检测的鲁棒性与准确性,在面对遮挡的情况下仍能有效工作,并对光照及运动变化具有良好的适应能力。系统将在获取图像后进行特征点提取以实现这一目标。目前广泛采用的特征点检测算法主要包括Harris、Shi-Tomasi等经典算法以及SIFT(Scale Invariant Feature Transform)、SURF(Speeded Up Robust Features)、FAST(Features from Accelerated Segment Test)、ORB(Oriented FAST and Rotated BRIEF)等方法, 如表1所示
表1特征点检测方法比较
Table 1 Comparison of feature point detection methods
| 性能 | Harris | Shi-Tomasi | Sift | Surf | FAST | ORB | 
|---|---|---|---|---|---|---|
| 速度 | ++ | +++ | + | ++ | +++ | +++ | 
| 尺度不变性 | - | - | ++ | +++ | - | - | 
| 旋转不变性 | ++ | ++ | ++ | +++ | - | ++ | 

下载: 导出CSV
1.2 相机姿态估计
相机姿态估计主要依赖于当前图像帧来确定相机的位置与方向,在单目视觉SLAM领域占据核心地位。现有方法主要包括直接法与基于特征的方法。其中直接法主要依据像素光度不变性原理构建误差函数,并通过最小化误差来求解相机位姿;而基于特征的方法则首先需要提取特征点,在此基础上分析这些特征点在当前帧与已知位姿帧之间的匹配关系,并据此求解当前相机位姿。根据所处理的特征空间维度差异性,该类方法可具体可分为二维到二维(2D-2D)、二维到三维(2D-3D)以及三维到三维(3D-3D)三种类型。
如图2所示,请考虑三维空间中的一点P,在其对应的两张连续帧图像中分别投影到二维平面得到点P1和P2。这两点均具有相同的亮度特征值I,并且通过T(R,t)表示这两张图像之间的旋转和平移变换关系。综上所述,误差函数可被定义为:
| E=12∑i=1n∥error(T)∥22E=12∑i=1nerrorT22 | (1) | 
|---|
其中,在误差函数中,
 error(T) = I_1(\mathbf{p}_i) - I_2(\mathbf{p}_j)
进一步分解为
 I_1(\mathbf{p}_i) - I_2(\mathbf{T p}_i)。
这里,
\mathbf{p}_i
和
\mathbf{p}_j
分别为同一个三维空间中两帧图像中同一三维点的二维投影坐标。

图2直接法的相机姿态估计
Fig. 2 Camera attitude estimation based on direct method

下载: 原图 | 高精图 | 低精图
1.3 关键帧
为了减少运算负担,在单目视觉SLAM系统中普遍采用将视觉信息用于地图创建的过程。具体而言,在选取关键帧时需要满足两个条件:一是确保有足够的图像桢以生成精确的地图;二是控制桢的数量以减少计算的复杂性。其中PTAM(Parallel Tracking and Mapping)[12]通过时间和距离标准来确定关键点,并规定每隔至少20个连续桢提取一个关键点,并要求最近地图点的距离必须超过预设的阈值。
1.4 创建地图
SLAM系统的后端核心功能在于构建全局统一的地图,并通过计算地图点的三维坐标来实现这一目标;当前主流的方法主要包括基于三角量测和逆深度的技术
1.4.1 三角量测(Triangulation)
如图3所示,在给定相机参数以及匹配点在图像平面的具体位置的前提下(参考文献[13]),我们可以通过推导出这些匹配点在三维空间中的坐标。基于空间几何原理可知,在理想情况下(即两幅图像对应的光线均为理想直线),这两条射线能够唯一确定一个三维空间中的具体位置。然而,在实际应用中由于相机的姿态估计不完美以及特征点匹配可能出现噪声或偏差等因素的影响,则需要通过多帧信息进行综合分析以获得较为准确的结果。

图3三角量测
Fig. 3 Triangulation

下载: 原图 | 高精图 | 低精图
1.4.2 逆深度(Inverse Depth)
在视觉深度估算领域中,逆深度被定义为深度值的倒数,在该研究方向中具有重要的应用价值。具体而言,在满足高斯误差分布条件下运用逆深度进行建模能够显著提升扩展卡尔曼滤波的效果的同时还能有效捕捉远处物体的空间特征信息。特别地,在无限远处物体对应的逆深度值将趋近于零这表明此时物体相对于摄像机处于静止状态并位于其视线方向上。此外,在这种表示框架下一个三维空间中的特征点可以通过一个六维向量来完整表征其相对于摄像机的空间位置信息包括摄像机的位置参数、特征点朝向的方向角以及与其相关的深度信息等要素
1.5 地图及相机姿态优化
相机位姿估计的精确度主要取决于地图生成的精度以及先前相机姿态估计的准确性程度较高时
为减少计算负担,在研究领域中已有学者建议专注于局部图像帧与地图点之间的关系进行BA(Bundle Adjustment)方法的研究工作。另外,在实际应用场景中该算法还存在两种不同的扩展形式:一种是基于位姿图优化的方法(如文献[17]所述),另一种则是固定相机姿态后直接优化地图点坐标的结构型BA方法。其中基于位姿图优化的方法将闭环误差平均分配到每个节点上以达到更为合理的解算效果;而结构型BA方法则通过固定各相机的姿态信息使得后续只需对地图点坐标进行求解。
相比于同时估计相机位置与姿态以及地图点坐标的整体优化方案而言,A类方法通过分步估计的方式显著降低了总的计算复杂度。
1.6 闭环检测
闭环检测的目标是确认相机是否返回到之前访问过的位置。由于姿态估计问题和地图创建过程都不可避免地存在误差源,在实际应用中即使经过优化处理后依然存在这些无法完全消除的误差。随着相机运动过程的发展这些由传感器带来的累积性偏差会逐渐积累并最终影响全局定位的精度水平因此在实现全局定位时引入闭环约束能够有效提升优化的效果并减少累积的误差影响
早期阶段的闭环检测主要用于通过随机选取历史图像数据与当前图像进行特征匹配。然而,在系统计算量不断累加的情况下(即逐步积累),这会导致运算效率逐渐降低。
目前主要采用视觉词袋模型(参考文献[18-19])进行特征匹配。该方法基于训练建立的词汇表生成高度特异化的模式,在图像处理中表现出色。然而由于该方法的核心评估标准仅关注图像中是否存在特定特征而不考虑其在空间中的位置及其顺序关系因此具有更强的环境适应能力并能一定程度上优化计算复杂度使其更具竞争力
2 传统单目视觉SLAM分类
传统单目视觉SLAM主要根据处理图像数据的方法可分为基于特征的方法、直接法以及混合半直接法。
2.1 基于特征方法
主要依赖于特征提取技术的单目视觉SLAM算法,在其执行过程中首先需要对图像进行特征识别并建立其相互关系数据。接着通过多视图几何模型构建三维环境模型并确定相机运动参数。该算法框架目前分为两种类型:一种是基于状态估计框架的状态更新机制另一种是基于关键帧优化方案的空间重构策略。
2.1.1 滤波方法
早期研究中,单目视觉SLAM的主要实现方式主要是依靠卡尔曼滤波器(KF)这一技术手段。然而由于KF算法仅适用于线性高斯系统的特性,在实际应用中通常面临被处理对象为非线性和非高斯特性的局限性。针对上述挑战,在此基础上逐步衍生出相应的SLAM算法体系包括基于扩展卡尔曼滤波、基于无迹卡尔曼滤波以及基于粒子滤波的方法框架。
尽管基于滤波器的方法通常面临较高的计算开销,
在定位精度方面存在一定局限性,
对噪声较为敏感,
这使得它们难以在复杂的室外环境中实现可靠的应用。
例如,
Davison等[20]提出的基于扩展卡尔曼滤波器的Monocular SLAM解决方案,
其算法复杂度为O(n2),
仅支持约100个可处理特征,
这限制了其在实际应用中的扩展能力。
2.1.2 关键帧方法
考虑到连续图像帧中存在大量冗余信息

图4 PTAM框架结构
Fig. 4 PTAM frame structure

下载: 原图 | 高精图 | 低精图
根据图4的显示,在获取图像帧之后,在线程层面首先构建包含4层金字塔的图像结构,并利用FAST算法提取关键特征点。随后,在逐步优化的姿态信息基础上完成两次姿态校准过程以提升精度。建图线程设计上具有较强的灵活性,在接收到跟踪线程传来的关键帧后会立即更新当前状态并记录新的定位坐标信息;若未收到新的关键帧数据,则触发全局地图优化处理以确保定位精度。
因为构建图时对实时性要求不高, 因此选择使用计算资源消耗较大但精度较高的BA算法进行优化。然而PTAM系统目前主要适用于具有一定纹理特征的小规模场景, 这些系统通常要求环境处于相对静态状态且不被遮挡, 未考虑全局回路或循环情况, 当目标物体运动速度较快时会导致图像边缘出现模糊现象。
为解决上述问题,Mur-Artal团队[21]成功开发出ORB-SLAM算法。该算法通过词袋模型筛选候选关键帧,并结合闭环检测机制优化运行效率。基于改进的共视图本质图优化方法提升相机位姿估计精度,在室内环境、室外场景以及复杂大场景中表现优异;此外该系统还具备处理快速运动目标的能力,并支持实现闭环控制与重定位功能,并可自动生成初始位置信息。
2.2 直接法
基于特征点方法主要通过提取图像中的特定类型信息来实现目标定位。然而,在实际应用中若仅依赖特征点进行构图与定位操作,则会遗漏图像中包含的直线或曲线边缘信息。这些细节数据往往在建筑环境中占据重要比例。为此提出了直接法这一创新方法:该方法以像素灰度不变性假设为基础,并通过最小化光度误差估计相机运动和空间位置关系,在实际应用中表现出较高的鲁棒性
LSD-SLAM(Large Scale Direct Monocular SLAM)被视为一种直接法的大范围单目SLAM技术。该系统主要包含相机追踪、深度图估计以及地图优化三个核心环节,并通过模块化设计实现了各环节之间的高效协同(如图5所示)。

图5 LSD-SLAM框架结构
Fig. 5 LSD-SLAM frame structure

下载: 原图 | 高精图 | 低精图
如图5所示,在仿真的过程中
基于低纹理区域的稠密地图构建,Concha等[23]提出了一种名为DPPTAM(Dense Piecewise Planar Tracking and Mapping)的方法。该方法假设光度梯度较低的图像区域主要呈现平面特性,并通过将高梯度区域中的3D点与低梯度区域中的3D平面相结合来建模环境空间。此外,在相机参数标定方面,Engel等[24]开发了一种称为Direct Sparse Odometry(DSO)的直接稀疏里程计系统,在该系统中对相机曝光时间、暗角及伽马响应参数进行了精确标定,并在优化过程中动态估算未经过光度标定相机对应的DSO光度参数值。值得注意的是,在这一基础上,Gao等[25]进一步提出了LDSO(Loop Closure Direct Sparse Odometry)算法,并将其扩展至包含闭环检测和位姿图优化在内的SLAM系统中
2.3 混合半直接法
基于以下几种方法需要提取关键点并计算描述符, 该过程耗时较长, 并且难以在低纹理区域或出现特征缺失的情况下应用; 相比之下, 直接法通过像素亮度差估计摄像机的姿态, 虽然不需要进行关键点的计算, 但也对相机的内部参数以及曝光时间较为敏感. 因此, 在综合两者的优点后提出了一种混合半直接的方法.
Forster等[26]开发了半直接视觉里程计(Semidirect vision odometer, SVO),该系统通过精确匹配图像中的特征块来计算出相机的运动参数,并如图6所示展示了其工作原理。

图6 SVO框架结构
Fig. 6 SVO frame structure

下载: 原图 | 高精图 | 低精图
根据图6所示的信息可知, 跟踪线程主要包含基于稀疏模型图像对齐、特征对齐、BA算法以及结构BA四个子步骤, 这些步骤分别负责对关键帧图像与地图点进行优化处理。尽管SVO方法仍然依赖于一致特征, 但该方法采用直接法捕捉姿态信息, 从而避免了特征匹配与外围点的处理过程, 最终降低了计算时间消耗。Lee等[27]提出了一种松耦合半直接单目SLAM系统(Loosely-Coupled Semi-Direct Monocular SLAM, LCSD-SLAM)。该系统由两个功能模块组成: 一部分用于实现系统的主Tracking功能, 另一部分则负责辅助定位与环境理解任务。
图7展示了基于ORB-SLAM改进的双窗口优化框架(DWO-SLAM)[28]。该框架主要包含跟踪子进程和建图子进程:在跟踪子进程中采用特征检测方法进行相机姿态估计,并随后通过直接法优化对准模块以提升精度;而在建图子进程中,则通过最小化光度残差来优化滑动窗口内的活动关键帧及其相关的半密集地图。随后从共同可见性图中检索相邻关键帧对应的外部窗口;接着将该外部窗口与内窗口结合形成双窗口结构,在综合考虑重投影约束以及内部相对姿态约束的基础上实现联合优化以更新相机姿态信息以及基于特征的稀疏地图。

图7 DWO-SLAM框架结构
Fig. 7 DWO-SLAM frame structure

下载: 原图 | 高精图 | 低精图
总结而言,在SLAM的前后端分别采用了直接法与基于特征法的优势,在光照条件发生变化时依然表现出色。
2.4 模型综合分析
表格2和表格3汇总了当前较有代表性的单目视觉SLAM系统,并从实现思路、计算资源利用情况以及优化策略等多个维度对各个模型进行了全面分析。
表2传统单目视觉SLAM综合分析
Table 2 Comprehensive analysis of traditional monocular visual SLAM
| 时间 | 名称 | 线程数 | 实现方法 | 优化方式 | 地图类型 | 闭环检测 | 
|---|---|---|---|---|---|---|
| 2002 | FastSLAM[33] | 单线程 | 基于特征 | PF | 稀疏 | 特征匹配 | 
| 2007 | MonoSLAM[20] | 单线程 | 基于特征 | EKF | 稀疏 | 特征匹配 | 
| 2007 | PTAM[12] | 双线程(跟踪、建图) | 基于特征 | 局部BA、全局BA | 稀疏 | 无 | 
| 2008 | SRUKF-SLAM[34] | 单线程 | 基于特征 | UKF | 稀疏 | 特征匹配 | 
| 2011 | DTAM[10] | 双线程(跟踪、建图) | 直接 | 局部BA、全局BA | 稠密 | 无 | 
| 2014 | LSD-SLAM[11] | 3线程(跟踪、建图、图优化) | 直接 | 运动BA | 半稠密 | FAB-MAP | 
| 2014 | SVO[26] | 双线程(跟踪、建图) | 半直接 | 运动BA、结构BA | 稀疏 | 无 | 
| 2015 | StructSLAM[35] | 单线程 | 基于特征 | EKF | 稀疏 | 无 | 
| 2015 | ORB-SLAM[21] | 3线程(跟踪、建图、闭环检测) | 基于特征 | 运动BA、局部BA、全局BA | 稀疏 | 词袋模型 | 
| 2015 | DPPTAM[23] | 3线程(跟踪、半密度图创建、密度图创建) | 直接 | 运动BA、结构BA | 稠密 | 无 | 
| 2016 | DSO[24] | 单线程 | 直接 | 全局BA | 稀疏 | 无 | 
| 2017 | ORB-SLAM2[36] | 4线程(跟踪、建图、闭环检测、图优化) | 基于特征 | 运动BA、局部BA、全局BA | 稀疏或稠密(RGB-D) | 词袋模型 | 
| 2018 | LDSO[25] | 双线程(DSO、闭环检测) | 直接 | 运动BA、全局BA | 稀疏 | 词袋模型 | 
| 2018 | LCSD-SLAM[27] | 5线程(跟踪、直接法建图、基于特征法建图、闭环检测、图优化) | 半直接 | 运动BA、局部BA、全局BA | 局部半稠密、全局稀疏 | 词袋模型 | 
| 2018 | FDMO[37] | 双线程(跟踪、建图) | 半直接 | 运动BA、结构BA | 稀疏 | 无 | 
| 2019 | DSM[38] | 双线程(跟踪、建图) | 直接 | 全局BA | 稀疏 | 无 | 
| 2019 | SVL-SLAM[29] | 3线程(跟踪、建图、闭环检测) | 半直接 | 运动BA | 稀疏 | 词袋模型 | 
| 2020 | FSD-SLAM[32] | 3线程(跟踪、建图、闭环检测) | 半直接 | 全局BA | 稠密 | 词袋模型 | 
| 2021 | DWO-SLAM[28] | 3线程(跟踪、建图、闭环检测) | 半直接 | 运动BA、局部BA、双窗口BA | 局部半稠密、全局稀疏 | 词袋模型 | 
| 2021 | DO-SLAM[30] | 3线程(跟踪、建图、闭环检测) | 半直接 | 运动BA、局部BA、全局BA | 稀疏 | 词袋模型 | 

下载: 导出CSV
表3传统单目视觉SLAM性能比较
Table 3 Performance comparison of traditional monocular visual SLAM
| 时间 | 名称 | 定位精度 | 定位效率 | 特征缺失鲁棒性 | 快速运动鲁棒性 | 场景变化鲁棒性 | 适应场景 | 
|---|---|---|---|---|---|---|---|
| 2002 | FastSLAM[33] | √ | √ | √ | √√ | √ | 小 | 
| 2007 | MonoSLAM[20] | √ | √ | √ | √√ | √ | 小 | 
| 2007 | PTAM[12] | √√ | √√√ | √ | √√√ | √ | 小 | 
| 2008 | SRUKF-SLAM[34] | √ | √ | √ | √√ | √ | 小 | 
| 2011 | DTAM[10] | √√ | √√ | √√ | √√ | √ | 小 | 
| 2014 | LSD-SLAM[11] | √ | √√ | √√ | √ | √ | 大 | 
| 2014 | SVO[26] | √√√ | √√√ | √√ | √√ | √ | 小 | 
| 2015 | StructSLAM[35] | √√√ | √√ | √ | √√ | √ | 室内大场景 | 
| 2015 | ORB-SLAM[21] | √√√ | √√√ | √ | √√√√ | √ | 大 | 
| 2015 | DPPTAM[23] | √√ | √√ | √√ | √√ | √ | 室内小场景 | 
| 2016 | DSO[24] | √√√ | √√√ | √√ | √√ | √√ | 大 | 
| 2017 | ORB-SLAM2[36] | √√√ | √√√ | √ | √√√√ | √ | 大 | 
| 2018 | LDSO[25] | √√√ | √√√ | √√ | √√ | √√ | 大 | 
| 2018 | LCSD-SLAM[27] | √√√√ | √√√√ | √√ | √√ | √ | 大 | 
| 2018 | FDMO[37] | √√√√ | √√ | √√√ | √√√√ | √ | 大 | 
| 2019 | DSM[38] | √√√ | √√ | √√ | √√ | √√ | 大 | 
| 2019 | SVL-SLAM[29] | √√√ | √√√√ | √√√ | √√√√ | √ | 大 | 
| 2020 | FSD-SLAM[32] | √√√√ | √√√√ | √√√√ | √√√ | √ | 室内大场景 | 
| 2021 | DWO-SLAM[28] | √√√√ | √√ | √√ | √√ | √√√ | 大 | 
| 2021 | DO-SLAM[30] | √√√√ | √√√√ | √√ | √√ | √ | 大 | 

下载: 导出CSV
从实现思路来看,在单目视觉SLAM领域中初期的方法多采用基于特征的方式并发展出了直接法这一分支体系。然而当前研究者们逐渐倾向于采用混合半直接方法这一更为灵活的技术路线。例如通过将SVO算法与ORB算法相结合形成了SVL-SLAM(Semi-direct Visual and Loop Closure Detection SLAM)这一新型方法[29]相比传统的SVO算法该改进型方法能够在关键帧时间段内提取更多特征点同时通过局部映射机制有效提升定位精度;与仅依赖关键帧定位的ORB算法相比则能够充分利用非关键帧数据进一步提高定位效率因此该融合型算法通过合理平衡相机运动与环境变化之间的关系实现了定位速度与定位精度的最佳协调
就 threading 数而言,在 SLAM 系统的发展初期阶段,默认采用单 threading 的架构。伴随着计算机处理能力的提升,在这一技术瓶颈被突破后,默认架构逐渐演进出多 threading 系统。其核心特征在于将定位与地图构建模块化分离:一方面能够维持前端定位的实时性需求;另一方面则能够充分分配时间用于地图的构建与优化。以双 threading 的单目视觉 SLAM 系统 PTAM 为例,在原有 PTAM 基础上增加了闭环检测模块的 ORB-SLAM 功能。随后这一技术框架进一步演进成包含定位、建图、闭环检测三个独立 threading 的 ORB-SLAM2 系统:其中将全局图优化单独设置了第四 threading 任务模块,并显著提升了定位精度水平(优于 ORB-SLAM)。
从优化策略来看,在早期阶段系统主要采用滤波方法进行处理,在当前阶段逐渐转向Bundle Adjustment(BA)方法。研究表明,在相同计算成本的条件下,采用BA方法相比滤波法能够显著提升精度。然而该方案会同时对所有的地图点和相机坐标进行优化运算导致系统的计算负担加重从而降低了实时性能。为了应对这一挑战,Lu团队提出了一个三级并行优化框架不仅减少了运算复杂度还显著提升了系统的运行效率较之于传统的DSO算法表现更为出色。
基于不同地图类型的比较分析可知:特征方法依赖于基于特征点匹配的方法,在图像缺乏特征区域时无法运行,并只能形成较为稀疏的地图。相比之下,直接法能够通过所有像素点的光度一致性实现密集的地图构建(参考文献[10]),或者通过高梯度区域提取来生成稀疏的地图(参考文献[24])。此外,在混合半直接法中,默认的建图策略既能借鉴特征方法以形成稀疏的地图(参考文献[29]),也能采用直接法构建密集的地图(参考文献[32]),甚至可能同时输出两种类型的地理信息(参考文献[27])。其中需要注意的是,在仅有少量关键特征的情况下使用稀疏映射具有较低计算开销且实时性更好;然而这会导致全局覆盖能力不足以及定位精度下降;而密集映射则能够在全局范围内提供完整的地理信息且保持较高的定位精度尽管其计算需求显著增加。
从闭环检测的角度来看,在早期阶段主要是依据当前图像帧与历史图像帧之间的特征匹配情况来判断两者是否存在关联关系;而目前则主要通过评估历史数据之间可能存在关联的概率来进行初步判断。具体而言,在MonoSLAM中通过预测并投影到当前相机估计中的模版块来进行归一化搜索相关执行特征的过程以提高检测效率;而在ORB-SLAM中将其引入闭环检测机制从而显著提升了检测速度与匹配精度;此外未采用闭环检测的传统DSO系统则属于一种纯粹基于视觉信息进行里程计的方法其核心目标仅在于解决相机定位问题;尽管这类系统无法构建完整的全局地图但其定位过程往往具有较快的速度和较高的精度水平。
从定位精度的角度来看,在变量未被确定的情况下滤波法则能有效地完成消元操作而导致误差被传递到下一帧。相比之下直接法则对光照变化以及动态干扰较为敏感但由于其自身的特性具有较高的特征点鲁棒性。而混合半直接法则则综合考虑了两者的优点并展示了良好的性能表现。具体而言DWO-SLAM算法首先通过提取并利用特征点对来进行定位随后再利用基于直接法的优化策略来精确定位相机的位姿。而FDMO算法则能够根据环境变化自动选择适用于当前场景的最佳方法以实现最优的定位效果。
就定位效率而言,在滤波法中存在较高的计算复杂度问题,并且实时性能表现不佳。在直接法中,则表现出较低的定位效率水平,并且这种效果会随着图像分辨率的变化而发生显著变化——当分辨率较低时(即位于较低端),其表现会明显优于较高端的算法;然而需要注意的是,在这种情况下(即分辨率较低时),定位精度反而会受到影响;为了达到最佳效果,在设计系统时需要综合考虑效率与精度之间的权衡;此外,在特征法中,在提取特征点的过程中需要投入一定的时间成本——尽管这种方法能够有效提高系统的稳定性和可靠性;但是由于这种方法通常涉及较复杂的算法运算过程(如基于FAST、ORB等快速匹配算法的应用),因此其总体实现难度相对较高
就其对因特网服务可用性的鲁棒性而言,在传统方法中需要先获取关键数据点(即网络请求),而在实际应用中这些关键数据点可能无法及时获取而导致性能下降。基于全图的方法则能有效利用图像中的全部信息,在一定程度上能够缓解因网络异常导致的数据丢失问题;而混合优化方法则是在传统基于图的方法中融入了基于全图的技术以优化性能。例如,在改进型双目定位系统(FSD-SLAM)中通过加权融合重投影误差和光度误差等技术手段实现了相机姿态的有效估计,在视觉条件差的情况下(如视觉特性和纹理均不足),该系统仍能稳定且精确地完成目标定位任务。
从快速运动鲁棒性来看,在鲁棒运动估计方面系统的性能表现主要受两个因素的影响:第一是所采用的匹配算法在高速运动场景下的抗干扰能力;第二是场景地图扩展效率的高低。基于滤波预测特征点位置并进行主动搜索的方法,在高速运动的情况下往往难以维持良好的鲁棒性表现。ORB-SLAM通过具有旋转不变性的ORB特征描述量以及基于词袋模型的全局特征匹配策略,在面对快速运动场景时仍能保持较好的鲁棒性水平;而FSD-SLAM则通过特征增强后的图像子图提升了特征提取效率,在高速运动中能够更高效地完成特征提取任务;相比之下LSD-SLAM方法假设相机处于平缓运动状态并直接利用前一帧的姿态进行图像配准因此无法有效应对快速运动目标的情景
从场景变化鲁棒性来看,在单目视觉SLAM系统中普遍存在性能瓶颈的现象。这是因为这些系统普遍基于静态不变的假设进行设计与实现,在实际应用中往往难以满足复杂环境的需求。尽管如此,在当前研究中已有部分系统开始考虑动态环境的影响因素。例如,在相机标定方面 DSO 方法提出了精确校准参数包括曝光时间 暗角以及伽马响应等关键指标;而其后继研究者又在此基础上进一步优化了弱纹理场景的表现;目前较为先进的 DWO-SLAM 系统则采用了基于重投影约束和相对姿态约束的多层次优化方案以实现对光照变化的有效适应。
在适应场景方面, 场景适应性通常会受到定位算法及地图尺寸的影响。例如, 如StructSLAM(Building Structure Lines SLAM), 其主要功能是提取房屋建筑中的直线特征; 而DPPTAM则基于同色区域近似平面的假设, 因此这类算法特别适用于室内空间较为规整的情况。此外, MonoSLAM仅保留少量关键地图点, 相比之下, DTAM则要求维护密集的地图数据, 这一特点使其更适合应用于较大规模的空间环境。
3 基于深度学习的单目视觉SLAM
现阶段,深度学习主要融合某个模块以提高系统整体效果[39]。
3.1 深度学习视觉里程计
视觉里程计(Visual Odometry, VO)主要负责相机的姿态估计这一过程,并在单目视觉 SLAM 系统中担任起始环节的角色。基于深度学习的方法在实现时不需要执行繁琐的特征提取与几何计算, 因此相关模型架构因此更加简洁直观。当前研究中, 深度学习驱动的 VO 方法主要按照融合方式划分成两类: 混合型和全连接型. 而基于端到端架构设计的学习框架在应用上更为复杂.
3.1.1 混合法VO
混合法视觉里程计(VIO)通过替代传统模型中的特定组件来引入深度学习技术。基于文献[40]中所提出的深度预测模型框架,在实际应用中可以直接部署该模型以获得估计结果,并有效解决了地图尺度相关的限制问题。Barnes等研究者将其预测的深度图与临时遮罩整合到VIO系统中以增强鲁棒性表现。D3VO(Deep Depth, Deep Pose and Deep Uncertainty for Visual Odometry)框架则融合了预测深度、位姿及其不确定性三者信息,在构建视觉里程计方法时实现了更好的前端追踪与后端优化效果。经过实验验证,在通用基准测试集上该方法的性能超越了DSO、ORB-SLAM以及VINS-Mono等传统VIO/VIO系统的现有表现
3.1.2 有监督学习的端到端VO
有监督学习的核心理念在于利用标注数据集训练神经网络以获取相机运动状态信息的网络架构,并据此实现定位功能。Wang等[43]提出的DeepVO(Deep Learning Visual Odometry)算法在监督式SLAM领域具有开创性贡献。该网络不仅能够借助卷积神经网络(Convolutional Neural Networks, CNN)提取图像特征信息,并且能够通过深度递归神经网络架构隐式建模图像间的运动关系及内在联系。基于各帧之间的相对位姿建模特性可知该方法具备良好的泛化性能。
为了捕捉更加多样化的场景细节信息,Ummenhofer等[40]创新性地提出了基于深度与运动融合的DeMoN(Depth and Motion Network)框架。该系统通过一套编码器-解码器网络体系架构,在同一过程中能够同步估计相机运动参数、深度信息、平面几何特征以及光流场。针对尺度漂移现象的抑制问题,在此基础上Frost等[44]提出了改进方案:即通过卷积神经网络模型对连续视频帧序列进行速度估计,并将这些速度信息作为辅助项融入并Bundle Adjustment框架中进行优化处理。
3.1.3 无监督学习的端到端VO
无监督学习无需人工标注数据即可实施,在提升模型适应性和泛化能力方面展现出良好的效果。该方法主要应用于深度估计领域。具体而言,在UnDeepVO系统(Unsupervised Deep Learning Visual Odometry)[45]中通过空间与时间几何约束实现无监督学习目标。为了恢复绝对尺度,在网络训练阶段主要采用立体图像作为训练样本;而在测试阶段利用连续单目图像进行定位。
针对动态场景带来的影响, GeoNet(Geometric Consistency Enforcement Network)[46]将整个学习过程划分为两部分:重建模块和定位模块。其中, 用于估计静态场景几何的刚性结构重构器模块, 而用于捕捉动态对象的非刚性运动定位器模块分别负责不同的功能。Li等[47]提出了一种高效且紧凑的帧间相关性表示方法, 并通过整合序列信息实现了数据更新, 这一创新方法使得深度图构建更加精确。此外, 为了弥补以往方法在像素级别造成的损失, 同时引入判别器网络来评估生成图像的质量, 并通过高水平的结构感知技术来弥补这一缺陷。
3.2 深度学习创建地图
基于场景表示方法的具体而言,深度学习创建地图的方法可以划分为深度图法、体素法、点云法和网格法。
3.2.1 深度图法
传统SLAM系统中已有学者采用密集深度图表征场景几何特征,并最初基于单幅图像实现深度估计技术。研究者Eigen等[48]提出了一种双尺度网络架构,在图像深度预测中采用了尺度不变均方误差作为监督信号。随后,Godard等[49]提出了一种基于光度一致性损失的无监督神经模型训练方法。Tateno等[50]则将CNN-SLAM技术应用于单目SLAM框架中,并通过将单个图像学习得到的深度信息转化为统一尺度下的深度地图来提升姿态估计与场景重建精度。
3.2.2 体素法
体素分割法将空间对空间进行划分,并依据特定规则定位物体表面。研究者Choy等人(参考文献51)基于深度残差网络模型对体素进行预测,并采用二分类交叉熵损失函数作为优化目标。该网络架构能够处理单视角图像或多个视角图像输入。然而该方法的主要缺陷在于随着分辨率的提升,计算复杂度显著增加。
3.2.3 点云法
本段内容共分为两段
3.2.4 网格法
该方法利用网格公式对三维模型的基础结构进行编码以捕获表面特征。Mukasa等[53]将SLAM获取到的稀疏特征与CNN生成的密集深度图相结合,并不断更新初始3D网格以实现高效的三维重建过程。同时,为了实现高效的计算性能与信息融合能力,Bloesch等[54]采用2.5维空间来表示场景几何体的关键信息。
3.3 深度学习闭环检测
传统的闭环检测方法依赖于手动提取的稀疏特性和高密度像素区域进行匹配;然而,在实际应用中,光照条件、天气状况以及观察者位置的变化等因素都会增加检测难度。为了提高鲁棒性,在文献中常用预训练模型识别路标区域,并通过卷积神经网络(CNN)对这些区域进行特征提取。
基于深度神经网络提取的高级表示特性,在面对视点变化及不同条件时表现出更强的鲁棒性。该系统旨在优化整体性能以提升准确率与效率。其中Yi等[56]提出了一种基于BoCNF(Bag of ConvNet Features)的特征匹配方法。该方法主要依赖于视觉词袋模型构建视觉词汇表,并通过哈希随机投影降维处理其对应的视觉特征及其词汇表。这种处理方式不仅有助于提升算法识别精度和实时响应速度,并且在保持系统性能的同时实现了资源占用效率的最大化优化。与此同时Memon等[57]则提出了与传统BoW(Bag of Words)不同的超级字典方案采用深度自编码器提取更为紧凑的数据表示并通过无监督学习方式实现场景压缩从而显著降低了内存占用需求而无需牺牲系统的识别性能
3.4 深度学习与传统方法比较
表3对传统视觉SLAM方法与深度学习SLAM系统的性能进行对比分析。从理论角度来看, 传统单目视觉SLAM系统已形成了完整的理论框架, 每个步骤均配有相应的理论支撑, 并采用规范化的数学表达式。系统采用了模块化设计思路, 详细阐述了特征提取、定位、建图、闭环检测及优化等关键模块的功能与作用。然而,在实际应用中, 传统的视觉SLAM方法通常仅针对特定类型的数据集进行设计, 其泛化能力相对有限, 在无法提取明显特征区域的表现较为不足。
基于深度学习的单目视觉SLAM算法流程具有相对简单的结构,并且能够实现特征提取和分类器训练的同步进行。在大量数据集的支持下,在使用更多样化的数据时,在使用更大规模的数据时,在大量数据集的支持下(注:此处可能需要进一步优化),该算法的整体性能表现会得到显著提升。该算法不仅能够有效识别图像中的关键特征点,并且还具备识别图像深层特性的能力;然而,在可解释性方面存在不足。此外,在计算资源需求方面也存在一定的挑战:其训练周期相较于其他方法较长,并且硬件设备性能的影响直接体现在模型开发所需的时间上。
表3传统SLAM和深度学习SLAM比较
Table 3 Comparison of traditional SLAM and deep learning SLAM
| 项目 | 传统方法 | 深度学习方法 | 
|---|---|---|
| 设计流程 | 特征设计与分类器训练分离 | 同步完成特征设计与分类器训练 | 
| 设计方法 | 数学公式逐步推导 | 损失函数驱动参数优化 | 
| 模型训练周期 | 训练数据少,周期短 | 训练数据多,周期长 | 
| 模型泛化能力 | 针对小规模数据集,参数少,泛化能力弱 | 大规模数据训练,参数多,泛化能力强 | 
| 模型鲁棒性 | 鲁棒性弱 | 鲁棒性强 | 
| 模型物理含义 | 结构直观,含义明确 | 参数复杂,难以解释 | 

下载: 导出CSV
4 单目视觉SLAM发展趋势
4.1 融合线、面特征
目前而言,在单目视觉SLAM中主要采用点特征进行匹配与优化。然而,在光照条件变化显著或场景纹理不足的情况下(即图像细节不足时),由于描述符的特性可能受到影响而导致定位精度下降。
此外,值得注意的是,在大多数情况下,点算法呈现出稀疏性特点,在建图结果中对环境结构进行识别时会面临较大的难度。然而,在人造环境及物体中常见的几何特征包括线和平面等属性。相比之下,相较于点而言,线与面更能适应复杂多变的环境特性。由此可见,在未来研究领域中应当更加重视对线与面这一重要几何特性的关注和应用。
4.2 辅助人工标记
在SLAM系统设计中,默认假设地图环境不受人工干预影响,并主要依赖于自然特征提取。然而,在某些特殊场景中,自然环境较为复杂多变。通过引入人工标记符号,则有助于简化系统设计流程。其中基准符号的标准格式通常包括外部黑色边框与内部编码信息。每个符号均具有唯一的标识码如图8所示,则列举了四种常见的基准符号类型


下载: | 高精图 | 低精图
图8基准标记
Fig. 8Reference mark
基于实物尺寸的平面标记可通过一张图片估计相机的姿态,并可创建任意数量的不同标记。此外,在对尺度与视角变化具有更强的不变性的情况下(即相比特征点而言),人工标注的成本显著降低。
4.3 适应动态环境
目前,在视觉SLAM领域中通常假设环境是静态的;然而,在现实生活中场景往往呈现动态特征;这会导致系统整体精度显著下降;随着深度学习技术的广泛应用;研究者们开始探索如何利用物体检测与语义分割提供的信息来缓解动态物体带来的影响;例如Li等[59]结合几何模型和语义分割;提出了基于移动概率传播模型的方法;以降低由于动态与静态关键点误分类所带来的概率提升。
5 结语
本文首先对单目视觉SLAM的基础理论及关键技术展开深入阐述;接着采用多维度对比分析的方法对各类单目视觉SLAM系统架构进行详细探讨;继而深入探讨深度学习技术在单目视觉SLAM领域的具体应用及其优势;最后对未来该领域的发展趋势及潜在研究方向作出展望。
当前阶段而言,在SLAM系统领域对精度要求不断提高的同时也面临着更高的实时性和更强的操作能力需求。随着深度学习技术的持续进步,在深度学习技术不断进步的推动下,基于单目视觉实现的SLAM系统将逐步取代现有的技术方案,并最终形成一个更为精确且完整的系统架构。
