【转】预测编码
原文地址: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)编码:除了对实测值与预测值之间的差值进行编码传送外,还要传送位移矢量以及区域分割信息