H.264中插補(bǔ)算法的VLSI設(shè)計(jì)與實(shí)現(xiàn)
H.264/AVC[1]是由ITU和ISO/IEC的專家共同組成的聯(lián)合視頻小組JVT(Joint Video Team)發(fā)展和制定的新一代視頻編碼國(guó)際標(biāo)準(zhǔn)。在相同的視覺(jué)感知質(zhì)量下,H.264的傳輸碼率比以往的H.263、MPEG-4等降低了50%左右[2]。
本文引用地址:http://m.butianyuan.cn/article/83288.htm運(yùn)動(dòng)矢量位移的精度越高,則幀間剩余誤差越小,壓縮比越高。H.263中采用了半像素估計(jì),在H.264中則進(jìn)一步采用1/4像素精度的運(yùn)動(dòng)估計(jì)。分?jǐn)?shù)運(yùn)動(dòng)估計(jì)和運(yùn)動(dòng)補(bǔ)償用到的非整數(shù)像素點(diǎn)必須通過(guò)插補(bǔ)(interpolation)運(yùn)算來(lái)實(shí)現(xiàn),因而插補(bǔ)運(yùn)算的硬件加速對(duì)整個(gè)H.264編解碼系統(tǒng)性能的提高有重要意義。在H.264中采用了6抽頭FIR濾波器的內(nèi)插獲得1/2像素位置的值,則1/4像素值可通過(guò)線性內(nèi)插獲得。而對(duì)于常用的4:2:0的視頻格式,亮度信號(hào)的1/4像素精度對(duì)應(yīng)于色度的1/8像素的運(yùn)動(dòng)矢量,因此需要對(duì)色度信號(hào)進(jìn)行1/8像素的插補(bǔ)運(yùn)算。在H.264的幀間預(yù)測(cè)中,4×4是最基本的處理單元,其7種模式都可以劃分為4×4塊來(lái)進(jìn)行處理,因而基于面積和時(shí)間考慮的4×4模塊的插補(bǔ)電路具有良好的可重用性。
文獻(xiàn)[3]提出了使用4抽頭濾波器取代6抽頭濾波器的算法來(lái)實(shí)現(xiàn)亮度的1/2像素插補(bǔ),利于硬件實(shí)現(xiàn)。本文在4抽頭濾波器的基礎(chǔ)上提出了可以處理4×4塊的流水線結(jié)構(gòu),可以在一個(gè)時(shí)鐘內(nèi)完成27個(gè)1/2像素位置的插補(bǔ)運(yùn)算。對(duì)色度1/8像素的插補(bǔ),本文提出的兩級(jí)處理的結(jié)構(gòu),巧妙地利用移位器和加法器取代了乘法器,節(jié)省了硬件開(kāi)支。
1 插補(bǔ)算法原理
插補(bǔ)原理示意圖如圖1所示。2個(gè)整數(shù)像素位置之間的1/2像素點(diǎn)像素如圖1(a)中的a、b、aa等,是利用一個(gè)帶權(quán)重的6抽頭有限沖擊響應(yīng)(FIR)濾波器對(duì)相鄰整數(shù)位置的像素值進(jìn)行內(nèi)插得到的,權(quán)重值是(1/32,-5/32,5/8,5/8,-5/32,1/32)。如:
a=round((A-5*B+20*C+20*D-5*E+F)/32) (1)
h=round((A-5*G+20*H+20*I-5*J+K)/32) (2)
aa=round((a-5*b+20*c+20*d-5*e+f)/32) (3)
=round((h-5*i+20*j+20*k-5*l+m)/32)
由于6抽頭FIR的結(jié)構(gòu)比較復(fù)雜,文獻(xiàn)[3]提出的權(quán)重值為(-1/8,5/8,5/8,-1/8)4抽頭FIR在對(duì)圖像質(zhì)量和比特率影響很小的情況下,可以很大程度地節(jié)省硬件資源。如圖1(b)中:
a=round((-1*B+5*C+5*D-1*E)/8) (4)
h=round((-1*G+5*H+5*I-1*J)/8) (5)
aa=round((-1*b+5*c+5*d-1*e)/8) (6)
=round((-1*i+5*j+5*k-1*l)/8)
最匹配的1/2像素位置確定以后,1/4像素位置的像素由周圍的整數(shù)像素位置像素和1/2像素位置像素線性插補(bǔ)得到。
在常用的4:2:0采樣中,亮度分量1/4像素精度的運(yùn)動(dòng)矢量應(yīng)用到色度分量需要1/8的像素精度。在色度空間,對(duì)整數(shù)位置的像素值進(jìn)行線性插補(bǔ)可以得到1/8像素精度的插補(bǔ)值。如圖1(b)所示,1/8像素位置的像素a是周圍整數(shù)位置像素A,B,C,D的線性組合:
a=round(8-x)*(8-y)*A+x*(8-y)*B+y*(8-x)*C+x*y*D/64 (7)
2 硬件結(jié)構(gòu)
2.1 亮度1/2像素插補(bǔ)電路
4抽頭FIR與6抽頭FIR結(jié)構(gòu)比較如圖2所示。由圖2可以看出,4抽頭FIR的結(jié)構(gòu)比6抽頭FIR易于硬件實(shí)現(xiàn)。實(shí)驗(yàn)表明前者的電路面積和關(guān)鍵路徑延時(shí)比后者分別減少了36.2%和16.0%。
4×4塊的1/2像素精度插補(bǔ)電路的流水線結(jié)構(gòu)圖如圖3所示,共有16個(gè)4抽頭FIR,利用一個(gè)6× 4的整數(shù)像素點(diǎn)陣列作為緩沖區(qū),每次從存儲(chǔ)器中讀出8個(gè)整數(shù)像素點(diǎn),分別用于5個(gè)水平4抽頭FIR的輸入。每個(gè)時(shí)鐘所有的像素點(diǎn)都會(huì)向下傳送一級(jí),圖中虛線框處已經(jīng)計(jì)算出了整數(shù)像素點(diǎn)周圍的所有27個(gè)1/2像素值,可以輸出到并行處理單元同時(shí)計(jì)算9個(gè)半像素位置的SAD(Sum of Absolute Difference)。該架構(gòu)處理一個(gè)4×4單元需要8個(gè)時(shí)鐘,處理一個(gè)具有相同運(yùn)動(dòng)矢量的4×16塊需要20個(gè)時(shí)鐘。
評(píng)論