APP下载

无人机基于视觉自主着陆的跑道识别跟踪

2017-06-27吴良晶曹云峰丁萌庄丽葵

单片机与嵌入式系统应用 2017年6期
关键词:池化实时性特征提取

吴良晶,曹云峰,丁萌,庄丽葵

(1. 南京航空航天大学 航天学院, 南京 210016;2. 南京航空航天大学 民航学院)

无人机基于视觉自主着陆的跑道识别跟踪

吴良晶1,曹云峰1,丁萌2,庄丽葵1

(1. 南京航空航天大学 航天学院, 南京 210016;2. 南京航空航天大学 民航学院)

跑道检测识别与跟踪是基于视觉的无人机自主着陆的前提和难点,本文根据固定翼无人机基于视觉自主着陆的特点设计了包括跑道检测、跑道特征提取、跑道识别和跑道跟踪的方案,并在ARM Cortex-A9处理器中基于Linux系统使用OpenCV实现了该方案。最后按照逐步递进的方式分别对检测、检测识别、检测识别与跟踪结果进行了实验验证,并对实时性进行了分析。实验结果表明,通过该方案可以准确地识别图像中的跑道并具有较快的跟踪速度。

跑道检测识别;跑道跟踪;OpenCV;ARM Cortex-A9;Linux系统

引 言

目前,基于视觉的固定翼无人机自主着陆主要是根据无人机上摄像机拍摄的实时视频图像进行一系列的处理,以实现搜索跑道、对准跑道、跟踪跑道,并得到跑道区域的特征信息,然后根据这些特征信息利用视觉测量方法来计算无人机的位姿参数,为无人机的着陆控制系统提供参数[1],从而在不与外界发生信息交互的情况下实现无人机的自主着陆。从中不难发现,跑道检测识别与跟踪是实现无人机自主着陆的前提。

首先固定翼无人机着陆速度较快,因此对每帧处理速度有较高要求;其次,为了确保图像中含有跑道区域,摄像头的视场角一般都设计得较大,因此图像信息量很大,具有较大的数据载荷;同时,在无人机着陆过程中,跑道区域在图像中不断变大,这就要求跟踪方法能适应跑道在图像中的尺度变化。这些特性成为跑道检测识别与跟踪必须解决的关键问题与难点。

本文根据上述固定翼无人机自主着陆的特点设计了跑道检测识别与跟踪的方案,根据该方案可以在大视场图像中确定跑道位置,可以跟踪跑道在图像中尺度的变化,并且具有较快的处理速度。

1 跑道检测识别与跟踪方案

本文基于OpenCV在嵌入式Linux系统上实现了该方案,实现平台采用双核ARM Cortex-A9处理器,主频为800 MHz。

本文使用检测识别技术实现在一幅包含跑道的图像中确定跑道区域在图像坐标系中的坐标,但是检测识别方法实时性较低,不适合每帧图像使用。而跟踪方法处理速度较快,但需要给出跟踪目标的初始位置。因此,本文采用检测识别方法得到跑道区域的坐标,然后把这个坐标作为跑道跟踪的初始位置,从而实现检测识别与跟踪的无缝连接。

1.1 基于显著性分析的跑道检测

从无人机前视图像(见图1)中识别出跑道的第一步是确定跑道大致所处的区域。从图1可以发现跑道在整个图像中所占像素较少,图像背景信息较多,为了提升实时性,本文将检测与识别的过程分开。首先利用显著性检测的方法得到可能存在跑道的区域,这一过程将其称为“检测”,得到ROI(Region Of Interest)区域。Xiaodi Hou等[2]人提出的频域残差法(Spectral Residual, SR)是经典的频域显著性分析方法。SR显著性分析的基本原理是通过将输入图像转化为对数谱进行分析,利用图像频域提取的频谱残差,在对应空间域生成显著性图。

图1 无人机着陆前视图像

输入:图像X;

输出:图像X的显著性图S。

其基本计算过程如下:

① 计算X的傅里叶变换:F=FourierTransform(X);

② 计算傅里叶变换的对数幅值:L=Log(|F|);

③ 求出傅里叶变换的相位角:P=Angle(F);

④ 对对数幅值进行均值滤波处理:L’=AverageFilter(L);

⑤ 计算频谱残差:R=L-L’;

