Vous êtes sur la page 1sur 21

TP Bases du Traitement de lImage

Master IPS UE : Imagerie 1


Adrien MARION 12 fvrier 2007

Table des matires


1 Introduction gnrale 2 TP0 : Initiation Matlab 2.1 Prambule . . . . . . . . . . . . . . . . . . . . . . . . 2.1.1 Premires dclarations . . . . . . . . . . . . . 2.1.2 Assignations de matrices . . . . . . . . . . . . 2.1.3 Oprations entre matrices . . . . . . . . . . . 2.1.4 Formats reconnus par Matlab . . . . . . . . . 2.2 Fonctions Matlab utiles pour le traitement dimages 2.2.1 Commandes deacement . . . . . . . . . . . 2.2.2 Commandes diverses . . . . . . . . . . . . . . 2.2.3 Commandes dachages de donnes . . . . . 2.2.4 Commandes de la toolbox image processing 2.3 Applications . . . . . . . . . . . . . . . . . . . . . . . 3 TP1 : Echantillonnage et quantication 3.1 Dnitions . . . . . . . . . . . . . . . . . 3.2 Quantication et espaces chromatiques . 3.2.1 Applications . . . . . . . . . . . . 3.3 Echantillonnage . . . . . . . . . . . . . . 3.3.1 Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 4 4 5 5 5 5 6 6 6 7 7 7 8 8 9 9 10 10 11 11 11 11 12 13 13 14

4 TP2 : Manipulation dimages et histogramme 4.1 Manipulation dimages . . . . . . . . . . . . . . 4.1.1 Applications . . . . . . . . . . . . . . . . 4.2 Histogramme . . . . . . . . . . . . . . . . . . . 4.2.1 Modication de dynamique . . . . . . . 4.2.2 Applications . . . . . . . . . . . . . . . . 4.3 Histogramme cumul . . . . . . . . . . . . . . . 4.3.1 Applications . . . . . . . . . . . . . . . . 1

TABLE DES MATIRES

5 TP3 et TP4 : Convolution et ltrage 5.1 Dnition gnrale . . . . . . . . . . 5.2 Filtrage linaire . . . . . . . . . . . . 5.2.1 Applications . . . . . . . . . . 5.3 Filtrage non linaire . . . . . . . . . 5.3.1 Filtres dordre . . . . . . . . . 5.3.2 Applications . . . . . . . . . . 5.3.3 Morphologie mathmatique . 5.3.4 Applications . . . . . . . . . .

. . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

15 15 15 16 16 17 17 18 19 20 20 20 21 21

6 TP5 : Transforme de Fourier 6.1 Dnition de la transforme de Fourier 6.1.1 Applications . . . . . . . . . . . 6.2 Filtrage frquentiel . . . . . . . . . . . 6.2.1 Applications . . . . . . . . . . .

TABLE DES MATIRES

Adrien MARION - 12 fvrier 2007

Introduction gnrale

Les rcents dveloppements technologiques, notamment en informatique, ont impos les systmes numriques dans notre quotidien. Ces sytmes qui vont des simples applications bureautiques aux nouveaux tlviseurs haute dnition nous sont devenus quasi indispensables. Cette nouvelle re du numrique a galement sonn lheure de la rvolution dans le domaine de la photographie et plus gnralement dans celui de limagerie. Les enjeux autour de limagerie numrique sont normes. Ils peuvent tre dordre qualitatif et traiter de la bonne formation des images, par exemple en imagerie mdicale. Mais aussi dordre quantitatif lorsquil sagit dchanger via Internet des millions dimages. Ou encore dordre cryptographique dans le cas de donnes condentielles. Cest pour toutes ces raisons que de nombreuses personnes dans le domaine de la recherche, universitaires mais aussi industriel, sintressent ce nouveau domaine issu de limagerie numrique : le traitement de limage. Lobjectif de cette srie de TP est de vous fournir les bases ncessaires au traitement de limage. Pour cela, nous tudierons diverses notions telles que la quantication, lchantillonnage, le ltrage... Nous utiliserons le logiciel Matlab pour aborder ces direntes notions.

1 INTRODUCTION GNRALE

Adrien MARION - 12 fvrier 2007

2
2.1 Prambule

TP0 : Initiation Matlab

