基于小波变换的图像压缩解压缩的matlab仿真

news2024/11/26 0:25:33

目录

1.算法描述

2.仿真效果预览

3.MATLAB核心程序

4.完整MATLAB


1.算法描述

图像压缩的类别

        对于图像压缩,主要有两类方法:无损的图像压缩以及有损的图像压缩,分别称为lossless image compression and lossy image compression。

        对于无损的图像压缩方法,压缩的图像必须是原图像的精准的复制,这种的方法主要用于医学影像等方面,稍微一点的图像损失就会带来较大的风险(比如说错误的医学诊断)。

而有损的图像压缩则更为常见,其主要目的是均衡重建图像的质量以及提高压缩比。

图像的数字表示 Digital Representation of Images

       通常的图像可以被定义为2-D的函数f(x,y), 其中x,y为空间坐标,f的幅值被称为亮度/强度或灰度(brightness, intensity, grey level)。 对于我们常见的图像,可以用矩阵MN表示,每个点有各自的像素值,该像素值用无符号的8bit整数表示,范围为0-255,即我们通常所说的8bit位宽的M*N的图像。同样的对于彩色图像,可以由三个这样的矩阵来表示(RGB, HSV, YUV等),那么此时为24bit的彩色图。

数字图像压缩 Digital Image Compression

一张图像之所以可以被压缩,有着以下几方面的原因:

1. 对于单张图像来说,在邻近的像素之间有着大量的相关性/冗余,称之为空间冗余。因为通常来说,邻近的像素点基本会拥有较为相近的像素值。

2. 对于从多个sensor获得的数据,各自存在着一定的相关性。

       因此,图像压缩方法就是利用了图像中存在的这些冗余性从而得以实现的。图像压缩系统通常分为两部分:压缩以及解压缩(compressor , decompressor)。对于compressor:通常分为预处理以及编码阶段(preprocessing stage and encoding stage);其中,前处理可以进行一些灰度值/空间域的量化;或者是去噪等。在压缩阶段,可以先将图像进行转换至其它的数学空间,使得其可以更容易的进行压缩(比如说转换到YUV空间,或者是DCT变换等)。接下来是量化阶段,将一些连续的数值转换成离散的形式。

        最后的阶段是编码的部分。将得到的数据进行编码后传输。而对于decompressor:通常分为解压缩以及后处理阶段(decoding stage and postprocessing stage).在解压缩阶段,首先做编码对应的解码, 再进行反量化, 以及反向的图像空间域的转换。其过程与compressor里的是一一对应的。其中,后处理可以来减少在压缩过程中产生的一些伪影等。

        小波变换(wavelet transform,WT)是一种新的变换分析方法,它继承和发展了短时傅立叶变换局部化的思想,同时又克服了窗口大小不随频率变化等缺点,能够提供一个随频率改变的“时间-频率”窗口,是进行信号时频分析和处理的理想工具。它的主要特点是通过变换能够充分突出问题某些方面的特征,能对时间(空间)频率的局部化分析,通过伸缩平移运算对信号(函数)逐步进行多尺度细化,最终达到高频处时间细分,低频处频率细分,能自动适应时频信号分析的要求,从而可聚焦到信号的任意细节,解决了Fourier变换的困难问题,成为继Fourier变换以来在科学方法上的重大突破。

2.仿真效果预览

matlab2022a仿真结果如下:

 

 

 

3.MATLAB核心程序

clc;
clear;
close all;
warning off;
addpath(genpath(pwd));
 
orimg=imread('lena.bmp');
imshow(orimg); 
title('原始图象'); 
orimage=double(orimg);
tImg=wavelet('2D D5',1,orimage,'sym');
tImage=uint8(tImg);
figure; 
imshow(tImage);
Img=zeros(512,512);
Img(1:256,1:256)=tImg(1:256,1:256);
[Image,sc,dmatrix]=double2uint(Img);
x=select(Image);
code=RLC(x);
 
%%%%%%%%%%%%%%%%%%%解码部分%%%%%%%%%%%%%%%%%%
Image=dec(code);
Image_r=uint2double(Image,sc,dmatrix);
IImg=wavelet('2D D5',-1,Image_r,'sym');
IImg=uint8(IImg);
figure;imshow(IImg);
title('恢复图象'); 
diff=orimg-IImg;
figure;imshow(diff);
e=sum(sum(diff))/(sum(sum(orimg)));
 
 
 
total_infor=512*512;
[code_r,code_c]=size(code);pp=(512*512)/code_c;
disp(['压缩前的图像信息大小为:',int2str(total_infor)]);
disp(['压缩后的图像信息大小为:',int2str(code_c)]);
disp(['压缩率为:',num2str(pp),':1']);
disp(['压缩误差为:',num2str(e)]);
A116

4.完整MATLAB

V

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/86403.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]Node.js计算机毕业设计动漫网站Express

项目运行 环境配置: Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境:最好是Nodejs最新版,我…

第37篇 网络(七)TCP(一)

导语 TCP即TransmissionControl Protocol,传输控制协议。与UDP不同,它是面向连接和数据流的可靠传输协议。也就是说,它能使一台计算机上的数据无差错的发往网络上的其他计算机,所以当要传输大量数据时,我们选用TCP协议…

ssm+Vue计算机毕业设计校园生活服务预约管理系统(程序+LW文档)

ssmVue计算机毕业设计校园生活服务预约管理系统(程序LW文档) 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)…

