1.基本原理
DPCM是差分预测编码调制的缩写,是比较典型的预测编码系统。在DPCM系统中,需要注意的是预测器的输入是已经解码以后的样本。之所以不用原始样本来做预测,是因为在解码端无法得到原始样本,只能得到存在误差的样本。因此,在DPCM编码器中实际内嵌了一个解码器,如编码器中虚线框中所示。在一个DPCM系统中,有两个因素需要设计:预测器和量化器。理想情况下,预测器和量化器应进行联合优化。实际中,采用一种次优的设计方法:分别进行线性预测器和量化器的优化设计。
基本原理图
本实验中,DPCM对当前值和预测值的差值(预测误差)进行量化,预测误差值的范围为[-255,255],因此用9bit表示且需要单极性化(+255)。残差值的量化映射方法是除以量化间隔再取整,这种量化方法相当于每次取下电平。
实验代码:
1.概率分布
#include<iostream>
#include<math.h>
using namespace std;
int prob(int height, int width, unsigned char* inbuf, double* outpro)
{
double size = height * width * 1.5;
int num[256] = { 0 };
double pro[256] = { 0 };
for (int i =