<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 模擬技術 > 設計應用 > H.264視頻編碼基本知識

          H.264視頻編碼基本知識

          作者: 時間:2011-04-23 來源:網(wǎng)絡 收藏

          一、 視頻編碼技術的發(fā)展歷程

             視頻編碼技術基本是由ISO/IEC制定的MPEG-x和ITU-T制定的H.26x兩大系列視頻編碼國際標準的推出。從H.261視頻編碼建議,到H.262/3、MPEG-1/2/4等都有一個共同的不斷追求的目標,即在盡可能低的碼率(或存儲容量)下獲得盡可能好的圖像質量。而且,隨著市場對圖像傳輸需求的增加,如何適應不同信道傳輸特性的問題也日益顯現(xiàn)出來。于是IEO/IEC和ITU-T兩大國際標準化組織聯(lián)手制定了視頻新標準H.264來解決這些問題。
          H.261是最早出現(xiàn)的視頻編碼建議,目的是規(guī)范ISDN網(wǎng)上的會議電視和可視電話應用中的視頻編碼技術。它采用的算法結合了可減少時間冗余的幀間預測和可減少空間冗余的DCT變換的混合編碼方法。和ISDN信道相匹配,其輸出碼率是p×64kbit/s。p取值較小時,只能傳清晰度不太高的圖像,適合于面對面的電視電話;p取值較大時(如 p>6),可以傳輸清晰度較好的會議電視圖像。H.263 建議的是低碼率圖像壓縮標準,在技術上是H.261的改進和擴充,支持碼率小于64kbit/s的應用。但實質上H.263以及后來的H.263+和H.263++已發(fā)展成支持全碼率應用的建議,從它支持眾多的圖像格式這一點就可看出,如Sub-QCIF、QCIF、CIF、4CIF甚至16CIF等格式。

          MPEG-1標準的碼率為1.2Mbit/s左右,可提供30幀CIF(352×288)質量的圖像,是為CD-ROM光盤的視頻存儲和播放所制定的。MPEG-l標準視頻編碼部分的基本算法與H.261/H.263相似,也采用運動補償?shù)膸g預測、二維DCT、VLC游程編碼等措施。此外還引入了幀內(nèi)幀(I)、預測幀(P)、雙向預測幀(B)和直流幀(D)等概念,進一步提高了編碼效率。在MPEG-1的基礎上,MPEG-2標準在提高圖像分辨率、兼容數(shù)字電視等方面做了一些改進,例如它的運動矢量的精度為半像素;在編碼運算中(如運動估計和DCT)區(qū)分"幀"和"場";引入了編碼的可分級性技術,如空間可分級性、時間可分級性和信噪比可分級性等。近年推出的MPEG-4標準引入了基于視聽對象(AVO:Audio-Visual Object)的編碼,大大提高了視頻通信的交互能力和編碼效率。 MPEG-4中還采用了一些新的技術,如形狀編碼、自適應DCT、任意形狀視頻對象編碼等。但是MPEG-4的基本視頻編碼器還是屬于和H.263相似的一類混合編碼器。

          總之,H.261建議是視頻編碼的經(jīng)典之作,H.263是其發(fā)展,并將逐步在實際上取而代之,主要應用于通信方面,但H.263眾多的選項往往令使用者無所適從。MPEG系列標準從針對存儲媒體的應用發(fā)展到適應傳輸媒體的應用,其核心視頻編碼的基本框架是和H.261一致的,其中引人注目的MPEG-4的"基于對象的編碼"部分由于尚有技術障礙,目前還難以普遍應用。因此,在此基礎上發(fā)展起來的新的視頻編碼建議H.264克服了兩者的弱點,在混合編碼的框架下引入了新的編碼方式,提高了編碼效率,面向實際應用。同時,它是兩大國際標準化組織的共同制定的,其應用前景應是不言而喻的。


          二、 H.264介紹
             H.264是ITU-T的VCEG(視頻編碼專家組)和ISO/IEC的MPEG(活動圖像編碼專家組)的聯(lián)合視頻組(JVT:joint video team)開發(fā)的一個新的數(shù)字視頻編碼標準,它既是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月正式發(fā)布。

          H.264和以前的標準一樣,也是DPCM加變換編碼的混合編碼模式。但它采用"回歸基本"的簡潔設計,不用眾多的選項,獲得比H.263++好得多的壓縮性能;加強了對各種信道的適應能力,采用"網(wǎng)絡友好"的結構和語法,有利于對誤碼和丟包的處理;應用目標范圍較寬,以滿足不同速率、不同解析度以及不同傳輸(存儲)場合的需求;它的基本系統(tǒng)是開放的,使用無需版權。

          在技術上,H.264標準中有多個閃光之處,如統(tǒng)一的VLC符號編碼,高精度、多模式的位移估計,基于4×4塊的整數(shù)變換、分層的編碼語法等。這些措施使得H.264算法具有很的高編碼效率,在相同的重建圖像質量下,能夠比H.263節(jié)約50%左右的碼率。H.264的碼流結構網(wǎng)絡適應性強,增加了差錯恢復能力,能夠很好地適應IP和無線網(wǎng)絡的應用。

          三、 H.264的技術亮點

          1、分層設計

             H.264的算法在概念上可以分為兩層:視頻編碼層(VCL:Video Coding Layer)負責高效的視頻內(nèi)容表示,網(wǎng)絡提取層(NAL:Network Abstraction Layer)負責以網(wǎng)絡所要求的恰當?shù)姆绞綄?shù)據(jù)進行打包和傳送。在VCL和NAL之間定義了一個基于分組方式的接口,打包和相應的信令屬于NAL的一部分。這樣,高編碼效率和網(wǎng)絡友好性的任務分別由VCL和NAL來完成。

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

          NAL負責使用下層網(wǎng)絡的分段格式來封裝數(shù)據(jù),包括組幀、邏輯信道的信令、定時信息的利用或序列結束信號等。例如,NAL支持視頻在電路交換信道上的傳輸格式,支持視頻在Internet上利用RTP/UDP/IP傳輸?shù)母袷健AL包括自己的頭部信息、段結構信息和實際載荷信息,即上層的VCL數(shù)據(jù)。(如果采用數(shù)據(jù)分割技術,數(shù)據(jù)可能由幾個部分組成)。

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

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

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

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

          3、4×4塊的整數(shù)變換

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

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

          4、統(tǒng)一的VLC

          H.264中熵編碼有兩種方法,一種是對所有的待編碼的符號采用統(tǒng)一的VLC(UVLC :Universal VLC),另一種是采用內(nèi)容自適應的二進制算術編碼(CABAC:Context-Adaptive Binary Arithmetic Coding)。CABAC是可選項,其編碼性能比UVLC稍好,但計算復雜度也高。UVLC使用一個長度無限的碼字集,設計結構非常有規(guī)則,用相同的碼表可以對不同的對象進行編碼。這種方法很容易產(chǎn)生一個碼字,而解碼器也很容易地識別碼字的前綴,UVLC在發(fā)生比特錯誤時能快速獲得重同步。

          5、幀內(nèi)預測

          在先前的H.26x系列和MPEG-x系列標準中,都是采用的幀間預測的方式。在H.264中,當編碼Intra圖像時可用幀內(nèi)預測。對于每個4×4塊(除了邊緣塊特別處置以外),每
          個像素都可用17個最接近的先前已編碼的像素的不同加權和(有的權值可為0)來預測,即此像素所在塊的左上角的17個像素。顯然,這種幀內(nèi)預測不是在時間上,而是在空間域上進行的預測編碼算法,可以除去相鄰塊之間的空間冗余度,取得更為有效的壓縮。

          如圖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類不同的模式,但色度的幀內(nèi)預測只有1類模式。

          6、面向IP和無線環(huán)境

          H.264 草案中包含了用于差錯消除的工具,便于壓縮視頻在誤碼、丟包多發(fā)環(huán)境中傳輸,如移動信道或IP信道中傳輸?shù)慕研浴?

          為了抵御傳輸差錯,H.264視頻流中的時間同步可以通過采用幀內(nèi)圖像刷新來完成,空間同步由條結構編碼(slice structured coding)來支持。同時為了便于誤碼以后的再同步,在一幅圖像的視頻數(shù)據(jù)中還提供了一定的重同步點。另外,幀內(nèi)宏塊刷新和多參考宏塊允許編碼器在決定宏塊模式的時候不僅可以考慮編碼效率,還可以考慮傳輸信道的特性。

          除了利用量化步長的改變來適應信道碼率外,在H.264中,還常利用數(shù)據(jù)分割的方法來應對信道碼率的變化。從總體上說,數(shù)據(jù)分割的概念就是在編碼器中生成具有不同優(yōu)先級的視頻數(shù)據(jù)以支持網(wǎng)絡中的服務質量QoS。例如采用基于語法的數(shù)據(jù)分割(syntax-based data partitioning)方法,將每幀數(shù)據(jù)的按其重要性分為幾部分,這樣允許在緩沖區(qū)溢出時丟棄不太重要的信息。還可以采用類似的時間數(shù)據(jù)分割(temporal data partitioning)方法,通過在P幀和B幀中使用多個參考幀來完成。

          在無線通信的應用中,我們可以通過改變每一幀的量化精度或空間/時間分辨率來支持無線信道的大比特率變化??墒牵诙嗖サ那闆r下,要求編碼器對變化的各種比特率進行響應是不可能的。因此,不同于MPEG-4中采用的精細分級編碼FGS(Fine Granular Scalability)的方法(效率比較低),H.264采用流切換的SP幀來代替分級編碼。

          四、 H.264的性能比較

          TML-8為H.264的測試模式,用它來對H.264的視頻編碼效率進行比較和測試。測試結果所提供的PSNR已清楚地表明,相對于MPEG-4(ASP:Advanced Simple Profile)和H.263++(HLP:High Latency Profile)的性能,H.264的結果具有明顯的優(yōu)越性。

          H.264的PSNR比MPEG-4(ASP)和H.263++(HLP)明顯要好,在6種速率的對比測試中,H.264的PSNR比MPEG-4(ASP)平均要高2dB,比H.263(HLP)平均要高3dB。6個測試速率及其相關的條件分別為:32 kbit/s速率、10f/s幀率和QCIF格式;64 kbit/s速率、15f/s幀率和QCIF格式;128kbit/s速率、15f/s幀率和CIF格式;256kbit/s速率、15f/s幀率和QCIF格式;512 kbit/s速率、30f/s幀率和CIF格式;1024 kbit/s速率、30f/s幀率和CIF格式。



          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();