文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.173727
中文引用格式: 董夢莎,,張尤賽,,王亞軍. 基于ZYNQ的Retinex實時圖像去霧[J].電子技術(shù)應(yīng)用,2018,,44(4):52-55.
英文引用格式: Dong Mengsha,,Zhang Yousai,,Wang Yajun. Retinex algorithm for real-time image defogging based on ZYNQ[J]. Application of Electronic Technique,2018,,44(4):52-55.
0 引言
由于霧霾天氣會造成戶外視覺系統(tǒng)所獲取的圖像質(zhì)量嚴重退化,,不僅模糊不清,、對比度降低,而且還會出現(xiàn)嚴重的色彩偏移和失真,,從而影響戶外視覺系統(tǒng)的穩(wěn)定性和準確性[1-2],。因此,對霧霾天氣引起的降質(zhì)圖像進行有效,、快速的去霧處理顯得極為重要,。
常見的去霧方法有兩類:基于圖像復(fù)原的去霧方法和基于圖像增強的去霧方法[3]。前者是從圖像退化的原因出發(fā),,建立去霧圖像的物理模型,,根據(jù)該模型來恢復(fù)出清晰的去霧圖像。該類方法去霧效果良好,,但算法復(fù)雜度較大,,不便于在硬件平臺上實現(xiàn)?;趫D像增強的去霧方法不考慮圖像霧化的原因和機理,,而是有選擇性地增強需要的細節(jié)信息。屬于此類的去霧方法常用的是Retinex算法[4],。Retinex算法能較好地保留圖像的邊緣等細節(jié)信息,,處理后的圖像具有亮度適中、對比度高等優(yōu)點?,F(xiàn)有去霧算法多數(shù)在PC上實現(xiàn),,其移植性和靈活性等均限制了在戶外視頻系統(tǒng)中的應(yīng)用。
ZYNQ是一種Xilinx體系的全可編程片上系統(tǒng)(All Programmable System on Chip),,集成了雙核ARM Cortex-A9和FPGA,,擁有大量邏輯單元、數(shù)字信號處理器(Digital Signal Processor,,DSP)等資源,,能夠滿足戶外視頻系統(tǒng)的實時處理,、小型化、可嵌入,、可移植和低功耗等性能要求,。
據(jù)此,本文提出一種基于ZYNQ的Retinex實時圖像去霧方法,,利用ZYNQ的ARM+FPGA軟硬件協(xié)同的方式來提高戶外視頻系統(tǒng)的圖像去霧性能,。為了降低算法復(fù)雜度以及顏色保真,該方法在HSV顏色空間對亮度分量V進行Retinex去霧處理,,對飽和度S做線性拉伸來擴展動態(tài)范圍,,保持色調(diào)H不變以避免顏色失真。在實現(xiàn)架構(gòu)上,,由ARM完成一些簡單計算,,如Retinex算法中的對數(shù)、減法運算以及線性拉伸,、顏色空間轉(zhuǎn)換等,,而將高斯核函數(shù)與圖像的二維卷積這種復(fù)雜耗時的計算交由FPGA采用并行算法來提高實時處理速度,,ARM與FPGA之間的數(shù)據(jù)交互則由片內(nèi)總線AXI4(Advanced eXtensible Interface 4)來承擔(dān)[5],。
1 傳統(tǒng)Retinex算法
Retinex理論認為一幅圖像可分解為圖像入射分量和反射分量,即:
2 算法優(yōu)化
傳統(tǒng)Retinex算法中對圖像R,、G,、B 3個通道分別進行處理,容易造成顏色失真,,而且在硬件實現(xiàn)中計算量非常大,,難以滿足系統(tǒng)的實時性要求。因此,,本文采用基于HSV顏色空間的Retinex算法,。將帶霧圖像由RGB顏色空間轉(zhuǎn)換到HSV顏色空間,得到相關(guān)性較小的色調(diào)H,、飽和度S和亮度V,,保持圖像的H分量不變,對飽和度分量S進行線性拉伸,,僅對V分量進行單尺度Retinex算法處理,,這樣既可以降低算法的計算量,又可以避免傳統(tǒng)Retinex算法容易造成顏色失真的缺陷,。算法流程圖如圖1所示,。
具體實施步驟如下:選取合適的σ值和模板大小,根據(jù)式(4)構(gòu)造高斯核函數(shù),;將帶霧圖像從RGB顏色空間轉(zhuǎn)換到HSV顏色空間,;根據(jù)Retinex算法,,對亮度分量V取對數(shù)得到V1;將分量V代入式(3)與高斯核函數(shù)卷積,,然后取對數(shù)得到環(huán)境光的照度估計值V2,;V1分量和V2分量相減,得到經(jīng)去霧算法處理后的亮度分量V3,;對飽和度分量S進行拉伸得到S1,;將色調(diào)分量H、拉伸后的飽和度分量S1以及經(jīng)Retinex算法處理后得到的亮度分量V3轉(zhuǎn)化到RGB色彩空間并輸出,,完成圖像去霧過程,。
3 硬件平臺實現(xiàn)
硬件平臺是基于Zynq-7010的開發(fā)板,采用ARM+ FPGA的方式完成圖像去霧系統(tǒng)的設(shè)計[6],。圖像去霧系統(tǒng)中,,圖像數(shù)據(jù)作為數(shù)據(jù)輸入;對數(shù)模塊,、顏色空間轉(zhuǎn)換模塊,、減法器、線性拉伸S模塊以及顯示控制在ARM中完成,;計算量大,、占用時間長的卷積運算放在FPGA中運行。
3.1 圖像數(shù)據(jù)的規(guī)格化
為了提高計算速度,,降低FPGA資源消耗,,設(shè)計中使用定點數(shù)保存數(shù)據(jù)并進行計算。實驗表明,,對于圖像數(shù)據(jù)HSV的值域[0,,1],當(dāng)誤差小于4×10-3時,,不會出現(xiàn)明顯的圖像細節(jié)信息的丟失,。因此用0.003 906規(guī)格化圖像數(shù)據(jù)的值域[0,1],,即可采用如圖2所示的8 bit二進制定點小數(shù)來表示圖像數(shù)據(jù),,小數(shù)點固定在最高位左邊,表示范圍為[0,,0.996],,最小分辨率為(0.00000001)2≈0.003 906。
3.2 ARM部分算法實現(xiàn)
3.2.1 對數(shù)模塊
Retinex算法中需要對帶霧圖像I(x,,y)和圖像的入射分量(環(huán)境光的照度)L(x,,y)進行對數(shù)運算。在ZYNQ系統(tǒng)中為了降低量化誤差和提高運算的實時性,這里采用以2為底的對數(shù)查找表方法來實現(xiàn)對數(shù)運算,。
由于圖像數(shù)據(jù)I(x,,y)、L(x,,y)已被規(guī)格化為圖2所示的8 bit二進制定點小數(shù),,因此其值域∈[0,0.996],,最小分辨率為0.003 906,,共有256個數(shù)據(jù)值。其中0的對數(shù)值是-∞,,無法對其直接量化,,故將[0,0.995]分為{0}∪[0.003 9,,0.995]兩個部分,。[0.003 9,0.995]對應(yīng)的對數(shù)域∈[-8,,-0.007],,在誤差小于4×10-3時,對數(shù)值可采用1 bit符號位+7 bit整數(shù)位+8 bit小數(shù)位共16 bit的有符號二進制定點數(shù)表示,;log20用16 bit有符號二進制定點數(shù)能表示的最大負數(shù)-128來近似,。最后將量化之后的256個16 bit的對數(shù)值存于查找表LUT[ ]中。
用X統(tǒng)一表示圖像數(shù)據(jù)I(x,,y),、L(x,y)已被規(guī)格化的8 bit二進制定點小數(shù),,用Y表示對數(shù)運算結(jié)果的16 bit有符號二進制定點數(shù),則上述對數(shù)查找表方法可以表示為:
式中函數(shù)int( )表示二進制數(shù)取整,。
3.2.2 線性拉伸S
在去霧過程中,,伴隨著圖像亮度V的增強,飽和度S會相對有所降低,。因此為了保持圖像顏色原有的鮮艷程度,,還需要增強圖像的飽和度S。這里采用三段線性拉伸的方式對飽和度S進行拉伸處理,。
3.3 FPGA部分算法實現(xiàn)
3.3.1 高斯核函數(shù)的規(guī)格化
實驗仿真表明,,當(dāng)σ=40,濾波模板為101×101時,,Retinex算法的去霧效果較好,。此時,高斯核函數(shù)的值域為[2.085×10-5,9.947×10-5],,數(shù)值較小,,如果直接量化,數(shù)據(jù)位數(shù)較寬,,而且會增大資源消耗,。由于卷積運算是線性運算,因此可以先將高斯核函數(shù)擴大表示,,然后再將卷積的結(jié)果縮小相同的倍數(shù),,而不會影響最終計算結(jié)果。這里將高斯核函數(shù)擴大27倍,,擴大之后的高斯濾波函數(shù)的值域為[0.002 7,,0.012 7],誤差小于2.56×10-4,,去霧圖像沒有明顯的細節(jié)信息丟失,。然后用2.44×10-4規(guī)格化擴大27倍的高斯核函數(shù)的值域[0.002 7,0.012 7],,即用1 bit符號位+3 bit整數(shù)位+12 bit小數(shù)位共計16 bit二進制定點小數(shù)來表示,,如圖3所示,值域為[-8,7],,最小分辨率為(0.000000000001)2≈2.44×10-4,,能夠滿足精度要求。最后將量化成定點數(shù)的高斯核函數(shù)的值以行的形式存儲為初始化文件,,直接以ROM的形式固化到FPGA的塊隨機存取存儲器(Block RAM,,BRAM)中。
3.3.2 卷積模塊
卷積運算是由大量的矩陣乘法和加法運算組成的,,由于其算法是并行結(jié)構(gòu),,設(shè)計中將卷積運算放在芯片的FPGA中完成,算法整體框架結(jié)構(gòu)如圖4所示,。
ARM通過AXI4總線將圖片數(shù)據(jù)和控制信息分別發(fā)送給FPGA的控制寄存器CTRL_reg和圖像數(shù)據(jù)寄存器Row_reg,,并通過AXI4讀取控制寄存器的當(dāng)前狀態(tài)和卷積寄存器Result_reg中的結(jié)果。
卷積運算頂層模塊由高斯核函數(shù)ROM塊Coe_ROM,、圖像塊RAM Img_RAM和計算模塊CALC_Module 3部分組成,,卷積使用的高斯核函數(shù)存儲在FPGA的BRAM中,以ROM的形式進行讀取,,圖像塊RAM大小與濾波核大小相同,,主控程序分別從Coe_ROM和Img_RAM中讀取高斯核函數(shù)和像素數(shù)據(jù)送入計算模塊進行計算,并將計算的結(jié)果送入結(jié)果寄存器Result_reg,。
由于高斯濾波核是90°旋轉(zhuǎn)對稱的,,而且高斯核函數(shù)在程序中不發(fā)生改變,為了節(jié)省存儲空間和減少邏輯控制的復(fù)雜度,在程序中只存儲高斯核函數(shù)的上半部分,,組成高斯核函數(shù)結(jié)構(gòu)如圖5所示,。
為了提高計算速度,圖像數(shù)據(jù)RAM塊使用移位寄存的方式保存,,圖像RAM塊采用從上到下,、從左到右的方式滑動,在每一列的頂端重新準備卷積的數(shù)據(jù),,然后卷積塊向下滑動,,每計算一個點,向下滑動一行,,圖像塊RAM的移位寄存器結(jié)構(gòu)如圖6所示,。
4 實驗結(jié)果與分析
實驗中,硬件平臺使用基于Zynq-7010的黑金開發(fā)板ALINX7010,, FPGA時鐘為250 MHz,,編程使用Xilinx公司提供Vivado 2016.3,并使用自帶仿真軟件進行仿真,。
4.1 實驗結(jié)果
為了驗證所提出的方法的性能,,實驗中將所提出的方法與在PC(Core i5 6600K,4.1 GHz主頻,,16 GB內(nèi)存,,MATLAB 2013a)實現(xiàn)的Retinex算法進行了性能比較。兩種實現(xiàn)方法均選取σ=40,,高斯模板大小為101×101,。
FPGA資源占用指標包括:LUT、查找表RAM(LUTRAM),、BRAM,、DSP等。表1給出了ZYNQ硬件部分FPGA 4種資源占用表,。
實驗中采用峰值信噪比,、信息熵、運行時間作為評估圖像去霧效果的3個客觀技術(shù)指標,。峰值信噪比是用于描述信號最大可能功率和影響它的破壞性噪聲功率的比值。信息熵是衡量圖像所含信息量,、圖像細節(jié)的豐富程度的技術(shù)指標,,熵值越大圖像所含信息量越大,圖像細節(jié)越豐富[7],。
圖7給出了3組圖像去霧實驗的效果對比圖,,表2則為上述3組實驗示例在PC實現(xiàn)的Retinex算法和所提出的方法的峰值信噪比、信息熵、運行時間3個性能指標的對比,。
4.2 結(jié)果分析
從表1可以看出,,LUT占用FPGA資源76.31%,LUTRAM,、BRAM,、DSP占用FPGA資源均在50%左右,表明整個系統(tǒng)消耗Zynq-7010資源較少,,即所需要的硬件成本較低,,能滿足實際工程的需求。
從圖7的A,、B,、C 3組圖像可以看出,經(jīng)PC實現(xiàn)的Retinex算法和本文提出的圖像去霧方法均有明顯的去霧效果,。
從表2可以看出,,經(jīng)兩種算法處理后的峰值信噪比均達到了50 dB以上,能夠有效濾除圖像中的霧霾引起的噪聲,,改善圖像的清晰度,。處理后的圖像的信息熵比帶霧圖像均有所提高,說明經(jīng)過去霧處理后的圖像細節(jié)信息得到了增強,。本文提出的方法相比于PC上傳統(tǒng)的Retinex去霧算法,,在峰值信噪比、信息熵等指標上達到了同等水平,,而運算速度則提高了28倍以上,,達到了每秒25幀以上的實時處理速度。實驗結(jié)果表明,,在ZYNQ平臺上實現(xiàn)圖像去霧,,在保證去霧效果良好的情況下,具有運算速度快,、可移植性高,、功耗低等優(yōu)點,可以滿足戶外視頻系統(tǒng)的實用要求,。
參考文獻
[1] Zhang Jingjun,,Ding Yifan,Yang Yi,,et al.Real-time defog model based on visible and near-infrared information[C].IEEE International Conference on Multimedia & Expo Workshops.IEEE Computer Society,,2016:1-6.
[2] WANG Y K,F(xiàn)AN C T.Single image defogging by multiscale depth fusion[J].IEEE Transactions on Image Processing,,2014,,23(11):4826-4837.
[3] 高全明,,孫俊喜,劉廣文,,等.基于FPGA的交通視頻快速去霧系統(tǒng)的設(shè)計與實現(xiàn)[J].電子技術(shù)應(yīng)用,,2017,43(6):71-74.
[4] 曹永妹,,張尤賽.圖像去霧的小波域Retinex算法[J].江蘇科技大學(xué)學(xué)報(自然科學(xué)版),,2014,28(1):50-55,,62.
[5] 張艷輝,,郭洺宇,何賓.Vivado HLS嵌入式實時圖像處理系統(tǒng)的構(gòu)建與實現(xiàn)[J].電子技術(shù)應(yīng)用,,2016,,42(9):115-117.
[6] 梁新宇.基于ZYNQ的行人檢測系統(tǒng)軟硬件協(xié)同實現(xiàn)[D].大連:大連海事大學(xué),2016.
[7] Guo Fan,,Cai Zixing.Objective assessment method for the clearness effect of image defogging algorithm[J].Acta Automatica Sinica,,2012,38(9):1410.
作者信息:
董夢莎,,張尤賽,,王亞軍
(江蘇科技大學(xué) 電子與信息學(xué)院,江蘇 鎮(zhèn)江212003)