《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 圖像去模糊系統(tǒng)頻域優(yōu)化設計
圖像去模糊系統(tǒng)頻域優(yōu)化設計
2019年電子技術應用第7期
李菁菁,劉云飛
南京林業(yè)大學 信息科學技術學院,江蘇 南京210037
摘要: 在實際應用中,模糊圖像清晰化處理難以在空域實現,為此需對圖像進行頻域轉換,在頻域中實現圖像去模糊。采用FPGA開發(fā)平臺“硬件”實現圖像處理,實時性強,但消耗資源過多,執(zhí)行效率低。針對此問題,提出了一種“軟硬結合”的設計方案,以DE1-SoC開發(fā)板為硬件平臺,在FPGA中配置Frame Reader、SDRAM、混合器、頻域轉換模塊等,并映射到HPS中,HPS利用HPS-FPGA總線訪問SDARM,獲取模糊圖像頻譜圖。利用Linux C編程在HPS中對模糊圖像頻譜圖進行模糊尺度及角度估計,得到點擴散函數PSF,并利用經典復原算法進行復原,實現圖像盲去模糊。系統(tǒng)應用基2-DIT-FFT對圖像的行列依次進行頻域轉換,相比于固有IP核及通用頻域轉換模塊,提高了圖像頻域轉換精度,減少硬件資源消耗。
中圖分類號: TP391
文獻標識碼: 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.
An optimum design of frequency domain processing for image deblurring system
Li Jingjing,Liu Yunfei
Institute of Information Science and Technology,Nanjing Forestry University,Nanjing 210037,China
Abstract: In practical applications, it is difficult to make blurred images clear in spatial domain. Therefore, it is necessary to transform the image in frequency domain and implement image deblurring in frequency domain. When using the development platform of FPGA, image processing is realized by pure hardware, which has strong real-time performance, but consumes too much resources and low execution efficiency. In order to solve this problem, this paper proposes a design scheme of combining hardware and software, which uses DE1-SoC development board as hardware platform, configures Frame Reader, SDRAM, mixer, frequency domain conversion module in FPGA, and maps them to HPS. HPS accesses SDARM using HPS-FPGA bus, and obtains the spectrum of blurred image. In HPS, it uses Linux C programming to estimate the scale and angle for blurred image spectrum, namely PSF, and restores it with classical restoration algorithm to realize blind deblurring. The system uses base 2-DIT-FFT to convert the rows and columns of images in frequency domain. Compared with the inherent IP core and general frequency domain conversion module, the system improves the image quality and reduces the consumption of hardware resources.
Key words : FPGA;HPS;SoC;FFT;frequency domain conversion

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所示。

qrs2-t1.gif

    為研究圖像去模糊功能,預先采集一幅模糊圖像。首先將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)所示。

qrs2-t2.gif

2 FPGA核心模塊設計

    在FPGA中進行硬件核心模塊設計,實現模糊圖像的頻域轉換。主要核心模塊由圖像灰度變換模塊、一維FFT模塊、二維FFT模塊等組成。 

2.1 圖像灰度變換模塊

    將采集的彩色圖像進行頻域轉換時,需要單獨計算每個顏色通道,計算量大且復雜,因而需將彩色圖像轉換到灰度圖像,以減少數據量,同時也不會損壞其圖像信息[6]。為此先將彩色圖像數據分為R、G、B三個顏色通道,分別存儲在存儲器中。為使灰度圖像處理有更好的視覺效果,根據心理學特征進行如式(1)所示的灰度圖像轉換(Luminance法),并設計灰度圖像轉換模塊。灰度變換后完成后,將灰度圖像數據存儲在SDRAM中。

    qrs2-gs1.gif

2.2 一維FFT模塊設計

    FFT算法是數字圖像處理中最重要的核心算法之一,是影響圖像去模糊處理系統(tǒng)整體效率的關鍵[7]。本文采用按時域抽取的基-2 DIT算法,將初始數據分為前一半和后一半分別存儲到存儲器中,通過時序控制分別從RAM1、RAM2中采用抽取奇數點、偶數點方法進行每一級運算。算法主要由輸入模塊、存儲模塊、蝶形運算模塊、溢出檢測、截位等模塊組成??傮w框圖如圖3所示。

qrs2-t3.gif

    為實現一維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處理結構完全一樣,因而只需在處理過程中對數據進行轉置以及存儲就行。

qrs2-t4.gif

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可知此設計資源占用較少。

qrs2-b1.gif

    為驗證一維頻域轉換模塊的精度,輸入一個余弦波測試信號,如式(2)所示:    

    qrs2-gs2.gif

其中,信號幅值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所示。

qrs2-t5.gif

    將仿真生成的數據導出到OUT_I.txt、OUT_R.txt文本,再應用 MATLAB繪圖得到基于FPGA的FFT算法處理結果,并與基于MATLAB的FFT計算結果相比較,如圖6(a)、圖6(b)所示。對比發(fā)現基于FPGA仿真結果與預期符合,待測頻率1 kHz在64點處,鏡像頻率15 kHz在960點處。該頻域處理模塊能夠有效地保存模糊圖像的有效信息。

qrs2-t6.gif

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°幾乎接近。

qrs2-t7.gif

3.2 運動模糊尺度估計

    利用頻譜圖像(圖7(b))及模糊角度θ,估計運動模糊尺度L。算法具體步驟如下:

    (1)對模糊圖像(圖7(b))進行θ角度旋轉,得到圖8(a),再進行濾波及二值化處理;

    (2)通過中心點并沿垂直方向,畫出二值化后圖像強度分布圖;

    (3)對強度分布圖進行極值處理,得到極值處理圖(圖8(b)),并確定中心條紋間距2d,估算出模糊圖像的模糊長度L。

    經過計算得到模糊長度L=19.7,與真實值20接近。

qrs2-t8.gif

4 系統(tǒng)分析

    完成DE1-SoC開發(fā)系統(tǒng)的搭載,并與相機、顯示器、鍵盤、鼠標等外部設備連接。然后將USB攝像頭固定在可滑動三腳架上,對三腳架設置一定的角度并調整好攝像頭方向,快速滑動相機,同時用鼠標觸發(fā)捕獲按鈕,捕獲模糊圖像如圖9(a)所示。將模糊圖像數據輸入到Bayer2RGB模塊,分R、G、B三通道存儲,進行灰度轉換,再輸入到頻域轉換模塊,進行頻譜變換。最后,采用圖像去模糊算法進行圖像恢復,得到恢復圖像如圖9(b)所示?;謴蛨D像細節(jié)清晰、穩(wěn)定。通過觀察可知,此系統(tǒng)能夠較好地實現攝像頭拍攝、抓拍捕獲、頻譜變換及恢復圖像等功能,并在終端完好地保存了原模糊圖像以及恢復后圖像。 

qrs2-t9.gif

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)

此內容為AET網站原創(chuàng),未經授權禁止轉載。