Le logiciel Matlab est un outil grandement utilis pour le prototypage dans de nombreux domaines. Cest un logiciel assez intuitif qui permet de raliser des tests de faisabilit relativement rapidement, en comparaison au temps ncessaire au dveloppement sur une cible matriel de type DSP par exemple. Nanmoins, la limite principale de ce logiciel se trouve tre laugmentation importante des temps de calculs pour des algorithmes plus volus que ceux que nous verrons lors de ces TP. Linterface Matlab peut se rsumer assez simplement. Dans un premier temps, on slectionne le rpertoire de travail laide du Current directory. Cest dans le rpertoire courant quon slectionnera nos images par exemple. Ensuite, on sintresse : la fentre Command Window qui permet de taper une liste de commandes la vole, la fentre Workspace qui liste toutes les variables dclares et la fentre Command History qui liste les dernires commandes utilises dans la fentre Command Window. Si on veut automatiser quelques comandes au lieu de les rpter systmatiquement dans Command Window, on peut crer un script matlab qui aura pour extension .m. Pour cela, on clique sur File/New/M-File. Une fois les commandes crites la suite les unes des autres, on lance le programme avec F5. On peut slectionner seulement une bribe du script et le lancer avec F9. Les commandes ctrl+r et ctrl+t commentent et dcommentent une partie du programme. On sauve ensuite le script en le nommant par exemple mon_premier_script.m. Il est possible de crer ce quon appelle des fonctions matlab. Pour cela, on ouvre un M-File et on tapes lentte de la fonction, par exemple function [sortie] = addition(entree1, entree2) ; ATTENTION : le chier matlab devra avoir le mme nom que la fonction pour tre ensuite appel, dans notre cas ce sera addition.m Le nom MATLAB est issu de lexpression Matrix Laboratory. On retrouve cette forte attirance pour le raisonnement matriciel dans le nom. Ainsi, il faut tout considrer comme matriciel. Une srie de donnes ranges en vecteur ligne ou colonne est une matrice de taille 1, v= 0 1 0 5 7 5 4 3

une image est une matrice de taille 2,

et un volume 25 5 I(1) = 9 15 14

est une matrice de taille 3 22 4 3 10 0 2 3 4 1 8 9 7 7 3 7 9 6 5 8 11 I(2) = 2 10 7 8 2 9 7 9 13 12 17 9 14 12 16 5 1 2 0 2

I=

25 22 4 3 10 5 7 3 7 9 9 6 5 8 11 15 13 12 17 9 14 14 12 16 5 1 2 0 3 3

I(3) =

15 13 12 17 9 25 22 4 3 10 9 6 5 8 11 0 2 3 4 1 2 9 7 9 3

2 TP0 : INITIATION MATLAB

Adrien MARION - 12 fvrier 2007

2.1 Prambule

2.1.1

Premires dclarations

Ainsi, on dclare un vecteur comme ceci : vecteur_ligne=[1 2 3 4 5] ; On peut le transposer en utilisant : vecteur_colonne=[1 2 3 4 5] ; Pour cette raison, il ne faut jamais utiliser le symbole dans un nom de variables ou autres. On dnit une matrice comme cela : matrice=[1 2 3 ;2 3 4 ;3 4 5] ; Cest le ; qui indique le passage la ligne. Le ; nal vite dacher lcran la saisie. Le remplissage dune matrice fait automatiquement appel des boucles caches codes et converties en dll. Ainsi, lusage de boucle doit tre proscrit dans la plupart des cas habituels. Par exemple, pour remplir un vecteur avec des chires de 1 10 conscutifs, on tapera : vecteur=[1 :1 :10] Si on prfres aller de 2 en 2, on changes le pas ainsi : vecteur=[1 :2 :10] ... Il sut donc de dnir lindice de dpart, lindice darrive et le pas. 2.1.2 Assignations de matrices

Une fois nos matrices dclares, on peut travailler avec. Pour accder un lment de la matrice1 , on tapes : matrice(indice_ligne,indice_colonne) Par extension, on peut avoir accs une zone de la matrice et la remplir de 0 par exemple en tapant : matrice(indice_ligne_depart :pas_ligne :indice_ligne_arrivee,indice_colonne_depart :pas_colonne :indice_colonne_arrivee)=0 ; On peut par exemple choisir une ligne et une colonne sur deux pour crer un damier par exemple. En conclusion, laccs un lment de la matrice se fait avec des () tandis que lassignation se fait avec des []. 2.1.3 Oprations entre matrices

On peut additionner, diviser et soustraire des matrices, de mme taille bien entendu, avec + / -. On peut ajouter une constante une matrice. On peut galement raliser la multiplication matricielle avec *. Si on veut multiplier les lments de deux matrices membre membre, on utilisera .*. De mme, si on veut lever une matrice au carr, on fera . 2 pour que chaque lment soit lv au carr. 2.1.4 Formats reconnus par Matlab

