H.264簡單總結

一、視頻信息和信號的特點

11直觀性

       利用人的視覺系統,直接獲取視頻信息

12確定性

       視頻信息只管具體,不易與其他內容混淆

13高效性

       利用視覺系統,人們可以並行的觀察圖像的各個象素,因此具有高效性。

14廣泛性

       視覺系統佔外界信息總量的70

15視頻信號的高帶款性

       視頻信息包含大量的變化的信息,信息量極大,傳輸網絡所需要的帶寬相對較大。

 

二、視頻壓縮的要求和可能性

21視頻壓縮編碼的目標

                由於視頻信息量大,傳輸帶寬高,就要求先對視頻源壓縮,然後傳輸,以便節約帶寬和存儲空間。

               1      視頻必須壓縮在一定的帶寬內,要保證足夠的壓縮比。

               2      視頻壓縮後,經恢復要保證一定的視頻質量

               3      視頻編碼器的實現方式應力求簡單、易實現、低成本、可靠性高。

22視頻壓縮的可能行

                1)時間相關行

                    在一組視頻序列中,相鄰相鄰兩幀只有極少的不同之處,這便是時間相關性。

               2)空間相關性

                    在同一幀中,相鄰象素之間有很大的相關性,兩象素越近,側相關性越強。

 

三、視頻編碼技術

31基本結構

       視頻編碼方式與採用的信源有關。根據採用的信源的模型,視頻編碼可以分爲兩大類:基於波形的編碼和基於內容的編碼。

32 基於波形的編碼

       如果採用一幅圖像由許多象素構成的信源模型,這種信源模型的參數就是象素的亮度和色度的幅度值,對這些參數進行編碼的技術即爲基於波形編碼。

       利用象素空間的相關性和幀間的時間相關性,採用預測編碼和變化編碼技術,減少視頻信號的相關性,從而顯著降低視頻序列的碼率,實現壓縮編碼的目標。

33基於內容的編碼

       如果採用一個分量有幾個物體構成的信源模型,這種信源模型的參數事各個物體的形狀,紋理,運動,對這些參數進行編碼的技術就是基於內容的編碼。

 

四、h264的應用

41 H. 264的技術特點可以歸納爲三個方面

       1)注重實用;

       2)注重對移動和IP網絡的適應;

       3)在混合編碼器的基本框架下,對其主要關鍵部件都做了重大改進,如多模式運動估計、幀內預測、多幀預測、基於內容的變長編碼、4X4二維整數變換等。

       4)在關注H. 264的優越性能的同時必然需要衡量其實現難度。從總體上說,H. 264性能的改進是以增加複雜性爲代價而獲得的。據估計,H. 264 編碼的計算複雜度大約相當於H. 2633倍,解碼複雜度大約相當於H. 2632.

42  h264應用可分爲3個級別:

       (1) 基本檔次:  (簡單版本, 應用面廣 , 支持幀內和幀間編碼,基於可變程度的熵編碼.)

                                 應用領域視頻會話,會議電視, 無線通信等實時通信.

        (2)主要檔次:  ( 採用了多項提高圖像質量和增加壓縮比的技術措施, 支持隔行視頻, 支持基於上下文的自適應的算術編碼.)

                                 應用領域數字廣播與數字視頻存儲.

       4)擴展檔次: 應用領域: 可用於各種網絡的視頻流傳輸,視頻點播

 

五、視頻編碼原理

