摘 要:本文選擇了一種新穎的圖像縮放算法進(jìn)行FPGA硬件實現(xiàn)。該算法基于奇偶分解的思想,具有復(fù)雜度低、硬件需求小和縮放效果良好等突出優(yōu)點(diǎn)。首先利用MATLAB對該算法進(jìn)行了功能驗證,然后用縮放耗時、PSNR、邊緣模糊等級和脈沖噪聲等指標(biāo)評估基于該算法圖像處理效果。與傳統(tǒng)時域算法作對比,對比結(jié)果表明該算法在處理效果和運(yùn)算速度上的優(yōu)異性?;赯edboard開發(fā)板,運(yùn)用Vivado HLS高級綜合工具將算法的C程序綜合成硬件IP,并搭建了包含ARM處理器和VGA等模塊的軟硬協(xié)同驗證系統(tǒng)。實驗驗證了圖像縮放算法硬件設(shè)計的正確性和實用性。
?
1. 引言
數(shù)字圖像處理因其廣泛應(yīng)用于社會生活的各個領(lǐng)域,而成為了研究的熱點(diǎn)。圖像縮放是數(shù)字圖像處理中的一項基本而又關(guān)鍵的操作,多數(shù)圖像與視頻幀都是以壓縮的格式進(jìn)行存儲和傳送,以降低存儲資源的占用,提高數(shù)據(jù)傳輸?shù)男?。針對不同的?yīng)用,用戶通常需要不同分辨率的圖像。例如,在圖像數(shù)據(jù)傳輸過程中為節(jié)省帶寬,則通常需要發(fā)送低分辨率的圖像,而當(dāng)接收到圖像后,進(jìn)行顯示時又很希望看到高分辨率的圖像。盡管存在各種數(shù)據(jù)壓縮軟件,但數(shù)據(jù)的壓縮仍是有限的,而且數(shù)據(jù)的壓縮很可能已經(jīng)對圖片造成了一定的損壞,并不能確保圖片關(guān)鍵信息的保留。圖像縮放算法有很多,總體可分為基于時域和頻域兩大類算法,在時域圖像縮放方法中,主要有最近鄰域算法、雙線性插值算法和雙三次線性插值等。雖然它們在改善圖像縮放處理后的失真度上逐漸增強(qiáng),但其不斷下降的運(yùn)算速度也成為了不容忽視的問題(特別在視頻幀放大中,圖片的切換頻率限制了縮放算法的可執(zhí)行時間)。
這些算法中,有的通過PC機(jī)上的MATLAB、C等高級語言實現(xiàn),有的基于ARM等嵌入式處理器實現(xiàn),而有的則是基于FPGA這類芯片進(jìn)行硬件的實現(xiàn)。由于PC機(jī)和ARM屬于多任務(wù)的操作系統(tǒng),通過軟件編程實現(xiàn)縮放算法是其常用的圖像縮放處理手段。系統(tǒng)代碼解析和串行執(zhí)行,以及多任務(wù)的切換等因素會嚴(yán)重降低圖像縮放效率和實時數(shù)據(jù)顯示,頻繁的圖像縮放會給系統(tǒng)的正常運(yùn)行造成相當(dāng)大的負(fù)擔(dān)。因此,本文重點(diǎn)研究第三種圖像縮放實現(xiàn)方法,充分利用FPGA的并行運(yùn)算、高集成度、可編程和低成本特性,編程實現(xiàn)縮放算法的硬件結(jié)構(gòu)和IP生成,為進(jìn)一步實現(xiàn)專用圖像縮放處理芯片的開發(fā)和應(yīng)用提供幫助,以釋放處理器,提高圖像縮放質(zhì)量和效率。
在綜合考慮圖片處理效果、運(yùn)算速度和硬件資源需求后,本文選擇了由Hoon Yoo和Byong-Deok Choi共同提出的算法[1] ——基于奇偶分解的分段加權(quán)插值的圖像縮放算法(簡稱WLI算法)進(jìn)行硬件實現(xiàn)。
WLI算法借助于奇偶分解的理論,基于16個相關(guān)點(diǎn)實現(xiàn)了圖像中新點(diǎn)值的確立。本課題基于Xilinx的全可編程器件Zedboard,利用vivado hls高級綜合工具編寫可綜合的c程序,實現(xiàn)了WLI縮放算法的硬件IP設(shè)計,利用開發(fā)板實際縮放操作驗證了硬件縮放的高效率和低時間耗用特征,并通過圖像縮放的VGA對比顯示實驗對設(shè)計進(jìn)行了驗證。同時,設(shè)計實現(xiàn)的IP也可以為圖像處理的SoC復(fù)用,降低SoC的開發(fā)難度。
2. 圖像插值算法及MATLAB仿真
2.1. 傳統(tǒng)插值算法
本文分別選取了最簡單的、基于四個相關(guān)點(diǎn)的最近鄰插值算法;有二階線性運(yùn)算參與的雙線性插值算法;以及最復(fù)雜多浮點(diǎn)運(yùn)算的雙三次插值運(yùn)算作為對比算法,通過多種圖像質(zhì)量和效率評價方法,來評估WLI算法的優(yōu)劣性(具體算法實現(xiàn)參考 [2] 相關(guān)內(nèi)容)。
2.2. WLI算法
WLI算法應(yīng)用奇偶分解的思想,將一維縮放中相關(guān)的四個點(diǎn)進(jìn)行奇偶分解(奇部和偶部的相關(guān)點(diǎn)值分解后的關(guān)系示例見圖1)。從定義上分析,奇部向量在頻域圖像數(shù)據(jù)處理中是一個高通濾波結(jié)構(gòu),相比于偶部向量,它具有更強(qiáng)的噪聲。而噪聲和高頻信號對該部分的影響往往會掩蓋該部分對正確縮放的像素點(diǎn)取值的貢獻(xiàn),所以為盡量避免奇部向量中攜帶的噪聲等參量對縮放質(zhì)量造成損害,對它進(jìn)行簡單的線性化操作,得出公式(1)的處理方案。
因為偶部向量對稱的特性,其對縮放點(diǎn)的最終取值具有很大的影響度。直接的線性擬合雖然具有運(yùn)算簡單的特點(diǎn),但正如圖2所示,這會使得圖片點(diǎn)值的變化太快,影響視覺效果。為使該部分的取值具有緩慢變化的特征,基于平滑曲線的原型方程是一個很好的選擇,但曲線的復(fù)雜運(yùn)算帶來的資源耗用往往使算法縮放得不償失。因此,引文對此部分的曲線公式進(jìn)行分析討論,巧妙的引入w參數(shù)完成了運(yùn)算方法的降次和近似,如圖2所示,最終得出同樣是一次方程的擬合曲線圖像插值計算公式(2)。
最終由圖3表示出了WLI算法基本單元的信號流處理流程,通過串行移位得到四個相關(guān)點(diǎn),利用加/減操作和移位操作分別得到奇部向量和偶部向量。在s參量的調(diào)節(jié)下,取w = 0.5時,僅通過兩個乘法器便可實現(xiàn)最核心的操作,最后加和奇部和偶部,便得出最終的縮放結(jié)果。該結(jié)構(gòu)僅包括6次加法和6次移位操作,并伴有3次延時和兩個乘法操作,總體硬件資源耗用較少,延時也較低,具備硬件化條件。
2.3. 算法的MATLAB仿真及評估
運(yùn)用MATLAB語言,編寫程序?qū)崿F(xiàn)縮放算法。將常用的幾種算法 [3] 進(jìn)行了縮放耗時 [4] 、PSNR (Peak Signal to Noise Ratio)比較以及邊沿模糊度、脈沖噪聲兩種無參考圖像評測,并對結(jié)果進(jìn)行了比較分析。
PSNR [5] 也叫峰值信噪比,它是最普遍、最廣泛使用的評鑒畫質(zhì)的客觀測量方法,意指到達(dá)噪音比率的頂點(diǎn)信號,是衡量經(jīng)過處理后的影像品質(zhì)的客觀方法,用MATLAB實現(xiàn)的計算公式如(3)所示。
其中,MSE是原圖像與處理圖像之間均方誤差。
邊緣模糊度 [6] 是指階躍邊緣點(diǎn)占總邊緣點(diǎn)的個數(shù)的比例值,其值越小說明圖片邊緣更清晰,圖像質(zhì)量越好。一般邊緣點(diǎn)的檢測是利用robel算子得到的,而在圖像中根據(jù)相關(guān)函數(shù)也可以判斷并統(tǒng)計出階躍邊緣點(diǎn),由此便可計算出各個圖像的比例值,使用不同算法對多個圖片放大兩倍后計算出的邊緣模糊度結(jié)果如表1。
類似的,脈沖噪聲 [6] 是指圖像中噪聲像素點(diǎn)占總像素點(diǎn)的個數(shù)比例,圖像噪聲點(diǎn)是指根據(jù)局部圖片判斷出的本不該出現(xiàn)的點(diǎn)值,即該區(qū)域有一定的取值范圍,當(dāng)超過該范圍后即認(rèn)為該點(diǎn)是噪聲點(diǎn)。本文采用最小二乘法的預(yù)測模型進(jìn)行容限計算,同時判斷和統(tǒng)計總的噪聲點(diǎn)個數(shù),進(jìn)而計算出不同圖片的脈沖噪聲值結(jié)果變化如圖4所示。