Il faut se mer des formats lorsquon utilise Matlab. En eet, la plupart des calculs se font sur des variables de types double. Il faut donc bien veiller les remmettre dans le bon format, en utilisant le principe du cast, avant de les visualiser. Les formats reconnus sont :
1

un pixel de limage particulirement

2 TP0 : INITIATION MATLAB

Adrien MARION - 12 fvrier 2007

2.2 Fonctions Matlab utiles pour le traitement dimages

int8 int16 int32 int64 uint8 uint16 uint32 uint64 double char

On sintressera principalement au formats uint8 et double pour nos applications.

2.2

Fonctions Matlab utiles pour le traitement dimages

Cette section est destine faire une liste2 des premires commandes ncessaires pour nos applications en traitement dimages. Il vous incombe bien entendu daller voir laide de ces fonctions. La premire fonction connatre est la fonction daide help. Il sut de taper help suivi du nom de la fonction, par exemple help plus. 2.2.1 Commandes deacement

clear nom_variable permet deacer la variable du workspace. On peut galement faire un nettoyage complet avec clear all. close gure 13 permet de fermer une gure en particulier. Encore, on peut gnraliser et fermer toutes les gures avec close all. clc signie clear command window. clf signie clear gure. Contrairement close, cette fonction eace le contenu de la gure mais ne la ferme pas. Il est conseill de lancer les 3 premires commandes en dbut de chaque script4 an de ne pas tre gn pas dventuelles variables subsistantes. 2.2.2 Commandes diverses

size pour connatre la taille dune matrice. min calcule le minimum sur une seule dimension ; utilisation de min(min()). max calcule le maximum sur une seule dimension ; utilisation de max(max()). mean calcule la moyenne sur une seule dimension ; utilisation de mean2(). round pour larrondi au plus proche. ceil pour larrondi suprieur. oor pour larrondi infrieur. hist ache lhistogramme dune srie de donnes. imhist calcule lhistogramme et le range dans un vecteur de taille gale au nombre de niveaux de gris. graythresh calcule par la mthode dOTSU un seuil pour la binarisation dune image. ones gnre une matrice de 1.

non exhaustive tant donn le grand nombre de commandes existantes... on indique le numro de la gure fermer 4 et non pas fonction car on eacerait alors les champs dentres de la fonction
3

2 TP0 : INITIATION MATLAB

Adrien MARION - 12 fvrier 2007

2.3 Applications

2.2.3 2.2.4

zeros gnre une matrice de zros. reshape remet en forme une matrice, par exemple une ligne en une matrice. t2 calcule la transforme de Fourier 2D. tshift centre sur zro le rsultat de la transformation de Fourier. Commandes dachages de donnes gure pour ouvrir une nouvelle gure. imshow pour acher une image. title pour le titre. xlabel et ylabel pour les titres des axes. legend pour une lgende automatique. subplot pour acher plusieurs objets dans une mme gure. plot pour lachage de donnes 1D (pour information). Commandes de la toolbox image processing imread pour ouvrir une image ; renvoie dune matrice. lter2 ralise un ltrage bidimensionnel. medlt2 ralise un ltrage mdian bidimensionnel. im2bw binarise une image. imerode ralise une rosion. imdilate ralise une dilatation. imopen ralise une ouverture. imclose ralise une fermeture. strel gnre un lment structurant. imnoise permet lajout de bruit une image. imresize modie la taille dune image par interpolation.

2.3

Applications

1. Calculer 0.1*realmax et 1.1*realmax. Quel sont les rsultats des oprations 1/0 et 0/0 ? A laide de la fonction format, visualisez le nombre grand_nombre=5.1204830618e-5. 2. Crez un vecteur V1 avec les multiples de 5 jusqu 100. Crez un vecteur V2 contenant les multiples de 2 jusqu 40. Sauvegardez V1, V2 et grand_nombre dans un chier binaire .mat avec la fonction save. Sauvegardez les ensuite dans un chier .txt laide des fonctions fopen, fclose, fwrite, et fprintf. Eacer entirement le workspace puis restaurez les 3 variables. Eacez seulement grand_nombre. 3. Calculez la somme des produits termes termes pour obtenir un scalaire. Multipliez chacun des termes des 2 matrices ensemble pour obtenir une matrice 2D. Multipliez les termes dindices identiques ensemble pour obtenir un vecteur. 4. Crez une matrice carre de taille 100 contenant uniquement des 255. 5. Crez un damier de taille 256 4 carrs. Achez-le avec un titre. 6. Ouvrez limage cameraman.tif . Achez-la dans une nouvelle gure. Achez-la dans 2 fentres de la mme gure puis dans 4.

