吳煒煒,岑 峰
(同濟大學 電子與信息工程學院,上海 201804)
信息化時代的到來,伴隨著現代電子技術的高速發(fā)展,人們在日常生活和工作中對于視頻/圖像的實時圖像處理能力提出了更高的需求,這就使得如何能夠去除有限空間內信息之間的重復,從而提升資源的利用率變得尤為重要。圖像和視頻是多媒體系統(tǒng)的重要組成部分,隨著高清電視在日常生活中的日益普及,使得如何利用當前有限的存儲空間和網絡帶寬來承載下一代高清視頻變得極其重要,這也就要求有新一代具有更高壓縮效率的視頻編解碼標準出現。離散余弦變換(DCT)模塊是其中重要的組成部分。
DCT是數字圖像處理和壓縮編碼領域最常用的變換之一,是當前最流行的靜態(tài)圖像壓縮標準JPEG、動態(tài)圖像壓縮標準MPEG、H.264以及HEVC(制定中)標準的核心部分。DCT因其具有對變換信號的緊縮有效性、獨立于信號本身的變換基以及變換后的系數游程編碼獨具優(yōu)勢,通過DCT變換可以有效去除幀內和幀間的冗余信息。在一幅圖像中,像素之間的灰度或色差信號變換緩慢,導致在子塊中像素之間的相關性很強。DCT是一種正交變換,實現從時域到頻域的轉換,從而去除掉時域中數據之間的相關性,使變換后系數的能量相對集中,有利于量化后對變換系數采用游程編碼和Huffman編碼,從而實現圖像的壓縮處理。伴隨著DCT變換應用的普及,為進一步減少圖像失真的同時提高變換速度,整型DCT變換應運而生。整型DCT變換通過計算DCT浮點變換的整數可逆矩陣分解,從而得到可以整數實現的可逆矩陣變換,再利用得到的分解矩陣依次對圖像樣本宏塊進行變換,最后將變換得到的系數用多種高效的編碼方法進行編碼。
本文通過研究8×8矩陣 DCT變換的實現,對 4×4整數DCT算法進行對比研究,對設計進行參數化RTL級描述并驗證,為實現下一代視頻編解碼標準(HEVC)的DCT模塊不同大小宏塊(16×16和 32×32)的通用性做好前期準備。
二維N點離散余弦變換的基本公式為:
在硬件實現過程中,通常將二維DCT變換通過兩次一維DCT變換來實現,一維N點離散余弦變換的基本公式為:
目前有關DCT算法的硬件實現主要是基于分布式[1]算法(DA)和蝶形算法的硬件實現。DA算法的原理是將固定的比例系數和數結合到查找表中,利用多重查找表執(zhí)行計算,在硬件實現上采用流水線設計技術,將二維DCT的實現轉化為兩個一維DCT實現,采用查表、移位和加法邏輯來實現乘法運算,很大程度上提高了運算速度。本文正是利用了DCT中預先系數固定的特點[2],將相應的輸入數據的乘法計算好并存于ROM中,利用ROM和累加器代替乘法器。乘法器的引入將導致面積的增加,不利于布局布線,且乘法所用時間大約是為進行乘法而準備所用時間的兩倍[3]。因此,利用ROM和累加器代替乘法器的設計使其結構緊湊、規(guī)則、精度高且易于布局和布線。
對于二維8×8浮點型 DCT變換[4],輸入的變換矩陣為F,則變換后的矩陣W=NfFNfT,其中N為系數矩陣:
對于二維4×4矩陣DCT變換,輸入的變換矩陣為X,則變換后的矩陣Y=M×MT,其中M為系數矩陣:
圖1和圖 2分別為 4×4矩陣 DCT和 8×8矩陣 DCT的蝶形算法結構圖。
由圖1和圖2可知,使輸入的數據不經過 8×8算法的第1級和加法的運算而直接進入第2級結構進行移位運算,可以通過多次調用更小級別模塊的方式來實現模塊之間的復用。而分別將不同模塊的離散余弦變換系數存放于不同的ROM中,適用于擁有大量ROM結構的FPGA中,這對于在制定中的新一代視頻編解碼標準HEVC中不同大小輸入矩陣的通用性有很強的實用價值,可以通過多次調用更小級別模塊的方式減小硬件模塊的面積并增強了復用性和通用性。
本文采用層次化、模塊化的思想,將設計劃分為多個功能模塊,并對硬件設計采用了流水線技術,采用Verilog HDL硬件描述語言,并采用Cadence公司的NCLaunch和Xilinx ISE對設計進行仿真驗證和綜合。
當輸入相同數據時,通過設計的8×8矩陣 DCT變換和調用4×4矩陣[6]得到的仿真結果如圖 3和圖4所示。對比圖3和圖4可知,通過多次調用矩陣DCT模塊可以實現矩陣的DCT變換,且結果相同。
傳統(tǒng)實現與模塊調用方式所耗資源對比如圖5所示。
針對以上提出的設計,用Xilinx公司的ISE 10.1在VirtexⅤ系列FPGA上進行綜合、布局布線后可以看出,在實現通用性的同時能夠有效地減少芯片的面積和占用的資源,并在芯片的運行速度上有所提升。
本文采用的層次化、模塊化、將設計劃分為多個功能模塊的思想,便于在硬件實現上通過模塊的調用達到減小面積的作用。鑒于DCT在圖像壓縮中的廣泛應用,將DCT的硬件實現應用于新標準的不同大小輸入矩陣數據具有廣泛的應用前景。由于DCT算法計算量宏大,怎樣在硬件實現過程中減少乘法器[7]的數目(理論上的最小值是11個乘法器),對于減少硬件面積成本和降低復雜程度也有很大的研究價值,隨之帶來的芯片面積減少、低電壓、低復雜度和低延時等優(yōu)點都具有較強的實際研究價值。
[1]EL-BANNA H,EL-FATTAH A,FAKHR W.An efficient implementation of the 1D DCT using FPGA technology[C].Engineering of Computer Bosed Sustems: Proceedings of 11th IEEE International Conference and Workshop, 2004:356-360.
[2]李躍新,張吉烈.二維DCT并行流水線算法及FPGA的實現[J].貴州大學學報(自然科學版),2009(4):82-83.
[3]郭寶增,牛力,劉志明.基于 Loeffler算法的 2-D DCT IP軟核設計[J].微電子學與計算機,2011(2):136-139.
[4]JiangChan, YuNingmei, GuMeihua.A novelVLSI architectureof 8×8 integerDCT based on H.264/AVC FRext[C].Proceedings of 2010 Third International Symposium on Knowledge Acquisition and Modeling,2010.
[5]郁光珍,鄭博,李松亭,等.H.264/AVC整數 DCT變換與量化的 FPGA 實現[J].電視技術,2011(9):20-22.
[6]陳寶遠,吳孟澤,張清喜,等.H.264標準中整數 DCT圖像壓縮算法的優(yōu)化及實現 [J].哈爾濱理工大學學報,2009(5):27-30.
[7]THOUDAM V P S, BHAUMIK B, CHATTERJEE S.Ultra low power implementation of 2-D DCT for image/video compression[C].2010 International Conference on Computer Applications and Industrial Electronics (ICCAIE), 2010:532-536.