jpeg压缩编解码程序.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
JPEG压缩编解码程序 %%使用matlab 2013b软件进行仿真测试。测试图片在文档最后方。 function jpegCompress %以离散余弦变换(DCT)为基础,对灰度图像进行有损压缩及重建jpeg算法 %该算法过程主要包括以下几个部分:1.读取图像;2.DCT变换;3.量化;4.Z形扫描;5.huffman编码; % 6.huffman解码;7.反Z形扫描;8.反量化;9.反DCT变换;10.输出图像;11.计算压缩性能。 clear all; %设定量化因子quality。 %quality 为量化因子,默认值为1。决定了截去的系数和压缩比,增加quality 的值,可增大压缩比,使压缩编码后的图像占用存储空间更小。 quality = input(请输入量化参数(数值型,默认为1)= ); if isempty(quality) quality =1; end if quality = 0 error(请输入大于0的数字!); end %1.获取图像 tic I=imread(coin128.tif); %I=imread(cameraman128.tif); %I=imread(cameraman256.tif); %I=imread(finger256.bmp); %I=imread(fingerprint256.bmp); %I=imread(lena512.bmp);% 读入读一幅灰度图像 disp(读取图像时间:); toc %2.DCT 变换 tic OriginalImage=double(I); % 图像数据类型转换 [am,an]=size(OriginalImage);% 得到图像的大小 ImageSub=OriginalImage-128;% 为实现DCT 变换, 每个像素值都减去128,即像素层次移动-128 fun1=@dct2; TCM=blkproc(ImageSub,[8,8],fun1); % 使用dct2函数进行二维DCT变换,得到变换系数矩阵TCM disp(DCT变换时间:); toc %3.量化 tic Q=[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 101 113 92 49 64 78 87 103 121 120 101 72 92 95 98 112 100 103 99]*quality;% 亮度量化表 TCM_Q=blkproc(TCM,[8,8],round( x./P1),Q);% 对图像进行量化,得到量化后的TCM,即TCM_Q。 disp(量化时间:); toc %4.Z形扫描 tic TCM_Q_col=im2col(TCM_Q,[8,8],distinct); % 将每个8*8 数据块的量化系数排成列向量,得到64* 数据块总数大小的矩阵TCM_Q_col。 Num_col=size(TCM_Q_col,2);% 得到TCM_Q_col的列数,即数据块的个数Num_col。 order=[1 9 2 3 10 17 25 18 ... 11 4 5 12 19 26 33 41 ... 34 27 20 13 6 7 14 21 ... 28 35 42 49 57 50 43 36 ... 29 22 15 8 16 23 30 37 ... 44 51 58 59 52 45 38 31 ... 24 32 39 46 53 60 61 54 ... 47 40 48 55 62 63 56 64]; TCM_Q_colZ=TCM_Q_col(order,:);% 用z 型扫描方式对变换系数重新排列 disp(Z形扫描时间:); toc %5.编码 tic %5.1直流编码,dc为直流系数表,dcdpcm为直流差值编码表 dc=zeros(Num_col,1); dcdpcm=zeros(Num_col,1); for j=1:Num_col dc(j)=TCM_Q_colZ(1,j); % 将DC 系数排列到一个矢量中 end dcdpcm(1)=dc(1); for j=2:Num_col dcdpcm(j)=dc(j)-dc(j-1); % 求DC 系数的DPCM 编码 end dcdmax=max(dcdpcm); %最大直流 dcdmin=min(dcdpcm); %最小直流 dch=histc(dcdpcm,[dcdmin:dcdmax]); %统计各个值的直方

文档评论(0)

ma982890 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档