天天看點

H.264 碼率控制 VBR CBR

一、引言

到目前為止,視訊編碼标準通常采用去除時空域相關性的幀内/幀間預測、離散餘弦變換量化和熵編碼技術,以達到較高的編碼效率。對視訊通信而言,由于通信信道帶寬有限,需對視訊編碼碼率進行控制,來保證編碼碼流的順利傳輸和信道帶寬的充分利用。針對不同的應用場合,學者們提出了多種碼率控制(RateControl)政策。其中,實時編碼碼率控制方法主要有兩種:用先前宏塊編碼産生的比特數來預測目前宏塊編碼産生比特數,或者通過視訊編碼率失真函數來預測目前宏塊編碼産生的比特數。

碼率控制算法[1]就是動态調整編碼器參數,得到目标比特數。它為視訊序列中的圖像組GOP、圖像或者子圖像配置設定一定的比特。現有的碼率控制算法主要是通過調整離散餘弦變換的量化參數大小輸出目标碼率。實際上,量化參數(QP)反映了空間細節壓縮情況,如QP小,大部分的細節都會被保留;QP增大,一些細節丢失,碼率降低,但圖像失真加強和品質下降。也就是說,QP和比特率成反比的關系,而且随着視訊源複雜度的提高,這種反比關系會更明顯。

碼率控制有兩種模式:VBR和CBR,即可變比特控制和固定比特控制。如圖1(a)所示,VBR模式是一種開環處理,輸入為視訊源和一個QP值。由于實際視訊序列中的圖像複雜度是不斷變化的,細節多少、運動快慢等等,比特率也相應變化,不穩定。如圖(b)所示,CBR模式是一種閉環處理,輸入為視訊源和目标比特。它根據對源複雜度估計、解碼緩沖的大小及網絡帶寬估計動态調整QP,得到符合要求的碼率。

二、H.264碼率控制結構

作為新一代的視訊壓縮編碼标準,H.264對多編碼模式、編碼參數自适應選擇、上下文自适應熵編碼、多參考幀的靈活選擇、高精度預測、去方塊濾波以及抗誤碼能力等方面進行了精雕細刻,采取了一系列切合實際的技術措施,大大提高了編碼效率和網絡自适應能力。

但H.264标準草案并沒有很好地研究RC,主要精力放在了編碼碼流及解碼方法上。它将QP同時用于碼率控制算法和率失真優化,導緻了蛋雞悖論:為了計算目前幀中宏塊的RDO,需利用目前幀或宏塊的MAD預測每個宏塊的QP,而每個目前幀或宏塊的MAD隻有在RDO後才能計算出。

H.264碼率控制方法的提案主要有兩個[2]:JVT-F086中MPEG-2TM5改進版本及JVT-G012中提出用流量往返模型來配置設定每個基本單元目标比特數,并在宏塊層編碼采用二次率失真函數計算量化參數的算法。JVT-G012還比較了這兩種算法,認為其算法優于F086算法。

本節主要介紹H.264的碼率控制結構,并與MPEG-2的控制模型相比較。

如圖2所示,H.264碼率控制的主要部分類似于其他RC方案[1]。圖2隻是一個概念性的結構,并不是其軟體的實際反映,如P幀和B幀需分别處理,一些估計是前面值的平均等等。

1. 碼率量化模型 Rate-Quantization Model

RC算法的核心是一個定量的描述QP、實際比特率和編碼複雜度代理的關系的模型。比特率和複雜度與殘差有關,QP隻能影響變換殘差資訊的細節,對包含頭資訊、預測資料、運動矢量資訊的比特流沒有直接影響。預測誤差的平均殘差絕對值(MeanAverage Difference ,MAD)被引用,用來估計複雜度。

2. 複雜度估計Complexity Estimation

MAD是預測器精度和幀内預測情形下臨近圖像時間相似度的逆操作。MAD可以在對目前圖像編碼完以後進行估計,但是,在QP選擇以後再編碼一次,負荷太重。相反可以假設MAD随圖像變化而變化,可根據前一圖像的實際值估計而得。但該假設在場景切換時失效。

3. QP限制QP-Limiter

閉環控制系統須能夠保證穩定性和視覺變化最小。對一些複雜度快速改變的序列,QP變化顯著,須設定以碼率限制器來限制圖像的QP變化不超過±2。

4. 虛拟緩存模型Virtual Buffer Model

解碼器都有一個緩存來平滑碼率變換和資料的到達時間。相應編碼器産生的比特流須滿足解碼器的限制,是以用一個虛拟緩存模型來仿真實際解碼器的滿度。

虛拟緩存滿度的改變即編碼成流的總比特數的差異。緩存滿度的下屆為0,上界為緩存容量。使用者需根據解碼器支援的級别設定緩存容量和初始值。