51基本概念

             1)視頻編碼器能夠對一個圖像或者一個視頻序列進行壓縮,產生碼流。

 

             在上圖中,編碼器輸入的幀或場Fn,以宏塊爲單位被編碼器處理。

              如果採用幀間預測編碼:其預測值P,是由已編碼的圖像做參考,經運動補償得到的。預測圖像P和當前幀Fn相減,得到兩圖像的殘差值DnDn在經過轉換T,量化Q,去處空間冗餘,得到係數X,將X重排(使數據更加緊湊),熵編碼(加入運動矢量。。。一些圖像相關得信息),得到nal數據。

             再編碼器中有個重構的過程(解碼的過程),量化係數X,反量化,反變換,得到Dn’Dn’和預測圖像P相加,得到uFn’,再濾波得到Fn’Fn’就是Fn編碼再解碼後得圖像。

              如果採用幀內預測編碼:預測值P,是由當前片中,己編碼的宏塊預測得到的(亮度4×4或者16×16預測,色度8×8預測)。當前待處理的塊,減去預測值P,得殘差值DnDn在經過轉換T,量化Q,得到係數X,將X重排(使數據更加緊湊),熵編碼,得到nal數據。

             再重構的過程中,量化係數X,反量化,反變換,得到Dn’Dn’和預測圖像P相加得到當前宏塊編碼解碼後得值,該值可以用來做幀內預測的參考宏塊。

              編碼器要有重構機制的原因:重構過程,實質上是個解碼的過程,解碼後的圖像和源圖肯定有差別,我門利用解碼後的圖像做參考,就能夠和解碼器中保值一致,就能夠提高圖像的預測精度。(再解碼器中,是利用己解碼的圖像做參考,是從解碼的圖像預測出下一副圖像)

 

             2)視頻解碼器能夠對一個碼流解碼,長生和源圖或源視頻序列相近的圖像或視頻序列。如果解碼出的圖像和源圖是一樣的,這個編解碼過程是無損的,否則是有損。

 

                    解碼器的實現和編碼器的重構機制,是一樣的。

 

             3)場、幀、圖像

                    場:隔行掃描的圖像,偶數行成爲頂場行。奇數行成爲底場行。所有頂場行稱爲頂場。所有底場行稱爲底場。

                    幀:逐行掃描的圖像。

                    圖像:場和幀都可認爲是圖像。

             4)宏塊、片:

                    宏塊:一個宏塊由一個16×16亮度塊、一個8×8Cb和一個8×8Cr組成。

                    片:一個圖像可以劃分成一個或多個片,一個片由一個或多個宏塊組成。

52編碼數據格式

             521  h264支持420的連續或隔行視頻編碼解碼。

             522  h264的編碼格式

                           制定h264的主要目標有兩個:

                           1)得到高的視頻壓縮比

                           2)具有良好的網絡親和性,即可適應於各種傳輸網絡。

                           爲此,h264的功能分爲兩層,視頻編碼層(VCL)和網絡提取層(NAL

                           VCL數據即被壓縮編碼後的視頻數據序列。在VCL數據要封裝到NAL單元中之後,纔可以用來傳輸或存儲。NAL單元格式如下圖:

   

Nal

Rbsp

Nal

Rbsp

Nal

Rbsp

             523         h264碼流結構

53參考圖像

          H264爲提高精度,H264最多可從15個圖像總進行選擇,選出最佳的匹配圖

           優點:  大大提高預測精度

          缺點:    複雜度大爲增加

          參考圖像由參考列表(list0list1)管理,

          P幀有一個參考列表 list0

         B幀有兩個參考列表 list0 list 1

 

54幀內預測

         預測塊P是基於已編碼重建塊和當前塊形成的.

         對於亮度的預測:4×4亮度預測,16×16亮度預測

          對於色度象素預測:   8×8色度預測

        541  4×4亮度預測

                         4×4亮度預測9種預測模式

                           

                a)利用上面和左面的象素,對aq進行幀內4×4預測

 

                 b)幀內4×4預測的8個方向

      

      

      

      

模式

描述

模式 0 (垂直)

由上邊象素垂直推出相應象素值

模式 1 (水平)

由左邊象素水平推出相應象素值

模式 2 (DC)

由上邊及左邊平均值推出所有象素值

模式 3 (下左對角)

45度方向象素內插得出相應象素值

模式 4 (下右對角線)

45度方向象素內插得出相應象素值

模式 5 (右垂直)

26.6度方向象素值內插得出相應象素值

模式 6 (下水平)

26.6度方向象素值內插得出相應象素值

模式 7 (左垂直)

26.6度方向象素值內插得出相應象素值

模式 8 (上水平)

26.6度方向象素值內插得出相應象素值

      

 

9種預測模式計算產生的相應的預測塊(SAE 定義了每種預測的預測誤差),其中 SAE 最小的預測塊與當前塊最匹配

      

          542  16×16亮度預測模式―――共有4種預測模式

      

      

      

模式

描述

模式 0 (垂直)

由上邊象素推出相應象素值

模式 1 (水平)

由左邊象素推出相應象素值

模式 2 (DC)

由上邊和左邊象素平均值推出相應象素值

模式 3 (平面)

