h264的码率控制 JVT-G012
開(kāi)始看h264的碼率控制,很多地方都提到?G012,拿來(lái)做為參考比較,看來(lái)很有必要研究清楚。
偶這人,E文文檔不翻譯的話(huà),看過(guò)就忘了,于是草草翻譯了下,因?yàn)椴淮蛩阕鯞幀,也不準(zhǔn)備在同一幀中使用不同的MB,這些地方就跳過(guò)了。
| Title: | Adaptive Basic Unit Layer Rate Control for JVT |
?
1.?????Introduction
?
編碼器使用碼率控制來(lái)控制編碼碼流變化的bit rate特性,以追求給定目標(biāo)bit rate下的高質(zhì)量解碼。碼率控制因此成為了編碼器的必要部分,并在標(biāo)準(zhǔn)中被廣泛的研究,比如MPEG2,MPEG4,H.263等等。因此,他也被JVT充分的研究。JVT的碼率控制與其他的標(biāo)準(zhǔn)相比更加困難。這是因?yàn)榱炕瘏?shù)被同時(shí)應(yīng)用到碼率控制算法(rate control algorithm)和碼率失真最優(yōu)化(rate distortion optimization RDO)中,這樣在進(jìn)行碼率控制研究的時(shí)候?qū)е铝说半u悖論:要對(duì)當(dāng)前幀的宏塊進(jìn)行RDO,需要用當(dāng)前幀或者宏塊的MAD決定每個(gè)宏塊的QP值。然而,當(dāng)前幀或宏塊的MAD只有在RDO之后才能算出。此外,可用的編碼信道帶寬也可能是固定的或是隨時(shí)間變化的。因此我們需要同時(shí)考慮固定bit rate(CBR)和可變bit rate(VBR)。然而現(xiàn)存的方案集中與CBR。
?
JVT通過(guò)引入基本單元的概念和線(xiàn)性模型,提出了一種自適應(yīng)基本單元層的碼率控制算法。這個(gè)基本單元可以是幀,條帶,或者宏塊MB,線(xiàn)性模型通過(guò)前一幀的相關(guān)位置的基本單元來(lái)預(yù)測(cè)當(dāng)前幀當(dāng)前基本單元的MAD。蛋雞悖論解決如下:當(dāng)前幀的目標(biāo)碼率采用漏桶(leaky bucket)模型和線(xiàn)性跟蹤理論根據(jù)預(yù)先定義的幀率,當(dāng)前緩沖區(qū)占有率,目標(biāo)緩沖區(qū)級(jí)別和可用的信道帶寬計(jì)算。因?yàn)槲淳幋a的基本單元MAD未知,所以剩余的bit平均分配到未編碼的當(dāng)前幀基本單元中。當(dāng)前基本單元的MAD靠線(xiàn)性模型使用前一幀相關(guān)位置的基本單元的MAD來(lái)預(yù)測(cè)。二次率失真模型(RD)用于計(jì)算相應(yīng)的QP,這個(gè)值用與當(dāng)前基本單元中每個(gè)宏塊的最小率失真(rate distortion optimization)我們同時(shí)也關(guān)注VBR。我們?cè)O(shè)計(jì)了虛擬緩沖區(qū)來(lái)根據(jù)信道帶寬的動(dòng)態(tài)變化而調(diào)整編碼程序。該緩沖區(qū)是不能向上或者向下溢出的。因?yàn)樵撃P秃吐┩澳P突疽恢?#xff0c;我們的碼率控制因此符合理想?yún)⒖冀獯a器(hypothetical reference decoder)
我們測(cè)試VBR和CBR來(lái)驗(yàn)證我們的設(shè)計(jì)。VBR比特率曲線(xiàn)是一條預(yù)定義的曲線(xiàn)。他表明實(shí)際生成的比特?cái)?shù)保持接近比特率曲線(xiàn)并且緩沖并沒(méi)有溢出。CBR中,我們的碼率控制方案的編碼效率與使用固定QP值的比較。編碼的計(jì)算率由我們的碼率控制方案指定。我們方案的編碼效率提高了1.02dB,所有測(cè)試序列的平均PSNR提高了0.32dB。我們也同使用AHM2.0軟件AHG推薦的F086進(jìn)行比較。PSNR提高了1.73dB,最高損失0.25dB,必須提及的是我們的方案是one pass而F086是two pass(two pass:采用2次編碼,每一幀的第一次編碼用來(lái)產(chǎn)生第2次編碼所需要的編碼策略)
?
在這一章中,我們提出關(guān)于H.264碼率控制的相關(guān)問(wèn)題。
2.1?The Chicken and Egg Dilemma
涉及碼率控制的MB編碼過(guò)程如下
因?yàn)镼P由碼率控制和RDO指定,這里就有個(gè)問(wèn)題,當(dāng)進(jìn)行碼率控制時(shí):為MB做RDO,MB的QP應(yīng)該首先使用MB的MAD決定。然而,當(dāng)前MB的MAD只有在做了RDO之后才能得到。這是一個(gè)典型的蛋雞悖論。因此,H.264的碼率控制要比MPEG2,MPEG4,H.263的更加困難。學(xué)習(xí)H.264的碼率控制,我們必須解決這個(gè)問(wèn)題去建立當(dāng)前MB的MAD。除此之外,我們也應(yīng)該計(jì)算當(dāng)前MB的目標(biāo)碼率和決定共享相同QP的連續(xù)MB數(shù)量。為了解決這些問(wèn)題,我們需要下列的預(yù)備知識(shí)。
2.2?Definition of A Basic Unit
基本單元的概念定義。
定義1:假設(shè)一幀由MB組成,基本單元定義為一組由MB組成的連續(xù)MB,其中屬于
在一幀中基本單元的總數(shù)如下
????????????????????????????????????????????????????????????????????????????????(1)
假設(shè)一個(gè)基本單元可以為MB,條帶,場(chǎng),幀。例如,一個(gè)QCIF大小的視頻序列?= 99.?根據(jù)定義1,?可以為 1, 3, 9, 11, 33, or 99. 相應(yīng)的?分別為 99, 33, 11, 9, 3, and 1,
這表明使用一個(gè)較大的基本單元,可以實(shí)現(xiàn)較高的PSNR值同時(shí)碼率波動(dòng)也就更大。換句話(huà)說(shuō),使用較小基本單元,碼率波動(dòng)會(huì)顯著變小,但是會(huì)輕微損失PSNR
2.3?A Fluid Flow Traffic Model
我們現(xiàn)在提出一種流體流動(dòng)通信模型(fluid flow traffic model)來(lái)計(jì)算當(dāng)前編碼幀的目標(biāo)bit。標(biāo)識(shí)一組圖片(GOP)的總幀數(shù)。表示在ithGOP中的jth幀,表示編碼jth幀后虛擬緩存的占有率。那么我們得到
????????????????????????????????????????(2)
?
其中A()是ithGOP中jth幀生成的比特?cái)?shù)。u()是可用信道帶寬,可以使VBR,也可以是CBR,是預(yù)定義的幀率,是緩存大小,其最大值由不同的level和profile決定。
注意初始緩沖區(qū)的值設(shè)置為,這個(gè)是可以設(shè)置為其他的值的,通常,初始緩沖區(qū)值可以設(shè)置為一個(gè)小的值如果比特波動(dòng)很小的話(huà)。
這個(gè)模型和漏桶模型[7]類(lèi)似,令,在我們的設(shè)計(jì)中,我們保證碼流包含在上述的虛擬緩存中,因此,當(dāng)碼流以參數(shù)?and輸入到HRD,中,HRD緩存是不會(huì)向上或者向下溢出的,換句話(huà)說(shuō),我們的碼率控制方案是符合HRD的。
2.4??A Linear Model for MAD Prediction
現(xiàn)在引入線(xiàn)性模型在當(dāng)前幀中預(yù)測(cè)當(dāng)前基本單元的MAD。
這個(gè)同樣是依賴(lài)于前一幀中相關(guān)位置的基本單元。假設(shè)當(dāng)前幀中當(dāng)前基本單元的預(yù)測(cè)MAD和前一幀相關(guān)位置基本單元的實(shí)際MAD分別表示為為?和,線(xiàn)性預(yù)測(cè)模型由下式給出
?????????????????????????????????????????????????????????????????????(3)
其中?和為預(yù)測(cè)模型的2個(gè)相關(guān)系數(shù)。?和的初始值分別設(shè)置為1和0,他們?cè)诿總€(gè)基本單元被編碼后更新。線(xiàn)性模型被用來(lái)解決蛋雞悖論。
使用基本單元的概念和模型(2)模型(3),我們方案的步驟如下:
1.?使用fluid traffic模型(2)和線(xiàn)性跟蹤理論[5]計(jì)算當(dāng)前幀的目標(biāo)bit
2.??把剩余的bit平均分配給給當(dāng)前幀的未編碼基本單元。
3.?使用前一幀相關(guān)位置的基本單元的實(shí)際MAD通過(guò)線(xiàn)性模型(3)來(lái)預(yù)測(cè)當(dāng)前幀基本單元的MAD。
4.?使用二次RD模型計(jì)算相應(yīng)的參數(shù)
5.??使用來(lái)自step4的QP計(jì)算當(dāng)前基本單元每個(gè)MB的RDO
如果基本單元選擇為幀,那么我們的碼率控制方案由2層組成:GOP層和幀層。否則,應(yīng)該加上基本單元層碼率控制。他們會(huì)在下面詳細(xì)說(shuō)明。
?
?
以上內(nèi)容為轉(zhuǎn)載,個(gè)人接著翻譯以后的章節(jié),屬于原創(chuàng)了吧。
總結(jié)
以上是生活随笔為你收集整理的h264的码率控制 JVT-G012的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: C++静态成员和非静态成员的区别 及修饰
- 下一篇: Winsock属性 方法介绍