T=dctmtx(8) %产生二维DCT变换矩阵
%计算二维DCT,矩档锋键阵T及其转置是DCT函数P1*X*P2的参数
B=blkproc(I,[8,8],'P1*x*P2',T,T') %二值掩模,用来压缩DCT系数,只留下DCT系数中左上角的10个
mask=[1 1 1 1 0 0 0 0
1 1 1 0 0 0 0 0
1 1 0 0 0 0 0 0
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 ]
B2=blkproc(B,[8 8],'P1.*x',mask) %只保留DCT变换的10个系数
I2=blkproc(B2,[8 8],'P1*x*P2',T',T) %重构图像
subplot(1,2,1)
imshow(I)
title('原始图像')
subplot(1,2,2)
imshow(I2)
title('压缩图像')
我这个程序也是改了后的,不过我运行过了,图片压缩效果都能出来,就是压缩比没有变小,我也不知道基戚为什么,如果有人给决绝了麻烦通知一下行巧,我邮箱sunnyxiaoxu@126.com
%IMG=imread('租岁c.jpg')IMG=imread('lena.jpg')
figure
imshow(IMG,[0,255])%
title('原始图像')
I=rgb2gray(IMG)
J=dct2(I)
figure
subplot(1,2,1)
imshow(J,[0,255])
title('dct变亩拆换图像')
colormap(jet(256))
J(abs(J)<10)=0
subplot(1,2,2)
imshow(J,[0,255])
title('dct-10变换图像')
colormap(jet(256))
K=idct2(J)
figure
imshow(K,[0,255])
title('dct2逆变换弊耐睁图像')
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)