Fourier Transform with Reduced Data

LossImageTransform
0%
10%
25%
50%
75%
90%

» g = imread('cameraman.tif');
» remove(g);

remove.m

function remove(g)
%  REMOVE
%	remove(g) removes varying percentage of Fourier coefficients from
%  image and generates sequence of inverse-transformed images.

gf = fft2(g);
siz = prod(size(g));

% inverse transform
ginv = abs(ifft2(gf));
imwrite(ginv/max(ginv(:)),'remove_00.jpg');
imwrite(logim(abs(fftshift(gf)),4),'freq_00.jpg');

% permute the elements (except the DC term, which is the first element)
list = randperm(siz-1)+1;

remove = [ 0.10, 0.25, 0.50, 0.75, 0.90 ];

for idx = 1:length(remove)
   gf(list(1:floor(siz*remove(idx))))=0;
   ginv = abs(ifft2(gf));
   str = sprintf('remove_%d.jpg',100*remove(idx));
   imwrite(ginv/max(ginv(:)),str);
   str = sprintf('freq_%d.jpg',100*remove(idx));
   imwrite(logim(abs(fftshift(gf)),4),str);
end


Maintained by John Loomis, last updated 15 March 2000