基于滑窗非线性优化的双目视觉SLAM算法

2020-06-18 02:02:18毛家宁赵龙
应用科技 2020年1期
关键词:关键帧边缘化双目

毛家宁,赵龙

北京航空航天大学 自动化科学与电气工程学院,北京 100191

视觉SLAM(simultaneous localization and mapping, SLAM)是指移动载体在未知环境中,通过获取自身携带的视觉传感器信息,创建与环境一致的地图,同时确定自身在地图中的位置[1-3]。该技术不仅在机器人导航、任务规划和远程操作等领域具有重要研究意义,也在计算机游戏、虚拟现实和增强现实等领域具有广阔的应用前景[4-7]。研究视觉SLAM问题常用的相机主要有深度相机[8]、单目相机[9]和双目相机[10],其中深度相机受光照条件影响苛刻,难以在户外大场景中应用;单目相机无法恢复尺度信息,应用价值有限;双目相机可计算像素深度,因此在学术和工业领域得到了广泛应用。

视觉SLAM可通过是否使用图像特征分为特征法和直接法两类[11],且上述2种方法在实际应用中各有优劣。特征法[12-13]通过匹配图像特征,构建相邻帧之间的对应关系,并通过最小化重投影误差(re-projection error)对相机运动和地图结构进行优化。基于特征法的视觉SLAM系统鲁棒性强,即使在较大帧间运动时也可正常工作;但特征匹配操作需消耗大量时间,且特征法仅针对图像中少量特征点进行运算,忽略了其他像素信息,无法实现稠密建图。直接法[14-15]仅考虑像素灰度信息,通过最小化光度误差(photometricerror)恢复相机运动和地图结构。基于直接法的视觉SLAM系统无需进行特征匹配操作,计算效率高,可使用图像中的所有像素信息进行稠密或半稠密建图;但直接法基于灰度不变假设,鲁棒性较差,且稠密或半稠密建图需对大量像素进行运算,CPU无法实时运行,需借助GPU加速实现。

本文以设计高精度、高适应性的双目视觉SLAM系统为目的,选择基于特征法的双目视觉SLAM系统作为研究对象。在众多基于特征法的双目视觉SLAM系统中,双目ORB-SLAM[16]是目前最完善易用的实时视觉SLAM系统之一[2]。然而,双目ORB-SLAM算法跟踪模块仅解算最新一帧图像对应的状态量,且精度有限,需通过回环检测模块对其进行修正。若实际运动不包含回环路径,状态估计结果将产生漂移,且随系统运行时间缓慢增大。本文对双目ORB-SLAM算法进行了改进,提出了一种基于滑窗非线性优化的双目视觉SLAM算法,通过引入滑窗思想,解算最新多帧图像对应的系统状态,同时采用了边缘化策略将其余状态量转换为先验测量信息,从而在保证算法实时性的基础上提高了不包含回环路径时系统的精确性。

1 算法框架

本文算法运行原理图如图1所示,主要分为3个并行线程:1) 特征提取和跟踪线程,主要负责提取和匹配图像特征,如图1中红框部分所示;2) 状态量估计线程,主要负责视觉特征点重投影误差计算,状态量非线性优化以及边缘化处理,如图1中蓝框部分所示;3) 建图线程,主要负责采用线性三角化和光束平差优化构建增量式地图,如图1中绿框部分所示。

2 图像特征跟踪算法

双目视觉SLAM需对左右目图像以及相邻帧图像进行特征点检测与跟踪,由于图像间畸变微小,本文采用导向性FAST特征加旋转BRIEF描述子(oriented FAST and rotated BRIEF, ORB)[17]特征实现特征跟踪,结果如图2所示。

本文图像特征跟踪具体实现步骤如下:首先,以原始图像为基准构建尺度因子为1.2的8层图像金字塔,在金字塔各层图像上提取基于加速分割测试的特征(features from accelerated sagment test, FAST)[18];其次,计算各特征点的方向,构建ORB特征描述子;最后,将左右目图像与相邻帧图像进行匹配,构建特征点间的匹配对应关系。

图2 左右目以及前后帧图像特征跟踪效果

3 滑窗双目视觉SLAM系统状态估计

基于特征点的SLAM算法通常把状态估计问题构建为以视觉特征点重投影误差为代价函数的非线性优化模型,通过引入滑窗思想,本文构建了新的代价函数,并采用高斯牛顿法迭代地求解最优的状态变量。如图3所示,滑窗双目视觉SLAM系统代价函数可表示为

图3 滑窗双目视觉SLAM状态估计示意

3.1 视觉特征点重投影误差模型

图4 视觉特征点重投影误差模型示意

3.2 状态量边缘化

