丁鑫,孟祥,田小林
(1.中國(guó)電子科技集團(tuán)第二十七研究所,河南 鄭州 450047;2.西安電子科技大學(xué)人工智能學(xué)院,陜西 西安 710000)
基于嵌入式平臺(tái)的紅外小目標(biāo)檢測(cè)算法由于移植性和實(shí)時(shí)性的要求都比較高,一直都是紅外探測(cè)設(shè)備研究熱點(diǎn)之一。針對(duì)無(wú)人機(jī)等“低慢小”目標(biāo)的探測(cè),尤其在低空復(fù)雜背景下,低慢小目標(biāo)迅速靠近時(shí),極大地增加了紅外探測(cè)設(shè)備檢出目標(biāo)的難度。為了能準(zhǔn)確檢測(cè)到此類目標(biāo),各國(guó)學(xué)者提出了多種算法。文獻(xiàn)[1]利用形態(tài)學(xué)濾波算法抑制圖像背景,并且結(jié)合圖像的均值和梯度,抑制閾值分割后圖像的噪聲干擾。文獻(xiàn)[2]利用中心域與鄰域?qū)Ρ榷?,通過(guò)提高原始圖像的對(duì)比度來(lái)剔除虛假目標(biāo)。文獻(xiàn)[3]利用高通濾波先抑制背景噪聲,然后利用邊緣檢測(cè)算子提取疑似目標(biāo),最后統(tǒng)計(jì)鄰域特征抑制雜波干擾。文獻(xiàn)[4]利用高通濾波抑制背景噪聲,通過(guò)統(tǒng)計(jì)局部區(qū)域的天空等背景和目標(biāo)的灰度特征來(lái)剔除假目標(biāo)。文獻(xiàn)[5]利用局部逆熵的方法來(lái)提高圖像的質(zhì)量,并利用同組濾波器來(lái)抑制噪聲。文獻(xiàn)[6]利用改進(jìn)的粒子群算法避免陷入局部最優(yōu),通過(guò)均方差修正預(yù)測(cè)的權(quán)值來(lái)檢測(cè)目標(biāo)。文獻(xiàn)[7]利用低慢小目標(biāo)特性,采用掃描線填充算法和自適應(yīng)閾值分割的策略剔除假目標(biāo)。
對(duì)于嵌入式設(shè)備來(lái)說(shuō),由于資源有限,很多解決“低慢小”目標(biāo)探測(cè)的方法不容易在嵌入式設(shè)備中實(shí)現(xiàn)[8]。ARM+FPGA 設(shè)計(jì)的紅外小目標(biāo)跟蹤系統(tǒng)[9]通過(guò)ARM 來(lái)處理核心算法,F(xiàn)PGA 用于圖像的預(yù)處理和視頻輸入輸出,這種系統(tǒng)設(shè)計(jì)方法極大降低了研發(fā)難度。
文中通過(guò)地物分割方法,將目標(biāo)所在區(qū)域和建筑物、山峰等地面所在區(qū)域進(jìn)行分割,利用分割得到的異型區(qū)域來(lái)剔除引導(dǎo)濾波檢測(cè)算法[10]的誤檢情況。將該算法移植到Hi3559A 平臺(tái)的ARM 核上,首先需要燒寫內(nèi)核,安裝交叉編譯環(huán)境,采用多線程和ARM 架構(gòu)中的NEON 指令集[11]并行技術(shù),將大型的矩陣運(yùn)算拆分,將算法中重復(fù)計(jì)算的部分采用多線程處理,并對(duì)Opencv 中的函數(shù)使用并行技術(shù)進(jìn)行進(jìn)一步加速,最后通過(guò)編譯器等的優(yōu)化,實(shí)現(xiàn)了復(fù)雜背景條件下紅外小目標(biāo)的高幀頻檢測(cè)的嵌入式移植。
地物分割首先使用Canny 算子計(jì)算出邊緣,接著利用邊緣點(diǎn)和非邊緣點(diǎn)在每一列的特征找到地物線的最高點(diǎn),最后對(duì)一些奇異點(diǎn)進(jìn)行修正處理,得到一個(gè)異形區(qū)域[12]。具體來(lái)說(shuō),將邊緣點(diǎn)作為每一列的分界點(diǎn)處理,在邊緣點(diǎn)的上下各找n個(gè)點(diǎn)。假設(shè)邊緣點(diǎn)在第y行,則分別選擇第y-k行到第y行、第y+1 行、第y+k行數(shù)據(jù),比較兩個(gè)區(qū)域內(nèi)的平均灰度差;接著選擇與y相鄰的兩點(diǎn)y-1,y+1,依次比較長(zhǎng)度為k的兩個(gè)區(qū)域的平均灰度差,在y行的上下各選擇n/2 個(gè)邊緣點(diǎn),共選擇n個(gè)這樣的邊緣點(diǎn),計(jì)算得到一個(gè)平均灰度差最大的點(diǎn),作為分界點(diǎn);將該分界點(diǎn)所在的行與該分界點(diǎn)對(duì)應(yīng)的這一列所在的邊緣點(diǎn)的行數(shù)進(jìn)行比較,如果分界點(diǎn)所在行與邊緣點(diǎn)的行的差值小于某個(gè)閾值(這里設(shè)為100),也認(rèn)為是奇異點(diǎn),對(duì)其進(jìn)行刪除。
使用引導(dǎo)濾波算法進(jìn)行背景抑制,引導(dǎo)濾波算法是假定圖像中任意一點(diǎn)可以由其鄰域的像素點(diǎn)進(jìn)行線性表示,并且對(duì)該點(diǎn)周圍的所有點(diǎn)求平均作為該點(diǎn)的值的一種濾波算法,算法原理如式(1)所示:
其中,Ii表示輸入圖I在i點(diǎn)的像素值,wk表示以k為窗口半徑,使用ak和bk進(jìn)行線性變換的系數(shù),qi為濾波后的圖像q在i點(diǎn)的像素值。利用線性回歸方程,使得濾波后的圖像q和輸入圖像P之間的差值最小,如式(2)所示:
其中,ε為平滑系數(shù),采用最小二乘法求解得到ak和bk:
式中,|w|為窗口wk中像素點(diǎn)的數(shù)量,μk和分別為圖像I在窗口wk處的平均值和方差,pk是圖像P在窗口wk的均值。得到ak和bk之后即可求得濾波后的圖像q。
將原圖與引導(dǎo)圖相減,得到引導(dǎo)差值圖。對(duì)于紅外探測(cè)設(shè)備來(lái)說(shuō),由于地雜波的影響[13],引導(dǎo)差值圖會(huì)檢測(cè)出大量地雜波的虛景[14],因此,通過(guò)地物分割方法,將異型區(qū)域內(nèi)的目標(biāo)剔除。采用自適應(yīng)閾值分割方法,將異型區(qū)域內(nèi)的值置為0,異型區(qū)域以外的值如果滿足要求,則置為1。自適應(yīng)閾值通過(guò)均值求得,均值的計(jì)算是地物線以上部分的所有點(diǎn)的和除以圖像的面積:
其中,f(i,j)表示原圖,G(i,j)表示引導(dǎo)圖,m×n表示圖像面積。自適應(yīng)閾值計(jì)算如下:
其中,nl和σ均為常數(shù),nl=140,σ=0.1。
最終的二值圖可以表示為:
其中,h(i,j)表示最終的二值圖,ik表示異形區(qū)域的行的臨界點(diǎn),jk表示異形區(qū)域的列的臨界點(diǎn)。
Hi3559A 開(kāi)發(fā)平臺(tái)是一款基于Hi3559AV100 芯片的開(kāi)發(fā)板,集成了雙核A73 和雙核A53,支持雙精度浮點(diǎn)運(yùn)算,使得功耗和性能達(dá)到平衡[15]。MPP 是海思提供的圖像處理軟件平臺(tái),主要完成視頻的輸入輸出和視頻處理以及拼接等功能,并且提供了豐富的API 接口供開(kāi)發(fā)者使用。MPP 主要包括以下模塊:VI、VPSS、VO、VENC、VDEC。MPP 處理流程如圖1 所示。首先通過(guò)交叉編譯,得到lib 動(dòng)態(tài)鏈接庫(kù),將lib 鏈接庫(kù)添加到海思開(kāi)發(fā)板中,在Linux 操作系統(tǒng)中使用cmake 腳本,將頭文件和lib 動(dòng)態(tài)鏈接庫(kù)添加進(jìn)來(lái),進(jìn)行交叉編譯,將得到的可執(zhí)行文件放入開(kāi)發(fā)板中運(yùn)行。文中使用VI 模塊進(jìn)行相機(jī)數(shù)據(jù)采集,VPSS 模塊進(jìn)行圖像處理操作,將得到的lib 文件放入其中,VO 模塊輸出圖像并通過(guò)HDMI 進(jìn)行輸出結(jié)果的字符顯示。
圖1 MPP處理流程圖
對(duì)于異型區(qū)域剔除虛景點(diǎn),考慮到Hi3559AV100芯片有四個(gè)ARM 核,因此設(shè)計(jì)一個(gè)四線程并行的架構(gòu),將整幅圖像分為四部分,每一部分處理對(duì)應(yīng)的異型區(qū)域。由于矩陣中的每一個(gè)點(diǎn)做閾值分割都相對(duì)獨(dú)立,因此將矩陣平均分成四份,可以極大提高了矩陣運(yùn)算的效率。多線程處理異型區(qū)域圖如圖2所示。
圖2 多線程處理異型區(qū)域圖
為了提高算法的運(yùn)行速度,將算法拆分,將矩陣乘法運(yùn)算利用Hi3559A 平臺(tái)的多核ARM 進(jìn)行多線程處理。fmean(I,r)表示使用r×r大小的濾波器對(duì)圖像I 做盒式濾波,ε為平滑因子,防止求得的a過(guò)大,這里a表示引導(dǎo)濾波的線性系數(shù)矩陣。I為原圖,P為引導(dǎo)圖,q為濾波后的圖像。mean、corr、var、cov 分別表示均值、相關(guān)性、方差和協(xié)方差。如圖3 所示,在Hi3559A 平臺(tái)的MPP 模塊中,利用兩個(gè)線程分別計(jì)算兩組不相關(guān)的矩陣數(shù)據(jù),一組為fmean(I,r)和fmean(P,r),另一組為fmean(a,r)和fmean(b,r)。
圖3 引導(dǎo)濾波算法流程圖
NEON 技術(shù)是一種SIMD(單指令多數(shù)據(jù))結(jié)構(gòu),提供了自動(dòng)向量化、NEON 內(nèi)聯(lián)函數(shù)優(yōu)化、匯編語(yǔ)言優(yōu)化、函數(shù)庫(kù)優(yōu)化的模式[16]。文中采用NEON 內(nèi)聯(lián)函數(shù)進(jìn)行優(yōu)化,無(wú)需第三方庫(kù)編譯,可移植性更好。
矩陣求和主要涉及加法運(yùn)算,如果使用原始的for 循環(huán),速度無(wú)法滿足要求,而使用Opencv 的sum函數(shù),依然有優(yōu)化的空間。文中使用NEON 技術(shù),對(duì)float32 類型的加法運(yùn)算進(jìn)行加速,相比于Opencv 的sum 函數(shù),速度上有了進(jìn)一步的提高。使用四個(gè)32位浮點(diǎn)型數(shù)求矩陣的和,利用空間換時(shí)間的思想,降低了算法的復(fù)雜度。使用NEON 內(nèi)聯(lián)函數(shù)計(jì)算的主要步驟如下:
1)使用vldlq_f32 函數(shù)從Mat 類型的圖像中加載四個(gè)像素的數(shù)據(jù);
2)使用vaddq_f32 函數(shù)同時(shí)將四個(gè)像素?cái)?shù)據(jù)添加到128 位寄存器中;
3)使用vget_low_f32 函數(shù)和vget_high_f32 函數(shù)將128 位寄存器切成兩個(gè)64 位寄存器;
4)使用vadd_f32 函數(shù)對(duì)兩個(gè)64 位寄存器內(nèi)的數(shù)求和。
文中采用無(wú)人機(jī)作為目標(biāo),以城市低空實(shí)驗(yàn)的數(shù)據(jù)作為實(shí)驗(yàn)來(lái)源,將檢測(cè)算法移植并部署到Hi3559A平臺(tái)上,使用采集的三種不同類型的城市背景的圖像50 余張,采用局部信噪比和背景抑制因子以及檢測(cè)概率三組參數(shù)來(lái)對(duì)提出的算法和經(jīng)典的Top-hot算法、LCM 算法(Local Contrast Method)、雙邊濾波算法進(jìn)行定量比較。
采用四種算法的紅外圖像信噪比和背景抑制因子的對(duì)比如表1 所示。其中,BSF 為背景抑制因子。
表1 幾種檢測(cè)算法的性能對(duì)比
從表1 可以看出,文中提出的基于地物分割的引導(dǎo)濾波算法在背景抑制上相比于其他算法有一定的優(yōu)勢(shì),并且基于地物分割的引導(dǎo)濾波算法相比雙邊濾波,細(xì)節(jié)處理更好,算法的可移植性更高。
采用四種算法的檢測(cè)概率和虛警率對(duì)比如表2所示。
表2 幾種檢測(cè)算法的檢測(cè)率和虛警率對(duì)比
從表2 可以看出,基于地物分割的引導(dǎo)濾波算法的最大優(yōu)勢(shì)在于明顯降低圖像的虛警率,在檢測(cè)概率上也有比較大的提升,能夠大大提高搜索目標(biāo)的效率。對(duì)于高幀頻光電探測(cè)設(shè)備來(lái)說(shuō),虛警率的降低有助于航跡關(guān)聯(lián)和目標(biāo)匹配。
從圖4 引導(dǎo)濾波算法仿真結(jié)果可以看出,對(duì)于地物復(fù)雜背景,使用引導(dǎo)濾波進(jìn)行背景抑制極易出現(xiàn)假目標(biāo),并且無(wú)法通過(guò)面積和長(zhǎng)寬比以及灰度差進(jìn)行篩選,因此通過(guò)地物分割策略,在決策時(shí)對(duì)地物分割線(如圖5 所示)以下的目標(biāo)進(jìn)行篩選,如圖6所示,剔除虛假目標(biāo)后即可得到最終真實(shí)目標(biāo)。
圖4 引導(dǎo)濾波(一)
圖5 地物分割線(一)
圖6 基于地物分割的引導(dǎo)濾波(一)
文中方法不僅可以對(duì)建筑物以上的無(wú)人機(jī)進(jìn)行有效檢測(cè),還可以對(duì)高低建筑物之間的無(wú)人機(jī)通過(guò)地物分割的引導(dǎo)濾波方法進(jìn)行檢測(cè)(如圖7-9所示),而傳統(tǒng)的基于直線分割策略的引導(dǎo)濾波方法無(wú)法剔除虛假目標(biāo)。如圖7 所示,使用地物分割的引導(dǎo)濾波算法依然能夠有效提取目標(biāo),如果只采用海天線等直線提取策略,則無(wú)法解決在高低兩個(gè)建筑物之間的無(wú)人機(jī)檢測(cè)問(wèn)題。通過(guò)地物分割將地物線以下的異形區(qū)域進(jìn)行分割(如圖8 所示),將該區(qū)域內(nèi)檢測(cè)出來(lái)的目標(biāo)當(dāng)成假目標(biāo)處理,如圖9 所示,通過(guò)基于地物分割的引導(dǎo)濾波策略得到最終兩個(gè)建筑物之間的“低慢小”目標(biāo)。
圖7 引導(dǎo)濾波(二)
圖8 地物分割線(二)
圖9 基于地物分割的引導(dǎo)濾波(二)
由于地物的特征相對(duì)固定,只需將該方位角度和俯仰角度的地物區(qū)域燒寫進(jìn)程序,當(dāng)需要地物分割時(shí)再進(jìn)行開(kāi)啟,因此地物分割部分不考慮時(shí)間的優(yōu)化問(wèn)題,文中主要分析和試驗(yàn)了引導(dǎo)濾波和自適應(yīng)閾值分割部分的檢測(cè)算法優(yōu)化。
由表3 可以看出,引導(dǎo)濾波優(yōu)化和異型區(qū)域分割分別采用二線程和四線程進(jìn)行加速,分別得到1.70 和3.22 的加速比;求矩陣均值和矩陣均值的平方和采用NEON 技術(shù),能夠得到1.69 的加速比??倳r(shí)間經(jīng)過(guò)優(yōu)化已經(jīng)能在10 ms 內(nèi)完成引導(dǎo)濾波算法優(yōu)化并最終檢測(cè)出目標(biāo),說(shuō)明了使用Hi3559AV100芯片經(jīng)過(guò)優(yōu)化可以在100 Hz 頻率下完成目標(biāo)檢測(cè)。
表3 各模塊優(yōu)化前后運(yùn)行效率對(duì)比表
文中首先在復(fù)雜背景并且有地物干擾的情況下,提出了一種地物分割的算法,該算法先通過(guò)Canny算子得到地物的邊緣,用邊緣點(diǎn)和非邊緣點(diǎn)在每一列的特征找到地物線的最高點(diǎn),最后對(duì)一些奇異點(diǎn)進(jìn)行修正處理,得到一個(gè)異形區(qū)域,將異形區(qū)域用于計(jì)算閾值,將地物部分可能出現(xiàn)的假目標(biāo)舍棄,減少了虛警率。文中還提出將該算法移植到嵌入式設(shè)備中,采用多線程處理和NEON 技術(shù)加速算法中的矩陣運(yùn)算,最終實(shí)現(xiàn)了在10 ms 內(nèi)對(duì)640×512 分辨率大小圖像的處理。下一步將進(jìn)一步優(yōu)化算法,調(diào)整不同的算法和參數(shù)來(lái)應(yīng)對(duì)不同的場(chǎng)景。