《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計應(yīng)用 > 引導(dǎo)濾波的軟硬件協(xié)同加速器設(shè)計與實現(xiàn)
引導(dǎo)濾波的軟硬件協(xié)同加速器設(shè)計與實現(xiàn)
2016年電子技術(shù)應(yīng)用第11期
劉 聲,韓俊剛,韓 帥
西安郵電大學(xué) 計算機(jī)學(xué)院,陜西 西安710121
摘要: 引導(dǎo)濾波算法被大量用于圖像處理領(lǐng)域中,在去雨雪、去霧、前景提取、圖像去噪、圖像增強(qiáng)、級聯(lián)采樣等方面有很好的處理效果。但是對于實時應(yīng)用,軟件實現(xiàn)難以滿足需要。提出了在SDSoC環(huán)境下利用軟硬件協(xié)同開發(fā)策略實現(xiàn)引導(dǎo)濾波硬件加速。通過在SDSoC開發(fā)環(huán)境中調(diào)試C語言代碼實現(xiàn)引導(dǎo)濾波算法,并將其中影響性能的函數(shù)用Xilinx公司開發(fā)的Zedboard開發(fā)版硬件實現(xiàn)。在設(shè)計中,采用了流數(shù)據(jù)的方法、PS(Processing System)端和PL(Programmable Logic)端協(xié)同開發(fā)策略,以及軟硬件并行、流水線優(yōu)化等優(yōu)化方法,提高了加速器的整體性能。實驗結(jié)果表明,提出的軟硬件協(xié)同的引導(dǎo)濾波加速器加速比可達(dá)16。
中圖分類號: TP391
文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.2016.11.010
中文引用格式: 劉聲,韓俊剛,韓帥. 引導(dǎo)濾波的軟硬件協(xié)同加速器設(shè)計與實現(xiàn)[J].電子技術(shù)應(yīng)用,2016,42(11):44-45,48.
英文引用格式: Liu Sheng,Han Jungang,Han Shuai. The accelerator design and implementation using hardware/software co-design for guided filter[J].Application of Electronic Technique,2016,42(11):44-45,48.
The accelerator design and implementation using hardware/software co-design for guided filter
Liu Sheng,Han Jungang,Han Shuai
School of Computer,Xi′an University of Posts and Telecommunications,Xi′an 710121,China
Abstract: The guided filter is widely used in image processing fields such as removal rain and snow, removal smog, foreground extraction, image denoising, image enhancement, cascade sampling and so on. But it is hard to satisfy real time requirement base on software. In the proposed method, the guided filter is speed up based on SDSoC environment using hardware/software co-design approach. Guided filter algorithm is implemented by debugging C language in SDSoC environment, and then some functions which impact the performance are implemented by hardware using the Zedboard from Xilinx company. The algorithm uses the method of data stream, PS(Processing System) and PL(Programmable Logic) co-design strategy, parallelism of hardware and software, pipeline optimization, reconstruction sequence of algorithm and the combination of line buffer and window buffer. The experimental results show that the accelerator′s speed-up ratio can be 16.
Key words : guided filter;SDSoC;hardware/software co-design;FPGA

0 引言

    2010年HE K M等人提出了引導(dǎo)濾波(Guided Filter)[1]算法。該算法與雙邊濾波最大的相似之處就是同樣具有保持邊緣的特性,不同之處在于它還克服了去偽影的影響。該算法被大量用于圖像處理領(lǐng)域中,在去雨雪[2]、去霧[3]、前景提取[4]、圖像去噪、圖像增強(qiáng)、級聯(lián)采樣等方面有很好的處理效果。

    但是,隨著處理圖像的尺寸不斷擴(kuò)大,基于CPU處理的引導(dǎo)濾波算法越來越不能滿足人們的需求,因此,王新磊等[5]用CUDA實現(xiàn)了引導(dǎo)濾波GPU加速。為使引導(dǎo)濾波能在嵌入式領(lǐng)域達(dá)到實時處理,本文提出了基于FPGA對引導(dǎo)濾波實現(xiàn)加速的方法。

