实验报告4_DPCM压缩系统的实现和分析
来源:互联网 发布:php 时间轴源码 编辑:程序博客网 时间:2024/05/18 01:54
一.实验原理
DPCM是差分预测编码调制的缩写,是比较典型的预测编码系统。
在预测编码中,每个抽样值不是独立的编码,而是先根据前几个抽样值计算出一个预测值,再取当前抽样值和预测值之差,将此差值编码并传输,此差值称为预测误差。由于抽样值和预测值之间有较强的相关性,即抽样值和预测值非常接近,使此预测误差的可能取值范围比抽样值的变化范围小,所以可以少用几位编码比特来对预测误差编码,从而降低比特率。
在DPCM系统中,需要注意的是预测器的输入是已经解码以后的样本。因为在解码端无法得到原始样本,所以不用原始样本来预测。在DPCM编码器中实际内嵌了一个解码器。
本次实验中采取左侧预测。
图中d(n)为预测误差,p(n)为预测值。
二.实验流程
(在BMP2YUV实验程序上稍作修改)
1)读取一个256级的灰度图像
2)采用自己设定的预测方法计算预测误差(预测误差图像和重建图像均要输出)
3)对预测误差进行8bit均匀量化
4)用huffman编码器对原始图像和预测误差图像进行压缩,查看压缩比,作出比较
三.关键代码
开两个文件用来输出预测误差图像和重建图像(具体代码略)
开两个跟原灰度图像buffer相同大小的buffer,用来存储预测误差eorBuf,和重建图像rebdBuf:
eorBuf = (u_int8_t*)malloc(Info_header.biWidth * Info_header.biHeight);rebdBuf = (u_int8_t*)malloc(Info_header.biWidth * Info_header.biHeight);
预测算法:
采用左侧预测,第一列的像素均以128做预测
for (k = 0; k < Info_header.biHeight; k++){ for (i = 0; i < Info_header.biWidth; i++){if (i==0){ *(eorBuf + k*Info_header.biWidth + i) = (unsigned char)((*(yBuf + k*Info_header.biWidth + i) - 128) / 2 + 128); *(rebdBuf + k*Info_header.biWidth + i) = (unsigned char)(((*(eorBuf + k*Info_header.biWidth + i )-128) * 2) + 128); }else{ *(eorBuf + k*Info_header.biWidth + i) = (unsigned char)((*(yBuf + k*Info_header.biWidth + i) - *(rebdBuf + k*Info_header.biWidth + i - 1)) / 2 + 128); *(rebdBuf + k*Info_header.biWidth + i) = (unsigned char)(((*(eorBuf + k*Info_header.biWidth + i )-128) * 2) + *(rebdBuf + k*Info_header.biWidth + i - 1));}}}
四.实验结果
1.查看生成的预测误差图像和重建图像:
(第一张为原始图像,第二张为预测误差,第三张为重建图像)
2.对原始图像和预测误差进行Huffman编码后的结果:
(eor开头命名的文件为预测误差文件)
3.原始图像和预测误差图像的符号概率分布:
结果分析:
由统计结果可知,原始图像比预测误差图像的符号分布更为平均,预测误差图像的符号概率主要集中在比较居中的值,说明一般图像的像素之间存在一定相关性,因此经Huffman压缩编码后,原始图像的压缩率一般小于误差图像的压缩率;但是由于噪声是随机的,没有什么相关性,因此预测误差图像的像素分布无规律,预测编码结果不如直接商编码好;zone图像边缘变化较快,且较大值和较小值交替,因此预测编码效果不如直接商编码效果好。
- 实验报告4_DPCM压缩系统的实现和分析
- 实验四 DPCM 压缩系统的实现和分析
- 数据压缩实验四:DPCM 压缩系统的实现和分析
- 实验四 DPCM压缩系统的实现和分析
- 实验四 DPCM压缩系统的实现和分析
- 数据压缩实验四 DPCM 压缩系统的实现和分析
- 数据压缩 实验四 DPCM压缩系统的实现和分析
- 数据压缩 实验四 DPCM压缩系统的实现和分析
- 数据压缩实验四——DPCM压缩系统的实现和分析
- 数据压缩原理与应用 实验四 DPCM 压缩系统的实现和分析
- 数据压缩原理 实验四 DPCM压缩系统的实现和分析
- 数据压缩原理实验4_DPCM编解码
- 数据压缩实验四 DPCM压缩系统的实现与分析
- DPCM 压缩系统的实现和分析
- DPCM 压缩系统的实现和分析
- DPCM 压缩系统的实现和分析
- 【数据压缩】DPCM 压缩系统的实现和分析
- 《数据压缩》实验报告三·Huffman编解码算法实现与压缩效率分析
- 二叉搜索树的实现(查找,插入,删除的递归与非递归)
- 项目人力资源管理脉络
- HDU 2026 首字母变大写
- 我的第一届acm大赛
- c++宏定义
- 实验报告4_DPCM压缩系统的实现和分析
- 阿里云的安全组
- gdfzoj #560 Maple吃饺子
- 『ORACLE』 PLSQL创建存储过程(11g)
- Docker网络管理
- OSI七层模型与TCP/IP五层模型——以太网基础01
- 逆序栈
- 算法设计与应用基础:第十三周(1)
- win64 Robot Framework自动化环境搭建