一种图像压缩算法.m
来自「一种比较常见的matlab压缩算法」· M 代码 · 共 29 行
M
29 行
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 + =
减小字号Ctrl + -
显示快捷键?