史豪斌, 胡航語
(西北工業(yè)大學 計算機學院, 陜西 西安 710072)
座艙人機交互系統(tǒng)是人員與裝備的人機接口,在低能見度條件下,人員通過判讀座艙顯示器中呈現(xiàn)的紅外視頻畫面,獲得艙外視覺感知信息,進一步下達操作指令。紅外視頻傳感器能夠突破人類對光譜感知的范圍,獲得更加豐富的環(huán)境反射和輻射信息,使得人員獲得等效目視能力,擴展其低能見度條件下的任務能力。然而,紅外傳感器因為成像頻譜、成像方式以及大氣衰減等眾多原因,圖像畫面相對可見光較為模糊,不利于人員的判讀理解,因此在送顯之前通常需要進行紅外圖像細節(jié)增強處理。
根據(jù)FAA等相關規(guī)定,座艙顯示系統(tǒng)的顯示延遲必須小于100 ms。隨著紅外傳感器分辨率的不斷提升,處理的像素規(guī)模成幾何倍數(shù)增加,這對以同構(gòu)CPU為主要處理單元的嵌入式計算平臺處理能力提出了巨大挑戰(zhàn)。CPU在處理數(shù)據(jù)的過程中,需要讀取總線后把數(shù)據(jù)在內(nèi)存中進行緩存,然后通過指令和數(shù)據(jù)指令逐個進行像素處理。雖然通過Cache緩存機制可以隱藏一定的計算過程中的內(nèi)存讀寫,然而總線到內(nèi)存的數(shù)據(jù)緩存無法在計算過程中進行隱藏。
本文針對FPGA特定領域處理架構(gòu),提出基于FPGA的紅外圖像增強算法。該算法通過基于視頻流處理模型和局部相關特征,通過緩沖線(buffer line)和緩沖窗(window line)機制,進行圖像細節(jié)增強。進一步結(jié)合空域查找表(space table)和值域查找表(range table)的方式,降低濾波過程中的計算量,實現(xiàn)處理和傳輸過程中的數(shù)據(jù)延遲,達到實時處理性能。最后,基于Xilinx HLS高層次綜合工具,通過C++語言實現(xiàn)算法,結(jié)合FPGA硬件特征,實現(xiàn)性能優(yōu)化。通過對比本文算法在FPGA端和CPU端算法的表現(xiàn),以及能夠獲得最為高效的并行圖像增強算法,驗證本文算法的低延遲、高幀率的相關處理性能。
圖像細節(jié)增強分為傳統(tǒng)方法和神經(jīng)網(wǎng)絡方法,其中傳統(tǒng)方法通過空域濾波或者頻域濾波的方式增強特定區(qū)域圖像細節(jié),而神經(jīng)網(wǎng)絡方法則是通過訓練深度學習網(wǎng)絡模型參數(shù),探索輸入圖像和增強后圖像的映射關系。
在傳統(tǒng)圖像細節(jié)增強領域,基于導向濾波的增強方法[1]和基于雙邊濾波[2]的增強方法較為流行。后續(xù)的方法大多數(shù)基于此類方法進行改進。在加速計算方法方面,基于圖像上采樣和下采樣的方式降低像素規(guī)模,極大提升了算法的速度。但是需要對圖像進行多次盒函數(shù)濾波(box filter),因此必須進行多次圖像緩存,增加了計算延遲?;陔p邊濾波的方法,對濾波半徑R內(nèi)的像素進行空域權(quán)重(space weight)和值域權(quán)重(range weight)的加權(quán)平均,以獲得邊緣保持濾波效果。但隨著濾波半徑的增長,計算量呈現(xiàn)幾何倍數(shù)增長。為了加速基于雙邊濾波的方法,Yang[3]對雙邊濾波器進行了數(shù)值近似,使得計算復雜度下降到O(N)。然而數(shù)值近似必然犧牲一定的精度,在對畫面要求不高的情況下可以接受。Cheng等[4]通過map-reduce的并行計算思想以及定點數(shù)替代浮點數(shù)計算方法,進一步加速了迭代雙邊濾波的圖像細節(jié)增強方法。然而,該算法基于通用多核CPU的計算架構(gòu),所有數(shù)據(jù)必須先進行緩存,然后才能參與計算,這是通用CPU體系架構(gòu)的固有缺陷。本文算法基于FPGA的特定領域架構(gòu),可以在讀取總線數(shù)據(jù)時不進行全局緩存,直接計算后輸出,從而實現(xiàn)零存儲延遲計算。
在基于深度學習的圖像細節(jié)增強領域,研究人員分別針對低照度、水下圖像顏色校正、紅外圖像增強等需求都提出了對應的解決方法[5-7]。Qi等[8]提出一種異構(gòu)Rybak神經(jīng)網(wǎng)絡模型(HRYNN),該算法更加接近神經(jīng)生理模型,具有較好的主觀評價效果。為了加速計算過程,Gharbi等[9]提出的HDRnet充分融合了神經(jīng)網(wǎng)絡的特征表示能力與雙邊濾波器的加速計算能力,能夠擬合任意參數(shù)的濾波器。然而,大量的仿射參數(shù)需要預先存儲在局部緩存中,必然引起較大的訪存延遲。
雖然深度神經(jīng)網(wǎng)絡類算法在大多數(shù)情況下效果相對傳統(tǒng)算法更加優(yōu)秀,但是其存在:①訓練數(shù)據(jù)問題;②模型解釋問題;③處理性能問題。限制了其在座艙顯示交互類應用的部署。因此,目前來說,在座艙顯示交互領域,還是傾向于傳統(tǒng)的處理方法。
本文針對FPGA的軟硬件處理特性,改造經(jīng)典的雙邊濾波圖像增強方法,實現(xiàn)特定領域紅外圖像細節(jié)增強算法。該算法通過建立局部緩存機制和查表機制實現(xiàn)FPGA端傳輸處理一體化的計算架構(gòu)。算法僅緩存必須的局部像素,少量延遲即可輸出計算結(jié)果,不需要進行全局圖像緩存,極大地加速了計算過程。經(jīng)過加速優(yōu)化的紅外細節(jié)增強算法,能夠?qū)?k分辨率圖像實現(xiàn)實時處理,幾乎不會增加額外的緩存延遲,滿足座艙顯示應用需求。
單幅圖像I可以分解為低頻分量IL與高頻分量IH兩部分,即
I(p)=IL(p)+IH(p)
(1)
式中,p=[row,col]T為像素位置索引。任意位置的圖像低頻分量可以通過空域平滑濾波得到,即
IL(p)=f(I(p))
(2)
式中,f(·)為空間域濾波函數(shù),通常表示對圖像I的鄰域像素進行加權(quán)平均。在得到圖像低頻分量之后,高頻分量直接通過公式(1)得到,即IH(p)=I(p)-IL(p)。圖像的細節(jié)部分體現(xiàn)在圖像的高頻分量中,通過對圖像高頻分量進行適當增益即可實現(xiàn)圖像的細節(jié)增強,即
IE(p)=IL(p)+γ·IH(p)
(3)
式中:IE為細節(jié)增強后的圖像;γ>1為細節(jié)增強系數(shù),通過對IH分量的增益實現(xiàn)圖像細節(jié)的放大。
如果f(·)為高斯濾波器等各向同性濾波器,會使得圖像邊緣部分模糊化,無法保持細節(jié),造成所謂的光暈(halo)現(xiàn)象?;谛阅芎图铀贊摿?,本文選用雙邊濾波器進行圖像低頻分量的提取,即
式中:S為q的濾波半徑覆蓋的鄰域像素位置;‖·‖為距離范數(shù),通常采用2次范數(shù),Gσs(·)和Gσr(·)分別為空域高斯(spatial Gaussian)和值域高斯(range Gaussian)濾波函數(shù),Wp為歸一化系數(shù)
(5)
雙邊濾波器過程中空間距離和像素值同時相近的像素點才能具有更強的相似性和較大的濾波權(quán)重。在圖像邊緣位置,即使圖像空間位置相近,但是像素值差異較大,其對應的濾波權(quán)重較低,因此能夠?qū)崿F(xiàn)邊緣保持濾波,避免光暈現(xiàn)象。
雖然雙邊濾波具有較好的圖像低頻分量提取效果,但是對每一個像素,假設濾波半徑為R,則需要進行(2×R+1)2次加權(quán)計算。當R>1時,計算復雜度呈幾何倍數(shù)增加,急劇增加了算法處理的數(shù)據(jù)量。
在基于FPGA的圖像處理系統(tǒng)中,像素數(shù)據(jù)通常按照順序從左上角像素到右下角像素逐個傳輸,通常一個時鐘周期能夠讀取一個像素值到局部緩存中。而圖像細節(jié)增強算法具有局部性,對于處理過的像素,局部緩存的相鄰像素值就可以拋棄,這就避免了對整個圖像的緩存,形成典型的處理數(shù)據(jù)流。同時對單個像素的操作過程中,整個邏輯電路組成pipeline,以保證每個時鐘周期內(nèi)可以輸出一個像素。本文提出一種基于局部緩存的圖像細節(jié)增強方法(buffer based image detail enhancement,BIDE),通過采用少量局部緩存以及相應的查找表進行加速,實現(xiàn)了大分辨率紅外圖像細節(jié)增強。
圖1 圖像細節(jié)增強加速算法圖示
如圖1所示,假設濾波半徑R=1, 輸出像素只與輸入3×3鄰域像素相關。加速過程僅需維護line-buffer和window-buffer 2個緩沖區(qū)。其中l(wèi)ine-buffer保存前2行輸入像素值,window-buffer則維護當前需要濾波像素的鄰域像素值。通過不斷更新輸入像素,并舍棄不參與計算的像素值,利用最小的緩存實現(xiàn)增強像素的輸出。具體的BIDE加速算法如下所示:
algorithm 1: buffer based image detail enhancement
input: current pixelI(p); window bufferbwin; line bufferbline; filter radiusR=1; scale factorγ=2.
output: detail enhanced pixelIE(p).
1 for each input pixelI(p),p=[row,col]T
2 step(1): left shift window buffer:
3bwin(i,j)=bwin(i,j-1), 0
and 1 4 step(2): read right column: 5bwin(0,0)=I(p) ; 6bwin(1,0)=bline(0,col); 7bwin(2,0)=bline(1,col); 8 step(3): up shift line buffer 9bline(2,col)=bline(1,col); 10bline(1,col)=bline(0,col); 11bline(0,col)=I(p); 12 step(4): apply image detail enhancement for each pixel 13IE(p)=f(I(p))+γ(I(p)-f(I(p))), local filter rangeS=bwin. 在遍歷像素時,可以通過Xilinx HLS中的#Pragma HLS PIPELINE指令來指導綜合過程,使得一個時鐘周期能夠處理一個像素,降低算法延遲。算法step(4)中,主要計算量為局部雙邊濾波函數(shù)f(I(p))。此時參與局部濾波的像素值已經(jīng)全部讀入window-buffer中,需要逐像素加權(quán)平均space weight和range weight后即可輸出濾波值。而局部圖像之間的相對位置關系已經(jīng)確定,因此可以采用圖2的space table提前存儲空域權(quán)重。同樣,圖像的之間的亮度差值范圍確定后,可以提前計算并存儲range table,在計算的過程中僅需查找表即可實現(xiàn)濾波輸出,極大地降低計算量。space table和range table 可以通過Xilinx HLS中的#pragma HLS ARRAY_PARTITION指令指定為寄存器變量,以增加其訪問速度。 圖2 基于查找表的局部雙邊濾波加速 如圖3所示,在上述BIDE算法中,假設R=1,則輸入像素掃描到第3行時,才輸出第2行像素。同樣,當輸入像素掃描到最后1行時,輸出倒數(shù)第2行像素。此時,對于邊界像素如果進行復雜的邏輯判斷,則會極大地提升延遲,本文算法直接輸出輸入像素,對結(jié)果影響不大。同樣起始列和末尾列像素的計算過程中,window buffer跨行填充,無法保證參與計算的鄰域像素值完全正確,此時也不必進行復雜邏輯判斷,僅需正常window buffer計算,實現(xiàn)循環(huán)濾波,對結(jié)果影響也不大。 圖3 BIDE算法的邊界條件 為了驗證本文提出的BIDE算法的有效性,采用Xilinx V7 690T FPGA芯片進行算法部署(BIDE-FPGA),采用Xilinx HLS 高層次綜合環(huán)境進行綜合,編程語言采用HLS C++。為了驗證算法相對嵌入式通用處理器的優(yōu)勢,采用Nvidia TX2多核ARM計算平臺對C++算法進行部署(BIDE-CPU)。同時,在TX2平臺實現(xiàn)了基于迭代雙邊濾波器的圖像細節(jié)增強算法(PIDE)[5],并采用單核、雙核和四核版本進行算法對比,驗證本文提出算法的性能。 如圖4所示,通過對紅外光譜圖像進行BIDE細節(jié)增強,能夠提升整個畫面的細節(jié)呈現(xiàn)度。在一些較暗區(qū)域顯著提升了對比度,凸顯了增強細節(jié),提升人員對傳感畫面的辨識程度。 圖4 BIDE算法圖像增強結(jié)果 如表1所示,驗證了BIDE算法在FPGA平臺上綜合后的性能表現(xiàn)。濾波半徑R=3的情況下,HLS綜合工具給出相應的Latency和Interval。在4k分辨率(4 096×2 160)下所需Interval僅為9 333 362。對比4k分辨率的像素數(shù)量(8 847 360),近似達到一個時鐘周期輸出一個濾波值的極限加速性能。在250 MHz(時鐘周期4 ns)下對應運行時間僅為37.3 ms,幀率26.8 frame/s。Latency時鐘周期僅比Interval多3 061,對應12.24 us,幾乎可以忽略。因此,BIDE-FPGA 算法具有實時的計算性能,同時緩存延遲接近于0。 表1 多個分辨率下算法指標 (時鐘周期) 表2對比了不同分辨率下本文算法在FPGA端(BIDE-FPGA)和CPU端(BIDE-CPU)的性能表現(xiàn),同時對比PIDE算法在不同運行核數(shù)的表現(xiàn)。為了保持一致性,本文算法按照250 MHz運行頻率換算為對應的圖像處理時間??梢钥闯?,BIDE算法在FPGA進行部署后,算法處理時間效率提升50倍以上,滿足實時處理需求。對比CPU端優(yōu)化的PIDE算法,BIDE-FPGA算法相對4核算法減少5%左右運行時間。 表2 不同算法的處理時間對比 ms 本文處理算法的數(shù)據(jù)緩存延遲幾乎可以忽略。對于CPU端算法,以嵌入式計算系統(tǒng)中常用的ARINC818視頻總線速度4.25 Gb/s,對于4k分辨率紅外數(shù)據(jù)進行緩存,至少需要24 ms的緩存時間。緩存過程中無法進行計算,因此該延遲無法隱藏在計算中。本文的BIDE算法緩存時間(12.24 μs)對比CPU端算法延遲幾乎可以忽略。 同樣對于不同的濾波半徑R,單像素處理數(shù)據(jù)量按照濾波半徑R的平方增加,處理時間在CPU端也急劇增加,如圖5所示。然而在FPGA端,處理時間增加非常有限,如圖6所示。這是因為在FPGA端,額外的計算量只是增加了部分邏輯電路,對于形成流水并行的圖像處理隊列,還能保持一個周期輸出一個濾波像素的優(yōu)異性能。 圖5 BIDE-CPU性能表現(xiàn) 圖6 BIDE-FPGA表現(xiàn) 本文面向座艙顯示領域低延遲、高幀率的紅外圖像細節(jié)增強處理需求,對傳統(tǒng)基于雙邊濾波器的圖像細節(jié)增強算法進行加速。針對FPGA平臺的軟硬件特性,提出基于line buffer和window buffer的并行加速方案。通過FPGA的pipeline機制,結(jié)合space table和range table等方式實現(xiàn)紅外細節(jié)增強算法的極限加速。對4k分辨率圖像達到37.3 ms的處理性能,并且附加的存儲延遲幾乎為0,極大地滿足了座艙顯控系統(tǒng)大分辨率紅外圖像細節(jié)增強的需求。2.3 邊界條件
3 實驗對比與分析
3.1 實驗條件
3.2 實驗結(jié)果
4 結(jié) 論