王西超,高 頌,浦 樂,曲曉雷
(1 上海電機學院電氣學院,上海 201306;2 河南科技大學農業裝備工程學院,河南洛陽 471003;3 中國空空導彈研究院,河南洛陽 471000;4 沈陽飛機設計研究所,沈陽 110035)
空空導彈彈載光電導引平臺以紅外或其他光譜波段為信息載體,具有極高的時間、空間和頻率分辨力,在精密制導、光電對抗、火控與瞄準、飛行輔助等領域,日益發揮著重大的作用。基于彈載光電平臺的飛機目標檢測是指對光電傳感器獲取的圖像序列進行處理與分析,充分利用傳感器采集的圖像信息完成目標檢測[1-6],并對檢測出的目標進行穩定跟蹤的過程。目標一旦被檢測出,通過有效地跟蹤就可獲得目標的位置、速度、加速度等運動參數。
紅外波段的目標圖像與背景對比度低,目標邊緣較模糊,圖像噪聲大,導致紅外圖像中飛機等小目標的檢測與識別較為困難。目標檢測與跟蹤系統一般用嵌入式系統實現,傳統的嵌入式ARM圖像處理平臺計算能力有限、響應速度較慢[7-10];FPGA憑借并行硬件結構運算速度較快,但其使用Verlog HDL開發圖像處理算法難度較大[11-16]。
針對以上問題,本文以空空導彈末端精確打擊為研究目標,以大型運輸機和小型戰斗機的紅外圖像為對象,結合紅外圖像小目標檢測與識別要求,采用Zynq-7000系列的ARM+FPGA可編程SOC[17-19],運用軟硬件協同設計的方法搭建空空導彈末端識別與定位系統。
針對紅外目標檢測問題,通過對紅外圖像的分析得出:雖然運輸機和戰斗機目標較小,但在局部區域,紅外目標的輻射強度還是在一定程度上高于局部背景區域。基于此,將顯著性分析引入到紅外目標檢測中,提出一種基于顯著性分析的小目標檢測算法,通過簡單的顯著性計算得到紅外圖像的顯著圖,消除部分背景雜波的干擾,然后通過自適應閾值分割顯著圖,提取出感興趣區域,進一步在感興趣區域中計算多尺度窗口的顯著度,完成運輸機和戰斗機的小目標檢測。
圖1描述了空空導彈末端識別與定位系統算法框架,其設計思想分為目標檢測過程和目標識別過程。目標檢測過程首先對輸入的包含運輸機和戰斗機的紅外圖像進行頻域殘差計算,獲得紅外圖像的顯著圖;然后根據設定的閾值進行閾值分割;進而通過score計算模塊計算感興趣區域中窗口的顯著度;最后通過NMS計算模塊進行非極大值抑制,給定一個抑制策略,將score值較小的窗口抑制掉,合并score值相同的窗口,最終獲得幾個潛在的目標感興趣區域(region of interest,ROI)。目標識別過程的主要任務是對獲得的若干個ROI區域進行識別,判斷其是否為所要找的目標,確定目標后,進行特征提取,利用分類器判別飛機類型(運輸機還是戰斗機),并給出飛機坐標,為空空導彈末端打擊提供參數。

圖1 空空導彈末端識別與定位系統算法框架
該模塊通過顯著性檢測獲得紅外圖像的顯著圖,其輸入為飛機的原始紅外圖像,輸出為其顯著圖,顯著性檢測步驟為:
1)利用傅里葉變換將飛機紅外圖像從空間域轉換到頻域;
2)對頻譜幅值取對數后得到其Log譜;
3)用局部平均濾波器對Log譜進行平滑;
4)利用Log譜減去進行均值濾波后的差,獲得譜殘差;
5)對譜殘差進行傅里葉反變換獲得其顯著圖。
閾值分割模塊的目的是提取出圖像中最顯著的區域,其輸入是經過頻域殘差計算后的顯著圖,輸出為顯著圖的閾值圖。
score計算模塊的功能是計算感興趣區域中窗口的顯著度,其輸入為含有飛機目標的原始紅外圖像,輸出為可能含有目標的窗口及其對應的score值。圖2為score計算模塊的流程圖。

