《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計應(yīng)用 > 宏塊級幀場自適應(yīng)的去塊效應(yīng)濾波模塊分析與優(yōu)化
宏塊級幀場自適應(yīng)的去塊效應(yīng)濾波模塊分析與優(yōu)化
王 軍,,周開倫,,林 濤
同濟(jì)大學(xué) 超大規(guī)模集成電路研究所,,上海 200331
摘要: 對支持宏塊級幀場自適應(yīng)的H.264去塊效應(yīng)濾波過程進(jìn)行深入分析,,利用相鄰4×4 像素塊間數(shù)據(jù)的依賴關(guān)系合理組織數(shù)據(jù)存儲順序,,提出了一種針對H.264/AVC標(biāo)準(zhǔn)的高性能,、低復(fù)雜度的去塊效應(yīng)濾波系統(tǒng)的VLSI結(jié)構(gòu),。
Abstract:
Key words :

摘 要:對支持宏塊級幀場自適應(yīng)的H.264去塊效應(yīng)濾波過程進(jìn)行深入分析,,利用相鄰4×4 像素塊間數(shù)據(jù)的依賴關(guān)系合理組織數(shù)據(jù)存儲順序,,提出了一種針對H.264/AVC標(biāo)準(zhǔn)的高性能、低復(fù)雜度的去塊效應(yīng)濾波系統(tǒng)的VLSI結(jié)構(gòu),。
 關(guān)鍵詞:H.264/AVC解碼器,;宏塊級幀場自適應(yīng);去塊濾波

  H.264/AVC是由 ITU-T視頻編碼專家組和ISO/ IEC運(yùn)動圖像專家組聯(lián)合制定的面向未來IP和無線環(huán)境的最新視頻編碼標(biāo)準(zhǔn)[1],。H.264/AVC采用基于塊的DCT變換,、量化、運(yùn)動補(bǔ)償,,這些技術(shù)都會不可避免地在塊邊界引入塊效應(yīng),,嚴(yán)重影響圖像的主觀質(zhì)量,因此,,H.264/AVC標(biāo)準(zhǔn)采用去塊效應(yīng)環(huán)路濾波(簡稱環(huán)路濾波)來去除塊效應(yīng),,以提高圖像的主觀質(zhì)量和編碼效率。
  但在大幅度改善視頻圖像質(zhì)量和壓縮效率的同時,,去塊效應(yīng)濾波系統(tǒng)也引入了極高的計算復(fù)雜度,。其運(yùn)算量大約占解碼器計算總量的1/3[2],使之成為解碼器設(shè)計中的瓶頸之一,。去塊效應(yīng)濾波系統(tǒng)對圖像中每一個4×4塊的內(nèi)容都要進(jìn)行橫向和縱向2次濾波,,涉及到大量的存儲器讀寫,因此,,去塊效應(yīng)濾波系統(tǒng)的VLSI 結(jié)構(gòu)設(shè)計和中間數(shù)據(jù)緩沖器的選擇成了硬件結(jié)構(gòu)設(shè)計上的重大難題,。
       參考文獻(xiàn)[2]是基于幀上的濾波結(jié)構(gòu),參考文獻(xiàn)[3-5]中列舉了幾種已經(jīng)提出的硬件加速器結(jié)構(gòu),,這2種結(jié)構(gòu)都是以宏塊濾波為基礎(chǔ)的,。很明顯, 基于幀上的濾波結(jié)構(gòu)需要一幀的緩沖器和更長的系統(tǒng)延時。為了克服這個困難,,參考文獻(xiàn)[5]引入了一個雙口SRAM來同時對濾波數(shù)據(jù)進(jìn)行讀和寫,,但是內(nèi)部結(jié)構(gòu)比較復(fù)雜而且處理延時仍然較大。
  從現(xiàn)有的文獻(xiàn)看,,討論H.264去塊效應(yīng)算法和硬件實(shí)現(xiàn)的文章不少,,但對支持宏塊級幀場自適應(yīng)去塊效應(yīng)的文獻(xiàn)幾乎還是空白,。本文分析并優(yōu)化了支持宏塊級幀場自適應(yīng)的去塊效應(yīng)的存儲器結(jié)構(gòu),并給出了硬件實(shí)現(xiàn),。
