DVR的核心技術的新突破--H.264

javaprogramers發表於2006-05-17
在短短的幾年裡就成為了全球安防產業最受矚目的產品明星,極大的推動了安防產業數字化的程式。而作為DVR技術的核心,視訊編碼技術的發展更是日新月異,不斷的在安防產業掀起一波又一波新的技術革命,MPEG-4的出現掀起了一次技術革命,H.264以其較MPEG-4更高的視訊壓縮比和更強的網路傳輸功能無疑會引發另一場新的改革浪潮.
   
     視訊編碼技術的發展歷程
   
     自上個世紀80年代以來,ISO/IEC制定的MPEG-x和ITU-T制定的H.26x兩大系列視訊編碼國際標準的推出,開創了視訊通訊和儲存應用的新紀元。從H.261視訊編碼建議,到H.262/3、MPEG-1/2/4等都有一個共同的不斷追求的目標,即在儘可能低的位元速率(或儲存容量)下獲得儘可能好的影像質量。而且,隨著市場對影像傳輸需求的增加,如何適應不同通道傳輸特性的問題也日益顯現出來。於是IEO/IEC和ITU-T兩大國際標準化組織聯手製定了視訊新標準H.264來解決這些問題.
   
     H.261是最早出現的視訊編碼建議,目的是規範ISDN網上的會議電視和可視電話應用中的視訊編碼技術。它採用的演算法結合了可減少時間冗餘的幀間預測和可減少空間冗餘的DCT變換的混合編碼方法。和ISDN通道相匹配,其輸出位元速率是p64kbit/s。p取值較小時,只能傳清晰度不太高的影像,適合於面對面的電視電話;p取值較大時(如p>6),可以傳輸清晰度較好的會議電檢視像。H.263 建議的是低位元速率影像壓縮標準,在技術上是H.261的改進和擴充,支援位元速率小於64kbit/s的應用。但實質上H.263以及後來的H.263+和H.263++已發展成支援全位元速率應用的建議,從它支援眾多的影像格式這一點就可看出,如Sub-QCIF、QCIF、CIF、4CIF甚至16CIF等格式.
   
     MPEG-1標準的位元速率為1.2Mbit/s左右,可提供30幀CIF(352288)質量的影像,是為CD-ROM光碟的視訊儲存和播放所制定的。MPEG-l標準視訊編碼部分的基本演算法與H.261/H.263相似,也採用運動補償的幀間預測、二維DCT、VLC遊程編碼等措施。此外還引入了幀內幀(I)、預測幀(P)、雙向預測幀(B)和直流幀(D)等概念,進一步提高了編碼效率。在MPEG-1的基礎上,MPEG-2標準在提高影像解析度、相容數字電視等方面做了一些改進,例如它的運動向量的精度為半畫素;在編碼運算中(如運動估計和DCT)區分“幀”和“場”;引入了編碼的可分級性技術,如空間可分級性、時間可分級性和訊雜比可分級性等。近年推出的MPEG-4標準引入了基於視聽物件(AVO:Audio-Visual Object)的編碼,大大提高了視訊通訊的互動能力和編碼效率。 MPEG-4中還採用了一些新的技術,如形狀編碼、自適應DCT、任意形狀視訊物件編碼等。但是MPEG-4的基本視訊編碼器還是屬於和H.263相似的一類混合編碼器.
   
     總之,H.261建議是視訊編碼的經典之作,H.263是其發展,並將逐步在實際上取而代之,主要應用於通訊方面,但H.263眾多的選項往往令使用者無所適從。MPEG系列標準從針對儲存媒體的應用發展到適應傳輸媒體的應用,其核心視訊編碼的基本框架是和H.261一致的,其中引人注目的MPEG-4的“基於物件的編碼”部分由於尚有技術障礙,目前還難以普遍應用。因此,在此基礎上發展起來的新的視訊編碼建議H.264克服了兩者的弱點,在混合編碼的框架下引入了新的編碼方式,提高了編碼效率,面向實際應用。同時,它是兩大國際標準化組織的共同制定的,其應用前景應是不言而喻的.
   
     JVT的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和以前的標準一樣,也是DPCM加變換編碼的混合編碼模式。但它採用“迴歸基本”的簡潔設計,不用眾多的選項,獲得比H.263++好得多的壓縮效能;加強了對各種通道的適應能力,採用“網路友好”的結構和語法,有利於對誤碼和丟包的處理;應用目標範圍較寬,以滿足不同速率、不同解析度以及不同傳輸(儲存)場合的需求;它的基本系統是開放的,使用無需版權.
   
     在技術上,H.264標準中有多個閃光之處,如統一的VLC符號編碼,高精度、多模式的位移估計,基於44塊的整數變換、分層的編碼語法等。這些措施使得H.264演算法具有很的高編碼效率,在相同的重建影像質量下,能夠比H.263節約50%左右的位元速率。H.264的碼流結構網路適應性強,增加了差錯恢復能力,能夠很好地適應IP和無線網路的應用.
   
     H.264的技術亮點
   
     (1) 分層設計
   
     H.264的演算法在概念上可以分為兩層:視訊編碼層(VCL:Vide 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) 44塊的整數變換
   
     H.264與先前的標準相似,對殘差採用基於塊的變換編碼,但變換是整數操作而不是實數運算,其過程和DCT基本相似。這種方法的優點在於:在編碼器中和解碼器中允許精度相同的變換和反變換,便於使用簡單的定點運算方式。也就是說,這裡沒有“反變換誤差”。變換的單位是44塊,而不是以往常用的88塊。由於用於變換塊的尺寸縮小,運動物體的劃分更精確,這樣,不但變換計算量比較小,而且在運動物體邊緣處的銜接誤差也大為減小。為了使小尺寸塊的變換方式對影像中較大面積的平滑區域不產生塊之間的灰度差異,可對幀內巨集塊亮度資料的16個44塊的DC係數(每個小塊一個,共16個)進行第二次44塊的變換,對色度資料的4個44塊的DC係數(每個小塊一個,共4個)進行22塊的變換.
   
     H.264為了提高位元速率控制的能力,量化步長的變化的幅度控制在12.5%左右,而不是以不變的增幅變化。變換系數幅度的歸一化被放在反量化過程中處理以減少計算的複雜性。為了強調彩色的逼真性,對色度係數採用了較小量化步長.
   
     (4) 統一的VLC
   
     H.264中熵編碼有兩種方法,一種是對所有的待編碼的符號採用統一的VLC(UVLC :Universal VLC),另一種是採用內容自適應的二進位制算術編碼(CABAC:Context-Adaptive Binar Arithmetic Coding)。CABAC是可選項,其編碼效能比UVLC稍好,但計算複雜度也高。UVLC使用一個長度無限的碼字集,設計結構非常有規則,用相同的碼錶可以對不同的物件進行編碼。這種方法很容易產生一個碼字,而解碼器也很容易地識別碼字的字首,UVLC在發生位元錯誤時能快速獲得重同步
   
     (5) 幀內預測
   
     在先前的H.26x系列和MPEG-x系列標準中,都是採用的幀間預測的方式。在H.264中,當編碼Intra影像時可用幀內預測。對於每個44塊(除了邊緣塊特別處置以外),每個畫素都可用17個最接近的先前已編碼的畫素的不同加權和(有的權值可為0)來預測,即此畫素所在塊的左上角的17個畫素。顯然,這種幀內預測不是在時間上,而是在空間域上進行的預測編碼演算法,可以除去相鄰塊之間的空間冗餘度,取得更為有效的壓縮.
   
     H.264 草案中包含了用於差錯消除的工具,便於壓縮視訊在誤碼、丟包多發環境中傳輸,如移動通道或IP通道中傳輸的健壯性.
   
     為了抵禦傳輸差錯,H.264視訊流中的時間同步可以通過採用幀內影像重新整理來完成,空間同步由條結構編碼(slic structured coding)來支援。同時為了便於誤碼以後的再同步,在一幅影像的視訊資料中還提供了一定的重同步點。另外,幀內巨集塊重新整理和多參考巨集塊允許編碼器在決定巨集塊模式的時候不僅可以考慮編碼效率,還可以考慮傳輸通道的特性.
   
     除了利用量化步長的改變來適應通道位元速率外,在H.264中,還常利用資料分割的方法來應對通道位元速率的變化。從總體上說,資料分割的概念就是在編碼器中生成具有不同優先順序的視訊資料以支援網路中的服務質量QoS。例如採用基於語法的資料分割(syntax-based data partitioning)方法,將每幀資料的按其重要性分為幾部分,這樣允許在緩衝區溢位時丟棄不太重要的資訊。還可以採用類似的時間資料分割(temporal data partitioning)方法,通過在P幀和B幀中使用多個參考幀來完成.
   
     在無線通訊的應用中,我們可以通過改變每一幀的量化精度或空間/時間解析度來支援無線通道的大位元率變化。可是,在多播的情況下,要求編碼器對變化的各種位元率進行響應是不可能的。因此,不同於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的結果具有明顯的優越性,
   
     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格式.
   
     實現難度
   
     對每個考慮實際應用的工程師而言,在關注H.264的優越效能的同時必然會衡量其實現難度。從總體上說,H.264效能的改進是以增加複雜性為代價而獲得的。目前全球也只有中國杭州海康威視數字技術有限公司在安防領域實現了H.264的實際應用,這一次我們走到了世界的前端!

相關文章