圖2 score計算模塊流程圖
該部分的主要功能是獲得目標的ROI區域,其輸入為初步計算得到的目標窗口的坐標,輸出為若干個目標潛在區域的ROI。其原理為首先合并score值相同的窗口,然后經過非極大值抑制,利用抑制策略,將score值較小的窗口抑制掉,獲得若干個具有潛在目標的ROI。
目標識別模塊的主要功能是對獲得的ROI區域進行識別,判斷其是否為所要找的目標。其輸入為目標檢測模塊得到的目標窗口坐標矩陣,輸出為精確的目標位置。主要方法為首先對上一步獲得的ROI進行特征提取,然后利用離線訓練的分類器,依據不同特征,識別出該ROI的飛機類型,并計算出其精確坐標值。
末端識別與定位系統的硬件平臺主要包括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目標檢測、目標識別和定位工作。
PS部分的軟件設計包含嵌入式Linux系統搭建、VDMA模塊驅動程序設計和應用程序設計3個部分。
整個軟件架構在ARM平臺中運行,選取C++與shell腳本相結合的方式編程實現整個算法。其中,算法的實現主要采用C++語言,而ARM平臺中C++程序的編譯與運行則采用shell腳本進行控制。同時,利用C++實現整個算法的過程中,算法程序的開發充分利用OpenCV的函數庫及其數據結構,加快程序的運行速度。通過構建嵌入式圖像處理Linux系統需要:嵌入式系統文件構建、嵌入式系統移植、Linux下OpenCV庫的安裝3步。
應用程序由于不具有直接訪問內核空間的功能,所以不具有直接訪問硬件的權限,因而應用程序需要通過使用Linux內核的API或系統調用間接與硬件設備進行數據交互。在PL部分使用Vivado HLS構建的IP核屬于硬件資源(如頻域殘差計算IP核和圖像預處理IP核),所以在Zynq嵌入式Linux操作系統下,應用程序不能夠直接訪問PL部分構建的IP核,需要設計AXI VDMA驅動程序,使應用程序能夠方便的控制PL部分構建的IP核。該系統共有兩個AXI VDMA驅動程序,其中圖像預處理IP核通過AXI VDMA1進行數據傳輸,頻域殘差計算IP核通過AXI VDMA2進行數據傳輸。
目標檢測與識別算法的整體算法分為彈載系統在線識別系統和離線樣本訓練系統。離線樣本訓練系統通過對大量運輸機和戰斗機紅外圖像進行訓練,進行特征提取獲得運輸機和戰斗機的特征向量,然后訓練SVM分類器對運輸機和戰斗機進行分類;彈載在線識別系統首先根據顯著性分析方法得到紅外圖像顯著圖,然后基于score分值計算獲得多個ROI,進而在多個ROI上進行特征提取,獲得相應的特征向量,接著利用離線訓練的SVM分類器對ROI進行分類,獲得最終包含運輸機和戰斗機的ROI,并將其進行識別和定位。紅外圖像的處理流程圖如圖4所示。

圖4 紅外圖像處理流程圖
紅外圖像同時在PL端進行預處理和頻域殘差計算,其中預處理是利用Zynq的專用IP核,頻域殘差計算是經過Vivado HLS工程綜合的IP核;然后預處理IP核通過VDMA1傳遞給DDR,頻域殘差IP核通過VDMA2傳遞給DDR,最后在PS端基于OpenCV進行后續的ROI提取,識別和定位軟件處理。
在Vivado中搭建好硬件工程,將頻域殘差計算模塊生成比特流,導出硬件,啟動SDK。同時將編寫好的包含OpenCV的識別和定位程序導入到工程中,運行結果如表1所示,經測試運輸機和戰斗機識別準確率達到99%以上;表1顯示了運輸機坐標為(318,242),其長度和寬度分別為28、20,戰斗機坐標為(322,260),其長度和寬度分別為14、6時,不同幀數紅外圖像的處理速度。可以看出,每10幀圖像的處理時間大概在2.5 s,也即每1幀圖像的處理時間為0.25 s左右。

表1 不同幀數紅外圖像的處理速度
1)根據空空導彈精確打擊要求,提出了一種基于Zynq的空空導彈末端識別與定位系統,包括基于顯著性分析的ROI提取算法、飛機識別與定位算法和基于Zynq與OpenCV的嵌入式圖像處理系統。
2)實驗結果表明:該系統可以實現導彈空空導彈末端識別與定位的原理驗證;大型運輸機和小型戰斗機的識別率達到99%,單幀紅外圖像的處理速度達到0.25 s。