999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于ZYNQ的實時去霧系統設計實現

2023-01-31 03:56:50姚小江解其云張潤芃
計算機工程與設計 2023年1期
關鍵詞:色彩設計

陸 成,姚小江,解其云,張潤芃

(南京郵電大學 電子與光學工程學院、柔性電子(未來技術)學院,江蘇 南京 210046)

0 引 言

霧天光線傳播會受到空氣中懸浮顆粒散射的影響,導致諸如視頻監控、航拍無人機、輔助駕駛系統等成像設備獲取的圖像關鍵信息丟失且對比度大幅降低,無法進行有效工作[1,2]。

區別于傳統單一的串/并行處理器,ZYNQ SoC(system on chip)作為全可編程的異構平臺,內部集成了雙核ARM Cortex-A9處理器與7系列FPGA,并通過AXI總線實現SoC內部高帶寬、低時延的連接。SoC兼具ARM靈活的控制能力與FPGA強大的并行計算能力,特別適用于含有大量的數學運算和邏輯控制的實時圖像處理場合。能夠滿足當前戶外視覺系統高實時性、高靈活性、低功耗、低成本以及小型化的需求。而Retinex算法因其去霧效果良好,適用場合較廣,復雜度及計算量適中等特點,適合部署在嵌入式設備。

目前在ZYNQ SoC上對于Retinex去霧算法部署優化的研究較少。文獻[3]使用HLS工具完成SSR算法設計,去霧效果及資源利用仍有較大優化空間。文獻[4]基于軟硬件協同的思想實現了基于HSV空間的Retinex算法,資源利用優秀,但去霧效果受限于數據精度。文獻[5]中方法及效果與前者較為相近。文獻[6]實現了一種針對夜間圖像增強的Retinex算法,圖像暗部細節提升十分明顯,但資源消耗相對較大,成本較高。文獻[7]提出一種自然恢復的Retinex算法,同樣效果明顯,且資源使用率有大幅度降低。現有相關研究在資源利用、成本控制方面仍然有很大優化空間,無法同時保證算法有效性與設計低成本。另外沒有實現去霧算法針對不同場合使用的靈活參數調整,在算法實時性方面也還有提升空間。本文從Retinex理論出發,針對現有設計與研究的不足加以改進,并對算法部署在可編程邏輯架構上的難點提出解決方案。

1 Retinex理論

Retinex理論由Land等提出,理論具體內容可見文獻[8]。理論核心思想是認為一幅圖像S(x,y) 可分解為圖像照度分量L(x,y) 和反射分量R(x,y), 即

S(x,y)=L(x,y)·R(x,y)

(1)

式(1)兩邊同時轉向對數域可以計算出物體真實圖像數據

logR(x,y)=logS(x,y)-logL(x,y)

(2)

式(2)包含一個已知量和兩個未知量,為了得到確切解, 眾多學者提出了不同的Retinex算法。

Jobson等使用高斯中心環繞函數F(x,y) 與原圖像S(x,y) 進行卷積來估算圖像照度分量,稱為SSR(single scale retinex)算法,目前被廣泛使用各種圖像增強場合[9]。即

logR(x,y)=logS(x,y)-log[F(x,y)*S(x,y)]

(3)

基于SSR算法,Rehman等選擇不同尺度求取反射分量的值,再進行加權平均,稱為MSR(multi scale retinex)算法。MSR可以在保持圖像色調均衡的同時進一步壓縮圖像灰度的動態范圍[10]

(4)

式中:K是高斯中心環繞函數的個數,一般取3兼得高、中、低3個尺度的優點,wk為每個尺度的權重。

為了解決MSR算法因噪聲放大引起圖像局部顏色失真的現象,Jobson等又提出了MSRCR(multi-scale retinex with color restoration)算法[11]。MSRCR通過引入色彩恢復因子來修正圖像在去霧過程中丟失的彩色信息。算法實現如下

RMSRCRi(x,y)=G·[Ci(x,y)RMSRi(x,y)-O]

(5)

(6)

