Transformée de Fourier pour images

Transformée de Fourier

La transformée de Fourier permet la décomposition d’un signal f en combinaison linéaire de sinusoïdes complexes
• Les coefficients F[u,v] dit coefficients de Fourier, fournissent des informations sur les fréquences (u,v) et permettent des manipulations dans le domaine fréquentiel

Transformation de Fourier discrète

On appelle la fonction F(u,v) le spectre

Code Matlab:

[f, p]=uigetfile('*','selection de fichier');
S=imread(fullfile(p,f));
subplot(1,3,1); imshow (S);  title ( 'Image originale');
FS=fft2(double(S)); 
module=abs(fftshift(FS)); 
Max=max(max(max(abs(module))));
subplot(1,3,2), imshow(module *255 /Max);colormap gray ; title ( 'Spectre d''amplitude');
phase=angle(fftshift(FS)); 
subplot(1,3,3); imshow(phase,[-pi,pi]); colormap gray; title ( 'Spectre de phase');

Exemple d'utilisation de la Transformée de Fourier:
Mixer 2 images: L'amplitude de l'image A et la phase de l'image B.
imageA = imread('imA.jpg'); 
imageB = imread('imB.jpg'); 
fftA = fft2(double(imageA));
fftB = fft2(double(imageB));
fftC = abs(fftA).*exp(1i*angle(fftB));
fftD = abs(fftB).*exp(1i*angle(fftA)); 
fftE= abs(fftA).*exp(1i*angle(fftA));
fftF= abs(fftB).*exp(1i*angle(fftB));
imageC = ifft2(fftC);
imageD = ifft2(fftD);
imageE = ifft2(fftE);
imageF = ifft2(fftF);
%Calculate limits for plotting
cmin = min(min(min(abs(imageC))));
cmax = max(max(max(abs(imageC))));
dmin = min(min(min(abs(imageD))));
dmax = max(max(max(abs(imageD))));
subplot (2,3,1), imshow(imageA), title('Image originale A');
subplot (2,3,2), imshow(imageB), title('Image originale B');
subplot (2,3,3), imshow(abs(imageC/255), [cmin cmax]), colormap gray, title('Amplitude A avec phase B');
subplot (2,3,4), imshow(abs(imageD/255), [cmin cmax]), colormap gray, title('Amplitude B avec phase A');
subplot (2,3,5), imshow(abs(imageE/255), [cmin cmax]), colormap gray, title('image A reconstruite');
subplot (2,3,6), imshow(abs(imageF/255), [cmin cmax]), colormap gray, title('image B reconstruite');