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

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

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

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

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

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


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

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

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

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

  更多的宏塊級(jí)幀場自適應(yīng)在計(jì)算預(yù)測(cè)值時(shí)選取哪些值,具體可參見H. 264協(xié)議[1],。
  本文對(duì)H.264/AVC 標(biāo)準(zhǔn)中MBAFF模式下的去塊效應(yīng)濾波過程進(jìn)行了分析,,利用數(shù)據(jù)重用機(jī)制和并行計(jì)算來加速濾波的過程,,提高了整個(gè)濾波系統(tǒng)的速度,對(duì) 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] 馮曉茹,,陳晨,,楊海池,等.支持宏塊級(jí)幀場自適應(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)載,。