1 算法
1.1 去塊效應(yīng)濾波
  去塊濾波在整個視頻解碼過程中位于重建之后,,對每個解碼完成的宏塊按光柵掃描順序進(jìn)行濾波,圖像邊界不用濾波,。濾波是基于宏塊的,,由于H.264中的整數(shù)變換是基于4×4點(diǎn)的,那么塊濾波系統(tǒng)在濾波的時候也是以4×4點(diǎn)的塊為單元處理,。先對垂直邊界進(jìn)行水平濾波,,再對水平邊界進(jìn)行垂直濾波。對宏塊的2個方向濾波都完成后才能進(jìn)行后面宏塊的濾波,。對圖像中宏塊的濾波按raster掃描方式進(jìn)行,。對幀場自適應(yīng)編碼幀,它們在垂直方向上相鄰的宏塊對放在一起,,則濾波順序按宏塊對進(jìn)行,,即在幀中對宏塊對按raster掃描方式進(jìn)行,對每個宏塊對先進(jìn)行頂部宏塊的濾波[2],。圖1虛線為需要濾波的邊界,。對每個亮度宏塊,先濾波宏塊最左邊的邊界(圖1中序號1),,然后依次從左到右宏塊內(nèi)3個垂直邊界(圖1中的序號2~4),。類似地,對水平邊界先濾波宏塊頂部的邊界(圖1中的序號5),,然后依次從上到下宏塊內(nèi)3個水平邊界(圖1中的序號6~8),。色度濾波次序類似。

  H.264/AVC的自適應(yīng)環(huán)路濾波包括如下幾個部分:(1)邊界濾波像素的輸入輸出,;(2)邊界濾波強(qiáng)度的計算,,算法如圖2所示,必須先分清圖像的真實(shí)邊界和虛假邊界,,對真實(shí)邊界要加以保持,,而對虛假邊界進(jìn)行平滑濾波;(3)計算邊界閾值 α,、β,、c0。最后對濾波強(qiáng)度不為0 的虛假邊界進(jìn)行平滑濾波,。整個處理過程如圖3所示,。

1.2 宏塊級幀場自適應(yīng)
  視頻幀可以分為2種類型:連續(xù)幀或隔行視頻幀[6]。通常為了減少大面積的閃爍現(xiàn)象,把一幀分為2個隔行的場,。這時場內(nèi)相鄰行的時間相關(guān)性較強(qiáng),,幀內(nèi)相鄰行的空間相關(guān)性較強(qiáng)。在有物體移動或攝像機(jī)鏡頭移動的隔行掃描幀中,,與逐行掃描幀相比,,臨近的兩行的統(tǒng)計依賴性下降。在這種情況下,,也許對每個場單獨(dú)進(jìn)行壓縮的效率更高,。為此H.264的設(shè)計中允許編碼器在對一幀進(jìn)行編碼時做如下決定:
  (1)2個場結(jié)合在一起,對其按一個獨(dú)立的幀進(jìn)行編碼(幀模式),。
  (2)2個場結(jié)合,,對其按單獨(dú)的場獨(dú)立進(jìn)行編碼(場模式)。
  (3)將2個場結(jié)合在一起,,并將其作為一個單獨(dú)的幀壓縮,但編碼時需要首先將垂直相鄰的2個宏塊分成2場或2幀中的一對宏塊,。
  對一個序列中的每一幀都可以自適應(yīng)地選擇這3種選項中的一種,。H.264采用宏塊自適應(yīng)幀場編碼(MB-AFF)模式中,幀場編碼的選擇在宏塊級中指定,。且當(dāng)前片通常由16亮度像素寬和32亮度像素高的單元組成,,并以宏塊對的形式編碼,如圖4所示,。編碼器可按2個幀宏塊或者2個場宏塊來編碼每個宏塊對[7],。

  由于宏塊級幀場自適應(yīng)是按照垂直宏塊對的形式進(jìn)行編碼,因此其解碼順序與普通幀/場中宏塊的解碼順序有很大的不同,,如圖5,、圖6所示。在非幀場自適應(yīng)模式下,,解碼器按照水平掃描的順序依次解碼宏塊,;而在宏塊級幀場自適應(yīng)時,解碼順序演變?yōu)殇忼X形順序,。


  當(dāng)采用宏塊級自適應(yīng)編碼時,,相鄰宏塊位置的獲取就比較復(fù)雜了,在以宏塊對為單位對圖像進(jìn)行解碼時,,除了需要判斷當(dāng)前宏塊是上宏塊還是下宏塊,,還要判斷當(dāng)前宏塊對和參考宏塊對的幀場屬性,因為對于計算所需的像素位置是不同的,。宏塊級幀場自適應(yīng)取值方法,,具體可參見H.264協(xié)議[1]。相鄰宏塊對間的關(guān)系如圖7所示,。

