基于DCT的图像压缩MATLAB实验6.0_第1页
基于DCT的图像压缩MATLAB实验6.0_第2页
基于DCT的图像压缩MATLAB实验6.0_第3页
基于DCT的图像压缩MATLAB实验6.0_第4页
基于DCT的图像压缩MATLAB实验6.0_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

1、基于DCT的图像压缩MATLAB实验版本6.0物理与电子工程系电子科学与技术1203班李渊压缩数据输出熵编码量化图像输入DCT变换图像输入基于DCT图像压缩编码过程的流程图。码表量化表在编码过程中,首先利用二维DCT把每个子块转变成64个变换系数。利用二维DCT把每个子块转变成64个DCT变换系数,其中8×8图像变换矩阵左上角的第一个数值直流分量,我们通常称之为DC系数,它表达的是8×8空域图像子块像素值的平均值,其余63个系数则是交流分量,称作AC系数。DCT系数的量化量化是图像有损压缩中造成复原图像质量下降的重要原因之一,其目的是为了减小非“0”系数的幅度、增加“0”值

2、系数,对系数值的量化间距进行划分规整,从而达到进一步压缩数据的目的。量化系数的编码01561415272824713162629423812172530414391118243140445310192332394552542022333846515560213437475056596135364849575862638×8经过DCT变换后,直流系数的值比较大,并且相邻块的DC系数数值上变化幅度较小。因此,对于直流分量,采用差分脉冲调制编码(DPCM),即对对本块和前一块的直流分量之差Diff=DCiDCil(i为块号)编码。其它63交流(AC)系数,采用了“之”字型(Z追一Zag)的

