网站大量收购独家精品文档,联系QQ:2885784924

实验四 DCT变换HUFFman编码图像压缩.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验四 DCT变换HUFFman编码图像压缩

实验四 图像压缩 姓名: 学号: 邮箱: 实验目的 掌握DCT变换的原理 了解DCT变化在图像压缩中的应用 掌握图像压缩的基本原理及方法 了解霍夫曼编码原理 熟悉图像压缩的MATLAB编程 实验原理 DCT是目前的图像变换,它有很多优点。DCT是正交变换,它可以将88图像空间表达式转换为频率域,只需要用少量的数据点表示图像;DCT产生的系数很容易被量化,因此能获得好的块压缩;DCT算法的性能很好,它有快速算法,如采用快速傅立叶变换可以进行高效的运算,因此它在硬件和软件中都容易实现;而且DCT算法是对称的,所以利用逆DCT算法可以用来解压缩图像。 二维DCT逆变换公式: 其中 实验要求 利用DCT变换对图像进行压缩,对比不同压缩比下的结果,对比不同压缩比下图像大小的变化。压缩过程如下图所示: 实验过程与结果 实验程序如下:(先给出主程序,然后给出各功能子函数的程序) 主程序: clear load(lena.mat)%调入170*170大小的一幅彩色lena图像 l=imresize(lena,[256 256]);%将图像变换为8的整数倍大小 X=rgb2gray(l); Y1=double(X);%读入图像数据 lianghua=[16 11 10 16 24 40 51 61;%量化矩阵,量化的程度序决定压缩比 12 12 14 19 26 58 60 55; 14 13 16 24 40 57 69 56; 14 17 22 29 51 87 80 62; 18 22 37 56 68 109 103 77; 24 35 55 64 81 104 113 92; 49 64 78 87 103 121 120 101; 72 92 95 98 112 100 103 99]; ilianghua=lianghua; %---------------------------------------------------------- %图像压缩 %---------------------------------------------------------- t=dctmtx(8); J=blkproc(Y1,[8 8],P1*x*P2,t,t); %分成8*8块进行DCT变换 M=blkproc(J,[8 8],round(x./P1),lianghua); %量化 u=abs(min(min(M1)); M=(M1./u)+1; data=uint8(M);%Huffman编码要求为无符号整形数组 M2=M-double(data); [zipped,info]=huffencode(data); %调用Huffman编码程序进行压缩 unzipped=huffdecode(zipped,info,data); %调用Huffman解码程序进行解压缩 k=1; for i=1:256 for j=1:256 unzippedray(i,j)=unzipped(k); k=k+1; end end unzippedray= unzippedray;%对解压缩后得到的一维数组进行变换,得到无损的量化后 %二维数组,其值与data数组值是一致的,体现了Huffman编码是一种无损编码 unzippedray=(double(unzippedray)-1+M2).*u; T=blkproc(unzippedray,[8 8],x.*P1,ilianghua); %反量化 I=blkproc(T,[8 8],P1*x*P2,t,t); %8*8DCT反变换 %---------------------------------------------------------- %调用Huffman编码程序进行解码 %显示原始图像和经编码后的图像,显示压缩比,并计算均方根误差得erms=0,表示是Huffman是无失真编码 figure subplot(221);imshow(Y1,[]);axis square;xlabel(原256*256灰度图像); subplot(222);imshow(I,[]);axis square;xlabel(Huffman解压缩后图像); subplot(223);imshow((Y1-I),[]);axis square;xlabel(量化后损失的图像部分); [h,k]=hist((Y1-I),256);%生成直方图数据 subplot(224);bar(k,h,k);title(误差图像直方图); %subplot(224);imshow(I,[]);axis

文档评论(0)

zhuwenmeijiale + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:7065136142000003

1亿VIP精品文档

相关文档