DPCM编解码原理图
DPCM是差分预测编码调制的缩写,是比较典型的预测编码系统。在DPCM系统中,需要注意的是预测器的输入是已经解码以后的样本。之所以不用原始样本来做预测,是因为在解码端无法得到原始样本,只能得到存在误差的样本。因此,在DPCM编码器中实际内嵌了一个解码器,如编码器中虚线框中所示。在一个DPCM系统中,有两个因素需要设计:预测器和量化器。理想情况下,预测器和量化器应进行联合优化。实际中,采用一种次优的设计方法:分别进行线性预测器和量化器的优化设计。
系统设计
固定预测器和均匀量化器,预测其采用左侧预测。同时实现8bit、4bit、2bit、1bit的量化编码。
代码实现
主函数
#include "dpcm.h"
int main(int argc,char** argv) {
char* input,rebuild,predict;
input=argv[1];
rebuild=argv[2];
predict=argv[3];
int width = atoi(argv[4]);
int height = atoi(argv[5]);
int qbits = atoi(argv[6]);
int PSNR=DPCM(input,rebuild,predict,width,height,qbits);
if(PSNR!=0)
{
cout<<"预测编码成功"<<endl;
cout<<&#