2 TP0 : INITIATION MATLAB

Adrien MARION - 12 fvrier 2007

3
3.1 Dnitions

TP1 : Echantillonnage et quantication

Une image monochrome peut tre dnie comme une fonction 2D de lintensit lumineuse, I(x, y), en fonction de la localisation spatiale (x et y sont les coordonnes spatiales). Une image couleur est dnie, non plus par une fonction 2D mais 3D. La dimension supplmentaire est gale 3 car limage est code suivant 3 composantes, par exemple le rouge, le vert et le bleu pour un systme RVB. Une image numrique est une image dont le domaine spatial ET la luminosit ont t discrtiss. On dit quon a chantillonn lespace et quon a quanti la luminosit. On peut la reprsenter par une matrice 2D pour une image monochrome et par une matrice 3D pour une image couleur.

Chaque lment de la matrice est un pixel qui vient de lexpression anglo-saxonne picture element. On appelle traditionnellement niveau de gris la valeur dun pixel. Les images sont le plus souvent codes sur 256 niveaux de gris. Cest ce quon appelle la dynamique de limage. La taille dune image est ensuite calcule en multipliant le nombre de lignes de la matrice par le 3 TP1 : ECHANTILLONNAGE ET QUANTIFICATION
Adrien MARION - 12 fvrier 2007

3.2 Quantication et espaces chromatiques

nombre de colonnes pour avoir le nombre de pixels de limage. Ensuite, on multiplie le nombre de pixels par 1 octet si le codage est sur 8 bits.

3.2

Quantication et espaces chromatiques

Daprs les dnitions prcdentes, on peut coder une image sur autant de niveau de gris quon souhaite. Dans la majeure partie des cas, une image monochrome est code sur 8 bits qui fournit 28 = 256 niveaux. Les valeurs prises se situent de 0 255 en format non sign et de -128 127 en sign. Cependant, certaines images, par exemple les thoravisions, sont codes sur 16 bits ce qui entrane un codage sur 216 = 65536 niveaux de gris. Nanmoins, il est rare que toute la dynamique soit utilise. A prsent, si on code chacune des 3 composantes couleurs dune image, on utilise 3 8 = 24 bits ce qui donne 224 = 16777216 couleurs. Une image couleur a 3 composantes qui dpendent de lespace chromatique utilis. Le plus commun est lespace RVB5 base sur la synthse additive qui est compos dune composante rouge, dune composante verte et dune composante bleue. Nanmoins, il existe de nombreux autres espaces de couleurs : les espaces YUV et YCbCr qui sont construits de la mme manire. Le premier terme est linformation de luminance Y et les deux autres sont dits termes de chrominance. Le deuxime est fonction de B-Y et le troisime de R-Y. Seuls les coecients devant B-Y et R-Y direncient les 2 systmes. Ils sont dailleurs souvent confondus. Le systme YUV a t cr lorigine pour la vido analogique. Lespace HSV qui signie Hue, Saturation, Value6 . La teinte correspond au type de couleur (rouge, jaune, violet...), la saturation correspond lintensit de la couleur et la valeur correspond elle la brillance de la couleur. Lespace Lab o L reprsente la luminance, a reprsente la gamme de laxe rouge/vert et b la gamme de laxe jaune/bleu. Ce sytme est plus complexe et nous ne ltudierons pas en dtail. Nous en avons cit ici quelques-uns mais il en existe encore bien dautres. 3.2.1 Applications

1. Tout dabord, ouvrez avec imread de Matlab limage mandrill.bmp. Calculer la taille thorique de cette image en KiloOctets. Vriez que la valeur obtenue est la mme que celle fournie par Windows. 2. Ouvrez prsent limage Lena512_24bits.jpg. Sur la mme gure, achez avec imshow limage source et chacune des composantes R, V et B. Transformez cette image en niveau de gris laide la fonction rgb2gray. Achez sur direntes gures 4 fentres avec subplot limage source ainsi que ses 3 composantes dans les systmes YCbCr et HSV. NB : il est inutile de calculer la taille de cette image car elle a subi une compression JPEG qui la considrablement diminue. 3. Limage de Lena transforme en niveau de gris est code sur 256 niveaux. Notre il nen discerne pas autant. Achez limage de Lena en niveau de gris sur 128, 64, 32, 16, 8, 4 et enn 2 niveaux an de visualiser la dgradation de limage en cas de sous-quantication trop importante.
5 6

RGB pour les anglo-saxons TSV pour Teinte, Saturation, Valeur en Franais

3 TP1 : ECHANTILLONNAGE ET QUANTIFICATION

Adrien MARION - 12 fvrier 2007

