一、实验原理

DPCM编解码原理

DPCM是差分预测编码调制的缩写,是比较典型的预测编码系统。而预测编码就是根据过去的信号样值来预测下一个信号样值,并将预测值与现实样值得差值进行量化、编码后进行数字信号传送。在DPCM系统中,需要注意的是预测器的输入是己经解码以后的样本。之所以不用原始样本来做预测,是因为在解码端无法得到原始样本,只能得到存在误差的样本。因此,在DPCM编码器中实际内嵌了一个解码器,如下图编码器中虚线框中所示。

二、实验代码分析

只需要在BMP2YUV的工程主函数添加一个函数就可以实现DCPM,下面为DCMP 的代码实现部分

        //预测器为左侧预测for (int j = 0; j<height; j++)  //逐行遍历  {for (i = 0; i<width; i++){if (i==0)  //每列第一个元素保持原来的样值不变,只是变换相应的数据类型{k = (*(yBuff + j*width + i) - 128) / 2 + 128;//将差值进行量化*(qBuff + j*width + i) = (unsigned char)k; k = ((*(qBuff + j*width + i )-128) * 2) + 128; //反量化*(reBuff + j*width + i) = (unsigned char)k; }else{    //当前差值信号为当前样值与上个预测样值的差值 并进行了量化k = (*(yBuff + j*width + i) - *(reBuff + j*width + i - 1)) / 2 + 128;*(qBuff + j*width + i) = (unsigned char)k;//当前重建信号为 反量化后的差值信号与上一个重建信号的和k = ((*(qBuff + j*width + i )-128) * 2) + *(reBuff + j*width + i - 1);*(reBuff + j*width + i) = (unsigned char)k;}}}fwrite(reBuff, 1, width * height, reFile);  //写入文件fwrite(qBuff, 1, width * height, qFile);

三、实验结果分析

1、下面都是为8bit量化,并采取左侧预测

(下图中左边为原始图像的概率分布图,右边预测误差图像的概率分布图)

原始图像的yuv 重建图像yuv 量化误差

以下为自己找的图

下图为图像文件大小以及压缩比

小结:
(要注意的是原图像yuv只要y分量)
可以看出重建图像和原始图像在人眼观察下并没有太大的差别,量化误差的概率分布都集中在中间段,即128附近。
原始图像直接huffman编码压缩效率很低,平均都只比1多一些。
结合概率分布图和压缩比,依据huffman编码的特点,可以看出预测误差图像的概率分布更加的不均匀,编码效率越高,因此量化后的误差压缩比要更大,更能节省空间。
但是噪声那幅图,预测误差图像的概率分布不如原始图像概率分布那么不均匀,猜测是噪声图像并没有什么图像内在规律,而正常图像都有内在联系,可以从差值图像几乎都为原始图像的轮廓看出。

2、下面采取8bit量化及上侧预测,并与左侧预测进行比较

从左至右分别是上侧预测,左侧预测和原图


小结:
可以看出在水平方向边缘明显的图像,在左侧预测下的误差预测图更加显示出轮廓;而在垂直边缘明显的图像,在上侧预测的误差预测图更加显示出轮廓。而左侧与上侧的误差预测图在视觉感觉上给人的不同也因为原图像左右上下像素值差所引起。

3、下面采取8bit,4bit,2bit的值的flower图进行比较(均采用左侧预测)

量化比特数 量化误差图 重建图
8
4
2

小结:
观察量化误差图,可以发现随着量化比特数的减少,图像越来越暗,这是因为量化数越少,由于均匀量化,量化值越靠近0,即图像越暗。而重建图像,随量化比特数的减少,图像失真越来越明显。