2 去塊效應(yīng)濾波系統(tǒng)結(jié)構(gòu)
2.1 濾波器結(jié)構(gòu)
  針對影響去塊效應(yīng)濾波系統(tǒng)速度的因素,,提出了一種高效的濾波結(jié)構(gòu),,如圖8所示。該結(jié)構(gòu)利用了數(shù)據(jù)重用機(jī)制和并行計算來確保達(dá)到速度要求,。整個結(jié)構(gòu)由中央濾波處理單元,、閾值查詢單元、數(shù)據(jù)輸入輸出單元和同步控制單元組成,。

  中央濾波處理單元是去塊效應(yīng)濾波系統(tǒng)的核心部分,。考慮到SRAM存取數(shù)據(jù)的時間耗費(fèi),,不能采用參考軟件中的逐個濾波集合依次處理的方法,,而一定要采用并行處理的方式進(jìn)行。但出于芯片面積和功耗的考慮,,本設(shè)計中采用以一個塊邊界(Block Edge)為單元的濾波處理方案,。
  閾值查詢單元負(fù)責(zé)接收上一模塊傳遞進(jìn)來的indexA、indexB,,然后實(shí)現(xiàn)查表功能,,輸出閾值α、β,、c0以及濾波強(qiáng)度Strength,。
  數(shù)據(jù)輸入輸出單元負(fù)責(zé)給中央濾波單元傳送數(shù)據(jù)和存儲數(shù)據(jù)。在新的視頻標(biāo)準(zhǔn)中,,進(jìn)行水平濾波(垂直邊界濾波)和垂直濾波(水平邊界濾波)所用的數(shù)據(jù)格式有所不同,,水平濾波取2個4×4塊的行數(shù)據(jù)進(jìn)行濾波,而垂直濾波是對2個塊的列數(shù)據(jù)進(jìn)行濾波,。由于存儲數(shù)據(jù)時,,都是一行4個數(shù)據(jù)進(jìn)行存儲的,因此在進(jìn)行水平濾波過程時,,每個塊的數(shù)據(jù)都要經(jīng)過T(矩陣轉(zhuǎn)換單元)進(jìn)行一次矩陣的行列轉(zhuǎn)換,,垂直濾波準(zhǔn)備數(shù)據(jù)。同時由于MBAFF模式下參考像素的獲取有了更大的靈活性,,因此片內(nèi)數(shù)據(jù)的讀寫控制需要更加周密的設(shè)計,。
  同步控制單元用一個有限狀態(tài)機(jī)來實(shí)現(xiàn),控制整個去塊效應(yīng)濾波的數(shù)據(jù)處理過程包括接收啟動信號,、宏塊參數(shù)信息的讀取,、閾值查詢、濾波像素值的輸入,、濾波操作和濾波后數(shù)據(jù)處理等,;控制中央濾波單元的流水線操作,完成宏塊圖像數(shù)據(jù)去塊效應(yīng)濾波功能。
