Vous êtes sur la page 1sur 10

M1 INFO Module : TI

TPs de Traitement dimages M1 Info

C. Roudet B. Billiot
1

M1 INFO Module : TI

Programme et objectifs
Lobjectif de ces TP est de vous faire implmenter sous Matlab diffrents outils de traitement et de compression dimages. Le premier TP consistera intgrer dans une interface GUI Matlab, plusieurs traitements en temps rel. Lacquisition dimages se fera grce des webcams. Linterface GUI Matlab contiendra : - une fentre dacquisition, - une fentre de traitement, - et un ensemble de boutons (associs des fonctions) pour lancer les traitements. Pour les TP suivants (2, 3 et 4), vous appliquerez les traitements sur des images fixes, sans utilisation dinterface GUI Matlab.

Programme des TP Matlab : TP 1 : Histogramme, binarisation et LUT avec GUI Matlab TP 2 : Etirement et galisation dhistogrammes, filtrage de bruit TP 3 : Dtection de contours et segmentation dimages TP 4 : Compression et qualit de reconstruction TP 5 : TP not d1h (exercice applicatif sur une des notions vues)

M1 INFO Module : TI

Programme votre disposition et aide au dmarrage


Le fichier acquis_test_M1.m vous aidera dmarrer le TP, il est votre disposition ici : http://ufrsciencestech.u-bourgogne.fr/~roudet/enseignement/TI/acquis_test_M1.m Il doit tre copi dans le rpertoire de travail. Ce programme permet la prise en main, la collecte d'information et les tests de votre dispositif d'acquisition. Une fois les informations de votre dispositif d'acquisition rcupres, nous allons crer un programme d'acquisition et de traitement de base (contenant une fonction dinversion dimage, dont le code vous sera donn). Par la suite, votre travail consistera adjoindre de nouvelles fonctionnalits. L'ensemble des traitements se fera sur des images en niveau de gris.

Cration de linterface graphique (GUIDE en matlab) :


- lancer MATLAB - cliquer sur licne GUIDE (voir la figure ci-aprs)

- dans longlet Create new GUI choisir un des 4 modes (par dfaut on prendra Blank GUI ) - on obtient une fentre avec sur la gauche les diffrents objets (push button, radio button, slider etc) que lon peut placer sur linterface graphique.

Axe est une fentre qui permet dafficher la vido

- Il suffit de choisir un objet et de le dessiner sur linterface graphique : 1) choisir Axes et dessiner les fentres dacquisition et de traitement (comme sur la figure de la page suivante).

M1 INFO Module : TI

2) Ajouter 3 boutons (un pour raliser linversion dimage, un pour stopper le traitement en cours et un dernier pour sortir de linterface).

Aperu du GUIDE demand :

- Pour accder aux paramtres des boutons, on double clique dessus et une fentre Property Inspector souvre alors. Les paramtres modifier pour les boutons sont : - String : le nom qui apparat sur le bouton (sur linterface) - Tag : cela modifie le nom de la fonction dans MATLAB associe au bouton Important : bien sassurer que le nom avant _Callback (correspondant la fonction associe au bouton dans Matlab) est bien le mme que le Tag . - Ds que lon sauvegarde le fichier GUIDE , MATLAB gnre automatiquement un fichier .m portant le mme nom que le fichier GUIDE . La partie surligne (dans le code en page suivante) est la partie cre partir dun bouton de tag pushbutton1. Il suffit de rajouter du code la suite de cette partie pour ajouter des actions associes au bouton.

M1 INFO Module : TI

Le code comment que vous devrez ajouter dans la fonction associe au bouton Inversion (pour raliser linversion vido) est disponible ici : http://ufrsciencestech.u-bourgogne.fr/~roudet/enseignement/TI/inversion.m

POUR FINIR : NE PAS OUBLIER DAJOUTER CECI :


Dans la fonction suivante, gnre par le GUIDE (o nom_fichier correspond au nom de vos fichiers .fig et .m) : function varargout = nom_fichier_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) delete(imaqfind); // CODE A AJOUTER ICI

M1 INFO Module : TI

Algorithmes du programme demand


Cration du GUIDE Bouton Sortie et Fin Gnration du .m de ce GUIDE Bouton stop dj enclench ? Appui bouton Inversion Appui bouton Stop Appui bouton Sortie et Fin non Mise 1 du stop

oui

Fermer linterface

Bouton Inversion Mise 0 du bouton stop Configuration de lentre vido

Retour dans la boucle while du traitement

Bouton Stop Mise 1 du stop

Dmarrage de la vido non while 1 oui Rafrachissement de limage Effacement du contenu de la fentre de traitement Retour dans la boucle while du traitement

Appui sur le bouton stop ? oui - Arrt vido - Effacement mmoire - Sortie boucle while

non

Mise en niveaux de gris de limage camera Calcul de limage inverse Affichage des images dans les fentres

Dans un premier temps faire fonctionner le programme cr en cliquant sur le bouton Inversion , puis rajouter le code pour faire fonctionner les boutons Stop et Sortie et Fin . Vous vous apercevrez quil faudra chaque fois appuyer sur le bouton Stop avant de lancer un nouveau traitement (pour dabord terminer le traitement en cours). 6

M1 INFO Module : TI

