文章轉自:http://www.cnblogs.com/CoderTian/p/8261727.html
1.視頻編碼發展簡史
1988 年CCITT 通過了“p×64Kbps(p=1,2,3,4,5,,,,30) ”
視像編碼標准 H.261 建議, 被稱為視頻壓縮編碼的一個里程碑。從此, ITU-T、 ISO 等公布的基於波形的一系列視頻編碼標准的編碼方法都是基於 H.261 中的混合編碼方法。
1986 年,ISO 和 CCITT 成立了
聯合圖像專家組(JPEG,Joint Photographic Experts Group),研究連續色調靜止圖像壓縮算法國際標准, 1992 年 7 月通過了 JPEG 標准。
1988 年 ISO/IEC 信息技術聯合委員會成立了
活動圖像專家組(MPEG, Moving PictureExpert Group)。 1991 年公布了 MPEG-1 視頻編碼標准,主要應用於家用VCD 的視頻壓縮; 1994 年 11 月,公布了 MPEG-2 標准,用於數字視頻廣播(DVB)。
1995 年, ITU-T 推出
H.263 標准,用於低於 64 Kbps 的低碼率視頻傳輸,如 PSTN 信道中可視會議、多媒體通信等。 1984 年和 2000 年又分別公布了 H.263+、 H.263++等標准。
1999 年 12 月份, ISO/IEC 通過了“
視聽對象的編碼標准”——MPEG4,它除了定義視頻壓縮編碼標准外,還強調了多媒體通信的交互性和靈活性。
2003 年 3 月, ITU-T 和 ISO/IEC 正式公布了
H.264 視頻壓縮標准,不僅顯著提高了壓縮比,而且具有良好的網絡親和性,加強了對 IP 網、移動網的誤碼和丟包的處理。
2.H.261標准
2.1.圖像格式
H.261 用於視頻通信,會產生多個國家的互通困難的問題,不同國家采用不同的彩電制式,不可能直接互通。
H.261 采用一種公共中間格式(CIF, Common Intermediate Format),不論何種彩色格式,發送方先把自己國家的彩電制式轉換成 CIF 格式,經 H.261 編碼后再由CIF 格式轉換到接收方彩電制式。
CIF圖像格式

采用 CIF 及 QCIF 格式時,視頻信號的結構采用圖所示的圖像、塊組(GOB, group of block)、宏塊(MB, macroblock)、塊(B, block)四級結構。每幀 CIF 圖像由 2 個 GOB組成,每個 GOB 由 33 個 MB 組成,每個 MB 由 4 個亮度塊和 1 個 Cr 塊及 1 個 Cb 塊組成,每個塊(B)又由 8×8 像素構成。一幀 QCIF 圖像由 3 個 GOB 組成。

2.2. H.261視頻編碼器

視頻信源編碼器用於視頻信號的碼率壓縮,
主要采用混合編碼方法;視頻復合編碼器將每幀圖像數據編排成四層結構,並通過熵編碼對視頻數據進一步壓縮輸出。傳輸緩沖器和碼率控制器用於保證輸出碼流盡可能穩定。傳輸編碼器則用於視頻數據的誤碼檢測和糾正。解碼器各部分功能與編碼器相反。
H.261信源編碼器框圖如下所示,
輸入以MB(宏塊)為單位
針對四層的視頻數據結構,視頻復合編碼器對量化后的視頻數據進行變長編碼(直流系數用定長編碼),並插入一些輔助數據(如幀首、塊組首、宏塊首等),得到
復合編碼圖像數據結構,如下圖所示

