天天看點

H.264 高度壓縮數字視訊編解碼器标準

H.264,同時也是MPEG-4第十部分,是由ITU-T視訊編碼專家組(VCEG)和ISO/IEC動态圖像專家組(MPEG)聯合組成的聯合視訊組(JVT,Joint Video Team)提出的高度壓縮數字視訊編解碼器标準。

H.264基本概況

  随着HDTV的興起,H.264這個規範頻頻出現在我們眼前,HD-DVD和藍光均計劃采用這一标準進行節目制作。而且自2005年下半年以來,無論是NVIDIA還是ATI都把支援H.264硬體解碼加速作為自己最值得誇耀的視訊技術。H.264到底是何方“神聖”呢?

  H.264是一種高性能的視訊編解碼技術。目前國際上制定視訊編解碼技術的組織有兩個,一個是“國際電聯(ITU-T)”,它制定的标準有H.261、H.263、H.263+等,另一個是“國際标準化組織(ISO)”它制定的标準有MPEG-1、MPEG-2、MPEG-4等。而H.264則是由兩個組織聯合組建的聯合視訊組(JVT)共同制定的新數字視訊編碼标準,是以它既是ITU-T的H.264,又是ISO/IEC的MPEG-4進階視訊編碼(Advanced Video Coding,AVC),而且它将成為MPEG-4标準的第10部分。是以,不論是MPEG-4 AVC、MPEG-4 Part 10,還是ISO/IEC 14496-10,都是指H.264。

  H.264最大的優勢是具有很高的資料壓縮比率,在同等圖像品質的條件下,H.264的壓縮比是MPEG-2的2倍以上,是MPEG-4的1.5~2倍。舉個例子,原始檔案的大小如果為88GB,采用MPEG-2壓縮标準壓縮後變成3.5GB,壓縮比為25∶1,而采用H.264壓縮标準壓縮後變為879MB,從88GB到879MB,H.264的壓縮比達到驚人的102∶1!H.264為什麼有那麼高的壓縮比?低碼率(Low Bit Rate)起了重要的作用,和MPEG-2和MPEG-4 ASP等壓縮技術相比,H.264壓縮技術将大大節省使用者的下載下傳時間和資料流量收費。尤其值得一提的是,H.264在具有高壓縮比的同時還擁有高品質流暢的圖像。

編輯本段H.264算法的優勢

  H.264是在MPEG-4技術的基礎之上建立起來的,其編解碼流程主要包括5個部分:幀間和幀内預測(Estimation)、變換(Transform)和反變換、量化(Quantization)和反量化、環路濾波(Loop Filter)、熵編碼(Entropy Coding)。

  H.264/MPEG-4 AVC(H.264)是1995年自MPEG-2視訊壓縮标準釋出以後的最新、最有前途的視訊壓縮标準。通過該标準,在同等圖象品質下的壓縮效率比以前的标準提高了2倍以上,是以,H.264被普遍認為是最有影響力的行業标準。

編輯本段H.264的發展曆史

  H.264是ITU-T的VCEG(視訊編碼專家組)和ISO/IEC的MPEG(活動圖像編碼專家組)的聯合視訊組(JVT:joint video team)開發的一個新的數字視訊編碼标準,它既是ITU-T的H.264,又是ISO/IEC的MPEG-4的第10 部分。1998年1月份開始草案征集,1999年9月,完成第一個草案,2001年5月制定了其測試模式TML-8,2002年6月的 JVT第5次會議通過了H.264的FCD闆。2003年3月正式釋出。

編輯本段H.264的進階技術背景

  H.264标準的主要目标是:與其它現有的視訊編碼标準相比,在相同的帶寬下提供更加優秀的圖象品質。

  而,H.264與以前的國際标準如H.263和MPEG-4相比,最大的優勢展現在以下四個方面:

  1. 将每個視訊幀分離成由像素組成的塊,是以視訊幀的編碼處理的過程可以達到塊的級别。

  2. 采用空間備援的方法,對視訊幀的一些原始塊進行空間預測、轉換、優化和熵編碼(可變長編碼)。

  3. 對連續幀的不同塊采用臨時存放的方法,這樣,隻需對連續幀中有改變的部分進行編碼。該算法采用運動預測和運動補償來完成。對某些特定的塊,在一個或多個已經進行了編碼的幀執行搜尋來決定塊的運動向量,并由此在後面的編碼和解碼中預測主塊。

  4. 采用剩餘空間備援技術,對視訊幀裡的殘留塊進行編碼。例如:對于源塊和相應預測塊的不同,再次采用轉換、優化和熵編碼。

