一、实验原理
1.DPCM编解码原理
DPCM是差分预测编码调制的缩写,是比较典型的预测编码系统。在DPCM系统中,需要注意的是预测器的输入是已经解码以后的样本。之所以不用原始样本来做预测,是因为在解码端无法得到原始样本,只能得到存在误差的样本。因此,在DPCM编码器中实际内嵌了一个解码器,如编码器中虚线框中所示。
在一个DPCM系统中,有两个因素需要设计:预测器和量化器。理想情况下,预测器和量化器应进行联合优化。实际中,采用一种次优的设计法:分别进行线性预测器和量化器的优化设计。
2.DPCM编码系统的设计
在本次实验中,采用固定预测器和均匀量化器。预测器采用左侧、上方预测均可。量化器采用8比特均匀量化。本实验的目标是验证DPCM编码的编码效率。首先读取一个256级的灰度图像,采用预设的预测方法计算预测误差,并对预测误差进行8比特均匀量化(基本要求) 。还可对预测误差进行1比特、2比特和4比特的量化设计。
二、代码分析
处理程序在实验二BMP2YUV基础上进行,其中yBuf数组中已存储着图像的灰度值,作为编码器的输入。
qBuf = (unsigned char *)malloc(height*width);
reBuf = (unsigned char *)malloc(height*width);
int temp;
for (int j = 0; j<height; j++)
{
for (int i = 0; i<width; i++)
{
if (i == 0)
{
//每列第一个元素保持原来的样值不变,只是变换相应的数据类型
temp= (*(yBuf + j*width + i) - 128) / 2 + 128;//计算量化误差
*(qBuf + j*width + i) = (unsigned char)temp;
temp = ((*(qBuf + j*width + i) - 128) *2) + 128; //计算重建值
*(reBuf + j*width + i) = (unsigned char)temp;
}
else
{ //当前差值信号为当前样值与上个预测样值的差值 并进行了量化
temp= (*(yBuf + j*width + i) - *(reBuf + j*width + i - 1)) / 2+ 128;
*(qBuf + j*width + i) = (unsigned char)temp;
//当前重建信号为 反量化后的差值信号与上一个重建信号的和
temp= ((*(qBuf + j*width + i) - 128) *2) + *(reBuf + j*width + i - 1);
*(reBuf + j*width + i) = (unsigned char)temp;
}
}
}
三.实验结果与分析
将八幅不同类型的样图进行DPCM变换,观测其重建图像,与差分数据的显示效果。对差分文件进行Huffman 编码,将其符号的分布统计得到下表结果。
| 原始图像 | 预测量化图像 | 重建图像 |
|---|---|---|
压缩性能能比较:
| 文件名称 | 源文件大小(KB) | huffman变换(KB) | 压缩比 | DPCM+huffman变换(KB) | 压缩比 |
|---|---|---|---|---|---|
| birds.bmp | 384 | 304 | 1.26 | 148 | 2.59 |
| lena.bmp | 64 | 53 | 1.20 | 37 | 1.73 |
| clown.bmp | 64 | 54 | 1.18 | 39 | 1.64 |
| camman.bmp | 64 | 50 | 1.28 | 32 | 2.00 |
| noise.bmp | 64 | 54 | 1.18 | 63 | 1.01 |
| odie.bmp | 64 | 10 | 6.40 | 9 | 7.11 |
| zone.bmp | 64 | 55 | 1.16 | 64 | 1.00 |
| fruit.bmp | 64 | 54 | 1.18 | 34 | 1.88 |
结果分析:比较两种系统(DPCM+熵编码和仅进行熵编码)之间的编码效率(压缩比和图像质量)
1. 可以明显观察到重建的图像与原始图像十分接近,而预测误差图像在边缘部分的某些差异与采取的预测方案有关。
2. 预测误差图像都为明显的灰色,电平集中分布在128附近,量化过程中将量化误差抬升128电平所以表明实际预测误差值集中分布在 0 左右,证明对于正常图像,相邻像素之间存在很强的关联性,利用相关性对像素量化后进行压缩压缩比会很理想。
3. DPCM+熵编码的方案比单纯只使用熵编码的效果更好,能达到很高的压缩率
4. t05噪声图像:预测误差概率分布零散没有规律,使用 DPCM+熵编码 或者 Huffman 编码的方案进行压缩后得到的效果均不如其他有内容图片。
5. t07同心圆:虽然不是噪声图像,但是两个极端灰度值 0 和 255交替分布的,因此误差范围也很宽不易压缩。
综上,利用DPCM进行预测编码时,空间冗余越大,压缩效率越高。
本文介绍了DPCM(差分预测编码调制)的原理,包括预测器和量化器的设计,以及在实验中采用的固定预测器和均匀量化器。通过对比不同量化位数的效果,分析了DPCM编码的压缩性能,指出DPCM+熵编码方案相比仅熵编码能提供更高的压缩率,尤其在处理空间冗余较大的图像时效果更佳。同时,实验也揭示了噪声图像和特殊像素分布图像的压缩挑战。
262

被折叠的 条评论
为什么被折叠?



