基于matlab的数字图像图像压缩与编码含matlab源程序_第1页
基于matlab的数字图像图像压缩与编码含matlab源程序_第2页
基于matlab的数字图像图像压缩与编码含matlab源程序_第3页
基于matlab的数字图像图像压缩与编码含matlab源程序_第4页
基于matlab的数字图像图像压缩与编码含matlab源程序_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于matlab 的数字图像图像压缩与编码(含matlab源程序)目 录摘要IAbstractII1.傅里叶变化及反变化11.1 原理及计算公式11.2 傅里叶变换与反变换程序21.3傅里叶变换及反变换结果32.小波变换42.1原理及公式4原理简介4对目标图片的处理及相关函数介绍42.2小波变换程序52.3 小波变换结果63.小波包变换73.1 原理及公式73.2 小波包变换程序73.3 小波包变换结果84.余弦离散变换104.1原理及公式104.2余弦离散变换程序104.3余弦离散变化结果115 离散沃尔什、二维哈达玛变换125.1 原理及公式125.1.1 离散沃尔什变换125.1.2 哈

2、达玛变换125.2 Walsh-Hadamard变换程序135.3 二维离散哈达玛变换结果136. 小波变换图像压缩146.1 小波变换压缩简介146.2小波压缩变换程序146.3 小波压缩结果166.4 压缩前后图像比较177.离散余弦变换图像压缩187.1 原理简介187.2 离散余弦变换图像压缩程序187.3离散余弦变换图像压缩结果197.4压缩图与原图对比208.实验心得219.参考文献21摘要MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成

3、在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平MATLAB在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORT

4、RAN等语言完成相同的事情简捷得多,并且mathwork也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C+ ,JAVA的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。本次课程设计则是基于MATLAB图像变换及压缩编码,着重训练matlab在图像处理方面的应用,能够运用相关软件进行模拟分析。通过对采集的图像进行读入图像并对图像进行傅利叶变换、小波变换、小波包变换、离散余弦变换、离散沃尔什变换,二维哈达

5、玛变换。并分别采用小波变换和离散余弦变换对图像进行压缩,并与原图像进行比较。从而达到对matlab软件的熟悉和程序的书写。关键字: matlab 图像变换 压缩编码AbstractMATLAB is a U.S. company's main face mathworks scientific computing, visualization and high-tech interactive computing environment programming. It numerical analysis, matrix computation, scientific data vis

6、ualization and nonlinear dynamic systems modeling and simulation, and many other powerful features in an easy to use integrated Windows environment for scientific research, engineering design and the need for effective numerical calculation many fields of science provides a comprehensive solution, a

7、nd largely out of the traditional non-interactive programming language (such as C, Fortran) of the edit mode, on behalf of the current international advanced level of scientific computing softwareMATLAB application of technology in mathematics classes in numerical computing software, second to none.

8、 MATLAB matrix operations can be carried out, drawing functions and data, algorithm, create user interfaces, connecting the procedures of other programming languages, mainly used in engineering calculations, control design, signal processing and communications, image processing, signal detection, fi

9、nancial modeling design and analysis and other fields.MATLAB's basic data unit is the matrix, its expression and mathematics instruction, engineering is very similar to the form commonly used, it is calculated using MATLAB to solve the problem than using C, FORTRAN and other languages accomplish

10、 the same thing much more simple and mathwork also absorbed the advantages of software such as Maple, MATLAB makes a powerful mathematical software. In the new version also adds support for C, FORTRAN, C, JAVA support. Can be called directly, the user can also write their own utility function librar

11、y into MATLAB to facilitate their future calling, in addition to many fans have written a number of MATLAB classic procedure, the user can download directly you can use.The course design is based on the MATLAB image transformation and compression, focusing on training matlab in image processing appl

12、ications, can be analyzed using simulation software. Images collected by the image and the image read into the Fourier transform, wavelet transform, wavelet packet transform, discrete cosine transform, discrete Walsh transform, two Weiha dammar transformation. The approach of using wavelet transform

13、 and discrete cosine transform, image compression, compared with the original image. Matlab software to achieve the familiar and the writing process.Keywords: matlab image transform coding1.傅里叶变化及反变化1.1 原理及计算公式Matlab 函数 fft、fft2 和 fftn 分别可以实现一维、二维和 N 维 DFT 算法;而函数 ifft、ifft2 和 ifftn 则用来计算反 DFT 。这些函数的