3、排列方法,实验程序:I=imread('C:Users李渊Desktop1.jpg');%读取图像I=rgb2gray(I);%转化为灰度图像I=double(I);%同态滤波处理f=fft2(I);%采用傅里叶变换g=fftshift(f);%数据矩阵平衡M,N=size(f);d0=10;r1=0.5;rh=2;c=4;n1=floor(M/2);n2=floor(N/2);for i=1:M %主循环 for j=1:N d=sqrt(i-n1)2+(j-n2)2); h=(rh-r1)*(1-exp(-c*(d.2/d0.2)+r1; g(i,j)=h*g(i,j);

4、endend %循环结束g=ifftshift(g);g=uint8(real(ifft2(g);%DCT变换J=im2double(g);%存储类型转化为双精度浮点类型T=dctmtx(8);%离散余弦变换矩阵,得到8DCT矩阵,然后量化B=blkproc(J,8 8,'P1*x*P2',T,T');%对源图像进行DCT变换mask1=1 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0

5、 0;%量化系数为1mask2=1 1 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 0;%量化系数为2mask3=1 1 1 1 0 0 0 01 1 0 0 0 0 0 01 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 0;%量化系数为3mask6=1 1 1 1 0 0 0 01

6、 1 0 0 0 0 0 01 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 0;%量化系数为6mask10=1 1 1 1 0 0 0 01 1 1 0 0 0 0 01 1 0 0 0 0 0 01 0 0 0 0 0 0 01 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 0;%量化系数为10mask16=1 1 1 1 1 1 0 01 1 1 1 1 0 0 01 1 1 0 0 0 0 0

7、1 1 0 0 0 0 0 01 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 0;%量化系数为16mask21=1 1 1 1 1 1 0 01 1 1 1 1 0 0 01 1 1 1 0 0 0 01 1 1 0 0 0 0 01 1 0 0 0 0 0 01 0 0 0 0 0 0 01 0 0 0 0 0 0 00 0 0 0 0 0 0 0;%量化系数为21mask28=1 1 1 1 1 1 1 11 1 1 1 1 1 0 01 1 1 1 1 0 0 01 1 1 1 0 0 0 01 1 1 0 0 0 0

8、 01 1 0 0 0 0 0 01 0 0 0 0 0 0 00 0 0 0 0 0 0 0;%量化系数为28B1=blkproc(B,8 8,'P1.*x',mask1);%数据压缩,丢下右下角高频数据J1=blkproc(B1,8 8,'P1*x*P2',T',T);%进行DCT反变换B2=blkproc(B,8 8,'P1.*x',mask2);%数据压缩,丢下右下角高频数据J2=blkproc(B2,8 8,'P1*x*P2',T',T);%进行DCT反变换B3=blkproc(B,8 8,'P1

9、.*x',mask3);%数据压缩,丢下右下角高频数据J3=blkproc(B3,8 8,'P1*x*P2',T',T);%进行DCT反变换B6=blkproc(B,8 8,'P1.*x',mask6);%数据压缩,丢下右下角高频数据J6=blkproc(B6,8 8,'P1*x*P2',T',T);%进行DCT反变换B10=blkproc(B,8 8,'P1.*x',mask10);%数据压缩,丢下右下角高频数据J10=blkproc(B10,8 8,'P1*x*P2',T',T)

10、;%进行DCT反变换B16=blkproc(B,8 8,'P1.*x',mask16);%数据压缩,丢下右下角高频数据J16=blkproc(B16,8 8,'P1*x*P2',T',T);%进行DCT反变换B21=blkproc(B,8 8,'P1.*x',mask21);%数据压缩,丢下右下角高频数据J21=blkproc(B21,8 8,'P1*x*P2',T',T);%进行DCT反变换B28=blkproc(B,8 8,'P1.*x',mask28);%数据压缩,丢下右下角高频数据J28=b

11、lkproc(B28,8 8,'P1*x*P2',T',T);%进行DCT反变换figure;subplot(331);imshow(I,);title('原始图像');subplot(332);imshow(J1,);title('量化系数为1');subplot(333);imshow(J2,);title('量化系数为2');subplot(334);imshow(J3,);title('量化系数为3');subplot(335);imshow(J6,);title('量化系数为6')

12、;subplot(336);imshow(J10,);title('量化系数为10');subplot(337);imshow(J16,);title('量化系数为16');subplot(338);imshow(J21,);title('量化系数为21');subplot(338);imshow(J28,);title('量化系数为28');imwrite(I,'C:Users李渊Desktopc1.jpg'); imwrite(J1,'C:Users李渊Desktopc2.jpg'); f1=i

13、mfinfo('C:Users李渊Desktopc1.jpg'); f2=imfinfo('C:Users李渊Desktopc2.jpg'); r=f1.FileSize/f2.FileSize; disp(r);%压缩比方法 0.1228 I=double(I); I1=double(J1); Row,Col=size(I); Row,Col=size(I1); MSE=sum(sum(I-I1).2)/(Row*Col);%均方误差计算公式 PSNR=10*log10(2552/MSE);%峰值信噪比计算公式%记录量化系数为1的压缩比、均方误差、峰值信噪比i

14、mwrite(I,'C:Users李渊Desktopc1.jpg'); imwrite(J2,'C:Users李渊Desktopc2.jpg'); f1=imfinfo('C:Users李渊Desktopc1.jpg'); f2=imfinfo('C:Users李渊Desktopc2.jpg'); r=f1.FileSize/f2.FileSize; disp(r);%压缩比方法 0.4410 I=double(I); I2=double(J2); Row,Col=size(I); Row,Col=size(I2); MSE=su

15、m(sum(I-I2).2)/(Row*Col);%均方误差计算公式 PSNR=10*log10(2552/MSE);%峰值信噪比计算公式%记录量化系数为2的压缩比、均方误差、峰值信噪比imwrite(I,'C:Users李渊Desktopc1.jpg'); imwrite(J3,'C:Users李渊Desktopc2.jpg'); f1=imfinfo('C:Users李渊Desktopc1.jpg'); f2=imfinfo('C:Users李渊Desktopc2.jpg'); r=f1.FileSize/f2.FileSiz

16、e; disp(r);%压缩比方法 0.3074 I=double(I); I3=double(J3); Row,Col=size(I); Row,Col=size(I3); MSE=sum(sum(I-I3).2)/(Row*Col);%均方误差计算公式 PSNR=10*log10(2552/MSE);%峰值信噪比计算公式%记录量化系数为3的压缩比、均方误差、峰值信噪比imwrite(I,'C:Users李渊Desktopc1.jpg'); imwrite(J6,'C:Users李渊Desktopc2.jpg'); f1=imfinfo('C:User

17、s李渊Desktopc1.jpg'); f2=imfinfo('C:Users李渊Desktopc2.jpg'); r=f1.FileSize/f2.FileSize; disp(r);%压缩比方法 0.1902 I=double(I); I6=double(J6); Row,Col=size(I); Row,Col=size(I6); MSE=sum(sum(I-I6).2)/(Row*Col);%均方误差计算公式 PSNR=10*log10(2552/MSE);%峰值信噪比计算公式%记录量化系数为6的压缩比、均方误差、峰值信噪比imwrite(I,'C:Us

18、ers李渊Desktopc1.jpg'); imwrite(J10,'C:Users李渊Desktopc2.jpg'); f1=imfinfo('C:Users李渊Desktopc1.jpg'); f2=imfinfo('C:Users李渊Desktopc2.jpg'); r=f1.FileSize/f2.FileSize; disp(r);%压缩比方法 0.1492 I=double(I); I10=double(J10); Row,Col=size(I); Row,Col=size(I10); MSE=sum(sum(I-I10).2

19、)/(Row*Col);%均方误差计算公式 PSNR=10*log10(2552/MSE);%峰值信噪比计算公式%记录量化系数为10的压缩比、均方误差、峰值信噪比imwrite(I,'C:Users李渊Desktopc1.jpg'); imwrite(J16,'C:Users李渊Desktopc2.jpg'); f1=imfinfo('C:Users李渊Desktopc1.jpg'); f2=imfinfo('C:Users李渊Desktopc2.jpg'); r=f1.FileSize/f2.FileSize; disp(r);

20、%压缩比方法 0.1228 I=double(I); I16=double(J16); Row,Col=size(I); Row,Col=size(I16); MSE=sum(sum(I-I16).2)/(Row*Col);%均方误差计算公式 PSNR=10*log10(2552/MSE);%峰值信噪比计算公式%记录量化系数为16的压缩比、均方误差、峰值信噪比imwrite(I,'C:Users李渊Desktopc1.jpg'); imwrite(J21,'C:Users李渊Desktopc2.jpg'); f1=imfinfo('C:Users李渊De

21、sktopc1.jpg'); f2=imfinfo('C:Users李渊Desktopc2.jpg'); r=f1.FileSize/f2.FileSize; disp(r);%压缩比方法 0.1087 I=double(I); I21=double(J21); Row,Col=size(I); Row,Col=size(I21); MSE=sum(sum(I-I21).2)/(Row*Col);%均方误差计算公式 PSNR=10*log10(2552/MSE);%峰值信噪比计算公式%记录量化系数为21的压缩比、均方误差、峰值信噪比imwrite(I,'C:Users李渊Desktopc1.jpg'); imwrite(J28,'C:Users李渊Desktopc2.jpg'); f1=imfinfo('C:Users李渊Desktopc1.jpg'); f2=imfinfo

温馨提示

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

评论

0/150

提交评论