DPCM 压缩系统的实现和分析

1、DPCM编解码原理

DPCM是差分预测编码调制的缩写,是比较典型的预测编码系统。在DPCM系统中,需要注意的是预测器的输入是已经解码以后的样本。之所以不用原始样本来做预测,是因为在解码端无法得到原始样本,只能得到存在误差的样本。因此,在DPCM编码器中实际内嵌了一个解码器,如编码器中虚线框中所示。

在一个DPCM系统中,有两个因素需要设计:预测器和量化器。理想情况下,预测器和量化器应进行联合优化。实际中,采用一种次优的设计方法:分别进行线性预测器和
量化器的优化设计。


2、DPCM编码系统的设计

在本次实验中,我们采用固定预测器和均匀量化器。预测器采用左侧、上方预测均可。量化器采用8比特均匀量化。本实验的目标是验证DPCM编码的编码效率。首先读取一个
256级的灰度图像,采用自己设定的预测方法计算预测误差,并对预测误差进行8比特均匀量化,还可对预测误差进行1比特、2比特和4比特的量化设计。
在DPCM编码器实现的过程中可同时输出预测误差图像和重建图像。将预测误差图像写入文件并将该文件输入Huffman编码器,得到输出码流、给出概率分布图并计算压缩比。将原始图像文件输入输入Huffman编码器,得到输出码流、给出概率分布图并计算压缩比。最后比较两种系统(DPCM+熵编码和仅进行熵编码)之间的编码效率(压缩比和图像质量)。

二、量化

需要决定的参数
1、 量化区间的数目
2、 决策边界(判决门限)
3、 重构水平
4、 量化区间索引的码字(量化码字)
量化器的设计是码率与失真之间的折中, 为了降低编码的比特数,需要减低量化区间的数目,但是会带来更大的误差。
性能受率失真理论控制:1、给定允许失真,求最小码率的量化器 ;2、 给定码率,求最小失真的量化器。

均匀量化: 均匀量化器只对均匀分布信源是最佳的。

三、主要代码

void DPCM(unsigned long w,unsigned long h,unsigned char * y,unsigned char * q,unsigned char *yy) //y为原始输入,yy为重现,q为误差的量化值 
{   
	unsigned long i,j;
	unsigned char  P;
	for(j=0;j<h;j++)
	{
		for(i=0;i<w;i++)
		{
                       if(i==0)   //判断是否为第一列的,是的话用128作为预测值
			  P=128;  
		  else
			  P=yy[j*w+i-1];//否则以左侧重建值作为预测值

		   q[j*w+i]=(y[j*w+i]-P)/2+128;//对预测误差进行8bit量化,数值的变化过程为[-255,255]-->[-127,127]-->[1,255]
                   yy[j*w+i]=(q[j*w+i]-128)*2+P;//进行反量化,经过运算得到重建值
		}
	}

}

四、实验结果

选取10张图片进行实验。由于其中三张像素较大,不好截图展现效果,下面截图其他7张的效果图。

图片从左到右一次为:原始图像、预测误差图像、重现图像。

下面为原始图像和预测误差图像的概率分布图比较:

自己找的文件1:


自己找的文件2:


 test Birds:

    

test Camman:

 

test clown:

   

test   fruit:

 

test  lena:

 

test noise:

 

test  Zone:

    

test odie:

     

DPCM+熵编码和仅进行熵编码的压缩比比较

文件名   原始图像压缩后压缩比预测误差压缩后压缩比
11.75MB1555KB1.15241.75MB701 KB2.5563
20.98MB770KB1.30330.98MB405 KB2.4778
Camman96KB61KB1.573896KB39 KB2.4615
Clown96KB70KB1.371496KB47 KB2.0426
Fruit96KB70 KB1.371496KB42 KB2.2857
Lena96KB69 KB1.391396KB

45 KB

2.1333
Noise96KB65 KB1.476996KB73 KB1.3151
Odie96KB20 KB4.896KB17 KB5.6471
Birds576KB520 KB1.1077576KB333 KB1.7297
Zone96KB60 KB1.696KB72 KB1.3333
经对比发现,DPCM+熵编码的压缩比大于仅进行熵编码的压缩比。

初出茅庐,还请各位大神指教!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值