基于matlab-的数字图像图像压缩与编码.doc

上传人:风**** 文档编号:975514 上传时间:2024-03-19 格式:DOC 页数:27 大小:756.50KB
下载 相关 举报
基于matlab-的数字图像图像压缩与编码.doc_第1页
第1页 / 共27页
基于matlab-的数字图像图像压缩与编码.doc_第2页
第2页 / 共27页
基于matlab-的数字图像图像压缩与编码.doc_第3页
第3页 / 共27页
基于matlab-的数字图像图像压缩与编码.doc_第4页
第4页 / 共27页
基于matlab-的数字图像图像压缩与编码.doc_第5页
第5页 / 共27页
点击查看更多>>
资源描述

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

2、散沃尔什变换125.1.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的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLA

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

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

6、c data visualization 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 s

7、olution, and 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, secon

8、d to none. 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 det

9、ection, financial modeling design and analysis and other fields.MATLABs 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 accom

10、plish 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 l

11、ibrary 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

12、 applications, 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 tran

13、sform 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 相应维进行零填充后的长度。一个图象尺寸为MN的离散函数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=rgb2gray(A);C=

16、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原理及公式2.1.1原理简介信号分析是为了获得时间和频率之间的相互关系。小波变换(DWT)是

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

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

19、edec2函数的格式为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对应分解信号的类型,即:ahvd,X为原图像的矩阵信号,wname为小波基函数,N为一整数,一般取1。wcodemat函数格式为X=wcodemat(x,nb);它表示对矩阵x的量化编码,函数中nb作为x矩

20、阵中绝对值最大的值,一般取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,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)

21、;title(水平细节系数);subplot(223);image(wcodemat(V,192);title(垂直细节系数);subplot(224);image(wcodemat(D,192);title(对角细节系数);d=idwt2(cA,cH,cV,cD,db1); %对分解的细节系数执行单层重构,小波为db1imshow(d,);2.3 小波变换结果图2.3 小波变换图3.小波包变换3.1 原理及公式由于正交小波变换只对信号的低频部门做进一步的分析,而对高频部分以及信号的细节部分不再继续分解,所以小波包变换能后很好的表征以低频信息为主要成分的信号,但它不能很好地结合表示包含大量细节

22、信息(细小细节或纹理)的信号,如非平稳机械振动信号、遥感图像、地震信号和生物医学信号灯。与之不同的是,小波包变换可以对高频部分提供更精细的分解,而且这种分解既无冗余,也业务疏漏,所以对包含大量中频、高频信息的信号能后进行更好的时频局部化分析。小波包分解算法:小波包重构:信号小波包分析的基本实现步骤:1)选择适当的小波录波器,对给定的采样信号进行小波包变换,获得树形结构的小波包系数。2)选择信息代价函数,利用最佳小波包基选取算法选取最佳基。3)对最佳正交小波包基对应的小波包系数进行处理。4)对处理后的小波包系数采用小波包重构算法得到重构信号。3.2 小波包变换程序x=imread(E:图图yw.

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

24、就是说它是一种最佳变换,很适于做图像压缩和随机信号处理。 对于数字信号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); %余弦

25、变化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 余弦离散变换图5 离散沃尔什、二维哈达玛变换5.1 原理及公式5.1.1 离散沃尔什变换离散沃

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

27、达玛变换时沃尔什变换的完善,一般情况下只重点讲述了哈达玛在图像变换中的运用,并没有找到沃尔什图像变换的源代码。因此此处只在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 二维离散哈达玛变换结果图5.36. 小波变换图像压缩6.1 小波变换压缩简介将小波分析映入图像压缩范畴也是一个

28、重要手段,并有着它自己的特点。小波变换压缩特点在于压缩比高、压缩速度快,压缩后能保持信号与图像的特征基本不变,且在传输过程中抗干扰等等。一个图像做小波分解后,可得到一系列不同分辨率的子图像,对应的频率是不相同的。高分辨率子图像上大部分点的数值都接近于0,分辨率越高越明显。而对于一个图像来说,表现图像的最主要的部分是低频部分,所以压缩的方法是利用小波分解去掉图像高频部分二保留低频部分。6.2小波压缩变换程序A=imread(E:图图yw.jpg); %调入图像X=rgb2gray(A);X=double(X)/255; %归一化处理figuresubplot(2,2,1);subimage(X)