14、调用格式如下:Afft(X,N,DIM)其中,X 表示输入图像;N 表示采样间隔点,如果 X 小于该数值,那么 Matlab 将会对 X 进行零填充,否则将进行截取,使之长度为 N ;DIM 表示要进行离散傅立叶变换。Afft2(X,MROWS,NCOLS) 其中,MROWS 和 NCOLS 指定对 X 进行零填充后的 X 大小。Afftn(X,SIZE)其中,SIZE 是一个向量,它们每一个元素都将指定 X 相应维进行零填充后的长度。一个图象尺寸为M×N的离散函数f(x,y)的离散傅立叶变化如下: (1.1)f(x,y)可以通过对F(u,v)求傅立叶逆变化获得,其表达式如下: (1

15、.2)式中,。式(1.1)和式(1.2)构成了二维离散傅立叶变化对。变量u和v是频率变量,x和y是空间变量。常量的位置并不重要,可以将它放在逆变化之前,还可以将常量分为两个相等的常数,分别乘在正变化和逆变化式前。在实际工程应用中分析幅度谱较多,习惯上也常把幅度谱称为频谱。二维离散傅立叶变化(DFT)有着较强的物理意义,所以在信号分析与处理领域占有重要的地位。DFT变化进行图象处理时有如下一些特点:(1)直流成分为。(2)幅度谱对称于原点。(3)图象平移后,幅度谱不发生变化,仅有相位发生了变化。1.2 傅里叶变换与反变换程序A=imread('E:图图yw.jpg');I=rgb

