Vous êtes sur la page 1sur 4

Groupe Vision, CUI, Universit de Genve http://vision.unige.

ch/Teaching/imagerie_numerique/ avril 2002, Julien Kronegg

Matlab transforme de Fourier


1 Introduction La transforme de Fourier est un outil essentiel pour lanalyse frquentielle des images. Ce document propose de montrer quelles sont les manipulations de base avec Matlab. 2 Fonctions utiles Voici la liste des fonctions Matlab les plus courantes pour le traitement frquentiel des images :
fft fft2 ifft2 abs angle real imag fftshift

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=

% modification de rfrentiel et transforme de Fourier Af = fft2(fftshift(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).

Vous aimerez peut-être aussi