实验四图像压缩编码程序设计.docx

上传人:叶*** 文档编号:35583570 上传时间:2022-08-22 格式:DOCX 页数:7 大小:14.46KB
返回 下载 相关 举报
实验四图像压缩编码程序设计.docx_第1页
第1页 / 共7页
实验四图像压缩编码程序设计.docx_第2页
第2页 / 共7页
点击查看更多>>
资源描述

《实验四图像压缩编码程序设计.docx》由会员分享,可在线阅读,更多相关《实验四图像压缩编码程序设计.docx(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、实验名称:图像压缩编码程序设计一、实验目的和要求本实验为设计性实验,其目的是理解有损压缩的概念,特别是通过K-L变换或DCT变换,掌握压缩编码的基本原理、算法,并通过编程给予实现,对原始图像数据和解压后的图像数据进行失真估计,了解压缩性能及其重建效果的影响、作用,给出适当的理论分析。二、实验内容和原理本实验是在根据图像压缩基本原理的基础上,独立设计图像的有损压缩编码算法,并在MATLAB编程环境中编程实现。其要求是:1)选择一种有损压缩编码算法(K-L变换或DCT变换)对一幅数字图像进行压缩编码,计算出压缩率,并显示编码前图像。2)对编码后的数据进行解压,并显示解压后图像。3)改变算法参数对原

2、始图像数据和解压后的图像数据进行失真估计。4),通过改变算法参数(比如改变图像编码的子图像小块的尺度等)进行算法比较和讨论。三、实验环境硬件:计算机软件:Windows 2000和MATLAB编程环境。四、算法描述及实验步骤1、读入图像:clearI=imread(1.jpg); %读入原图像;R=I(:,:,1);R1=im2double(R); %将原图像转为双精度数据类型;2、进行DCT矩阵变换(重复三次),并显示原图像大小、压缩图像大小、压缩比:T=dctmtx(8); %产生二维DCT变换矩阵L=blkproc(R1,8 8,P1*x*P2,T,T); %计算二维DCT,矩阵T及其转

3、置T是DCT函数P1*x*P2的参数Mask= 1 0 1 0 0 0 0 0 1 1 0 0 1 0 0 0 1 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 0 0 0 0 0 0 0; %二值掩膜,用来压缩DCT系数,只留下DCT系数中左上角的10个 L2=blkproc(L,8 8,P1.*x,Mask); %只保留DCT变换的10个系数 m n=size(L2); J=m n; for i=1:m value=L2(i,1); num=1; for j=2:n if L2

4、(i,j)=value num=num+1; else J=J num value; num=1; value=L2(i,j); endendJ=J num value ; enddisp(原图像大小)whos(L2);disp(压缩图像大小:)whos(J);disp(图像的压缩比:)disp(m*n/length(J)% 解压缩t1=J(1);t2=J(2);K(1:t1,1:t2)=0;i1=1;j1=1;for i=3:2:length(J) c1=J(i); c2=J(i+1); for j=1:c1 K(i1,j1)=c2; j1=j1+1; if j1t2 i1=i1+1; j1

5、=1; end endendR2= blkproc(K,8,8,P1*x*P2,T,T); %逆DCT,重构图像 G=I(:,:,2);G1=im2double(G); %将原图像转为双精度数据类型;T=dctmtx(8); %产生二维DCT变换矩阵L=blkproc(G1,8 8,P1*x*P2,T,T); %计算二维DCT,矩阵T及其转置T是DCT函数P1*x*P2的参数Mask= 1 0 1 0 0 0 0 0 1 1 0 0 1 0 0 0 1 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

6、 0 0 0 0 0 0 0 0 0 0 0; %二值掩膜,用来压缩DCT系数,只留下DCT系数中左上角的10个 L2=blkproc(L,8 8,P1.*x,Mask); %只保留DCT变换的10个系数 m n=size(L2); J=m n; for i=1:m value=L2(i,1); num=1; for j=2:n if L2(i,j)=value num=num+1; else J=J num value; num=1; value=L2(i,j); endendJ=J num value ; enddisp(原图像大小)whos(L2);disp(压缩图像大小:)whos(J

7、);disp(图像的压缩比:)disp(m*n/length(J)% 解压缩t1=J(1);t2=J(2);K(1:t1,1:t2)=0;i1=1;j1=1;for i=3:2:length(J) c1=J(i); c2=J(i+1); for j=1:c1 K(i1,j1)=c2; j1=j1+1; if j1t2 i1=i1+1; j1=1; end endendG2= blkproc(K,8,8,P1*x*P2,T,T); %逆DCT,重构图像B=I(:,:,3);B1=im2double(B); %将原图像转为双精度数据类型;T=dctmtx(8); %产生二维DCT变换矩阵L=blk

8、proc(B1,8 8,P1*x*P2,T,T); %计算二维DCT,矩阵T及其转置T是DCT函数P1*x*P2的参数Mask= 1 0 1 0 0 0 0 0 1 1 0 0 1 0 0 0 1 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 0 0 0 0 0 0 0; %二值掩膜,用来压缩DCT系数,只留下DCT系数中左上角的10个 L2=blkproc(L,8 8,P1.*x,Mask); %只保留DCT变换的10个系数 m n=size(L2); J=m n; for i=

9、1:m value=L2(i,1); num=1; for j=2:n if L2(i,j)=value num=num+1; else J=J num value; num=1; value=L2(i,j); endendJ=J num value ; enddisp(原图像大小)whos(L2);disp(压缩图像大小:)whos(J);disp(图像的压缩比:)disp(m*n/length(J)% 解压缩t1=J(1);t2=J(2);K(1:t1,1:t2)=0;i1=1;j1=1;for i=3:2:length(J) c1=J(i); c2=J(i+1); for j=1:c1

10、K(i1,j1)=c2; j1=j1+1; if j1t2 i1=i1+1; j1=1; end endend3、显示图像:B2= blkproc(K,8,8,P1*x*P2,T,T); %逆DCT,重构图像A(:,:,1)=R2;A(:,:,2)=G2;A(:,:,3)=B2;Subplot(1,2,1);imshow(I);title(原图像); %显示原图像Subplot(1,2,2); imshow(A);title(压缩图像);%显示压缩后的图像。对比原始图像和压缩后的图像,五、调试过程六、实验结果七、总结通过本次实验,我基本理解了有损压缩的概念,特别是通过DCT变换,大致掌握了压缩编码的基本原理、算法,并通过编程给予了实现,了解到压缩性能及其重建效果的影响、作用,并通过对DCT矩阵的改变从而改变图像压缩比。

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

当前位置:首页 > 教育专区 > 初中资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