ITU-T和ISO/IEC JTC1是目前國際上制定視頻編碼標準的正式組織,ITU-T的標準稱之為建議,并命名為H.26x系列,例如H.261、H.263等。ISO/IEC 的標準稱為MPEG-x,例如MPEG-1、MPEG-2、MPEG-4等。H.26x系列標準主要用于實時視頻通信,比如視頻會議、可視電話等;MPEG系列標準主要用于視頻存儲(DVD) 、視頻廣播和視頻流媒體(如基于Internet、 DSL的視頻、無線視頻等等)。除了聯合開發(fā)H.262/MPEG-2標準外,大多數情況下,這兩個組織獨立制定相關標準。自1997年,ITU-T VCEG與ISO/IEC MPEG再次合作,成立了Joint Video Team (JVT),致力于開發(fā)新一代的視頻編碼標準H.264。1998年1月,開始草案征集;1999年9月,完成了第一個草案;2001年5月,制定了其測 試模式TML-8;2002年6月,JVT第5次會議通過了H.264的FCD板;2002年12月,ITU-T在日本的會議上正式通過了H.264標 準,并于2003年5月正式公布了該標準。國際電信聯盟將該系統(tǒng)命名為H.264/AVC,國際標準化組織和國際電工委員會將其稱為14496-10 /MPEG-4 AVC。
H.264標準概述
H.264 和以前的標準一樣,也是DPCM加變換編碼的混合編碼模式。但它采用"回歸基本"的簡潔設計,不用眾多的選項,獲得比H.263++好得多的壓縮性能;加 強了對各種信道的適應能力,采用"網絡友好"的結構和語法,有利于對誤碼和丟包的處理;應用目標范圍較寬,以滿足不同速率、不同解析度以及不同傳輸(存 儲)場合的需求。技術上,它集中了以往標準的優(yōu)點,并吸收了標準制定中積累的經驗。與H.263 v2(H.263+)或MPEG-4 Simple Profile相比,H.264在使用與上述編碼方法類似的最佳編碼器時,在大多數碼率下最多可節(jié)省50%的碼率。H.264在所有碼率下都能持續(xù)提供較 高的視頻質量。H.264能工作在低延時模式以適應實時通信的應用(如視頻會議),同時又能很好地工作在沒有延時限制的應用,如視頻存儲和以服務器為基礎的視頻流式應用。H.264提供包傳輸網中處理包丟失所需的工具,以及在易誤碼的無線網中處理比特誤碼的工具。在系統(tǒng)層面上,H.264提出了一 個新的概念,在視頻編碼層(Video Coding Layer,VCL)和網絡提取層(Network Abstraction Layer,NAL)之間進行概念性分割,前者是視頻內容的核心壓縮內容之表述,后者是通過特定類型網絡進行遞送的表述,這樣的結構便于信息的封裝和對信息進行更好的優(yōu)先級控制。
H.264標準的關鍵技術
幀內預測編碼
幀內編碼用來縮減圖像的空間冗余。為了提高H.264幀內編碼的效率,在給定幀中充分利用相鄰宏塊的空間相關性,相鄰的宏塊通常含有相似的屬性。因此,在對一給定宏塊編碼時,首先可以根據周圍的宏塊預測(典型的是根據左邊和上邊的宏塊,因為這些宏塊已經被編碼處理),然后對預測值與實際值的差 值進行編碼,這樣,相對于直接對該幀編碼而言,可以大大減小碼率。
幀間預測編碼
幀間預測編碼利用連續(xù)幀中的時間冗余來進行運動估計和補償。H.264的運動補償支持以往的視頻編碼標準中的大部分關鍵特性,而且靈活地添加了更多的功能,除了支持P幀、B幀外,H.264還支持一種新的流間傳送幀--SP幀,碼流中包含SP幀后,能在有類似內容但有不同碼率的碼流之間快速切 換,同時支持隨機接入和快速回放模式。 H.264的運動估計有以下4個特性。
不同大小和形狀的宏塊分割
對每一個16×16像素宏塊的運動補償可以采用不同的大小和形狀,H.264支持7種模式。小塊模式的運動補償為運動詳細信息的處理提高了性能,減少了方塊效應,提高了圖像的質量。
高精度的亞像素運動補償
在 H.263中采用的是半像素精度的運動估計,而在H.264中可以采用1/4或者1/8像素精度的運動估值。在要求相同精度的情況下,H.264使用1 /4或者1/8像素精度的運動估計后的殘差要比H.263采用半像素精度運動估計后的殘差來得小。這樣在相同精度下,H.264在幀間編碼中所需的碼率更小。[nextpage]
多幀預測
H.264提供可選的多幀預測功能,在幀間編碼時,可選5個不同的參考幀,提供了更好的糾錯性能,這樣更可以改善視頻圖像質量。這一特性主要應用于以下場合:周期性的運動、平移運動、在兩個不同的場景之間來回變換攝像機的鏡頭。
去塊濾波器
H.264定義了自適應去除塊效應的濾波器,這可以處理預測環(huán)路中的水平和垂直塊邊緣,大大減少了方塊效應。
整數變換
在變換方面,H.264使用了基于4×4像素塊的類似于DCT的變換,但使用的是以整數為基礎的空間變換,不存在反變換因為取舍而存在誤差的問 題。與浮點運算相比,整數DCT變換會引起一些額外的誤差,但因為DCT變換后的量化也存在量化誤差,與之相比,整數DCT變換引起的量化誤差影響并不 大。此外,整數 DCT變換還具有減少運算量和復雜度,有利于向定點DSP移植的優(yōu)點。
量化
H.264 中可選32種不同的量化步長,這與H.263中有31個量化步長很相似,但是在H.264中,步長是以12.5%的復合率遞進的,而不是一個固定常 數。在H.264中,變換系數的讀出方式也有兩種:之字形(Zigzag)掃描和雙掃描。大多數情況下使用簡單的之字形掃描;雙掃描僅用于使用較 小量化級的塊內,有助于提高編碼效率。
熵編碼
視頻編碼處理的最后一步就是熵編碼,在H.264中采用了兩種不同的熵編碼方法:通用可變長編碼(UVLC)和基于文本的自適應二進制算術編碼 (CABAC)。在H.263等標準中,根據要編碼的數據類型如變換系數、運動矢量等,采用不同的VLC碼表。H.264中的UVLC碼表提供了 一個簡單的方法,不管符號表述什么類型的數據,都使用統(tǒng)一變字長編碼表。其優(yōu)點是簡單;缺點是單一的碼表是從概率統(tǒng)計分布模型得出的,沒有考慮編碼符號間 的相關性,在中高碼率時效果不是很好。因此,H.264中還提供了可選的CABAC方法。算術編碼使編碼和解碼兩邊都能使用所有句法元素(變換系 數、運動矢量)的概率模型。為了提高算術編碼的效率,通過內容建模的過程,使基本概率模型能適應隨視頻幀而改變的統(tǒng)計特性。內容建模提供了編碼符號的條件概率估計,利用合適的內容模型,存在于符號間的相關性可以通過選擇目前要編碼符號鄰近的已編碼符號的相應概率模型來去除,不同的句法元素通常保持不同的模 型。
H.264在DVR中的應用及發(fā)展趨勢
目前,很多DVR廠商都推出了H.264算法的DVR,有板卡,也有嵌入式。H.264對于安防行業(yè)還是一項嶄新的技術,有待于大家把它應用的各個產品中。但是,由于該算法的運算復雜度相較MPEG4或H.263+都大幅增加,因此對于DSP芯片的要求也很高??梢赃@樣說,目前標準的H.264 算法在普通的 DSP芯片上運行的成本相當高,因此市面上普遍的H.264算法基本上是經過簡化的H.264,有些甚至不是H.264。當然,并不是說H.264算法就 是好的,不是H.264的算法就不好。其實任何一種算法都有它的優(yōu)勢和弱勢。關鍵是看同樣的圖像質量下,哪種算法的碼率更低;或者同樣的碼率下,哪種算法 編碼解碼后的圖像質量更好。盡管H.264算法是當前安防行業(yè)的流行詞匯,但也還存在著很多技術問題,如各家的算法雖然都說是H.264,但是沒 有統(tǒng)一的標準,在解碼方面無法統(tǒng)一,特別是針對一些需要聯網的大型監(jiān)控系統(tǒng),由于前端兼容了各個廠家、各種類型的DVR,因此對于集中聯網和控制的要求更 高,技術難度也更大。在任何一個行業(yè),都需要有一定標準,即大家都要執(zhí)行的標準,H.264也一樣,未來的H.264應該也是會往統(tǒng)一標準這個方面發(fā)展, 相信不久的將來,將會出現成熟的標準H.264的ASIIC芯片,對于各種H.264算法標準的統(tǒng)一, ASIIC芯片會是比較好的解決方法。