⑥ 生成残差傅里叶变换:F’=Exp(R)*Exp(iP);

⑦ 计算显著性图:S=InverseFourierTransform(F’)。

1.2 基于显著图的跑道候选区域确定

在得到显著图的基础上,需要解决的问题是如何利用显著图确定跑道可能存在的区域。本方案使用滑窗法和一种区域显著性分析方法计算一个区域显著性指标(score),再把区域显著性指标不同的重叠区域进行合并,进而完成ROI区域的检测。

输入:显著图S,滑窗高度a的变化范围[a_1,a_2 ],长宽比为α;

输出:ROI区域坐标与对应的显著度score。

具体实现步骤如下:

① 利用显著图S,二值化的显著图T,合成图F,合成积分图Fin,二值积分图Tin。二值图T,合成图F,合成积分图Fin,二值积分图Tin大小与显著图S一致。

② 确定在显著图S中滑窗窗口大小范围。假设搜索窗口为矩形,滑窗窗口高度为a,长宽比为α,a∈[a_1,a_2],a=a_1+nτ,a≤a_2,n=0,1,2,3,4,5,…,τ为窗口变化步长。

③ 利用滑窗法计算不同边长a的每一个窗口区域的显著度score,得到一个num×5的矩阵Boxa,其中num表示边长为a的所有滑窗窗口总数,每一行前四列表示窗口的范围,第五列表示该窗口对应的显著度score,矩阵每一行的表示如下:

[最小列,最小行,最大列,最大行,score]

④ 以Boxa每一列第五行score值为基础对Boxa中的窗口区域进行非极大值[3](Non-Maximum Suppression, NMS)抑制,得到新的窗口矩阵Boxa。对于滑窗窗口边长为a的矩阵Boxa,利用NMS方法以每个窗口的score为抑制指标,窗口区域重叠系数为0(即窗口之间无重叠区域),得到边长为a互不重叠的窗口区域,得到新的窗口矩阵Boxa。此步骤的实质是搜索出局部具有最大score值的窗口,抑制和该局部最大值窗口有重叠区域的其他窗口。

图2 不同窗口合并方式

⑤ 不同边长的窗口对应的窗口矩阵nBoxa合并得到包含所有窗口矩阵的矩阵ROI。合并方式如图2所示。

⑥ 根据ROI矩阵中第五列对应的每个窗口的score确定最小目标区域。

1.3 基于sc-SPM的跑道特征提取

通过上一节得到的ROI区域使整幅处理图像变为对几个ROI区域的处理,大大减小了工作量。但到底是哪一个ROI,还需要通过识别方法来实现。识别方法一般由两个部分构成,分别为特征提取和分类器设计。

图3 跑道特征提取步骤

图4 SPM框架下的特征池化方法

本文采用基于空间金字塔匹配模型[4](Spatial Pyramid Matching, SPM)的特征学习方法,如图3所示。首先对ROI图像块提取SIFT特征,其次在空间金字塔框架下以稀疏编码[5]为基本手段对所提取的特征作进一步的抽象,最后以特征池化思想为基础(见图4),实现局部特征的聚合,完成整个特征提取的过程。

SIFT特征是基于物体上的一些局部外观的兴趣点,与影像的大小和旋转无关。对于光线、噪声、稍微视角改变的容忍度也相当高。基于这些特征,它们是高度显著而且相对易于获取,在庞大的特征数据库中,很容易辨识目标而且识别率很高。因此本方案选择SIFT特征作为底层特征。

池化(pooling)是指对图像中不同位置的特征进行聚合统计,池化的原因是当特征数量过多时会对计算带来较大的难度,并且容易出现过拟合。本方案所采用的池化方法为最大值池化。假设AM×N为求得的M个向量的N维稀疏系数,最大值池化方程如下式所示:

这里Z为经过池化以后的特征,Aij为A矩阵中的第i行、第j列元素。对整张图像进行分割以后的每个区域进行特征池化,并对池化后的特征进行组合,从而得到最终所需要的特征。

1.4 基于SVM的跑道识别

在特征提取的基础上,识别的核心是分类器的设计。本文选择基于支持向量机(SupportVectorMachine,SVM)的识别方法。序列最小优化[6](SequentialMinimalOptimization,SMO)是广泛使用的SVM训练方法。因为SMO对于线性SVM效果比较好,所以在前文特征提取为高维特征的情况下可以选择线性的SVM识别训练方法。