3.3 Echantillonnage

10

3.3

Echantillonnage

Nous avons tudi la question de la discrtisation de la luminosit. Intressons-nous prsent la discrtisation de lespace appel chantillonnage. On dnit la frquence dchantillonnage comme linverse de la priode dchantillonnage F e = T1e . La priode dchantillonage qui spare 2 pixels suivant une direction correspond une ralit physique puisquelle est gale la distance relle entre 2 points. Si par exemple, T e = 1 mm, cela signie quon a choisi de reprsenter un point tous les millimtres. La frquence serait alors de 1000 points par mtre. On a ainsi la relation entre la taille dune image en pixels et sa taille relle en divisant le nombre de pixels par la frquence spatiale. NB : si lchantillonnage est le mme suivant les 2 directions, on parle disotropie. Dans le cas contraire, on parle danisotropie. 3.3.1 Applications

1. Nous allons dans un premier temps sous-chantilloner une image en ne prenant quun point sur deux dans les deux directions. Ainsi, les nombre de lignes et de colonnes vont tre diviss par deux et par consquent la taille sera divis par quatre. Pour cela, ouvrez limage mandrill.bmp. Crez une nouvelle image sous-chantillonne en vous rappelant de lassignation particulire des lments dune matrice avec Matlab. 2. Ensuite, utilisez la fonction interp2 pour sur-chantillonner par interpolation limage prcdement sous-chantillonne.

3 TP1 : ECHANTILLONNAGE ET QUANTIFICATION

Adrien MARION - 12 fvrier 2007

11

4
4.1

TP2 : Manipulation dimages et histogramme

Manipulation dimages

Ralisons pour dbuter quelques oprations simples entre images. On peut additionner des images en veillant pondrer chacune dentre elles pour ne pas saturer limage rsultat. On peut galement les soustraire pour acher limage dirence. Cette opration est trs utile an de vrier limpact dun algorithme de traitement. Il est bien sr pertinent de visualiser limage de sortie mais il peut arriver quon ne discerne pas certaines dirences. Limage dirence permet alors de les localiser. Voyons un exemple sur ce cas grossier avec limage source gauche, limage modie droite et limage dirence en dessous :

4.1.1

Applications

1. Ouvrez avec Matlab les images Beach_nb.tif et Manhattan_nb.tif . Additionnez-les avec des coecients de pondration variables et visualisez le rsultat. 2. Vous pouvez maintenant regarder limage dirence entre la somme et une des 2 images. Il est bien sr possible de retrouver lune puis lautre image avec les coecients adquats dans lopration dirence.

4.2

Histogramme

Lhistogramme est un outil trs utilis en traitement dimages. Il reprsente la distribution des niveaux de gris dune image. On lit en abscisse les dirents niveaux de gris et en ordonne le nombre de pixels ayant pour valeur ce niveau de gris. 4 TP2 : MANIPULATION DIMAGES ET HISTOGRAMME

Adrien MARION - 12 fvrier 2007

4.2 Histogramme

12

La distribution particulire dune image permettra de raliser des traitements adapts. On voit par exemple sur la gure suivante, qui reprsente une IRM crbrale, le problme pos par le fond de limage. On visualise nettement sur lhistogramme luniformit du fond pour des valeurs proches de 0.

Dans ce cas, on pourrait raliser un masque du cerveau en sparant les valeurs infrieures 10 correspondant au fond et les valeurs suprieures 10 correspondant linformation utile. 4.2.1 Modication de dynamique

A prsent, voyons un autre exemple de lintrt de lhistogramme.

On visualise clairement que la dynamique de limage nest pas trs importante. Or, plus la dynamique est tale et meilleure est la qualit de limage. Il est alors possible de modier cette dynamique en utilisant cette transformation : S(n) = round M (n a) (b a)

o n est le niveau de gris de limage dentre, a et b sont les limites respectivement infrieure et suprieure de lhistogramme de limage dentre, M reprsente lamplitude de limage darrive (en gnral 255) et round est la fonction qui arrondit au plus proche. Cette fonction est indispensable puisque nous travaillons dans un espace discret avec un nombre limit de niveaux de gris. En appliquant cette transformation sur notre exemple, on obtient une image bien meilleure :

4 TP2 : MANIPULATION DIMAGES ET HISTOGRAMME

Adrien MARION - 12 fvrier 2007

4.3 Histogramme cumul

13

4.2.2

Applications

1. Ouvrez prsent limage coupe_histo.jpg. Identier le seuil appliquer pour extraire les noyaux du fond. Raliser le seuillage laide de im2bw et vrier en visualisant limage obtenue que le rsultat est viable. 2. A laide de la fonction hist de Matlab, visualiser lhistogramme de limage evasion_nb_dynamique_etroite. Modier sa dynamique pour obtenir une image plus contraste.