圖1. 奇偶分解相關(guān)點(diǎn)示意圖

圖2. WLI算法偶部線性擬合示意圖

圖3. WLI算法基本結(jié)構(gòu)數(shù)據(jù)流處理結(jié)構(gòu)

圖4. 多種算法放大2倍的圖片脈沖噪聲對比

表1. 多種算法放大2倍的圖片邊緣模糊度
根據(jù)MATLAB的相關(guān)仿真數(shù)據(jù),得出WLI算法不僅具有高PSNR值,低耗時等特征,從表1和圖4中的對比結(jié)果亦見,其邊緣模糊度和脈沖噪聲也相對較低,充分體現(xiàn)了該算法的優(yōu)異性。
3. 硬件系統(tǒng)平臺的搭建
針對Xilinx可編程器件開發(fā)板Zedboard [7] ,進(jìn)行算法的硬件實現(xiàn)和IP生成,同時對軟硬協(xié)同驗證系統(tǒng)平臺的設(shè)計和功能進(jìn)行軟件和硬件劃分。如圖5所示,上位機(jī)中計算機(jī)(PC)負(fù)責(zé)把新的圖片數(shù)據(jù)傳送到開發(fā)板,或者從開發(fā)板接收縮放后的圖片數(shù)據(jù),并打印各種處理信息和狀態(tài)值。顯示器顯示不同算法的縮放圖片直觀效果。而下位機(jī)(Zedboard)則主要完成控制信息編碼輸入,軟件或硬件圖像縮放算法實現(xiàn),以及內(nèi)部模塊間的圖片數(shù)據(jù)傳輸?shù)裙δ?。其中,輸入檢測和控制信息生成、執(zhí)行,以及對比軟件縮放算法的實現(xiàn)等部分是分配給ARM處理器通過軟件完成的。
3.1. ZEDBOARD的控制輸入IP
該IP設(shè)計主要完成對5個按鍵以及2個開關(guān)狀態(tài)的檢測及編碼,使產(chǎn)生8位編碼數(shù)據(jù),用以傳送給XPS構(gòu)建的子系統(tǒng)的8位GPIO,以axi_lite相關(guān)協(xié)議映射編碼數(shù)據(jù),從而將編碼輸入傳送到了PS (Processing System: ARM處理器)部分,用以軟件編程檢測和處理。
該設(shè)計的實現(xiàn)原理如圖6所示,通過計數(shù)模塊Count實現(xiàn)按鍵狀態(tài)的去抖檢測,兩個按鍵用于縮放算法選擇,并用三個Led的二進(jìn)制實時顯示,另兩個按鍵用于選擇縮放倍數(shù),一個按鍵用于錄入狀態(tài)與完成錄入狀態(tài)間的切換;兩個開關(guān)則分別控制放大/縮小、顯示使能。
3.2. WLI算法IP
3.2.1. Axi4接口
Axi4 [8] 是由Xilinx和ARM合作提出的便于全可編程器件內(nèi)部ARM和FPGA之間數(shù)據(jù)的高速通信的總線標(biāo)準(zhǔn)。Zedboard內(nèi)部使用Axi4,可細(xì)分為Axi_lite、Axi4、Axi_stream三大類,包含地址、數(shù)據(jù)和反饋通道。能實現(xiàn)ARM和FPGA內(nèi)部的高速并行數(shù)據(jù)通信,并支持DMA (direct memory access)通信。
3.2.2. 符合Axi4接口的WLI算法IP
Vivado HLS是Xilinx針對其全可編程器件而推出的高級綜合組件,該軟件可以實現(xiàn)對C語言編寫的程序的直接硬件化,并能很好的綜合出符合Axi標(biāo)準(zhǔn)的IP [9] - [12] 。本文的設(shè)計采用這種設(shè)計方法,借助OpenCV的MAT的相關(guān)內(nèi)容、要求,編寫可綜合算法程序,圖7是WLI算法的實現(xiàn)流程。
映射策略確定新圖中的一行在原圖的行位置,通過每次縮放一行新圖數(shù)據(jù)的基本策略,用四個數(shù)組(Bram存儲)緩存與映射行相關(guān)的四行原圖點(diǎn)值,從而實現(xiàn)算法的二維縮放。WLI子模塊實現(xiàn)對一維4個相關(guān)點(diǎn)的算法縮放,通過先行后列的策略實現(xiàn)個相關(guān)點(diǎn)的圖像縮放目的。