1.5 基于FCT的跑道跟踪

在准确无误识别出图像中的跑道(区域)后,就需要在着陆过程中一直能够确定跑道区域的位置。在知道跑道大致所处的位置后,就不需要再次重复确定跑道位置的检测识别方法,因为这将带来巨大的计算量,整体实时性很难保证,而且也没有充分利用图像的“序列”信息。目标跟踪方法的特点即在于研究利用各帧图像之间的关联性,采用一定的搜索策略,缩小单帧图像的目标识别范围,最终提高实时性。目前基于视觉的目标跟踪方法很多,本文选择KZhang[7]提出的快速压缩跟踪(FastCompressiveTracking,FCT)的目标跟踪方法。

输入:第t帧图像;

输出:跟踪到的跑道位置It和更新后的分类器参数。

其主要步骤[8]如下:

① 在(t-1)帧跟踪到的目标位置It-1的周围采样n个图像片,然后对这些图像片进行特征提取,得到每个图像片的特征向量v;

② 使用朴素贝叶斯分类器对这些v进行分类,找到最大分类分数的图像片作为当前帧跟踪到的目标,位置为It;

③ 采样正负两个样本集,提取上述两个样本集的特征,来更新分类器参数。

1.6 流程图

根据确定的跑道检测识别与跟踪方案,可以得到跑道检测识别与跟踪的实现流程图,如图5所示。

图5 方案流程图

2 实现方式

根据上文分析的方案结合流程图可以明确跑道检测识别与跟踪功能实现的方式。本文在双核ARM Cortex-A9处理器上,基于嵌入式Linux使用 C++和OpenCV实现了设计方案,使用C++的好处是可以对系统进行模块化处理。当某个功能模块需要修改的时候,只需要修改该功能模块所在的cpp文件;当某个功能模块需要替换的时候,只需要在编写代码的时候输入/输出接口和原功能模块输入输出接口保持一致就可以直接对模块进行替换,而不影响其他功能模块,同时在调试代码的时候迅速定位故障所在文件,可以节约代码调试的时间。

跑道检测识别与跟踪实现文件结构如图6所示。图6中input文件夹用于存放着陆序列图像;output文件夹用于存放处理后的序列图像;Dictionary.xml为特征提取所用的字典;SVM.xml实现了离线训练的分类器;UAV.cpp和UAV.h用于存放无人机相关参数;runway_detection.cpp和runway_detection.h实现了跑道检测;runway_recognition.cpp和runway_recognition.h实现了跑道特征提取和跑道识别;runway_tracking.cpp和runway_tracking.h实现了跑道跟踪;main.cpp为主函数文件;makefile文件用于编译cpp文件以生成可执行文件,即图6中的run文件;parameter.txt用于存放预先设定的一些参数,包括序列图像的总帧数、开始着陆时的初始帧数、开始着陆时的高度等;runtime.txt用于存放每帧图像处理的时间,以供后续分析。

图6 跑道检测识别与跟踪系统文件组成

3 实验分析

实验条件:硬件平台使用DE1-SoC的ARM部分,该平台搭载了双核ARM Cortex-A9处理器,主频为800 MHz,内存为1 GB,Linux系统为ubuntu系统,版本为12.04,安装了OpenCV3.0。实验图像来源于FlightGear虚拟仿真系统[9],仿真着陆机场为KLVK,KLVK机场位于LIVERMORE,CA西向3 km,海拨121.9 m。着陆视频分解成953帧图像,单帧图像像素为520×1224。

3.1 跑道检测实验分析

基于SR显著性分析的跑道候选区域检测方法有若干核心参数,在实现过程中需要设置,以确保准确度的同时提升执行速度,这些参数分别为:图像缩小尺度scale、显著图阈值threshold、滑窗窗口的取值范围、滑窗窗口的比值q和合并时的重叠参数η。

反复实验确定参数为滑窗窗口的高、宽长度为47 pixel,135pixel;scale=0.15;threshold=0.06;q=0.01;η=0.9。此时可以处于准确度和实时性平衡的状态,501帧序列图像中共有16帧没有检测到或者部分检测到跑道,因此检测结果准确性为96.8%。检测方法执行时间如图7所示,平均时间为1.68s。部分检测结果如图8所示。

