DPCM预测编码压缩及其分析

本文介绍了DPCM预测编码压缩的原理和实现,通过分析算法过程和实验结果,揭示了DPCM如何利用信号差值减少信源熵,提高编码效率。实验部分展示了不同量化比特数下的图像质量和PSNR值,证明了DPCM在图像压缩中的有效性和压缩比优势。
摘要由CSDN通过智能技术生成


DPCM预测编码压缩及其分析

1 算法原理

DPCM即差分脉冲编码调制,基本思想是对信号差值进行量化。由于实际图片的像素之间存在相关性,所以进行差值计算之后,得到的重复差值会较多,信源熵随之减小。
通过对《信息论与编码原理》这门课的学习,我们已经知道大量重复,且取值范围比原分布范围更窄的差值,在应用变长Huffman编码时,其优势是显著的(降低平均码长)。
因此,我们一般在编码前,会先让数据经过DPCM系统!而通过对《通信原理》的学习,我们也知道这之间也必然存在着量化误差!
在这里插入图片描述
在这里插入图片描述

2 算法实现

在最开始,开辟三个Buffer区,分别存放原始图像数据、重建图像数据和残差数据。

主函数
int main() //进行文件读写,并把Y传给DPCM进行插值
{
   
    //读yuv文件
    FILE* file1, * file2, * file3;
    fopen_s(&file1, "Lena256B.yuv", "rb");

    unsigned char* y_buffer = new unsigned char[height * width];
    unsigned char* u_buffer = new unsigned char[height * width * 0.25];
    unsigned char* v_buffer = new unsigned char[height * width * 0.25];
    fread(y_buffer, sizeof(unsigned char), height * width, file1);
    fread(u_buffer, sizeof(unsigned char), height * width * 0.25, file1);
    fread(v_buffer, sizeof(unsigned char), height * width * 0.25, file1);
    fclose(file1);

    unsigned char* dBuf = new unsigned char[height * width];  //残差Buffer
    unsigned char* reBuf = new unsigned char[height * width]; //重建Buffer

    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值