馮振
摘要:H.264作為新一代視頻編碼標準,因其具有優異的壓縮性能和良好的網絡親和性成為時下最重要的視頻編碼標準,是視頻通信系統應用中必不可少的組成部分。本文研究了H.264/AVC的GOP層、幀層和基本單元層碼率控制算法,并介紹了H.264算法的一些改進模型。
關鍵詞:碼率控制;碼率分配;編碼模式中圖分類號:G633.34文獻標識碼:B文章編號:1672-1578(2016)08-0393-011.引言
H.264/AVC是新一代視頻編碼標準,它充分考慮了編碼效率和網絡傳輸,采用了整型DCT變換、先進的幀內預測、基于上下文的自適應算術編碼、1/4象素精度的運動估計、7種不同尺寸的塊匹配模式等先進技術,使H.264具有很高的編碼效率,特別適合于帶寬受限或存儲容量受限的視頻應用系統。碼率控制的目的是使碼率滿足信道和存儲媒體要求,并盡可能地提高視頻質量。
一般在視頻標準產生后,碼率控制都會得到廣泛的研究,如針對MPEG-2、MPEG-4、H.263等標準分別提出的TM5、VM8、TMN8碼率控制算法。然而,這些算法都不能直接應用于H.264標準,這是因為H.264標準在碼率控制算法以及率失真優化(Rate Control Optimization,RDO)中都使用了量化參數,這就導致了在進行碼率控制時出現了蛋雞悖論:對當前幀的宏塊進行率失真優化時,需要先通過當前幀或當前宏塊的平均絕對差(Mean Absolute Difference,MAD)決定每個宏塊的量化參數,而當前幀或宏塊的MAD僅在率失真優化后才能得到。H.264的提案JVT-G012提出用流量往返模型來給每個基本單元分配目標比特數,并在宏塊層編碼采用二次率失真函數計算量化參數的算法,用此量化參數來進行模式選擇和編碼。
2.H.264碼率控制算法
JVT-G012采用了TM5的比特分配方案和VM8可擴展的碼率控制思想,由圖像組(GOP)層、幀層、基本單元層3部分組成,采用適合于低比特率視頻應用的流量控制模型,首先計算出目標比特數,進而調整量化參數。
2.1GOP層碼率控制:
首先分配當前GOP 的目標比特:
式中 Bc(ni,j)代表編碼第i個GOP第j幀后的虛擬緩存器占有情況,Ngop代表GOP幀數,ni,j (i =1,2...., j= 1,2,...,Ngop)表示第i個GOP的第j幀,A(ni,j)是編碼第i個GOP的第j幀產生的比特數, 是幀率,ni,j表示第i個GOP的第j幀時的信道帶寬。
設第i個GOP開始時分配的比特數為:
考慮到帶寬的波動, 在每一幀圖像編碼后,GOP中剩余幀的目標比特數由下式更新:
然后確定I幀和第1個P幀的QP(可以憑經驗給定,也可根據每個像素需要的比特數計算) 。最后就是不斷循環幀層的碼率控制,直到這個GOP 結束。
2.2幀層碼率控制。幀層的比特數分配是根據GOP 的結構和幀類型來進行的。一般來說,I幀分配最多的比特數,P幀分配次多的比特數,B幀分配較少的比特數。使用線性跟蹤理論,分配給第i個GOP的第j幀的目標比特數f(ni,j)是由目標緩沖區滿溢程度、幀率、可用信道帶寬和實際緩沖區占用程度定義的。得到當前P幀的目標比特數后,利用二次率失真模型和MAD線性預測模型計算出的,為了獲取連續幀之間的平滑視覺效果還需要對進行校正,量化參數用于計算當前幀中每個宏塊的RDO,通過下式得到編碼模式
該階段主要完成三個任務:更新MAD線性預測模型中的a1和a2,二次R-D模型參數和確定是否有需要跳幀。編完一幀后,更新MAD線性預測模型中的a1和a2和二次R-D模型參數。在編碼完一幀后,實際生成的比特數a(ni,j)加入到當前Buffer。
2.3基本單元層碼率控制
這是 H.264/AVC中特有的步驟,只有當基本單元不是幀時,才會有這一步驟。
基本單元層碼率控制采用是是率失真模型,根據幀層碼率控制確定的該幀圖像的輸出比特數,給圖像各部分選擇合適的量化參數。
與幀層碼率控制類似,先給基本單元分配編碼比特數,由于未編碼的基本單元的MAD未知,所以平均分配剩余比特給未編碼基本單元。基本單元層的碼率控制要選擇一幀中的所有基本單元的量化參數值,使產生的編碼比特數接近幀的目標比特數f(ni,j),算法描述如下:首先確定當前基本單元的紋理比特數,通過線性模型,利用先前幀相同位置基本單元的MAD預測當前基本單元的MAD;然后通過二次R-D模型計算當前基本單元的量化參數,并對當前基本單元的所有宏塊進行率失真優化;最后更新當前幀的可用比特數和當前幀未編碼的基本單元數;編碼完當前幀,更新參數,該參數為前一幀的所有基本單元的量化參數的平均值。
3.結束語
隨著H.264的不斷改進和推廣,其碼率控制的算法也在不斷改進更新。主要包括考慮編碼器端的編碼參數(如量化參數、編碼模式或直接影響比特流的參數等)的率失真控制模型,結合信源信道失真和緩沖狀態的碼率控制模型,考慮解碼端反饋信息的控制模型等。H.264采用了多種改進編碼效率的技術,針對不同的應用可以選擇不同的技術,其碼率控制模型的建立也應該結合實際應用做出調整,而不是一定要建立一個適應各種場合的控制模型。
參考文獻:
[1]胡旭.H.264碼率控制算法的研究[D]. 太原理工大學 2013
[2]韓崢,唐昆,崔慧娟.基于H.264的碼率控制算法[J].