一、基本原理
DPCM是差分预测编码调制的缩写,是比较典型的预测编码系统。在DPCM系统中,需要注意的是预测器的输入是已经解码以后的样本。之所以不用原始样本来做预测,是因为在解码端无法得到原始样本,只能得到存在误差的样本。因此,在DPCM编码器中实际内嵌了一个解码器,如编码器中虚线框中所示。
二、实验流程
1. 读入BMP文件,转化为YUV文件并提取Y分量;
2. 对该灰度图像进行预测,预测器的输入为上一个样点的重建值,计算预测误差;
3. 对预测误差进行8bit均匀量化;
4. 对量化后的预测误差进行反量化,求重建值;
5. 将预测误差图像写入文件,并将该文件输入实验三的Huffman编码器,得到输出码字的必要信息;将原始灰度图像输入Huffman编码器,得到码字必要信息并比较两种系统(DPCM+熵编码和仅进行熵编码)之间的编码效率。
三、关键代码分析
在实验二BMP2YUV的基础上加一段代码 :
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)
{