摘 要:對支持宏塊級幀場自適應的H.264去塊效應濾波過程進行深入分析,,利用相鄰4×4 像素塊間數(shù)據(jù)的依賴關系合理組織數(shù)據(jù)存儲順序,,提出了一種針對H.264/AVC標準的高性能、低復雜度的去塊效應濾波系統(tǒng)的VLSI結構,。
關鍵詞:H.264/AVC解碼器,;宏塊級幀場自適應;去塊濾波
H.264/AVC是由 ITU-T視頻編碼專家組和ISO/ IEC運動圖像專家組聯(lián)合制定的面向未來IP和無線環(huán)境的最新視頻編碼標準[1],。H.264/AVC采用基于塊的DCT變換,、量化、運動補償,,這些技術都會不可避免地在塊邊界引入塊效應,,嚴重影響圖像的主觀質量,因此,,H.264/AVC標準采用去塊效應環(huán)路濾波(簡稱環(huán)路濾波)來去除塊效應,,以提高圖像的主觀質量和編碼效率。
但在大幅度改善視頻圖像質量和壓縮效率的同時,,去塊效應濾波系統(tǒng)也引入了極高的計算復雜度,。其運算量大約占解碼器計算總量的1/3[2],使之成為解碼器設計中的瓶頸之一,。去塊效應濾波系統(tǒng)對圖像中每一個4×4塊的內容都要進行橫向和縱向2次濾波,,涉及到大量的存儲器讀寫,因此,,去塊效應濾波系統(tǒng)的VLSI 結構設計和中間數(shù)據(jù)緩沖器的選擇成了硬件結構設計上的重大難題,。
參考文獻[2]是基于幀上的濾波結構,參考文獻[3-5]中列舉了幾種已經(jīng)提出的硬件加速器結構,,這2種結構都是以宏塊濾波為基礎的,。很明顯, 基于幀上的濾波結構需要一幀的緩沖器和更長的系統(tǒng)延時。為了克服這個困難,,參考文獻[5]引入了一個雙口SRAM來同時對濾波數(shù)據(jù)進行讀和寫,,但是內部結構比較復雜而且處理延時仍然較大。
從現(xiàn)有的文獻看,,討論H.264去塊效應算法和硬件實現(xiàn)的文章不少,,但對支持宏塊級幀場自適應去塊效應的文獻幾乎還是空白。本文分析并優(yōu)化了支持宏塊級幀場自適應的去塊效應的存儲器結構,,并給出了硬件實現(xiàn),。
1 算法
1.1 去塊效應濾波
去塊濾波在整個視頻解碼過程中位于重建之后,對每個解碼完成的宏塊按光柵掃描順序進行濾波,,圖像邊界不用濾波,。濾波是基于宏塊的,由于H.264中的整數(shù)變換是基于4×4點的,,那么塊濾波系統(tǒng)在濾波的時候也是以4×4點的塊為單元處理,。先對垂直邊界進行水平濾波,再對水平邊界進行垂直濾波,。對宏塊的2個方向濾波都完成后才能進行后面宏塊的濾波,。對圖像中宏塊的濾波按raster掃描方式進行。對幀場自適應編碼幀,,它們在垂直方向上相鄰的宏塊對放在一起,,則濾波順序按宏塊對進行,即在幀中對宏塊對按raster掃描方式進行,,對每個宏塊對先進行頂部宏塊的濾波[2],。圖1虛線為需要濾波的邊界。對每個亮度宏塊,,先濾波宏塊最左邊的邊界(圖1中序號1),,然后依次從左到右宏塊內3個垂直邊界(圖1中的序號2~4)。類似地,,對水平邊界先濾波宏塊頂部的邊界(圖1中的序號5),,然后依次從上到下宏塊內3個水平邊界(圖1中的序號6~8)。色度濾波次序類似。
H.264/AVC的自適應環(huán)路濾波包括如下幾個部分:(1)邊界濾波像素的輸入輸出,;(2)邊界濾波強度的計算,,算法如圖2所示,必須先分清圖像的真實邊界和虛假邊界,,對真實邊界要加以保持,,而對虛假邊界進行平滑濾波;(3)計算邊界閾值 α,、β,、c0。最后對濾波強度不為0 的虛假邊界進行平滑濾波,。整個處理過程如圖3所示,。
1.2 宏塊級幀場自適應
視頻幀可以分為2種類型:連續(xù)幀或隔行視頻幀[6]。通常為了減少大面積的閃爍現(xiàn)象,,把一幀分為2個隔行的場,。這時場內相鄰行的時間相關性較強,幀內相鄰行的空間相關性較強,。在有物體移動或攝像機鏡頭移動的隔行掃描幀中,,與逐行掃描幀相比,臨近的兩行的統(tǒng)計依賴性下降,。在這種情況下,,也許對每個場單獨進行壓縮的效率更高。為此H.264的設計中允許編碼器在對一幀進行編碼時做如下決定:
(1)2個場結合在一起,,對其按一個獨立的幀進行編碼(幀模式),。
(2)2個場結合,對其按單獨的場獨立進行編碼(場模式),。
(3)將2個場結合在一起,,并將其作為一個單獨的幀壓縮,但編碼時需要首先將垂直相鄰的2個宏塊分成2場或2幀中的一對宏塊,。
對一個序列中的每一幀都可以自適應地選擇這3種選項中的一種,。H.264采用宏塊自適應幀場編碼(MB-AFF)模式中,幀場編碼的選擇在宏塊級中指定,。且當前片通常由16亮度像素寬和32亮度像素高的單元組成,,并以宏塊對的形式編碼,如圖4所示,。編碼器可按2個幀宏塊或者2個場宏塊來編碼每個宏塊對[7],。
由于宏塊級幀場自適應是按照垂直宏塊對的形式進行編碼,因此其解碼順序與普通幀/場中宏塊的解碼順序有很大的不同,,如圖5,、圖6所示。在非幀場自適應模式下,解碼器按照水平掃描的順序依次解碼宏塊,;而在宏塊級幀場自適應時,,解碼順序演變?yōu)殇忼X形順序。
當采用宏塊級自適應編碼時,,相鄰宏塊位置的獲取就比較復雜了,,在以宏塊對為單位對圖像進行解碼時,除了需要判斷當前宏塊是上宏塊還是下宏塊,,還要判斷當前宏塊對和參考宏塊對的幀場屬性,因為對于計算所需的像素位置是不同的,。宏塊級幀場自適應取值方法,,具體可參見H.264協(xié)議[1]。相鄰宏塊對間的關系如圖7所示,。
2 去塊效應濾波系統(tǒng)結構
2.1 濾波器結構
針對影響去塊效應濾波系統(tǒng)速度的因素,,提出了一種高效的濾波結構,如圖8所示,。該結構利用了數(shù)據(jù)重用機制和并行計算來確保達到速度要求,。整個結構由中央濾波處理單元、閾值查詢單元,、數(shù)據(jù)輸入輸出單元和同步控制單元組成,。
中央濾波處理單元是去塊效應濾波系統(tǒng)的核心部分??紤]到SRAM存取數(shù)據(jù)的時間耗費,,不能采用參考軟件中的逐個濾波集合依次處理的方法,而一定要采用并行處理的方式進行,。但出于芯片面積和功耗的考慮,,本設計中采用以一個塊邊界(Block Edge)為單元的濾波處理方案。
閾值查詢單元負責接收上一模塊傳遞進來的indexA,、indexB,,然后實現(xiàn)查表功能,輸出閾值α,、β,、c0以及濾波強度Strength。
數(shù)據(jù)輸入輸出單元負責給中央濾波單元傳送數(shù)據(jù)和存儲數(shù)據(jù),。在新的視頻標準中,,進行水平濾波(垂直邊界濾波)和垂直濾波(水平邊界濾波)所用的數(shù)據(jù)格式有所不同,水平濾波取2個4×4塊的行數(shù)據(jù)進行濾波,,而垂直濾波是對2個塊的列數(shù)據(jù)進行濾波,。由于存儲數(shù)據(jù)時,都是一行4個數(shù)據(jù)進行存儲的,因此在進行水平濾波過程時,,每個塊的數(shù)據(jù)都要經(jīng)過T(矩陣轉換單元)進行一次矩陣的行列轉換,,垂直濾波準備數(shù)據(jù)。同時由于MBAFF模式下參考像素的獲取有了更大的靈活性,,因此片內數(shù)據(jù)的讀寫控制需要更加周密的設計,。
同步控制單元用一個有限狀態(tài)機來實現(xiàn),控制整個去塊效應濾波的數(shù)據(jù)處理過程包括接收啟動信號,、宏塊參數(shù)信息的讀取,、閾值查詢、濾波像素值的輸入,、濾波操作和濾波后數(shù)據(jù)處理等,;控制中央濾波單元的流水線操作,完成宏塊圖像數(shù)據(jù)去塊效應濾波功能,。
2.2 數(shù)據(jù)流控制
去塊效應濾波在大幅度改善視頻圖像質量和壓縮效率的同時,,增加了對外部存儲器的訪問頻率。而頻繁的存儲器存取會增大整個芯片的功耗,,所以設計出合理的存儲器訪問策略對本設計尤為重要,。
由于濾波過程中不僅需要當前宏塊重建之后的像素數(shù)據(jù),還需要相鄰宏塊的已經(jīng)濾波完的像素,。對于1 080像素這樣解析度的圖像來說,,在MBAFF模式下,需要存儲3個Block行的數(shù)據(jù)(1 920×4×12×3=270 KB),,這么多的數(shù)據(jù)用片內SRAM來存儲肯定是不現(xiàn)實的,,而DRAM具有較低的成本和不錯的訪存速度,它被廣泛用來存儲整個圖像幀的數(shù)據(jù),。同時在片內開辟一塊很小的SRAM(LineCache)用來和DRAM交互,,增加數(shù)據(jù)的重復使用率和訪存效率,在解碼完若干個宏塊后進行更新,。這樣可以提高系統(tǒng)的整體性能,。
作為溝通寄存器和DRAM數(shù)據(jù)流向的中間層的SRAM在設計中顯得尤為重要。片內存儲器分為單口SRAM和Register Files兩部分,。本設計采用6塊片內SRAM,,如圖8所示。下面以亮度信號為例,,具體介紹SRAM的用途,。MbLuma用來存放運動補償單元處理后的宏塊數(shù)據(jù),由去塊效應單元處理完畢后的數(shù)據(jù)也將放在這里,,然后寫入到SDRAM中,。當宏塊的第一條邊界兩邊像素點濾波完成后,,右邊的4個4×4塊被存入寄存器中,這部分數(shù)據(jù)在對下一邊界濾波時可被重用,,這樣就減少了存儲器讀取的頻率,,從而降低處理的延遲。重復上述過程,,直到最后一條垂直邊界濾波完成之后,,將垂直邊界濾波后的數(shù)據(jù)存入BufLuma中。BufLuma作為片內的存儲器用來緩沖進行完縱向濾波后的數(shù)據(jù),。之前首先進行了一次變換(將橫向排列的像素變?yōu)榭v向),,以滿足接下來將要進行的橫向濾波的要求。在進行垂直邊界濾波時,,數(shù)據(jù)主要由MbLuma讀出,,處理后主要寫入BufLuma。接下來再進行水平邊界濾波時,,數(shù)據(jù)主要由BufLuma讀出,處理后主要寫入MbLuma,,然后寫入SDRAM,。CacheLuma中存放有去塊效應需要暫存的參考像素數(shù)據(jù),主要包括當前宏塊左側和上邊的若干個Block像素,。
MBAFF下宏塊邊界參考像素數(shù)據(jù)存取要復雜很多,。MBAFF下都是按照宏塊對的順序濾波的,宏塊對內部的幀場屬性是一致的,,但是不同宏塊對之間可能有不同的幀場屬性,,對于宏塊內部邊界的濾波與非MBAFF時邊界濾汲沒有區(qū)別,但是對于宏塊邊界的濾波,,需要根據(jù)當前宏塊在宏塊對中的位置,,以及當前宏塊和參考宏塊的幀場屬性來綜合判斷,確定濾波所需的濾波強度以及濾波參考像素的取值,。對于水平邊界濾波也就形成了8種可能的組合,,如表1所示。
對于ID.1,、3,、6、8的組合,,由于當前宏塊和參考宏塊幀場屬性相同,,取值和非MBAFF模式下的一樣;而對于當前宏塊和參考宏塊具有不同的幀場屬性,,情況就要復雜很多,。為了更清楚地說明對宏塊級幀場自適應濾波,,下面舉例分析。當前宏塊為宏塊對中的頂宏塊,,是場宏塊,,現(xiàn)在做水平邊界的濾波,它需要參考其上面宏塊對的信息,,其參考宏塊為幀宏塊對,,那么它需要的參考Block就是圖9左邊中淺灰Block;假設當前宏塊為宏塊對中的頂宏塊,,是幀宏塊,,現(xiàn)在做水平邊界的濾波,它需要參考其上面宏塊對的信息,,其參考宏塊為場宏塊對,,那么它需要的參考Block為圖9中右邊淺灰Block。
更多的宏塊級幀場自適應在計算預測值時選取哪些值,,具體可參見H. 264協(xié)議[1],。
本文對H.264/AVC 標準中MBAFF模式下的去塊效應濾波過程進行了分析,利用數(shù)據(jù)重用機制和并行計算來加速濾波的過程,,提高了整個濾波系統(tǒng)的速度,,對 H.264/AVC的編解碼有較好的實現(xiàn)。
參考文獻
[1] ITU-T. Advanced video coding for generic audio visual services.ITU-T Recommendation H.264 | ISO/IEC 14496-10 (MPEG-4 AVC), 2005.
[2] SIMA M, ZHOU Yuan Hua, ZHANG Wei. An efficient architecture for adaptive deblocking filter of H.264/AVC video coding. IEEE Trans. Consumer Electronics, 2004,50:292-296.
[3] HUANG Y W,, CHEN T W,, HSIEH B Y, et al. Architecture design for deblocking filter in H.264/JVT/AVC. IEEE International Conference on Multimedia and Expo, 2003.
[4] SHENG B,, GAO W,, WU D.An implemented architecture of deblocking filter for H.264/AVC. IEEE International Conference on Image Processing, 2004,1:665-668.
[5] CHENG Chao Chung, CHANG Tian Sheuan. An hardware efficient deblocking filter for H.264/AVC. Proc. of International Conference on Consumer Electronics (ICCE) 2005.[s.l.]:IEEE Press, 2005.
[6] 馮曉茹,陳晨,,楊海池,,等.支持宏塊級幀場自適應的H.264解碼器幀內模塊FPGA實現(xiàn)[J]. 空間電子技術,2008(4).
[7] 畢厚杰.新一代視頻壓縮編碼標準H.264/AVC[M].北京:人民郵電出版社,,2005.
[8] KIM J, NA S, KYUNG C. A low-power deblocking filter architecture for H.264 advanced video coding. Very Large Scale Integration, 2007. VLSI-SoC 2007. IFIP International Conference on Volume, Issue, 15-17 Oct. 2007:190-193 Digital Object Identifier 10.1109/VLSISOC.2007.4402496
[9] LIST P, JOCH A, LAINEMA J, et al. Adaptive deblocking filter[J]. IEEE Trans. on Circuit Syst.Video Technol, 2003, 13(7).
[10] JVT H.264/AVC Reference Software JM 9.3.