式中:Ci(x,y) 為i通道對應像素點的色彩恢復因子,Ii(x,y) 為當前通道對應像素點的值,α為受控制的非線性強度,β為增益常數,G為整體增益,O為修正偏差,N為圖像通道數,對于RGB圖像,N=3, 則Ij(x,y) 為各通道當前像素點位置的值。

2 改進Retinex算法

Retinex算法經過眾多學者的優化與創新,去霧效果足夠優秀,但是對于高分辨率圖像,就其在PC處理器的運行速度而言,還遠達不到實時處理的標準。區別于傳統串行處理器,FPGA能夠在同一個時鐘周期內并行處理多個計算任務,不同任務之間可以形成流水線結構,進而大幅度縮短算法的運行時間。但FPGA同樣受限于本身架構特點,存在不足之處。算法實現存在以下難點:SoC內部無論是Cortex-A9處理器或是Artix-7的DSP48資源都很難做到對算法產生的大量浮點數據進行實時處理;SoC內部邏輯資源有限,難以在低成本的同時保證去霧算法的效果;傳統Retinex算法為串行執行,需要在不改變算法本質的基礎下進行并行加速。基于以上,本文對算法進行改進,在保證去霧效果的基礎上,使其適合在可編程邏輯架構運行,改進算法架構如圖1所示。

圖1 改進Retinex算法架構

改進算法在原算法基礎上主要進行了光照估計、色彩平衡、圖像融合三方面優化。使用雙邊濾波聯合Gamma校正改善原有算法的光照估計過程,并引入色彩恢復因子加以白平衡對去霧后圖像色彩進行校正,最后融合直方圖均衡化的優點對輸出圖像進行增強。

2.1 光照分量估計優化

經典Retinex算法采用的高斯濾波是空間域濾波,中心點像素值由鄰域內其它點像素值加權計算得到,權值僅與像素距離有關,濾波后圖像會變得模糊,丟失細節。而雙邊濾波可以看成兩個高斯濾波的結合,一個考慮距離空間臨近,一個考慮顏色相似[12]。計算空間臨近度權值和像素值相似度權值的乘積,使用優化的權值與原圖像卷積,進而達到保邊去噪的效果。雙邊濾波實現如下

(7)

其中,BF[I]p為濾波后像素,s為濾波窗口域,Gσs和Gσr分別為空間臨近和像素相似高斯濾波器,濾波器標準差由人為確定。

小尺度的SSR可以增強細節,但容易丟失色彩,大尺度的SSR可以保持色彩,但對比度增強方面欠佳[13],因此MSR算法使用高、中、低3個尺度的高斯函數分別對原圖像進行卷積,兼顧了亮度提升和細節增強。在FPGA中,可以將數據流復制后再分別進行流水線處理,不會影響算法實時性,但是會消耗大量的邏輯資源。而Gamma校正在γ<1時,可以提升圖像對比度,使得校正后的圖像更符合照度圖像。所以設計使用小尺度的雙邊濾波函數與原圖像卷積加以Gamma校正代替多尺度高斯函數用于提取圖像的照度分量。根據對大量圖像進行實驗后發現γ值為0.35校正后的照度分量為佳,Gamma校正硬件實現如下所示

(8)

dst(x,y)=lut[src(x,y)]

(9)

其中,lut[i] 是存儲對應γ值校正后的數組,src(x,y) 為原圖像灰度值,dst(x,y) 為經過Gamma校正后該點灰度值。

2.2 Min-Max歸一化替代指數域回轉

傳統Retinex算法存在對數域數據轉向指數域的步驟,浮點型數據進行指數運算會消耗大量的DSP資源,并且較難滿足時序要求。Min-Max歸一化相比于指數計算可以節省大量資源,如果樣本數據沒有大量集中在一起時,對圖像數據的線性映射效果會非常好。本設計使用Min-Max歸一化的方法來代替指數運算將加法器輸出的數據重新映射到[0-255]的值域內實現圖像的恢復。Min-Max歸一化算法實現如下

(10)

其中,Ii max和Ii min分別為圖像第i個通道的最大和最小值。Vmax和Vmin是給定放縮范圍的最大值和最小值,對于8位無符號圖像Vmax=255,Vmin=0。 而I′i(x,y) 則為原圖像Ii(x,y) 經過線性映射后的結果。

