实验四图像压缩编码程序设计.doc_第1页
实验四图像压缩编码程序设计.doc_第2页
实验四图像压缩编码程序设计.doc_第3页
实验四图像压缩编码程序设计.doc_第4页
实验四图像压缩编码程序设计.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

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

温馨提示

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

评论

0/150

提交评论