王西超,高 頌,浦 樂,曲曉雷
(1 上海電機(jī)學(xué)院電氣學(xué)院,上海 201306;2 河南科技大學(xué)農(nóng)業(yè)裝備工程學(xué)院,河南洛陽 471003;3 中國空空導(dǎo)彈研究院,河南洛陽 471000;4 沈陽飛機(jī)設(shè)計(jì)研究所,沈陽 110035)
空空導(dǎo)彈彈載光電導(dǎo)引平臺(tái)以紅外或其他光譜波段為信息載體,具有極高的時(shí)間、空間和頻率分辨力,在精密制導(dǎo)、光電對(duì)抗、火控與瞄準(zhǔn)、飛行輔助等領(lǐng)域,日益發(fā)揮著重大的作用?;趶椵d光電平臺(tái)的飛機(jī)目標(biāo)檢測(cè)是指對(duì)光電傳感器獲取的圖像序列進(jìn)行處理與分析,充分利用傳感器采集的圖像信息完成目標(biāo)檢測(cè)[1-6],并對(duì)檢測(cè)出的目標(biāo)進(jìn)行穩(wěn)定跟蹤的過程。目標(biāo)一旦被檢測(cè)出,通過有效地跟蹤就可獲得目標(biāo)的位置、速度、加速度等運(yùn)動(dòng)參數(shù)。
紅外波段的目標(biāo)圖像與背景對(duì)比度低,目標(biāo)邊緣較模糊,圖像噪聲大,導(dǎo)致紅外圖像中飛機(jī)等小目標(biāo)的檢測(cè)與識(shí)別較為困難。目標(biāo)檢測(cè)與跟蹤系統(tǒng)一般用嵌入式系統(tǒng)實(shí)現(xiàn),傳統(tǒng)的嵌入式ARM圖像處理平臺(tái)計(jì)算能力有限、響應(yīng)速度較慢[7-10];FPGA憑借并行硬件結(jié)構(gòu)運(yùn)算速度較快,但其使用Verlog HDL開發(fā)圖像處理算法難度較大[11-16]。
針對(duì)以上問題,本文以空空導(dǎo)彈末端精確打擊為研究目標(biāo),以大型運(yùn)輸機(jī)和小型戰(zhàn)斗機(jī)的紅外圖像為對(duì)象,結(jié)合紅外圖像小目標(biāo)檢測(cè)與識(shí)別要求,采用Zynq-7000系列的ARM+FPGA可編程SOC[17-19],運(yùn)用軟硬件協(xié)同設(shè)計(jì)的方法搭建空空導(dǎo)彈末端識(shí)別與定位系統(tǒng)。
針對(duì)紅外目標(biāo)檢測(cè)問題,通過對(duì)紅外圖像的分析得出:雖然運(yùn)輸機(jī)和戰(zhàn)斗機(jī)目標(biāo)較小,但在局部區(qū)域,紅外目標(biāo)的輻射強(qiáng)度還是在一定程度上高于局部背景區(qū)域?;诖耍瑢@著性分析引入到紅外目標(biāo)檢測(cè)中,提出一種基于顯著性分析的小目標(biāo)檢測(cè)算法,通過簡(jiǎn)單的顯著性計(jì)算得到紅外圖像的顯著圖,消除部分背景雜波的干擾,然后通過自適應(yīng)閾值分割顯著圖,提取出感興趣區(qū)域,進(jìn)一步在感興趣區(qū)域中計(jì)算多尺度窗口的顯著度,完成運(yùn)輸機(jī)和戰(zhàn)斗機(jī)的小目標(biāo)檢測(cè)。
圖1描述了空空導(dǎo)彈末端識(shí)別與定位系統(tǒng)算法框架,其設(shè)計(jì)思想分為目標(biāo)檢測(cè)過程和目標(biāo)識(shí)別過程。目標(biāo)檢測(cè)過程首先對(duì)輸入的包含運(yùn)輸機(jī)和戰(zhàn)斗機(jī)的紅外圖像進(jìn)行頻域殘差計(jì)算,獲得紅外圖像的顯著圖;然后根據(jù)設(shè)定的閾值進(jìn)行閾值分割;進(jìn)而通過score計(jì)算模塊計(jì)算感興趣區(qū)域中窗口的顯著度;最后通過NMS計(jì)算模塊進(jìn)行非極大值抑制,給定一個(gè)抑制策略,將score值較小的窗口抑制掉,合并score值相同的窗口,最終獲得幾個(gè)潛在的目標(biāo)感興趣區(qū)域(region of interest,ROI)。目標(biāo)識(shí)別過程的主要任務(wù)是對(duì)獲得的若干個(gè)ROI區(qū)域進(jìn)行識(shí)別,判斷其是否為所要找的目標(biāo),確定目標(biāo)后,進(jìn)行特征提取,利用分類器判別飛機(jī)類型(運(yùn)輸機(jī)還是戰(zhàn)斗機(jī)),并給出飛機(jī)坐標(biāo),為空空導(dǎo)彈末端打擊提供參數(shù)。
圖1 空空導(dǎo)彈末端識(shí)別與定位系統(tǒng)算法框架
該模塊通過顯著性檢測(cè)獲得紅外圖像的顯著圖,其輸入為飛機(jī)的原始紅外圖像,輸出為其顯著圖,顯著性檢測(cè)步驟為:
1)利用傅里葉變換將飛機(jī)紅外圖像從空間域轉(zhuǎn)換到頻域;
2)對(duì)頻譜幅值取對(duì)數(shù)后得到其Log譜;
3)用局部平均濾波器對(duì)Log譜進(jìn)行平滑;
4)利用Log譜減去進(jìn)行均值濾波后的差,獲得譜殘差;
5)對(duì)譜殘差進(jìn)行傅里葉反變換獲得其顯著圖。
閾值分割模塊的目的是提取出圖像中最顯著的區(qū)域,其輸入是經(jīng)過頻域殘差計(jì)算后的顯著圖,輸出為顯著圖的閾值圖。
score計(jì)算模塊的功能是計(jì)算感興趣區(qū)域中窗口的顯著度,其輸入為含有飛機(jī)目標(biāo)的原始紅外圖像,輸出為可能含有目標(biāo)的窗口及其對(duì)應(yīng)的score值。圖2為score計(jì)算模塊的流程圖。
圖2 score計(jì)算模塊流程圖
該部分的主要功能是獲得目標(biāo)的ROI區(qū)域,其輸入為初步計(jì)算得到的目標(biāo)窗口的坐標(biāo),輸出為若干個(gè)目標(biāo)潛在區(qū)域的ROI。其原理為首先合并score值相同的窗口,然后經(jīng)過非極大值抑制,利用抑制策略,將score值較小的窗口抑制掉,獲得若干個(gè)具有潛在目標(biāo)的ROI。
目標(biāo)識(shí)別模塊的主要功能是對(duì)獲得的ROI區(qū)域進(jìn)行識(shí)別,判斷其是否為所要找的目標(biāo)。其輸入為目標(biāo)檢測(cè)模塊得到的目標(biāo)窗口坐標(biāo)矩陣,輸出為精確的目標(biāo)位置。主要方法為首先對(duì)上一步獲得的ROI進(jìn)行特征提取,然后利用離線訓(xùn)練的分類器,依據(jù)不同特征,識(shí)別出該ROI的飛機(jī)類型,并計(jì)算出其精確坐標(biāo)值。
末端識(shí)別與定位系統(tǒng)的硬件平臺(tái)主要包括3個(gè)部分:Zybo開發(fā)板傳輸、儲(chǔ)存、處理采集到的紅外圖像以及圖像算法的處理;紅外相機(jī)通過DVP接口與Zynq-7000的PL端實(shí)現(xiàn)圖像的傳輸;VGA顯示器用來顯示識(shí)別后的紅外圖像和定位信息。
Zynq-7000芯片,由處理器系統(tǒng)(Processing System,PS)ARM-CortexA9模塊和可編程邏輯(Programing Logic,PL)模塊FPGA構(gòu)成。PS和PL之間通過AXI接口協(xié)議進(jìn)行數(shù)據(jù)傳輸。如圖3所示由4大模塊組成:紅外圖像采集、數(shù)據(jù)緩存、圖像處理和識(shí)別定位結(jié)果顯示。
圖3 硬件電路框架圖
PL部分采集到的圖像數(shù)據(jù)進(jìn)行頻域殘差計(jì)算的Vivado HLS形成IP核,紅外圖像采集工作在PL端完成,通過專用IP核對(duì)采集的紅外圖像進(jìn)行預(yù)處理,預(yù)處理后數(shù)據(jù)由IP核AXI VDMA1寫入DDR3,供PS端的ARM調(diào)用。PL部分還對(duì)算法中的頻域殘差計(jì)算模塊進(jìn)行Vivado HLS綜合,生成專用IP核,實(shí)現(xiàn)算法的硬件加速,頻域殘差計(jì)算模塊IP核由AXI VDMA2寫入DDR3,供PS端的ARM調(diào)用。PS部分根據(jù)緩存地址對(duì)存儲(chǔ)的數(shù)據(jù)進(jìn)行調(diào)取,進(jìn)行后期的ROI目標(biāo)檢測(cè)、目標(biāo)識(shí)別和定位工作。
PS部分的軟件設(shè)計(jì)包含嵌入式Linux系統(tǒng)搭建、VDMA模塊驅(qū)動(dòng)程序設(shè)計(jì)和應(yīng)用程序設(shè)計(jì)3個(gè)部分。
整個(gè)軟件架構(gòu)在ARM平臺(tái)中運(yùn)行,選取C++與shell腳本相結(jié)合的方式編程實(shí)現(xiàn)整個(gè)算法。其中,算法的實(shí)現(xiàn)主要采用C++語言,而ARM平臺(tái)中C++程序的編譯與運(yùn)行則采用shell腳本進(jìn)行控制。同時(shí),利用C++實(shí)現(xiàn)整個(gè)算法的過程中,算法程序的開發(fā)充分利用OpenCV的函數(shù)庫及其數(shù)據(jù)結(jié)構(gòu),加快程序的運(yùn)行速度。通過構(gòu)建嵌入式圖像處理Linux系統(tǒng)需要:嵌入式系統(tǒng)文件構(gòu)建、嵌入式系統(tǒng)移植、Linux下OpenCV庫的安裝3步。
應(yīng)用程序由于不具有直接訪問內(nèi)核空間的功能,所以不具有直接訪問硬件的權(quán)限,因而應(yīng)用程序需要通過使用Linux內(nèi)核的API或系統(tǒng)調(diào)用間接與硬件設(shè)備進(jìn)行數(shù)據(jù)交互。在PL部分使用Vivado HLS構(gòu)建的IP核屬于硬件資源(如頻域殘差計(jì)算IP核和圖像預(yù)處理IP核),所以在Zynq嵌入式Linux操作系統(tǒng)下,應(yīng)用程序不能夠直接訪問PL部分構(gòu)建的IP核,需要設(shè)計(jì)AXI VDMA驅(qū)動(dòng)程序,使應(yīng)用程序能夠方便的控制PL部分構(gòu)建的IP核。該系統(tǒng)共有兩個(gè)AXI VDMA驅(qū)動(dòng)程序,其中圖像預(yù)處理IP核通過AXI VDMA1進(jìn)行數(shù)據(jù)傳輸,頻域殘差計(jì)算IP核通過AXI VDMA2進(jìn)行數(shù)據(jù)傳輸。
目標(biāo)檢測(cè)與識(shí)別算法的整體算法分為彈載系統(tǒng)在線識(shí)別系統(tǒng)和離線樣本訓(xùn)練系統(tǒng)。離線樣本訓(xùn)練系統(tǒng)通過對(duì)大量運(yùn)輸機(jī)和戰(zhàn)斗機(jī)紅外圖像進(jìn)行訓(xùn)練,進(jìn)行特征提取獲得運(yùn)輸機(jī)和戰(zhàn)斗機(jī)的特征向量,然后訓(xùn)練SVM分類器對(duì)運(yùn)輸機(jī)和戰(zhàn)斗機(jī)進(jìn)行分類;彈載在線識(shí)別系統(tǒng)首先根據(jù)顯著性分析方法得到紅外圖像顯著圖,然后基于score分值計(jì)算獲得多個(gè)ROI,進(jìn)而在多個(gè)ROI上進(jìn)行特征提取,獲得相應(yīng)的特征向量,接著利用離線訓(xùn)練的SVM分類器對(duì)ROI進(jìn)行分類,獲得最終包含運(yùn)輸機(jī)和戰(zhàn)斗機(jī)的ROI,并將其進(jìn)行識(shí)別和定位。紅外圖像的處理流程圖如圖4所示。
圖4 紅外圖像處理流程圖
紅外圖像同時(shí)在PL端進(jìn)行預(yù)處理和頻域殘差計(jì)算,其中預(yù)處理是利用Zynq的專用IP核,頻域殘差計(jì)算是經(jīng)過Vivado HLS工程綜合的IP核;然后預(yù)處理IP核通過VDMA1傳遞給DDR,頻域殘差I(lǐng)P核通過VDMA2傳遞給DDR,最后在PS端基于OpenCV進(jìn)行后續(xù)的ROI提取,識(shí)別和定位軟件處理。
在Vivado中搭建好硬件工程,將頻域殘差計(jì)算模塊生成比特流,導(dǎo)出硬件,啟動(dòng)SDK。同時(shí)將編寫好的包含OpenCV的識(shí)別和定位程序?qū)氲焦こ讨?,運(yùn)行結(jié)果如表1所示,經(jīng)測(cè)試運(yùn)輸機(jī)和戰(zhàn)斗機(jī)識(shí)別準(zhǔn)確率達(dá)到99%以上;表1顯示了運(yùn)輸機(jī)坐標(biāo)為(318,242),其長度和寬度分別為28、20,戰(zhàn)斗機(jī)坐標(biāo)為(322,260),其長度和寬度分別為14、6時(shí),不同幀數(shù)紅外圖像的處理速度。可以看出,每10幀圖像的處理時(shí)間大概在2.5 s,也即每1幀圖像的處理時(shí)間為0.25 s左右。
表1 不同幀數(shù)紅外圖像的處理速度
1)根據(jù)空空導(dǎo)彈精確打擊要求,提出了一種基于Zynq的空空導(dǎo)彈末端識(shí)別與定位系統(tǒng),包括基于顯著性分析的ROI提取算法、飛機(jī)識(shí)別與定位算法和基于Zynq與OpenCV的嵌入式圖像處理系統(tǒng)。
2)實(shí)驗(yàn)結(jié)果表明:該系統(tǒng)可以實(shí)現(xiàn)導(dǎo)彈空空導(dǎo)彈末端識(shí)別與定位的原理驗(yàn)證;大型運(yùn)輸機(jī)和小型戰(zhàn)斗機(jī)的識(shí)別率達(dá)到99%,單幀紅外圖像的處理速度達(dá)到0.25 s。