基于稀疏光流法的改进ORB特征匹配算法*
2021-12-29黄卫华何佳乐
陶 卓,黄卫华,b,c,章 政,b,c,姚 艺,何佳乐
(武汉科技大学 a.机器人与智能系统研究院;b.冶金自动化与检测技术教育部工程研究中心;c.信息科学与工程学院,武汉 430081)
0 引言
视觉同时定位与地图构建(Simultaneous Localization And Mapping,SLAM)是实现无人机自主定位与导航的关键技术之一,其工作原理是通过跟踪地图中的关键帧及其特征点建立地图[1]。由于受到机载图像处理模块性能的限制,基于视觉SLAM的无人机系统对图像匹配算法的复杂性、实时性以及鲁棒性等方面提出了更高要求[2]。
2011年Rublee E等[3]提出了一种定向二进制简单描述(Oriented FAST and Rotated BRIEF,ORB)算法。相比于常用的尺寸不变特征变换(Scale-Invariant Feature Transform,SIFT)算法和(Speeded Up Robust Features,SURF)算法,ORB算法具有运算速度快、计算量低等优点。但是,由于ORB算法提取的图像特征点不具备尺度不变性,易产生图像匹配精度低、特征点提取鲁棒性差等缺点[4]。齐乃新等[5]将光流信息引入ORB算法中,采用多尺度分层跟踪的方法对前后帧图像进行关联,将数据关联的精度提高到了亚像素级。郝志洋等[6]针对ORB算法缺失尺度不变性问题,将具有尺度不变特性特点的SURF算法与ORB算法相结合,通过渐近样本一致性(Progressive Sampling Consensus,PROSAC)算法剔除误匹配点,由此提高匹配精度。於小杰等[7]利用金字塔估计下一帧点集坐标,采用快速最近邻逼近搜索匹配规则和前后双向双追踪策略进行精度匹配,提高算法实时性和匹配精度。
稀疏光流法常用于求解空间运动物体在观察成像平面上的像素运动的瞬时速度,是一种计算速度快、频率高的算法,广泛应用于基于视觉的无人机实时定位[8]。考虑到无人机运动、机载摄像头图像采集效果、信号传输以及环境变化等因素,本文将稀疏光流法引入机载视觉获取图像的ORB特征点匹配算法中,达到提高图像特征点的检测速度、匹配精度以及鲁棒性的目的。
1 改进的ORB特征匹配算法设计
设无人机采集的第k-1时刻图像和第k时刻图像分别为图像A、图像B,其中k≥1。本文所设计的一种改进的ORB特征匹配算法结构如图1所示。
图1 改进ORB算法流程
主要包括3个部分:
(1)图像预处理。考虑到机载摄像头所采集图像易受无人机运动的影响,从而导致图像存在噪声的问题,在进行图像匹配之前,采用高斯滤波对无人机采集的图像信息进行平滑处理。
(2)特征点提取。采用FAST算法检测特征点。考虑到FAST算法提取的特征点聚集度较高,易形成特征块,采用Harris算子剔除特征点中伪角点,提高图像特征点的质量。
(3)特征点匹配。为了有效解决传统ORB依靠暴力匹配法导致匹配算法计算量较大的问题,将K-means++算法、稀疏光流法与ORB特征匹配算法相结合,并采用RANSAC算法对所得到的匹配结果进行优化,提高图像的匹配效率和精度。
2 特征提取
2.1 FAST特征点提取
一般而言,ORB算法常采用FAST算法实现特征点的快速检测[9]。FAST算法根据图像像素的亮度检测角点,它是一种快速的角点提取算法。
将预处理后的图像A转化为灰度图像,从中选取一个像素点为P,亮度为IP。以P点为圆心,在半径为3个像素的圆上提取16个像素点,亮度为Ii,i=1,2,…,16。设阈值为T,若圆周上有连续N个点的亮度满足:
|Ii-IP|>T,i=1,2,…,N
(1)
则点P为FAST角点,由文献[10]可知,当N=12时,图像特征点的提取效果较好。
根据式(1)对预处理后图像A的像素点进行遍历检测。由于阈值T的选取具有不确定性,会导致检测出的角点相对集中在特征丰富的区域,从而造成伪角点和真实角点聚集一起形成角点聚簇的现象,并且伪角点对后续的特征点匹配造成干扰,影响匹配精度。因此,本文采用Harris算子[11]辨别伪角点,即利用Harris算子对式(1)遍历的特征点结果进行优化,由此得到图像A的较精确的特征点集,记为PA。
2.2 生成特征描述子
一般而言,ORB常采用二进制特征描述符BRIEF描述子[12]作为特征描述子。BRIEF描述子属于二进制描述算法,即用0和1描述特征,二值化分段函数τ定义为:
(2)
式中,I(x)和I(y)分别是图像I中像素点x和y的像素灰度值。
以PA中一点pa为例说明特征点匹配的过程。以特征点pa为中心,设S为半径,生成领域范围为S×S的窗口。一般而言,在窗口内常随机选取对像素点,记为(xi,yi),1≤i≤128。对每对像素点的灰度值比较,由式(2)生成的二值化值构成一个128维二进制特征描述符f128(A),即为pa的ORB特征。
f128(A)=∑1≤i≤1282i-1τ(A;xi,yi)
(3)
3 特征点匹配
3.1 基于K-means++的特征点聚类
特征匹配是无人机定位的关键。一般而言,ORB常采用暴力匹配算法[13]进行两张图片的特征点匹配,即对每个特征点测量与所有的待匹配的特征点描述子的距离(汉明距离),排序后取最近的一个作为匹配点。
设图像B的特征点集为PB,Pak为特征点pa的第k维特征向量,Pjk为图像B中特征点Pj(Pj∈PB)的第k维特征向量。由式(3)可定义两个特征点之间的汉明距离Daj为:
(4)
当Daj的值越小则说明2个特征越相似,保留距离最近的特征点作为pa的匹配特征点。
考虑到随着无人机的移动,机载摄像头采集的图像背景具有复杂性和不规则性,采用遍历的特征匹配方式易产生计算量大且耗时较长等问题。鉴于K-means++算法能有效地选取初始聚类中心特点,本文采用K-means++算法对特征点集PA进行聚类分析,从而减少暴力匹配的数量和匹配范围,实现加快特征点匹配速度的目的。
从PA中随机选取一个特征点作为初始聚类中心Pc1。遍历PA中每个特征点x,基于式(4)计算其与当前已有聚类中心之间的最短汉明距离。设特征点初始聚类中心点集为PC={Pc1},d(x,Pc1)为特征点与聚类中心点之间的距离,则每个特征点x被选为下一个聚类中心的概率p(x)为:
(5)
设x*为最大概率值对应的特征点,则有:
(6)
由此可得,特征点初始聚类中心点集PC为:
PC=PC∪{x*}
(7)
重复计算式(5)和式(6)直到选择出共K个聚类中心。在此基础上,由式(4)计算特征点与中心点距离,将所有的特征点划分到距离最近的一个聚类中,计算每个聚类的平均值作为新的中心点,迭代直到K个聚类中心点不再发生变化,记录并存储分类结果为classi(Pci,Pi,j)A(i=1,2,…,K),其中,Pci为图像A每个聚类的中心点,Pi,j为每个类内的特征点,j为每个分类中特征点数量,与i相关。
3.2 基于稀疏光流法的特征点匹配
将稀疏光流法引入无人机的图像特征匹配过程。采用稀疏光流法对特征点跟踪,估计出特征点在待匹配图像中的二维坐标位置,剔除偏离聚类中心较远的特征点匹配对,由此提高了匹配精度的同时保证了算法的实时性。
设t时刻位于(x,y)处的像素为I(x,y,t),在dt时刻后,特征点运动到(x+dx,y+dy)处,基于稀疏光流法的灰度值不变原则,有:
I(x,y,t)=I(x+dx,y+dy,t+dt)
(8)
采用泰勒级数将式(8)进行展开,保留其一阶项,可得:
(9)
由此可得:
(10)
(11)
(12)
对式(12)求导,可得:
(13)
将式(9)和式(11)带入式(13)中,并进行泰勒级数展开,保留前一项可得:
(14)
简化后则有:
(15)
令▽I=[IxIy],代入式(15)中可得:
(16)
(17)
vflow=-bG-1
(18)
|da1-db1|<Δ
(19)
时,Pa1和Pb1纳入为候选的匹配点对。
4 改进ORB特征匹配算法实现步骤
综上所述,本文所设计的基于稀疏光流法的改进ORB特征匹配算法步骤如下:
步骤1:无人机在飞行过程中,对机载摄像头采集的相邻帧图像A和B进行高斯滤波后,再进行ORB特征提取,并由Harris算法剔除后得到对应的特征点。
步骤2:基于K-means++聚类算法,由式(5)~式(7)对图像中特征点集聚类,得到图像A的K个的聚类中心以及分类特征点信息。
步骤3:基于暴力匹配算法对图像A的K个聚类中心与图像B匹配,得到图像B的K个聚类中心点。
步骤4:由式(12)构建图像A中除聚类中心点之外的特征点的最小化函数ε(d),由式(18)求得速度矢量vflow与离散采样时间得到光流向量d,预估出其在图像B中的位置信息。
步骤5:由式(19)约束光流的预估位置信息,将满足的点对纳入候选匹配点对。
步骤6:利用RANSAC算法对候选点对进行几何校验,得到的匹配信息作为图像A与图像B的最终匹配结果。
5 实验结果与分析
无人机机载图像处理器为Nvidia Jetson TX2,其CPU为Denver64bit的ARMv8多路处理器,8 G内存,操作系统为64位的Ubuntu 16.04。选取无人机在自然场景下采集的某实验箱图像数据进行实验,选取传统ORB特征匹配算法的阈值为T=30,特征点提取的个数为500。
5.1 特征点提取效果对比分析
特征点提取的实验结果如图2所示。无人机采集的图像如图2a、图2b所示,由于无人机在运动过程中机身的抖动以及距离的变化,使得采集图像具有一定的模糊性。从图2a、图2b和图2c的匹配结果可以看出,在实验箱上的文字处、右下角棱角处和边缘卡口处,传统ORB方法提取特征点时出现了3处具有大量重叠的特征点,且伪角点和真实角点聚集一起形成了角点聚簇的现象。对比图2a、图2b与图2d的匹配实验结果可以看出,相较于传统的ORB算法,本文所设计的改进ORB算法提取的角点信息更加均匀和准确,减少了伪角点对后续特征点匹配的影响。
(a) 图像A(b) 图像B
(c) 传统ORB特征点提取
(d) 改进ORB算法特征点提取图2 特征点提取效果图
表1 特征点提取算法性能对比
由表1可知,虽然在特征点提取时间上,改进ORB算法高于传统ORB算法,但是在聚集度和提取的特征点准确度上前者优于后者:聚集度减少了27.3%,特征点数减少了58.3%。特征点的数量减少降低了后续特征点匹配的运算量,有利于满足无人机机载视觉系统对实时性的需求。
5.2 特征点匹配效果对比分析
改进ORB算法与传统ORB算法匹配效果图如图3所示。对比图3a和图3b可知,相较于传统ORB算法,改进ORB算法匹配效果更加清晰,匹配的特征点对分布更加均匀。
(a) 传统ORB算法
(b) 改进ORB算法图3 特征点匹配效果图
为衡量特征点匹配的精确度,定义匹配正确率为CMR,则:
(20)
式中,M为图像间匹配点对数,MC为模型拟合后符合条件的内点数。改进ORB算法和传统ORB算法特征点匹配结果对比如表2所示。
表2 特征点匹配结果对比
由表2可知,传统ORB的初始匹配误差为16.6%,本文所设计的改进ORB算法与RANSAC算法相结合后,图像特征点的匹配误差为3.5%,相较于传统ORB算法匹配正确率提升了11.666%。实验结果表明,本文所设计的ORB算法可以稳定地跟踪特征点,并可以得到较好的匹配效果,有效提高了特征点提取的实时性和准确性。
5.3 改进ORB算法实验
先对图2a图像A的特征点采用K-means++算法聚类后的结果如图4所示,聚类中心个数K=8。
图4 K-means++聚类结果图
基于图4所示的聚类结果,采用稀疏光流法对图2a所示的图像A进行特征点跟踪,由此得到特征点预估位置的效果图如图5所示。
图5 基于稀疏光流法的预估位置图
选取图像A中的两点为例,基于图5稀疏光流法的预估位置信息,由式(19)剔除错误信息示意图如图6所示,图6a为图像A的一个聚类点与本类的一个特征点位置信息,图6b为与图像B匹配的聚类中心点与特征点位置信息。图6a中红色点为图像A的聚类中心点,蓝色点为本类的特征点;图6b中红色点是由式(4)暴力匹配法得到的图像B的聚类中心点,蓝色点为稀疏光流法预估的待匹配点信息。根据式(19)比较图6a、图6b中蓝色点与红色点的距离da1,db1,不满足条件|da1-db1|<Δ,则剔除蓝色匹配点对,以此提高匹配精度。且每一对匹配点只与本类聚类重点作比较,缩小了匹配范围,减少了暴力匹配算法的运算量。对剔除后匹配结果采用RANSAC算法优化后最终特征匹配结果。
(a) 图像A聚类中心点 与本类特征点 (b) 图像B匹配的聚类 中心点与待匹配点
6 结论
本文针对无人机机载视觉导航系统的图像特征匹配问题,提出了一种基于稀疏光流法的改进ORB特征匹配算法。首先,采用K-means++聚类方法减少了特征点匹配的计算量;在此基础上,基于稀疏光流法得到的光流矢量预估出特征点在下一帧图像的二维坐标位置,然后根据聚类中心点与其本类特征点之间的欧式距离约束得到特征点匹配点集,并利用RANSAC优化匹配结果。实测后实验结果证明,相比于传统的ORB算法,本文所设计的改进ORB算法可有效满足于无人机快速移动对算法的实时性和精确性要求较高等问题,具有较快的特征点提取速度和提取质量,以及较好的匹配精度,有效保证了图像特征点匹配的实时性和鲁棒性。