程 飛,鄒雪妹,滕國偉,王國中
(上海大學(xué) 通信與信息工程學(xué)院,上海 200072)
對于視頻通信,由于通信帶寬有限,需要對視頻編碼碼率進(jìn)行控制,以保證信道帶寬的充分利用和在接收端有良好和穩(wěn)定的接收質(zhì)量?,F(xiàn)有的視頻壓縮標(biāo)準(zhǔn)都對其進(jìn)行了廣泛的研究。針對不同的應(yīng)用場合,專家們提出了多種碼率控制策略,較為經(jīng)典的算法有:MPEG-2的TM5、MPEG-4 的 VM8[1]、H.263 的 TMN8[2], 以 及 H.264/AVC中采用的JVT-G012等碼率控制算法[3]。JVT-G012算法對于宏塊級碼率控制,在實際實現(xiàn)中,不僅需要保存每個宏塊的相關(guān)參數(shù),而且每個宏塊在編碼之前都要進(jìn)行參數(shù)的更新并求解二次方程,計算復(fù)雜度較高,不能很好地滿足實際應(yīng)用的需要。
如果能在RDO模式判別前可以預(yù)測出當(dāng)前幀的編碼復(fù)雜度、計算出達(dá)到目標(biāo)比特數(shù)所需的量化級當(dāng)然最好,但在RDO模式判決之前能得到的信息很少,主要是利用與參考宏塊的相關(guān)性來預(yù)測,這在序列變化劇烈和場景發(fā)生變化的情況下很難預(yù)測準(zhǔn)確。宏塊級碼控與幀級碼控相比,優(yōu)點當(dāng)然是控制準(zhǔn)確,缺點就是要花費很多比特數(shù)去編ΔQP。ΔQP越大,不為零的數(shù)越多,所耗的比特數(shù)就越多,PSNR值就會相應(yīng)降低,圖像質(zhì)量也就相應(yīng)變差。所以宏塊級碼控方案應(yīng)該盡量減少不必要的比特數(shù)浪費,以求在控制精度的同時有較高的圖像質(zhì)量。
在CAVLC中對DCT系數(shù)采用游程編碼,而游程編碼主要是對零的游程長度和非零數(shù)進(jìn)行編碼,所以在一定程度上游程長度和非零數(shù)可以反映出對DCT系數(shù)編碼所耗的比特數(shù)。因此,可以利用DCT系數(shù)量化后零的游程和非零數(shù)來預(yù)測出DCT系數(shù)編碼所耗的比特數(shù)[4]。宏塊的頭信息主要包括宏塊類型、參考索引、運動向量差值、編碼塊模式、量化參數(shù)差值等,其中只有運動向量差值是隨著情況的不同而大量變化的,其他參數(shù)所用比特數(shù)基本上相對固定[5]。本文用運動向量的個數(shù)和運動向量差值的非零數(shù)預(yù)測宏塊頭比特數(shù)。但在H.264編碼中不管是要得到游程長度和非零數(shù),還是要得到運動向量差值都必須先確定量化參數(shù),這就是所謂的“蛋雞悖論”。本文的方法是先利用前一宏塊的量化參數(shù)進(jìn)行模式判決和量化,然后根據(jù)量化后的信息估計當(dāng)前宏塊可能產(chǎn)生的比特數(shù),并與目標(biāo)比特數(shù)進(jìn)行比較,來判斷當(dāng)前宏塊的量化參數(shù)是否變化,若變化則用新的量化參數(shù)重新進(jìn)行模式判決 (只需用新的QP確定系數(shù)λ重新進(jìn)行比較和判斷)和量化。若量化參數(shù)經(jīng)常發(fā)生變化,不僅碼控復(fù)雜度會大大提升,而且需要消耗大量比特數(shù)對ΔQP編碼。因此在保障控制準(zhǔn)確的基礎(chǔ)上,應(yīng)盡量減少量化參數(shù)的變化,避免不必要的比特數(shù)浪費,提高圖像質(zhì)量。
本文的碼率控制算法除每個GoP中的第一個P幀外,對所有其他幀間預(yù)測的幀進(jìn)行控制。如果對每個GoP的第一個P幀也采用相同的碼率控制算法,則由于P幀圖像和I幀圖像在編碼特性上的差異,碼率控制會有較大誤差,因此沿用JVT-G012的方法,對于每個GoP中I幀和第一個P幀采用預(yù)定義的量化參數(shù)進(jìn)行編碼,碼率控制只對每個GoP的第二個P幀開始的所有幀間預(yù)測圖像進(jìn)行控制。此外,在GoP、幀級目標(biāo)碼率分配上,本文算法使用的是JVT-G012的方案。
本文算法主要包括以下幾步:
1)根據(jù)帶寬和輸入序列格式確定一組系數(shù)(a,b,c)和閾值THMAX;
2)為宏塊分配目標(biāo)比特數(shù);
3)采用JVT-G012的方法用預(yù)定義的量化參數(shù)對I幀和第一個P幀進(jìn)行編碼;
4)從第二個P幀開始,第一個宏塊的量化參數(shù)使用前一幀的平均量化參數(shù);
5)根據(jù)運動向量的差值確定當(dāng)前宏塊頭的比特數(shù);
6)根據(jù)亮度和色度量化后零的游程長度和、非零數(shù)的數(shù)目及非零數(shù)的和來預(yù)測當(dāng)前宏塊殘差值產(chǎn)生的比特數(shù);
7)根據(jù)5),6)兩步,預(yù)測當(dāng)前宏塊有可能產(chǎn)生的比特數(shù)并與目標(biāo)比特數(shù)進(jìn)行比較,確定當(dāng)前宏塊的量化參數(shù)是否發(fā)生變化,若變化則用新的量化參數(shù)重新進(jìn)行模式判決和量化,否則繼續(xù)進(jìn)行編碼;
8)若當(dāng)前宏塊模式是幀內(nèi)和跳過模式,量化參數(shù)與前一宏塊量化參數(shù)保持一致。
現(xiàn)有的碼控方案主要包括兩個方面,一個是根據(jù)帶寬分配目標(biāo)比特數(shù),另一個就是建立一個量化參數(shù)與目標(biāo)比特數(shù)的模型,然后根據(jù)這個模型計算出達(dá)到目標(biāo)碼字所需的量化級[6-8]。本算法并沒有建立一個RQ模型,而是通過前一量化參數(shù)進(jìn)行模式判決和量化,再通過量化后信息預(yù)測當(dāng)前宏塊有可能產(chǎn)生的比特數(shù)并與目標(biāo)比特數(shù)比較,來判斷當(dāng)前宏塊的量化參數(shù)增加、減少或不變。
1)宏塊級目標(biāo)比特數(shù)的分配
(1)使用JVT-G012的方案為GoP和幀分配目標(biāo)比特數(shù)Frbits;
(2)宏塊目標(biāo)比特數(shù)MBtbits的分配主要由先前宏塊所耗比特數(shù)Src_bits和剩下多少個宏塊Units決定
2)當(dāng)前宏塊所耗比特數(shù)的預(yù)測
DCT系數(shù)所耗比特數(shù)TBmb(qp)的預(yù)測
式中:Xmb(qp)為DCT系數(shù)量化后非零數(shù)的個數(shù);Ymb(qp)為DCT系數(shù)量化后零的游程長度和;Zmb(qp)為量化后AC系數(shù)非零數(shù)的和。
宏塊頭所耗比特數(shù)HBmb(qp)的預(yù)測
式中: MVn(qp)為運動向量的個數(shù); MVDnz(qp)為運動向量差值非零的個數(shù)。
計算預(yù)測的宏塊比特數(shù) TBmb(qp)+HBmb(qp)與宏塊分配的目標(biāo)比特數(shù)MBtbits兩者的差值
并與閾值 THMAX比較:若 abs(Difbits)>THMAX),DeltaQP=1,否則 DeltaQP=0;若(Difbits>0),QP+=DeltaQP,否則 QP-=DeltaQP。
可以通過調(diào)節(jié)閾值THMAX和系數(shù)a,b,c來實現(xiàn)在保證精度的情況下,充分利用比特數(shù)提升圖像質(zhì)量。
在JVT的校驗?zāi)P蚃M86上實現(xiàn)了筆者提出的碼率控制策略,并和JVT提案中的碼率控制策略JVT-G012進(jìn)行比較。實驗使用標(biāo)準(zhǔn)的CIF測試序列:news,bus,foreman,mobile,football和 tempete。 實驗條件按照實際應(yīng)用要求確立,幀率為25f/s(幀/秒),給定第一個I幀的QP為28,其他測試條件如表1。實驗結(jié)果如表2所示。
由表2可見,本文的碼率控制算法碼率控制得很好,PSNR值也很高。
表1 測試條件
表2 兩種算法碼率控制效果對比
為了更清楚地表明這兩種碼率控制的效果,圖1給出兩種方法下foreman和tempete各幀的PSNR,本算法PSNR變化比JVT-G012平緩,具有較高的主觀視覺質(zhì)量。圖2給出了兩種方法下foreman和tempete各幀的比特數(shù),本算法各幀所產(chǎn)生的比特數(shù)與目標(biāo)比特數(shù)的匹配情況比JVT-G012更好,更精確地計算出了達(dá)到目標(biāo)比特數(shù)所需的量化級。
圖2 foreman和tempete序列兩種方法下的每幀比特數(shù)波動曲線比較
本文所述碼率控制算法先用前一宏塊的量化參數(shù)進(jìn)行模式判決和量化,然后使用量化之后的信息估計當(dāng)前宏塊有可能產(chǎn)生的比特數(shù),因為是利用當(dāng)前宏塊量化后的信息來估計當(dāng)前宏塊有可能產(chǎn)生的比特數(shù),估計準(zhǔn)確性比較高。而且本算法只是利用已有的信息進(jìn)行簡單的線性運算來判斷當(dāng)前宏塊量化參數(shù)是否發(fā)生變化,然后在極少量化參數(shù)發(fā)生變化的宏塊中用新的量化參數(shù)重新確定系數(shù)λ,重新進(jìn)行模式判決和量化,計算復(fù)雜度低,大大加快了編碼速度。本算法是一種建立在簡單率失真模型基礎(chǔ)上的宏塊級算法。該算法充分利用了宏塊的實際編碼特性,在保證碼率控制準(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.