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