李 娜,劉文進(jìn),杜育寬,陳褒丹
(海南大學(xué)信息與通信工程學(xué)院,海南 ???570228)
由于紅外傳感器本身具有的非均勻性的影響,導(dǎo)致紅外圖像存在對(duì)比度低、細(xì)節(jié)模糊等問題[1]。目前,大部分的紅外圖像清晰化處理是基于計(jì)算機(jī)端進(jìn)行,雖然處理效果較好,但是場(chǎng)地適應(yīng)性差,對(duì)外設(shè)條件要求較高。因此,設(shè)計(jì)一個(gè)紅外圖像清晰化系統(tǒng)以增強(qiáng)對(duì)比度、突出紅外圖像細(xì)節(jié)特征的同時(shí)能夠集成在相機(jī)機(jī)芯實(shí)時(shí)地處理紅外圖像是十分必要的。
傳統(tǒng)的紅外圖像增強(qiáng)算法分為空間域增強(qiáng)和頻域增強(qiáng)。頻域增強(qiáng)的算法有基于傅里葉變換、小波變換、輪廓波變換等[2-3],文獻(xiàn)[2]通過離散小波變換將輸入圖像分解為低頻和高頻子帶,利用卷積神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)重建高頻子帶的圖像特征進(jìn)而重建灰度圖像,有效豐富了圖像細(xì)節(jié)信息。由于這類算法采用非線性變換函數(shù)對(duì)系數(shù)進(jìn)行變換,增強(qiáng)圖像的細(xì)節(jié)高頻信息,同時(shí)抑制噪聲的放大,可以取得較好的增強(qiáng)效果,但通常計(jì)算量較大,不利于硬件實(shí)現(xiàn)??臻g域增強(qiáng)的算法有空域?yàn)V波、Retinex算法、直方圖均衡化(HE,Histogram Equalization)[4-6]及其改進(jìn)的算法等。這類算法因其簡(jiǎn)單有效,可實(shí)現(xiàn)硬件的實(shí)時(shí)處理等優(yōu)勢(shì)而被廣泛地應(yīng)用于實(shí)際。文獻(xiàn)[4]提出了一種基于Retinex理論與概率非局部均值相結(jié)合的紅外圖像增強(qiáng)方法,首先通過單尺度Retinex方法調(diào)整圖像中過暗和過亮部分的灰度級(jí),然后分層對(duì)圖像進(jìn)行增強(qiáng),能夠提升圖像對(duì)比度但算法會(huì)出現(xiàn)局部區(qū)域過度增強(qiáng)的現(xiàn)象。Wan等提出的自適應(yīng)平臺(tái)直方圖均衡化算法進(jìn)行圖像增強(qiáng)時(shí)效果有一定的改善,但在處理大動(dòng)態(tài)范圍的圖像時(shí),處理后圖像細(xì)節(jié)損失較大,造成圖像模糊。文獻(xiàn)[6]提出了一種雙邊濾波和平臺(tái)直方圖均衡的紅外圖像增強(qiáng)算法的FPGA實(shí)現(xiàn)方法,有效提升了圖像清晰度但是占用了較多的硬件資源。拉普拉斯銳化是經(jīng)典的空域?yàn)V波方法,能夠有效豐富圖像細(xì)節(jié)信息并且易于硬件實(shí)現(xiàn),但其在增強(qiáng)圖像邊緣特征的同時(shí)會(huì)放大圖像的噪聲,進(jìn)而影響圖像質(zhì)量。文獻(xiàn)[7]通過拉普拉斯濾波實(shí)現(xiàn)紅外圖像細(xì)節(jié)增強(qiáng),然后統(tǒng)計(jì)增強(qiáng)后圖像直方圖信息進(jìn)行灰度映射,有效提高了輸出圖像的對(duì)比度,但是算法設(shè)置的參數(shù)較多,場(chǎng)景自適應(yīng)能力較弱。
本文設(shè)計(jì)的紅外圖像清晰化系統(tǒng)為了解決圖像在拉普拉斯銳化后產(chǎn)生噪聲放大的問題,首先采用均值濾波器對(duì)輸入紅外圖像進(jìn)行平滑濾波。然后通過拉普拉斯算子進(jìn)行圖像細(xì)節(jié)增強(qiáng),最后利用Gamma校正曲線平衡增強(qiáng)后紅外圖像的灰度,使其更加適應(yīng)于人眼視覺。對(duì)硬件系統(tǒng)的可操作性進(jìn)行了分析,并在FLIR公司的非制冷長波紅外相機(jī)和FPGA處理電路上進(jìn)行實(shí)驗(yàn)驗(yàn)證。結(jié)果表明,硬件系統(tǒng)處理后的紅外圖像對(duì)比度高,目標(biāo)景物的輪廓和細(xì)節(jié)特征突出。
拉普拉斯濾波是常用的圖像增強(qiáng)方法,能較好的增強(qiáng)圖像細(xì)節(jié)信息,同時(shí)便于硬件實(shí)現(xiàn),缺點(diǎn)是容易放大噪聲。拉普拉斯算子是最簡(jiǎn)單的各向同性微分算子,具有旋轉(zhuǎn)不變性[8]。對(duì)于離散的數(shù)字圖像f(x,y),定義拉普拉斯算子?2f為:
(1)
根據(jù)二階微分的定義,有:
(2)
(3)
將式(2)和式(3)代入式(1),可得到:
?2f=f(x+1,y)+f(x-1,y)+f(x,y+1)+f(x,y-1)-4f(x,y)
(4)
由式(4)可以看出在一幅灰度圖像中,任一像素點(diǎn)的拉普拉斯算子計(jì)算結(jié)果為該像素點(diǎn)與其上、下、左、右各像素點(diǎn)的差的累加值。根據(jù)拉普拉斯算子的旋轉(zhuǎn)不變性得到拉普拉斯運(yùn)算擴(kuò)展模板,如表1所示。
表1 拉普拉斯運(yùn)算擴(kuò)展
擴(kuò)展模板增加了拉普拉斯算子兩個(gè)對(duì)角線方向的邊緣信息。紅外圖像的邊緣特征為該圖像中灰度值發(fā)生跳變的區(qū)域,可以使用紅外圖像的灰度值疊加所在位置的拉普拉斯算子描述增強(qiáng)后的紅外圖像。定義增強(qiáng)后的紅外圖像z(x,y)為:
z(x,y)=f(x,y)+α|?2f|
(5)
式中,α為自定義參數(shù),可根據(jù)人眼視覺效果或者外界環(huán)境變化取合適的值,取值范圍為[0,1],α值越大圖像增強(qiáng)效果越明顯。由式(5)可知,如果在一幅圖像中出現(xiàn)灰度值較大的點(diǎn),疊加拉普拉斯算子會(huì)進(jìn)一步增加該像素點(diǎn)的灰度值。
Gamma曲線校正是常用的平衡圖像灰度的方法,能夠有效補(bǔ)償圖像暗部的灰度值。Gamma曲線的表達(dá)式[9]如下:
f(I)=Iγ
(6)
式中,I為歸一化后紅外圖像的灰度;f(I)為校正后圖像的灰度值;γ為校正參數(shù)。當(dāng)γ<1時(shí),在低灰度值區(qū)域內(nèi),動(dòng)態(tài)范圍變大,圖像對(duì)比度增強(qiáng);在高灰度值區(qū)域內(nèi),動(dòng)態(tài)范圍變小,圖像對(duì)比度降低,圖像的整體灰度值變大。當(dāng)γ>1時(shí),與之相反。
拉普拉斯濾波在突出圖像邊緣方面能夠取得較好的效果,但會(huì)產(chǎn)生更多的噪聲,可以通過均值濾波對(duì)輸入圖像進(jìn)行平滑處理避免噪聲的放大。因此,文中清晰化方法將平滑處理后的圖像疊加拉普拉斯算子進(jìn)行細(xì)節(jié)增強(qiáng),然后利用Gamma曲線均衡增強(qiáng)后圖像灰度值,具體流程如下:
步驟1:對(duì)輸入原始紅外圖像數(shù)據(jù)取8×8窗口的平均值進(jìn)行平滑濾波處理。
步驟2:計(jì)算處理后圖像的拉普拉斯算子,結(jié)合平滑后圖像數(shù)據(jù)進(jìn)行細(xì)節(jié)增強(qiáng)。
步驟3:對(duì)增強(qiáng)后圖像進(jìn)行Gamma曲線校正,進(jìn)一步平衡灰度。
在輸入灰度級(jí)為0~255范圍內(nèi),我們將Gamma曲線校正后的灰度數(shù)據(jù)放入16×16的查找表Gamma_table中,一方面可以得到校正后的灰度值,另一方面可以將查找表數(shù)據(jù)添加至硬件語言中,使得硬件算法能夠直接獲得經(jīng)Gamma曲線校正后的灰度,從而降低硬件算法的計(jì)算復(fù)雜度,節(jié)約硬件資源。選取紋理細(xì)節(jié)較為豐富的圖像驗(yàn)證清晰化算法的處理效果,如圖1所示。圖1(b)為原始圖像直接進(jìn)行拉普拉斯銳化后的效果,近處桌子的邊緣及遠(yuǎn)處物體的輪廓都得到增強(qiáng),同時(shí)噪聲也被放大;將原始圖像首先進(jìn)行平滑濾波后有效抑制了噪聲的放大,增強(qiáng)后圖像變化平滑,適合人眼觀察識(shí)別,如圖1(c)所示。
圖1 紅外圖像清晰化算法結(jié)果
紅外圖像清晰化系統(tǒng)采用美國FLIR公司的TAU2長波紅外相機(jī),輸出圖像大小為640×512像素,以及Xilinx公司ZYNQ系列的FPGA芯片作為核心處理器。在相機(jī)端輸出數(shù)字信號(hào)遵循Camera Link協(xié)議,輸出圖像為8bits灰度數(shù)據(jù),配置電平轉(zhuǎn)換芯片DS90CR288將相機(jī)輸出的低壓差分信號(hào)轉(zhuǎn)換為TTL/CMOS信號(hào)作為FPGA的輸入。FPGA內(nèi)部運(yùn)行的時(shí)鐘與相機(jī)的工作時(shí)鐘保持同步,均為21 MHz。電平轉(zhuǎn)換芯片DS90CR287將FPGA處理后的圖像信號(hào)轉(zhuǎn)換為LVDS信號(hào),使用加拿大Matrox公司SOL 2M EV CLB型號(hào)圖像采集卡接收DS90CR287輸出的差分信號(hào)并在顯示設(shè)備顯示清晰化后的紅外圖像。
在Xilinx公司ISE14.7平臺(tái)上,使用VHDL語言描述紅外圖像清晰化算法,圖2為硬件語言功能模塊框圖。在control模塊生成控制信號(hào),將原始紅外圖像按照Camera Link協(xié)議輸入,在smooth filter模塊,對(duì)輸入灰度圖像平滑濾波,detect模塊對(duì)濾波后的圖像進(jìn)行基于拉普拉斯算子的細(xì)節(jié)增強(qiáng),最后利用Gamma校正曲線平衡增強(qiáng)后紅外圖像的灰度。enhance模塊用于子功能模塊間數(shù)據(jù)的傳輸,處理后的圖像數(shù)據(jù)從頂層模塊control輸出。
圖2 硬件語言功能模塊框圖
3.2.1 紅外圖像的輸入輸出控制
紅外圖像清晰化系統(tǒng)適用于Camera Link接口的紅外相機(jī),因此需設(shè)計(jì)符合Camera Link協(xié)議的圖像輸入輸出時(shí)序,硬件算法通過狀態(tài)機(jī)生成圖像輸入輸出的控制信號(hào),具體如下:
S0狀態(tài):幀有效信號(hào)fram_valid清零;行有效信號(hào)hor_valid清零;數(shù)據(jù)有效信號(hào)data_valid清零;行、列計(jì)數(shù)清零;
S1狀態(tài):幀有效信號(hào)fram_valid為1;
S2狀態(tài):行有效信號(hào)hor_valid為1;
S3狀態(tài):數(shù)據(jù)有效信號(hào)data_valid為1,同時(shí)列計(jì)數(shù)器col開始計(jì)數(shù);
S4狀態(tài):數(shù)據(jù)有效信號(hào)data_valid為0;
S5狀態(tài):行有效信號(hào)hor_valid為0,同時(shí)行計(jì)數(shù)器row開始計(jì)數(shù);當(dāng)row小于圖像高度時(shí),狀態(tài)機(jī)進(jìn)入S3狀態(tài),否則狀態(tài)機(jī)進(jìn)入S6狀態(tài);
S6狀態(tài):控制信號(hào)清零,狀態(tài)機(jī)返回S0狀態(tài)。
3.2.2 平滑濾波模塊
對(duì)輸入圖像進(jìn)行平滑濾波,需要調(diào)用7個(gè)FIFO緩存7行數(shù)據(jù),再加上當(dāng)前行構(gòu)成8行數(shù)據(jù)進(jìn)行8×8窗口的行列相加。為了提高運(yùn)算速度,濾波采用流水方式,假設(shè)當(dāng)前時(shí)鐘有效時(shí),8行數(shù)據(jù)分別為d11~d18,首先計(jì)算行相加的串并行流水,具體結(jié)構(gòu)如圖3。利用4路并行完成8行數(shù)據(jù)的分組相加,構(gòu)成并行流水。輸出結(jié)果d21~d24利用2路并行加法,得到d31~d32,再使用一個(gè)加法器完成d31+d32運(yùn)算,得到最后行相加運(yùn)算結(jié)果sum。由于不同級(jí)別的加法運(yùn)算在不同時(shí)鐘完成,從而構(gòu)成了3級(jí)并行流水。
圖3 行相加串并行流水
將加法運(yùn)算的結(jié)果sum延時(shí),延時(shí)后的信號(hào)分別用sum1~sum7表示,圖4為列相加串并行流水。同樣將延時(shí)后生成的7列數(shù)據(jù)采用3級(jí)串并行流水方式得到最終64位數(shù)據(jù)的和,再除以64得到圖像平滑濾波后的結(jié)果avg。
圖4 列相加串并行流水
3.2.3 基于拉普拉斯算子的細(xì)節(jié)增強(qiáng)
采用3×3窗口對(duì)平滑濾波后的圖像數(shù)據(jù)計(jì)算拉普拉斯算子,需要在FPGA內(nèi)部建立兩個(gè)FIFO用于緩存兩行數(shù)據(jù),FIFO輸出數(shù)據(jù)為dout1和dout2,再加上當(dāng)前行數(shù)據(jù)datain,形成3×3的矩陣,如圖5所示。
圖5 數(shù)據(jù)緩存示意圖
假設(shè)當(dāng)前時(shí)鐘有效時(shí),3行數(shù)據(jù)分別為G2、G5和G8,首先計(jì)算3行數(shù)據(jù)的和為sum,計(jì)算2×G5-G2-G8為sub;然后將sum和sub的值做延時(shí),根據(jù)時(shí)序的配合計(jì)算出以G5為中心的拉普拉斯算子;再使用一個(gè)乘法器將拉普拉斯算子乘以一個(gè)自定義參數(shù)α,用以調(diào)節(jié)細(xì)節(jié)增強(qiáng)效果的強(qiáng)弱,使其更加適應(yīng)于環(huán)境的變化(參數(shù)α可以在control模塊進(jìn)行調(diào)整);最后將乘以參數(shù)后的拉普拉斯算子的值與G5相加,得到G5增強(qiáng)后的灰度值。
為了節(jié)約硬件資源,提高FPGA運(yùn)算速度,本文將C語言生成的經(jīng)Gamma校正后的0~255灰度范圍的查找表Gamma_table添加至硬件語言中。將拉普拉斯增強(qiáng)后的圖像灰度乘以一個(gè)自適應(yīng)參數(shù)β(0<β≤1,β值通常為1,當(dāng)紅外圖像過暗或者過亮可以在control模塊適當(dāng)增加或減少β值),得到的乘積在查找表中對(duì)應(yīng)找出Gamma校正后的灰度值即為處理后圖像灰度值。
紅外圖像清晰化硬件系統(tǒng)選取型號(hào)為XC7Z020的Xilinx ZYNQ系列的FPGA芯片作為核心處理器。在ISE14.7平臺(tái)上,采用Synplify工具綜合后,最高頻率為228.05 MHz,如表2所示,遠(yuǎn)遠(yuǎn)高于所使用紅外相機(jī)的工作頻率21 MHz,能夠?qū)崟r(shí)地處理視頻圖像。表3為綜合后的FPGA資源占用情況,其中Slice registers占用率為2 %,Block RAMs占用率為5 %,LUT占用率為5 %,所選器件完全可以滿足清晰化硬件系統(tǒng)的資源需求。
表2 時(shí)鐘周期
表3 硬件實(shí)現(xiàn)方案對(duì)比
表3將所提的硬件實(shí)現(xiàn)方案在邏輯資源占用、運(yùn)行時(shí)鐘方面與其他方案做了對(duì)比分析。文獻(xiàn)[10]通過計(jì)算輸入圖像的直方圖,然后乘以比例因子達(dá)到圖像增強(qiáng)的目的,計(jì)算復(fù)雜度較低占用了較少的LUT和register資源。文獻(xiàn)[11]采用改進(jìn)的神經(jīng)網(wǎng)絡(luò)算法對(duì)紅外圖像進(jìn)行非均勻性校正,需要進(jìn)行大量的累加、乘除運(yùn)算,同時(shí)為保證計(jì)算精度,所處理的數(shù)據(jù)涉及小數(shù)部分,因此會(huì)占用大量的LUT和register資源。所提的紅外圖像清晰化硬件實(shí)現(xiàn)方案利用FIFO緩存7行圖像數(shù)據(jù)后進(jìn)行均值濾波,通過將軟件生成的Gamma校正查找表直接添加至硬件語言中,避免了整幅圖像數(shù)據(jù)的緩存以及Gamma校正時(shí)的非線性運(yùn)算,消耗了最少的Block RAM和較少的LUT資源。并且,所提硬件實(shí)現(xiàn)方案的運(yùn)行時(shí)鐘周期最短,更加適合實(shí)時(shí)地處理視頻圖像。
紅外圖像清晰化軟件算法實(shí)現(xiàn)平臺(tái)為Intel(R)Xeon(R)E5-2680 v3,2.50GHz CPU,內(nèi)存64GB,使用軟件為Dev-C++5.11,文中軟件語言實(shí)現(xiàn)所使用的輸入原始圖像均由FLIR相機(jī)輸出經(jīng)圖像采集卡捕獲的紅外圖像。為了驗(yàn)證紅外圖像清晰化硬件系統(tǒng)的性能,將WNNM(Weighted Nuclear Norm Minimization,加權(quán)核范數(shù)最小化)算法[12]、Wan算法、Tarel算法[13]與本文軟硬件算法處理后的圖像對(duì)比分析,并從主客觀角度對(duì)圖像質(zhì)量進(jìn)行評(píng)價(jià)。
圖6是一組紋理細(xì)節(jié)豐富的紅外圖像,從圖6(b)可以看出WNNM方法能夠降低原始圖像的噪聲從而達(dá)到改善圖像整體視覺效果的目的,但是沒有突出更多的細(xì)節(jié)特征。Wan方法采用自適應(yīng)平臺(tái)直方圖均衡圖像的灰度信息,在處理圖像邊緣時(shí)效果不理想,如圖6(c)所示。Tarel方法基于大氣散射模型能夠有效恢復(fù)原始圖像一定的紋理細(xì)節(jié)特征,但容易出現(xiàn)局部過增強(qiáng)或局部增強(qiáng)不足的現(xiàn)象,如圖6(d)方框所示。
圖6 圖像1數(shù)據(jù)比較
圖6(e)和圖6(f)為本文紅外圖像清晰化方法處理后的結(jié)果,從圖中可以看出,算法增強(qiáng)了目標(biāo)景物的細(xì)節(jié)信息,如近處樹葉的紋理特征、遠(yuǎn)處墻體的輪廓特征都得到增強(qiáng)。同時(shí),算法在細(xì)節(jié)增強(qiáng)之前對(duì)原始圖像進(jìn)行平滑濾波處理,有效避免了圖像噪聲的放大。
圖7是一組熱輻射較為均勻的紅外圖像,可以看出本文方法能夠更好的突出圖像的邊緣特征,同時(shí)提高了圖像整體的對(duì)比度,這是在細(xì)節(jié)增強(qiáng)后加入Gamma校正的結(jié)果,并且硬件算法處理后圖像效果逼近軟件算法。當(dāng)原始圖像全局像素值較高、噪點(diǎn)較少時(shí),WNNM方法處理效果不明顯。Wan方法由于自適應(yīng)參數(shù)選取較為簡(jiǎn)單,沒有突出較多的圖像邊緣。由圖7(d)方框所示,Tarel方法使得圖中部分區(qū)域出現(xiàn)失真現(xiàn)象,這是由于對(duì)透射率估計(jì)不準(zhǔn)確的結(jié)果。
圖7 圖像2數(shù)據(jù)比較
為了客觀評(píng)價(jià)各算法的性能,采用2個(gè)經(jīng)典的圖像質(zhì)量評(píng)價(jià)指標(biāo)進(jìn)行對(duì)比分析。可見邊對(duì)比度能夠反映圖像處理前后的清晰化程度[14],新增的可見邊之比為:
(7)
式中,no和nr分別為圖像處理前后的可見邊數(shù)目。較大的e值說明對(duì)應(yīng)算法有更好的紋理細(xì)節(jié)恢復(fù)能力。峰值信噪比(PSNR,Peak Signal to Noise Ratio)是衡量圖像是否失真的指標(biāo),其表達(dá)式為:
(8)
式中,MSE為圖像的均方誤差。圖像PSNR值越高,表示圖像的質(zhì)量越好[15]。由表4可見,所提方法獲得的e值最高,PSNR值也接近于其他方法,并且所提硬件方法處理后圖像的PSNR和e值均接近軟件方法。因此,所提方法能夠有效豐富圖像細(xì)節(jié)信息,提高圖像對(duì)比度。
表4 紅外圖像不同算法處理定量評(píng)價(jià)結(jié)果
本文設(shè)計(jì)實(shí)現(xiàn)的基于FPGA的紅外圖像清晰化硬件系統(tǒng)符合camera link數(shù)據(jù)傳輸協(xié)議。首先對(duì)輸入圖像進(jìn)行8×8窗口的均值濾波得到平滑后的灰度圖像,然后疊加拉普拉斯算子進(jìn)行細(xì)節(jié)增強(qiáng),有效解決了傳統(tǒng)拉普拉斯銳化產(chǎn)生的噪聲放大問題。最后利用Gamma校正曲線調(diào)整增強(qiáng)后圖像的亮度,使其更加適合人眼觀察與識(shí)別。處理后的紅外圖像邊緣特征清晰,整體對(duì)比度得到提升。在硬件算法實(shí)現(xiàn)中,充分利用FPGA的FIFO資源進(jìn)行串并行流水運(yùn)算,能夠提高硬件系統(tǒng)的運(yùn)算速度。同時(shí)將軟件算法生成的Gamma校正后的灰度查找表添加至硬件語言中,使得硬件算法能夠直接獲取校正后的圖像灰度,有效降低了硬件計(jì)算復(fù)雜度。硬件測(cè)試時(shí),系統(tǒng)處理一幅圖像耗時(shí)0.1152 ms,滿足實(shí)時(shí)處理視頻圖像的需求。