4.3

Histogramme cumul

Intressons-nous maintenant la notion dhistogramme cumul. Elle est base sur le mme principe que lhistogramme. Il sut en fait de prendre tous les pixels dont la valeur est infrieure ou gale au niveau de gris courant. On normalise ce nombre en le divisant par le nombre total de pixels de limage. Lhistogramme cumul est alors strictement croissant par morceaux et a pour valeur nale 1. Lapplication la plus connue de lhistogramme cumul est lgalisation dhistogramme. Cela consiste aecter pour chaque niveau de gris un mme nombre de pixels. Lhistogramme devient alors plat. On obtient la transformation dite dgalisation par la formule : S(n) = round [255.Hc(n)] o Hc est lhistogramme cumul et n le niveau de gris de limage source. On voit un exemple dgalisation sur cette photo naturelle :

NB : dans le cas dimages numriques, il est quasiment impossible de raliser un histogramme parfaitement plat cause de la quantication des niveaux de gris qui nous limite un nombre ni de niveaux. 4 TP2 : MANIPULATION DIMAGES ET HISTOGRAMME
Adrien MARION - 12 fvrier 2007

4.3 Histogramme cumul

14

4.3.1

Applications

1. Ouvrez limage tire.tif et vriez que son histogramme est resser dans les valeurs faibles. A laide des fonctions imhist et cumsum, calculez lhistogramme cumul de cette image. Vous utiliserez ensuite la dll grayxform qui transforme limage source en image galise grce la transformation quon lui fournit. La syntaxe est assez simple : I_modif iee = grayxf orm(I_source, vecteur_transf ormation) avec vecteur_transformation un vecteur de taille 256 (dans le cas dimages 8 bits) qui donne lquivalence entre la valeur dun niveau i en entre et sa valeur vecteur_transformation(i) dans limage galise. Attention ! vecteur_transformation prend ses valeurs entre 0 et 17 . Cest le type (8 bits, 16 bits...) qui dterminera la dynamique de limage modie.

ce qui pourra vous amener utiliser la fonction numel

4 TP2 : MANIPULATION DIMAGES ET HISTOGRAMME

Adrien MARION - 12 fvrier 2007

15

5
5.1

TP3 et TP4 : Convolution et ltrage

Dnition gnrale

Une technique classique du traitement dimages est le ltrage linaire (par opposition au ltrage dit adaptatif). Le ltrage dimage est ralis au moyen de produits de convolution. On appelle h le ltre ou masque de convolution. Ce masque est ncessairement de taille impaire. Lopration de convolution est calcule en tout point de limage source en 3 tapes : 1. On centre le masque (par exemple un masque carr 3*3) sur le pixel courant, 2. on calcule les 9 produits entre la valeur de limage et la valeur du masque superpos 3. puis on somme les 9 produits pour obtenir la valeur du pixel de limage ltre. On peut rsumer lopration de convolution par la formule suivante :
(N 1)/2 (N 1)/2

S(i, j) =
k=(N 1)/2 l=(N 1)/2

Ei+k,j+l .hk,l

o E est limage dentre, h le masque de convolution avec h0,0 le centre du masque et N la taille du ltre (dans notre exemple N=3). On veillera ce que la somme des coecients du masque ne soit pas suprieure 1 an de ne pas saturer limage ltre.

5.2

Filtrage linaire

En fonction du ltre utilis, on pourra obtenir dirents eets visuels. On classe habituellement les ltres linaires en 2 familles : les ltres lisseurs ou passe-bas qui suppriment les contours hautes frquences. Ces ltres ont tendance rendre limage oue. les ltres dtecteurs de contours ou passe-haut qui eux, accentuent les composantes hautes frquences. Prenons comme exemple cette coupe sagittale dIRM du cerveau.

5 TP3 ET TP4 : CONVOLUTION ET FILTRAGE

Adrien MARION - 12 fvrier 2007

5.3 Filtrage non linaire

16

On peut visualiser leet dun ltrage passe-haut ( gauche) et celui dun ltrage passe-bas ( droite). On remarque bien les eets respectifs daccentuation de contours et de ou.

5.2.1

Applications

1. Soient les 3 masques de convolution suivants : 1 1 1 1 H1 = 1 1 1 9 1 1 1


1 0 1 H2 = 1 0 1 1 0 1

0 1 0 H3 = 1 4 1 0 1 0 1 2 0 3 3