編輯本段H.264的特征和進階優勢

  H.264是國際标準化組織(ISO)和國際電信聯盟(ITU)共同提出的繼MPEG4之後的新一代數字視訊壓縮格式,它即保留了以往壓縮技術的優點和精華又具有其他壓縮技術無法比拟的許多優點。

  1.低碼流(Low Bit Rate):和MPEG2和MPEG4 ASP等壓縮技術相比,在同等圖像品質下,采用H.264技術壓縮後的資料量隻有MPEG2的1/8,MPEG4的1/3。

  顯然,H.264壓縮技術的采用将大大節省使用者的下載下傳時間和資料流量收費。

  2.高品質的圖象:H.264能提供連續、流暢的高品質圖象(DVD品質)。

  3.容錯能力強:H.264提供了解決在不穩定網絡環境下容易發生的丢包等錯誤的必要工具。

  4.網絡适應性強:H.264提供了網絡抽象層(Network Abstraction Layer), 使得H.264的檔案能容易地在不同網絡上傳輸(例如網際網路,CDMA,GPRS,WCDMA,CDMA2000等)。

編輯本段H.264标準概述

  H.264和以前的标準一樣,也是DPCM加變換編碼的混合編碼模式。但它采用“回歸基本”的簡潔設計,不用衆多的選項,獲得比H.263++好得多的壓縮性能;加強了對各種信道的适應能力,采用“網絡友好”的結構和文法,有利于對誤碼和丢包的處理;應用目标範圍較寬,以滿足不同速率、不同解析度以及不同傳輸(存儲)場合的需求。

  技術上,它集中了以往标準的優點,并吸收了标準制定中積累的經驗。與H.263 v2(H.263+)或MPEG-4簡單類(Simple Profile)相比,H.264在使用與上述編碼方法類似的最佳編碼器時,在大多數位率下最多可節省50%的碼率。H.264在所有碼率下都能持續提供較高的視訊品質。H.264能工作在低延時模式以适應實時通信的應用(如視訊會議),同時又能很好地工作在沒有延時限制的應用,如視訊存儲和以伺服器為基礎的視訊流式應用。H.264提供包傳輸網中處理包丢失所需的工具,以及在易誤碼的無線網中處理比特誤碼的工具。

  在系統層面上,H.264提出了一個新的概念,在視訊編碼層(Video Coding Layer, VCL)和網絡提取層(Network Abstraction Layer, NAL)之間進行概念性分割,前者是視訊内容的核心壓縮内容之表述,後者是通過特定類型網絡進行遞送的表述,這樣的結構便于資訊的封裝和對資訊進行更好的優先級控制。H.264的系統編碼框圖如圖1所示。

