%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Image Filtering % % ima_out = Filter(ima,type,cutoff) % % This function high or low pass filter an image % % ima : real input image % type : 0 for high, 1 for low % cutoff: cutoff frequency in [0,1]. 0 is corresponds to the minimum frequency and 1 % to the maximum frequency. % ima_out : output real % % % Yvan Petillot, December 2000 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function ima_out = Filter(ima,type,cutoff) % First convert ima to double ima = double(ima); % Create new figure figure(1) % Display ima imagesc(ima); axis image; title('Original image'); pause(0.1); drawnow; % Get FFT: imafft = fftshift(fft2(fftshift(ima))); s = size(ima); maxr = 0.5*sqrt(s(1)^2+s(2)^2); cutoff = maxr*cutoff; switch(type) % High pass filter case 0 for i = 1 : s(1) for j = 1 : s(2) r = sqrt((i-1-s(1)/2)^2+(j-1-s(2)/2)^2); if ( r < cutoff) imafft(i,j) = 0; end end end case 1 for i = 1 : s(1) for j = 1 : s(2) r = sqrt((i-1-s(1)/2)^2+(j-1-s(2)/2)^2); if ( r > cutoff) imafft(i,j) = 0; end end end end % Display filtered spectrum figure(2); imagesc(log(1+abs(imafft))); axis image; display('Press any key to proceed'); pause; figure(3); ima_out = fftshift(ifft2(fftshift(imafft))); %keyboard; imagesc(abs(ima_out)); axis image; title('Filtered image');