Sur papier, calculez la convolution de la matrice E avec chacun de ces ltres : 0 2 3 4 1 8 9 7 2 10 7 8 2 9 7 9 1 2 0 2

E=

Quelles conditions aux limites peut-on utiliser ? A votre avis, quels sont les impacts de ces ltres ? 2. Maintenant que vous avez saisi le principe du ltrage linaire, nous allons les tester sur de vritables images. Ouvrez les images dominos_nb.tif et map_monde_nb.tif puis ralisez les dirents traitements avec la fonction conv2 de Matlab. Le ltre H1 est appel ltre moyenneur. Le ltre H2 est un ltre gradient vertical ; vous pouvez tester le ltre gradient horizontal. Le ltre H3 est un ltre Laplacien. Vriez limpact de la taille du masque de convolution sur limage ltre.

5.3

Filtrage non linaire

Nous avons vu prcdemment le principe des ltres linaires utilisant la convolution qui taient assez simples mettre en uvre. Intressons-nous prsent quelques ltres non linaires un peu plus complexes. On peut citer trois types de ltrages non linaires : le ltrage dordre, la morphologie mathmatique et le ltrage adaptatif. Nous ne nous attarderons pas sur le ltrage adaptatif dans le cadre de ce TP pour des raisons de temps. Ce sont en eet des ltres longs concevoir puis implanter. Commenons par les ltres dordre. 5 TP3 ET TP4 : CONVOLUTION ET FILTRAGE
Adrien MARION - 12 fvrier 2007

5.3 Filtrage non linaire

17

5.3.1

Filtres dordre

Parmi les ltres dordres, il en existe trois basiques : le ltre min qui renvoie la valeur minimum parmi les 9 pixels du voisinage (dans le cas dune fentre 3*3), le ltre max qui renvoie la valeur maximum parmi les 9 pixels du voisinage, et le ltre median qui renvoie la valeur mdiane parmi les 9 pixels du voisinage. Le ltre min noircit limage puisquil privilgie des valeurs faibles tandis que le ltre max claircit limage. De plus, les ltres dordre ont tendance uniformiser des petites rgions. On en voit les eets sur limage de Lena ltre :

5.3.2

Applications

Les ltres min et max tant peu intressants, tudions le cas du ltre mdian. 1. Ouvrez limage bateaux_nb_bruite.bmp puis utilisez le fonction medlt2 pour supprimer le bruit de limage.

5 TP3 ET TP4 : CONVOLUTION ET FILTRAGE

Adrien MARION - 12 fvrier 2007

5.3 Filtrage non linaire

18

5.3.3

Morphologie mathmatique

La morphologie mathmatique a t et est toujours trs utilise dans de nombreux algorithmes de traitement dimages. Elle constitue une discipline part entire. Elle permet de slectionner des zones pertinentes dans une image. Nous verrons ici uniquement la morphologie mathmatique binaire ; on parle de morphologie mathmatique ensembliste8 . Le principe de base est dobserver la rponse de limage analyser lorsquon la multiplie par un lment gomtrique simple appel lment structurant. Un exemple dlment structurant de forme circulaire et de rayon 1 : 0 1 0 SE1 = 1 1 1 0 1 0

Il en existe bien dautres :

SE = 1

1 1 1 1 1 1 1 1

SE = 1

1 1 1 1 0 1 0 0

SE =

0 0 1 0 0

0 1 1 1 0

1 1 1 1 1

0 1 1 1 0

0 0 1 0 0

...

Daprs ce principe, on dnit deux oprations de bases : lrosion et la dilatation. Lrosion dun objet binaire regroupe lensemble des pixels recouverts entirement par llment structurant lorsque le centre de ce dernier parcourt lensemble de lobjet. Ainsi, lrosion supprime des pixels de lensemble. Mathmatiquement, F = {xi /Sxi F } avec F une forme de limage binaire et Sx llment structurant centr sur x. La dilatation dun objet binaire regroupe lensemble des pixels recouverts non entirement par llment structurant lorsque le centre de ce-dernier parcourt lensemble de lobjet. La dilatation, contrairement lrosion, va ajouter des pixels lensemble. Mathmatiquement, F = {xi /Sxi F = } avec F une forme de limage binaire et Sx llment structurant centr sur x. Voyons sur cette exemple simple lrosion (au centre) et la dilatation ( droite) de limage source ( gauche) : Il est possible denchaner les transformations de bases pour obtenir de meilleurs rsultats. Louverture est constitue dune rosion suivie par une dilatation. La fermeture est constitue dune dilatation suivie par une rosion.
8

par opposition la morphologie mathmatique fonctionnelle pour les images en niveaux de gris

