《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > 宏塊級(jí)幀場(chǎng)自適應(yīng)的去塊效應(yīng)濾波模塊分析與優(yōu)化
宏塊級(jí)幀場(chǎng)自適應(yīng)的去塊效應(yīng)濾波模塊分析與優(yōu)化
王 軍,周開(kāi)倫,林 濤
同濟(jì)大學(xué) 超大規(guī)模集成電路研究所,上海 200331
摘要: 對(duì)支持宏塊級(jí)幀場(chǎng)自適應(yīng)的H.264去塊效應(yīng)濾波過(guò)程進(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í)幀場(chǎng)自適應(yīng)的H.264去塊效應(yīng)濾波過(guò)程進(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í)幀場(chǎng)自適應(yīng);去塊濾波

  H.264/AVC是由 ITU-T視頻編碼專家組和ISO/ IEC運(yùn)動(dòng)圖像專家組聯(lián)合制定的面向未來(lái)IP和無(wú)線環(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)路濾波(簡(jiǎn)稱環(huán)路濾波)來(lái)去除塊效應(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)需要一幀的緩沖器和更長(zhǎng)的系統(tǒng)延時(shí)。為了克服這個(gè)困難,參考文獻(xiàn)[5]引入了一個(gè)雙口SRAM來(lái)同時(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í)幀場(chǎng)自適應(yīng)去塊效應(yīng)的文獻(xiàn)幾乎還是空白。本文分析并優(yōu)化了支持宏塊級(jí)幀場(chǎng)自適應(yīng)的去塊效應(yīng)的存儲(chǔ)器結(jié)構(gòu),并給出了硬件實(shí)現(xiàn)。
1 算法
1.1 去塊效應(yīng)濾波
  去塊濾波在整個(gè)視頻解碼過(guò)程中位于重建之后,對(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ì)幀場(chǎng)自適應(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è)處理過(guò)程如圖3所示。

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

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


  當(dāng)采用宏塊級(jí)自適應(yīng)編碼時(shí),相鄰宏塊位置的獲取就比較復(fù)雜了,在以宏塊對(duì)為單位對(duì)圖像進(jìn)行解碼時(shí),除了需要判斷當(dāng)前宏塊是上宏塊還是下宏塊,還要判斷當(dāng)前宏塊對(duì)和參考宏塊對(duì)的幀場(chǎng)屬性,因?yàn)閷?duì)于計(jì)算所需的像素位置是不同的。宏塊級(jí)幀場(chǎng)自適應(yīng)取值方法,具體可參見(jiàn)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ì)算來(lái)確保達(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)來(lái)的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)行水平濾波過(guò)程時(shí),每個(gè)塊的數(shù)據(jù)都要經(jīng)過(guò)T(矩陣轉(zhuǎn)換單元)進(jìn)行一次矩陣的行列轉(zhuǎn)換,垂直濾波準(zhǔn)備數(shù)據(jù)。同時(shí)由于MBAFF模式下參考像素的獲取有了更大的靈活性,因此片內(nèi)數(shù)據(jù)的讀寫控制需要更加周密的設(shè)計(jì)。
  同步控制單元用一個(gè)有限狀態(tài)機(jī)來(lái)實(shí)現(xiàn),控制整個(gè)去塊效應(yīng)濾波的數(shù)據(jù)處理過(guò)程包括接收啟動(dòng)信號(hào)、宏塊參數(shù)信息的讀取、閾值查詢、濾波像素值的輸入、濾波操作和濾波后數(shù)據(jù)處理等;控制中央濾波單元的流水線操作,完成宏塊圖像數(shù)據(jù)去塊效應(yīng)濾波功能。
