推 abun:這些我有去找資料研究過 現在還沒有市售卡可以全效能發揮H264 05/04 15:31
簡單的說就是請更換更快的CPU 更大的RAM
H264編碼格式介紹
一、前言
H.264標準是ITU-T的VCEG(視頻編碼專家組)和ISO/IEC的MPEG(活動圖像專家組)的聯
合視頻組(JVT,Joint Video Team)開發的標準,也稱為MPEG-4 Part 10,「高級視頻編
碼」。在相同的重建圖像質量下,H.264比H.263節約50%左右的碼率。因其更高的壓縮比
、更好的IP和無線網絡信道的適應性,在數字視頻通信和存儲領域得到越來越廣泛的應用
。同時也要注意,H.264獲得優越性能的代價是計算複雜度增加,據估計,編碼的計算複
雜度大約相當於H.263的3倍,解碼複雜度大約相當於H.263的2倍。以下介紹的是在H.264
標準中P楨的內部編碼宏模塊的預測方式。
H.264標準中的內部預測創造了一種從前面已編過碼的一幅或多幅圖像幀中預測新幀的模
型。此模型是通過在參考幀中替換樣本的方法做出來的(運動補償預測)。AVC編碼使用
基於塊的運動補償。從H.261標準制定以來,每一個主要的視頻標準都採用這個原理。
H.264與以往標準的重要區別是:支持一定範圍的圖像塊尺寸(可小到4x4)和更細的分像
素運動矢量(在亮度組件中為1/4像素)。
H.264具有較強的抗誤碼特性,可適應丟包率高、干擾嚴重的信道中的視頻傳輸。
H.264支持不同網絡資源下的分級編碼傳輸,從而獲得平穩的圖像質量。
H.264能適應於不同網絡中的視頻傳輸,網絡親和性好。
H.264的基本系統無需使用版權,具有開放的性質,能很好地適應IP和無線網絡的使用,
這對目前的因特網傳輸多媒體信息、移動網中傳輸寬帶信息等都具有重要的意義。
二、樹型構造的運動補償
AVC編碼支持從16x16到4x4範圍尺寸的運動補償塊,在這個範圍中亮度樣本可有多個選擇
。每個圖像宏模塊亮度組件可以按4種方式分開(如圖1所示):16x16、 16x8、8x16 和
8x8。每一個被分的子區是宏模塊的一部分。如果選擇了8x8的模式,每一個8x8模塊被按
4種模式分成多個子塊(如圖2所示):8x8、 8x4、4x8 和 4*4 (被稱作宏模塊子區)。這
種模塊區和模塊子區在每個宏模塊產生大量的組合。這種劃分宏模塊為各種尺寸的動態子
模塊的方法被稱作樹型運動補償。
每一個區和子區要求由各自的運動矢量描述。每一個運動矢量都要被編碼和發送;除此之
外,所選的區需在壓縮的比特流中編碼。選擇了大的區域意味著用少量的比特數據去描述
運動矢量和區域類型。然而,經過補償後的運動的畫面還有大量的運動細節描寫。選擇小
的區的劃分會在使用運動補償後產生少量的編碼。因此,選擇分區的尺寸大小具有顯著的
意義。總之,大的分區適合均勻的區域,小的分區適合描述細節。在宏模塊中每一個顯示
組件的分辨率是亮度組件的一半,每一個顯示被按同一方式分成亮度元素。
H.264與先前的標準相似,對殘差採用基於塊的變換編碼,但變換是整數操作而不是實數
運算,其過程和DCT基本相似。這種方法的優點在於:在編碼器中和解碼器中允許精度相
同的變換和反變換,便於使用簡單的定點運算方式。也就是說,這裡沒有「反變換誤差」
。 變換的單位是4x4塊,而不是以往常用的8x8塊。由於用於變換塊的尺寸縮小,運動物
體的劃分更精確,這樣,不但變換計算量比較小,而且在運動物體邊緣處的銜接誤差也大
為減小。為了使小尺寸塊的變換方式對圖像中較大面積的平滑區域不產生塊之間的灰度差
異,可對幀內宏塊亮度數據的16個4x4塊的DC係數(每個小塊一個,共16個)進行第二次
4x4塊的變換,對色度數據的4個4x4塊的DC係數(每個小塊一個,共4個)進行2x2塊的變
換。
H.264為了提高碼率控制的能力,量化步長的變化的幅度控制在12.5%左右,而不是以不變
的增幅變化。變換係數幅度的歸一化被放在反量化過程中處理,以減少計算的複雜性。為
了強調彩色的逼真性,對色度係數採用了較小量化步長。
三、分像素運動矢量
在每一幀的內部大塊區域編碼中可通過參照幀中相同區域的編碼預測。兩個相對比區域(
運動矢量)所具有的漂移,像素分辨率在像素位置參考圖中不存在,並且用內部和臨近的
樣本創造他們。圖3給出了1個例子,一個4X4的子區在現有幀中從臨近的參考圖的相應區
域中預測出來,如果運動矢量的水平和垂直參數是一個完整的相關樣本,在實際存在的參
照塊(灰色點)產生,如果一個或兩個矢量元素是片斷值,在參考幀(白點)調整樣本和
內部插入的預測樣本(灰點)產生。
圖3整數和分數樣本預測
在H.264中採用1/4像素或者1/8像素的運動估計,即真正的運動矢量位移可能是以1/4或者
1/8像素為基本單位的。顯然,運動矢量位移的精度越高,則幀間剩餘誤差就越小,傳輸
碼率就越低,即壓縮比就越高。
H.264採用了6階FIR濾波器的內插獲得1/2像素位置值。當1/2像素值獲得後, 1/4像素值
可通過線性內插獲得, 對於4:1:1的視頻格式,亮度信號的1/4 像素精度對應於色度部分
的1/8像素的運動矢量,因此需要對色度信號進行1/8像素的內插運算。
理論上,如果將運動補償的精度增加一倍(例如從整像素精度提高到1/2像素精度),可
有0.5bit/Sample的編碼增益,但實際驗證發現在運動矢量精度超過1/8像素後,系統基本
上就沒有明顯增益了,因此,在H.264中,只採用了1/4像素精度的運動矢量模式,而不是
採用1/8像素的精度。
分像素運動矢量補償與整像素運動矢量補償相比,前者顯著改善了編碼複雜性方面的花費
,1/4像素的準確度大大超過1/2像素準確度產生的內插分像素樣本。內插分像素是這樣產
生的:在參考幀的亮度組件中,第一個半像素樣本產生方式如圖4所示。在這個圖中,整
數像素樣本顯示為陰灰色,每一個半像素樣本調整成2個整數樣本像素,整數像素樣本內
插入用6個限幅相位濾波器,這樣是比較複雜的(例如和雙線性比較),而半像素樣本產
生更準確的數據,因此它具有更好的補償特性。
一旦半像素樣本可用,就會通過線性插補產生1/4像素位置。圖5所示,兩個縱向或橫向的
半或整取樣形成1/4像素位置(如圖5中的a、c、I、k和d、f、n、q),這些1/4像素位置
在相鄰取樣間被內插值替換。
剩餘的1/4像素位置(圖5中的e、g、p和r)由處於對角位置的一對半像素樣本間線性地以
內插值替換。例如,e在b和h間以內插值替換。
組件中的1/4像素分辨率運動矢量需要色度組件中的第八像素分辨率矢量。在每一個色度
組件中,以內插值替換的樣本將在整數取樣間的1/8間隔產生。在此情況下,將使用線性
插補來產生每一個1/8像素色度取樣(如圖6所示)。每一個子像素位置a是相鄰整數像素
位置A、B、C和D線性組合而成的。
四、運動矢量預測
如果對每個分區的運動矢量進行編碼,就會產生大量的數據,尤其是在選擇了較小的分區
尺寸時。相鄰分區的運動矢量是緊密相關的,每個運動矢量可由相鄰的已編碼的分區預測
。形成預測運動矢量的方法依賴於運動補償分區的尺寸和相鄰矢量的有效性,並概括如下
(P區中的宏塊)。
假定E為當前的宏塊、宏塊分區或子分區,A為E左側的分區或子分區,B是E上方的分區或
子分區,C是E右上方的分區或子分區。如果在E的左側出現多於1個的分區,那麼這些分區
中最高的部分將按A選擇;如果在E的上方出現多於1個的分區,那麼這些分區中最左側的
部分將會按B選擇。如圖7說示,當所有的分區都具有同樣的尺寸時(這裡為16*16)如何
進行相鄰分區的選擇。圖8表示的是,當相鄰分區與當前分區E具有不同尺寸時如何進行預
測分區的選擇。
說明:
(1)對於已傳送的分區,不包括16*8和8*16的分區尺寸:MVp是分區A、B、C的運動矢量的
中間部分;
(2)對於16*8的分區:上方的16*8的分區的MVp是由B預測而來,下方的16*8的分區的MVp是
由A預測而來。
(3)對於8*16的分區:上方的8*16的分區的MVp是由A預測而來,下方的8*16的分區的MVp是
由C預測而來。
(4)對於跳過的宏塊:一個16*16矢量MVp將如同(1)中所述的情況產生。(例如,就像塊以
16*16Inter模式進行編碼)。
如果圖中顯示的一個或更多先前已傳輸的塊不可用的話(如在當前的圖像或塊區之外),
那麼MVp的選擇也應做相應的改變。
在解碼器中,預測的矢量MVp以同樣的方式形成,並被加上以被解碼的矢量偏差MVD。對於
一個跳過的宏塊,將沒有被解碼的矢量,因而運動補償宏塊要依靠大量的MVp來產生。
五、應用前景
H.264/MPEG-4的應用範圍是非常廣闊的,它可以適用於多種網絡,其高效的編碼性能,
H.264/MPEG-4可滿足多種應用的需求,目前主要應用在以下領域;基於電纜、衛星、
Modem、DST等信道的廣播;視頻數據在光學或磁性設備上的存儲,基於ISDN、以太網、
DSL無線及移動網絡的公話服務、視頻流服務、彩信服務等,除了以上介紹的應用,基於
H.264/MPEG-4的平台,還會擁現很多新的應用。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.132.117.195