Professional Documents
Culture Documents
calcule la transforme de Fourier dun vecteur (1D). calcule la transforme de Fourier dune matrice (2D). calcule la transforme de Fourier inverse dune matrice (2D). amplitude (=module) dune transforme de Fourier (complexe rel). phase dune transforme de Fourier (complexeradians). partie relle dune variable complexe. partie imaginaire dune variable complexe. changement de rfrentiel : place la composante continue au centre de limage (pratique pour laffichage). logarithme (pratique pour laffichage car la composante continue dune transforme de Fourier est grande par rapport au reste des frquences).
log
3 Diffrence de rfrentiel Il faut savoir que dans Matlab, les images (=matrices) ont une rfrence qui est en (1; 1). Cependant, toutes les images nont pas un rfrentiel en (1 ;1). Par exemple, limage recta.png (voir ci-contre) possde une origine en (65 ;65), soit au milieu du rectangle blanc. Cela pose quelques problmes car le rsultat de la transforme de Fourier dpend du rfrentiel utilis. Pour une transforme de Fourier correcte, il faut changer le rfrentiel de limage et le ramener au rfrentiel Matlab avec la fonction fftshift :
fftshift
De mme, pour laffichage frquentiel, lorigine est (1 ;1) avec Matlab, ce qui correspond la frquence 0 Hz. Ce mode daffichage nest pas trs pratique et il est prfrable de recentrer lorigine, toujours avec fftshift :
fftshift
4 Exemple de rfrentiel Voici un exemple qui permet de bien comprendre le fonctionnement de la transforme de Fourier, du moins pour la partie difficile avec les diffrences de rfrentiels.
% lecture de limage A = double(imread('c:\kronegg\imagerie_numerique\web_site\data\recta.png'));
A=
Af (partie relle) =
Af (partie imaginaire) =
% calcul d'amplitude/phase et modification de rf pour laffichage mod = abs(Af); pha = angle(Af); surf(fftshift(mod)), colormap(jet(1)) % visualisation de lamplitude (en 3D)
mod =
pha =
surf :
Bien videmment, si vous voulez apprcier le module et la phase, il faut encore changer le rfrentiel pour laffichage avec fftshift.
2
5 Exemples de TF Voici quelques exemples de TF d'images de la collection. La TF a t calcule avec le code suivant :
A=double(imread('c:\kronegg\imagerie_numerique\web_site\data\square.png')); Af=fft2(A); fftshow(fftshift(Af));
cartoon.png
lena.png
objects.png
leysin.png
La frquence 0 est au centre de l'image de la TF. Comme on peut le remarquer, l'amplitude du module de la TF est trs grand dans les basses frquences, quelle que soit l'image. Les coefficients de la TF diminuent en intensit lorsqu'ils s'approchent des hautes frquences. Ces caractristiques se retrouvent en gnral sur la majorit des images, ce qui permet de voir quelles sont modules de TF qui sont "normales" de celles qui on des particularits (p.ex. bruit priodique).