圖像去霧系統。提出一種基于ZYNQ的Retinex實時圖像去霧方法,在HSV顏色空間對亮度分量V進行Retinex算法去霧處理;采用ARM+FPGA軟硬件協同的方式,由ARM完成算法控制功能及圖像的顏色空間轉換、對數等簡單運算;在FPGA中采用高斯核函數與二維圖像卷積的并行算法估計環境光的照度。實驗結果表明,提出的方法在保證去霧效果的情況下,具有處理速度快、小型化、可嵌入、可移植和功耗低等優點,能夠滿足戶外視頻系統的性能要求。
引言
由于霧霾天氣會造成戶外視覺系統所獲取的圖像質量嚴重退化,不僅模糊不清、對比度降低,而且還會出現嚴重的色彩偏移和失真,從而影響戶外視覺系統的穩定性和準確性。因此,對霧霾天氣引起的降質圖像進行有效、快速的去霧處理顯得極為重要。
常見的去霧方法有兩類:基于圖像復原的去霧方法和基于圖像增強的去霧方法。前者是從圖像退化的原因出發,建立去霧圖像的物理模型,根據該模型來恢復出清晰的去霧圖像。該類方法去霧效果良好,但算法復雜度較大,不便于在硬件平臺上實現。基于圖像增強的去霧方法不考慮圖像霧化的原因和機理,而是有選擇性地增強需要的細節信息。屬于此類的去霧方法常用的是Retinex算法[4]。Retinex算法能較好地保留圖像的邊緣等細節信息,處理后的圖像具有亮度適中、對比度高等優點。現有去霧算法多數在PC上實現,其移植性和靈活性等均限制了在戶外視頻系統中的應用。
ZYNQ是一種Xilinx體系的全可編程片上系統(All Programmable System on Chip),集成了雙核ARM Cortex-A9和FPGA,擁有大量邏輯單元、數字信號處理器(Digital Signal Processor,DSP)等資源,能夠滿足戶外視頻系統的實時處理、小型化、可嵌入、可移植和低功耗等性能要求。
據此,本文提出一種基于ZYNQ的Retinex實時圖像去霧方法,利用ZYNQ的ARM+FPGA軟硬件協同的方式來提高戶外視頻系統的圖像去霧性能。為了降低算法復雜度以及顏色保真,該方法在HSV顏色空間對亮度分量V進行Retinex去霧處理,對飽和度S做線性拉伸來擴展動態范圍,保持色調H不變以避免顏色失真。在實現架構上,由ARM完成一些簡單計算,如Retinex算法中的對數、減法運算以及線性拉伸、顏色空間轉換等,而將高斯核函數與圖像的二維卷積這種復雜耗時的計算交由FPGA采用并行算法來提高實時處理速度,ARM與FPGA之間的數據交互則由片內總線AXI4(Advanced eXtensible Interface 4)來承擔[5]。
1
傳統Retinex算法
Retinex理論認為一幅圖像可分解為圖像入射分量和反射分量,即:
2
算法優化
傳統Retinex算法中對圖像R、G、B 3個通道分別進行處理,容易造成顏色失真,而且在硬件實現中計算量非常大,難以滿足系統的實時性要求。因此,本文采用基于HSV顏色空間的Retinex算法。將帶霧圖像由RGB顏色空間轉換到HSV顏色空間,得到相關性較小的色調H、飽和度S和亮度V,保持圖像的H分量不變,對飽和度分量S進行線性拉伸,僅對V分量進行單尺度Retinex算法處理,這樣既可以降低算法的計算量,又可以避免傳統Retinex算法容易造成顏色失真的缺陷。算法流程圖如圖1所示。
具體實施步驟如下:選取合適的σ值和模板大小,根據式(4)構造高斯核函數;將帶霧圖像從RGB顏色空間轉換到HSV顏色空間;根據Retinex算法,對亮度分量V取對數得到V1;將分量V代入式(3)與高斯核函數卷積,然后取對數得到環境光的照度估計值V2;V1分量和V2分量相減,得到經去霧算法處理后的亮度分量V3;對飽和度分量S進行拉伸得到S1;將色調分量H、拉伸后的飽和度分量S1以及經Retinex算法處理后得到的亮度分量V3轉化到RGB色彩空間并輸出,完成圖像去霧過程。
3
硬件平臺實現
硬件平臺是基于Zynq-7010的開發板,采用ARM+ FPGA的方式完成圖像去霧系統的設計[6]。圖像去霧系統中,圖像數據作為數據輸入;對數模塊、顏色空間轉換模塊、減法器、線性拉伸S模塊以及顯示控制在ARM中完成;計算量大、占用時間長的卷積運算放在FPGA中運行。
3.1 圖像數據的規格化
為了提高計算速度,降低FPGA資源消耗,設計中使用定點數保存數據并進行計算。實驗表明,對于圖像數據HSV的值域[0,1],當誤差小于4×10-3時,不會出現明顯的圖像細節信息的丟失。因此用0.003 906規格化圖像數據的值域[0,1],即可采用如圖2所示的8 bit二進制定點小數來表示圖像數據,小數點固定在最高位左邊,表示范圍為[0,0.996],最小分辨率為(0.00000001)2≈0.003 906。
3.2 ARM部分算法實現3.2.1 對數模塊
Retinex算法中需要對帶霧圖像I(x,y)和圖像的入射分量(環境光的照度)L(x,y)進行對數運算。在ZYNQ系統中為了降低量化誤差和提高運算的實時性,這里采用以2為底的對數查找表方法來實現對數運算。
由于圖像數據I(x,y)、L(x,y)已被規格化為圖2所示的8 bit二進制定點小數,因此其值域∈[0,0.996],最小分辨率為0.003 906,共有256個數據值。其中0的對數值是-∞,無法對其直接量化,故將[0,0.995]分為{0}∪[0.003 9,0.995]兩個部分。[0.003 9,0.995]對應的對數域∈[-8,-0.007],在誤差小于4×10-3時,對數值可采用1 bit符號位+7 bit整數位+8 bit小數位共16 bit的有符號二進制定點數表示;log20用16 bit有符號二進制定點數能表示的最大負數-128來近似。最后將量化之后的256個16 bit的對數值存于查找表LUT[ ]中。
用X統一表示圖像數據I(x,y)、L(x,y)已被規格化的8 bit二進制定點小數,用Y表示對數運算結果的16 bit有符號二進制定點數,則上述對數查找表方法可以表示為:
式中函數int( )表示二進制數取整。
3.2.2 線性拉伸S
在去霧過程中,伴隨著圖像亮度V的增強,飽和度S會相對有所降低。因此為了保持圖像顏色原有的鮮艷程度,還需要增強圖像的飽和度S。這里采用三段線性拉伸的方式對飽和度S進行拉伸處理。
3.3 FPGA部分算法實現3.3.1 高斯核函數的規格化
實驗仿真表明,當σ=40,濾波模板為101×101時,Retinex算法的去霧效果較好。此時,高斯核函數的值域為[2.085×10-5,9.947×10-5],數值較小,如果直接量化,數據位數較寬,而且會增大資源消耗。由于卷積運算是線性運算,因此可以先將高斯核函數擴大表示,然后再將卷積的結果縮小相同的倍數,而不會影響最終計算結果。這里將高斯核函數擴大27倍,擴大之后的高斯濾波函數的值域為[0.002 7,0.012 7],誤差小于2.56×10-4,去霧圖像沒有明顯的細節信息丟失。然后用2.44×10-4規格化擴大27倍的高斯核函數的值域[0.002 7,0.012 7],即用1 bit符號位+3 bit整數位+12 bit小數位共計16 bit二進制定點小數來表示,如圖3所示,值域為[-8,7],最小分辨率為(0.000000000001)2≈2.44×10-4,能夠滿足精度要求。最后將量化成定點數的高斯核函數的值以行的形式存儲為初始化文件,直接以ROM的形式固化到FPGA的塊隨機存取存儲器(Block RAM,BRAM)中。
3.3.2 卷積模塊
卷積運算是由大量的矩陣乘法和加法運算組成的,由于其算法是并行結構,設計中將卷積運算放在芯片的FPGA中完成,算法整體框架結構如圖4所示。
ARM通過AXI4總線將圖片數據和控制信息分別發送給FPGA的控制寄存器CTRL_reg和圖像數據寄存器Row_reg,并通過AXI4讀取控制寄存器的當前狀態和卷積寄存器Result_reg中的結果。
卷積運算頂層模塊由高斯核函數ROM塊Coe_ROM、圖像塊RAM Img_RAM和計算模塊CALC_Module 3部分組成,卷積使用的高斯核函數存儲在FPGA的BRAM中,以ROM的形式進行讀取,圖像塊RAM大小與濾波核大小相同,主控程序分別從Coe_ROM和Img_RAM中讀取高斯核函數和像素數據送入計算模塊進行計算,并將計算的結果送入結果寄存器Result_reg。
由于高斯濾波核是90°旋轉對稱的,而且高斯核函數在程序中不發生改變,為了節省存儲空間和減少邏輯控制的復雜度,在程序中只存儲高斯核函數的上半部分,組成高斯核函數結構如圖5所示。
為了提高計算速度,圖像數據RAM塊使用移位寄存的方式保存,圖像RAM塊采用從上到下、從左到右的方式滑動,在每一列的頂端重新準備卷積的數據,然后卷積塊向下滑動,每計算一個點,向下滑動一行,圖像塊RAM的移位寄存器結構如圖6所示。
4
實驗結果與分析
實驗中,硬件平臺使用基于Zynq-7010的黑金開發板ALINX7010, FPGA時鐘為250 MHz,編程使用Xilinx公司提供Vivado 2016.3,并使用自帶仿真軟件進行仿真。
4.1 實驗結果
為了驗證所提出的方法的性能,實驗中將所提出的方法與在PC(Core i5 6600K,4.1 GHz主頻,16 GB內存,MATLAB 2013a)實現的Retinex算法進行了性能比較。兩種實現方法均選取σ=40,高斯模板大小為101×101。
FPGA資源占用指標包括:LUT、查找表RAM(LUTRAM)、BRAM、DSP等。表1給出了ZYNQ硬件部分FPGA 4種資源占用表。
實驗中采用峰值信噪比、信息熵、運行時間作為評估圖像去霧效果的3個客觀技術指標。峰值信噪比是用于描述信號最大可能功率和影響它的破壞性噪聲功率的比值。信息熵是衡量圖像所含信息量、圖像細節的豐富程度的技術指標,熵值越大圖像所含信息量越大,圖像細節越豐富[7]。
圖7給出了3組圖像去霧實驗的效果對比圖,表2則為上述3組實驗示例在PC實現的Retinex算法和所提出的方法的峰值信噪比、信息熵、運行時間3個性能指標的對比。
4.2 結果分析
從表1可以看出,LUT占用FPGA資源76.31%,LUTRAM、BRAM、DSP占用FPGA資源均在50%左右,表明整個系統消耗Zynq-7010資源較少,即所需要的硬件成本較低,能滿足實際工程的需求。
從圖7的A、B、C 3組圖像可以看出,經PC實現的Retinex算法和本文提出的圖像去霧方法均有明顯的去霧效果。
從表2可以看出,經兩種算法處理后的峰值信噪比均達到了50 dB以上,能夠有效濾除圖像中的霧霾引起的噪聲,改善圖像的清晰度。處理后的圖像的信息熵比帶霧圖像均有所提高,說明經過去霧處理后的圖像細節信息得到了增強。本文提出的方法相比于PC上傳統的Retinex去霧算法,在峰值信噪比、信息熵等指標上達到了同等水平,而運算速度則提高了28倍以上,達到了每秒25幀以上的實時處理速度。實驗結果表明,在ZYNQ平臺上實現圖像去霧,在保證去霧效果良好的情況下,具有運算速度快、可移植性高、功耗低等優點,可以滿足戶外視頻系統的實用要求。
-
圖像
+關注
關注
2文章
1091瀏覽量
40682 -
Zynq
+關注
關注
10文章
611瀏覽量
47488 -
Retinex
+關注
關注
0文章
11瀏覽量
10024
原文標題:【學術論文】基于ZYNQ的Retinex實時圖像去霧
文章出處:【微信號:ChinaAET,微信公眾號:電子技術應用ChinaAET】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
怎樣去設計一種基于RK3399和圖像增強算法的交通監控系統
Retinex圖像增強算法

基于天空分割的單幅圖像去霧算法
如何根據霧濃度進行圖像去霧的方法說明

評論