2.2 數(shù)據(jù)流控制
  去塊效應(yīng)濾波在大幅度改善視頻圖像質(zhì)量和壓縮效率的同時(shí),增加了對(duì)外部存儲(chǔ)器的訪問(wèn)頻率。而頻繁的存儲(chǔ)器存取會(huì)增大整個(gè)芯片的功耗,所以設(shè)計(jì)出合理的存儲(chǔ)器訪問(wèn)策略對(duì)本設(shè)計(jì)尤為重要。
  由于濾波過(guò)程中不僅需要當(dāng)前宏塊重建之后的像素?cái)?shù)據(jù),還需要相鄰宏塊的已經(jīng)濾波完的像素。對(duì)于1 080像素這樣解析度的圖像來(lái)說(shuō),在MBAFF模式下,需要存儲(chǔ)3個(gè)Block行的數(shù)據(jù)(1 920×4×12×3=270 KB),這么多的數(shù)據(jù)用片內(nèi)SRAM來(lái)存儲(chǔ)肯定是不現(xiàn)實(shí)的,而DRAM具有較低的成本和不錯(cuò)的訪存速度,它被廣泛用來(lái)存儲(chǔ)整個(gè)圖像幀的數(shù)據(jù)。同時(shí)在片內(nèi)開(kāi)辟一塊很小的SRAM(LineCache)用來(lái)和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用來(lái)存放運(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ù)上述過(guò)程,直到最后一條垂直邊界濾波完成之后,將垂直邊界濾波后的數(shù)據(jù)存入BufLuma中。BufLuma作為片內(nèi)的存儲(chǔ)器用來(lái)緩沖進(jìn)行完縱向?yàn)V波后的數(shù)據(jù)。之前首先進(jìn)行了一次變換(將橫向排列的像素變?yōu)榭v向),以滿足接下來(lái)將要進(jìn)行的橫向?yàn)V波的要求。在進(jìn)行垂直邊界濾波時(shí),數(shù)據(jù)主要由MbLuma讀出,處理后主要寫入BufLuma。接下來(lái)再進(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)部的幀場(chǎng)屬性是一致的,但是不同宏塊對(duì)之間可能有不同的幀場(chǎng)屬性,對(duì)于宏塊內(nèi)部邊界的濾波與非MBAFF時(shí)邊界濾汲沒(méi)有區(qū)別,但是對(duì)于宏塊邊界的濾波,需要根據(jù)當(dāng)前宏塊在宏塊對(duì)中的位置,以及當(dāng)前宏塊和參考宏塊的幀場(chǎng)屬性來(lái)綜合判斷,確定濾波所需的濾波強(qiáng)度以及濾波參考像素的取值。對(duì)于水平邊界濾波也就形成了8種可能的組合,如表1所示。

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

  更多的宏塊級(jí)幀場(chǎng)自適應(yīng)在計(jì)算預(yù)測(cè)值時(shí)選取哪些值,具體可參見(jiàn)H. 264協(xié)議[1]。
  本文對(duì)H.264/AVC 標(biāo)準(zhǔn)中MBAFF模式下的去塊效應(yīng)濾波過(guò)程進(jìn)行了分析,利用數(shù)據(jù)重用機(jī)制和并行計(jì)算來(lái)加速濾波的過(guò)程,提高了整個(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í)幀場(chǎng)自適應(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)載。
主站蜘蛛池模板: 免费一级毛片在播放视频 | 久久国产免费观看 | 91欧美一区二区三区综合在线 | 国产成人免费在线视频 | 国产在线91精品 | 国产高清在线精品一区 | 国产五区 | 国产日韩欧美精品一区二区三区 | 啪啪一级视频 | 美女张开腿让男人捅的视频 | 欧美大屁股精品毛片视频 | 99精选视频 | 中文无线乱码二三四区 | 一级毛片私人影院免费 | 国产99视频精品草莓免视看 | 欧美一级毛片免费网站 | 成年人免费在线视频网站 | 国产区一区二区三区 | 一本综合久久国产二区 | 久久久久久久久免费视频 | 欧美日韩一区二区三区在线视频 | 欧美色成人 | 99久久精品国产一区二区小说 | 久久国产精品二区99 | 中文乱码字幕午夜无线观看 | 巨大热杵在腿间进进出出视频 | 国内精品久久久久久影院老狼 | 欧美一级毛片aaaaa | 欧美极品video粗暴 | 好吊妞国产欧美日韩视频 | 欧美一区二区三区不卡免费观看 | 久久成 | 免费视频成人国产精品网站 | 黄色毛片免费 | 爱啪网亚洲第一福利网站 | 中文字幕在亚洲第一在线 | 边接电话边做国语高清对白 | 亚洲欧美日韩在线一区 | 亚洲免费a | 国产r67194吃奶视频 | 亚洲欧美日韩高清在线看 |