5. QP初始化QP Initializer

QP須在視訊序列的開始初始化,并人為輸入初值,但更好的方法是根據每個像素的比特數估計,并可根據QP和DemandedBitsPerPixel表查找。

6. GOP比特配置設定GOP Bit Allocation

根據需求的比特率和虛拟緩存的目前滿度,計算GOP的目标碼率,I圖像和第一個P圖像的QP。

7. 基本單元比特配置設定Basic Unit Bit Allocation

如果基本單元小于圖像,圖2則分為兩層:圖像層和基本單元層。對H.264而言,重點是計算每個存儲圖像(通常為P圖像)的QP。嚴格地講H.264是允許B圖像用作參考的,隻是通常不用。非存儲圖像(通常為B圖像)則通過鄰近P圖像的QP内插或偏移得出。首先,考慮到圖像的MAD,可為緩存滿度設定一目标級。接着,利用該級别,計算圖像的目标比特數。

與MPEG-2的TM5模型相比,類似之處有:虛拟緩存的設立,GOP和圖像層的目标比特的計算,為每個基本單元生成QP等。不同之處有:基本單元是宏塊,且同一圖像中的不同宏塊的QP可能相差很大;I/P/B三幀之間隻是目标比特配置設定的不同,其餘處理類似;MPEG-2預測模式沒有H.264的多樣性。由于其沒有進階的幀内預測,也沒有必要對關聯QP和殘差時那麼嚴格;宏塊級的空間複雜度由源活動性估計而得。忽略複雜度是否由MV和殘差資料展現;對圖像配置設定比特,需考慮圖像類型、GOP結構、需要的比特率,而非圖像的複雜度。但在圖像中,緩存滿度和相關的空間活動性用來配置設定圖像比特等。

三、H.264碼率控制算法

如上所述,H.264碼率控制方案主要有JVT-F086和JVT-G012提出的兩種。JVT-G012通過引入基本單元和線性模型的概念,提出一種自适應基本單元層碼率控制方案。基本單元可能是一幀、片或者一個宏塊。線性模型用于預測目前基本單元的MAD,它是通過前一幀相應位置的基本單元得到。

蛋雞悖論解決如下:目前幀的目标比特率根據預先定義的幀率、目前緩沖容量、目标緩沖級别和可利用信道帶寬,利用漏鬥模型和線性跟蹤理論計算得出。剩餘比特配置設定給目前幀未編碼基本單元。目前基本單元的MAD利用前一幀相同位置基本單元的MAD實際值線性預測而得。相應的QP通過一個二次RD模型獲得。該方案同樣适用于VBR情形。該方案利用一個虛拟緩存,根據信道帶寬的動态特征,來幫助調節編碼操作。該緩存既不上溢也不下溢。由于該模型類似于漏鬥模型,該RC算法與HRD是一緻的。

為了驗證該方案,JVT-G012在VBR和CBR兩種情形下進行實驗。VBR的比特率曲線是一預先确定的曲線,即實際産生的比特接近于比特率曲線且緩存不上溢和下溢。CBR情形下,與QP固定的編碼器比較了編碼效率。目标比特率由以固定QP編碼測試序列産生。計算出的碼率由該方案編碼産生。該方案編碼效率上升1.02dB,所有測試序列的平均PSNR改善0.32dB。并利用軟體AHM2.0和F086提出的方案進行了比較。PSNR改善了最高達1.73dB,平均達0.5dB。且該方案隻一個通道而F086是兩個通道。

四、結束語

随着H.264的不斷改進和推廣,其碼率控制的算法也在不斷改進更新。比如HeZhihai等[3]提出線性率失真函數,通過變換量化後零值在變換系數中的比例(認為這對編碼碼率的影響最大)來選取量化參數,可避免蛋雞悖論;陳川等[4]提出聯合編碼模式選擇、信源的碼率控制算法;XueJinzhu[5]等提出基于塊活動性和緩沖狀态的算法;MaSiwei等[6]提出結合HRD的控制算法,并被H.264采用等等。還有學者提出考慮解碼端(通過其回報資訊控制碼率)的控制模型。上述的算法都在其實驗範圍内展現出了編碼效率的改進。可見,H.264碼率控制的改進有許多方向,主要有:考慮編碼器端的編碼參數(如量化參數、編碼模式或直接影響比特流的參數等)的率失真控制模型,結合信源信道失真和緩沖狀态的碼率控制模型,考慮解碼端回報資訊的控制模型等。

H.264采用了多種改進編碼效率的技術,針對不同的應用可以選擇不同的技術,其碼率控制模型的建立也應該結合實際應用做出調整,而不是一定要建立一個适應各種場合的控制模型。

繼續閱讀