2.3 原始色彩恢復與平衡

SSR和MSR算法都存在去霧后圖片往往會出現色彩偏差的問題,因為算法分通道單獨進行,忽略了不同色彩通道之間的聯系。文獻[5,6]將圖像從RGB空間分別轉換到HSV和YCbCr空間,只對亮度信息進行處理,這樣雖然有效防止了色彩出現偏差,但是并不能增強被霧霾弱化的色彩,且一定程度上也會減弱去霧效果。本文根據MSRCR算法,引入色彩恢復因子,用于調節各個通道之間的比例關系,在數據選取恰當的情況,可以在不影響去霧效果的情況下有效恢復出圖像原始色彩。為了抑制高亮天空區域,G選擇為0.7。調節各通道比例的α、β參數分別選擇為200和0.36可以對大部分有霧圖像起到較好的色彩恢復效果。

Retinex算法以色彩恒常性理論為基礎,而自動白平衡算法(auto white balance,AWB)可以消除相機在不同光線條件下可能會出現的偏色問題,模擬人類視覺系統的顏色恒常性。常用的AWB算法有灰度世界法、完美反射法等[14],硬件實現難度相仿。本文選取消耗資源更少的灰度世界法對經過色彩因子恢復的圖像進行白平衡,進一步保證算法對原始色彩、色溫的準確恢復調節。算法實現如下

(11)

(12)

式中:Ravg、Gavg、Bavg分別為RGB這3個通道亮度均值,K=(Ravg+Gavg+Bavg)/3。

2.4 融合增強

直方圖均衡化將圖像的原始直方圖變換為均勻分布的形式,有效增加圖像灰度的動態范圍,一定程度上消除了顏色偏差,同時增加了對比度,顯示了更多的細節。Reti-nex算法可以顯著提高暗部區域的細節,但亮部區域處理后可能會出現光暈、泛白、對比度下降等現象[15]。本文將這兩種圖像增強算法進行像素級融合互補,首先將圖像轉換到YCrCb空間對亮度分量Y進行直方圖均衡,可以使圖像不出現失真的情況下增強對比度,再轉回RGB空間與經過Retinex算法后輸出的圖像進行線性融合,融合規則如下

dst(x,y)=α*src1(x,y)+(1-α)src2(x,y)

(13)

src1(x,y) 和src2(x,y) 分別為直方圖均衡化與Retinex過程處理后圖像,α取0.2時對大部分圖像都能起到良好的融合效果,融合后圖像各方面指標都較為優秀。

3 硬件加速實現

Xilinx公司的Vitis HLS(high-level synthesis)工具可以從C層面開發和驗證算法,以更高的抽象級別實現硬件細節。相比于RTL層面更快迭代設計。在設計中使用指令(pragmas),進而實現算法代碼對硬件電路精確的調度與綁定。Vitis vision庫是基于OpenCV針對FPGA架構專門優化的視覺庫,包含了大部分基礎的OpenCV算法函數,方便用戶快速實現自己的算法。設計使用Vitis HLS工具完成去霧IP核開發與驗證,并在ZYNQ 7020開發板上進行測試。

3.1 算法整體流水線設計

FPGA通過為每個功能模塊建立單獨的硬件來實現整個算法所需要的邏輯功能,指令#pragma HLS DATAFLOW可以讓每個功能模塊間形成流水線,實現在一個時刻完成多個算法的并行處理,最大程度上降低算法總延時,算法整體流水線架構如圖2所示。

圖2 改進Retinex算法內部流水線設計

(1)將原圖像每個像素點加1,防止在對數運算中出現錯誤。

(2)復制數據流,分別用于直方圖均衡化過程和Reti-nex過程。

(3)第一路數據流圖像轉換到YCrCb色彩空間,通過直方圖均衡化模塊只對Y分量進行處理后再轉回RGB空間。

(4)第二路數據流經過雙邊濾波與Gamma校正處理后與經過同步保持的第三路數據流進行Retinex過程處理。

(5)將Retinex算法和直方圖均衡化算法處理后的數據進行線性融合。

(6)對融合后的圖像進行色彩恢復以及白平衡處理,最后輸出去霧圖像。