5 TP3 ET TP4 : CONVOLUTION ET FILTRAGE

Adrien MARION - 12 fvrier 2007

5.3 Filtrage non linaire

19

5.3.4

Applications

1. Ouvrez limage circuit_nb.tif . Binariser-l avec im2bw en choisissant un seuil manuel daprs lhistogramme ou grce la fonction graythresh. Pour les fonctions de Matlab, le fond doit tre noir. On peut inverser une image grce loprateur Ensuite, utilisez . le fonction imerode avec llment structurant de base SE1. Vous pouvez ensuite tester les autres lments structurants et observer limpact de la taille et de la forme de ce-dernier sur le rsultat. 2. Ralisez les mmes oprations avec la fonction imdilate. 3. Comparez lrosion du fond de cette image avec la dilatation des formes de cette mme image. Concluez. 4. Vous pouvez reprendre les questions prcdentes avec limage irm_cerveau_binaire.jpg. 5. Ouvrez limage pearlite_nb.bmp. Binarisez-l comme dans la question 1. Ralisez une ouverture puis une fermeture sur cette image. Vous utiliserez la fonction strel pour gnrer un lment structurant de type circulaire de rayon 6.

5 TP3 ET TP4 : CONVOLUTION ET FILTRAGE

Adrien MARION - 12 fvrier 2007

20

6
6.1

TP5 : Transforme de Fourier

Dnition de la transforme de Fourier

La transformation de Fourier convertit une information temporelle (spatiale en 2D) en une information frquentielle. Ainsi une sinusode pure de frquence f0 dnie par une courbe innie dans un repre temporel sera dni simplement par 2 pics9 en +- f0 dans le domaine frquentiel. La transformation de Fourier inverse permet de retrouver cette sinusode partir des deux Diracs. La transformation de Fourier 2D discrte scrit : F (u, v) = 1 MN
M 1 N 1 m=0 n=0

f (m, n)ej2(

um + vn N M

avec 0 u M 1 et 0 v N 1 An de saranchir de linformation de phase issue de la transformation de Fourier10 , on reprsente habituellement le module de la transforme de Fourier ou spectre de Fourier. On peut tre ammen utiliser le logarithme pour mieux visualiser le spectre car linformation centrale qui reprsente la composante continue domine les autres composantes. Habituellement, on utilise 10 log(F (u, v)) En eet, la zone centrale de limage reprsente les basses frquences de limage tandis que les bords reprsentent les hautes frquences. Une image naturelle ayant un contenu frquentiel relativement basses frquences, on sintresse traditionnellement linformation centrale. Linformation contenue dans le spectre est trs intressante (densit spectrale, priodicit) puisqueelle permet de visualiser le contenu frquentiel de limage. Cependant, le spectre de Fourier ne fournit aucune information de localisation.

6.1.1

Applications

1. A laide des fonctions t2 et tshift, calculez puis achez les spectres de Fourier des images damier_nb.tif , bateaux_nb.tif et owers_nb.tif
9 10

nomms Dirac qui est complexe

6 TP5 : TRANSFORME DE FOURIER

Adrien MARION - 12 fvrier 2007

6.2 Filtrage frquentiel

21

6.2

Filtrage frquentiel

Nous avons vu dans les TP prcdents quil tait possible de ltrer les images avec des noyaux lissants ou dtecteurs de contours dans le domaine spatial. Il est possible de raliser un ltrage dans le domaine frquentiel ou domaine de Fourier. Pour cela, on modie le spectre de Fourier dune image avant de raliser une transformation de Fourier inverse pour avoir accs limage ltre. Le synoptique du ltrage frquentiel est prsent ci-dessous :

On considre dirents types de ltrage : le ltrage passe-bas qui limine les hautes frquences, le ltrage passe-haut qui limine les basses frquences et le ltrage passe-bande en supprimant les basses et hautes frquences. 6.2.1 Applications

1. Ouvrez limage irm_cerveau.jpg. Calculez et achez son spectre de Fourier. 2. Ralisez un masque de taille carre de 50 pixels localis au centre de limage. Pour ce faire, vous assignerez les 2500 pixels centraux 0 ; le masque supprime alors peine 4% du spectre. 3. Ralisez la transformation de Fourier inverse pour obtenir limage rsultat. A quoi va ressembler cette image ? 4. Reprenez le synoptique du ltrage frquentiel en choisissant cette fois de ltrer (mettre 0) toute linformation hors du carr central. Quelle type dimage va-t-on obtenir ?

6 TP5 : TRANSFORME DE FOURIER

Adrien MARION - 12 fvrier 2007