Indexation d’images par la texture

1. Observations - Expérimentations dans l'espace de Fourier

 

     Charger l'image ci-contre sous Matlab. En calculer la transformée de Fourier en 2 dimensions.

     Pour cela, utiliser le code suivant :
     imagesc(log(abs(fft2(img))));
     abs(fft2(img)) calcule le module des coefficients complexes issus de la fft2.
     log permet de ramener les amplitudes des fréquences sur une échelle plus compacte
     imagesc étale les intensités résultantes sur l'ensemble des intensités possibles (i.e. ramène les valeurs entre 0 et 255).


 

         Vous devriez obtenir une image ayant l'apparence de celle donnée ci-contre. Il s'agit de l'image du spectre en amplitude.

         Observer l'organisation des intensités maximales.

         Quelle relation observez-vous entre l'organisation des fréquences d'amplitude maximale et l'orientation du texte ?

2. Construction d'un descripteur pour différentes classes de texture

Nous reprenons les images du premier TP (bibimage.tar).

Nous travaillerons sur ces images converties en niveaux de gris (en calculant la moyenne de l'intensité en RGB).

Sur chaque image en niveaux de gris, nous calculons la Transformée de Fourier 2D et nous produisons l'image du spectre en amplitude.

Nous découpons la moitié supérieure en 6x3 blocs, puis nous calculons le logarithme de l'énergie moyenne sur chacun d'eux (i.e. moyenne des coefficients au carré).

Nous mémorisons enfin les 18 résultats pour chaque image.

Image de départ
(matrice 200x200x3)

Image en niveaux de gris
(matrice 200x200)

Spectre en amplitude
(matrice 200x200)

Découpage en 18 blocs de la moitié supérieure gauche.
(matrice 200x100)

3. Calcul d'une distance et requête par l'exemple.

En appliquant une distance de Manhattan sur les 18 coefficients associés à chaque image, renvoyer les 10 images les plus proches (au sens de cette distance) d'une image requête identifiée par l'utilisateur.

 



Merci à Philippe Joly