原文地址:http://wenku.baidu.com/view/8cd8e219a2161479171128f7.html
1.1 定義
預測編碼是數據壓縮理論的一個重要分支。根據離散信號之間存在一定相關性特點,利用前面的一個或多個信號對下一個信號進行預測,然后對實際值和預值的差(預測誤差)進行編碼。如果預測比較准確,那么誤差信號就會很小,就可以用較少的碼位進行編碼,以達到數據壓縮的目的。
第n個符號Xn的熵滿足:
n越大考慮更多元素之間的依賴關系時,熵值進一步降低,得到的熵越接近於實
際信源所含的實際熵(極限熵)。
所以參與預測的符號越多,預測就越准確,該信源的不確定性就越小,數碼率就可以降低。
1.2 原理
利用以往的樣本值對新樣本值進行預測,將新樣本值的實際值與其預測值相減,得到誤差值,對該誤差值進行編碼,傳送此編碼即可。
理論上數據源可以准確地用一個數學模型表示,使其輸出數據總是與模型的輸出一致,因此可以准確地預測數據,但是實際上預測器不可能找到如此完美的數學模型;
預測本身不會造成失真。誤差值的編碼可以采用無失真壓縮法或失真壓縮法。
2 分類
無損預測編碼;
有損預測編碼:
DPCM:差分脈沖調制預測,Differential Pulse Code Modulation:差值脈沖編碼調制是利用信號的相關性找出可以反映信號變化特征的一個差值量進行編碼。
ADPCM:自適應差分脈沖調制預測,Adaptive Differential Pulse Code Modulation
當輸入信號序列X(k=1,2、…)逐個進入編碼器時,預測器根據若干個過去的輸入產生當
輸入的預測(估計)值。將預測器的輸出舍入成最接近的整數,並用來計算預測誤差ek
這個誤差可用符號編碼器借助變長碼進行編碼以產生壓縮信號數據流的下—個元素。
在解碼器方根據接收到的變長碼字重建預測誤差,並執行以下操作以得到解碼信號
借助預測器將原來對原始信號的編碼轉換成對預測誤差的編碼。在預測比較准確時,預測誤差的動態范圍會遠小於原始信號序列的動態范圍,所以對頂測誤差的編碼所需的比持數會大大減少,這是預測編碼獲得數據壓縮結果的原因。
在多數情況下,可通過將M個先前的值進行線性組合以得到預測值。
預測方程式:
K>N表示x1, x2,…, xN 的時序在xk 之前。
線性預測是指預測方程式的右方是各個xi的線性函數:
如果ai (k)是常數,則為時不變線性預測。
最簡單的預測方程:
最佳線性預測
使誤差函數:
達到最小值的預測方程式叫做最佳線性預測。
求最佳線性預測的各個參數ai,列方程組:
代入
得到聯立方程組,解方程定出ai
2.2 有損預測編碼原理(DPCM)
在無損預測編碼系統的基礎上加一個量化器構成。
壓縮過程:
1、發送端預測器帶有存儲器,把tn時刻以前的采樣值x1, x2, x3,…, xk-1存儲起來並據此對xk進行預測,得到預測值。
2、ek為xn與的差值, ek’為ek經量化器量化的值
3、xk’是接收端的輸出信號
4、誤差
實際上就是發送端的量化器量化的誤差。對 ek的量化越粗糙,壓縮比越高,失真越大.
2.2.1 示例一:德爾塔調制(DM或ΔM)
最簡單的有損預測編碼方法是德爾塔(或稱增量)調制(DM或ΔM) 方法,早期在數字電話中采用,是一種最簡單的差值脈沖編碼 。
其預測器和量化器分別定義為:
其中a是預測系數(一般小於等於1),c是1個正的常數。因為量化器的輸出可用單個位符表示(輸出只有2個值),所以編碼器中的符號編碼器可以只用長度固定為1比特的碼。由DM方法得到的碼率是1比特/像素。
示例:
取a=1和c=5。設輸入序列為12,16,12,14,20、32,46,52,50,51,50。編碼開始時先將第1個輸入像素直接傳給編碼器。
上例的輸入和輸出中顯示出2種有損預測編碼典型的失真現象。
其一,當c遠大於輸入中的最小變化時,如在n=0到n=3的相對平滑區間,DM編碼會產生顆粒噪聲,即誤差正負波動。
其二,當c遠小於輸入中的最大變化時,如在n=5到n=9的相對陡峭區間,DM編碼會產生斜率過載,有較大的誤差。
對大多數圖像來說, 上述2種情況分別會導致圖像中目標邊緣發生模糊和整個圖像產生紋狀表面。
2.2.2 自適應差分脈沖調制(ADPCM)預測
輸入數據不是平穩的隨機過程
自適應差分脈沖調制(ADPCM)預測
定期重新調整預測器的預測參數,使預測器隨輸入數據的變化而變化
自適應改變量化器的量化階數,用小量化階量化小差值,大量化階量化大差值
分為線性自適應預測與非線性自適應預測兩種
自適應量化
在一定量化級數下減少量化誤差或在同樣的誤差條件下壓縮數據,根據信號分布不均勻的特點,希望系統具有隨輸入信號的變化區間足以保持輸入量化器的信號基本均勻的能力,這種能力叫自適應量化。
示例二:
ADPCM采用與DPCM相同的預測器,但對誤差量化時采用自適應改變量化器的量化階數的壓縮結果
自適應預測
1. 預測參數的最佳化依賴信源的特征,要得到最佳預測參數顯然是一件繁瑣的工作。而采用固定的預測參數往往又得不到較好的性能。為了能使性能較佳,又不致於有太大的工作量,可以采用自適應預測。
2. 為了減少計算工作量,預測參數仍采用固定的,但此時有多組預測參數可供選擇,這些預測參數根據常見的信源特征求得。編碼時具體采用哪組預測參數需根據特征來自適應地確定。
3. 為了自適應地選擇最佳參數,通常將信源數據分區間編碼,編碼時自動地選擇一組預測參數,使該實際值與預測值的均方誤差最小。隨着編碼區間的不同,預測參數自適應地變化,以達到准最佳預測。
示例三:
4個不同的預測器如下所示
其中第4個預測器是自適應預測器,它通過計算圖像的局部方向性來選擇合適的預測值以達到保持圖像邊緣的目的。
3.1 圖像信號的預測編碼
一幅數字圖像可以看成一個空間點陣,圖像信號不僅在水平方向是相關的,在垂直方向也是相關的。根據已知樣值與待預測樣值間的位置關系,可以分為:
(1)一維預測(行內預測):利用同一行上相鄰的樣值進行預測。
(2)二維預測(幀內預測):利用同一行和前面幾行的數據進行預測。
這種壓縮算法被應用到JPEG標准的無損壓縮模式之中,中等復雜程度的圖像壓縮比可達到2:1。
Lossless JPEG
DPCM/Huffman Codign
DPCM/Arithmetic Coding
DPCM at 1.0 bpp
DPCM at 2.0 bpp
DPCM at 3.0 bpp
3.2 活動圖像的幀間預測編碼
視頻信號的冗余度主要體現在空間相關性(幀內)、時間相關性(幀間)和色度空間表示上的相關性。
對於每秒25幀(30)的電視信號,其相繼幀之間存在極強的相關性。所以在活動圖像序列中可以利用前面的幀來預測后面的幀,以實現數據壓縮。
幀間預測編碼技術被廣泛應用到H.261、H.263、H.264、MPEG-1和MPEG-2等視頻壓縮標准之中。
采用預測編碼的方法消除序列圖像在時間上的相關性,即不直接傳送當前幀的像素值,而是傳送x和其前一幀或后一幀的對應像素x,之間的差值,這稱為幀間預測。
當圖像中存在着運動物體時,簡單的預測不能收到好的效果,
例如當前幀與前一幀的背景完全一樣,只是小球平移了一個位置,如果簡單地以第k-1幀像素值作為k幀的預測值,則在實線和虛線所示的圓內的預測誤差都不為零。如果已經知道了小球運動的方向和速度,可以從小球在k-1幀的位置推算出它在k幀中的位置來,而背景圖像(不考慮被遮擋的部分)仍以前一幀的背景代替,將這種考慮了小球位移的k-1幀圖像作為k幀的預測值,就比簡單的預測准確得多,從而可以達到更高的數據壓縮比。這種預測方法稱為具有運動補償的幀間預測。
3.3 具有運動補償的幀間預測
活動圖像序列中的一個畫面可以大致划分為3個區域:
背景區:相鄰兩個畫面的背景區基本相同。
運動物體區:可以視為由前一個畫面的某一區域的像素平移而成。(位移矢量)
暴露區:指物體運動后而顯露出來的曾被遮蓋的背景區域。
運動補償預測就是將前一個畫面的背景區+平移后的運動物體區作為后一個畫面的預測值。
運動補償幀間預測從原理上包括如下幾個基本步驟:
(1)圖像分割:把圖像划分為靜止的背景和若干運動的物體,各個物體可能有不同的位移,但構成同一物體的所有像素的位移相同。
(2)運動矢量估值:考察前后兩個畫面,利用運動估值算法得到每個物體的位移矢量。
(3)運動補償:用運動矢量補償物體的運動效果再進行預測。
(4)編碼:除了對實測值與預測值之間的差值進行編碼傳送外,還要傳送位移矢量以及區域分割信息