1. 程式人生 > >I幀、P幀、B幀,以及PTS、DTS的關係

I幀、P幀、B幀,以及PTS、DTS的關係

在MPEG編碼的過程中,部分視訊幀序列壓縮成為I幀,部分壓縮成P幀,還有部分壓縮成B幀。I幀法是幀內壓縮法,也稱為“關鍵幀”壓縮法。

I幀法是基本離散餘弦變換 DCT( Discrete Cosine Transform )的壓縮技術,這種演算法與JPEG壓縮演算法類似。JPEG壓縮是一種針對靜止的連續色調的影象壓縮方法,它屬於帖內壓縮。採用I幀壓縮可達到1/6的壓縮比而無明顯的壓縮痕跡。

MPEG標準採用YCbCr(YUV)4::2:2的取樣格式,其含義為:每個點儲存一個 8bit 的亮度值(也就是Y值),每2個點儲存一個 Cr(8bit) 和Cb(8bit) 值, 影象在肉眼中的感覺不會起太大的變化。其編碼的基本方法是在單位時間內,首先採集並壓縮第一幀的影象為I幀。然後對於其後的各幀,在對單幀影象進行有效壓 縮的基礎上,只儲存其相對於前後幀發生變化的部分。幀間壓縮的過程中也常間隔採用幀內壓縮法,由於幀內(關鍵幀)的壓縮不基於前一幀,一般每隔15幀設一 關鍵幀,這樣可以減少相關前一幀壓縮的誤差積累。MPEG編碼器首先要決定壓縮當前幀為I幀或P幀或B幀,然後採用相應的演算法對其進行壓縮。一個視訊序列 經MPEG全編碼壓縮後可能的格式為:IBBPBBPBBPBBPBBIBBPBBP BBPBBPBBI......

I  幀:幀內編碼幀,又稱Intra-Picture。I幀通常是每個GOP(MPEG所使用的一種視訊壓縮技術)的第一個幀,經過適度的壓縮,可以當成影象。I幀實際上就是完整的影象經過壓縮後的資料幀。I幀特點:

①它是一個全幀壓縮編碼幀。它將全幀影象資訊進行JPEG壓縮編碼 及傳輸。 
②解碼時僅用I幀的資料就可重構完整影象。 
③I幀描述了影象背景和運動主體的詳情。 
④I幀不需要參考其他畫面而生成。 
⑤I幀是P幀和B幀的參考幀(其質量直接影響到同組中以後各幀的質量)。 
⑥I幀是幀組GOP的基礎幀(第一幀),在一組中只有一個I幀。 
⑦I幀不需要考慮運動向量。 
⑧I幀所佔資料的資訊量比較大。

P 幀:前後預測編碼幀,又稱Predictive-Picture。通過充分的將低於圖象序列中前面已編碼幀的時間冗餘資訊來壓縮傳輸資料量的編碼影象,也叫預測幀。這個幀不能單獨作為影象進行觀看,其不能成為完整的一張圖,需要參考前面一張I幀或B幀來形成完整圖。P幀特點: 

①P幀是I幀後面相隔1~2幀的編碼幀。 
②P幀採用運動補償的方法傳送它與前面的I或P幀的差值及運動向量(預測誤差)。 
③解碼時必須將I幀中的預測值與預測誤差求和後才能重構完整的P幀影象。 
④P幀屬於前向預測的幀間編碼。它只參考前面最靠近它的I幀或P幀。 
⑤P幀可以是其後面P幀的參考幀,也可以是其前後的B幀的參考幀。 
⑥由於P幀是參考幀,它可能造成解碼錯誤的擴散。 
⑦由於是差值傳送,P幀的壓縮比較高。

B 幀:雙向預測內插編碼幀,又稱Bi-directional interpolated prediction frame,既考慮與源影象序列前面已編碼幀,也顧及源影象序列後面已編碼幀之間的時間冗餘資訊來壓縮傳輸資料量的編碼影象,也叫雙向預測幀,也同樣不能成為完整的一張圖,需要參考前面的I或P幀以及後面的一個P幀來形成一張完整的圖。B幀特點:

①B幀是由前面的I或P幀和後面的P幀來進行預測的。 
②B幀傳送的是它與前面的I或P幀和後面的P幀之間的預測誤差及運動向量。 
③B幀是雙向預測編碼幀。 
④B幀壓縮比最高,因為它只反映丙參考幀間運動主體的變化情況,預測比較準確。 
⑤B幀不是參考幀,不會造成解碼錯誤的擴散。

PTS:Presentation-Time-Stamp。PTS主要用於度量解碼後的視訊幀什麼時候被顯示出來。

DTS:Decode-Time-Stamp。DTS主要是標識讀入記憶體中的位元流在什麼時候開始送入解碼器中進行解碼。

在沒有B幀存在的情況下DTS的順序和PTS的順序應該是一樣的。



MPEG壓縮方式:

所以,2個I幀之間的一大串,形成一個GOP,而GOP中間由P幀+B幀組成。

MPEG-2 壓縮的幀結構有兩個引數:

一是 GOP(Group Of Picture)影象組的長度,一般可按編碼方式從 1-15。

二是I幀和P幀之間B幀的數量,一般是1~2個。前者在理論上記錄為 N,即多少幀裡面出現一次 I 幀;後者描述為多少幀裡出現一次 P 幀,記錄為 M。


I幀的解碼不依賴於任何的其它的幀。

P幀的解碼則依賴於其前面的I幀或者P幀。

B幀的解碼則依賴於其前的最近的一個I幀或者P幀及其後的最近的一個P幀。

對於PTS來看,其實就是=顯示順序*t;而DTS,其實就是=解碼順序*t;其中間隔的時間是固定的;

I、B、P各幀是根據壓縮演算法的需要,是人為定義的。它們都是實實在在的物理幀,至於影象中的哪一幀是I幀是隨機的。

一但確定了I幀,以後的各幀就嚴格按規定順序排列。