数据压缩试验四:使用 DPCM 编码进行图像压缩

数据压缩【实验四】DPCM压缩系统的实现和分析 目录DPCM编码原理算法实现输出结果压缩质量分析压缩PSNR峰值信噪比原理算法 DPCM编码 原理 DPCM是差分预测编码调制的缩写,是比较典型的预测编码系统。在DPCM系统中,需要注意的是预测器的输入是已经解码以后的样本。之所以不用原始样本来做预测,是因为在解码端无法得到原始样本,只能得到存在误差的样本。因此,在DPCM编码器中实际内嵌了一个解码器,如编码器中虚线框中所示。 在一个DPCM系统中,有两个因素需要设计:预测器和量化器。理想情况下,预测器和量化器应进行联合优化。实际中,采用一种次优的设计方法: 阅读详情

使用 DPCM 编码进行图像压缩

基本原理

DPCM,即差分脉冲编码调制(Differential Pulse Code Modulation),通过对图像进行预测编码并缩减图片预测误差的动态范围来实现图像的压缩。本次试验中只对亮度信号 Y 通道进行编码压缩,将图片的第一列像素值作为原始参考值进行预测,通过与左侧的像素值取差计算预测误差,然后进行量化编码。以下为 DPCM 编码端与解码端的原理图
DPCM 编解码器原理图
值得注意的是,在编码端中其实已经内嵌了一个解码端,为的是在编码端用以编码像素的重建值作为下一像素的预测值。

压缩结果

这是未进行 DPCM 编码的原始图像:
在这里插入图片描述
以下依次为 8bit - 1bit量化编码后的重建图像及其各自与原始图像的差值灰度图像:


可以看出,在进行 7、8bit 量化时图片没有太明显的差别,但从 6bit 开始块效应明显,并从 4bit 开始产生明显的偏差,差值灰度图也越来越接近原始图像的灰度图

结果分析

  1. 首先给出不同比特量化后预测误差值的概率分布图(上)与原始图像各亮度值的概率分布图(下)在这里插入图片描述

在这里插入图片描述
可以看到量化后的预测误差值大多集中在 2bits2^{bits}2bits 附近,因为对量化预测误差有搬移的过程,因而说明预测误差多数集中在0附近

  1. 通过对原始图像及各预测误差图像进行 Huffman 编码后得到以下压缩比比较(计算方法为原始图像经过 Huffman 编码后的文件比特数除以经过 DPCM 及 Huffman 编码后的文件比特书)在这里插入图片描述

  2. 通过计算 PSNR 来计算压缩质量

什么是PSNR:
  PSNR,即峰值信号噪声比(Peak Signal to Noise Ratio),通过判断 PSNR 的值来衡量压缩质量,一般规则如下:
  · PSNR≥40dB时,图像质量非常好,接近于原图像;
  · 30dB≤PSNR<40dB时,图像有可察觉的失真,但质量仍可接受;
  · 20dB≤PSNR<30dB时,图像质量较差;
  · PSNR<20dB时,图像质量已经无法接受。
