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]=128+(eBuf_p[frameWidth*j]-127)*2 ;
for(i=1+j*frameWidth;i<frameWidth*(j+1);i++)//每次对一行内的像素做预测。以行为周期循环。
&

本文介绍了差分脉冲编码调制(DPCM)的基本原理,利用信源符号相关性进行预测,通过误差量化实现数据压缩。在实验中,量化成为主要误差来源,编码器内嵌解码器。一阶DPCM以前一像素值为预测值,通过8比特或4比特量化处理预测误差。二阶DPCM和不同量化比特数影响码长和重建图像质量,量化比特数减少会增大重建误差。
最低0.47元/天 解锁文章
604

被折叠的 条评论
为什么被折叠?