16、2gray(A);C=fft2(double(I); %对图像进行傅立叶变换B=fftshift(fft2(double(I); %将直流分量移到频谱图的中心D=ifft2(B); %傅立叶反变换figure; %画图像原始图imshow(I);title('原图');figure;imshow(log(abs(B)+1),);title('直接变换频谱图');figure; %画直接变换频谱图imshow(abs(D),);title('反傅里叶变换图');1.3傅里叶变换及反变换结果图1.3 傅里叶及反傅里叶变化图2.小波变换2.1原理及公式

17、原理简介信号分析是为了获得时间和频率之间的相互关系。小波变换(DWT)是现代谱分析工具,他既能考察局部时域过程的频域特征,又能考察局部频域过程的时域特征,因此即使对于非平稳过程,处理起来也得心应手。傅立叶变换提供了有关频率域的信息,但有关时间的局部化信息却基本丢失。与傅立叶变换不同,小波变换能将图像变换为一系列小波系数,这些系数可以被高效压缩和存储,此外,小波的粗略边缘可以更好地表现图像,因为他消除了DCT压缩普遍具有的方块效应。通过缩放母小波(Mother wavelet)的宽度来获得信号的频率特征, 通过平移母小波来获得信号的时间信息。对母小波的缩放和平移操作是为了计算小波系数,这些小波系

18、数反映了小波和局部信号之间的相关程度。DWT对目标图片的处理及相关函数介绍在Matlab中,二维离散小波变化对于图像的处理是通过函数的形式来进行的,主要的处理函数有如下几种:表1 常用的DWT函数函数名函数功能dwt2二维离散小波变换wavedec2二维信号的多层小波分解idwt2二维离散小波反变换upcoef2由多层小波分解重构近似分量或细节分量wcodemat窗体顶端对矩阵进行量化编码 窗体底端dwt2函数的应用格式为cA,cH,cV,cD=dwt2(X,'wname');其意义为使用指定的小波基函数 'wname' 对二维信号 X 进行二维离散小波变换。c

19、A,cH,cV,cD 分别为近似分.g(R E E量、水平细节分量、垂直细节分量和对角细节分量。wavedec2函数的格式为C,S=wavedec2(X,N,'wname');其意义为使用小波基函数 'wname' 对二维信号 X 进行 N 层分解。idwt2函数格式为=idwt2(cA,cH,cV,cD,'wname');它的含义为由信号小波分解的近似信号 cA 和细节信号 cH、cV、cD 经小波反变换重构原信号 X。upcoef2函数格式为X= upcoef2(O,X,'wname',N,S);其中O对应分解信号的类型,即:

20、ahvd,X为原图像的矩阵信号,wname为小波基函数,N为一整数,一般取1。wcodemat函数格式为X=wcodemat(x,nb);它表示对矩阵x的量化编码,函数中nb作为x矩阵中绝对值最大的值,一般取192。2.2小波变换程序i=imread('E:图图yw.jpg');x=rgb2gray(i); %真彩色图像转化为灰度图像cA,cH,cV,cD=dwt2(x,'db1'); %对图像进行单层分解,小波为bd1A=upcoef2('a',cA,'db1',1);H=upcoef2('h',cH,'

21、db1',1);V=upcoef2('v',cV,'db1',1);D=upcoef2('d',cD,'db1',1); %图像编码figuresubplot(221);image(wcodemat(A,192);title('近似细节系数');subplot(222);image(wcodemat(H,192);title('水平细节系数');subplot(223);image(wcodemat(V,192);title('垂直细节系数');subplot(224);im

22、age(wcodemat(D,192);title('对角细节系数');d=idwt2(cA,cH,cV,cD,'db1'); %对分解的细节系数执行单层重构,小波为db1imshow(d,);2.3 小波变换结果图2.3 小波变换图3.小波包变换3.1 原理及公式由于正交小波变换只对信号的低频部门做进一步的分析,而对高频部分以及信号的细节部分不再继续分解,所以小波包变换能后很好的表征以低频信息为主要成分的信号,但它不能很好地结合表示包含大量细节信息(细小细节或纹理)的信号,如非平稳机械振动信号、遥感图像、地震信号和生物医学信号灯。与之不同的是,小波包变换可以对

23、高频部分提供更精细的分解,而且这种分解既无冗余,也业务疏漏,所以对包含大量中频、高频信息的信号能后进行更好的时频局部化分析。小波包分解算法:小波包重构: EMBED Equation.3 信号小波包分析的基本实现步骤:1)选择适当的小波录波器,对给定的采样信号进行小波包变换,获得树形结构的小波包系数。2)选择信息代价函数,利用最佳小波包基选取算法选取最佳基。3)对最佳正交小波包基对应的小波包系数进行处理。4)对处理后的小波包系数采用小波包重构算法得到重构信号。3.2 小波包变换程序x=imread('E:图图yw.jpg');imshow(x);t=wpdec2(x,2,

24、9;db1');plot(t); %划出四叉树结构%对分解结构进行重建rective=wprec2(t);subplot(1,2,1),imshow(x),title('原始图像')subplot(1,2,2),imshow(rective),title('重构后的图像');3.3 小波包变换结果图 四叉树结构图图 小波包变换图4.余弦离散变换4.1原理及公式离散余弦变换,简称DCT,是一种实数域变换,其变换核为实数的余弦函数,计算速度较快,而且对于具有一阶马尔柯夫过程的随机信号,DCT十分接近于Karhunen-Loeve变换,也就是说它是一种最佳变换

25、,很适于做图像压缩和随机信号处理。 对于数字信号X(m,n),0mM,0nN,其二维DCT变换定义为 Y(k,1)= 其中,k=0,1,,M-1;l=0,1,,N-1 ; 二维DCT变换具有可分离性,可以分解为双重的一维DCT,实现起来非常方便。 二维DCT反变换(IDCT)定义为X(m,n)= 其中, ; 。 由上式可知,原始图像X(m,n)可表示为以Y(k,l)为权值的一系列函数 0mM-1,0 ,0nN-1的加权组合,这组函数就是DCT基函数。4.2余弦离散变换程序A=imread('E:图图yw.jpg');I=rgb2gray(A);DCT=dct2(I); %余弦变

26、化DCT(abs(DCT)<10)=0; %把变换矩阵中小于10的值置换为0,然后用idct2重构IDCT=idct2(DCT);subplot(2,2,1),imshow(G);title('灰度图像')subplot(2,2,2),imshow(IDCT,0 255);title('压缩图像')subplot(2,2,3),imshow(DCT);title('DCT变换图像')subplot(2,2,4),imshow(log(abs(DCT),);title('二维变换谱');4.3余弦离散变化结果图4.3 余弦离散

27、变换图5 离散沃尔什、二维哈达玛变换5.1 原理及公式 离散沃尔什变换离散沃尔什变换和举证中只有+1和-1元素,要求N=,在N=时,定义一维离散沃尔什变换为常数项也可取其中是x的二进制便是第i位如P=3,N=8x=6时二维离散沃尔什变换沃尔什变换本质上将一个函数变换为取值为+1或-1的基向量构成的级数;类似于频率函数,但又不同于频率函数;以过零点数目替代频率的概念,称为序率。 哈达玛变换哈达玛变换本质上是一种特殊排序的沃尔什变换;其与沃尔什变换的区别是变换核矩阵行的次序不同;哈达玛变换最大优点在于变换核矩阵具有简单的递推关系,即高阶的变换矩阵可以用低阶转换矩阵构成。一维离散哈达玛变换定义为:其

28、中N=,x,u=0,1,2,N-1说明:在找资料的过程中资料表明哈达玛变换时沃尔什变换的完善,一般情况下只重点讲述了哈达玛在图像变换中的运用,并没有找到沃尔什图像变换的源代码。因此此处只在matlab软件中运行了哈达玛程序。5.2 Walsh-Hadamard变换程序A=imread('E:图图yw.jpg');a=rgb2gray(A); H=hadamard(256); %哈达玛矩阵a=double(a)/255; %数据类型转换ha=H*a*H; %哈达玛变换ha=ha/256;imshow(ha);title('图像的二维离散哈达玛变换');5.3 二维

29、离散哈达玛变换结果图5.36. 小波变换图像压缩6.1 小波变换压缩简介将小波分析映入图像压缩范畴也是一个重要手段,并有着它自己的特点。小波变换压缩特点在于压缩比高、压缩速度快,压缩后能保持信号与图像的特征基本不变,且在传输过程中抗干扰等等。一个图像做小波分解后,可得到一系列不同分辨率的子图像,对应的频率是不相同的。高分辨率子图像上大部分点的数值都接近于0,分辨率越高越明显。而对于一个图像来说,表现图像的最主要的部分是低频部分,所以压缩的方法是利用小波分解去掉图像高频部分二保留低频部分。6.2小波压缩变换程序A=imread('E:图图yw.jpg'); %调入图像X=rgb2

30、gray(A);X=double(X)/255; %归一化处理figuresubplot(2,2,1);subimage(X); %显示图像title('原图像')colormap(pink);disp('压缩前图像X的大小');whos('X');C,S=wavedec2(X,2,'bior3.7'); %对图像用bior3.7'小波进行2层小波分解thr=20; %设置小波系数阈值cal=appcoef2(C,S,'bior3.7',1); %提取小波分解结构中第1层的低频系数和高频系数ch1=detc

31、oef2('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,h

32、1;v1,d1;%进行图像压缩处理,保留小波分解第1层低频信息,进行图像的压缩%第1层的低频信息为ca2,显示第1层的低频信息ca1=appcoef2(C,S,'bior3.7',1);%首先对第1层信息进行量化编码ca1=wcodemat(ca1,440,'mat',0);ca1=0.5*ca1; %改变图像的高度subplot(2,2,2);image(ca1); %显示第1次压缩的图像colormap(pink);title('第一次压缩图像')disp('第一次压缩图像的大小');whos('ca1');%

33、保留小波分解第2层低频信息,进行图像的压缩,此时压缩比更大%第2层的低频信息为ca2,显示第2层的低频信息ca2=appcoef2(C,S,'bior3.7',2);%首先对第2层信息进行量化编码ca2=wcodemat(ca2,440,'mat',0);%改变图像的高度ca2=0.5*ca2;%显示第二次压缩图像subplot(2,2,3);image(ca2);colormap(pink);title('第二次压缩图像')disp('第二次压缩图像的大小');whos('ca2');6.3 小波压缩结果图小波压

34、缩图像图 压缩图像规格6.4 压缩前后图像比较可看出原图分辨率为256*256,而压缩一次后图像分辨率为135*135,二次压缩后图像分辨率为75*75。第一次压缩是我们对原始图像中小波分解第一层低频信息,此时压缩效果好,压缩比较小。第二次压缩时提取第一层分解低频部分的低频部分,其压缩比较大。7.离散余弦变换图像压缩7.1 原理简介任何连续的事物堆成函数的傅里叶变换中只含有余弦项,因此余弦变换与傅里叶变换一样,有明确的物理意义。DCT实现将整体图像分成N*N像素块,然后对N*N像素块逐一进行DCT变换。由于大多数的图像的高频分量较小,相应于高频成分的系数经常为零,加上人眼对高频成分的失真不太敏

35、感,所以可以用更粗的量化。因此传送变换系数所用的数码率要大大小于传送图像像素所用的数码率。到达接收端后再通过反离散余弦变换回到样值,虽然会有一定的失真,但是能基本接受。N代表像素数,一般N=8,8*8的二位数据块经DCT后变成8*8个变换系数,这些系数都有着明确的物理意义:U代表水平像素号,V代表处置像素号。随着U、V值增大,相应的系数分别代表逐步压缩的水平空间频率分量和垂直空间频率分量的大小。在JPEG图像压缩算法里,输入图像被分为8*8小块,然后对每一小块进行二位DCT变换,变换后的系数量化、编码并传输,JPEG格式文件解码量化了的DCT系数,对每一块计算二位逆DCT变换,最后把结果块拼接成一个完整的图像。在DCT变换后舍弃那些不严重影响图像重构接近0的系数。7.2 离散余弦变换图像压缩程序A=imread('E:图图yw.jpg');I=rgb2gray(A);I=im2double(I);%图像存储类型转换T=dctmtx(8);%离散余弦变换矩阵B=blkproc(I,8 8,'P1*x*P2',T,T');%对原图像进行DCT变换mask=1 1 1 1 0 0 0 0 1 1 1 0 0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论