具体计算方法如下:

  1. 首先计算均方误差 MSE(Mean Square Error):
    MSE=∑i=0M∑j=0N[f(I,j)−f′(I,j)]2MN MSE = \dfrac{\sum_{i=0}^M \sum_{j=0} ^N\left[f\left(I,j\right)-f'\left(I,j\right)\right]^{2}}{MN} MSE=MN∑i=0M​∑j=0N​[f(I,j)−f′(I,j)]2​
    其中 M、N 为图像的宽和高,f(i,j)、f’(i,j) 为原图像和重建图像在 (i,j) 的像素值。
  2. 计算 PSNR:
    PSNR=10lg(2bits−1)2MSE PSNR = 10lg\dfrac{\left(2^{bits}-1\right)^{2}}{MSE} PSNR=10lgMSE(2bits−1)2​

计算得到各比特量化后的 PSRN 值如下图,参照 PSRN 评判标准后与主观感受基本一致

在这里插入图片描述

具体代码实现(C++)

quantify.hpp

#ifndef quatify_hpp
#define quatify_hpp

#include <stdio.h>

#endif /* quatify_hpp */
int quatify(unsigned char* previous, unsigned char*yBuffer,unsigned char* quantify,int width,int height,int qBit);

DPCMfile.hpp

#ifndef DPCMfile_hpp
#define DPCMfile_hpp

#include <stdio.h>

#endif /* DPCMfile_hpp */
int DPCMfile(int qBit, unsigned
【信源编码技术】实验2-Huffman编码 实验来源 《数据压缩导论(第4版)》(Khalid Sayood著)第三章 霍夫曼编码 项目与习题 实验内容 一、利用程序huff_enc和huff_dec进行以下操作(在每种情况下,利用由被压缩图像生成的码本)。 (a)对sena、sensin和omaha图像进行编码。 (b)编写一段程序,得到相邻像素之差,然后利用huffman对差值图像进行编码。 给出以上每一试验得出的文件大小,并解释其差别。 二、利用程序huff_enc和huff_dec,并使用由sensin图像生成的码本,对book 阅读详情

相关推荐

实验四——DPCM编码

一.实验原理     DPCM是差分预测编码调制的缩写,是比较典型的系统。在DPCM系统中,需要注意的是预测器的输入是已经解码以后的样本。之所以不用原始值来做预测,是因为在解码端无法得到原始样本,只能用存在误差的解码之后的数据,因此DPCM编码器中实际内嵌了一个解码器。     在一个 DPCM系统中,有两个因素需要设计:预测器 和量化。理想情况下系统中,预测器和量化采取联合优化的方式。而在实

zj_jane的博客 1257

数据压缩实验四:DPCM 压缩系统的实现和分析

一:实验原理 1.DCPM编码原理 DPCM是差分预测编码调制的缩写,是比较典型的预测编码系统。DCPM编码是对模拟信号幅度抽样的差值进行量化编码的调制方式,这种方式是用已经过去的抽样值来预测当前的抽样值,对它们的差值进行编码。在DPCM系统中,需要注意的是预测器的输入是已经解码以后的样本。之所以不用原始样本来做预测,是因为在解码端无法得到原始样本,只能得到存在误差的样本。因此,在DPCM编码

yee_0217的博客 1159

36、图像压缩技术:DPCM、CTW 与 FABD 方法详解

本文详细介绍了三种图像压缩技术:DPCM(差分脉冲编码调制)、CTW(上下文树加权)和 FABD(灵活自动块分解)。DPCM 利用相邻数据的相关性进行预测编码,适用于声音和连续色调图像,但存在量化噪声问题;CTW 通过构建上下文树模型对图像进行高效预测和编码,适用于灰度和彩色图像;FABD 针对离散色调图像,采用块匹配策略实现无损压缩,适用于扫描文档和屏幕截图。文章还对比了三种方法的适用场景,并结合实际案例分析其压缩效果,最后展望了未来的发展趋势,如算法优化、多方法融合以及对新型图像的适应性改进。

html8的博客 139

【老生谈算法】matlab实现图像压缩算法源码——图像压缩

本算法已经整理成文档如下,有需要的朋友可以点击进行下载一、 实验目的 1. 理解有损压缩和无损压缩的概念; 2. 理解图像压缩的主要原则和目的; 3. 了解几种常用的图像压缩编码方式; 4. 利用MATLAB程序进行图像压缩。二、 实验原理 1.图像压缩原理 图像压缩主要目的是为了节省存储空间,增加传输速度。图像压缩的理想标准是信息丢失最少,压缩比例最大。不损失图像质量的压缩称为无损压缩,无损压缩不可能达到很高的压缩比;损失图像质量的压缩称为有损压缩,高的压缩比是以牺牲图像质量为代价的。压缩的实现方法是对图

m0_53407570的博客 2150

基于Matlab的图像压缩编码

摘要 本论文主要介绍了JPEG的编码和解码过程。该程序的编码部分能把一张BMP格式的图象进行JEPG编码,压缩成以二进制形式保存的文件;通过相应的解码程序又可以把图象解压缩出来。在图象传送过程中,我们经常采用JPEG格式对静态图象进行编码。JPEG基本系统是一种有损编码,无法完全恢复出原图象,信息有一定的丢失,称为有损压缩。尽管我们希望能够无损压缩,但是通常有损压缩的压缩比(即原图象占的字节数与压缩后图象占的字节数之比,压缩比越大,说明压缩效率越高)比无损压缩的高。JPEG编码先把图象色彩RBG变成亮度Y和色度Cr、Cb,它利用人的视觉对色度不敏感的特点,减少一部分色度数据,以达到压缩。 JPEG采取多种编码方式,包含有行程编码(Run Length Coding)和哈夫曼(Huffman)编码,有很高的压缩比。在编码前,先对数据进行分块,离散余弦变换(DCT)及量化,保留能量大的低频信号,丢弃高频信号以达到压缩。解码时,进行熵解码,反量化,反离散余弦变换(IDCT)。 关键字:JPEG;有损压缩;行程编码;哈夫曼编码

图像压缩编码

多媒体技术实验图像压缩编码

图像处理实验DPCM

图像处理实验DPCM 图像处理实验DPCM 图像处理实验DPCM

Debian下Rust环境极速安装指南:国内镜像+避坑配置(附清华/中科大源对比)

本文详细介绍了在Debian系统上快速安装和配置Rust开发环境的完整指南。针对国内网络环境,重点对比评测了清华大学、中国科学技术大学等主流镜像源,提供了详细的安装配置步骤、Cargo优化技巧以及常见问题排查方案,帮助开发者显著提升依赖下载和编译效率。

s8t9u0v1w的博客 1162

时序分析-由D触发器结构来理解Tsu、Th

FPGA逻辑单元内的D触发器(D-FF)是一种在时钟的上升沿(或下降沿)将输入信号的变化传送至输出的边沿触发器。 数字电子技术基础-闫石(第五版)边沿D触发器内部结构见下图: 而FPGA原理与结构(日)一书中,内部结构较之上图多了俩反相器: 由传输门和俩个反相器组成一个循环电路(锁存器),再由前后两级锁存器按主从结构链接而成。这里的传输门起开关作用,随着CLK的状态变化切换开关。只看输出的话,前级锁存器的值会随着时钟输入的变化井然有序地传入后级锁存器。为了防止时钟信号变化时输入信号发生冒险,从而使稳定.

XY_Chang的博客 3973

Titans:谷歌新型神经记忆架构,突破 Transformer 长序列处理的瓶颈

Titans 是谷歌推出的新型神经网络架构,通过神经长期记忆模块突破 Transformer 在处理长序列数据时的瓶颈,支持并行计算,显著提升训练效率。

士多啤梨先生の博客 991

从频谱分析到硬件加速:用ZYNQ-7020+FFT IP核实现实时信号处理的完整方案

本文详细介绍了如何利用ZYNQ-7020和FFT IP核实现实时信号处理的完整方案,涵盖系统架构设计、硬件加速实现及性能优化。通过异构计算架构,该方案将1024点FFT处理延迟压缩至28μs,显著提升工业自动化和无线通信等领域的实时频谱分析效率。

weixin_33704234的博客 467

别再只用GPS了!用Android手机传感器实现室内步行轨迹记录(避坑指南)

本文详细介绍了如何利用Android手机传感器(如加速度计、陀螺仪和磁力计)实现室内步行轨迹记录,克服GPS在室内的局限性。通过传感器数据采集、步态检测、航向估计和轨迹绘制等步骤,结合避坑指南和优化技巧,帮助开发者高效构建室内定位应用。

weixin_26821003的博客 274

Spring AI 项目实战(十八):Spring Boot + AI + Vue3 + OSS + DashScope 实现高效语音识别系统(附完整源码)

本文介绍基于 Spring Boot AI 集成阿里云 OSS 与 DashScope 语音识别 API 的高效语音识别系统。该系统通过云端存储音频文件,解决传统本地存储的性能瓶颈与存储压力,支持同步 / 异步语音转文本,实现文件自动生命周期管理。文中详述技术选型、架构设计、核心代码实现(含前后端及配置)、部署流程,展现其高并发处理、可靠文件管理能力,适用于客服、教育等企业级场景,为语音识别应用提供实用解决方案。

博客 1537

【WRF-Urban】WUDAPT详解:An Urban Weather, Climate, and Environmental Modeling Infrastructure

WUDAPT详解:An Urban Weather, Climate, and Environmental Modeling Infrastructure

WW、forever的博客 497

Simulink仿真模块 - Data Type Conversion

Data Type Conversion将输入信号转换为指定的数据类型 在仿真库中的位置为: Simulink / 常用模块 Simulink / Signal Attributes 模型为: 说明 DataTypeConversion模块可将任何 Simulink®数据类型的输入信号转换为您指定的数据类型。 注意 要通过指定模块参数来控制输出数据类型,或者要从下游模块继承数据类型,使用DataTypeConversion模块。要...

jk_101的博客 2520

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

上一篇: 数据压缩试验三:LZW 编码原理与C语言实现
下一篇: 数据压缩作业:最佳预测系数求取过程(手写)与最小二乘法总结
ZACH( ???)
博客等级 码龄7年 11粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值