spring切入点表达式(一)

前面写到切入点表达式,如果把全部方法都作为切入点的话,用execution(* *(..))表达式,这个表达式代表什么意思呢? public void login (String name,String address){} * * ( . . ) * *(..)对应方法如上图 * -------->代表修…

【GRU回归预测】基于鲸鱼算法优化门控循环单元WOA-GRU神经网络实现多输入单输出回归预测附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法 …

网络协议—应用层的HTTPS协议

用 HTTP 协议,看个新闻还没有问题,但是换到更加严肃的场景中,就存在很多的安全风险。例如,你要下单做一次支付,如果还是使用普通的 HTTP 协议,那你很可能会被黑客盯上。例如在点外卖的环境中,发…

面试题 —— 真实面试题分享

文章目录 一、对BFC的理解。二、CSS中”::“和”:”的区别?三、对vue生命周期的理解? 四、vue组件通信的方式 五、vue中给data中的对象添加一个新的属性会发生什么,如何解决? 六.微信小程序组件的生命周期 七、javascript原型与继承的理解…

【vue基础】关于组件之间的通信

目录 (1)父组件向子组件传递信息 1.props: 2.第二种是直接从子组件里面利用¥parent和root引用,获取根组件和父组件中的数据 (2)子组件数据传入父组件 1.通过自定义事件 2.通过$refs引用集合…

Docker-自定义镜像上传阿里云

目录 一、Docker制作jdk镜像 jdkv.1.0的制作 步骤 二,alpine制作jdk镜像 2.1 alpine Linux简介 2.2 基于alpine制作JDK8镜像 前期准备 2.3步骤 2.3.1.下载镜像 2.3.2.创建并编辑dockerfile 2.3.3.执行dockerfile创建镜像 2.3.4.创建并启动容器(可略) 2.3.5.进…

考虑碳交易机制的园区综合能源系统电热协同运行优化研究(Matlab代码实现)

💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑…

【加油站会员管理小程序】05 充值套餐功能

上一篇我们讲解了轮播图的开发,本篇我们讲解充值优惠功能的开发。 开发之前我们要思考如何展示信息,在我们的功能规划里,在首页部分是要展示三个充值的套餐信息。那这个套餐呢最好是存在数据源中,便于日后维护信息。 在应用的编辑器里,点击数据源的图标,我们创建一个数…

m最小二乘法自适应均衡误码率仿真,对比LS,DEF以及LMMSE三种均衡算法误码率

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 信道估计是通信系统接收机的重要功能模块,主要是用来估计信号所经历信道的冲击响应,并用于后续的信道均衡处理,以便消除多径信号混叠造成的ISI。 信道估…

[附源码]Node.js计算机毕业设计二手车交易平台设计Express

项目运行 环境配置: Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境:最好是Nodejs最新版,我…

硕士生论文学习——基于孪生神经网络的改进模型在中文语义相似度上的研究

文章目录摘要2.2 孪生神经网络3.2 基于孪生ELETRA网络的语义相似度交互模型结构3.3 实验结果分析3.3.4 评价指标摘要 啥啊:两个文本之间的交互特征 LSTM 应用于孪生神经网络的特征提取层,可以获取到长文本的语义信息。 孪生神经网络的特征提取层&…

【kernel exploit】CVE-2022-25636 nftables OOB 写堆指针漏洞利用

影响版本:Linux 5.4-rc1~5.17-rc5。5.17-rc6 已修补。 测试版本:Linux-5.13.19 (原作者在Ubuntu 21.10 内核版本 5.13.0-30 中测试,成功率40%,由于用到 msg_msg 对象,所以只能用 5.14 以前的内核版本进行测…

Linux 下复现 Google Chrome RCE

写在前面:网上大多都是windows下复现的,不过最近我在Linux中也遇到了低版本的chrome,想着这也是一个点,但是没想到技术不够,没搞出来,还是看大佬的文档慢慢学吧。。。 目录 一.环境搭建 1.1 环境信息 1.…

GX Works3 跨网访问

需求背景 1,有N条产线。 2,每条产线是一个独立的局域网。类似于192.168.x.x 3,每条产线部署一台产线控制系统。采用双网卡。一张接车间网络;一张接产线自身的局域网。 现在的需求是: 需要读写任意一条产线的PLC(三…

强化学习学习资料

1、OpenAI建立的强化学习教育资源网站,可以让我们更轻松地学习深度强化学习。里面有很多有用的资源,包括: (1)强化学习基本术语、算法种类、基本理论的介绍。 (2)一篇关于如何成长为RL研究者的…

是一种非常的Cy类近红外荧光染料,1686147-55-6,ICG amine,本产品的ICG是临床中所使用的ICG染料的衍生物

ICG(Indocyanine Green),是一种非常的Cy类近红外荧光染料,在临床中用于手术导航。ICG的体内药理学性质非常明确,具有良好的安全性,是常用近红外染料,被***运用于生物诊疗。ICG的荧光母核和Cy7.5…

Python中ArcPy基于矢量范围批量裁剪大量栅格遥感影像

本文介绍基于Python中ArcPy模块,基于矢量数据范围,对大量栅格遥感影像加以批量裁剪掩膜的方法。 本文所需要的代码如下所示。 # -*- coding: utf-8 -*- """ Created on Tue Dec 13 20:07:48 2022author: fkxxgis """impo…