- 幀層,幀首包括幀起始碼(PSC)、幀計數碼(TR)、幀類型信息碼(PTYPE)及備用插入信息碼等;
- 塊組層,塊組首包括塊組起始碼(GBSC)、塊組編號碼(GN)、塊組量化步長(GQOANT)、備用插入信息等;
- 宏塊層,由 6 個塊組成,包括 4 個亮度塊和兩個色度塊。宏塊首包括宏塊地址碼(MBA)、宏塊類型碼(MTYPE)、宏塊量化步長碼(MQUANT)、運動矢量數據(MVD)、編碼模式(CBP)等, CBP 說明各塊中數據數;
- 塊層,各塊(8×8)的 DCT 系數按圖 4.5 所示的 Zig-Zag(之字形)掃描,將像素排成一維序列並進行熵編碼(變長編碼),每塊結束時用 EoB 結束符作為塊結束
為使輸出碼率基本恆定,可采用緩沖器控制並調整幀亞速率、改變量化步長等等
解碼器框圖

3. H.263標准
3.1.圖像格式
H.263共有5種圖像格式

3.2. H.263視頻信源編碼算法
H.263 的視頻信源編碼框圖與 H.261 相同,信源編碼方法也類似,不同的是
H.263 輸入有多種格式,輸出為 H.263 碼流。
為了適應低碼率傳輸要求,並進一步提高圖像質量, H.263+、 H.263++做了不少改進,增加了若干選項,現選擇主要技術介紹如下:
(1)運動矢量,
H.263 中 1 個 MB 可以使用 1 個運動矢量表示,也可以 4 個 8×8 塊各使用 1 個運動矢量表示,提高運動估計精確性和壓縮比。(H.261 規定每個 MB 使用 1 個運動矢量。)
(2)半像素預測,
H.263 為進一步提高壓縮比,采用半像素預測,而 H.261 采用整像素預測,預測精度明顯低於 H.263。
(3)二維預測,
H.263 采用二維預測, H.261 采用一維預測。
(4)非限制的運動矢量模式(選項),
H.263 的運動矢量范圍允許指向圖像幀之外。
(5)
基於句法的算術編碼(選項),顯著降低碼率,但復雜度比哈夫曼編碼高。
(6)高級預測模式(選項), H.263 除可以采用每個 8×8 塊 1 個運動矢量,每個 16×16宏塊 4 個運動矢量外,
還采用 OBMC 運動補償方式,以減少方塊效應。
(7)
PB 幀模式(選項), PB 幀由 1 個 P 幀和 1 個 B 幀組成。 P 幀由前一幀預測而得。B 幀由雙向(前向和后向)預測而得,分別用前向 MV、后向 MV、前后向 MV 平均進行運動補償得 3 個預測誤差,取其最小者作為 B 幀的預測誤差進行編碼。
4.MPEG-1標准
MPEG-1標准有如下功能:
(1) 視頻壓縮編碼,壓縮后碼率在 1.5Mbps,可用於視頻傳輸和視頻存儲;
編碼前必須將視頻圖像轉換成逐行掃描圖像。
(2)錄像機的正放、圖像凍結快進、快退和慢放功能以及隨機存儲功能。
4.1.圖像格式
MPEG-1 定義了三種圖像類型: I、 P、 B 圖像。 I 圖像即幀內(Intra)圖像,采用幀內編碼,不參考其它圖像,但可作為其它類型圖像的參考幀。 P 圖像即預測(Predicted)圖像,采用幀間編碼,參考前一幅 I 或 P 圖像,用作運動補償。 B 圖像即雙向預測(Bi- predicted)圖像,參考前后兩個方向圖像。 I、 P、 B 圖像之間的顯示順序如下圖所示

