Feuille de TP numéro 1

Publié par

TP, Supérieur, TP
  • redaction
Analyse de Fourier et hilbertienne ENS de Cachan Département de Mathématiques Vendredi 4 novembre 2011 Feuille de TP numéro 1 1 Consignes pour le rapport de TP Cette feuille de TP comporte des questions auxquelles il est demandé de répondre dans un rapport de TP. 1.1 Format du rapport Les rapports de TP sont à rendre sous forme de fichier .pdf rédigés avec LATEX. LATEX est le langage standard incontournable pour rédiger des documents en mathématiques (et dans bien d'autres matières scientifiques).
  • vecteur ligne
  • expérience avec les couples d'images
  • propriétés quantitatives de la tfd
  • problème de la visualisation
  • conversion inverse
  • tfd
  • signal discret
  • zoom
  • zooms
  • fichiers
  • fichier
  • image
  • images
Publié le : mardi 27 mars 2012
Lecture(s) : 69
Source : dev.ipol.im
Nombre de pages : 7
Voir plus Voir moins
Analyse de Fourier et hilbertienne ENS de Cachan Département de Mathématiques
1
Vendredi 4 novembre 2011
Feuille de TP numéro 1
Consignes pour le rapport de TP
Cette feuille de TP comporte des questions auxquelles il est demandé de répondre dans un rapport de TP.
1.1 Format du rapport A A Les rapports de TP sont à rendre sous forme de fichier .pdf rédigés avec LT X. LT X est le E E langage standardincontournablepour rédiger des documents en mathématiques (et dans bien d'autres matières scientifiques). Pour vous aidez dans la ré daction de ce rapport un modèle de A fichier LT X(extension ) vous sera envoyé très prochainement par email. Ce fichier sera E.tex accompagné de conseils concernant les logiciels à utiliser ainsi que des liens internet vers des documentations.
1.2 Remise du rapport Le rapport de ce TP doit être rendu pour levendredi 18 novembre 2011. Votre rapport, au format , sont à envoyer par email à l'adressegabriele.facciolo@cmla.ens-cachan.fr. Le .pdf sujet de l'email doit êtreRapport du TP1 deNom Prénomet le fichier doit être intitulé .pdf nom_prenom_tp3.pdf.
2
Mise en route
Tout d'abord ouvrez un terminal (fenêtre permettant d'entr er des lignes de commandes, acessible depuis le menu : ). Menu KDE -> Applications -> Systèmes -> Terminal Dans ce terminal tapez les commandes suivantes pour créer un dossier et se pla-tp_fourier cer dans ce dossier :
mkdir tp_fourier cd tp_fourier Dans le même terminal tapez maintenant les commandes suivantes pour télécharger les fichiers nécessaires dans votre dossier . tp_fourier wget dev.ipol.im/~facciolo/hilbert/tp1.zip unzip tp1.zip cd tp1
1/7
Toujours dans le même terminal lancez Matlab grâce à la commande . Vous écri-matlab rez les différentes instructions dans des fichiers du type et vous lancerez les mon_script.m différentes instructions en surlignant avec la souris les passages à évaluer et en appuyant sur la touche (ou alors clique droit et ). F9 Evaluate selection
3
Notions de base sur les images numériques
Pour ce premier TP nous travaillerons exclusivement avec des images en niveaux de gris.
3.1 Niveaux de gris Une image numérique standard est un tableau de pixels (pouvant être vu comme une ma-trice), dont les coefficients sont des entiers compris entre 0 et 255. Il n'y a donc que 256 valeurs possibles pour les niveaux de gris. Il est très facile de créer des images simples avec Matlab. Par exemple le script suivant crée une image de taille500×500représentant un carré noir sur fond blanc :
u = 255 ones(500,500); * u(201:400,101:300) = zeros(200,200); Dans un premier temps pour visualiser une image nous utiliserons les instructions sui-u vantes (le problème de la visualisation d'une image est abor dée en détail dans la partie suivante ) :
imagesc(uint8(u), [0,255]); colormap gray; axis image; Question 1 :Créez une image de taille200×256qui soit constante sur chaque colonne et dont le niveau de gris des colonnes varie progressivement de 0 à 255. Aide Matlab :Si et sont deux entiers alors .est le vecteur ligne a b (a:b) [a,a+1,...,b-1,b] Question 2 :?Que représente l'image suivante
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 120 120 120 120 120 0 0
0 0 120 255 255 255 120 0 0
0 0 120 255 255 255 120 0 0
0 0 120 255 255 255 120 0 0
0 0 120 120 120 120 120 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
3.2 Visualisation des images 3.2.1 Plage de valeurs La manipulation mathématique des images amène à considérer des images dont les niveaux de gris sont des nombres réels (ou du moins la représentation informatique des nombres réels, c'est-à-dire des nombres flottants). En effet toutes les ima ges ne peuvent pas être restreinte à
2/7
être à valeurs entières entre 0 et 255. Néanmoins il faut garder à l'esprit que toutes les images affichées à l'écran sont des images standards qui respectent ces contraintes. Il y a alors deux méthodes pour visualiser une image à valeur réelle. Soit l'image est u u proche d'une image standard et alors on arrondit chaque vale ur à l'entier le plus proche u(i,j) entre0et255). Soit on effectue un changement de(ce que réalise la fonction Matlab uint8 variable affine qui ramène l'intervalle[min(u),max(u)]sur l'intervalle[0,255], et on effectue ensuite une discrétisation des valeurs avec . Cette deuxième méthode est particulière-uint8 ment adaptée pour visualiser des images dont la plage de valeurs n'est pas standard (comme la somme de deux images par exemple).
3.2.2 Lecture et écriture des fichiers d'images La fonction Matlab permet de lire des images enregistrées sous forme de fichier imread sur l'ordinateur :
u = imread('tile.png'); Ainsi obtenue à des valeurs de type (i.e.des entiers compris entre 0 et 255). Pour u uint8 pouvoir faire des calculs sur cette image, il faut la convertir en nombre flottant grâce à la fonction : double u = double(u); Pour lire une image on utilisera la fonction (voir le fichier ) lire_img_ng lire_img_ng.m u = lire_img_ng('tile.png'); Pour enregistrer une image dans un fichier d'image il faut faire la conversion inverse et u utiliser la fonction : imwrite imwrite(uint8(u),'nouvelle_image.png'); ATTENTION:Matlab écrase les fichiers existants sans prévenir !
3.2.3 Visualisation des images avec Matlab La fonction que l'on utilisera pour visualiser des images av ec Matlab est la fonction vis_img_mat qui se trouve dans votre dossier . tp1 Question 3 :Ouvrez et lisez avec l'éditeur Matlab le fichier . Testez les deux vis_img_mat.m valeurs de l'option sur l'image . Comment expliquez-vous les différences opt water.png observées entre les deux visualisations ?
3.2.4 Visualisation conservant sa taille originale Pour afficher une image en taille réelle, c'est-à-dire un pix el de l'écran correspond à un pixel de l'image, nous allons donc faire appel à . imshow Lisez rapidement le fichier . vis_img_ext.m Remarquez qu'il faut préciser un nom de fichier (sans extensi on) pour chaque image visua-lisée. Dans l'exemple ci-dessous :
u = double(imread('water.png')); vis_img_ext(u,1);
3/7
4
Transformée de Fourier discrète (TFD)
4.1 En dimension 1 Question 4 :). Quelles sont les( où Lire l'aide de la commande fft help fft doc fft différences par rapport à la définition du cours ? Toutes ces différences sont des problèmes de conventions qui ne changent pas les propriétés quantitatives de la TFD. Par soucis de simplicité on utilisera donc la définition de Matlab pour ces TP. Créez un signal discretude longueurN= 512représentant un créneau :
% Longueur du signal : N=256; ind = 1:N; % Creation du signal : u = zeros(1,N); u( (N/4+1) : (3 N/4) ) = ones(1,N/2); * % Affichage du signal : figure(1); plot(ind, u, 'b -'); axis([0, N, -0.1, 1.1]); * Question 5 :du signal (utilisez ) Calculez le module de Fourier et visualisez-modu u abs le avec la commande . Le graphique obtenu est-il en plot(ind, modu); axis tight; conforme à vos attentes ? Recommencez en utilisant la fonction . fftshift
4.2 En dimension 2 4.2.1 TFD et TFD inverse La TFD en dimension 2 est donnée par la fonction , la transformation inverse est fft2 donnée par . Lisez la section “Algorithm” de l'aide en ligne de cette fon ction. Remarquez ifft2 que la propriété de séparabilitée de la transformation est mise en œuvre. Remarque :ait une “petiteIl est possible que la TFD inverse de la TFD d'une image réelle partie” imaginaire (à cause des erreurs d'arrondi). Dans ce cas il faut extraire la partie réelle avec la commande . real
4.2.2 Visualisation du module Pour visualiser le module d'une image nous utiliserons la fo nction donnée vis_mod_img dans l'archive. Pour voir l'aide de la commande : . help vis_mod_img
Question 6 :, visuali-. En utilisant la fonction Lisez le fichier vis_mod_img.m subplot sez sur une même figure le module de l'image avec les trois jeux de paramètres room.png . Expliquez l'intérêt du seuillage. Quelle propriété (d,opt) = (0,0), (1,0), (1,1) de symétrie du module peut-on observer ?
On ne visualisera pas la phase d'une image car son interpréta tion est assez moins, comme le montre les expériences qui suivent, la phase d'une image est importante que son module du point de vue de l'information qu 'elle contient.
difficile. Néan-au moins aussi
4/7
4.2.3 Echange du module et de la phase de deux images Calculez et visualisez les deux images obtenues en échangeant le module et la phase des images et . Recommencez cette expérience avec les couples d'images building.png tile.png ( , ) et ( , ). sand.png water.png tile.png sand.png
Question 7 :Quelles conclusions générales peut-on tirer de ces expériences sur le contenu visuel du correspondant respectivement au module et à la phase d'une image ? (On distinguera deux types de “contenu visuel” : les contours géométriques et les textures.)
5
Effet de Gibbs et zooms avant
5.1 Polynôme trigonométrique associé à un signal discret N N Soituk,k= 0, . . . , N1un signal discret et˜un,n=, . . . ,1sa TFD. On sup-2 2 pose queNest un entier pair. On rappelle que le polynôme trigonométrique associé àuest le polynômePudéfini par N 1 2 X 2iπnx Pu(x) = ˜une . N N n=2 PuvérifiePu(k) =ukpour toutk= 0, . . . , N1,Puest donc un polynôme trigonométrique qui interpole les valeurs du signalu. En revanche,Pun'est pas nécessairement à valeur réelle ce qui n'est pas satisfaisant en pratique.
i˜ = 0également Question 8 :Montrer quePuest à valeur réelle si et seulement su. Montrer N 2 que pour tout signalu, la partie réelle dePuest un polynôme trigonométrique qui interpole les valeurs deu.
En pratique, on utilise la partie réelle dePupour interpoler le signalu. Il en est de même en dimension 2.
5.2 Effet de Gibbs sur les images L'effet de Gibbs est le phénomène suivant : les projections b asses fréquences d'un signal présentant des discontinuités ont des comportements oscillants autour des discontinuités. Nous allons mettre en évidence ce phénomène à partir d'une image d iscrète (voir le polycopié pour le cas des signaux unidimensionnels). Créez une image de taille512×512repésentant un rectangle gris claire rectangle (niveau de gris 200) sur un fond gris foncé (niveau de gris 50). Calculez la TFD de l'image . Annulez toutes les fréquences qui ne sont pas sur le carré central de taille× rectangle n n avec et calculez l'image correspondant à ce spectre ne comportant que des n = 64 rectbf basses fréquences. On pourra visualiser cette image en niveau de gris mais aussi en tant que surface grâce aux commandes suivantes : surf(rectbf, 'EdgeColor', 'none'); colormap(jet); colorbar; axis tight; Question 9 :Commentez les résultats observés.
5/7
5.3 Zooms avant Le fichier d'instructions vous permet de comparer trois méthodes pour zooms_avant.m zoomer une image. La première est la méthode “pixel le plus proche”. La deuxième repose sur l'interpolation bilinéaire. La troisième est le zoom par zé ro-padding (extension du spectre avec des hautes fréquences nulles).
Question 10 :Testez les zooms sur plusieurs images. Décrivez brièvement les défauts de chacune des méthodes. Expliquez le lien entre les défauts du zoom par zéro-padding et l'effet de Gibbs.
6
Zoom arrière et aliasing
Le fichier d'instructions illustre le phénomène d'aliasing ou de repliement aliasing.m du spectre.
Question 11 :Répondre aux questions posées dans le fichier . aliasing.m
7
Translation non entière et rotation
7.1 Translation non entière Soit(uk,l)une image carrée de tailleN×Netum,n)sa TFD. On pose
N N 11 2 2 X X2iπmx2iπn N N Pu(x, y) =u˜m,ne e N N m=n=2 2 le polynôme trigonométrique représenté paru.
Question 12 :Soitaetbdeux réels. Exprimez la TFD de(k, l)7→Pu(ka, lb)en fonction des u˜m,n. Codez dans la fonction un algorithme qui v = translation_fourier(u,a,b) calcule la translation de l'imageupar le vecteur(a, b)(Aide Matlab :l'opération multiplication coordonnées par coordonées de deux matrices et s'écrit ). Cette fonction retournera A B A. B * la partie réelle de la translation dePu, en accord avec les remarques de la section 5.1.
7.2 Rotation d'une image L'algorithme de rotation d'une image est basé sur la décompo sition suivante :   cosθsinθ Rθ:= sinθcosθ         θ θ cosθsinθ1 0 1 tan 1 tan 2 2 = sinθcosθ0 1sinθ1 0 1 { } { } :=T(θ) :=S(θ)
Rθ:=TθSθTθ
6/7
Remarquez que le changement de variable donné parT(θ)revient à translater chaque co-    θ lonne :u(k, l)devientu k+ tanl, l. De même, le changement de variable donné parS(θ) 2 revient à translater chaque ligne :u(k, l)devientu(k, lsin(θ)k).
Les consignes qui suivent ont pour but de coder l'algorithme de rotation.
Question 13 :Codez une fonction qui translate v = translation_colonnes(u,t) chaque colonne de par le vecteur en utilisant la TFD unidimensionnelle (Aide Mat-k u t(k) lab :renvoie la matrice des TFD des colonnes de ). Testezsi est une matrice, alors A fft(A) A cette fonction avec des vecteurs de translation non entiers.
Question 14 :Codez une fonction qui translate chaque v = translation_lignes(u,t) ligne de par le vecteur . On utilisera la fonction et les k u t(k) translation_colonnes transpositions de matrice (Aide Matlab :est ).la transposée de A A'
Question 15 :en effectuant troisCoder la fonction v = rotation_fourier(u,theta) appels successifs aux fonctions et . translation_colonnes translation_lignes Commencez par copier l'image au centre d'une image nulle deux fois plus grande pour éviter u les problèmes de bords. Imposez à chacune des translations de ne pas déplacer la colonne (ou la ligne) du centre de l'image. Illustrez la méthode en visua lisant chacune des images intermé-diaires.
7/7
Soyez le premier à déposer un commentaire !

17/1000 caractères maximum.