1 引導(dǎo)濾波算法介紹

    引導(dǎo)濾波理論的基礎(chǔ)是局部線性模型。該模型認(rèn)為:任意函數(shù)上的任意一點(diǎn)與該點(diǎn)鄰近部分的點(diǎn)可以看成是線性關(guān)系,一個復(fù)雜的函數(shù)可以用很多局部線性函數(shù)來表示。若需要求出該函數(shù)上某一點(diǎn)的值,只需求出所有包含該點(diǎn)的線性函數(shù)的值,并求出這些線性函數(shù)值的平均值,這個平均值就是該函數(shù)上所求點(diǎn)的值。

2 引導(dǎo)濾波加速器設(shè)計

2.1 實驗環(huán)境介紹

    本文采用Zynq-7000系列的Zedboard開發(fā)板[6]作為硬件開發(fā)環(huán)境,其PS端提供了ARM Cortex-A9處理器、512 MB DDR3內(nèi)存空間和外部存儲接口。其PL端的XC7Z020 CLG481-1 EEP芯片提供了可編程邏輯陣列單元,為硬件加速提供了豐富的邏輯資源。本文采用SDSoC[7]作為軟件開發(fā)環(huán)境,它是基于Zynq-7000全可編程芯片在嵌入式系統(tǒng)中的IDE(Integrated Development Environment)。

2.2 算法結(jié)構(gòu)設(shè)計

    本文將單通道的圖像數(shù)據(jù)存儲在PS端的外部存儲中,之后讀取數(shù)據(jù)到內(nèi)存中。為了獲取最大的運(yùn)算性能,在引導(dǎo)濾波函數(shù)調(diào)用前分配好算法需要的圖像緩沖空間,將內(nèi)存空間指針以參數(shù)形式傳遞給引導(dǎo)濾波函數(shù),供其使用,之后PS端調(diào)用引導(dǎo)濾波函數(shù)。本文將引導(dǎo)濾波算法分為兩部分,其中一部分是將對算法有較大影響的函數(shù)用硬件加速,硬件加速部分將數(shù)據(jù)傳到PL端,PL端將其用硬件邏輯電路實現(xiàn),對實現(xiàn)的硬件再通過流水線、并行處理和算法重構(gòu)等優(yōu)化方法對算法進(jìn)行優(yōu)化。處理完數(shù)據(jù)后,再將數(shù)據(jù)寫回到PS端。最終PS端將處理好的圖像存儲在外部存儲中。算法結(jié)構(gòu)設(shè)計如圖1所示。

qrs2-t1.gif

2.3 優(yōu)化方法

2.3.1 流數(shù)據(jù)傳輸

    為了獲取PS端和PL端的最大傳輸性能,本文使用SDSoC開發(fā)環(huán)境中的sds_alloc函數(shù)[8]在PS端申請連續(xù)的物理地址作為圖像緩沖區(qū),并在硬件函數(shù)聲明前插入指導(dǎo)編譯器的參數(shù)#pragma SDS dada zero_copy(imgIn[0:rows*cols])和#pragma SDS data access_pattern(imgIn[0:rows*cols])命令來將圖像數(shù)據(jù)轉(zhuǎn)化為流數(shù)據(jù)[8]進(jìn)行傳輸。

2.3.2 流水線優(yōu)化

    為了增加程序的并發(fā)性,流水線優(yōu)化可以使當(dāng)前操作沒有完成之前就開始執(zhí)行下一個操作。環(huán)境SDSoC的PIPELINE[8,10]優(yōu)化指令可以對函數(shù)及循環(huán)進(jìn)行優(yōu)化。下面分別對函數(shù)的流水線和循環(huán)的流水線優(yōu)化進(jìn)行說明。

    (1)函數(shù)的流水線操作

    從圖2可以看出,func函數(shù)需要3個時鐘完成一組操作。若進(jìn)行兩組操作,在沒有進(jìn)行流水線優(yōu)化的情況下,每次操作順序執(zhí)行,最后一次輸出需要6個時鐘;而經(jīng)過流水線優(yōu)化的func函數(shù),每經(jīng)過1個時鐘就可以讀取下一組數(shù)據(jù),兩組操作完成后只需要4個時鐘周期就能夠輸出結(jié)果。由此可見,流水線優(yōu)化可以提高函數(shù)的并發(fā)性,增加算法的效率。

