運動補償

運動補償是一種描述相鄰幀 （ 相鄰在這裏表示在編碼關係上相鄰 ， 在播放順序上兩幀未必相鄰 ） 差別的方法 ， 具體來說是描述前面一幀 （ 相鄰在這裏表示在編碼關係上的前面 ， 在播放順序上未必在當前幀前面 ） 的每個小塊怎樣移動到當前幀中的某個位置去 。 這種方法經常被視頻壓縮 / 視頻編解碼器用來減少視頻序列中的時域冗餘 。 它也可以用來進行去交織 （ deinterlacing ） 以及運動插值 （ motion interpolation ） 的操作 。 一個視頻序列包含一定數量的圖片 -- 通常稱爲幀 （ frame ） 。 相鄰的圖片通常很相似 ， 包含了很多冗餘 。 使用運動補償的目的是通過消除這種冗餘 ， 來提高壓縮比 。 最早的運動補償的設計只是簡單的從當前幀中減去參考幀 ， 從而得到通常含有較少能量 （ 或者稱爲信息 ） 的 " 殘差 " ， 從而可以用較低的碼率進行編碼 。 解碼器可以通過簡單的加法完全恢復編碼幀 。 一個稍微複雜一點的設計是估計一下整幀場景的移動和場景中物體的移動 ， 並將這些運動通過一定的參數編碼到碼流中去 。 這樣預測幀上的像素值就是由參考幀上具有一定位移的相應像素值而生成的 。 這樣的方法比簡單的相減可以獲得能量更小的殘差 ， 從而獲得更好的壓縮比 -- 當然 ， 用來描述運動的參數不能在碼流中佔據太大的部分 ， 否則就會抵消複雜的運動估計帶來的好處 。 通常 ， 圖像幀是一組一組進行處理的 。 每組的第一幀 （ 通常是第一幀 ） 在編碼的時候不使用運動估計的辦法 ， 這種幀稱爲幀內編碼幀 （ Intra frame ） 或者I幀 。 該組中的其它幀使用幀間編碼幀 （ Inter frame ） ， 通常是P幀 。 這種編碼方式通常被稱爲IPPPP ， 表示編碼的時候第一幀是I幀 ， 其它幀是P幀 。 在進行預測的時候 ， 不僅僅可以從過去的幀來預測當前幀 ， 還可以使用未來的幀來預測當前幀 。 當然在編碼的時候 ， 未來的幀必須比當前幀更早的編碼 ， 也就是說 ， 編碼的順序和播放的順序是不同的 。 通常這樣的當前幀是使用過去和未來的I幀或者P幀同時進行預測 ， 被稱爲雙向預測幀 ， 即B幀 。 這種編碼方式的編碼順序的一個例子爲IBBPBBPBBPBB 。