丁鑫,孟祥,田小林
(1.中国电子科技集团第二十七研究所,河南 郑州 450047;2.西安电子科技大学人工智能学院,陕西 西安 710000)
基于嵌入式平台的红外小目标检测算法由于移植性和实时性的要求都比较高,一直都是红外探测设备研究热点之一。针对无人机等“低慢小”目标的探测,尤其在低空复杂背景下,低慢小目标迅速靠近时,极大地增加了红外探测设备检出目标的难度。为了能准确检测到此类目标,各国学者提出了多种算法。文献[1]利用形态学滤波算法抑制图像背景,并且结合图像的均值和梯度,抑制阈值分割后图像的噪声干扰。文献[2]利用中心域与邻域对比度,通过提高原始图像的对比度来剔除虚假目标。文献[3]利用高通滤波先抑制背景噪声,然后利用边缘检测算子提取疑似目标,最后统计邻域特征抑制杂波干扰。文献[4]利用高通滤波抑制背景噪声,通过统计局部区域的天空等背景和目标的灰度特征来剔除假目标。文献[5]利用局部逆熵的方法来提高图像的质量,并利用同组滤波器来抑制噪声。文献[6]利用改进的粒子群算法避免陷入局部最优,通过均方差修正预测的权值来检测目标。文献[7]利用低慢小目标特性,采用扫描线填充算法和自适应阈值分割的策略剔除假目标。
对于嵌入式设备来说,由于资源有限,很多解决“低慢小”目标探测的方法不容易在嵌入式设备中实现[8]。ARM+FPGA 设计的红外小目标跟踪系统[9]通过ARM 来处理核心算法,FPGA 用于图像的预处理和视频输入输出,这种系统设计方法极大降低了研发难度。
文中通过地物分割方法,将目标所在区域和建筑物、山峰等地面所在区域进行分割,利用分割得到的异型区域来剔除引导滤波检测算法[10]的误检情况。将该算法移植到Hi3559A 平台的ARM 核上,首先需要烧写内核,安装交叉编译环境,采用多线程和ARM 架构中的NEON 指令集[11]并行技术,将大型的矩阵运算拆分,将算法中重复计算的部分采用多线程处理,并对Opencv 中的函数使用并行技术进行进一步加速,最后通过编译器等的优化,实现了复杂背景条件下红外小目标的高帧频检测的嵌入式移植。
地物分割首先使用Canny 算子计算出边缘,接着利用边缘点和非边缘点在每一列的特征找到地物线的最高点,最后对一些奇异点进行修正处理,得到一个异形区域[12]。具体来说,将边缘点作为每一列的分界点处理,在边缘点的上下各找n个点。假设边缘点在第y行,则分别选择第y-k行到第y行、第y+1 行、第y+k行数据,比较两个区域内的平均灰度差;接着选择与y相邻的两点y-1,y+1,依次比较长度为k的两个区域的平均灰度差,在y行的上下各选择n/2 个边缘点,共选择n个这样的边缘点,计算得到一个平均灰度差最大的点,作为分界点;将该分界点所在的行与该分界点对应的这一列所在的边缘点的行数进行比较,如果分界点所在行与边缘点的行的差值小于某个阈值(这里设为100),也认为是奇异点,对其进行删除。
使用引导滤波算法进行背景抑制,引导滤波算法是假定图像中任意一点可以由其邻域的像素点进行线性表示,并且对该点周围的所有点求平均作为该点的值的一种滤波算法,算法原理如式(1)所示:
其中,Ii表示输入图I在i点的像素值,wk表示以k为窗口半径,使用ak和bk进行线性变换的系数,qi为滤波后的图像q在i点的像素值。利用线性回归方程,使得滤波后的图像q和输入图像P之间的差值最小,如式(2)所示:
其中,ε为平滑系数,采用最小二乘法求解得到ak和bk:
式中,|w|为窗口wk中像素点的数量,μk和分别为图像I在窗口wk处的平均值和方差,pk是图像P在窗口wk的均值。得到ak和bk之后即可求得滤波后的图像q。
将原图与引导图相减,得到引导差值图。对于红外探测设备来说,由于地杂波的影响[13],引导差值图会检测出大量地杂波的虚景[14],因此,通过地物分割方法,将异型区域内的目标剔除。采用自适应阈值分割方法,将异型区域内的值置为0,异型区域以外的值如果满足要求,则置为1。自适应阈值通过均值求得,均值的计算是地物线以上部分的所有点的和除以图像的面积:
其中,f(i,j)表示原图,G(i,j)表示引导图,m×n表示图像面积。自适应阈值计算如下:
其中,nl和σ均为常数,nl=140,σ=0.1。
最终的二值图可以表示为:
其中,h(i,j)表示最终的二值图,ik表示异形区域的行的临界点,jk表示异形区域的列的临界点。
Hi3559A 开发平台是一款基于Hi3559AV100 芯片的开发板,集成了双核A73 和双核A53,支持双精度浮点运算,使得功耗和性能达到平衡[15]。MPP 是海思提供的图像处理软件平台,主要完成视频的输入输出和视频处理以及拼接等功能,并且提供了丰富的API 接口供开发者使用。MPP 主要包括以下模块:VI、VPSS、VO、VENC、VDEC。MPP 处理流程如图1 所示。首先通过交叉编译,得到lib 动态链接库,将lib 链接库添加到海思开发板中,在Linux 操作系统中使用cmake 脚本,将头文件和lib 动态链接库添加进来,进行交叉编译,将得到的可执行文件放入开发板中运行。文中使用VI 模块进行相机数据采集,VPSS 模块进行图像处理操作,将得到的lib 文件放入其中,VO 模块输出图像并通过HDMI 进行输出结果的字符显示。
图1 MPP处理流程图
对于异型区域剔除虚景点,考虑到Hi3559AV100芯片有四个ARM 核,因此设计一个四线程并行的架构,将整幅图像分为四部分,每一部分处理对应的异型区域。由于矩阵中的每一个点做阈值分割都相对独立,因此将矩阵平均分成四份,可以极大提高了矩阵运算的效率。多线程处理异型区域图如图2所示。
图2 多线程处理异型区域图
为了提高算法的运行速度,将算法拆分,将矩阵乘法运算利用Hi3559A 平台的多核ARM 进行多线程处理。fmean(I,r)表示使用r×r大小的滤波器对图像I 做盒式滤波,ε为平滑因子,防止求得的a过大,这里a表示引导滤波的线性系数矩阵。I为原图,P为引导图,q为滤波后的图像。mean、corr、var、cov 分别表示均值、相关性、方差和协方差。如图3 所示,在Hi3559A 平台的MPP 模块中,利用两个线程分别计算两组不相关的矩阵数据,一组为fmean(I,r)和fmean(P,r),另一组为fmean(a,r)和fmean(b,r)。
图3 引导滤波算法流程图
NEON 技术是一种SIMD(单指令多数据)结构,提供了自动向量化、NEON 内联函数优化、汇编语言优化、函数库优化的模式[16]。文中采用NEON 内联函数进行优化,无需第三方库编译,可移植性更好。
矩阵求和主要涉及加法运算,如果使用原始的for 循环,速度无法满足要求,而使用Opencv 的sum函数,依然有优化的空间。文中使用NEON 技术,对float32 类型的加法运算进行加速,相比于Opencv 的sum 函数,速度上有了进一步的提高。使用四个32位浮点型数求矩阵的和,利用空间换时间的思想,降低了算法的复杂度。使用NEON 内联函数计算的主要步骤如下:
1)使用vldlq_f32 函数从Mat 类型的图像中加载四个像素的数据;
2)使用vaddq_f32 函数同时将四个像素数据添加到128 位寄存器中;
3)使用vget_low_f32 函数和vget_high_f32 函数将128 位寄存器切成两个64 位寄存器;
4)使用vadd_f32 函数对两个64 位寄存器内的数求和。
文中采用无人机作为目标,以城市低空实验的数据作为实验来源,将检测算法移植并部署到Hi3559A平台上,使用采集的三种不同类型的城市背景的图像50 余张,采用局部信噪比和背景抑制因子以及检测概率三组参数来对提出的算法和经典的Top-hot算法、LCM 算法(Local Contrast Method)、双边滤波算法进行定量比较。
采用四种算法的红外图像信噪比和背景抑制因子的对比如表1 所示。其中,BSF 为背景抑制因子。
表1 几种检测算法的性能对比
从表1 可以看出,文中提出的基于地物分割的引导滤波算法在背景抑制上相比于其他算法有一定的优势,并且基于地物分割的引导滤波算法相比双边滤波,细节处理更好,算法的可移植性更高。
采用四种算法的检测概率和虚警率对比如表2所示。
表2 几种检测算法的检测率和虚警率对比
从表2 可以看出,基于地物分割的引导滤波算法的最大优势在于明显降低图像的虚警率,在检测概率上也有比较大的提升,能够大大提高搜索目标的效率。对于高帧频光电探测设备来说,虚警率的降低有助于航迹关联和目标匹配。
从图4 引导滤波算法仿真结果可以看出,对于地物复杂背景,使用引导滤波进行背景抑制极易出现假目标,并且无法通过面积和长宽比以及灰度差进行筛选,因此通过地物分割策略,在决策时对地物分割线(如图5 所示)以下的目标进行筛选,如图6所示,剔除虚假目标后即可得到最终真实目标。
图4 引导滤波(一)
图5 地物分割线(一)
图6 基于地物分割的引导滤波(一)
文中方法不仅可以对建筑物以上的无人机进行有效检测,还可以对高低建筑物之间的无人机通过地物分割的引导滤波方法进行检测(如图7-9所示),而传统的基于直线分割策略的引导滤波方法无法剔除虚假目标。如图7 所示,使用地物分割的引导滤波算法依然能够有效提取目标,如果只采用海天线等直线提取策略,则无法解决在高低两个建筑物之间的无人机检测问题。通过地物分割将地物线以下的异形区域进行分割(如图8 所示),将该区域内检测出来的目标当成假目标处理,如图9 所示,通过基于地物分割的引导滤波策略得到最终两个建筑物之间的“低慢小”目标。
图7 引导滤波(二)
图8 地物分割线(二)
图9 基于地物分割的引导滤波(二)
由于地物的特征相对固定,只需将该方位角度和俯仰角度的地物区域烧写进程序,当需要地物分割时再进行开启,因此地物分割部分不考虑时间的优化问题,文中主要分析和试验了引导滤波和自适应阈值分割部分的检测算法优化。
由表3 可以看出,引导滤波优化和异型区域分割分别采用二线程和四线程进行加速,分别得到1.70 和3.22 的加速比;求矩阵均值和矩阵均值的平方和采用NEON 技术,能够得到1.69 的加速比。总时间经过优化已经能在10 ms 内完成引导滤波算法优化并最终检测出目标,说明了使用Hi3559AV100芯片经过优化可以在100 Hz 频率下完成目标检测。
表3 各模块优化前后运行效率对比表
文中首先在复杂背景并且有地物干扰的情况下,提出了一种地物分割的算法,该算法先通过Canny算子得到地物的边缘,用边缘点和非边缘点在每一列的特征找到地物线的最高点,最后对一些奇异点进行修正处理,得到一个异形区域,将异形区域用于计算阈值,将地物部分可能出现的假目标舍弃,减少了虚警率。文中还提出将该算法移植到嵌入式设备中,采用多线程处理和NEON 技术加速算法中的矩阵运算,最终实现了在10 ms 内对640×512 分辨率大小图像的处理。下一步将进一步优化算法,调整不同的算法和参数来应对不同的场景。