編輯本段H.264标準的主要特點

  H264标準是由JVT(Joint Video Team,視訊聯合工作組)組織提出的新一代數字視訊編碼标準。JVT于2001年12月在泰國Pattaya成立。它由ITU-T的VCEG(視訊編碼專家組)和ISO/IEC的MPEG(活動圖像編碼專家組)兩個國際标準化組織的專家聯合組成。JVT的工作目标是制定一個新的視訊編碼标準,以實作視訊的高壓縮比、高圖像品質、良好的網絡适應性等目标H264标準。H264标準将作為MPEG-4标準的一個新的部分(MPEG-4 part.10)而獲得準許,是一個面向未來IP和無線環境下的新數字視訊壓縮編碼标準。

  H264标準的主要特點如下:

  1.更高的編碼效率:同H.263等标準的特率效率相比,能夠平均節省大于50%的碼率。

  2.高品質的視訊畫面:H.264能夠在低碼率情況下提供高品質的視訊圖像,在較低帶寬上提供高品質的圖像傳輸是H.264的應用亮點。

  3.提高網絡适應能力:H.264可以工作在實時通信應用(如視訊會議)低延時模式下,也可以工作在沒有延時的視訊存儲或視訊流伺服器中。

  4.采用混合編碼結構:同H.263相同,H.264也使用采用DCT變換編碼加DPCM的差分編碼的混合編碼結構,還增加了如多模式運動估計、幀内預測、多幀預測、基于内容的變長編碼、4x4二維整數變換等新的編碼方式,提高了編碼效率。

  5.H.264的編碼選項較少:在H.263中編碼時往往需要設定相當多選項,增加了編碼的難度,而H.264做到了力求簡潔的“回歸基本”,降低了編碼時複雜度。

  6.H.264可以應用在不同場合:H.264可以根據不同的環境使用不同的傳輸和播放速率,并且提供了豐富的錯誤處理工具,可以很好的控制或消除丢包和誤碼。

  7.錯誤恢複功能:H.264提供了解決網絡傳輸包丢失的問題的工具,适用于在高誤碼率傳輸的無線網絡中傳輸視訊資料。

  8.較高的複雜度:264性能的改進是以增加複雜性為代價而獲得的。據估計,H.264編碼的計算複雜度大約相當于H.263的3倍,解碼複雜度大約相當于H.263的2倍。

  H264标準各主要部分有Access Unit delimiter(通路單元分割符),SEI(附加增強資訊),primary coded picture(基本圖像編碼),Redundant Coded Picture(備援圖像編碼)。還有Instantaneous Decoding Refresh(IDR,即時解碼重新整理)、Hypothetical Reference Decoder(HRD,假想參考解碼)、Hypothetical Stream Scheduler(HSS,假想碼流排程器)。[1].

編輯本段H.264标準的關鍵技術

  1.幀内預測編碼

  幀内編碼用來縮減圖像的空間備援。為了提高H.264幀内編碼的效率,在給定幀中充分利用相鄰宏塊的空間相關性,相鄰的宏塊通常含有相似的屬性。是以,在對一給定宏塊編碼時,首先可以根據周圍的宏塊預測(典型的是根據左上角的宏塊,因為此宏塊已經被編碼處理),然後對預測值與實際值的內插補點進行編碼,這樣,相對于直接對該幀編碼而言,可以大大減小碼率。

  H.264提供6種模式進行4×4像素宏塊預測,包括1種直流預測和5種方向預測,如圖2所示。在圖中,相鄰塊的A到I共9個像素均已經被編碼,可以被用以預測,如果我們選擇模式4,那麼,a、b、c、d4個像素被預測為與E相等的值,e、f、g、h4個像素被預測為與F相等的值,對于圖像中含有很少空間資訊的平坦區,H.264也支援16×16的幀内編碼。 圖2 幀内編碼模式

  2.幀間預測編碼

  幀間預測編碼利用連續幀中的時間備援來進行運動估計和補償。H.264的運動補償支援以往的視訊編碼标準中的大部分關鍵特性,而且靈活地添加了更多的功能,除了支援P幀、B幀外,H.264還支援一種新的流間傳送幀——SP幀,如圖3所示。碼流中包含SP幀後,能在有類似内容但有不同碼率的碼流之間快速切換,同時支援随機接入和快速回放模式。圖3 SP-幀示意圖H.264的運動估計有以下4個特性。

  (1)不同大小和形狀的宏塊分割

  對每一個16×16像素宏塊的運動補償可以采用不同的大小和形狀,H.264支援7種模式,如圖4所示。小塊模式的運動補償為運動詳細資訊的處理提高了性能,減少了方塊效應,提高了圖像的品質。圖4 宏塊分割方法

  (2)高精度的亞像素運動補償

  在H.263中采用的是半像素精度的運動估計,而在H.264中可以采用1/4或者1/8像素精度的運動估值。在要求相同精度的情況下,H.264使用1/4或者1/8像素精度的運動估計後的殘差要比H.263采用半像素精度運動估計後的殘差來得小。這樣在相同精度下,H.264在幀間編碼中所需的碼率更小。

  (3)多幀預測

  H.264提供可選的多幀預測功能,在幀間編碼時,可選5個不同的參考幀,提供了更好的糾錯性能,這樣更可以改善視訊圖像品質。這一特性主要應用于以下場合:周期性的運動、平移運動、在兩個不同的場景之間來回變換錄影機的鏡頭。

  (4)去塊濾波器

  H.264定義了自适應去除塊效應的濾波器,這可以處理預測環路中的水準和垂直塊邊緣,大大減少了方塊效應。

  3.整數變換

  在變換方面,H.264使用了基于4×4像素塊的類似于DCT的變換,但使用的是以整數為基礎的空間變換,不存在反變換,因為取舍而存在誤差的問題,變換矩陣如圖5所示。與浮點運算相比,整數DCT變換會引起一些額外的誤差,但因為DCT變換後的量化也存在量化誤差,與之相比,整數DCT變換引起的量化誤差影響并不大。此外,整數DCT變換還具有減少運算量和複雜度,有利于向定點DSP移植的優點。

  4.量化

  H.264中可選32種不同的量化步長,這與H.263中有31個量化步長很相似,但是在H.264中,步長是以12.5%的複合率遞進的,而不是一個固定常數。

  在H.264中,變換系數的讀出方式也有兩種:之字形(Zigzag)掃描和雙掃描,如圖6所示。大多數情況下使用簡單的之字形掃描;雙掃描僅用于使用較小量化級的塊内,有助于提高編碼效率。圖6 變換系數的讀出方式

  5.熵編碼

  視訊編碼處理的最後一步就是熵編碼,在H.264中采用了兩種不同的熵編碼方法:通用可變長編碼(UVLC)和基于文本的自适應二進制算術編碼(CABAC)。

  在H.263等标準中,根據要編碼的資料類型如變換系數、運動矢量等,采用不同的VLC碼表。H.264中的UVLC碼表提供了一個簡單的方法,不管符号表述什麼類型的資料,都使用統一變字長編碼表。其優點是簡單;缺點是單一的碼表是從機率統計分布模型得出的,沒有考慮編碼符号間的相關性,在中高碼率時效果不是很好。

  是以,H.264中還提供了可選的CABAC方法。算術編碼使編碼和解碼兩邊都能使用所有句法元素(變換系數、運動矢量)的機率模型。為了提高算術編碼的效率,通過内容模組化的過程,使基本機率模型能适應随視訊幀而改變的統計特性。内容模組化提供了編碼符号的條件機率估計,利用合适的内容模型,存在于符号間的相關性可以通過選擇目前要編碼符号鄰近的已編碼符号的相應機率模型來去除,不同的句法元素通常保持不同的模型。

  四、H.264在視訊會議中的應用

  目前,大多數的視訊會議系統均采用H.261或H.263視訊編碼标準,而H.264的出現,使得在同等速率下,H.264能夠比H.263減小50%的碼率。也就是說,使用者即使是隻利用 384kbit/s的帶寬,就可以享受H.264下高達 768kbit/s的高品質視訊服務。H.264 不但有助于節省龐大開支,還可以提高資源的使用效率,同時令達到商業品質的視訊會議服務擁有更多的潛在客戶。

  目前,已經有少數幾家廠商的視訊會議産品支援H.264協定,廠商們緻力于普及H.264這個全新的業界标準。随着其它視訊會議方案廠商陸續效仿他們的做法,我們必将能全面體驗H.264視訊服務的優勢。

