程 飛,鄒雪妹,滕國(guó)偉,王國(guó)中
(上海大學(xué) 通信與信息工程學(xué)院,上海 200072)
對(duì)于視頻通信,由于通信帶寬有限,需要對(duì)視頻編碼碼率進(jìn)行控制,以保證信道帶寬的充分利用和在接收端有良好和穩(wěn)定的接收質(zhì)量?,F(xiàn)有的視頻壓縮標(biāo)準(zhǔn)都對(duì)其進(jìn)行了廣泛的研究。針對(duì)不同的應(yīng)用場(chǎng)合,專家們提出了多種碼率控制策略,較為經(jīng)典的算法有:MPEG-2的TM5、MPEG-4 的 VM8[1]、H.263 的 TMN8[2], 以 及 H.264/AVC中采用的JVT-G012等碼率控制算法[3]。JVT-G012算法對(duì)于宏塊級(jí)碼率控制,在實(shí)際實(shí)現(xiàn)中,不僅需要保存每個(gè)宏塊的相關(guān)參數(shù),而且每個(gè)宏塊在編碼之前都要進(jìn)行參數(shù)的更新并求解二次方程,計(jì)算復(fù)雜度較高,不能很好地滿足實(shí)際應(yīng)用的需要。
如果能在RDO模式判別前可以預(yù)測(cè)出當(dāng)前幀的編碼復(fù)雜度、計(jì)算出達(dá)到目標(biāo)比特?cái)?shù)所需的量化級(jí)當(dāng)然最好,但在RDO模式判決之前能得到的信息很少,主要是利用與參考宏塊的相關(guān)性來(lái)預(yù)測(cè),這在序列變化劇烈和場(chǎng)景發(fā)生變化的情況下很難預(yù)測(cè)準(zhǔn)確。宏塊級(jí)碼控與幀級(jí)碼控相比,優(yōu)點(diǎn)當(dāng)然是控制準(zhǔn)確,缺點(diǎn)就是要花費(fèi)很多比特?cái)?shù)去編ΔQP。ΔQP越大,不為零的數(shù)越多,所耗的比特?cái)?shù)就越多,PSNR值就會(huì)相應(yīng)降低,圖像質(zhì)量也就相應(yīng)變差。所以宏塊級(jí)碼控方案應(yīng)該盡量減少不必要的比特?cái)?shù)浪費(fèi),以求在控制精度的同時(shí)有較高的圖像質(zhì)量。
在CAVLC中對(duì)DCT系數(shù)采用游程編碼,而游程編碼主要是對(duì)零的游程長(zhǎng)度和非零數(shù)進(jìn)行編碼,所以在一定程度上游程長(zhǎng)度和非零數(shù)可以反映出對(duì)DCT系數(shù)編碼所耗的比特?cái)?shù)。因此,可以利用DCT系數(shù)量化后零的游程和非零數(shù)來(lái)預(yù)測(cè)出DCT系數(shù)編碼所耗的比特?cái)?shù)[4]。宏塊的頭信息主要包括宏塊類型、參考索引、運(yùn)動(dòng)向量差值、編碼塊模式、量化參數(shù)差值等,其中只有運(yùn)動(dòng)向量差值是隨著情況的不同而大量變化的,其他參數(shù)所用比特?cái)?shù)基本上相對(duì)固定[5]。本文用運(yùn)動(dòng)向量的個(gè)數(shù)和運(yùn)動(dòng)向量差值的非零數(shù)預(yù)測(cè)宏塊頭比特?cái)?shù)。但在H.264編碼中不管是要得到游程長(zhǎng)度和非零數(shù),還是要得到運(yùn)動(dòng)向量差值都必須先確定量化參數(shù),這就是所謂的“蛋雞悖論”。本文的方法是先利用前一宏塊的量化參數(shù)進(jìn)行模式判決和量化,然后根據(jù)量化后的信息估計(jì)當(dāng)前宏塊可能產(chǎn)生的比特?cái)?shù),并與目標(biāo)比特?cái)?shù)進(jìn)行比較,來(lái)判斷當(dāng)前宏塊的量化參數(shù)是否變化,若變化則用新的量化參數(shù)重新進(jìn)行模式判決 (只需用新的QP確定系數(shù)λ重新進(jìn)行比較和判斷)和量化。若量化參數(shù)經(jīng)常發(fā)生變化,不僅碼控復(fù)雜度會(huì)大大提升,而且需要消耗大量比特?cái)?shù)對(duì)ΔQP編碼。因此在保障控制準(zhǔn)確的基礎(chǔ)上,應(yīng)盡量減少量化參數(shù)的變化,避免不必要的比特?cái)?shù)浪費(fèi),提高圖像質(zhì)量。
本文的碼率控制算法除每個(gè)GoP中的第一個(gè)P幀外,對(duì)所有其他幀間預(yù)測(cè)的幀進(jìn)行控制。如果對(duì)每個(gè)GoP的第一個(gè)P幀也采用相同的碼率控制算法,則由于P幀圖像和I幀圖像在編碼特性上的差異,碼率控制會(huì)有較大誤差,因此沿用JVT-G012的方法,對(duì)于每個(gè)GoP中I幀和第一個(gè)P幀采用預(yù)定義的量化參數(shù)進(jìn)行編碼,碼率控制只對(duì)每個(gè)GoP的第二個(gè)P幀開(kāi)始的所有幀間預(yù)測(cè)圖像進(jìn)行控制。此外,在GoP、幀級(jí)目標(biāo)碼率分配上,本文算法使用的是JVT-G012的方案。
本文算法主要包括以下幾步:
1)根據(jù)帶寬和輸入序列格式確定一組系數(shù)(a,b,c)和閾值THMAX;
2)為宏塊分配目標(biāo)比特?cái)?shù);
3)采用JVT-G012的方法用預(yù)定義的量化參數(shù)對(duì)I幀和第一個(gè)P幀進(jìn)行編碼;
4)從第二個(gè)P幀開(kāi)始,第一個(gè)宏塊的量化參數(shù)使用前一幀的平均量化參數(shù);
5)根據(jù)運(yùn)動(dòng)向量的差值確定當(dāng)前宏塊頭的比特?cái)?shù);
6)根據(jù)亮度和色度量化后零的游程長(zhǎng)度和、非零數(shù)的數(shù)目及非零數(shù)的和來(lái)預(yù)測(cè)當(dāng)前宏塊殘差值產(chǎn)生的比特?cái)?shù);
7)根據(jù)5),6)兩步,預(yù)測(cè)當(dāng)前宏塊有可能產(chǎn)生的比特?cái)?shù)并與目標(biāo)比特?cái)?shù)進(jìn)行比較,確定當(dāng)前宏塊的量化參數(shù)是否發(fā)生變化,若變化則用新的量化參數(shù)重新進(jìn)行模式判決和量化,否則繼續(xù)進(jìn)行編碼;
8)若當(dāng)前宏塊模式是幀內(nèi)和跳過(guò)模式,量化參數(shù)與前一宏塊量化參數(shù)保持一致。
現(xiàn)有的碼控方案主要包括兩個(gè)方面,一個(gè)是根據(jù)帶寬分配目標(biāo)比特?cái)?shù),另一個(gè)就是建立一個(gè)量化參數(shù)與目標(biāo)比特?cái)?shù)的模型,然后根據(jù)這個(gè)模型計(jì)算出達(dá)到目標(biāo)碼字所需的量化級(jí)[6-8]。本算法并沒(méi)有建立一個(gè)RQ模型,而是通過(guò)前一量化參數(shù)進(jìn)行模式判決和量化,再通過(guò)量化后信息預(yù)測(cè)當(dāng)前宏塊有可能產(chǎn)生的比特?cái)?shù)并與目標(biāo)比特?cái)?shù)比較,來(lái)判斷當(dāng)前宏塊的量化參數(shù)增加、減少或不變。
1)宏塊級(jí)目標(biāo)比特?cái)?shù)的分配
(1)使用JVT-G012的方案為GoP和幀分配目標(biāo)比特?cái)?shù)Frbits;
(2)宏塊目標(biāo)比特?cái)?shù)MBtbits的分配主要由先前宏塊所耗比特?cái)?shù)Src_bits和剩下多少個(gè)宏塊Units決定
2)當(dāng)前宏塊所耗比特?cái)?shù)的預(yù)測(cè)
DCT系數(shù)所耗比特?cái)?shù)TBmb(qp)的預(yù)測(cè)
式中:Xmb(qp)為DCT系數(shù)量化后非零數(shù)的個(gè)數(shù);Ymb(qp)為DCT系數(shù)量化后零的游程長(zhǎng)度和;Zmb(qp)為量化后AC系數(shù)非零數(shù)的和。
宏塊頭所耗比特?cái)?shù)HBmb(qp)的預(yù)測(cè)
式中: MVn(qp)為運(yùn)動(dòng)向量的個(gè)數(shù); MVDnz(qp)為運(yùn)動(dòng)向量差值非零的個(gè)數(shù)。
計(jì)算預(yù)測(cè)的宏塊比特?cái)?shù) TBmb(qp)+HBmb(qp)與宏塊分配的目標(biāo)比特?cái)?shù)MBtbits兩者的差值
并與閾值 THMAX比較:若 abs(Difbits)>THMAX),DeltaQP=1,否則 DeltaQP=0;若(Difbits>0),QP+=DeltaQP,否則 QP-=DeltaQP。
可以通過(guò)調(diào)節(jié)閾值THMAX和系數(shù)a,b,c來(lái)實(shí)現(xiàn)在保證精度的情況下,充分利用比特?cái)?shù)提升圖像質(zhì)量。
在JVT的校驗(yàn)?zāi)P蚃M86上實(shí)現(xiàn)了筆者提出的碼率控制策略,并和JVT提案中的碼率控制策略JVT-G012進(jìn)行比較。實(shí)驗(yàn)使用標(biāo)準(zhǔn)的CIF測(cè)試序列:news,bus,foreman,mobile,football和 tempete。 實(shí)驗(yàn)條件按照實(shí)際應(yīng)用要求確立,幀率為25f/s(幀/秒),給定第一個(gè)I幀的QP為28,其他測(cè)試條件如表1。實(shí)驗(yàn)結(jié)果如表2所示。
由表2可見(jiàn),本文的碼率控制算法碼率控制得很好,PSNR值也很高。
表1 測(cè)試條件
表2 兩種算法碼率控制效果對(duì)比
為了更清楚地表明這兩種碼率控制的效果,圖1給出兩種方法下foreman和tempete各幀的PSNR,本算法PSNR變化比JVT-G012平緩,具有較高的主觀視覺(jué)質(zhì)量。圖2給出了兩種方法下foreman和tempete各幀的比特?cái)?shù),本算法各幀所產(chǎn)生的比特?cái)?shù)與目標(biāo)比特?cái)?shù)的匹配情況比JVT-G012更好,更精確地計(jì)算出了達(dá)到目標(biāo)比特?cái)?shù)所需的量化級(jí)。
圖2 foreman和tempete序列兩種方法下的每幀比特?cái)?shù)波動(dòng)曲線比較
本文所述碼率控制算法先用前一宏塊的量化參數(shù)進(jìn)行模式判決和量化,然后使用量化之后的信息估計(jì)當(dāng)前宏塊有可能產(chǎn)生的比特?cái)?shù),因?yàn)槭抢卯?dāng)前宏塊量化后的信息來(lái)估計(jì)當(dāng)前宏塊有可能產(chǎn)生的比特?cái)?shù),估計(jì)準(zhǔn)確性比較高。而且本算法只是利用已有的信息進(jìn)行簡(jiǎn)單的線性運(yùn)算來(lái)判斷當(dāng)前宏塊量化參數(shù)是否發(fā)生變化,然后在極少量化參數(shù)發(fā)生變化的宏塊中用新的量化參數(shù)重新確定系數(shù)λ,重新進(jìn)行模式判決和量化,計(jì)算復(fù)雜度低,大大加快了編碼速度。本算法是一種建立在簡(jiǎn)單率失真模型基礎(chǔ)上的宏塊級(jí)算法。該算法充分利用了宏塊的實(shí)際編碼特性,在保證碼率控制準(zhǔn)確性和圖像質(zhì)量的前提下,大幅提高了碼率控制速度。
[1]LEE H J,CHIANG T.Scalable rate control for MPEG-4 video[J].IEEE Trans.Circuits and Systems for Video Technology,2000,10(6):878-894.
[2]RIBAS-CORBERA J,LEI S.Rate control in DCT video coding for low-delay communications[J].IEEE Trans.Circuits and Systems for Video Technology,1999,9(1):172-185.
[3]LI Z G,PAN F,LIM K P.Adaptive basic unit layer rate control for JVT,JVT-GO12[C]//Joint Video Team of ISO/IEC and IIU 7th Meeting.Pattaya,Thailand:JVT,2003.
[4]CHAN D-Y,CHANG C-Y.Low-complexity two-stage rate-control with succinct DCT-abundance modeling and consistence enhancement for low-delay video coding[R].JVCI-08-371.
[5]ISO/IEC JTC1/SC29/WG11 and ITU-T SG16 Q.6,H.264/MPEG-4 AVC Reference Software Manual[S].2005.
[6]TSAI J C,HSIEH C H.Modified TMN8 rate control for low-delay video communication[J].IEEE Trans.Circuits and Systems for Video Technology,2004,14(6):864-868.
[7]CHIANG T,ZHANG Y.A new rate control scheme using quadratic rate distortion model[J].IEEE Trans.Circuits and Systems for Video Technology,1997,7(1):246-250.
[8]WEI J,SOONG B H,LI Z G.A new rate-distortion model for video transmission using multiple logarithmic functions[J].IEEE Signal Processing Letters,2004,11(8):694-697.