文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.190235
中文引用格式: 李菁菁,劉云飛. 圖像去模糊系統(tǒng)頻域優(yōu)化設計[J].電子技術應用,2019,45(7):107-111,116.
英文引用格式: Li Jingjing,Liu Yunfei. An optimum design of frequency domain processing for image deblurring system[J]. Application of Electronic Technique,2019,45(7):107-111,116.
0 引言
通常,圖像處理算法按照作用域可分為時域和頻域兩大類[1]。在實際應用中,大多數圖像采用時域處理算法,但處理模糊圖像時,考慮到時域中去卷積難度較大,對模糊核的估計處理精度較低,故采用頻域處理算法,即先對模糊圖像頻域轉換,再在頻域中處理。其中,FFT(快速傅里葉變換)是數字信號分析和處理過程中最常用的重要變換之一,在頻域中的很多運算都可以轉換為FFT的基本運算[2]。
隨著集成電路工藝不斷進步,FPGA器件也在不斷發(fā)展,其可配置、功耗低、易于實現流水和并行結構的特點,提高了圖像處理速度,滿足現代信號處理的高速度、高可靠性的要求[3]。Altera公司的DE1-SoC開發(fā)板是一個基于可編程技術、高度集成的硬件平臺,具有較高實時性。它采用內嵌雙核Cortex-A9硬核處理器SoC FPGA芯片,可在硬件和軟件之間實現調度,滿足了圖像處理設計中功耗、性能及成本等要求。開發(fā)板的硬核處理系統(tǒng)(HPS)包括ARM處理器、SD卡、USB、存儲器等接口,硬件系統(tǒng)FPGA采用Altera公司的Cyclone V芯片,集成了視頻音頻、以太網等外設。兩大硬件系統(tǒng)既可獨立運行,也可通過高速AXI內部總線實現HPS和FPGA的數據訪問、數據傳輸和寄存器控制。
本文設計了一種基于FPGA和HPS硬核處理器相結合的片上系統(tǒng),結合圖像去模糊算法,采用輸入數據預處理、兩塊RAM交替存儲數據、溢出截位、流水線結構等方式實現圖像去模糊系統(tǒng)中的頻域處理優(yōu)化設計。與之前其他同類系統(tǒng)中頻域處理算法相比,圖像頻域轉換精確度高、硬件資源消耗減少,并且運行速度快。
1 系統(tǒng)的總體設計
1.1 硬件系統(tǒng)設計
本系統(tǒng)以DE1-SoC為開發(fā)平臺,包含HPS和FPGA兩部分,其中HPS搭載Linux操作系統(tǒng),借助攝像頭驅動V4L2,負責去模糊算法執(zhí)行、外設控制及利用Qt界面實現人機交互。FPGA完成圖像處理模塊配置,實現圖像頻域轉換(Bayer-to-RGB、RGB-to-Gray、頻域轉換)以及圖像顯示子系統(tǒng),實時更新HPS中Qt界面輸出的顯示內容。系統(tǒng)的總體框圖如圖1所示。
為研究圖像去模糊功能,預先采集一幅模糊圖像。首先將USB攝像頭固定在可滑動三腳架上,將DE1-SoC開發(fā)板與相機、顯示器、鍵盤、鼠標等外部設備連接,對三腳架設置一定的角度并調整好攝像頭方向,快速滑動相機,同時用鼠標觸發(fā)捕獲按鈕,捕獲圖像。將采集到的圖像數據進行RGB格式轉換,并將數據送到SDRAM存儲模塊對圖像數據信息進行緩存,防止系統(tǒng)內部時鐘頻率不同,造成采樣和顯示不一致[4]。接著,幀讀取器讀取SDRAM中緩存的數據,通過VGA控制模塊將捕捉到的拍攝畫面在顯示器上顯示;同時將數據傳輸到RGB2Gray格式轉換模塊,完成灰度圖像的轉換。然后傳送到頻域轉換模塊,對圖像進行頻域轉換。最后,應用經典去模糊算法進行圖像去模糊,并利用VIP控制器通過Lightweight HPS-to-FPGA總線訪問FPGA內部IP核,控制硬件各模塊工作。本系統(tǒng)只采用一個幀讀取器,通過配置它的寄存器來切換顯示內容,簡化了控制邏輯,節(jié)省了FPGA硬件資源。
1.2 基于Qt圖像用戶界面設計
Qt是一個跨平臺的C++圖形用戶界面的應用程序框架[5],具有可移植性強、運算速度快、方便性等特點。它通過信號(signal)和插槽(slot)的方法,使對象之間在相互未知情況下進行合作,從而實現真正的構建編程[5]。并且,Qt支持UNIX系統(tǒng)、Linux系統(tǒng)、Windows等多種平臺。
本系統(tǒng)軟件部分在Linux 16.04環(huán)境下編譯,以Qt框架為基礎,設計了一個集模糊圖像采集、顯示、修復以及人機交互界面的嵌入式軟件。在Qt的圖像用戶界面設置了5個功能按鈕,分別是打開攝像頭(Open Camera)、關閉攝像頭(Close Camera)、圖像捕獲(Image Capture)、圖像修復(Recovery)、退出界面(Exit)。三個顯示的窗口分別是視頻顯示(左上方)、捕獲圖像顯示(右上方)、模糊圖像修復結果顯示(左下方)。搭建實驗平臺如圖2(a)所示:將USB攝像頭固定在可滑動三腳架上,DE1-SoC開發(fā)板與相機、顯示器、鍵盤、鼠標等外部設備相連接,DE1-SoC開發(fā)板VGA端口與顯示屏相連接,對三腳架設置一定的角度并且調整好攝像頭方向,快速滑動相機,同時用鼠標觸發(fā)捕獲按鈕,捕獲模糊圖像,如圖2(b)所示,點擊圖像修復按鈕,執(zhí)行圖像去模糊算法,進行修復處理,最終結果如圖2(c)所示。
2 FPGA核心模塊設計
在FPGA中進行硬件核心模塊設計,實現模糊圖像的頻域轉換。主要核心模塊由圖像灰度變換模塊、一維FFT模塊、二維FFT模塊等組成。
2.1 圖像灰度變換模塊
將采集的彩色圖像進行頻域轉換時,需要單獨計算每個顏色通道,計算量大且復雜,因而需將彩色圖像轉換到灰度圖像,以減少數據量,同時也不會損壞其圖像信息[6]。為此先將彩色圖像數據分為R、G、B三個顏色通道,分別存儲在存儲器中。為使灰度圖像處理有更好的視覺效果,根據心理學特征進行如式(1)所示的灰度圖像轉換(Luminance法),并設計灰度圖像轉換模塊。灰度變換后完成后,將灰度圖像數據存儲在SDRAM中。
2.2 一維FFT模塊設計
FFT算法是數字圖像處理中最重要的核心算法之一,是影響圖像去模糊處理系統(tǒng)整體效率的關鍵[7]。本文采用按時域抽取的基-2 DIT算法,將初始數據分為前一半和后一半分別存儲到存儲器中,通過時序控制分別從RAM1、RAM2中采用抽取奇數點、偶數點方法進行每一級運算。算法主要由輸入模塊、存儲模塊、蝶形運算模塊、溢出檢測、截位等模塊組成??傮w框圖如圖3所示。
為實現一維FFT,先將輸入數據進行位擴展,以防運算過程中出現溢出時及時處理。通過時序控制,將輸入數據按照倒位序的方式存儲到指定的RAM中。為保證資源的有效利用,設置兩個存儲單元,分別存儲一半數據,既保證數據流水線輸入,又提高系統(tǒng)運算效率,節(jié)省運算時間。通過時序控制,調用RAM中存儲數據以及ROM的蝶形運算因子,進行蝶形運算。根據旋轉因子特性,只需存儲前一半的旋轉因子,后一半通過地址偏移得到,節(jié)省了存儲空間。在每一級蝶形運算結束后,需要進行溢出檢測,判斷是否有溢出,若有溢出需要對溢出數據進行截位處理。最后按順序進行數據輸出,存儲到存儲單元中。
2.3 二維FFT模塊設計
對圖像進行二維傅里葉變換時,利用變換可分性采用降維方法處理,分別對行和列進行一維傅里葉變換。其原理為首先對行進行一維傅里葉變換,然后對行變換后的矩陣進行轉置(變成列方向),將矩陣轉置后再次進行一維傅里葉變換[8]。二維傅里葉變換降維處理沒有計算順序要求,先行后列或者先列后行的處理順序不會影響數據處理結果[9]。
本文二維FFT處理模塊如圖4所示。采用FIFO作為數據緩沖池,將輸入圖像數據先經過FIFO進行緩存,以防FFT處理速度和圖像輸入速率不匹配[10]。從FIFO中按行讀出數據,進行行方向的一維傅里葉變換,將行變換的結果存儲到RAM存儲器中。從RAM中按列讀出數據,即在RAM中完成矩陣的轉置處理,再進行一維傅里葉變換,變換的結果再次存入RAM存儲器,再依次存入FIFO中,輸出數據,此即為圖像二維傅里葉變換后的結果。由于行FFT和列FFT處理結構完全一樣,因而只需在處理過程中對數據進行轉置以及存儲就行。
2.4 頻域轉換模塊測試
本設計使用DE1-SoC開發(fā)板,在Quartus II 13.1開發(fā)平臺上使用Verilog HDL對各邏輯模塊進行設計。完成模塊設計后,以DE1-SoC開發(fā)板的5CSEMA5F31C6N為目標芯片,在Quartus II13.1上進行綜合、布局、布線,在QuartusII環(huán)境下使用Programmer軟件,將一維FFT模塊下載到FPGA中。一維FFT模塊占用FPGA內部主要邏輯資源如表1所示。由表1可知此設計資源占用較少。
為驗證一維頻域轉換模塊的精度,輸入一個余弦波測試信號,如式(2)所示:
其中,信號幅值A=215-1,信號頻率fc=1 kHz,信號采樣頻率fs=16 kHz,采樣點數N=1 024。將測試信號產生的1 024點數據倒序輸入到一維FFT模塊,經過10級蝶形運算,按順序輸出其FFT結果。
采用QuartusII 13.1和ModelSim10.1a聯(lián)合仿真,編寫Testbench測試文件,對一維FFT模塊進行仿真測試。由仿真結果可知,在輸入數據啟動信號(master_sink_sop)和輸入數據有效信號(master_sink_dav)均有效的情況下,將初始數據輸入FFT模塊,通過時序控制模塊,進行每一級的蝶形運算。當10級蝶形運算結束后,系統(tǒng)輸出數據有效信號(master_source_dav)置高,輸出FFT處理后的結果。在ModelSim仿真時序圖如圖5所示。
將仿真生成的數據導出到OUT_I.txt、OUT_R.txt文本,再應用 MATLAB繪圖得到基于FPGA的FFT算法處理結果,并與基于MATLAB的FFT計算結果相比較,如圖6(a)、圖6(b)所示。對比發(fā)現基于FPGA仿真結果與預期符合,待測頻率1 kHz在64點處,鏡像頻率15 kHz在960點處。該頻域處理模塊能夠有效地保存模糊圖像的有效信息。
3 HPS核心模塊設計
為實現模糊圖像清晰化,需在處理器HPS中設計圖像盲去模糊算法。圖像盲去模糊算法核心是確定點擴散函數PSF,即模糊方向和模糊尺度[11]。因此,可根據圖像自身先驗知識建立模型,獲得模糊圖像PSF后,采用經典的圖像復原算法得到清晰圖像[12]。
3.1 運動模糊方向估計
運動模糊方向是指運動方向與水平方向的夾角。根據這一特性,對模糊圖像頻譜圖進行 1°~180°的Radon變換,得到180列的變換矩陣R。由于該矩陣的任意列向量是在某一角度上沿一族直線的積分投影值,并且積分直線束與頻譜中的亮暗條紋平行,故得到的投影向量中存在最大值且為全局最大值[13]。因此,可通過Radon變換檢測出頻譜暗條紋與水平方向的夾角,估計出運動模糊方向。算法具體步驟如下:
(1)將M×N維模糊圖像(如圖7(a)所示)進行灰度轉換,采用第2節(jié)的頻域轉換方法得到頻譜圖像(如圖7(b)所示);
(2)進行邊緣檢測及二值化得到圖7(c);
(3)將二值化后頻譜圖進行1°~180°的Radon變換,得到變換矩陣R及圖7(d);
(4)找到矩陣中最大值及其對應的列數n;
(5)通過公式:tan(θ)=tan(n-90°)×M/N,計算得到運動模糊方向θ。
經過計算得到模糊角度θ=45°(圖7(d)最亮處對應的橫坐標值),與真實值45°幾乎接近。
3.2 運動模糊尺度估計
利用頻譜圖像(圖7(b))及模糊角度θ,估計運動模糊尺度L。算法具體步驟如下:
(1)對模糊圖像(圖7(b))進行θ角度旋轉,得到圖8(a),再進行濾波及二值化處理;
(2)通過中心點并沿垂直方向,畫出二值化后圖像強度分布圖;
(3)對強度分布圖進行極值處理,得到極值處理圖(圖8(b)),并確定中心條紋間距2d,估算出模糊圖像的模糊長度L。
經過計算得到模糊長度L=19.7,與真實值20接近。
4 系統(tǒng)分析
完成DE1-SoC開發(fā)系統(tǒng)的搭載,并與相機、顯示器、鍵盤、鼠標等外部設備連接。然后將USB攝像頭固定在可滑動三腳架上,對三腳架設置一定的角度并調整好攝像頭方向,快速滑動相機,同時用鼠標觸發(fā)捕獲按鈕,捕獲模糊圖像如圖9(a)所示。將模糊圖像數據輸入到Bayer2RGB模塊,分R、G、B三通道存儲,進行灰度轉換,再輸入到頻域轉換模塊,進行頻譜變換。最后,采用圖像去模糊算法進行圖像恢復,得到恢復圖像如圖9(b)所示?;謴蛨D像細節(jié)清晰、穩(wěn)定。通過觀察可知,此系統(tǒng)能夠較好地實現攝像頭拍攝、抓拍捕獲、頻譜變換及恢復圖像等功能,并在終端完好地保存了原模糊圖像以及恢復后圖像。
5 結論
本文采用“軟硬結合”的設計方案,設計了一種集圖像采集、圖像處理和圖像傳輸為一體的去模糊系統(tǒng)。以DE1-SoC為開發(fā)平臺,在處理器HPS中搭載Linux操作系統(tǒng)和V4L2攝像頭驅動,通過Qt界面實現人機交互,進行圖像采集、去模糊及顯示,在FPGA中配置Frame Reader,SDRAM、混合器等模塊,并且采用流水線的FFT算法,配置頻域轉換模塊,實現頻域轉換處理。該頻域轉換模塊相比于固有IP核及通用頻域轉換模塊,保證了運算的精度,同時提高了處理速度,節(jié)省了存儲空間和硬件資源,在圖像處理上具有一定工程價值和現實意義。
參考文獻
[1] 于洪松.基于FPGA的實時圖像頻域處理[D].北京:中國科學院大學,2014.
[2] 張麗君.大點數FFT的二維算法FPGA并行實現[J].無線電通信技術,2013,39(3):86-88.
[3] 楊海鋼,孫嘉斌,王慰.FPGA器件設計技術發(fā)展綜述[J].電子與信息學報,2010,32(3):714-727.
[4] 翁天陽,莊宇,于瑋,等.基于HPS和FPGA的圖像壓縮感知編解碼系統(tǒng)[J].電子技術應用,2017,43(5):90-93.
[5] 嚴賢,韓秀玲.基于Qt的串口通信應用研究與實現[J].微計算機信息,2012,28(8):114-116.
[6] 解啟松.彩色圖像轉灰度圖像的方法研究[D].蘭州:蘭州大學,2016.
[7] 袁泉,郭子祺,姚謙,等.基于并行處理的FFT快速算法[J].科學技術與工程,2008(16):4709-4714.
[8] 楊軍,于艷艷,陳成,等.基于FPGA的二維FFT處理器的研究與設計[J].云南大學學報(自然科學版),2013,35(6):750-755.
[9] 溫博,張啟衡,張建林.高分辨圖像二維FFT正/反變換實時處理方法及硬件實現[J].計算機應用研究,2011,28(11):4376-4379.
[10] 丁昊杰,劉敬彪,盛慶華.基于CMOS圖像傳感器的視頻采集系統(tǒng)設計[J].現代電子技術,2012,35(14):178-181,188.
[11] 袁進,劉云飛.圖像去模糊系統(tǒng)的頻域處理改進方法[J].電子技術應用,2018,44(9):63-66.
[12] 程姝,趙志剛,呂慧顯,等.順序結構的運動模糊圖像復原技術綜述[J].計算機應用,2013,33(S1):161-165,185.
[13] 樂翔,程建,李民.一種改進的基于Radon變換的運動模糊圖像參數估計方法[J].紅外與激光工程,2011,40(5):963-969.
作者信息:
李菁菁,劉云飛
(南京林業(yè)大學 信息科學技術學院,江蘇 南京210037)