DPCM压缩实现

DPCM:差分脉冲编码,其关键是预测。

预测的基本原理:利用信源符号之间的相关性,用当前样值以前的若干个样值线性组合作为当前样值的预测值。当仅适用前一样值且预测系数为1时,则为DPCM。若样本序列在时间上有较强的相关性,并且预测阶数和量化比特数选择的足够好,则误差信号的幅度将远远小于原始信号,从而得到较好的压缩。
原理框图:

m(k)—输入抽样信号  m’ (k)—预测抽样信号
e(k) —输入信号与预测信号的差值,e(k)= m(k)-m’ (k)
eq(k)—量化后的预测信号差值 
 m~(k)—重建信号, m~(k)=eq(k)+m’ (k)

实验中的主要误差来源于量化。且编码器中嵌套了一个解码器。

代码实现:

变量定义:

unsigned char* pBuf = NULL;//存储重建图像值
unsigned char* eBuf_p = NULL;//存储量化后的差值
int eBuf ;//存储差值

开辟内存:

pBuf = (unsigned char*)malloc(frameWidth * frameHeight);
eBuf_p =(unsigned char*)malloc(frameWidth * frameHeight);

一阶(8比特量化):

for( int j=0;j<frameHeight;j++)//j:行
        {//对第一列的像素单独操作
            eBuf=yBuf[j*frameWidth]-128;
            eBuf_p[j*frameWidth]=(eBuf+255)/2;
            yBuf[j*frameWidth]=128+(eBuf_p[j*frameWidth]-127)*2;
            pBuf[frameWidth*j]
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值