一 DPCM编解码原理
DPCM——差分预测编码调制,是典型的预测编码系统。预测编码:根据过去的信号样值来预测下一个信号样值,并将预测值与现实样值得差值进行量化、编码后进行数字信号传送。
注意:因为在解码端只能得到存在误差的样本,所以不用原始样本来做预测,预测器的输入是己经解码以后的样本。因而在DPCM编码器中实际内嵌了一个解码器,如下图编码器中虚线框中所示。
二关键代码DPCM
void DPCM(unsigned long w, unsigned long h,unsigned char* y, unsigned char* q, unsigned char* re)
{
unsigned char Predict;
for (int i = 0; i < h; j++)
{
for (int j = 0; j< w; i++)
{
if (j == 0) Predict = 128;
else
Predict= re[j * w + j - 1];//以左侧重建值作为预测值
q[i * w + j] = (y[i * w + j] - Predict) / 2 + 128;//对预测误差进行8bit量化
re[i * w + j] = (q[i * w + j] - 128) * 2 + Predict;//进行反量化,经过运算得到重建值
}
}
}
二PSNR关键代码
三Huffman编码原理及结果分析