利用線性"plane"函數推出相應象素值,適用於亮度變化平緩區域

 

          543  8×8色度塊預測模式

                  4種預測模式,類似幀內16*16預測,只是編號不同

                  DC 爲模式 0, 水平爲模式 1, 垂直爲模式2, 平面爲模式 3

 

55 幀間預測

          H264幀間預測是利用已編碼的幀或場和基於塊的運動補償。在h264中,塊的尺寸更加靈活(16×164×4)。

        55基本概念

                     活動圖像臨近幀中的景物存在一定的相關性,因此將圖像分成若干塊或宏塊,並設法搜索出每個塊或宏塊在鄰近幀圖像中的位置,並得出兩者之間的空間位置的便宜量.得到的相對偏移量就是通常所指的運動矢量(MV).

到運動矢量的過程稱爲運動估計(ME).

 

       552樹狀運動補償

              每個宏塊(16×16)的亮度,可以按4種方式分割:116×16216×828×1648×88×8模式的子塊可以繼續劃分:18×824×828×444×4。這種分割的運動補償,稱爲樹狀運動補償。                                      

       樹狀運動補償,靈活和細緻的劃分,大提高了運動估計的精確程度

       塊的大小可變。在運動估計時,可以靈活地選擇塊的大小。在宏塊(MB)劃分上,H.264採用了16×616×88×168×8四種模式;當劃分爲8×8模式時,又可進一步採用8×44×84×4三種子宏塊劃分模式進一步劃分,這樣做既可以使運動物體的劃分更加精確,減小運動物體邊緣的銜接誤差,又可以減小變換過程中的計算量。當對較大的平滑區域採用Intra_16×16的幀間預測方式時,爲減小小尺寸變換帶來的塊間灰度差異,H.264採用了對亮度數據的164×4塊的DC係數進行第二次4×4變換,對色度數據的44×4塊的DC係數進行2×2變換的方式。

       553 運動矢量

       幀間編碼宏塊的每個子宏塊都是從參考圖像的某一相同尺寸區域進行預測得到的。兩者之間的差異(MV),對亮度成分採用1/4象素精度,色度1/8象素精度。

 

附錄:

264學習指南―――分三個階段學習

1、第一個階段:

學習H.264,首先要把最基本最必要的資料拿在手裏(//172.22.113.200/share/h264/H.264相關論文/其他/經典文章)。這些資料包括:標準文檔+測試模型+經典文章。首先看《H.264_MPEG-4Part 10 White Paper》,看完之後再看《Video coding using the H.264 MPEG-4 AVCcompression standard》和《Halsted.Press.H.264.And.MPEG-4.Video.Compression.Video.Coding.For.Next.Generation.Multimedia.eBook-LiB》,然後可以抽空看《Overview of the H.264_AVC Video Coding Standard.pdf》。這幾篇文章看完後,你應該對H.264的整體框架有個比較深入的瞭解了。前三篇文章可能需要花費你兩~三週的時間。

 

2、第二階段:

       看代碼。這個時候你最常用的工具就是標準文檔和測試模型(建議使用JM86)。看代碼也要先從整體框架入手。先搞懂H.264的整體框架在代碼裏是怎麼分佈的,一個功能模塊的前伸模塊和後繼模塊是什麼。也就是搞清楚整個代碼流程。這個階段對標準文檔的使用可能很少。

3、第三階段:

然後你找到一個自己感興趣的切入點,開始以此爲中心研究這個問題。你研究問題的時候應該是聯繫測試模型來研究,這個時候你就需要仔細看代碼中對這個問題的實現了。這個階段我絕對支持你一行行代碼跟蹤,一個參數一個參數地跟蹤。而代碼中不懂的地方可能需要查標準。這時你再來看標準文檔就有了針對性。也因爲能將標準文檔和代碼對應起來,從而看標準文檔也不覺得有太大困難,也能明白標準文檔說的是什麼問題,在測試模型中是如何通過代碼實現的。在這個階段中,會牽連到很多H.264的相關知識,這樣通過以點帶線,以線帶面。會對H.264的內容認識越來越多。而你也就找到了自己的方向。

==========【注意事項】==========

1、切忌將代碼和標準文檔獨立開看,否則,你的困難會很大。

2、對於剛開始接觸H.264的人,切忌直接看代碼和標準,哪怕是將標準和代碼結合起來看,你也會不太順利。換句話說:在沒有了解H.264整體框架之前,你最好什麼都不要做。

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章