29、; %显示图像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=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,bi

30、or3.7,1);v1=wrcoef2(v,C,S,bior3.7,1);d1=wrcoef2(d,C,S,bior3.7,1);c1=a1,h1;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(第

31、一次压缩图像的大小);whos(ca1);%保留小波分解第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 小波压缩结果图6.3.2小波压缩图像图6.3.2 压缩图像规格6.4 压缩前

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

33、换系数所用的数码率要大大小于传送图像像素所用的数码率。到达接收端后再通过反离散余弦变换回到样值,虽然会有一定的失真,但是能基本接受。N代表像素数,一般N=8,8*8的二位数据块经DCT后变成8*8个变换系数,这些系数都有着明确的物理意义:U代表水平像素号,V代表处置像素号。随着U、V值增大,相应的系数分别代表逐步压缩的水平空间频率分量和垂直空间频率分量的大小。在JPEG图像压缩算法里,输入图像被分为8*8小块,然后对每一小块进行二位DCT变换,变换后的系数量化、编码并传输,JPEG格式文件解码量化了的DCT系数,对每一块计算二位逆DCT变换,最后把结果块拼接成一个完整的图像。在DCT变换后舍弃

34、那些不严重影响图像重构接近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 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;B2=blkproc(B

35、,8 8,P1.*x,mask);%数据压缩,丢弃右下角高频数据I2=blkproc(B2,8 8,P1*x*P2,T,T);%进行DCT反变换,得到压缩后的图像imshow(I)title(原始图像)figure;imshow(I2)title(压缩后的图像);disp(压缩后图像I2的大小);whos(I2);7.3离散余弦变换图像压缩结果图7.3.1离散余弦变换图像压缩图图7.3.2 离散余弦变换图像压缩图规格7.4压缩图与原图对比从重构图像可以看出,DCT 算法偏重于图像的视觉效果,用该算法得出图像的视觉效果相当好,它与原图像的视觉效果几乎一样。图像清晰度并未发生改变,只是将高频系数为

36、零点去掉。8.实验心得本次MATLAB课程设计让我更熟悉地掌握该软件的功能,灵活运用MATLAB,加强对matlab软件图像处理的能力,掌握图像的傅利叶变换、小波变换、小波包变换、离散余弦变换、离散沃尔什变换,二维哈达玛变换,并采用小波变换和离散余弦变换对图像进行压缩,并与原图像进行比较。在熟悉掌握matlab程序和操作的同时培养了我的独立思考能力,钻研精神,解决问题能力和动手能力。虽然在此之前通过基础强化训练运用国MATLAB软件并完成简单图像炒作,但知道的只是最基本的的应用,对于MATLAB在图像处理上的应用,我完全没有理解。本次课程设计中通过查阅资料,阅读程序并读写程序对MATLAB图像

37、应用有了更深的了解。我同时也认识到了MATLAB功能并不只是图形的绘制及波形的处理,有着很多方面的运用,如绘制函数,处理音频、图像数据,创建用户界面等功能,实为一个功能强大的软件。在课设过程中每每编写程序及操作时出现问题,我都会通过查阅资料,仔细检查解决问题,经过一次次的修改完善,才出现最终的最优结果。在这个过程中,面对问题不放弃不急躁,一次次改进,静下心来慢慢解决,并细致完善细节,从而能培养一种良好的学习心态和习惯。通过这次课设中,我学习了一些MATLAB图像处理的编程,并对MATLAB的操作有了更深的了解和熟悉,对以后的学习和工作都会很有帮助。更重要的是提高了我的学习能力,培养良好的学习习惯,受益匪浅。9.参考文献1.MATLAB 7.X 图像处理 贺兴华、周媛之、王继阳、周晖等编著 人民邮电出版社2.MATLAB 6.5 图形图像处理 王家文、曹宇 编著 国防工业出版社3.MATLAB 小波边分析 张德丰 编著 机械工业出版社

展开阅读全文
相关资源
相关搜索
资源标签

当前位置:首页 > 学术论文 > 管理论文

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922