实验10 图像压缩的MATLAB实现_第1页
实验10 图像压缩的MATLAB实现_第2页
实验10 图像压缩的MATLAB实现_第3页
实验10 图像压缩的MATLAB实现_第4页
实验10 图像压缩的MATLAB实现_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

1、实验十实验十 图像压缩的图像压缩的MATLABMATLAB实现实现 一、实验目的一、实验目的p了解有关数字图像压缩的基本概念,熟悉了解有关数字图像压缩的基本概念,熟悉MATLAB软件中关于数字图像压缩的基本方法,掌握利用软件中关于数字图像压缩的基本方法,掌握利用MATLAB软件进行数字图像压缩的方法。软件进行数字图像压缩的方法。 二、相关知识二、相关知识p在当今的信息时代,图像在表达各种信息时有着不在当今的信息时代,图像在表达各种信息时有着不可替代的作用,但图像信息的缺点之一就是数据量可替代的作用,但图像信息的缺点之一就是数据量非常庞大,因此,无论是存储还是传输,都需要对非常庞大,因此,无论是

2、存储还是传输,都需要对图像数据进行压缩,数据压缩的方法有很多,我们图像数据进行压缩,数据压缩的方法有很多,我们这里介绍一种基于这里介绍一种基于DCT(离散余弦变换)的图像压(离散余弦变换)的图像压缩方法,并介绍用缩方法,并介绍用MATLAB软件来实现这个算法。软件来实现这个算法。p基于基于DCT的压缩方法如下:的压缩方法如下:p(1)首先将输入图像分解为首先将输入图像分解为88或或1616的块,的块,然后对每个块进行二维然后对每个块进行二维DCT变换,这里,一个变换,这里,一个NN图像块图像块f(x,y)的二维离散余弦变换公式如下:的二维离散余弦变换公式如下: 二、相关知识二、相关知识p二维离

3、散余弦反变换公式如下:二维离散余弦反变换公式如下:p基于基于DCT的压缩方法如下:的压缩方法如下:p(1)首先将输入图像分解为首先将输入图像分解为88或或1616的块,的块,然后对每个块进行二维然后对每个块进行二维DCT变换,这里,一个变换,这里,一个NN图像块图像块f(x,y)的二维离散余弦变换公式如下:的二维离散余弦变换公式如下: 1100(21)(21)( , )( ) ( )( , )coscos22NNxyxuyvF u vc u c vf x yNN0,1,1xN0,1,1yNp二维离散余弦反变换公式如下:二维离散余弦反变换公式如下:p其中:其中: 1100(21)(21)( ,

4、)( ) ( )( , )coscos22NNxyxuyvF u vc u c vf x yNN0,1,1xN0,1,1yN1100(21)(21)( , )( ) ( ) ( , )coscos22NNuvxuyvf x yc u c v F u vNN0,1,1xN0,1,1yN10( )21,2,uNc uuNN10( )21,2,1vNc vvNNp在在MATLAB中,中,p称为称为DCT的变换核的变换核p其中:其中: 1100(21)(21)( , )( ) ( ) ( , )coscos22NNuvxuyvf x yc u c v F u vNN0,1,1xN0,1,1yN10(

5、)21,2,uNc uuNN10( )21,2,1vNc vvNN(21)(21)( ) ( ) ( , )coscos22xuyvc u c v F u vNNp在在MATLAB中,中,p称为称为DCT的变换核的变换核p pMATLAB图像处理工具箱提供了一些函数进行图像处理工具箱提供了一些函数进行DCT变换。变换。p函数函数dct2实现图像的二维离散余弦变换,格式为:实现图像的二维离散余弦变换,格式为:p B=dct2(A)p B=dct2(A,M,N)p B=dct2(A,M,N) (21)(21)( ) ( ) ( , )coscos22xuyvc u c v F u vNNpA表示要

6、变换的图像,表示要变换的图像,B表示变换后得到的变换系表示变换后得到的变换系数矩阵,数矩阵,B和和A是同样大小的矩阵,其内容是余弦是同样大小的矩阵,其内容是余弦变换后的系数。变换后的系数。pM和和N是可选参数,表示对图像矩阵是可选参数,表示对图像矩阵A的填充或截取。的填充或截取。p函数函数idct2实现图像的二维离散余弦反变换,语法实现图像的二维离散余弦反变换,语法变换。变换。p函数函数dct2实现图像的二维离散余弦变换,格式为:实现图像的二维离散余弦变换,格式为:p B=dct2(A)p B=dct2(A,M,N)p B=dct2(A,M,N) pA表示要变换的图像,表示要变换的图像,B表示

