基于点线特征的帧间匹配流视觉里程计研究
2020-06-22钱潘优甘屹
钱潘优 甘屹
摘 要:针对机器人快速运动时视觉里程计精度严重下降问题,提出基于点线特征的帧间匹配流视觉里程计(Point and line of frame math,PL-FM)算法,以提高机器人在快速运动情形下的定位精度。PL-FM算法通过对图像的预处理去噪,在特征点提取时引入灰度值权重,从而降低快速运动时光照的影响。将特征点匹配问题转化为向量计算,从而减少匹配时间,在帧间匹配流则采用衰减关键帧计算位姿,从而提高关键帧利用率。通过4组实验对比,证明PL-FM算法误差精度提高70%,时间效率提高75%,保证了移动机器人的定位实时性,实现了低误匹配率及较高的定位精度。
关键词:预处理去噪;灰度值权重;帧间匹配流
DOI:10. 11907/rjdk. 192559 开放科学(资源服务)標识码(OSID):
中图分类号:TP301 文献标识码:A 文章编号:1672-7800(2020)005-0001-08
0 引言
在移动机器人定位领域,提升视觉里程计的定位精度是研究热点[1-6]。通常,相机安装于机器人上,视觉里程计指通过相机输出的连续图像初步估计相机的位姿和局部地图,又称为前端[7]。在计算位姿过程中,有基于特征法和直接法的前端。特征法又分为基于特征点和特征线的方法。特征点法有提取特征点冗余度高和计算量大的缺点,特征线相比特征点法信息量更丰富,室内环境中特征线数量一般也多于特征点数量,特征线对光照强弱的影响也更鲁棒[8]。直接法是通过最小化光度误差求取相机位姿,实时性较高,但对光照敏感,应用局限于室内环境。本文对快速运动下提高室内机器人前端定位精度进行研究。前端定位精度受许多因素影响,诸如环境中光照强弱、移动机器人运动快慢、环境中纹理强弱、视频流中突然出现动态物体对相机进行遮挡、特征点误匹配、位姿漂移、位姿重定位等。文献[9]使用LSD(Line Segment Detector)进行特征线提取与匹配并计算位姿,但图像遇到遮挡、局部模糊等情况时,提取到的特征线被割裂且不连续,严重影响定位精度;文献[10]使用直接法结合轮式里程计计算位姿,避免了特征点提取,不会遭遇特征点过少问题。但是直接法适用于帧间较小运动情况,且对光照机极为敏感;文献[11]提出补充区域特征点计算位姿,但增加了计算量,系统实时性不强;文献[12]使用深度图中点云数据直接求取机器人位姿,避免了特征点提取步骤,但点云规模通常非常大,不但增加了存储量,且计算量大,实时性低;文献[13]提出点线面联合的视觉里程计系统,但提取的是SIFT特征,计算量过大。在快速运动场景下提升视觉里程计定位精度方法上,文献[9]没有发挥出特征线比特征点更鲁棒的特性,所以定位精度不高;文献[10]使用直接法计算定位,只能在室内使用,局限性较大;文献[10]-[13]虽然在一定程度上提升了定位精度,但存在计算量过大问题。
本文提出基于点线特征的帧间匹配流视觉里程计(Point and line of frame math,PL-FM)算法。首先采用邻域半径多尺度RANSAC直线拟合算法提取特征线,从不同簇中以斜率的变化迭代出最优直线,避免了文献[9]中直线割裂问题,以提高特征线提取精度;然后采用k-余弦灰度值加权平均多尺度空间曲率特征点提取算法,从特征线中提取特征点,由于机器人快速运动,光照变化的影响会变得显著,故引入灰度值权重的概念解决文献[10]中光照变化在机器人快速运动中的影响;使用余弦描述子和多尺度协方差描述子进行特征点匹配,余弦描述子和协方差描述子将许多特征点的同时匹配问题映射为向量计算,相比文献[11]中的补充特征点区域和文献[12]中的点云直接匹配,有效减少了计算量;最后采用帧间匹配流算法,从不断衰减的关键帧中迭代出最优关键帧流,用以计算最优位姿。
1 前端预处理
前端预处理分为RGB图像和点云预处理。从相机直接获取的每一帧图像都包含大量噪声,必须先进行图像预处理。预处理可以有效消除图像中无关信息,增强有关信息可检测性,从而为后续的特征提取、位姿求取提供基础。
本文将RGB图像预处理分为图像滤波和图像增强两步。设[f]是原相机提取的RGB图像,[f]为滤波后的图像,(x,y)为图像中某像素的坐标,[G(x,y)]为高斯核函数,[A]为高斯核函数系数,使用公式(1)进行滤波。
点云相比RGB图像更容易受到噪声影响,由于环境因素的影响,有些像素深度值稳定性差,通常有3类情况:①像素处于物体边缘处;②被孤立的像素;③深度值超出量程的像素。针对这3种情况,首先剔除边缘点和孤立点,其次限定像素深度值的选取范围在0.6m~4.6m之间,最后使用[5×5]高斯核滤波器平滑深度图像。
2 点、特征线提取与匹配
2.1 特征线提取
对比文献[9]中LSD算法,经典随机抽样一致性算法 (RANSAC)[14]适用于在含有大量噪声的数据中提取特定模型,面对图像像素灰度值突变时提取出的直线不会断开,能够生成连续完整的特征线。由于机器人运动快速,图像纹理变化丰富时使用经典RANSAC算法提取特征线,会造成迭代周期较长或结果发散,原因是算法搜索整个图像区域时间代价高,碰到异常像素值容易引起结果发散。
针对以上问题,PL-FM算法采用邻域半径多尺度RANSAC直线拟合算法(multi-scale RANSAC neighborhood radius straight line fitting algorithm,MRNRS-LFA)用于机器人快速运动时的特征线提取。先使用聚类方法减少图像搜索区域,再使用斜率为依据提取特征线,避免了像素异常值干扰。该算法对光照不敏感,具有存储量小和计算量小的特点。将公式(3)中输出的图像[f]输入MRNRS-LFA,经过迭代得到特征线[lrn],具体步骤如下:①以邻域半径为尺度参数[ri],使用密度聚类算法将已有点集[Γ]划分为一个个簇[Θn];②随机抽取某个簇[Θn],在簇[Θn]中使用经典RANSAC算法拟合出直线[lri],并求取直线[lri]的斜率[ki];③遍历每个簇中的直线斜率[ki],如果两个簇中直线斜率之差小于阈值[ψ],则标记这两条直线属于同一条直线,并加入标记池[Ω]中,不同范围斜率直线加入对应的标记池([Ω1,Ω2,Ωn])中,并记录每个标记池中的直线数量[n];④循环步骤②、步骤③,将各个标记池中的直线进行拼接形成完整的最终特征线[lrn],取[n]最大的那个标记池,输出此标记池中的特征线[lrn]。