圖5. 縮放算法硬件系統(tǒng)架構(gòu)

圖6. 控制輸入IP結(jié)構(gòu)框圖

圖7. WLI算法流程
3.3. 硬件系統(tǒng)搭建
HLS綜合出算法的硬件IP后,通過Planahead環(huán)境完成整個硬件系統(tǒng)的搭建。圖8為系統(tǒng)結(jié)構(gòu)示意圖,該系統(tǒng)包括PS子系統(tǒng)、內(nèi)存間以HP通道(DDR內(nèi)存和FPGA間的高寬帶、高速數(shù)據(jù)通道)直接進(jìn)行數(shù)據(jù)通信的VDMA、GPIO等IP,以及自主設(shè)計的WLI算法IP和VGA顯示IP [13] 。
4. 軟硬協(xié)同驗證實驗
4.1. 軟件原理
在硬件系統(tǒng)搭建完成以后,借助于Xilinx的SDK集成環(huán)境進(jìn)行軟件設(shè)計。圖9是整個軟件設(shè)計運(yùn)行的流程圖,主要分為初始化、原始圖片選擇接收存儲、GPIO初始化、縮放倍數(shù)檢測統(tǒng)計、按鍵狀態(tài)檢測判斷和相應(yīng)算法處理及對比顯示等。
軟件設(shè)計中,通過接收PC的選擇信號,選擇使用預(yù)定義的圖片,或接收從PC傳來的新圖片。然后進(jìn)入循環(huán)檢測和縮放處理過程,便于演示。同時,通過顯示使能控制端,可以再次更新PC的顯示數(shù)據(jù)。而縮放顯示模式不僅決定縮放的算法選擇(軟件或硬件),還決定顯示模式(單一還是對比顯示)。
當(dāng)檢測到GPIO為倍數(shù)錄入狀態(tài)時,應(yīng)當(dāng)進(jìn)入倍數(shù)的檢測和相應(yīng)操作模式,由此可實現(xiàn)0.1精度的任意倍數(shù)圖像縮放效果,并能夠?qū)诓煌s放算法得到的圖片進(jìn)行對比顯示。
4.2. 軟硬件協(xié)同驗證
通過SDK將編譯好的bootloader程序、FPGA配置bit文件和裸機(jī)程序封裝成boot.bin文件,以SD卡實現(xiàn)Zedboard的脫機(jī)演示系統(tǒng)。其驗證實驗的系統(tǒng)如圖10所示,右圖是雙三次插值算法軟件縮放結(jié)果,而左圖則是WLI算法硬件縮放圖。
各縮放算法在ARM裸機(jī)上縮放圖片所耗用時間 [14] 的對比結(jié)果如圖11所示。其中最近鄰(Near)、雙線性(Biline)、雙三次(Bcubic)和CCI等為軟件縮放算法,WLI算法為硬件實現(xiàn)算法。
盡管軟件縮放算法在約667 MHz的Cortex A9處理器上運(yùn)行,而通過FPGA硬件化的WLI算法的運(yùn)行時鐘僅為100 MHz,但圖11的結(jié)果表明,其縮放耗時仍同最近鄰算法相當(dāng)(Near幾乎被WLI覆蓋了),可見在相同時鐘條件下,其計算效率將會大幅提高,體現(xiàn)硬件實現(xiàn)的并行特征。

