簡單了解一下H.264視頻編碼
自20世紀80年代以來,國際標準化組織/國際電工委員會制定的MPEG-x和國際電聯-T制定的H.26x兩大系列國際視頻編碼標準的推出,迎來了視頻通信和存儲應用的新時代。從H.261視頻編碼方案到H.262/3、MPEG-1/2/4等等,它們都有一個共同的目標,即以盡可能低的碼率(或存儲容量)獲得盡可能好的圖像質量此外,隨著市場對圖像傳輸需求的不斷增加,如何適應不同信道的傳輸特性的問題變得越來越明顯。因此,IEC國際電工委員會和國際電聯電信兩大國際標準化組織聯合制定了新的視頻標準H.264來解決這些問題
h.261是最早的視頻編碼方案。其目的是標準化視頻會議中的視頻編碼技術和綜合業務數字網上的視頻電話應用。它使用的算法結合了可以減少時間冗余的幀間預測的混合編碼方法和可以減少空間冗余的DCT變換。和輸出碼率當p值較小時,只能傳輸低清晰度的圖像,適用于面對面的電視和電話。當p值較大(例如p>6)時,可以傳輸具有更好清晰度的視頻會議圖像。H.263建議采用低比特率圖像壓縮標準,這在技術上是H.261的改進和擴展,支持比特率低于64千比特/秒的應用但本質上,h.263以及后來的h.263+和h.263++已經發展成為支持全碼率應用的方案。從支持多種圖像格式的事實可以看出,支持亞QCIF、QCIF、CIF、4CIF甚至16CIF等格式。
MPEG-1標準的碼率約為1.2兆比特/秒,可提供30幀CIF(352×288)質量圖像。它是為視頻存儲和光盤播放而設計的MPEG-1標準視頻編碼部分的基本算法與H.261/H.263相似,還采用了運動補償幀間預測、2D離散余弦變換、VLC游程編碼等措施。此外,還引入了幀內幀(1)、預測幀(P)、雙向預測幀(B)和直流幀(D)等概念,以進一步提高編碼效率。MPEG-2標準以MPEG-1為基礎,在提高圖像分辨率和與數字電視的兼容性方面做了一些改進。例如,它的運動矢量精度是半個像素。在編碼操作中(如運動估計和離散余弦變換),區分“幀”和“場”。介紹了編碼可伸縮性技術,如空間可伸縮性、時間可伸縮性和信噪比可伸縮性近年來引入的MPEG-4標準引入了基于音視頻對象的編碼,大大提高了視頻通信的交互能力和編碼效率。MPEG-4還采用了一些新技術,如形狀編碼、自適應離散余弦變換、任意形狀視頻對象編碼等然而,MPEG-4的基本視頻編碼器仍然屬于一種類似于H.263的混合編碼器
總之,H.261提案是視頻編碼的經典作品。h263是它的發展,并將在實踐中逐步取代它。它主要用于通信。然而,h263的眾多選項經常讓用戶不知所措。MPEG系列標準已經從存儲介質的應用發展到傳輸介質的應用。其核心視頻編碼的基本框架與H.261是一致的。MPEG-4引人注目的“基于對象的編碼”由于技術障礙仍然難以廣泛應用因此,在此基礎上開發的新視頻編碼方案H.264克服了兩者的不足,引入了混合編碼框架下的新編碼方法,提高了編碼效率,面向實際應用同時,它是由兩大國際標準化組織聯合制定的,其應用前景不言而喻
h264是國際電聯VCEG(視頻編碼專家組)聯合視頻組(JVT:聯合視頻組)和國際標準化組織/國際電工委員會MPEG(運動圖像編碼專家組)開發的一種新的數字視頻編碼標準。它不僅是國際電信聯盟的h264,也是國際標準化組織/國際電工委員會的MPEG-4的第10部分征求意見稿于1998年1月開始,初稿于1999年9月完成,測試模型TML-8于2001年5月制定,2002年6月第五次JVT會議通過了h.264FCD董事會它于2003年3月正式發行。和以前的標準一樣,
h264也是DPCM加變換編碼的混合編碼模式然而,它采用了“回歸基礎”的簡單設計,并且不需要許多選項來獲得比H.263++它增強了對各種信道的適應性,并采用了“網絡友好”的結構和語法,這有利于錯誤代碼和分組丟失的處理。應用目標范圍廣,可滿足不同速率、不同分辨率和不同傳輸(存儲)場合的要求。它的基本系統是開放的,使用它不需要版權。
技術上,H.264標準有很多閃光點,如統一的VLC符號編碼、高精度、多模式位移估計、基于4x4塊的整數變換、分層編碼語法等。這些措施使得H.264算法具有很高的編碼效率,在相同的重建圖像質量下,可以比H.263節省約50%的碼率。H.264的碼流結構具有很強的網絡適應性,增加了錯誤恢復能力,能夠很好地適應IP和無線網絡的應用h.264的主要技術亮點如下:
(1)分層設計
h.264的算法在概念上可以分為兩層:視頻編碼層(VCL)負責高效的視頻內容表示,網絡抽象層(nal)負責以網絡所需的適當方式打包和傳輸數據VCL和NAL之間定義了基于數據包的接口。數據包和相應的信令是NAL的一部分這樣,高編碼效率和網絡友好性的任務分別由VCL和NAL完成
VCL層包括基于塊的運動補償混合編碼和一些新特征像以前的視頻編碼標準一樣,H.264在草案中不包括預處理和后處理功能,這可以增加標準的靈活性。
nal負責使用底層網絡的分段格式封裝數據,包括成幀、邏輯信道信令、定時信息或序列結束信號的利用等。例如,NAL支持電路交換信道上的視頻傳輸格式,以及使用網絡傳輸協議(RTP/UDP/IP)的互聯網上的視頻傳輸格式。NAL包括它自己的報頭信息、段結構信息和實際有效載荷信息,即上層的VCL數據(如果使用數據分段技術,數據可能由幾個部分組成)
(2)高精度多模式運動估計
h264支持1/4或1/8像素精度的運動矢量6抽頭濾波器可用于以1/4像素精度降低高頻噪聲,更復雜的8抽頭濾波器可用于1/8像素精度的運動矢量。當執行運動估計時,編碼器還可以選擇“增強的”插值濾波器來改善預測效果在H.264的運動預測中,根據圖2,宏塊可以被分成不同的子塊,形成7種不同的塊大小模式這種靈活而詳細的多模式劃分更適合圖像中實際運動對象的形狀,并大大提高了運動估計的精度。這樣,每個宏塊中可以包括1、2、4、8或16個運動矢量
在H.264中,編碼器被允許使用一個以上的先前幀進行運動估計,這就是所謂的多幀參考技術。例如,剛剛編碼的2幀或3幀參考幀,編碼器將選擇能夠對每個目標宏塊給出更好預測的幀,并指示哪個幀用于對每個宏塊的預測
(3)4×4塊
h264的整數變換與以前的標準相似。殘差通過基于塊的變換進行編碼,但是該變換是整數運算而不是實數運算,其過程基本上類似于離散余弦變換這種方法的優點是編碼器和解碼器允許相同的精度變換和逆變換,使用簡單的定點操作方式方便。換句話說,沒有“逆變換誤差”轉換單位為4×4塊,而不是過去常用的8×8塊。隨著變換塊尺寸的減小,運動物體的分割更加精確,不僅變換計算比更小,而且運動物體邊緣的連接誤差也大大減小。為了小尺寸塊變換方法不在圖像中較大區域的平滑區域中的塊之間產生灰度差,幀內宏塊亮度數據的16個4×4塊(每個小塊一個,總共16個)的DC系數可以經歷第二個4×4塊變換,色度數據的4個4×4塊(每個小塊一個,總共4個)的DC系數可以經歷2×2塊變換
h264為了提高碼率控制能力,量化步長的變化被控制在大約12.5%,而不是恒定增加。在逆量化過程中處理變換系數幅度的歸一化,以降低計算復雜度。為了強調顏色的保真度,色度系數采用較小的量化步長。
(4)統一的VLC·
h·264熵編碼有兩種方法。一種是對所有要編碼的符號采用統一的VLC(UVLC:通用VLC),另一種是采用內容自適應二進制算術編碼(cabac:上下文自適應二進制算術編碼)CABAC是可選的,其編碼性能略好于UVLC,但其計算復雜度也很高。UVLC使用無限長的碼字集,設計結構非常規則,不同的對象可以用相同的碼表編碼。這種方法可以容易地生成碼字,并且解碼器可以容易地識別該字的前綴。當發生位錯誤時,UVLC可以快速獲得重新同步
圖3顯示了代碼字的語法這里,x0,x1,x2,...是INFO位,是0或1圖4列出了前9個碼字例如,數字4包含INFO01,它針對快速重新同步進行了優化,以防止出錯。
(5)幀內預測
在先前的H.26x系列和MPEG-x系列標準中,采用幀間預測在H.264中,當編碼幀內圖像時,幀內預測是可用的對于每個4x4塊(除了邊緣塊的特殊處理),每個像素可以通過17個最接近的先前編碼像素的不同加權和(一些權重可以是0),即該像素所在的塊的左上角的17個像素來預測顯然,這種幀內預測不是在時間上執行的,而是在空間域中執行的,這可以消除相鄰塊之間的空間冗余并實現更有效的壓縮。
如圖4,a,b,...4x4塊中的p是要預測的16個像素點,而a、b,...,p是編碼像素例如,點m的值可以由(j+2k+l+2)/4或(A+B+C+D+I+J+K+L)/8等來預測根據所選擇的預測參考點,有9種不同的亮度模式,但只有1種模式用于色度的幀內預測
(6)對于IP和無線環境,
草案h264包括用于消除錯誤的工具,以便于在錯誤代碼和容易丟包的環境中傳輸壓縮視頻,例如移動信道或IP信道中傳輸的魯棒性
為了抵抗傳輸誤差,H.264視頻流中的時間同步可以通過采用幀內圖像刷新來完成,空間同步由切片結構編碼來支持同時,為了便于誤碼后的再同步,在圖像的視頻數據中還提供了一定的再同步點。此外,幀內宏塊刷新和多參考宏塊允許編碼器在決定宏塊模式時不僅考慮編碼效率,還考慮傳輸信道特性
除了利用量化步長的變化來適應信道碼率之外,在H.264中,數據分割的方法經常被用來應對信道碼率的變化。一般來說,數據分段的概念是在編碼器中生成具有不同優先級的視頻數據,以支持網絡中的服務質量例如,采用基于語法的數據分區,根據數據的重要性將每一幀數據分成幾個部分,從而允許在緩沖區溢出時丟棄不太重要的信息。也可以采用類似的時間數據分割方法,該方法通過使用P幀和B幀中的多個參考幀來完成
在無線通信應用中,我們可以通過改變每幀的量化精度或空間/時間分辨率來支持無線信道中較大的比特率變化。然而,在多播的情況下,不可能要求編碼器響應變化的比特率。因此,與MPEG-4中采用的精細分級可伸縮性方法不同(效率相對較低),H.264使用流交換速度幀代替分級編碼
h264性能測試
tml-8是h264的測試模式,用于比較和測試h264的視頻編碼效率。測試結果提供的PSNR已經清楚地表明,H.264的結果比mpeg-4(ASP:高級簡單概要文件)和h.263++(HLP:高延遲概要文件)的性能具有明顯的優勢,如圖5所示
h264的PSNR明顯優于MPEG-4和h263++(HLP)。在6種速率的比較試驗中,h264的PSNR比MPEG-4高2dB,比h263++(HLP)高3dB六種測試速率及其相關條件是:32kb/s速率、10f/s幀速率和QCIF格式。64kbit/s速率、15f/s幀速率和QCIF格式;128千比特/秒速率、15f/秒幀速率和到岸價格格式;256kbit/s速率、15f/s幀速率和QCIF格式;512千比特/秒速率、30f/秒幀速率和到岸價格格式;1024千比特/秒速率、30f/秒幀速率和到岸價格格式