关于图像的傅里叶变换,详情请见链接图像傅里叶变换博主大大讲的非常好。
cr = 0.025;% 表示压缩比为40倍
%读入并显示原始图像
I1 = imread('bar.bmp');
I1= rgb2gray(I1);
I1 = double(I1)/255;
%figure;
%imshow(I1);title('ORI')
%对图像进行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;
%imshow(I2, [ ]);title('FFT');
实验在cr=10,20,40条件下进行:
原图:
1.cr=10
2.cr=20
3.cr=40