7、变换后得到的变换系表示变换后得到的变换系数矩阵,数矩阵,B和和A是同样大小的矩阵,其内容是余弦是同样大小的矩阵,其内容是余弦变换后的系数。变换后的系数。pM和和N是可选参数,表示对图像矩阵是可选参数,表示对图像矩阵A的填充或截取。的填充或截取。p函数函数idct2实现图像的二维离散余弦反变换,语法实现图像的二维离散余弦反变换,语法格式:格式:p B=idct2(A)p B=idct2(A,M,N)p B=idct2(A,M,N) pA表示要变换的二维离散余弦变换矩阵,表示要变换的二维离散余弦变换矩阵,B表示变表示变换后得到的图像,换后得到的图像,B和和A是同样大小的矩阵,其内是同样大小的矩阵,

8、其内容是余弦变换后的系数。容是余弦变换后的系数。pM和和N是可选参数,表示对图像矩阵是可选参数,表示对图像矩阵A的填充或截取。的填充或截取。p函数函数dctmtx用于计算二维用于计算二维DCT矩阵,语法格式:矩阵,语法格式:p D=dctmtx(n)p格式:格式:p B=idct2(A)p B=idct2(A,M,N)p B=idct2(A,M,N) pA表示要变换的二维离散余弦变换矩阵,表示要变换的二维离散余弦变换矩阵,B表示变表示变换后得到的图像,换后得到的图像,B和和A是同样大小的矩阵,其内是同样大小的矩阵,其内容是余弦变换后的系数。容是余弦变换后的系数。pM和和N是可选参数,表示对图像

9、矩阵是可选参数,表示对图像矩阵A的填充或截取。的填充或截取。p函数函数dctmtx用于计算二维用于计算二维DCT矩阵,语法格式:矩阵,语法格式:p D=dctmtx(n)p其中其中D是返回的是返回的nn的的DCT变换矩阵,如果矩阵变换矩阵,如果矩阵A的的大小是大小是nn,DA是矩阵每一列的是矩阵每一列的DCT变换值,变换值,AD是是A的每一行的的每一行的DCT变换值。变换值。pdct2(A)的结果与的结果与DAD相同,但后者计算速相同,但后者计算速度较快。度较快。 p(2)将变换后得到的量化的将变换后得到的量化的DCT系数进行编码和系数进行编码和传送,形成压缩后的图像格式。传送,形成压缩后的图

10、像格式。p基于基于DCT的解压缩方法如下:的解压缩方法如下:p(1)对每个对每个88或或1616块进行二维块进行二维DCT反变换。反变换。p(2)将反变换的矩阵的块合成一个单一的图像。将反变换的矩阵的块合成一个单一的图像。p例:把输入图像例:把输入图像cameraman.tif划分为划分为88的图像的图像块,计算它们的块,计算它们的DCT系数,并且只保留系数,并且只保留64个个DCT系系数中的数中的10个,然后对每个图像块利用这个,然后对每个图像块利用这10个系数进个系数进其中其中D是返回的是返回的nn的的DCT变换矩阵,如果矩阵变换矩阵,如果矩阵A的的大小是大小是nn,DA是矩阵每一列的是矩

11、阵每一列的DCT变换值,变换值,AD是是A的每一行的的每一行的DCT变换值。变换值。pdct2(A)的结果与的结果与DAD相同,但后者计算速相同,但后者计算速度较快。度较快。 p(2)将变换后得到的量化的将变换后得到的量化的DCT系数进行编码和系数进行编码和传送,形成压缩后的图像格式。传送,形成压缩后的图像格式。p基于基于DCT的解压缩方法如下:的解压缩方法如下:p(1)对每个对每个88或或1616块进行二维块进行二维DCT反变换。反变换。p(2)将反变换的矩阵的块合成一个单一的图像。将反变换的矩阵的块合成一个单一的图像。p例:把输入图像例:把输入图像cameraman.tif划分为划分为88

