1. 程式人生 > >mpeg4中IBP幀的介紹和判定方法

mpeg4中IBP幀的介紹和判定方法

如果是同時參考前後的畫面壓縮,則記錄的是 和 (前畫面 pixel 值 + 後畫面 pixel 值)/2 的差值,也就是 和 「前後畫面的平均」的差值。所以記錄的差值個數和 P 幀一樣,只有一個,沒有增加。 
  而因為 B 幀位於前後畫面的中間,以「前後畫面的平均」,也就是「前後畫面的中間值」來作為預測數值(預測 B 幀的 pixel 數值為多少?如果有誤差,再記錄差值),這樣這個預測數值會比單獨使用前一個畫面來預測,更接近目前真正的 B 幀的數值,可想而知,如此所需要記錄的差值就會很小甚至可以根本不用記錄,所以便可以省下很多的 bits,提高壓縮率。 
  例如 亮度變化 -> I B P 7 8 9 
  如果 B 只參考前一個畫面壓縮,則需記錄差值 1。如果以 (I P)/2 壓縮,則差值為 0,不需記錄差值。(雖然要記錄兩個向量,不過向量也可以再做進一步預測壓縮,總的來說,還是會比單獨參考前一個畫面壓縮來得小很多)如果畫面不是這樣變化怎麼辦?通常來講畫面都會是這樣變化,如果不是這樣變化我們就不使用 B 幀。就算變化不是如此規則,換個方式想,B 幀可以參考的畫面還是比 P 幀多,再怎麼找,也還是 B 幀可以找到誤差更小的方塊來使用的機率大(因為可以選擇、參考的物件較多),所以 B 幀還是比 P 幀的壓縮率來得高。(而且高很多,差距非常大) 
  除了壓縮率以外,B 幀對畫質的影響.....是有的,因為 B 幀這種參考前後畫面的特性,等於有內插(interpolation)的效果,所以可以減少噪訊
。 
  MPEG-4 中的 B 幀,也是非常具有威力的,除了以前的三種參考模式,還有 Direct Mode,連向量的紀錄都省了。雖然 MPEG-4 之中有 4MV 的功能,可以記錄四個向量,不過編碼器在壓縮的時候會判斷,到底是使用 4MV 壓出來的結果小,還是使用傳統的方法壓出來的結果小? 
  如果使用傳統的方法壓出來的結果小,便使用傳統的方法記錄,如果使用 4MV 壓出來的結果小,才使用 4MV 來記錄。 
  (ps. 4MV 不會用在 backward 預測) 
  您可以觀察 VirtualDub 壓縮時畫面上顯示的藍線,您會發現藍線和藍線之間通常會有很短的藍線插在中間,造成空隙,而且差距很大,這個就是夾在 P 之間的 B 在發揮壓縮威力如果是用 DivX 5 更明顯,因為 DivX 5 只能夠使用 IBPBPBPB... 這種一個 B 接一個 P 的形式,所以畫面上的藍線就是「一長一短、一長一短」這樣排列。 
  關鍵幀和過渡幀的聯絡與區別 
  1、兩個關鍵幀的中間可以沒有過渡幀(如逐幀動畫),但過渡幀前後肯定有關鍵幀,因為過渡幀附屬於關鍵幀; 
  2、關鍵幀可以修改該幀的內容,但過渡幀無法修改該幀內容。 
  3、關鍵幀中可以包含形狀、剪輯、組等多種型別的元素或諸多元素,但過渡幀中物件只能是剪輯(影片剪輯、圖形剪輯、按鈕)或獨立形狀。   影象(幀)是靠儘可能去除影象空間冗餘資訊來壓縮傳輸資料量的幀內編碼影象; P影象(幀)是通過充分將低於影象序列中前面已編碼幀的是間冗餘資訊來壓縮傳輸資料量的編碼影象,也叫預測幀; B影象(幀)是既考慮與源影象序列前面已編碼幀,也顧及源影象序列後面已編碼幀之間的時間冗餘資訊來壓縮傳輸資料量的編碼影象,也叫雙向預測幀;一般地,I幀壓縮效率最低,P幀較高,B幀最高。