2.2 數(shù)據(jù)流控制
  去塊效應(yīng)濾波在大幅度改善視頻圖像質(zhì)量和壓縮效率的同時,,增加了對外部存儲器的訪問頻率,。而頻繁的存儲器存取會增大整個芯片的功耗,所以設(shè)計出合理的存儲器訪問策略對本設(shè)計尤為重要,。
  由于濾波過程中不僅需要當(dāng)前宏塊重建之后的像素數(shù)據(jù),,還需要相鄰宏塊的已經(jīng)濾波完的像素。對于1 080像素這樣解析度的圖像來說,,在MBAFF模式下,,需要存儲3個Block行的數(shù)據(jù)(1 920×4×12×3=270 KB),這么多的數(shù)據(jù)用片內(nèi)SRAM來存儲肯定是不現(xiàn)實(shí)的,,而DRAM具有較低的成本和不錯的訪存速度,,它被廣泛用來存儲整個圖像幀的數(shù)據(jù)。同時在片內(nèi)開辟一塊很小的SRAM(LineCache)用來和DRAM交互,,增加數(shù)據(jù)的重復(fù)使用率和訪存效率,,在解碼完若干個宏塊后進(jìn)行更新。這樣可以提高系統(tǒng)的整體性能,。
  作為溝通寄存器和DRAM數(shù)據(jù)流向的中間層的SRAM在設(shè)計中顯得尤為重要,。片內(nèi)存儲器分為單口SRAM和Register Files兩部分。本設(shè)計采用6塊片內(nèi)SRAM,,如圖8所示。下面以亮度信號為例,,具體介紹SRAM的用途,。MbLuma用來存放運(yùn)動補(bǔ)償單元處理后的宏塊數(shù)據(jù),由去塊效應(yīng)單元處理完畢后的數(shù)據(jù)也將放在這里,,然后寫入到SDRAM中,。當(dāng)宏塊的第一條邊界兩邊像素點(diǎn)濾波完成后,右邊的4個4×4塊被存入寄存器中,,這部分?jǐn)?shù)據(jù)在對下一邊界濾波時可被重用,,這樣就減少了存儲器讀取的頻率,從而降低處理的延遲,。重復(fù)上述過程,,直到最后一條垂直邊界濾波完成之后,將垂直邊界濾波后的數(shù)據(jù)存入BufLuma中,。BufLuma作為片內(nèi)的存儲器用來緩沖進(jìn)行完縱向濾波后的數(shù)據(jù),。之前首先進(jìn)行了一次變換(將橫向排列的像素變?yōu)榭v向),以滿足接下來將要進(jìn)行的橫向濾波的要求,。在進(jìn)行垂直邊界濾波時,,數(shù)據(jù)主要由MbLuma讀出,處理后主要寫入BufLuma。接下來再進(jìn)行水平邊界濾波時,,數(shù)據(jù)主要由BufLuma讀出,,處理后主要寫入MbLuma,然后寫入SDRAM,。CacheLuma中存放有去塊效應(yīng)需要暫存的參考像素數(shù)據(jù),,主要包括當(dāng)前宏塊左側(cè)和上邊的若干個Block像素。
  MBAFF下宏塊邊界參考像素數(shù)據(jù)存取要復(fù)雜很多,。MBAFF下都是按照宏塊對的順序濾波的,,宏塊對內(nèi)部的幀場屬性是一致的,但是不同宏塊對之間可能有不同的幀場屬性,,對于宏塊內(nèi)部邊界的濾波與非MBAFF時邊界濾汲沒有區(qū)別,,但是對于宏塊邊界的濾波,需要根據(jù)當(dāng)前宏塊在宏塊對中的位置,,以及當(dāng)前宏塊和參考宏塊的幀場屬性來綜合判斷,,確定濾波所需的濾波強(qiáng)度以及濾波參考像素的取值。對于水平邊界濾波也就形成了8種可能的組合,,如表1所示,。

  對于ID.1、3,、6,、8的組合,由于當(dāng)前宏塊和參考宏塊幀場屬性相同,,取值和非MBAFF模式下的一樣,;而對于當(dāng)前宏塊和參考宏塊具有不同的幀場屬性,情況就要復(fù)雜很多,。為了更清楚地說明對宏塊級幀場自適應(yīng)濾波,,下面舉例分析。當(dāng)前宏塊為宏塊對中的頂宏塊,,是場宏塊,,現(xiàn)在做水平邊界的濾波,它需要參考其上面宏塊對的信息,,其參考宏塊為幀宏塊對,,那么它需要的參考Block就是圖9左邊中淺灰Block;假設(shè)當(dāng)前宏塊為宏塊對中的頂宏塊,,是幀宏塊,,現(xiàn)在做水平邊界的濾波,它需要參考其上面宏塊對的信息,,其參考宏塊為場宏塊對,,那么它需要的參考Block為圖9中右邊淺灰Block,。

  更多的宏塊級幀場自適應(yīng)在計算預(yù)測值時選取哪些值,具體可參見H. 264協(xié)議[1],。
  本文對H.264/AVC 標(biāo)準(zhǔn)中MBAFF模式下的去塊效應(yīng)濾波過程進(jìn)行了分析,,利用數(shù)據(jù)重用機(jī)制和并行計算來加速濾波的過程,提高了整個濾波系統(tǒng)的速度,,對 H.264/AVC的編解碼有較好的實(shí)現(xiàn),。
參考文獻(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] 馮曉茹,,陳晨,楊海池,,等.支持宏塊級幀場自適應(yīng)的H.264解碼器幀內(nèi)模塊FPGA實(shí)現(xiàn)[J]. 空間電子技術(shù),,2008(4).
[7] 畢厚杰.新一代視頻壓縮編碼標(biāo)準(zhǔn)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.

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