12、的图像的图像块,计算它们的块,计算它们的DCT系数,并且只保留系数,并且只保留64个个DCT系系数中的数中的10个,然后对每个图像块利用这个,然后对每个图像块利用这10个系数进个系数进行逆行逆DCT变换来重构图像。变换来重构图像。 p解:程序如下:解:程序如下:pclearpI=imread(cameraman.tif);pI=im2double(I);pT=dctmtx(8);pB=blkproc(I,8 8,P1*x*P2,T,T); %这里T,T是参数P1、P2的取值pmask=1 1 1 1 0 0 0 0p 1 1 1 0 0 0 0 0 p 1 1 0 0 0 0 0 0p行逆行逆

13、DCT变换来重构图像。变换来重构图像。 p解:程序如下:解:程序如下:pclearpI=imread(cameraman.tif);pI=im2double(I);pT=dctmtx(8);pB=blkproc(I,8 8,P1*x*P2,T,T); %这里T,T是参数P1、P2的取值pmask=1 1 1 1 0 0 0 0p 1 1 1 0 0 0 0 0 p 1 1 0 0 0 0 0 0p 1 0 0 0 0 0 0 0p 0 0 0 0 0 0 0 0p 0 0 0 0 0 0 0 0p 0 0 0 0 0 0 0 0p 0 0 0 0 0 0 0 0;pB2=blkproc(B,8

14、 8,P1.*x,mask); p %这里mask是参数P1的取值p% 这里可以对B2作进一步的处理,然后加以存储,解码时先读出存储的数据,然后恢复出B2.pI2=blkproc(B2,8 8,P1*x*P2,T,T);p 1 0 0 0 0 0 0 0p 0 0 0 0 0 0 0 0p 0 0 0 0 0 0 0 0p 0 0 0 0 0 0 0 0p 0 0 0 0 0 0 0 0;pB2=blkproc(B,8 8,P1.*x,mask); p %这里mask是参数P1的取值p% 这里可以对B2作进一步的处理,然后加以存储,解码时先读出存储的数据,然后恢复出B2.pI2=blkproc

15、(B2,8 8,P1*x*P2,T,T);psubplot(1,2,1);pimshow(I);title(原图);psubplot(1,2,2);pimshow(I2);title(解压缩图);psubplot(1,2,1);pimshow(I);title(原图);psubplot(1,2,2);pimshow(I2);title(解压缩图);p 原图原图 解压缩图解压缩图p虽然我们舍弃了虽然我们舍弃了85的的DCT系数,也就是减少了系数,也就是减少了85%的存储量,但可以看到,解压缩图仍然清晰。的存储量,但可以看到,解压缩图仍然清晰。在我们现在的实验中,没有进行真正的存储,这部在我们现在

16、的实验中,没有进行真正的存储,这部分需要一些其它的函数配合工作,留待以后进一步分需要一些其它的函数配合工作,留待以后进一步完善。完善。 三、实验内容三、实验内容p1分别对图像分别对图像“lenna.tif”、“board.tif”、“peppers.png”进行基于进行基于DCT的压缩操作,对每幅的压缩操作,对每幅图像,分别给出保留图像,分别给出保留1个、个、2个、个、3个、个、20个个DCT变换系数的解压缩结果,这可以通过调整矩阵变换系数的解压缩结果,这可以通过调整矩阵mask中中1的个数实现,你认为保留几个系数时,图的个数实现,你认为保留几个系数时,图像的恢复效果可以接受,通过观察,对三个

17、图像,像的恢复效果可以接受,通过观察,对三个图像,p 原图原图 解压缩图解压缩图p虽然我们舍弃了虽然我们舍弃了85的的DCT系数,也就是减少了系数,也就是减少了85%的存储量,但可以看到,解压缩图仍然清晰。的存储量,但可以看到,解压缩图仍然清晰。在我们现在的实验中,没有进行真正的存储,这部在我们现在的实验中,没有进行真正的存储,这部分需要一些其它的函数配合工作,留待以后进一步分需要一些其它的函数配合工作,留待以后进一步完善。完善。 三、实验内容三、实验内容p1分别对图像分别对图像“lenna.tif”、“board.tif”、“peppers.png”进行基于进行基于DCT的压缩操作,对每幅的压缩操

温馨提示

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

评论

0/150

提交评论