3.2 跑道检测识别实验分析

在得到包含跑道的ROI区域之后,对每个ROI区域进行特征提取,得到每个ROI区域的特征向量,并把每个ROI区域的特征向量送入经过离线训练的分类器中进行识别,最后得到含有跑道的ROI区域。前300帧执行时间如图9所示,每帧平均执行时间为39.99 s。部分检测识别结果如图10所示。

3.3 跑道跟踪实验分析

由图9也可以发现,如果在无人机着陆过程中全程使用检测识别方法来得到跑道区域的位置,虽然准确性很高,但实时性太差,因此需要使用跟踪的方法来提高着陆过程的实时性。

无人机在着陆过程中跑道区域不断变大,因此跟踪框应该不断变大。但FCT不具备较大尺度变化的能力,通过分析发现,跑道区域大小与无人机高度、无人机和跑道之间的距离相关,若着陆过程中使用等角下滑的方式,则可以根据高度信息实现跟踪的变尺度以适应跑道的变化。

整个着陆过程除了第一帧检测识别之外的跟踪时间如图11所示,平均时间为0.45 s,部分跟踪结果如图12所示。

图7 跑道检测执行时间

图8 检测结果

图9 检测识别执行时间

图10 检测识别结果

图11 跑道跟踪执行时间

图12 跟踪结果

从上述实验可以发现本文提出的方案可以有效且准确地得到跑道区域的位置,同时也发现此检测识别方案计算复杂度比较高,对应的执行时间较长,其中执行时间最长的是特征提取,得到的每个特征向量维度为1 024×21 504,因此特征提取运算量比较大,同时由于跑道区域在整幅图像中不是最显著的,因此检测方法会得出多个ROI区域,这也是导致检测识别运算量大的重要原因。在得到跑道区域的初始位置后,FCT方法可以准确地跟踪跑道区域,引入高度信息后,从图11可以发现其可以很好地跟踪跑道尺度的变化,并且处理速度可以达到2.2 fps(基于本实验平台)。

结 语

本文根据固定翼无人机基于视觉的自主着陆的特点,设计了跑道区域检测识别与跟踪方案,主要包括:①基于图像频域残差显著性分析的跑道ROI区域检测;②基于无监督特征学习的跑道区域特征提取;③基于支持向量机的无人机着陆过程中跑道识别;④基于压缩感知的跑道跟踪,其能够根据识别出的跑道区域作为初始目标区域输入,完成着陆过程中的跑道跟踪。

Runway Recognition and Tracking Based on Autonomous Landing of UAV

Wu Liangjing1,Cao Yunfeng1,Ding Meng2,Zhuang Likui1

(1.College of Astronautics,Nanjing University of Aeronautics and Astronautics,Nanjing 210016,China; 2.College of Civil Aviation,Nanjing University of Aeronautics and Astronautics)

The detection,recognition and tracking of the runway are the key points and promise of the vision-based UAV autonomous landing,in the paper,a scheme with considering the characteristics of the fixed wing UAV based on visual autonomous landing is proposed0,including the runway detection,the runway feature extraction,the runway recognition and tracking algorithms.The scheme is implemented based on the Linux system using OpenCV in the ARM Cortex-A9 processor.Finally,the detection,the detection and recognition,and the detection and tracking are experimentally verified in a step-by-step manner,and the real-time performance of the scheme is discussed.The experiment results show that the program can accurately identify the runway in the image and has a faster tracking speed.

runway detection and recognition;runway tracking;OpenCV;ARM Cortex-A9;Linux system

TP274

A

猜你喜欢

池化实时性特征提取
基于Sobel算子的池化算法设计
卷积神经网络中的自适应加权池化
设施蔬菜病害识别中的CNN池化选择
基于规则实时性的端云动态分配方法研究
基于卷积神经网络和池化算法的表情识别研究
基于Daubechies(dbN)的飞行器音频特征提取
航空电子AFDX与AVB传输实时性抗干扰对比
Bagging RCSP脑电特征提取算法
基于MED和循环域解调的多故障特征提取
一种车载Profibus总线系统的实时性分析