- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验四图像压缩编码程序研发设计
实验名称:图像压缩编码程序设计压缩编码对原始图像数据和解压后的图像数据进行失真图像压缩对一幅数字图像进行压缩编码,计算出压缩率,并显示编码前图像2)对编码后的数据进行解压,并显示解压后图像3)改变算法参数对原始图像数据和解压后的图像数据进行失真clear
I=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);
end
end
J=[J num value ];
end
disp(原图像大小)
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
end
end
R2= 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);
end
end
J=
文档评论(0)