劉 聲,韓俊剛,韓 帥
(西安郵電大學 計算機學院,陜西 西安 710121)
引導濾波的軟硬件協(xié)同加速器設計與實現(xiàn)*
劉 聲,韓俊剛,韓 帥
(西安郵電大學 計算機學院,陜西 西安 710121)
引導濾波算法被大量用于圖像處理領域中,在去雨雪、去霧、前景提取、圖像去噪、圖像增強、級聯(lián)采樣等方面有很好的處理效果。但是對于實時應用,軟件實現(xiàn)難以滿足需要。提出了在SDSoC環(huán)境下利用軟硬件協(xié)同開發(fā)策略實現(xiàn)引導濾波硬件加速。通過在SDSoC開發(fā)環(huán)境中調試C語言代碼實現(xiàn)引導濾波算法,并將其中影響性能的函數(shù)用 Xilinx公司開發(fā)的Zedboard開發(fā)版硬件實現(xiàn)。在設計中,采用了流數(shù)據(jù)的方法、PS(Processing System)端和PL(Programmable Logic)端協(xié)同開發(fā)策略,以及軟硬件并行、流水線優(yōu)化等優(yōu)化方法,提高了加速器的整體性能。實驗結果表明,提出的軟硬件協(xié)同的引導濾波加速器加速比可達16。
引導濾波;SDSoC;軟硬件協(xié)同;FPGA
2010 年HE K M等人提出了引導濾波(Guided Filter)[1]算法。該算法與雙邊濾波最大的相似之處就是同樣具有保持邊緣的特性,不同之處在于它還克服了去偽影的影響。該算法被大量用于圖像處理領域中,在去雨雪[2]、去霧[3]、前景提取[4]、圖像去噪、圖像增強、級聯(lián)采樣等方面有很好的處理效果。
但是,隨著處理圖像的尺寸不斷擴大,基于 CPU處理的引導濾波算法越來越不能滿足人們的需求,因此,王新磊等[5]用CUDA實現(xiàn)了引導濾波GPU加速。為使引導濾波能在嵌入式領域達到實時處理,本文提出了基于FPGA對引導濾波實現(xiàn)加速的方法。
引導濾波理論的基礎是局部線性模型。該模型認為:任意函數(shù)上的任意一點與該點鄰近部分的點可以看成是線性關系,一個復雜的函數(shù)可以用很多局部線性函數(shù)來表示。若需要求出該函數(shù)上某一點的值,只需求出所有包含該點的線性函數(shù)的值,并求出這些線性函數(shù)值的平均值,這個平均值就是該函數(shù)上所求點的值。
2.1 實驗環(huán)境介紹
本文采用 Zynq-7000系列的 Zedboard開發(fā)板[6]作為硬件開發(fā)環(huán)境,其PS端提供了ARM Cortex-A9處理器、512 MB DDR3內存空間和外部存儲接口。其 PL端的XC7Z020 CLG481-1 EEP芯片提供了可編程邏輯陣列單元,為硬件加速提供了豐富的邏輯資源。本文采用SDSoC[7]作為軟件開發(fā)環(huán)境,它是基于 Zynq-7000全可編程芯片在嵌入式系統(tǒng)中的 IDE(Integrated Development Environment)。
2.2 算法結構設計
本文將單通道的圖像數(shù)據(jù)存儲在PS端的外部存儲中,之后讀取數(shù)據(jù)到內存中。為了獲取最大的運算性能,在引導濾波函數(shù)調用前分配好算法需要的圖像緩沖空間,將內存空間指針以參數(shù)形式傳遞給引導濾波函數(shù),供其使用,之后PS端調用引導濾波函數(shù)。本文將引導濾波算法分為兩部分,其中一部分是將對算法有較大影響的函數(shù)用硬件加速,硬件加速部分將數(shù)據(jù)傳到 PL端,PL端將其用硬件邏輯電路實現(xiàn),對實現(xiàn)的硬件再通過流水線、并行處理和算法重構等優(yōu)化方法對算法進行優(yōu)化。處理完數(shù)據(jù)后,再將數(shù)據(jù)寫回到PS端。最終PS端將處理好的圖像存儲在外部存儲中。算法結構設計如圖1所示。
圖1 算法結構設計示意圖
2.3 優(yōu)化方法
2.3.1 流數(shù)據(jù)傳輸
為了獲取PS端和PL端的最大傳輸性能,本文使用SDSoC開發(fā)環(huán)境中的 sds_alloc函數(shù)[8]在 PS端申請連續(xù)的物理地址作為圖像緩沖區(qū),并在硬件函數(shù)聲明前插入指導編譯器的參數(shù) #pragma SDS dada zero_copy(imgIn[0: rows*cols])和#pragma SDS data access_pattern(imgIn[0:rows* cols])命令來將圖像數(shù)據(jù)轉化為流數(shù)據(jù)[8]進行傳輸。
2.3.2 流水線優(yōu)化
為了增加程序的并發(fā)性,流水線優(yōu)化可以使當前操作沒有完成之前就開始執(zhí)行下一個操作。環(huán)境SDSoC的PIPELINE[8,10]優(yōu)化指令可以對函數(shù)及循環(huán)進行優(yōu)化。下面分別對函數(shù)的流水線和循環(huán)的流水線優(yōu)化進行說明。
(1)函數(shù)的流水線操作
從圖2可以看出,func函數(shù)需要 3個時鐘完成一組操作。若進行兩組操作,在沒有進行流水線優(yōu)化的情況下,每次操作順序執(zhí)行,最后一次輸出需要6個時鐘;而經(jīng)過流水線優(yōu)化的func函數(shù),每經(jīng)過1個時鐘就可以讀取下一組數(shù)據(jù),兩組操作完成后只需要4個時鐘周期就能夠輸出結果。由此可見,流水線優(yōu)化可以提高函數(shù)的并發(fā)性,增加算法的效率。
圖2 函數(shù)流水線優(yōu)化示意圖
(2)循環(huán)的流水線優(yōu)化
從圖3可看出,用循環(huán)來對圖像像素進行處理,假設每個像素處理時間為30個時鐘周期,若處理圖像大小為 512×512,則未流水線優(yōu)化前,需要的總時鐘個數(shù)為7 864 320個時鐘周期;流水線優(yōu)化后,需要的總時鐘個數(shù)為262 174個時鐘周期,性能有了近30倍的提升。
圖3 循環(huán)流水線優(yōu)化示意圖
2.3.3 并行處理
SDSoC環(huán)境提供了async和wait指令,使得程序員能夠對硬件函數(shù)的同步方式進行控制。硬件開始工作后,PS端的 async指令會交還 CPU的控制權,繼續(xù)執(zhí)行 PS端的任務,實現(xiàn)軟硬件函數(shù)并行處理。通過這種方法,可以增加系統(tǒng)的并行性,提高算法的效率。wait命令用來同步數(shù)據(jù),使得下一個函數(shù)能夠成功應用上一個硬件函數(shù)的輸出結果,防止程序死鎖。
本文輸入單通道的.bmp格式文件為待處理圖像,模板大小選擇3×3,引導圖像和待處理圖像為同一張圖像,實驗效果如圖4所示。
其中,圖4(a)為待處理圖像和引導圖像,圖4(b)為經(jīng)過軟硬件協(xié)同加速器實現(xiàn)的引導濾波效果圖,圖4(c)為在 PC上用 OpenCV庫純軟件實現(xiàn)的引導濾波效果圖。通過對比可看出,經(jīng)過軟硬件協(xié)同加速器實現(xiàn)的引導濾波和在PC上純軟件實現(xiàn)的引導濾波在效果上基本相同。
為了比較本文提出的軟硬件協(xié)同加速器的加速效果,分別測出了在PS端對不同大小圖像實現(xiàn)引導濾波算法的幀率值和軟硬件協(xié)同加速器對不同大小圖像實現(xiàn)引導濾波算法的頻率值。實驗數(shù)據(jù)如表1所示。
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)
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.
guided filter;SDSoC;hardware/software co-design;FPGA
TP391
A
10.16157/j.issn.0258-7998.2016.11.010
劉聲,韓俊剛,韓帥.引導濾波的軟硬件協(xié)同加速器設計與實現(xiàn)[J].電子技術應用,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.
國家自然科學基金重大項目(61136002)