您好,欢迎来到爱够旅游网。
搜索
您的当前位置:首页基于小波变换的图像压缩与仿真

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

来源:爱够旅游网


某某某学校

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

学 院: 电控学院 专 业: 控制理论与控制工程 姓 名: 。。。。 学 号: 。。。。。。。。。 指导教师: 。。。。。。。 完成时间: 2011年12月16号

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

1设计概述:

图像压缩是当今信息时代迫切需求的一门图像处理技术,它极大地减少了图像的数据量,为图像的存储、传输提供了方便。小波变换本是一种广泛用于图像压缩的有效方法,而Matlab则是一套高性能的数值计算和可视化软件,它集数值分析、矩阵运算、信号处理和图像显示于一体,附带的小波分析工具箱功能强大,可以完成小波分析的绝大部分工作。

本文将采用小波变换对图像进行特定层数分解,以得到预期的压缩比,利用Matlab编程,调用小波分析工具箱相关函数,对图像进行简单处理,实现图像的压缩,达到图像数据量减少的功效。

2 图像压缩原理:

对于给定的任何图像,图像都能分解成一个轮廓信号(低频子图)和水平、垂直、对角线三个方向上的细节信号(高频子图),相应的轮廓信号又可以进一步分解。而图像的主要能量部分是低频部分,而且人眼视觉系统对低频部分更为敏感,所以可以对低频部分进行低压缩比,对高频部分相应采用较高压缩比,最终再将所有的分量进行图像重构,重构后的图像即是预期压缩处理后的图像。

3 图像压缩过程:

3.1使用小波分解函数实现图像压缩: 3.1.1程序代码

>> A0=imread('D:\\rose.jpg'); >> A1=rgb2gray(A0); >> A=double(A1); >> subplot(2,2,1); >> imshow(A1); >> axis square; >> title('原图像');

>> disp('1'); whos('A') %对图像用小波进行层小波分解

>> [C,S]=wavedec2(A,2,'bior3.7'); %提取小波分解结构中的一层的低频系

数和高频系数

>> CA1=appcoef2(C,S,'bior3.7',1); %水平方向 >> CH1=detcoef2('h',C,S,1);%垂直方向 >> CV1=detcoef2('v',C,S,1);%对角线方向

>> CD1=detcoef2('d',C,S,1); %各频率成份重构

>> A1=wrcoef2('a',C,S,'bior3.7',1); %可以选择不同的小波,根据应用而

定 >> H1=wrcoef2('h',C,S,'bior3.7',1); >> V1=wrcoef2('v',C,S,'bior3.7',1); >> D1=wrcoef2('d',C,S,'bior3.7',1); >> C1=[A1,H1;V1,D1]; %显示分频信息 >> subplot(2,2,2); >> imshow(C1); >> axis square;

>> title('分解后低频和高频的信息'); >> %CA1=0.5*CA1; %改变图像亮度并显示

>> subplot(2,2,3);image(CA1);axis square;title('第一次压缩图像'); >> disp('2');whos('CA1') %保留小波分解第二层低频信息进行压缩 >> %CA2=0.25*CA2; %改变图像亮度并显示 >> CA2=appcoef2(C,S,'bior3.7',2);

>> subplot(2,2,4);image(CA2);axis square;title('第二次压缩图像'); >> disp('3');whos('CA2')

3.1.2图像压缩仿真结果图如图1所示:

当选取不同小波时,图像的压缩程度会有所不同,具体选择应该适实际情

况而定。

图(1)图像压缩仿真结果图

3.1.3仿真数据结果如表(1)所示:

表(1)图像压缩数据结果:

Name A CA1 CA2

Size 3201x4266 967x1287 491x651 Bytes 109243728 9956232 2557128 Class double double double Attibutes 右上 左下 右下 3.1.4结果分析

从表(1)中数据可以看出,图像的大小在进行压缩之后确实减小了,所

占的空间相应的也减小了,即通过使用小波分解函数对图像的压缩达到了预期效果;

如上压缩图像的方法是基于分解系数矩阵的,由于图像信息主要集中在小波分解的近似系数矩阵中,因此可以使用该图像分解的近似系数矩阵作为图像的编码。然而,此方法却比较粗糙,若想对图像进行比较细致的压缩可以可虑小波压缩函数来实现,例如,函数wdencmp.简单实现如下:

>> A=imread('D:\\rose.jpg'); >> A1=rgb2gray(A);

>> [c,s]=wavedec2(A1,3,'db1'); >> alp=1.5;m=2.7*prod(s(1,:)); >> [t,n]=wdcbm2(c,s,alp,m) t =

12.5000 17.2500 12.5000 12.5000 17.2500 12.5000 12.5000 17.2500 12.5000 n =

25920 39906 73313

>> [B0,B1,B2,k1,k0]=wdencmp('lvd',c,s,'db1',3,t,'h'); >> subplot(1,2,1),image(A1); >> subplot(1,2,2),image(B0); >> disp('恢复百分比'),k0 恢复百分比 k0 =

99.7396

>> disp('压缩百分比'),k1 压缩百分比 k1 =

95.6090

运行结果图如图(2)所示:

图(2)使用小波压缩函数实现图像压缩

4 心得体会:

整个设计过程中遇到了不少问题,但最终通过查书、网上搜索都一一解决了,其实每一个遇到的问题对我来说都是一种升华。伴随着一种喜悦流淌在心中,随着设计的一步步完善我们学到的不仅仅是知识,还有一种态度,那就是正确认真的对待每一次尝试。这是对知识的渴望,对未来的憧憬,以及为理想而奋斗的原动力。对于这样一种大作业,虽看似简单,但要想将其做好,还是蛮具挑战性的。

在这次大作业的完成过程中,我也确实体会到了温故而知新了,隔岸观火毕竟不如身临其境,不仅对于数字信号处理中的小波分析有了性的认识,也对于Matlab软件的简单应用进行了巩固,总之,此次大作业使我受益匪浅。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- igbc.cn 版权所有 湘ICP备2023023988号-5

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务