H.264解碼器中一種新穎的去塊效應(yīng)濾波器設(shè)計(jì)
圖像的編解碼技術(shù)是多媒體技術(shù)的關(guān)鍵,H.264/AVC是國(guó)際上最先進(jìn)的視頻壓縮技術(shù),其主要特點(diǎn)是采用小尺寸整數(shù)余弦變換、1/4像素的運(yùn)動(dòng)估計(jì)精度、多參考幀預(yù)測(cè),基于上下文可變長(zhǎng)度編碼和環(huán)路內(nèi)去塊效應(yīng)濾波器等技術(shù)。由于去塊效應(yīng)濾波器大約占整個(gè)解碼器1/3的運(yùn)算量,因此該部分的設(shè)計(jì)成為整個(gè)解碼器設(shè)計(jì)的瓶頸,在此研究了一種新穎的環(huán)路內(nèi)去塊效應(yīng)濾波器設(shè)計(jì)。設(shè)計(jì)中采用5階流水線的去塊效應(yīng)模塊,利用混合濾波順序與打亂的存儲(chǔ)更新機(jī)制的方法提高了流水線暢順性,濾波一個(gè)16×16大小的宏塊僅需要198個(gè)時(shí)鐘周期。
1 H.264/AVC的去塊效應(yīng)
在基于塊的視頻編碼方法中,各個(gè)塊的編解碼是互相獨(dú)立的,由于預(yù)測(cè)、補(bǔ)償、變化、量化等引起塊與塊之間的邊界處會(huì)產(chǎn)生不連續(xù),因此新版H.264/AVC標(biāo)準(zhǔn)采用了環(huán)路內(nèi)去塊濾波器來(lái)解決每個(gè)16×16宏塊重建后的邊界扭曲問(wèn)題。去塊效應(yīng)濾波有兩種方法:后處理去塊效應(yīng)濾波;環(huán)路內(nèi)去塊效應(yīng)濾波。H.264/AVC采用環(huán)路內(nèi)去塊效應(yīng)濾波(見(jiàn)圖1),即濾波后的幀作為后面預(yù)測(cè)的參考幀。與之前的H.263或MPEG的濾波器相比較,新版H.264標(biāo)準(zhǔn)采用的濾波器基于更小的4×4的基本宏塊,基本宏塊的邊界根據(jù)片級(jí)/宏塊級(jí)的特性與根據(jù)像素穿過(guò)濾波邊界的漸變度,對(duì)需要濾波的宏塊邊界進(jìn)行有條件的濾波。重建幀的每個(gè)像素都需要從外部存儲(chǔ)器中重調(diào)出來(lái)以進(jìn)行濾波處理或作為相鄰像素來(lái)判斷當(dāng)前像素是否需要進(jìn)行濾波。顯然,這些操作需要消耗巨大的存儲(chǔ)器帶寬,對(duì)像素值進(jìn)行修改。
本文設(shè)計(jì)的去塊效應(yīng)濾波模塊采用流水線技術(shù)來(lái)提高系統(tǒng)吞吐量。理想流水線的高效率實(shí)現(xiàn)基于相鄰的濾波操作沒(méi)有數(shù)據(jù)性。文獻(xiàn)[3,4]采用了非流水線的架構(gòu),因此無(wú)法提高系統(tǒng)的吞吐量。而對(duì)于流水線架構(gòu),如若不優(yōu)化濾波順序與存儲(chǔ)器訪問(wèn)次序,則所產(chǎn)生的數(shù)據(jù)與結(jié)構(gòu)冒險(xiǎn)也將大大降低流水線的效率。有人使用雙端口的片上SRAM來(lái)減少片外存儲(chǔ)器的帶寬,增加了系統(tǒng)的吞吐量,但是雙端口存儲(chǔ)器面積較大且增加功耗。與流水線的濾波器相比,非流水線濾波器的操作(包括條件判斷、查表、像素計(jì)算等)是順序化的,即每個(gè)時(shí)鐘僅處理一個(gè)操作類(lèi)型,因此它所能達(dá)到的最大系統(tǒng)頻率要低很多。
采用不同的邊界濾波順序,會(huì)大大的影響去塊效應(yīng)濾波器的性能。在H.264/AVC標(biāo)準(zhǔn)中,每個(gè)宏塊的濾波順序得到了描述,只要保持濾波數(shù)據(jù)依賴(lài)性,H.264/AVC標(biāo)準(zhǔn)所描述的濾波順序可以被改進(jìn)。其濾波順序包括兩類(lèi):順序?yàn)V波和混合濾波。但是其濾波順序以及相應(yīng)的存儲(chǔ)更新機(jī)制都是針對(duì)非流水線結(jié)構(gòu)的,因此如果直接將之應(yīng)用于本文的流水線設(shè)計(jì),就有可能引發(fā)嚴(yán)重的競(jìng)爭(zhēng)與冒險(xiǎn)從而降低流水線的性能。
2 去塊效應(yīng)濾波器的存儲(chǔ)管理與濾波算法
H.264/AvC標(biāo)準(zhǔn)基于4×4宏塊作為濾波的基本宏塊,它有5種濾波強(qiáng)度,分別是Bs=0,1,2,3,4。濾波方式分為強(qiáng)濾波、標(biāo)準(zhǔn)濾波和直通3種方式,其中強(qiáng)濾波影響邊界兩邊的共6個(gè)像素,標(biāo)準(zhǔn)濾波影響邊界兩邊的共4個(gè)像素,直通方式不修改邊界兩側(cè)的像素。H.264/AVC標(biāo)準(zhǔn)規(guī)定先對(duì)垂直邊界進(jìn)行濾波,然后再對(duì)水平邊界進(jìn)行濾波,只有對(duì)垂直與水平邊界全部濾波完成后,才可以對(duì)下一個(gè)宏塊進(jìn)行濾波。同一個(gè)宏塊中,先對(duì)亮度部分進(jìn)行濾波,再對(duì)色度部分進(jìn)行濾波;色度部分濾波時(shí),先對(duì)C6部分進(jìn)行濾波,再對(duì)Cr部分進(jìn)行濾波,對(duì)整個(gè)16×16宏塊的濾波順序如圖2所示。
(1)邊界濾波強(qiáng)度與像素濾波的存儲(chǔ)器
按照H.264/AVC的標(biāo)準(zhǔn),需要對(duì)被濾波的邊界兩側(cè)的像素進(jìn)行有條件的濾波。該條件決定于邊界強(qiáng)度BS與像素穿越邊界的傾斜度。邊界強(qiáng)度BS:0,1,2,3或4,在進(jìn)行濾波之前被賦給相應(yīng)的邊界。BS=4表示強(qiáng)濾波,BS=0表示不需要進(jìn)行濾波,即直通方式;否則,BS=1,2,3表示中等強(qiáng)度的濾波,色度部分邊界的濾波強(qiáng)度與對(duì)應(yīng)亮度部分是相同的。濾波每條水平或垂直邊界需要被提供邊界兩邊的8個(gè)像素,p0~p3q0~q3;需要更新的像素共6個(gè)或4個(gè):p0~p2q0~q2或聲p0,p1q0,q1。
對(duì)一個(gè)16×16宏塊進(jìn)行濾波需要提供左邊相鄰像素、右邊相鄰像素和本宏塊的像素。對(duì)于宏塊邊界,比如最左邊界與最右邊界而言,p0~p3與q0~q3來(lái)自不同的模塊(即分別來(lái)自相鄰宏塊的像素與本宏塊的像素);對(duì)于非16×16宏塊的邊界濾波,像素p0~p3與q0~q3均來(lái)自16×16宏塊本身,因此至少需要4個(gè)存儲(chǔ)單元:左相鄰像素存儲(chǔ)單元、上相鄰像素存儲(chǔ)單元、本身模塊的像素存儲(chǔ)單元和轉(zhuǎn)換緩沖單元,每個(gè)存儲(chǔ)單元的帶寬是32位。
當(dāng)濾波從垂直邊界向水平邊界變換時(shí),為了方便濾波過(guò)程中的存儲(chǔ)器訪問(wèn),這里利用額外的轉(zhuǎn)換緩沖器BUF0~BUF3來(lái)緩存中間濾波數(shù)據(jù),采用轉(zhuǎn)換緩沖器后獲取一行或一列像素的值(即p0~p3q0~q3)只需要1個(gè)時(shí)鐘周期,否則需要4個(gè)時(shí)鐘周期。
(2)濾波算法
環(huán)路濾波的基本思想是:判斷該邊界是圖像的真實(shí)邊界還是編碼所形成的塊效應(yīng)邊界;對(duì)真實(shí)邊界不濾波,對(duì)偽邊界根據(jù)像素穿越邊界的漸變度和編碼方式進(jìn)行濾波;根據(jù)濾波強(qiáng)度,選擇不同的濾波系數(shù)對(duì)邊界兩側(cè)像素進(jìn)行濾波操作。濾波強(qiáng)度Bs=0的邊界將不會(huì)進(jìn)行濾波,而濾波強(qiáng)度Bs不為0的邊界,依賴(lài)于獲取的量化參數(shù)α與β,進(jìn)行閾值判斷,對(duì)鄰近的像素進(jìn)行有條件的濾波。當(dāng)濾波強(qiáng)度Bs不是0,并且下面3個(gè)條件成立時(shí),才對(duì)鄰近像素進(jìn)行濾波。
直接計(jì)算α,β是非常困難,而且消耗了很多硬件資源,因此通過(guò)查找表(LUT)獲取α,β的操作。像素的計(jì)算可以被分成下述兩種類(lèi)型:
(1)Bs=4
如果以下的兩個(gè)條件成立,一個(gè)非常強(qiáng)的4抽頭或5抽頭濾波器將被用來(lái)對(duì)鄰近像素進(jìn)行濾波,修改像素p0,p1,p2。
否則,若式(2)中有一個(gè)不成立,將不會(huì)對(duì)p1與p2進(jìn)行濾波,只會(huì)對(duì)p0進(jìn)行弱強(qiáng)度的濾波。對(duì)于色度部分邊界的濾波,如果式(2)成立,只會(huì)對(duì)p0與q0進(jìn)行濾波。
(2)Bs=1~3
亮度像素p0與q0的計(jì)算如下:
而d_0是在裁減操作中被定義的:
式中:c0來(lái)自于c1,而c1是通過(guò)查找兩維的LUT表獲取的。
像素p1僅在式(3)成立的時(shí)候進(jìn)行修改,同p0與q0修改的方式相同;而像素p2與q2對(duì)于濾波強(qiáng)度Bs不為4的情況下,不進(jìn)行濾波。在色度分量進(jìn)行濾波時(shí),只有對(duì)p0與q0進(jìn)行濾波,濾波的方式與亮度濾波的方式相同。
3 流水線濾波架構(gòu)
3.1 流水線分析
流水線技術(shù)適合于連續(xù)的批處理任務(wù),當(dāng)一個(gè)N階流水線被灌滿以后,系統(tǒng)在一個(gè)周期內(nèi)可以并行處理N個(gè)任務(wù),由此提高了整組任務(wù)的處理速度并增大了系統(tǒng)吞吐能力。如果相鄰的濾波操作沒(méi)有數(shù)據(jù)競(jìng)爭(zhēng),并且所有的階段都被很好地進(jìn)行了平衡,則濾波過(guò)程能夠被進(jìn)行流水線操作化并可將速度提高N倍數(shù)。然而,如若存在競(jìng)爭(zhēng)與冒險(xiǎn)問(wèn)題,則無(wú)法實(shí)現(xiàn)。此時(shí)的主要任務(wù)是如何均衡流水線的各個(gè)階段,如何把總的操作盡可能平均的分配給不同的流水線階段,如何避免或消除競(jìng)爭(zhēng)與冒險(xiǎn),以便獲得一個(gè)比較平衡暢順的流水線架構(gòu)。按照去塊效應(yīng)濾波器模塊的實(shí)現(xiàn)算法,大多數(shù)的關(guān)鍵路徑位于以下操作中。
評(píng)論