qrs2-t2.gif

    (2)循環(huán)的流水線優(yōu)化

    從圖3可看出,用循環(huán)來對圖像像素進(jìn)行處理,假設(shè)每個像素處理時間為30個時鐘周期,若處理圖像大小為512×512,則未流水線優(yōu)化前,需要的總時鐘個數(shù)為7 864 320個時鐘周期;流水線優(yōu)化后,需要的總時鐘個數(shù)為262 174個時鐘周期,性能有了近30倍的提升。

qrs2-t3.gif

2.3.3 并行處理

    SDSoC環(huán)境提供了async和wait指令,使得程序員能夠?qū)τ布瘮?shù)的同步方式進(jìn)行控制。硬件開始工作后,PS端的async指令會交還CPU的控制權(quán),繼續(xù)執(zhí)行PS端的任務(wù),實現(xiàn)軟硬件函數(shù)并行處理。通過這種方法,可以增加系統(tǒng)的并行性,提高算法的效率。wait命令用來同步數(shù)據(jù),使得下一個函數(shù)能夠成功應(yīng)用上一個硬件函數(shù)的輸出結(jié)果,防止程序死鎖。

3 實驗結(jié)果分析

    本文輸入單通道的.bmp格式文件為待處理圖像,模板大小選擇3×3,引導(dǎo)圖像和待處理圖像為同一張圖像,實驗效果如圖4所示。

qrs2-t4.gif

    其中,圖4(a)為待處理圖像和引導(dǎo)圖像,圖4(b)為經(jīng)過軟硬件協(xié)同加速器實現(xiàn)的引導(dǎo)濾波效果圖,圖4(c)為在PC上用OpenCV庫純軟件實現(xiàn)的引導(dǎo)濾波效果圖。通過對比可看出,經(jīng)過軟硬件協(xié)同加速器實現(xiàn)的引導(dǎo)濾波和在PC上純軟件實現(xiàn)的引導(dǎo)濾波在效果上基本相同。

    為了比較本文提出的軟硬件協(xié)同加速器的加速效果,分別測出了在PS端對不同大小圖像實現(xiàn)引導(dǎo)濾波算法的幀率值和軟硬件協(xié)同加速器對不同大小圖像實現(xiàn)引導(dǎo)濾波算法的頻率值。實驗數(shù)據(jù)如表1所示。

qrs2-b1.gif

4 結(jié)束語

    本文實現(xiàn)了引導(dǎo)濾波的軟硬件協(xié)同加速器,并利用開發(fā)環(huán)境SDSoC所提供的優(yōu)化指令對硬件進(jìn)行了性能優(yōu)化。與CUDA實現(xiàn)的引導(dǎo)濾波相比,性能雖有所不及,但加速效果明顯,并在低功耗及開發(fā)周期上優(yōu)勢大于CUDA。本文提出的軟硬件協(xié)同加速器可直接用于內(nèi)置CPU和FPGA的嵌入式系統(tǒng)中,縮短了嵌入式工程師開發(fā)周期,提高了系統(tǒng)整體性能。

參考文獻(xiàn)

[1] HE K M,SUN J,TANG X O.Guided image filtering[C].Proceddings of the 11th European Conference on Computer Vision.Heraklion,Crete,Greece:Lecture Notes in computer Science,2010:1-14.

[2] 鄭賢輝.單幅圖像去雨雪的算法研究[D].廈門:廈門大學(xué),2014.

[3] 楊燕,白海平,王帆.基于引導(dǎo)濾波的單幅圖像自適應(yīng)去霧算法[J].計算機(jī)工程,2016,42(1):265-271.

[4] 漆琳智,張超,吳向陽.引導(dǎo)濾波的單幅圖像前景精確提取[J].杭州電子科技大學(xué)學(xué)報,2013,33(5).

[5] 王新磊,何凱,王曉文.引導(dǎo)濾波算法的CUDA加速實現(xiàn)[J].吉林大學(xué)學(xué)報,2016,34(1).

[6] Xilinx.Zynq architecture[Z].2016.

[7] Xilinx.SDSoC development environment[Z].2016.

[8] Xilinx.SDSoC environment user guide[Z].2016.

[9] CHATI H D,MUHLBAUER F,BRAUN T,et al.Hardward/software co-design of a key point detector on FPGA[C].IEEE Computer Society,2007:355-356.

[10] Xilinx.Vivado design suite user guide:High-level synthesis[EB/OL].[2016-02].http:www.xilinx.com.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。