3.2 模塊內部設計與優化

算法內部是由許多功能模塊通過DATAFLOW指令串聯而成的,功能模塊根據FPGA架構特點進行設計,同時也應用了適合的pragma在邏輯資源與處理延時之間達到平衡。

3.2.1 查找表計算對數

改進算法中的Retinex過程模塊和色彩恢復模塊都涉及到對數運算。對數運算和指數運算一樣會消耗FPGA內部大量的硬件資源。算法處理的圖像是8位3通道的真彩色圖像,像素點的灰度級數在0-255之間,所以對于Retinex過程模塊只需要存儲ln[0-255]的值就可以快速計算出對數值。而對于色彩恢復模塊,將式(6)變形可得

(14)

3.2.2 數據格式標準化

改進算法中處理過程中會產生大量的小數,例如進行Min-Max歸一化時,會先將圖像數據壓縮到0-1范圍,再重新映射回0-255值域內。考慮到ZYNQ中DSP48E資源的浮點運算能力較弱,本設計將所有出現的浮點數轉化為定點保存。由Min-Max歸一化公式可知,要想數據在定點近似保存時不存在誤差,分辨率至少為1/255≈4×10-3。在計算機中二進制近似表示為0.000000010000011000。Vitis HLS除了支持C++基本數據類型之外,還提供了任意精度定點數據類型,可以避免位寬資源不必要的浪費。通過模板類ap_[u]fixed 可以創建任意精度定點類型,其中W表示數據總位寬,I為整數部分位寬,Q為舍入或量化類型,O為溢出模式,N為溢出模式下的飽和位數。在FPGA中使用定點表示浮點數不僅可以節約大量的位寬、邏輯資源,還能大幅度改善算法綜合實現后的時序性能。

根據上述分析,設計統一使用ap_fixed<24,8> 有符號定點數表示浮點數。對于圖3中不同數據精度輸出圖像:主觀上看不出太大差別,但是使用Image Watch工具放大道路紅燈處像素,可以看出使用ap_fixed<16,8> 定點數據相對于使用單精度浮點數算法輸出圖像有較大誤差,而使用ap_fixed<24,8> 定點數據的輸出誤差可以忽略不計。經過計算,使用ap_fixed<24,8> 類型數據相對于單精度浮點數據輸出圖像結構相似性達到99.7%,客觀上保證了去霧效果不會受限于數據精度。

圖3 不同數據精度輸出圖像及其局部像素值

3.2.3 依賴循環流水化

在Min-Max歸一化算法和自動白平衡算法以及直方圖均衡化算法內部都存在有依賴關系的循環。以Min-Max歸一化處理為例,算法需要計算出一幀圖像數據的最大最小值,再使用該值進行歸一化處理。

如圖4所示,算法需要經過兩次對圖像遍歷的Loop才能完成對圖像的歸一化處理,由于兩個Loop之間存在依賴關系,無法使用DATAFLOW指令進行流水線處理,只能串行執行這兩個Loop,極大增加了算法的延時,且對于其它模塊需要的同步FIFO是巨大的。對此,設計使用static限制符初始化一個存放最大最小值的數組用于Loop2進行歸一化處理,并將Loop1和Loop2合并,在完成當前幀數據歸一化后再使用當前幀數據最大最小值更新數組,下一幀圖像使用上一幀圖像數據進行歸一化處理,在實際測試中,可以每秒處理100幀以上數據,不會對效果產生影響。

圖4 Min-Max歸一化算法流水線改進方式

3.2.4 模塊間數據同步

設計使用#pragma HLS PIPELINE II=1指令將模塊內部流水線化,并指定啟動時間間隔(II)為1,這樣可以降低每個模塊之間需要同步的FIFO大小。流水線的瓶頸位于設計中處理最慢的模塊,對于改進Retinex算法來說是雙邊濾波模塊,根據設計推導可知,需要同步的FIFO深度D≥[(S-1)/2]·W, 其中S為濾波器窗口大小,W為圖像寬度。所以設計指定FIFO深度為1000以使得不同模塊之間的數據得以同步處理。

4 實驗結果與分析