在视觉SLAM系统中,随着运行时间推移,由视觉特征点三维坐标与相机位姿构成的状态变量数目将显著增加,算法复杂度将随状态量数目增加而增大。如果求解全状态SLAM问题将无法满足实时性需求;如果仅求解最新一帧图像对应的状态量将忽略各状态量间的关联,显著降低了SLAM系统的精度。本文引入了滑窗思想,有效限制了待求解状态量数目,采用状态量边缘化策略,且将其余状态量转换为待求解状态量的先验观测信息,有效实现了算法复杂度和精确性间的平衡。

3.2.1 边缘化原理

采用高斯牛顿法求解状态增量的公式为

采用舒尔补(schur complement)[19]原理简化式(2),得

3.2.2 边缘化在滑窗双目视觉SLAM中的应用

固定滑窗内图像帧数目为n,本文边缘化策略的如下:如果滑窗内第n-1帧为关键帧,将边缘化滑窗内第1个关键帧对应状态量及与其相关的视觉测量;如果第n-1帧为非关键帧,将直接删除第n-1帧对应状态量及与其相关的视觉测量,此时采用了删除策略,并未进行边缘化处理,其目的是为了保持滑窗内系统的稀疏性。采用何种策略取决于滑窗内第n-1帧是否为关键帧,如满足下述条件之一即为关键帧:

1) 第n-1帧跟踪到的特征点数目大于60个;

2) 跟踪到的特征点中50%为未知三维坐标;

3) 地图构建线程处于空闲状态。

4 滑窗双目视觉SLAM系统地图构建

视觉SLAM系统需根据相机运动状态以及观测到的特征点信息构建增量式地图。由于建图线程不受相机帧率限制,本文仅选用关键帧图像观测到的特征点构建地图。当滑窗内倒数第一帧图像为关键帧时,对该帧图像中未知三维坐标的匹配点,采用线性三角化方法,进行三维重建。记特征点在参考帧相机坐标系中的齐次坐标可得

式中:分别为当前帧相机坐标系到参考帧相机坐标系的旋转矩阵和平移向量分别为特征点在当前帧和参考帧像素坐标系中的齐次坐标;表示相机的逆投影变换,即

5 实验测试与结果分析

选用欧洲机器人技术挑战赛(european robotics challenge, EuRoC)公开数据集[21]中的MH_05_difficult数据文件,将本文算法和双目ORB-SLAM进行对比测试,评估本文算法的精确性和有效性,其中本文算法滑窗内图像帧数目设为6帧,算法运行平台为配备Intel Core i7处理器,内存为8 GB的笔记本电脑。实验测试结果如图5~12所示,实验结果包括轨迹曲线、三维地图、位置绝对误差分量和姿态绝对误差分量;位置绝对误差和姿态绝对误差的统计结果如表1所示。

图5 运动轨迹

图6 稀疏三维地图

图7 横滚角绝对误差

图8 俯仰角绝对误差

图9 航向角绝对误差

图10 x轴位置绝对误差

图11 y轴位置绝对误差

图12 z轴位置绝对误差

从图5中可以看出,双目ORB-SLAM和本文算法都能有效估计载体位姿,且不发生显著漂移。从表1中可以看出,双目ORB-SLAM和本文算法的位置均方根误差分别为0.269 331和0.175 442 m,姿态均方根误差为1.591 809°和0.814 265°。由此可见,本文算法明显优于双目ORB-SLAM算法,其原因在于双目ORB-SLAM算法跟踪模块仅解算最新一帧图像对应的状态量,且精度有限;而本文通过引入滑窗思想,解算最新多帧图像对应的系统状态,同时采用了边缘化策略将其余状态量转换为先验测量信息,从而在保证算法实时性的基础上提高了系统的精确性。

表1 位姿误差统计结果

6 结论

本文提出了一种基于滑窗非线性优化的双目视觉SLAM算法,主要包括:

1)在双目ORB-SLAM算法框架基础上,引入了滑窗思想,解算最新多帧图像对应的状态。

2)采用了边缘化策略将其余状态量转换为先验测量信息,从而保证了算法的精确性和实时性。

3)本文通过公开数据集测试实验,验证了算法的优越性。然而,本文双目视觉SLAM算法仅在PC(personal computer)端实现了实时定位与建图功能,未来可以考虑简化算法,将其移植到嵌入式系统或移动端应用中。

猜你喜欢
关键帧边缘化双目
基于双目测距的卡尔曼滤波船舶轨迹跟踪
电子制作(2019年20期)2019-12-04 03:51:38
基于改进关键帧选择的RGB-D SLAM算法
被边缘化的节能司?
能源(2016年2期)2016-12-01 05:10:26
关于文学边缘化的不同看法
文学自由谈(2016年3期)2016-06-15 13:00:51
基于相关系数的道路监控视频关键帧提取算法
基于双目视觉图像的长度测量方法
基于聚散熵及运动目标检测的监控视频关键帧提取
论“关键帧”在动画制作中的作用
农民工陷于“双重边缘化”困境
基于双目视觉的接触线几何参数测量方法
机械与电子(2014年2期)2014-02-28 02:07:46