(quan整理)
一、視頻信息和信號的特點 < type="text/javascript">< type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">?
1.1直觀性
?????? 利用人的視覺系統,直接獲取視頻信息
1.2確定性
?????? 視頻信息只管具體,不易與其他內容混淆
1.3高效性
?????? 利用視覺系統,人們可以并行的觀察圖像的各個象素,因此具有高效性。
1.4廣泛性
?????? 視覺系統占外界信息總量的70%
1.5視頻信號的高帶款性
?????? 視頻信息包含大量的變化的信息,信息量極大,傳輸網絡所需要的帶寬相對較大。
?
二、視頻壓縮的要求和可能性
2.1視頻壓縮編碼的目標
???????????????? 由于視頻信息量大,傳輸帶寬高,就要求先對視頻源壓縮,然后傳輸,以便節約帶寬和存儲空間。
??????????????? (1)?????? 視頻必須壓縮在一定的帶寬內,要保證足夠的壓縮比。
??????????????? (2)?????? 視頻壓縮后,經恢復要保證一定的視頻質量
??????????????? (3)?????? 視頻編碼器的實現方式應力求簡單、易實現、低成本、可靠性高。
2.2視頻壓縮的可能行
??????????????? (1)時間相關行
???????????????????? 在一組視頻序列中,相鄰相鄰兩幀只有極少的不同之處,這便是時間相關性。
??????????????? (2)空間相關性
???????????????????? 在同一幀中,相鄰象素之間有很大的相關性,兩象素越近,側相關性越強。
?
三、視頻編碼技術
3.1基本結構
?????? 視頻編碼方式與采用的信源有關。根據采用的信源的模型,視頻編碼可以分為兩大類:基于波形的編碼和基于內容的編碼。
3.2 基于波形的編碼
?????? 如果采用“一幅圖像由許多象素構成”的信源模型,這種信源模型的參數就是象素的亮度和色度的幅度值,對這些參數進行編碼的技術即為基于波形編碼。
?????? 利用象素空間的相關性和幀間的時間相關性,采用預測編碼和變化編碼技術,減少視頻信號的相關性,從而顯著降低視頻序列的碼率,實現壓縮編碼的目標。
3.3基于內容的編碼
??????? 如果采用一個分量有幾個物體構成的信源模型,這種信源模型的參數事各個物體的形狀,紋理,運動,對這些參數進行編碼的技術就是基于內容的編碼。
?
四、h264的應用
4.1 H. 264的技術特點可以歸納為三個方面
??????? (1)注重實用;
??????? (2)注重對移動和IP網絡的適應;
??????? (3)在混合編碼器的基本框架下,對其主要關鍵部件都做了重大改進,如多模式運動估計、幀內預測、多幀預測、基于內容的變長編碼、4X4二維整數變換等。
??????? (4)在關注H. 264的優越性能的同時必然需要衡量其實現難度。從總體上說,H. 264性能的改進是以增加復雜性為代價而獲得的。據估計,H. 264 編碼的計算復雜度大約相當于H. 263的3倍,解碼復雜度大約相當于H. 263的2倍.
4.2? h264應用可分為3個級別:
??????? (1) 基本檔次:? (簡單版本, 應用面廣 , 支持幀內和幀間編碼,基于可變程度的熵編碼.)
????????????????????????????????? 應用領域:? 視頻會話,會議電視, 無線通信等實時通信.
??????? (2) 主要檔次:? ( 采用了多項提高圖像質量和增加壓縮比的技術措施, 支持隔行視頻, 支持基于上下文的自適應的算術編碼.)
????????????????????????????????? 應用領域:? 數字廣播與數字視頻存儲.
?????? (4)擴展檔次: 應用領域: 可用于各種網絡的視頻流傳輸,視頻點播
?
五、視頻編碼原理
5.1基本概念
????????????? (1)視頻編碼器 能夠對一個圖像或者一個視頻序列進行壓縮,產生碼流。
?
????????????? 在上圖中,編碼器輸入的幀或場Fn,以宏塊為單位被編碼器處理。
????????????? 如果采用幀間預測編碼:其預測值P,是由已編碼的圖像做參考,經運動補償得到的。預測圖像P和當前幀Fn相減,得到兩圖像的殘差值Dn,Dn在經過轉換T,量化Q,去處空間冗余,得到系數X,將X重排(使數據更加緊湊),熵編碼(加入運動矢量。。。一些圖像相關得信息),得到nal數據。
????????????? 再編碼器中有個重構的過程(解碼的過程),量化系數X,反量化,反變換,得到Dn’,Dn’和預測圖像P相加,得到uFn’,再濾波得到Fn’,Fn’就是Fn編碼再解碼后得圖像。
????????????? 如果采用幀內預測編碼:預測值P,是由當前片中,己編碼的宏塊預測得到的(亮度4×4或者16×16預測,色度8×8預測)。當前待處理的塊,減去預測值P,得殘差值Dn,Dn在經過轉換T,量化Q,得到系數X,將X重排(使數據更加緊湊),熵編碼,得到nal數據。
????????????? 再重構的過程中,量化系數X,反量化,反變換,得到Dn’,Dn’和預測圖像P相加得到當前宏塊編碼解碼后得值,該值可以用來做幀內預測的參考宏塊。
????????????? 編碼器要有重構機制的原因:重構過程,實質上是個解碼的過程,解碼后的圖像和源圖肯定有差別,我門利用解碼后的圖像做參考,就能夠和解碼器中保值一致,就能夠提高圖像的預測精度。(再解碼器中,是利用己解碼的圖像做參考,是從解碼的圖像預測出下一副圖像)
?
????????????? (2)視頻解碼器 能夠對一個碼流解碼,長生和源圖或源視頻序列相近的圖像或視頻序列。如果解碼出的圖像和源圖是一樣的,這個編解碼過程是無損的,否則是有損。
?
???????????????????? 解碼器的實現和編碼器的重構機制,是一樣的。
?
????????????? (3)場 、幀、圖像
???????????????????? 場:隔行掃描的圖像,偶數行成為頂場行。奇數行成為底場行。所有頂場行稱為頂場。所有底場行稱為底場。
???????????????????? 幀:逐行掃描的圖像。
???????????????????? 圖像:場和幀都可認為是圖像。
????????????? (4)宏塊、片:
???????????????????? 宏塊:一個宏塊由一個16×16亮度塊、一個8×8Cb和一個8×8Cr組成。
???????????????????? 片:一個圖像可以劃分成一個或多個片,一個片由一個或多個宏塊組成。
5.2編碼數據格式
????????????? 5.2.1? h264支持4:2:0的連續或隔行視頻編碼解碼。
????????????? 5.2.2? h264的編碼格式
??????????????????????????? 制定h264的主要目標有兩個:
??????????????????????????? (1)得到高的視頻壓縮比
??????????????????????????? (2)具有良好的網絡親和性,即可適應于各種傳輸網絡。
??????????????????????????? 為此,h264的功能分為兩層,視頻編碼層(VCL)和網絡提取層(NAL)
??????????????????????????? VCL數據即被壓縮編碼后的視頻數據序列。在VCL數據要封裝到NAL單元中之后,才可以用來傳輸或存儲。NAL單元格式如下圖:
??? Nal頭 Rbsp Nal頭 Rbsp Nal頭 Rbsp
???????????? 5.2.3???????? h264碼流結構
5.3參考圖像
?????????? H264為提高精度,H264最多可從15個圖像總進行選擇,選出最佳的匹配圖
?????????? 優點:? 大大提高預測精度
?????????? 缺點:??? 復雜度大為增加
?????????? 參考圖像由參考列表(list0,list1)管理,
????????? P幀有一個參考列表 list0
????????? B幀有兩個參考列表 list0 和 list 1
?
5.4幀內預測
????????? 預測塊P是基于已編碼重建塊和當前塊形成的.
????????? 對于亮度的預測:4×4亮度預測,16×16亮度預測
????????? 對于色度象素預測:?? 8×8色度預測
???????? 5.4.1? 4×4亮度預測
????????????????????????? 4×4亮度預測 有9種預測模式
???????????????????????????
???????????????? (a)利用上面和左面的象素,對a~q進行幀內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 最小的預測塊與當前塊最匹配
??????
????????? 5.4.2? 16×16亮度預測模式―――共有4種預測模式
??????
??????
??????
模式 描述
模式 0 (垂直) 由上邊象素推出相應象素值
模式 1 (水平) 由左邊象素推出相應象素值
模式 2 (DC) 由上邊和左邊象素平均值推出相應象素值
模式 3 (平面) 利用線性"plane"函數推出相應象素值,適用于亮度變化平緩區域
?
????????? 5.4.3? 8×8色度塊預測模式
?????????????????? 4種預測模式,類似幀內16*16預測,只是編號不同
?????????????????? DC 為模式 0, 水平為模式 1, 垂直為模式2, 平面為模式 3
?
5.5 幀間預測
????????? H264幀間預測是利用已編碼的幀或場和基于塊的運動補償。在h264中,塊的尺寸更加靈活(16×16到4×4)。
???????? 5.5.1? 基本概念
????????????????????? 活動圖像臨近幀中的景物存在一定的相關性,因此將圖像分成若干塊或宏塊,并設法搜索出每個塊或宏塊在鄰近幀圖像中的位置,并得出兩者之間的空間位置的便宜量.得到的相對偏移量就是通常所指的運動矢量(MV).
到運動矢量的過程稱為運動估計(ME).
?
??????? 5.5.2樹狀運動補償
?????????????? 每個宏塊(16×16)的亮度,可以按4種方式分割:1個16×16,2個16×8,2個8×16,4個8×8。8×8模式的子塊可以繼續劃分:1個8×8,2個4×8,2個8×4,4個4×4。這種分割的運動補償,稱為樹狀運動補償。??????????????????????????????????????
?????? 樹狀運動補償,靈活和細致的劃分,大提高了運動估計的精確程度
?????? 塊的大小可變。在運動估計時,可以靈活地選擇塊的大小。在宏塊(MB)劃分上,H.264采用了16×6,16×8,8×16,8×8四種模式;當劃分為8×8模式時,又可進一步采用8×4,4×8,4×4三種子宏塊劃分模式進一步劃分,這樣做既可以使運動物體的劃分更加精確,減小運動物體邊緣的銜接誤差,又可以減小變換過程中的計算量。當對較大的平滑區域采用Intra_16×16的幀間預測方式時,為減小小尺寸變換帶來的塊間灰度差異,H.264采用了對亮度數據的16個4×4塊的DC系數進行第二次4×4變換,對色度數據的4個4×4塊的DC系數進行2×2變換的方式。
?????? 5.5.3 運動矢量
?????? 幀間編碼宏塊的每個子宏塊都是從參考圖像的某一相同尺寸區域進行預測得到 的。兩者之間的差異(MV),對亮度成分采用1/4象素精度,色度1/8象素精度。
?
附錄:
264學習指南―――分三個階段學習
1、第一個階段:
學習H.264,首先要把最基本最必要的資料拿在手里(//172.22.113.200/share/h264/H.264相關論文/其他/經典文章)。這些資料包括:標準文檔+測試模型+經典文章。首先看《H.264_MPEG-4 Part 10 White Paper》,看完之后再看《Video coding using the H.264 MPEG-4 AVC compression 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整體框架之前,你最好什么都不要做。
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/fengyv/archive/2006/01/04/570071.aspx