本文算法仿真測試環境為基于OpenCV3.4.11的Vitis HLS 2020.2。基于HSV空間的MSR算法處理平臺為基于OpenCV4.1的Visual Studio 2019,PC配置為主頻3.6 GHz的AMD Ryzen R5-3600 CPU,以及16 GB雙通道DDR4內存。算法實際驗證平臺為正點原子啟明星ZYNQ7020開發板、OV5640攝像頭和4.3寸800×480分辨率屏幕。

4.1 HLS與PC仿真結果對比

為了驗證算法的效果以及可行性,選取了3組圖片分別進行仿真對比,測試結果如圖5所示。

圖5 兩種算法輸出結果

主觀上來看,基于HSV空間的MSR算法和本文算法輸出圖像相對于原圖像均有不同程度細節提升、對比度增強。前者對于濃霧處細節增強要優于后者,但是圖像部分噪聲也被放大,出現了明顯的色彩失真,本文算法處理后圖像顏色偏差很小,飽和度適中,但是細節不夠豐富。整體來說,本文算法處理圖像相較于前者更符合人類視覺感知。從客觀上,對兩種算法輸出的去霧圖像進行了信息熵、峰值信噪比(PSNR)、結構相似性(SSIM)以及每幀處理耗時(T)這4個維度的評價。信息熵表示圖像中每個灰度級像素的可能信息量,信息熵越大,圖像的細節越完整、輪廓越清晰。PSNR可評價圖像的重建質量,PSNR越小,表示圖像越模糊。SSIM主要用于度量圖像結構信息的保留程度,值越大,表明圖像保留了越多的結構或深度信息。指標具體計算方法可見文獻[16],原圖像以及兩種算法輸出圖像作為評價標準參數輸入,其中每幀處理耗時(T)計算結果分別由Vitis HLS/Visual Studio工具輸出,其余指標均在MATLAB中編寫程序計算得出。表1與表2分別為兩種算法輸出圖像清晰度指標數據。

表1 基于HSV空間的MSR算法輸出圖像數據

表2 本文算法輸出圖像數據

從表中數據分析可知,本文算法相對于前者算法輸出3幅圖像平均的信息熵和峰值信噪比數據有不同程度提高,而在結構相似性方面則有較大幅度提升,算法在ZYNQ上運行幀處理耗時相對于PC更是有高達17倍的加速。客觀說明本文算法相較于前者算法圖像更清晰,顏色保真度更高,實時性更好。與主觀感受基本相符。

4.2 實際工程測試

在C驗證完成后,對工程進行了C/RTL聯合仿真,保證算法映射出的電路準確無誤。綜合報告指出在主頻為100 MHz下需要403 363個Cycle完成一幀800×480大小的彩色圖像處理,也就是約為4.03 ms處理完一幀圖像。完全能夠滿足系統實時性的需求。算法綜合后資源報告見表3。

表3 算法綜合后資源使用數據

經過優化后的算法綜合后完全滿足ZYNQ SoC的資源要求,實際上整體工程經過布局布線后會進一步優化,SoC內部除了IO資源外其余各種資源利用率均不超過30%。在完成軟硬件設計后,進行實際工程測試,系統測試架構如圖6所示。

圖6 去霧系統視頻通路設計

系統將OV5640攝像頭輸入的有霧視頻數據轉換為AXI4-Stream協議方便在SoC內部高速傳輸,輸入視頻通過Retinex去霧IP核進行實時處理。VDMA IP核通過AXI-HP高性能接口將去霧后的數據送入ARM端并寫入DDR3中緩存,VDMA同時根據LCD屏幕時序與數據速率讀取DDR3中緩存數據并進行輸出。另外ARM端使用AXI-GP通用接口對IP核以及外設進行配置,上位機可以通過AXI4-Lite協議對去霧IP核絕大部分參數進行實時配置以取得更好的去霧效果,實際測試結果如圖7所示。

圖7 實際去霧效果測試

通過配置OV5640攝像頭寄存器輸出800×480@45 fps格式視頻,實際測試時輸出去霧圖像因室內測試光線影響出現部分失真,不會影響實際使用。切換場景時系統可以對輸入視頻進行實時去霧處理。算法上板測試與之前仿真結果基本一致,驗證了嵌入式去霧系統的有效性與實時性。

