www.gusucode.com > 图像压缩编码码matlab实现 > 图像压缩编码码matlab实现/变换编码/exFFT.m

    %设置压缩比cr
cr = 0.5;
%读入并显示原始图像
I1 = imread('lena512.bmp');
figure(1);
imshow(I1);
%对图像进行FFT
I1 = double(I1);
fftcoe = blkproc(I1, [8 8], 'fft2(x)');
coevar = im2col(fftcoe, [8 8], 'distinct');
coe = coevar;
[y, ind] = sort(coevar);
[m, n] = size(coevar);
snum = 64 - 64*cr;
%舍去不重要的系数
for i = 1: n
    coe(ind(1: snum), i) = 0;
end
B2 = col2im(coe, [8 8], [512 512], 'distinct');
%对子图像块进行IFFT获得各个子图像的复原图像,并显示压缩图像
I2 = blkproc(B2, [8 8], 'ifft2(x)');
figure(2);
imshow(I2, [ ]);
%计算圴方误差
%erms = erms(I1, I2)

e = double(I1) - double(I2);
[m, n] = size(e);
ERMS = sqrt(sum(e(:).^2)/(m*n))