編輯本段H.264的技術亮點

  1、分層設計 H.264的算法在概念上可以分為兩層:視訊編碼層(VCL:Video Coding Layer)負責高效的視訊内容表示,網絡提取層(NAL:Network Abstraction Layer)負責以網絡所要求的恰當的方式對資料進行打包和傳送。在VCL和NAL之間定義了一個基于分組方式的接口,打包和相應的信令屬于NAL的一部分。這樣,高編碼效率和網絡友好性的任務分别由VCL和NAL來完成。

  VCL層包括基于塊的運動補償混合編碼和一些新特性。與前面的視訊編碼标準一樣,H.264沒有把前處理和後處理等功能包括在草案中,這樣可以增加标準的靈活性。

  NAL負責使用下層網絡的分段格式來封裝資料,包括組幀、邏輯信道的信令、定時資訊的利用或序列結束信号等。例如,NAL支援視訊在電路交換信道上的傳輸格式,支援視訊在Internet上利用RTP/UDP/IP傳輸的格式。NAL包括自己的頭部資訊、段結構資訊和實際載荷資訊,即上層的VCL資料。(如果采用資料分割技術,資料可能由幾個部分組成)。

  2、高精度、多模式運動估計

  H.264支援1/4或1/8像素精度的運動矢量。在1/4像素精度時可使用6抽頭濾波器來減少高頻噪聲,對于1/8像素精度的運動矢量,可使用更為複雜的8抽頭的濾波器。在進行運動估計時,編碼器還可選擇"增強"内插濾波器來提高預測的效果。

  在H.264的運動預測中,一個宏塊(MB)可以按圖2被分為不同的子塊,形成7種不同模式的塊尺寸。這種多模式的靈活和細緻的劃分,更切合圖像中實際運動物體的形狀,大大提高了運動估計的精确程度。在這種方式下,在每個宏塊中可以包含有1、2、4、8或16個運動矢量。

  在H.264中,允許編碼器使用多于一幀的先前幀用于運動估計,這就是所謂的多幀參考技術。例如2幀或3幀剛剛編碼好的參考幀,編碼器将選擇對每個目标宏塊能給出更好的預測幀,并為每一宏塊訓示是哪一幀被用于預測。

  3、4×4塊的整數變換

  H.264與先前的标準相似,對殘差采用基于塊的變換編碼,但變換是整數操作而不是實數運算,其過程和DCT基本相似。這種方法的優點在于:在編碼器中和解碼器中允許精度相同的變換和反變換,便于使用簡單的定點運算方式。也就是說,這裡沒有"反變換誤差"。 變換的機關是4×4塊,而不是以往常用的8×8塊。由于用于變換塊的尺寸縮小,運動物體的劃分更精确,這樣,不但變換計算量比較小,而且在運動物體邊緣處的銜接誤差也大為減小。為了使小尺寸塊的變換方式對圖像中較大面積的平滑區域不産生塊之間的灰階差異,可對幀内宏塊亮度資料的16個4×4塊的DC系數(每個小塊一個,共16個)進行第二次4×4塊的變換,對色度資料的4個4×4塊的DC系數(每個小塊一個,共4個)進行2×2塊的變換。

  H.264為了提高碼率控制的能力,量化步長的變化的幅度控制在12.5%左右,而不是以不變的增幅變化。變換系數幅度的歸一化被放在反量化過程中處理以減少計算的複雜性。為了強調彩色的逼真性,對色度系數采用了較小量化步長。

  4、統一的VLC

  H.264中熵編碼有兩種方法,一種是對所有的待編碼的符号采用統一的VLC(UVLC :Universal VLC),另一種是采用内容自适應的二進制算術編碼(CABAC:Context-Adaptive Binary Arithmetic Coding)。CABAC是可選項,其編碼性能比UVLC稍好,但計算複雜度也高。UVLC使用一個長度無限的碼字集,設計結構非常有規則,用相同的碼表可以對不同的對象進行編碼。這種方法很容易産生一個碼字,而解碼器也很容易地識别碼字的字首,UVLC在發生比特錯誤時能快速獲得重同步。

  5、幀内預測

  在先前的H.26x系列和MPEG-x系列标準中,都是采用的幀間預測的方式。在H.264中,當編碼Intra圖像時可用幀内預測。對于每個4×4塊(除了邊緣塊特别處置以外),每

  個像素都可用17個最接近的先前已編碼的像素的不同權重和(有的權值可為0)來預測,即此像素所在塊的左上角的17個像素。顯然,這種幀内預測不是在時間上,而是在空間域上進行的預測編碼算法,可以除去相鄰塊之間的空間備援度,取得更為有效的壓縮。

  如圖4所示,4×4方塊中a、b、...、p為16 個待預測的像素點,而A、B、...、P是已編碼的像素。如m點的值可以由(J+2K+L+2)/ 4 式來預測,也可以由(A+B+C+D+I+J+K+L)/ 8 式來預測,等等。按照所選取的預測參考的點不同,亮度共有9類不同的模式,但色度的幀内預測隻有1類模式。

  6、面向IP和無線環境

  H.264 草案中包含了用于差錯消除的工具,便于壓縮視訊在誤碼、丢包多發環境中傳輸,如移動信道或IP信道中傳輸的健壯性。

  為了抵禦傳輸差錯,H.264視訊流中的時間同步可以通過采用幀内圖像重新整理來完成,空間同步由條結構編碼(slice structured coding)來支援。同時為了便于誤碼以後的再同步,在一幅圖像的視訊資料中還提供了一定的重同步點。另外,幀内宏塊重新整理和多參考宏塊允許編碼器在決定宏塊模式的時候不僅可以考慮編碼效率,還可以考慮傳輸信道的特性。

繼續閱讀