数据压缩原理实验4_DPCM编解码相关推荐

  1. python 编码解码原理_Python JSON编解码方式原理详解

    这篇文章主要介绍了Python JSON编解码方式原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 概念 JSON(JavaScript Ob ...

  2. 数据压缩原理 实验三 Huffman编解码算法实现与压缩效率分析

    实验原理 Huffman编码是一种无失真编码方式,是一种可变长编码,它将出现概率大的信源符号短编码,出现概率小的信源符号长编码. 编码步骤: ①将文件以ASCII字符流的形式读入,统计每个符号的发生概 ...

  3. 基于DCT变换的JPEG图像压缩原理与JPEG2000编解码原理

    目录 参考文章 基于DCT变换的JPEG图像压缩原理 图像数据压缩 图像处理 为什么可以进行图像压缩? 颜色空间转换 RGB CMY HSV/HSI/HSB/HSL YUV/YCbCr YCbCr与R ...

  4. 通信原理与MATLAB(十三):AMI的编解码

    目录 1.AMI的的编解码原理 1.1 AMI编码原理 1.2 AMI解码原理 2.AMI编解码的代码 3.AMI编解码结果图 4.AMI的误码率曲线 4.1 原理 4.2 AMI的误码率曲线代码 4 ...

  5. 音频技术操作(重采样,增减益,混流,编解码及实际应用)

    本人的个人网站已恢复,欢迎访问:www.jackchen.world或www.jackchen.work.之所以有时会出现访问不了的情况,主要是因为本人所用的设备是物理设备并非租用,放在自己老家,家里 ...

  6. 数据压缩 实验三 Huffman编解码算法实现与压缩效率分析

    实验目的 掌握Huffman编解码实现的数据结构和实现框架, 进一步熟练使用C编程语言, 并完成压缩效率的分析. 实验原理 1.本实验中Huffman编码算法 (1)将文件以ASCII字符流的形式读入 ...

  7. 数据压缩12 | 实验8 | H.264视频编解码

    目录 一.实验准备 1. H.264编码过程 2. 调试和编码(参考JM Reference Software Manual (JVT-AE010)) 3. 编码参数(参考JM Reference S ...

  8. ITU-T H.264/MPEG-4 AVC编解码原理介绍

    本文档适合基本了解数字图像处理的初学者,仅用于研究交流,由于资料来源较多,只能尽量在相关章节注明出处. 转载本文请注明出处http://blog.csdn.net/chinadragon76/arti ...

  9. 视频编解码——视频编解码器工作原理

    目录 视频编码器基础认知 什么是视频编解码器 为什么需要视屏编解码器 视频编码器与数字视频容器 视频编码标准的历史 通用编解码器 1.图片分区 查看分区 2.预测 3.转换 使用全部像素形成每个系数 ...

最新文章

  1. 【网络流24题】解题报告:K、航空路线问题(最小费用最大流)
  2. PHP -----上传文件
  3. SAP Spartacus HTTP请求的错误处理机制
  4. python itertools_itertools
  5. 1018. 锤子剪刀布 (20)-PAT乙级真题
  6. html5的修改滚动条滑块样式,修改element-ui滚动条样式
  7. SQL注入漏洞解决心得
  8. 互联网广告类型的分析--弹出式广告【3】
  9. Word如何在表格里面插入行或者列
  10. 【ML】从特征分解,奇异值分解到主成分分析
  11. 恶魔奶爸语法7-9课
  12. 打开计算机无法显示工具栏,任务栏不显示打开的窗口怎么办教程
  13. 色彩缤纷的python(改变字体颜色及样式)不是我写的
  14. 毒你没商量!DOC病毒原理完全解析(转)
  15. 生物信息常用文件格式
  16. UVA10306 - e-Coins(二维完全背包)
  17. android图片播放器,android案例之图片播放器
  18. # imshow 报错
  19. r720服务器系统安装u盘,服务器r720设置u盘启动
  20. python中的scipy基础知识_python中SciPy是什么?

热门文章

  1. oracle排序函数
  2. android效率工具,工具|5款瞬间提升工作效率的APP
  3. java形状类_[转载]JAVA 设计一个形状类Shape 求周长和面积
  4. 休假结束,Linus重回内核开发岗位
  5. 头歌 python 绘制人脸与人眼区域
  6. 如何进入已经停止的容器内部
  7. python无师自通韩国语_无师自通韩国语第9课
  8. php word 合并单元格格式,PHPWord小记之表格居中和合并单元格
  9. Java使用Junit测试控制台输出
  10. fastboot烧写sd卡mbr类型分区