📄 一种图像压缩算法.m
字号:
function Example38(trueImg,Cnum)
trueImg=double(trueImg)/255;
figure;
imshow(trueImg);
title('原始图象');
dctm=dctmtx(8);
imageDCT=blkproc(trueImg,[8 8],'P1*x*P2',dctm,dctm.');
DCTvar=im2col(imageDCT,[8 8],'distinct').';
n=size(DCTvar,1);
DCTvar=(sum(DCTvar.*DCTvar)-(sum(DCTvar)/n).^2)/n;
[dum,order]=sort(DCTvar);
Cnum=64-Cnum;
mask=ones(8,8);
mask(order(1:Cnum))=zeros(1,Cnum);
im8x8=zeros(9,9);
im8x8(1:8,1:8)=mask;
im128x128=kron(im8x8(1:8,1:8),ones(16));
figure;
imshow(im128x128);
dctm=dctmtx(8);
newImage=blkproc(imageDCT,[8 8],'P1*(x.*P2)*P3',dctm.',mask(1:8,1:8),dctm);
figure;
imshow(newImage);
title('重构图像');
figure;
imshow(trueImg-newImage+0.45);
title('误差图象');
error=(trueImg.^2-newImage.^2);
MSE=sum(error(:))/prod(size(trueImg));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -