基于Zynq的空空导弹末端识别与定位系统研究
2021-03-21王西超曲晓雷
王西超,高 颂,浦 乐,曲晓雷
(1 上海电机学院电气学院,上海 201306;2 河南科技大学农业装备工程学院,河南洛阳 471003;3 中国空空导弹研究院,河南洛阳 471000;4 沈阳飞机设计研究所,沈阳 110035)
0 引言
空空导弹弹载光电导引平台以红外或其他光谱波段为信息载体,具有极高的时间、空间和频率分辨力,在精密制导、光电对抗、火控与瞄准、飞行辅助等领域,日益发挥着重大的作用。基于弹载光电平台的飞机目标检测是指对光电传感器获取的图像序列进行处理与分析,充分利用传感器采集的图像信息完成目标检测[1-6],并对检测出的目标进行稳定跟踪的过程。目标一旦被检测出,通过有效地跟踪就可获得目标的位置、速度、加速度等运动参数。
红外波段的目标图像与背景对比度低,目标边缘较模糊,图像噪声大,导致红外图像中飞机等小目标的检测与识别较为困难。目标检测与跟踪系统一般用嵌入式系统实现,传统的嵌入式ARM图像处理平台计算能力有限、响应速度较慢[7-10];FPGA凭借并行硬件结构运算速度较快,但其使用Verlog HDL开发图像处理算法难度较大[11-16]。
针对以上问题,本文以空空导弹末端精确打击为研究目标,以大型运输机和小型战斗机的红外图像为对象,结合红外图像小目标检测与识别要求,采用Zynq-7000系列的ARM+FPGA可编程SOC[17-19],运用软硬件协同设计的方法搭建空空导弹末端识别与定位系统。
1 系统算法设计
针对红外目标检测问题,通过对红外图像的分析得出:虽然运输机和战斗机目标较小,但在局部区域,红外目标的辐射强度还是在一定程度上高于局部背景区域。基于此,将显著性分析引入到红外目标检测中,提出一种基于显著性分析的小目标检测算法,通过简单的显著性计算得到红外图像的显著图,消除部分背景杂波的干扰,然后通过自适应阈值分割显著图,提取出感兴趣区域,进一步在感兴趣区域中计算多尺度窗口的显著度,完成运输机和战斗机的小目标检测。
图1描述了空空导弹末端识别与定位系统算法框架,其设计思想分为目标检测过程和目标识别过程。目标检测过程首先对输入的包含运输机和战斗机的红外图像进行频域残差计算,获得红外图像的显著图;然后根据设定的阈值进行阈值分割;进而通过score计算模块计算感兴趣区域中窗口的显著度;最后通过NMS计算模块进行非极大值抑制,给定一个抑制策略,将score值较小的窗口抑制掉,合并score值相同的窗口,最终获得几个潜在的目标感兴趣区域(region of interest,ROI)。目标识别过程的主要任务是对获得的若干个ROI区域进行识别,判断其是否为所要找的目标,确定目标后,进行特征提取,利用分类器判别飞机类型(运输机还是战斗机),并给出飞机坐标,为空空导弹末端打击提供参数。
图1 空空导弹末端识别与定位系统算法框架
1.1 频域残差计算模块
该模块通过显著性检测获得红外图像的显著图,其输入为飞机的原始红外图像,输出为其显著图,显著性检测步骤为:
1)利用傅里叶变换将飞机红外图像从空间域转换到频域;
2)对频谱幅值取对数后得到其Log谱;
3)用局部平均滤波器对Log谱进行平滑;
4)利用Log谱减去进行均值滤波后的差,获得谱残差;
5)对谱残差进行傅里叶反变换获得其显著图。
1.2 阈值分割模块
阈值分割模块的目的是提取出图像中最显著的区域,其输入是经过频域残差计算后的显著图,输出为显著图的阈值图。
1.3 score计算模块
score计算模块的功能是计算感兴趣区域中窗口的显著度,其输入为含有飞机目标的原始红外图像,输出为可能含有目标的窗口及其对应的score值。图2为score计算模块的流程图。
图2 score计算模块流程图
1.4 NMS计算模块
该部分的主要功能是获得目标的ROI区域,其输入为初步计算得到的目标窗口的坐标,输出为若干个目标潜在区域的ROI。其原理为首先合并score值相同的窗口,然后经过非极大值抑制,利用抑制策略,将score值较小的窗口抑制掉,获得若干个具有潜在目标的ROI。
1.5 目标识别模块
目标识别模块的主要功能是对获得的ROI区域进行识别,判断其是否为所要找的目标。其输入为目标检测模块得到的目标窗口坐标矩阵,输出为精确的目标位置。主要方法为首先对上一步获得的ROI进行特征提取,然后利用离线训练的分类器,依据不同特征,识别出该ROI的飞机类型,并计算出其精确坐标值。
2 系统硬件设计
末端识别与定位系统的硬件平台主要包括3个部分:Zybo开发板传输、储存、处理采集到的红外图像以及图像算法的处理;红外相机通过DVP接口与Zynq-7000的PL端实现图像的传输;VGA显示器用来显示识别后的红外图像和定位信息。
Zynq-7000芯片,由处理器系统(Processing System,PS)ARM-CortexA9模块和可编程逻辑(Programing Logic,PL)模块FPGA构成。PS和PL之间通过AXI接口协议进行数据传输。如图3所示由4大模块组成:红外图像采集、数据缓存、图像处理和识别定位结果显示。
图3 硬件电路框架图
PL部分采集到的图像数据进行频域残差计算的Vivado HLS形成IP核,红外图像采集工作在PL端完成,通过专用IP核对采集的红外图像进行预处理,预处理后数据由IP核AXI VDMA1写入DDR3,供PS端的ARM调用。PL部分还对算法中的频域残差计算模块进行Vivado HLS综合,生成专用IP核,实现算法的硬件加速,频域残差计算模块IP核由AXI VDMA2写入DDR3,供PS端的ARM调用。PS部分根据缓存地址对存储的数据进行调取,进行后期的ROI目标检测、目标识别和定位工作。
3 系统软件设计
PS部分的软件设计包含嵌入式Linux系统搭建、VDMA模块驱动程序设计和应用程序设计3个部分。
3.1 嵌入式图像处理Linux系统搭建
整个软件架构在ARM平台中运行,选取C++与shell脚本相结合的方式编程实现整个算法。其中,算法的实现主要采用C++语言,而ARM平台中C++程序的编译与运行则采用shell脚本进行控制。同时,利用C++实现整个算法的过程中,算法程序的开发充分利用OpenCV的函数库及其数据结构,加快程序的运行速度。通过构建嵌入式图像处理Linux系统需要:嵌入式系统文件构建、嵌入式系统移植、Linux下OpenCV库的安装3步。
3.2 VDMA驱动设计
应用程序由于不具有直接访问内核空间的功能,所以不具有直接访问硬件的权限,因而应用程序需要通过使用Linux内核的API或系统调用间接与硬件设备进行数据交互。在PL部分使用Vivado HLS构建的IP核属于硬件资源(如频域残差计算IP核和图像预处理IP核),所以在Zynq嵌入式Linux操作系统下,应用程序不能够直接访问PL部分构建的IP核,需要设计AXI VDMA驱动程序,使应用程序能够方便的控制PL部分构建的IP核。该系统共有两个AXI VDMA驱动程序,其中图像预处理IP核通过AXI VDMA1进行数据传输,频域残差计算IP核通过AXI VDMA2进行数据传输。
3.3 应用软件设计
目标检测与识别算法的整体算法分为弹载系统在线识别系统和离线样本训练系统。离线样本训练系统通过对大量运输机和战斗机红外图像进行训练,进行特征提取获得运输机和战斗机的特征向量,然后训练SVM分类器对运输机和战斗机进行分类;弹载在线识别系统首先根据显著性分析方法得到红外图像显著图,然后基于score分值计算获得多个ROI,进而在多个ROI上进行特征提取,获得相应的特征向量,接着利用离线训练的SVM分类器对ROI进行分类,获得最终包含运输机和战斗机的ROI,并将其进行识别和定位。红外图像的处理流程图如图4所示。
图4 红外图像处理流程图
红外图像同时在PL端进行预处理和频域残差计算,其中预处理是利用Zynq的专用IP核,频域残差计算是经过Vivado HLS工程综合的IP核;然后预处理IP核通过VDMA1传递给DDR,频域残差IP核通过VDMA2传递给DDR,最后在PS端基于OpenCV进行后续的ROI提取,识别和定位软件处理。
4 实验结果分析
在Vivado中搭建好硬件工程,将频域残差计算模块生成比特流,导出硬件,启动SDK。同时将编写好的包含OpenCV的识别和定位程序导入到工程中,运行结果如表1所示,经测试运输机和战斗机识别准确率达到99%以上;表1显示了运输机坐标为(318,242),其长度和宽度分别为28、20,战斗机坐标为(322,260),其长度和宽度分别为14、6时,不同帧数红外图像的处理速度。可以看出,每10帧图像的处理时间大概在2.5 s,也即每1帧图像的处理时间为0.25 s左右。
表1 不同帧数红外图像的处理速度
5 结论
1)根据空空导弹精确打击要求,提出了一种基于Zynq的空空导弹末端识别与定位系统,包括基于显著性分析的ROI提取算法、飞机识别与定位算法和基于Zynq与OpenCV的嵌入式图像处理系统。
2)实验结果表明:该系统可以实现导弹空空导弹末端识别与定位的原理验证;大型运输机和小型战斗机的识别率达到99%,单帧红外图像的处理速度达到0.25 s。