5 結束語

本文首先分析了異構SoC相對于傳統串/并行架構在進行圖像處理的優劣勢所在,并對MSRCR算法做出照度估計、色彩平衡、融合增強等多方位改進,克服了原算法的不足。同時根據ZYNQ SoC架構特點,對算法全流水線設計部署難點提出解決方案,大大提升了算法實時性。數據分析與實測結果表明:改進算法客觀上顯著提高了對比度和清晰度并有效恢復原始圖像色彩,與主觀感受與實際測試結果相符。另外本文構建的基于ZYNQ SoC的實時去霧系統,可以根據使用場景不同,靈活調整算法參數。系統在實時性、成本控制、去霧效果、靈活性等各方面完全滿足了戶外去霧系統的需求。

猜你喜歡
色彩設計
何為設計的守護之道?
現代裝飾(2020年7期)2020-07-27 01:27:42
《豐收的喜悅展示設計》
流行色(2020年1期)2020-04-28 11:16:38
秋天的色彩
瞞天過海——仿生設計萌到家
藝術啟蒙(2018年7期)2018-08-23 09:14:18
繽紛夏日
設計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
神奇的色彩(上)
春天的色彩
環球人物(2016年9期)2016-04-20 03:03:30
色彩當道 俘獲夏日
Coco薇(2015年5期)2016-03-29 23:18:25
主站蜘蛛池模板: 久久精品无码一区二区国产区| 成人毛片在线播放| 狠狠v日韩v欧美v| 2020最新国产精品视频| 国产第一页屁屁影院| 老熟妇喷水一区二区三区| 全免费a级毛片免费看不卡| 国产人成在线观看| Aⅴ无码专区在线观看| 伊人福利视频| 国产在线精彩视频论坛| 无码精油按摩潮喷在线播放 | 国产另类视频| 日韩资源站| a级毛片视频免费观看| 狠狠色丁婷婷综合久久| 污网站免费在线观看| 在线中文字幕日韩| 国产日韩av在线播放| 中文字幕乱码中文乱码51精品| 国产精品伦视频观看免费| 国产白浆在线| 69av在线| 欧美69视频在线| 啪啪免费视频一区二区| 久久免费精品琪琪| 男女男免费视频网站国产| 综合五月天网| 国内丰满少妇猛烈精品播| 国产精品视频第一专区| 国产网站在线看| 欧美在线免费| 久久久久免费看成人影片| 国产精品天干天干在线观看| 中文字幕在线不卡视频| 99国产在线视频| AV在线麻免费观看网站| 欧美成一级| 青青草国产在线视频| 欧美成人手机在线观看网址| 99热最新网址| 国产精品19p| 欧美中文字幕在线视频| AV不卡在线永久免费观看| 成人精品免费视频| 波多野结衣中文字幕久久| Aⅴ无码专区在线观看| 免费网站成人亚洲| 国产精品手机在线观看你懂的| 亚洲最新在线| 亚洲伊人久久精品影院| 2021天堂在线亚洲精品专区| 欧美综合中文字幕久久| 综合久久久久久久综合网| 日本人妻一区二区三区不卡影院 | 一级毛片免费播放视频| 国产美女在线观看| 再看日本中文字幕在线观看| 在线欧美日韩国产| 国产成人h在线观看网站站| 久久精品国产亚洲麻豆| 在线观看亚洲精品福利片| 日韩国产无码一区| 国产精品欧美在线观看| 国产乱人伦偷精品视频AAA| 欧美色综合网站| 蜜芽国产尤物av尤物在线看| 国产男人的天堂| 亚洲一区二区三区中文字幕5566| 日本成人福利视频| 亚洲精品自产拍在线观看APP| 久久青草精品一区二区三区 | 在线日本国产成人免费的| 国产欧美日韩综合一区在线播放| 亚洲有码在线播放| 免费人成在线观看视频色| 天天干伊人| 美女亚洲一区| 91小视频在线播放| 粗大猛烈进出高潮视频无码| 国产精品亚洲一区二区三区z | 免费av一区二区三区在线|