实验名称: DPCM 压缩系统的实现和分析


实验目的:

掌握DPCM编解码系统的基本原理。初步掌握实验用C语言编程实现DPCM编码器并分析其压缩效率。

主要设备:

安装 Windows 和 Visual Studio 软件的个人计算机

 

实验内容:


 实验名称: DPCM 压缩系统的实现和分析_第1张图片

1.DPCM 编解码原理

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

 

2. DPCM编码系统的设计

在本次实验中,我们采用固定预测器和均匀量化器。预测器采用左侧预测。


量化器采用8比特均匀量化。本实验的目标是验证DPCM编码的编码效率。首先读取一个256级的灰度图像,采用自己设定的预测方法计算预测误差,并对预测误差进行8比特均匀量化还可对预测误差进行1比特、2比特和4比特的量化设计。

为了让残差图可见性更强,对残差图进行了非均匀量化。

DPCM编码器实现的过程中可同时输出预测误差图像和重建图像。将预测误差图像写入文件并将该文件输入Huffman编码器,得到输出码流给出概率分布图计算压缩比。将原始图像文件输入Huffman编码器,得到输出码流、给出概率分布图并计算压缩比。

比较两种系统(1.DPCM+熵编码和2.仅进行熵编码)之间的编码效率(压缩比和图像质量)。压缩质量以PSNR进行计算。

3. PSNR的实现:

PSNR:峰值信噪比,是一种全参考的图像质量评价指标。计算公式如下

实验名称: DPCM 压缩系统的实现和分析_第2张图片

其中,MSE表示当前图像X和参考图像Y的均方误差(MeanSquare Error),HW分别为图像的高度和宽度;n为每像素的比特数,一般取8,即像素灰阶数为256. PSNR的单位是dB,数值越大表示失真越小。

 

实验步骤:

 

其中读取RGB数据,RGB2YUV,均调用了实验2的函数

实验名称: DPCM 压缩系统的实现和分析_第3张图片

 

输出重建图像,预测误差图像的UV值均使用128

 

DPCM具体实现

在每一行中,由于第一个像素的前面没有像素,因此假设它的预测值为平均灰度值 128 。

 

量化等级=512/2(量化比特数)次方

int Qlevel = 512 / (1 << (Qbit));

 

 

Switch(量化比特数)

Case 8:

For( j=0 ;  j<高 ;  j++)

{

For( j=0 ;  j<宽 ;  j++)

{

If(是第一列)

{

 预测误差值=((原值-128)+256)/量化等级

 重建值=(预测误差值*量化等级)-256+128

}

Else

{

 预测误差值=((原值-上一个重建值)+256)/量化等级

 重建值=(预测误差值*量化等级)-256+上一个重建值

}

}

}

 

外层循环为图像中每一行的循环,每行起始像素的预测值设为 128,单独对其进行预测并重建。首先得到差值 ek,像素灰度值范围从 0 255,那么两个像素灰度值之差的范围从 -255 255。由于要存储误差图像,那么先把负灰度值变成正的,也就是+ 255,在 0 510 这个区间内再做量化,区间长度可以看成 9 bit512 级。

 

为了让残差图可见性更强,对残差图进行了非均匀量化。

switch (deviabuffer[j*Width + i])

{

case 0:deviabuffer2[j*Width + i] = 0; break;

case 6:deviabuffer2[j*Width + i] = 64; break;

case 7:deviabuffer2[j*Width + i] = 128; break;

case 8:deviabuffer2[j*Width + i] = 255; break;

default:deviabuffer2[j*Width + i] = 255;

}

 

psnr计算

 实验名称: DPCM 压缩系统的实现和分析_第4张图片

 

实验结果:8bit量化

原图.bmp

预测差值图.yuv

重建图.yuv

差值图的概率分布

 实验名称: DPCM 压缩系统的实现和分析_第5张图片

 实验名称: DPCM 压缩系统的实现和分析_第6张图片

 实验名称: DPCM 压缩系统的实现和分析_第7张图片

 实验名称: DPCM 压缩系统的实现和分析_第8张图片

 以下,略

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

原图像

原始图像大小(KB)

直接熵编码大小(KB)

直接熵编码压缩比

预测差值图像大小(KB)

DPCM+熵编码压缩比

DPCM+熵编码重建图像PSNR(DB)

Birds

1120

1099

1.019

199

5.628

14.098

Noise256B

66

60

1.100

46

1.435

14.3484

Lena256B

193

184

1.049

46

4.196

12.8118

Camman256B

66

59

1.119

41

1.609

12.3896

Clown256B

66

64

1.031

48

1.333

12.1424

Fruit256B

66

64

1.031

42

1.571

11.9524

Zone256B

66

64

1.031

72

0.917

13.7038

Odie256B

66

13

5.077

17

3.882

13.0754

 

预测误差图像都为明显的灰色,电平集中分布在128附近,量化过程中将量化误差抬升128电平所以表明实际预测误差值集中分布在 0 左右,证明对于正常图像,左右相邻像素之间存在很强的关联性,利用相关性对像素量化后进行压缩压缩比会很理想。

 

不同量化比特数的对比:

量化比特数

预测误差图像

重建图像

误差概率分布

8

 实验名称: DPCM 压缩系统的实现和分析_第9张图片

 

 看pdf去

4

 

 实验名称: DPCM 压缩系统的实现和分析_第10张图片

 

2

 

 

 

1

 

 

 

 

程序代码见附件

完整文档图如下

 

你可能感兴趣的:(实验名称: DPCM 压缩系统的实现和分析)