天天看點

關于MEPG4的I幀,P幀,B幀的了解

I幀:幀内編碼幀,I幀圖像采用幀内編碼方式,即隻利用單幀圖像内的空間相關性,不利用時間相關性,視訊接收初始化時必須使用I幀作為基準圖像。

P幀:采用從最近的前一個I幀或P幀進行運動估計所得出的編碼圖像,有效的去除了時間備援。P幀内也可以包含幀内編碼的部分, 即P幀中的每一個宏塊可以選擇幀間編碼(使用運動估計)也可以選擇幀内編碼(即不用考慮運動估計,和I幀一樣),一旦發生參考幀與目前幀的變化較大,編碼器将對目前宏塊直接編碼,不再使用運動補償。相關的宏塊頭資訊會指明目前的編碼方式。 注:P幀是從前一個幀進行運動估計所得出的編碼圖像,即殘差宏塊,編碼器在對殘差宏塊編碼以後, 還要重新對其解碼,産生P幀的殘差宏塊解碼P'對應的宏塊,也就是将該宏塊還原成未進行運動補償的宏塊(當然會與原始宏塊有誤差),并存起來作為下一個P1幀的參考宏塊。 這種操作叫做“建立重構幀”。那麼編碼器在編碼的同時為什麼還要解碼呢即建立重構幀???因為解碼器解碼的時候,比如解碼目前P幀的下一幀P1,那麼解碼P1的時候就要用目前幀作為參考幀去還原解碼P1,因為這時候P1的參考幀是解碼器解碼出來的幀P',P'幀肯定與最初編碼時的P幀之間有誤差(量化等操作的緣故)。因為P1的參考幀P'跟原始的P幀間有誤差,那麼編碼的時候就不能用P幀做參考幀,要用P'做參考幀,是以在編碼以後,再重新解碼出P'作為下一幀P1的參考幀。 這樣就保證了編碼器和解碼器使用相同的參考幀。

B幀:雙向預測編碼圖像,B幀在編碼時同時利用前面的和後面的圖像作為參考幀進行運動估計。

在實際過程中可以根據應用需求,靈活安排上述3種類型的幀。