圖8. 硬件系統(tǒng)結(jié)構(gòu)

圖9. 軟件處理流程圖
圖10. 圖像縮放對比顯示演示系統(tǒng)

圖11. 各縮放算法不同倍數(shù)耗時對比
5. 結(jié)論
本文主要研究了時域圖像縮放算法中比較常用的幾種縮放算法,并基于一種稱為WLI的圖像縮放算法,在Xilinx的全可編程器件開發(fā)板Zedboard上實現(xiàn)了算法的硬件化,并構(gòu)建了軟硬協(xié)同驗證系統(tǒng),實現(xiàn)了脫機(jī)演示。
本文設(shè)計的IP實現(xiàn)了硬件圖像縮放,并與基于軟件實現(xiàn)的圖像縮放具有相同效果,而計算效率提高了至少一個數(shù)量級,充分體現(xiàn)了硬件實現(xiàn)圖像縮放的優(yōu)異性和可行性。
參考文獻(xiàn) (References)
1. Choi, B.-D. and Yoo, H. (2009) Design of piecewise weighted linear interpolation based on even-odd decomposition and its application to image resizing. IEEE Transactions on Consumer Electronics, 55, 2280-2286.
2. 劉婧 (2009) 圖像縮放算法的研究與FPGA設(shè)計. 碩士論文, 上海大學(xué), 上海.
3. 李秀英, 袁紅 (2012) 幾種圖像縮放算法的研究. 現(xiàn)代電子技術(shù), 35, 48-51.
4. Wang, J. (2011) MATLAB三種程序耗時算法.
5. 心海 (2013) PSNR定義與計算.
6. Li, X. (2002) Blind image quality assessment. IEEE ICIP, 1, 449-452.
7. Xilinx (2014) Zynq-7000 all programmable SoC. Xilinx數(shù)據(jù)手冊.
8. Xilinx (2011) Xilinx, AXI reference guide UG761 (v13.1) March 7. Xilinx數(shù)據(jù)手冊.
9. 馬建國, 孟憲元 (2011) FPGA現(xiàn)代數(shù)字系統(tǒng)設(shè)計. 清華大學(xué)出版社, 北京.
10. 仆居 (2013) AXI-Stream接口開發(fā)詳細(xì)流程.
11. 何賓 (2011) 基于AX14的可編程SOC系統(tǒng)設(shè)計. 清華大學(xué)出版社, 北京.
12. 何賓 (2011) Xilinx all programmable Zynq-7000 SOC設(shè)計指南. 清華大學(xué)出版社, 北京.
13. 開源硬件社區(qū) (2009) VGA驅(qū)動及實現(xiàn).
14. Cuter (2013) 如何在SDK中計算某段程序的執(zhí)行時間.
電子發(fā)燒友App


















評論