TP1 : Histogramme, binarisation et Look Up Tables (LUT)


Dans ce TP, nous allons crer 7 boutons : Histogramme, Binarisation man, Binarisation auto, LUT Inv, LUT R, LUT V et LUT B dans linterface cre prcdemment (GUIDE). I) Histogramme Crer le bouton Histogramme dans linterface (GUIDE : .fig) et complter la fonction correspondante dans le fichier Matlab (.m) Quand on clique sur ce bouton, on dsire afficher : - dans la fentre de gauche : limage en niveau de gris provenant de la webcam - dans la fentre de droite : lhistogramme de cette image. On appelle h lhistogramme damplitude, dfini de telle sorte que h(n) donne le nombre de pixels de limage dont le niveau de gris vaut n. Comparez votre histogramme avec celui fourni par la fonction imhist . Attention : les indices dune matrice ou dun vecteur commencent 1 ! Quobserve-t-on lorsquon fait varier la luminosit de limage acquise ? II) Binarisation Crer le bouton Binarisation dans linterface (GUIDE : .fig) et complter la fonction correspondante dans le fichier Matlab (.m). Quand on clique sur ce bouton, on dsire voir afficher dans la fentre de gauche limage en niveau de gris provenant de la webcam et la binarisation de cette image dans la fentre de droite : 1) Le seuil aura t choisi en ayant visualis lhistogramme au pralable (on pourra demander lutilisateur de le taper au clavier). Exemple 1 : retrouver en plus grand en Annexe 2

Rsultat :
Exemple 2 : retrouver en plus grand en Annexe 2

M1 INFO Module : TI

2) Le seuil sera dtermin automatiquement par la fonction Matlab graythresh (mthode d'Otsu dtaille en Annexe 1). Remarque : on pourra afficher dans la fentre de traitement la valeur du seuil automatique. Visualisez maintenant lhistogramme de limage binarise, que remarquez-vous ? III) LUT Sous Matlab, il est possible de crer ses propres LUT et de les appliquer laide de la fonction colormap. Les valeurs doivent cependant tre normalises sur lintervalle [0, 1]. Prenons, par exemple, le cas simple dune matrice M de taille 3x3 : 4 4 1 1 2 2 3 3 4 Cette matrice comprend quatre valeurs distinctes. On se propose dafficher : 1 en noir, 2 en blanc, 3 en rouge, et 4 en vert. Pour cela on cre une LUT map4C dont les sorties sont les quatre couleurs souhaites. Pour appliquer cette LUT limage affiche, on tape la commande colormap(map4C) : M = [4 4 1 ; 1 2 2 ; 3 3 4] ; % Dfinition de la LUT = palette de couleurs indexes (tableau) r = [0 1 1 0]; v = [0 1 0 1]; b = [0 1 0 0]; map4C = [r v b]; % cration de la LUT qui convertit les pixels 1 en noir (0, 0, 0) image(M) colormap(map4C) % indique la palette de couleurs indexes considre 1) Crer le bouton LUT Inv dans linterface (GUIDE : .fig) et complter la fonction correspondante dans le fichier Matlab (.m) pour recrer linversion vido (ralise prcdemment partir dune image en niveaux de gris) grce une LUT. 2) Enfin crer les boutons LUT R, LUT V et LUT B dans linterface (GUIDE : .fig) et complter la fonction correspondante dans le fichier Matlab (.m) pour visualiser plan par plan limage couleur, en crant les LUT adquates pour les plans Rouge, Vert et Bleu. Rappel : pour une image couleur Im, le canal Rouge sobtient grce linstruction suivante : R = Im( : , : , 1) ;
% Plan Rouge

M1 INFO Module : TI

Annexe 1 : mthode dOtsu


Il existe plusieurs mthodes permettant de dterminer automatiquement le seuil de binarisation. Une des plus connues est la mthode dOtsu. On considre une image A (de taille l x c), dhistogramme h(n) et dont les niveaux de gris n appartiennent [0, L]. La probabilit p(n) a priori dun niveau de gris n est alors dfinie par : p(n) = h(n) / (l . c) La fonction p(x) est alors une densit de probabilit. En effet, on peut alors vrifier que :

Il est alors possible de dterminer la moyenne et la variance des niveaux de gris :

La mthode dOtsu repose sur lhypothse que les pixels de limage appartiennent deux classes C1 et C2. Si on dcide que les pixels appartiennent C1 si leur niveau est infrieur ou gal t et appartiennent C2 sinon, on peut calculer la probabilit a priori de C1 et C2.

Les moyennes et variances des niveaux de gris de C1 et C2 sont alors donnes par :

On montre que : Par ailleurs, on appelle intra la variance intra-classe et inter la variance interclasse dfinies par :

M1 INFO Module : TI
On montre que (variance des niveaux de gris de limage) est indpendante du seuil de binarisation et que :

En revanche, intra et inter dpendent de la sparation en classes. Selon Otsu, la sparation optimale est obtenue en minimisant la variance intra-classe et en maximisant la variance interclasse. Or la somme de ces deux variances est constante, de ce fait, maximiser la variance interclasse est quivalent minimiser la variance intra-classe. Le seuil idal est alors obtenu pour le maximum de inter.

Annexe 2 : Images pour les tests (binarisation)

10