雙向預測編碼可解決“暴露”問題, 即某物體在前一幀未顯示出來,但在后一幀卻“暴露”出來,雙向預測能更准確地找出運動矢量,並只有在視頻存儲、 VOD 等非實時通信及數字廣播電視中應用。 會議電視、可視電話等實時通信中不宜應用 B 圖像,因為實時通信后一幀處在當前幀之后,當前幀編碼時它尚未出現。
4.2.編碼結構
MPEG-1 編碼結構類似 H.261,也采用分層結構,但有所不同,
MPEG-1 多出片層(切片或 slice 層),用於防止誤碼在一幀內地擴散。
MPEG-1編碼器和 H.261 並無多大區別,但需考慮雙向預測編碼和解碼。解碼時先將恢復圖像存在緩存中,以顯示順序顯示。
5.MPEG-2標准
MPEG-2 標准包括系統、視頻、音頻及符合性(檢驗和測試視音頻及系統碼流) 4 個文件。
5.1.MPEG-2編碼復用系統
MPEG-2 碼流分為三層,即基本流(ES, elementary bit stream)、包基本碼流(PES, packetelementary stream)和復用后的傳送碼流(TS, transport stream)、節目碼流(PS, programstream)。其編碼復用系統結構如下圖所示。

5.2.檔次和級別
MPEG-2 按不同的壓縮比分成五個檔次,按視頻清晰度分為四個級別

5.3.MPEG-2視頻編解碼器
MPEG-2 編解碼器結構與 H.261 區別不大

5.4.ES碼流結構

ES 碼流采用圖像序列(PS)、圖像組(GOP)、圖像(P)、片(slice)、宏塊(MB)、塊(B)六層結構。
(1)圖像序列層,圖像序列包括若干 GOP,序列頭包含起始碼和序列參數,如檔次、級別、彩色圖像格式、幀場選擇等等;
(2)圖像組層,圖像組包含若干幅圖像,組頭包含起始碼、 GOP 標志等,如視頻磁帶記錄器時間、控制碼、 B 幀處理碼等;
(3)圖像層,一幅圖像包含若干片,頭信息中有起始碼、 P 標志,如時間、參考幀號、圖像類型、 MV、分級等;
(4)片層,片是最小的同步單位,包含若干宏塊,片頭中有起始碼、片地址、量化步長等;
(5)宏塊層,宏塊由 4 個 8×8 亮度塊和 2 個色度塊組成,宏塊頭包括宏塊地址、宏塊類型、運動矢量等。
5.5.基於幀或場的DCT變換
MPEG-2 可用於逐行掃描圖像也可用於隔行掃描圖像。對逐行掃描圖像,可按行分割成塊,基於塊進行 DCT 變換。對逐行掃描圖像,一幀由兩場組成,於是就有基於幀的分割和基於場的分割兩種宏塊結構

- 同一幀內的各鄰近行之間空間相關性比同一場內各鄰近行之間的相關性要強。因此基於幀的 DCT 編碼適用於相對靜止或慢運動的景物。
- 同一場內各鄰近行之間時間相關性比同一幀內各鄰近行之間的時間相關性要強(因為同一幀內當前行的下一行要等到一場掃描完后才出現在當前行之下,時間相關性弱),基於場的 DCT 編碼適用於運動大的景物。
- 根據幀的行間相關系數和場的行間相關系數可判定采用幀分割還是場分割進行編碼。
6.JPEG標准
1991 年 3 月 ISO/IEC 正式通過了
靜止圖像壓縮編碼標准,稱為 JPEG 建議。 JPEG 標准分為基本系統、擴展系統和信息保持系統三個部分。基本系統提供對順序掃描靜止圖像的高效有損編碼,輸入圖像精度為 8bit/像素。
6.1.編碼框圖

6.2.數據交換格式
熵編碼后得到變長度的碼流。為便於數據的交換, JPEG 規定了統一的壓縮后數據交換格式
第一行: SOI 表示圖像數據開始; EOI 為一幀圖像結束,各占兩個字節。
第二行:表/雜項中放置量化表、哈夫曼表;幀首包括編碼方法、取樣精度、量化系數、源圖像行數、每行取樣數等; DNL 重新定義幀內的行數。
第三行:掃描首說明掃描起始信息、分量圖像號碼、參數、熵編碼表選擇(ECS); RST為重新開始標志。
第四行:為熵編碼區, MCV 為最小編碼單元,包括 4 個亮度塊, 1 個 Cr 塊和 1 個 Cb塊。