Vous êtes sur la page 1sur 44

Exemple de filtrage non-linaire : le filtrage mdian

Le filtrage mdian est une opration non-linaire : mdiane { xm + ym } mdiane { xm } + mdiane { ym } sauf exception
exemple sur des squences de signaux de longueur 3:

En traitement dimage, les tailles des fentres utilises pour le filtrage mdian sont gnralement impaires : 3 3 ; 5 5 ; 7 7
exemple :

fentre de 5 pixels en croix

Pour les fentres de taille paire ( 2 K valeurs ) : aprs ordonnancement croissant des valeurs, prendre la moyenne des 2 valeurs centrales : ( Kime valeur ordonne + (K+1)ime valeur ordonne ) valeur de sortie = 2

Exemple dapplication dun filtrage mdian


Image de rfrence ( taille 3 3 ) : 77
91 55 68 90 95 210

115 151

Filtrage mdian avec une fentre de taille 3 3 :

on liste les valeurs de limage de rfrence sur la fentre 3 3 : 55 , 68 , 77 , 90 , 91 , 95 , 115 , 151 , 210 valeur mdiane = 91
Filtrage mdian sur une fentre de taille 3 3 en croix:
77 55 68
151

95

on liste les valeurs de limage de rfrence sur la fentre : 55 , 68 , 77 , 95 , 151 valeur mdiane = 77

Comparaison : filtre mdian et filtre moyenneur Image Pices de rfrence, bruite ( bruit de type impulsionnel ) puis filtre avec un filtre moyenneur (33) et un filtre mdian (33).

Image de rfrence

Image bruite
ur n ne oye

Bruit

M dian

Observation : Le filtrage mdian est plus adapt que le filtrage linaire pour rduire le bruit impulsionnel

Exercice Chapitre 4 Comparaison : filtres non-linaires vs. filtres linaires Contrairement au filtrage par convolution (filtrage linaire), le filtrage non-linaire fait intervenir les pixels voisins suivant une loi non-linaire. Le filtre mdian (cas particulier du filtrage dordre), utilis dans cet exercice, est un exemple classique de ces filtres. linstar du filtrage par convolution, les filtres non-linaires oprent sur un voisinage donn.

1. Cration dune image bruite


Chargez limage BOATS_LUMI.BMP. Mettez jour la liste des chemins dans le path browser. Le but de lexercice est de comparer les effets linaires et non-linaires de deux filtrages sur une image bruite. La fonction imnoise de Matlab permet de crer diffrents types de bruit. laide de cette fonction, crez limage bruite de BOATS_LUMI avec un bruit de type poivre-et-sel ( salt-and-pepper ). Affichez limage bruite et expliquez comment peut-on crer ce bruit ?

2. Application dun filtre linaire


On souhaite rduire le bruit dans limage. Dans un premier temps, on considre un filtre moyenneur (3 3) pour rduire le bruit dans limage. Son noyau de convolution est :
1 1. 1 9 1 1 1 1 1 1 1

Appliquez ce filtre (utilisez la fonction imfilter), et observez limage bruite. Interprtez le rsultat obtenu.

3. Application dun filtre non-linaire


On souhaite prsent rduire le bruit avec un filtre mdian (3 3). Sous Matlab, le filtrage mdian peut tre ralis laide de la fonction medfilt2. Expliquez ce queffectue cette fonction. Appliquez ce filtre limage bruite et observez les rsultats. Expliquez les diffrences avec le filtre moyenneur prcdemment utilis.

Correction de lexercice : Filtrage linaire vs. Filtrage non-linaire

1 Voici les commandes entrer pour crer et observer limage bruite de BOATS_LUMI : I=imread(BOATS_LUMI.BMP) ; % image bateau en niveaux de gris IB = imnoise(I,'salt & pepper'); % image bruite figure(1) subplot(1,2,1) subimage(I) title(Image originale) subplot(1,2,2) subimage(IB) title(Image bruite) Voici les rsultats obtenus :

Le bruit poivre-et-sel utilis ici consiste mettre, alatoirement, plusieurs pixels aux valeurs 255 ou 0 (valeurs extrmes de lintervalle des niveaux de gris). Ce type de bruit impulsionnel peut apparatre par numrisation dune image ou au cours dune transmission.

2 Voici bruite :

les

commandes

pour

appliquer

un

filtre

moyenneur

limage

% Filtre moyenneur N = ones(3)/9 ; % noyau de convolution du filtre If1 = imfilter(IB,N) ; figure(2) image(If1) title('Image bruite filtre par un moyenneur (3 x 3)') v=0:1/255:1; colormap([v' v' v']); % LUT pour afficher en niveaux de gris Voici limage obtenue :

Le bruit salt-and-pepper est faiblement rduit. On distingue encore nettement les grains dans limage. Le filtre moyenneur ralise en effet la moyenne pour chaque pixel sur un voisinage (3 3) et le bruit des impulsions ( 0 ou 255) participe cette moyenne :

Le pixel cercl a le niveau de gris 8 ainsi que toute limage, lexception dun pixel bruit 255. En sortie du filtrage moyenneur, la valeur de sortie du pixel cercl (et de tout pixel ayant la valeur 255 dans son voisinage) sera : (88+255)/9 35. La valeur du pixel aprs filtrage nest donc pas reprsentative du voisinage de ce pixel, le bruit impulsionnel est trop faiblement rduit. Ce filtre linaire nest donc pas adapt.

3 Voici les commandes pour appliquer un filtre mdian limage bruite : % Filtre mdian If2 = medfilt2(IB,[3 3]) ; % filtrage mdian avec un voisinage 3 x 3 figure(3) image(If2) title('Image bruite filtre par un filtre mdian (3 x 3)') v=0:1/255:1; colormap([v' v' v']); % LUT pour afficher en niveaux de gris Voici limage obtenue :

Le bruit impulsionnel est visiblement rduit. Le filtrage mdian dun pixel P, sur un voisinage V(P) de taille (M N), ordonne les valeurs des pixels de V(P) par ordre croissant, et attribue en sortie la valeur mdiane sur ce voisinage au pixel P (opration non-linaire) :

Reprenons lexemple prcdent : les valeurs des pixels sont ordonnes par ordre croissant : 0, 8, 8, 8, 8, 8, 8, 8, 255. La valeur mdiane est donc 8. Pour cette opration non-linaire, les impulsions 0 et 225 nont pas dinfluence sur la valeur mdiane. Le filtrage mdian est donc adapt la rduction du bruit impulsionnel.

Exemple dapplication du filtrage morphologique, grains de riz (1/2)


a : Image de rfrence (grains de riz)

Pr-traitement :
b : Binarisation et rgularisation des formes c : Suppression des objets incomplets (grains sur les bords)

Exemple dapplication du filtrage morphologique, grains de riz (2/2) Tri des formes et rpartition en classes de formes par morphologie :
d : Classe des grains entiers e : Classe des grains briss f : Classe des grains plusieurs composantes connexes ( paquets de grains )

Possibilit de dnombrer et mesurer des grains de riz

Exemple dapplication du filtrage morphologique, feuilles mtalliques

Fermeture pour adoucir les contours et rgulariser les formes, puis binarisation de limage par seuillage Ouverture dans 2 directions diagonales connues pour dtecter les lignes Dtection des intersections, puis localisation sur limage de rfrence

Possibilit de dtecter un mouvement, de mesurer une dformation de la feuille,

Filtrages morphologiques Objectifs :


Obtention dun ensemble de points connects ayant une forme simple ( pour une image binaire ) Obtention des principales composantes connexes ( en faible nombre ) Rgularisation des formes du signal dimage

Applications :
Filtrage de taille Dnombrement dobjets Mesure dobjets

Chapitre 4
FILTRAGE NON-LINEAIRE

Filtrage par morphologie Cas des images images binaires

Rappel : Oprateurs binaires classiques


X , Y , Z : variables boolennes tats possibles : 0 ou 1 oprateur ET : Z = X ET Y ( not Z = X . Y )
X 0 1 0 1 Y 0 0 1 1 Z 0 0 0 1

oprateur OU : Z = X OU Y ( not Z = X + Y )
X 0 1 0 1 Y 0 0 1 1 Z 0 1 1 1

oprateur NON : Z = X
X 0 1 Z 1 0

Une variable qui ne peut prendre que deux tats (vrai ou faux, allum ou teint, en haut ou en bas, positif ou ngatif, noir ou blanc, ), est appele une variable boolenne. Typiquement, on attribue la valeur 1 lun des deux tats possibles et 0 lautre. On dfinit pour ces variables boolennes trois oprateurs de base : - le ET, la sortie est vrai uniquement si les deux entres sont vrai ; - le OR, la sortie est vrai si lune des deux entres au moins est vrai ; - le NON, la sortie est ltat inverse de lentre. Les tables de vrit , qui caractrisent ces diffrents oprateurs, sont donnes sur la figure ci-dessus. On note galement A . B pour A et B , et A + B pour A ou B . Notons que dautres oprateurs binaires sont construits partir de combinaisons de ces trois oprateurs de base : le NOR (i.e. non ou), le NAND (i.e. non et), le XOR (i.e. ou exclusif),

Filtrage morphologique
Concept :
Sinscrit dans la thorie de description des images. Prise en compte de la forme des composants structurs de limage. Applications basiques : traitement d'images binaires, extension au traitement d'images monochromes.

Oprateurs :
2 oprateurs basiques EROSION et DILATATION Combinaison de ces 2 oprateurs 2 oprateurs complmentaires : OUVERTURE et FERMETURE Ces oprateurs dpendent dun lment structurant.
Le filtrage morphologique repose sur la morphologie mathmatique, base sur une description ensembliste des images. Les oprateurs morphologiques privilgient la notion de forme plutt que linformation sur lamplitude des signaux. Ils sappliquent aussi bien aux images binaires (deux niveaux : blanc ou noir) quaux images monochromes (en niveaux de gris). Dans cette ressource, nous nous limitons au filtrage morphologique sur une image binaire. Ce filtrage non-linaire fait appel deux oprateurs de base (lrosion et la dilatation) et deux oprateurs complmentaires combinant les deux premiers (louverture et la fermeture). Ces oprateurs morphologiques utilisent une forme de rfrence avec laquelle le signal dimage est compar localement. Cette forme de rfrence est appele llment structurant. Nous allons maintenant expliquer en dtail le sens de ces termes.

Image binaire
L(m,n) {0, 1} (m,n) S support de limage L = 0 pixel de larrire plan (ou du fond) L = 1 pixel de lobjet (ou de la forme) 2 catgories : fond , forme Forme(s) : X X = { p S / L(p) = 1 }

Une image binaire est une image pour laquelle les pixels (m, n) nont que deux valeurs de luminance L(m, n) possibles, notes conventionnellement 0 (fond) et 1 (formes). On dfinit donc les formes X comme tant lensemble des points P daffixe p, appartenant au support S de limage, tel que la luminance en ces points soit gale 1 : X = { p S / L(p) = 1 } Une image binaire peut tre obtenue par une numrisation dont la quantification ne comporte que deux niveaux de reconstruction, ou par une binarisation dune image monochrome, notamment en utilisant son histogramme pour choisir un seuil adquat (cf. exercice Binarisation du chapitre 2).

lments Structurants (images binaires)


lment structurant: un ensemble de pixels 1 sur un support dans limage avec une origine ayant comme coordonnes (0, 0) (pixel marqu en rouge dans les figures) 3 exemples typiques:

centre du support

-alment structurant 1-D

-b-c lments structurants 2-D

B = {p de sorte que L(p) = 1} lment structurant symtrique:

Llment structurant, B, est un ensemble de pixels 1. Le point O de coordonnes (0, 0) fait gnralement partie de B, mais pas obligatoirement. Soit B un lment structurant compos dun ensemble de points P daffixe p. On dfinit alors B , llment structurant symtrique de B, comme tant lensemble des points daffixe -p. Exemple :

Erosion Morphologique (par B)


Notation X B Dfinition X B = { p S tel que Bp X} o Bp est la translation de B par p X B : ensemble des pixels daffixe p de S tel que pour chaque p, Bp est compltement inclus dans lobjet X Exemple :
lment Structurant Image rfrence

(a) lment structurant 4connexit

(b) lment structurant 8connexit

rosion avec (a)

rosion avec (b)

Lrosion dune forme X par un lment structurant B est note X B . Elle est dfinie par : X B = { p S, tel que Bp X}. Il sagit donc de lensemble des pixels P daffixe p du support S de limage, qui vrifient Bp X, lorsquils sont pris comme centre de llment structurant B (i.e. translation de B par p).

La figure ci-dessus prsente deux cas drosion. Les deux rosions sont ralises sur la mme image de dpart, mais avec deux lments structurant diffrents : cas a : Llment structurant est 4-connexit (origine 4 voisins). Chaque pixel du support qui a la valeur 0, ou qui a lun de ses 4 voisins la valeur 0 est mis la valeur 0 aprs filtrage. cas b : Llment structurant est 8-connexit (origine 8 voisins). Chaque pixel du support qui a la valeur 0, ou qui a lun de ses 8 voisins la valeur 0 est mis la valeur 0 aprs filtrage.

Dans les deux cas, on observe quune rosion limine les pixels isols sur le fond et rode le contour des objets.

Dilatation Morphologique (par B)


Notation : Dfinition: o XB X B = { p S tel que X }

est le symtrique de B translat par p

X B : ensemble de pixels daffixe p dans S tel que pour chaque p, na pas dintersection nulle avec X Exemple :
lment Structurant Image rfrence

(a) lment structurant 4connexit

(b) lment structurant 8connexit

Dilatation avec (a)

Dilatation avec (b)

La dilatation dune forme X par un lment structurant B est note X B . Elle est dfinie par : X B = { pS, tel que Bp X }. Il sagit donc de lensemble des pixels P

daffixe p, tel que le translat Bp , de llment structurant symtrique B , ait une intersection non vide avec X.
La figure ci-dessus prsente deux cas de dilatation. cas a : Llment structurant est 4-connexit. Chaque pixel du support qui est gal la valeur 1, ou qui a lun de ses 4 voisins la valeur 1 est mis la valeur 1 aprs filtrage. cas b : Llment structurant est 8-connexit. Chaque pixel du support qui est gal la valeur 1, ou qui a lun de ses 8 voisins la valeur 1 est mis la valeur 1 aprs filtrage.

Dans les deux cas, on observe quune dilatation limine les trous isols dans les objets et dilate le contour des objets en tenant compte de llment structurant. Proprit : Lrosion par B de lensemble XC complmentaire de X par rapport S, est quivalente la dilatation de X par B. On dit alors que lrosion et la dilatation sont duales par rapport la complmentation : X B = ( XC B )C

Filtrage par rosion et Reconstruction


(par dilatations contraintes)
Pixels appartenant la forme (valeur 1)

. lment structurant B

Pixels appartenant au fond (valeur 0)

Image de rfrence Ia

Image Ib : rosion de Ia par lment structurant B

Ic: Reconstruction partir de Ib et de Ia

Ic = ((((Ib B) ET Ia) B) ET Ia)...

.)

jusqu' l'idempotence de Ic
Limage Ib sert de point de dpart pour la premire dilatation dans la srie de dilatations

La figure ci-dessus prsente un exemple de reconstruction dune image avec une succession de transformations T bases sur une premire rosion par llment structurant B, puis une suite de dilatations par ce mme lment structurant. La transformation T est dfinie par : T(X) = (X B) ET Ia . Limage reconstruite Ic est obtenue par rptitions de la transformation T, jusqu lidempotence de Ic. On a donc : Ic=ToTooToT(Ib). Dans le cas de limage Ia, cette reconstruction permet de ne conserver que les tches noires tendues de limage, les tches isoles de petites tailles sont supprimes. Remarque : une transformation est idempotente si, aprs transformation, le rsultat est invariant par la transformation i.e. TT(X) = T(X). Cest le cas ici dans la mesure o lon compare le rsultat de la dilatation avec limage de rfrence Ia (via loprateur binaire classique ET). Cette proprit assure la stabilit du filtre morphologique.

Ouverture Morphologique (par B)


Notation : X o B Dfinition X o B = (X B) B rosion puis Dilatation

Effets : lissage de forme - Suppression des petits dtails de la bordure de lobjet - Dcoupage des isthmes troits

Fermeture Morphologique (par B)


Notation : X Dfinition B X B Dilatation puis rosion B = (X B)

Effets: lissage de forme - Le remplissage des canaux troits et des petits trous - Composants connects Proprit : Idempotence (X o B) o B = X o B (X B) B=X B

partir des deux oprateurs morphologiques de base, que sont lrosion et la dilatation, on peut, en les associant, engendrer deux autres transformations morphologiques qui sont louverture et la fermeture morphologique (transformations idempotentes). On dfinit :
LOuverture de X par B, note X o B.

Cest lopration correspondant lrosion par B suivie de la dilatation par B. Soit :


XoB=(X B) B

Louverture dune image binaire par un lment structurant circulaire adoucit les bords des formes en supprimant les dtails finis de bord et coupe les isthmes troits.
La Fermeture de X par B, note X B.

De manire duale louverture, la fermeture correspond la dilatation de X par B suivie de lrosion par B :
X B = ( X B) B

La fermeture adoucit galement les bords des formes X, bouche les canaux troits, fusionne les objets proches les uns des autres et bouche les trous de petite taille. titre de rsum de la ressource, les diffrents filtrages morphologiques sont appliqus sur une image binaire de rfrence, avec un lment structurant 8-connexit :

Image binaire de rfrence

Image rode

Image dilate

Ouverture

Fermeture

Les formes sur limage binaire de rfrence correspondent aux zones blanches du visage, de la chevelure, du col de chemise, et de la vgtation derrire le personnage. Lrosion rode les contours et supprime les pixels isols. linverse, la dilatation limine les trous et dilate les contours. Ces deux phnomnes sont nettement visibles, notamment, sur la vgtation, et les zones claires de la chevelure du personnage. Louverture et la fermeture adoucissent les contours des formes (visage, vgtation, ). Pour une ouverture, une rosion est dabord utilise. Cette dernire supprime certaines parties des formes qui ne pourront donc pas tre ensuite dilates. Sur limage obtenue aprs ouverture,

certaines formes sont donc moins grandes que sur limage obtenue aprs fermeture (chevelure, )

Exercice Chapitre 4 Traitement dimages binaires par Morphologie Mathmatique Lanalyse par morphologie mathmatique vise modifier la structure et la forme des objets de limage, par exemple, pour sparer les objets, les discriminer en fonction de leur taille, remplir les trous, Rappels : La transformation morphologique modifie la valeur dun pixel de limage en fonction de la valeur de ses voisins. Pour cela, on utilise un lment structurant, qui est un masque binaire. Il permet de prendre en compte le voisinage du pixel. Exemple dun lment structurant 4-connexit (le centre est marqu par un cercle) : 0 1 0 1 1 1 0 1 0

Les traitements morphologiques sont dfinis partir de deux oprations de base qui sont lrosion et la dilatation. Dfinition : Soient S le support de limage, et p laffixe dun point P de cette image : - Lrosion dune forme X par un lment structurant B est note X B . Elle est dfinie par : X B = { p S, tel que Bp X} ; - La dilatation dune forme X par un lment structurant B est note X B . Elle est dfinie par : X B = { p S, tel que Bp X }. Lrosion et la dilatation sont duales par rapport la complmentation : X B = ( XC B )C

Avec : - XC complmentaire de X ; - B lment symtrique de B ( i.e. B (i, j) = B (-i, -j) ) ; - Bp lment transpos de B par le vecteur daffixe p.

Vous allez utiliser Matlab pour raliser des filtrages morphologiques. Avant de commencer, ouvrez le fentre daide de Matlab (commande helpwin) et accdez la Toolbox Image Processing. Vous aurez ainsi une description dtaille pour chacune des fonctions utilises dans cet exercice.

1. Erosion et dilatation dune image binaire


Mettez jour la liste des chemins dans le path browser. Ouvrez un nouveau fichier MFile dans lequel vous allez saisir vos commandes et dont chaque ligne (se terminant par un ; ) sera ensuite interprte. Chargez limage CIRCUIT.TIF avec imread. 1.1 Binarisez limage en utilisant la mthode de votre choix (cf. exercice binarisation du chapitre 2).

1.2 Par convention le fond de limage binaire doit tre noir ( 0 ), et la forme de lobjet doit tre blanche ( 1 ). Donc, vous pouvez inverser limage binaire avec loprateur ~ ( I = ~ I ). 1.3 Choisissez un lment structurant. Vous pouvez lcrire directement sous la forme dune matrice binaire (ex. SE = ones(3), SE = [0 1 0;1 1 1;0 1 0], ). Erodez les formes de limage binaire avec imerode. Dfinissez, avec laide de Matlab (commande helpwin), cette opration. 1.4 De mme, dilatez les formes de limage binaire avec imdilate et dfinissez cette opration avec laide de Matlab. 1.5 Erodez ou dilatez limage binaire en jouant avec la forme de llment structurant. Observez notamment les rsultats lorsque llment structurant nest pas symtrique par rapport son origine. 1.6 On veut observer la relation de dualit entre lrosion et la dilatation. Pour cela, crez une image binaire rsultat de lrosion du fond, et une seconde rsultat de la dilatation des formes. Comparez ces deux images et concluez.

2. Ouverture (rosion puis dilatation) dune image binaire bruite


2.1 Chargez limage CIRCUIT.TIF et ajoutez lui du bruit avec la fonction randn. Cette fonction permet de gnrer une matrice dun bruit gaussien N(0, 1) que vous pouvez amplifier et ajouter votre image originale Remarques : - les dimensions de la matrice du bruit et de limage originale doivent tre les mmes ; - pensez convertir vos donnes pour les oprations effectues (fonctions double et uint8). 2.2 Binarisez limage originale et limage bruite, puis comparez les. 2.3 Choisissez un lment structurant symtrique. Faites lrosion puis la dilatation de limage binaire bruite. La compose de ces deux fonctions sappelle louverture de limage. Quel est lintrt ? 2.4 Que ce passe t-il si, cette fois, llment structurant nest pas symtrique ? Proposez et testez une mthode qui garantisse alors, la reconstruction des objets lidentique. Une piste : il faut penser faire lrosion et la dilatation avec un lment structurant diffrent.

3. Fermeture puis ouverture d'une image binaire


3.1 Chargez limage en niveaux de gris PEARLITE.TIF. Binarisez et inversez limage. 3.2 Faites la fermeture (imclose) de cette image binaire inverse. Dfinissez cette opration (cf. aide Matlab). Pour gnrer lES vous pouvez utiliser la fonction strel (cette fonction gnre des objets lment structurant ).

3.3 Effectuez louverture (imopen) de limage binaire prcdente. Dfinissez cette opration. 3.4 Analysez la chane complte des oprations.

Correction de lexercice : Morphologie Mathmatique pour images binaires 1.1 Voici un exemple de solution pour binariser limage CIRCUIT.TIF : I = imread('CIRCUIT.TIF'); seuil = graythresh(I) % recherche du seuil avec la mthode d'Otsu Ib = im2bw(I,seuil); % binarisation 1.2 Sous Matlab, loprateur ~ correspond au non logique . Vous pouvez donc inverser une image binaire avec la commande : Ibi=~Ib. Pour observer lopration effectue, tapez : figure(1) imshow(Ib) Ibi =~ Ib; figure(2) imshow(Ibi)

1.3 on considre, par exemple, llment structurant suivant : 1 1 1

0 1 0 0 1 0

Pour roder limage binaire Ibi et afficher le rsultat : SE = [0 1 0;1 1 1;0 1 0] ; % lment structurant Ier = imerode(Ibi,SE) ; figure(3) imshow(Ier) Llment structurant permet de dfinir un voisinage pour chacun des pixels de limage dorigine : les pixels voisins sont ceux 1 au sein de llment structurant. On balaie ensuite lensemble des pixels de limage en leur appliquant llment structurant. La valeur dun pixel aprs rosion est alors dfinie comme tant la valeur minimale de tous les pixels dans son voisinage. Pour une image binaire, si lun des pixels du voisinage est 0, la valeur de sortie du pixel est alors automatiquement 0. La figure ci-dessous prsente un exemple drosion, on dtaille le cas du pixel daffixe (3, 2), avec un lment structurant 4-connexit.

Voici limage obtenue aprs rosion :

Lrosion a limin les pixels isols sur le fond et a rod le contour des objets de limage CIRCUIT. 1.4 Pour dilater limage binaire Ibi et afficher le rsultat : Idi = imdilate(Ibi,SE) ; figure(4) imshow(Idi) La valeur de sortie dun pixel est la valeur maximale parmi tous les pixels compris dans le voisinage. Pour une image binaire, si lun des pixel du voisinage est 1, la valeur de sortie du pixel est 1. La figure ci-dessous prsente un exemple de dilatation, et dtaille le cas du pixel daffixe (2,4), avec un lment structurant 4-connexit.

Voici limage obtenue aprs dilatation :

La dilatation limine les trous isols dans les objets et dilate les bords des objets.

1.5 On rode limage avec llment structurant suivant : 0 1 1

0 1 1 0 0 0

Dans ce cas, llment structurant nest pas symtrique. Cette rosion tronque les coins suprieurs droits des objets.

Les formes rodes et dilates dans les objets dpendent donc fortement de la forme de llment structurant. 1.6 On veut montrer que : dilater la forme cest roder le fond puis inverser , soit que : Ibi SE = ( IbiC SE )C : on cr Idi = Ibi SE : Idi = imdilate(Ibi,SE) ; on cr Idi2= ( IbiC SE )C : Idi2 = ~imerode(~Ibi,SE) ;

Les deux images obtenues sont identiques. On peut vrifier ce rsultat en entrant la commande : isequal(Idi,Idi2). La fonction isequal retourne 1 si les deux matrices sont identiques, 0 sinon. 2.1 Voici la liste de commandes pour chargez limage CIRCUIT.TIF et lui ajouter un bruit gaussien N(0, 1) : I = imread('circuit.tif'); % Ajout de bruit : [nb_lig, nb_col] = size( I ); % taille de l'image Bruit = 25 * randn(nb_lig, nb_col); IB = double( I ) + Bruit; % Conversion IB = uint8( IB );

Voici limage Circuit avant ( gauche) et aprs ( droite) ajout du bruit :

2.2 Voici un exemple de script pour construire limage binaire et limage binaire bruite : seuil1 = graythresh(I) ; Ib = im2bw(I,seuil1); seuil2=graythresh(IB) ; IBb = im2bw(IB,seuil2); subplot(1,2,1) subimage(Ib) subplot(1,2,2) subimage(IBb) Voici les rsultats obtenus:

2.3 On considre, par exemple, un lment structurant 8-connexit. Pour raliser louverture de limage bruite, on inverse limage (afin davoir les formes en blanc et le fond en noir), puis on crit : SE = [1 1 1 ;1 1 1 ;1 1 1] ; Iouv = imdilate(imerode(~IBb,SE),SE) ; subplot(1,2,1) subimage(~IBb) subplot(1,2,2) subimage(Iouv)

Voici les images obtenues:

Dans le cas prsent, lintrt dune telle transformation est droder dans un premier temps les formes de limage pour supprimer les pixels isols qui correspondent au bruit, puis de dilater les formes de limage afin de leur rendre une proportion proche de celle quelles avaient avant lrosion. Le bruit est ainsi attnu. 2.4 Si llment structurant nest pas symtrique, lrosion va bien attnuer le bruit de limage (pixels isols sur le fond). Pour reconstruire les formes initiales, on applique une dilatation avec le mme lment structurant. Mise en garde :

Il faut prendre garde bien comprendre la dfinition dune dilatation : X B = { p S, tel que Bp X } Le rsultat de la dilatation est lensemble des points, tels que si on leur applique llment structurant symtrique, lintersection avec la forme X nest pas lensemble vide. On considre, par exemple, un lment structurant non symtrique : 1 1 0 .

1 1 0 0 0 0

Le coin suprieur gauche est donc tronqu par dilatation:

Pour reconstruire la forme, on veut utiliser une dilatation. Considrons que la dfinition de la dilation ne tienne pas compte de la symtrie : X B = { p S, tel que Bp X }. Attention cette dfinition est errone et a pour unique but de vous prsenter une erreur classique ne pas commettre avec un lment structurant non symtrique.

Avec une mauvaise dfinition de la dilatation, on saperoit reconstruction avec le mme lment structurant naboutit pas :

que

la

Pour reconstruire la partie grise, il faut utiliser llment structurant suivant : 0 1 1 qui est le symtrique de llment structurant de dpart.

0 0 0 0 1 1

Afin de crer des ouvertures et des fermetures qui garantissent cette relation de symtrie, et donc une reconstruction cohrente des formes, la dfinition de la dilatation est caractrise par llment structurant symtrique de celui utilis lors de lrosion. Dans le cas dune ouverture avec un lment structurant symtrique, le problme ne se pose videmment pas. Voici un exemple de script pour raliser louverture de limage bruite binarise Circuit avec un lment structurant non symtrique : SE1 = [1 1 0 ;1 1 0 ;0 0 0] SE2 = [0 0 0 ;0 1 1 ;0 1 1] Iouv = imdilate(imerode(~IBb,SE1),SE2) ; Voici les rsultats obtenus :

Le bruit est attnu et les formes sur limage de sortie gardent les mmes proportions que sur limage dentre.

3.1 Voici la commande pour charger limage Pearlite.tif, la binariser et linverser : I = imread(pearlite.tif); L = graythresh(I) I = ~im2bw(I,L); 3.2 Pour raliser la fermeture de cette structurant avec la fonction strel de Matlab : SE = strel('disk', 6) Dans la console on a alors : image on cr un lment

limage de la fermeture est alors obtenue par la commande : Ifer = imclose(I,SE); Voici limage obtenue:

La fermeture adoucit les bords des formes, bouche les canaux troits, fusionne les objets proches les uns des autres et bouche les trous de petite taille.

3.3 Pour raliser louverture fonction imopen de Matlab : Im = imopen(Ifer,SE); On obtient alors limage suivante:

de

limage

prcdente,

on

utilise

la

Louverture dune image binaire adoucit les bords des formes en supprimant les dtails. 3.5 La succession de la fermeture puis de louverture nous a permis dextraire les objets larges de limage binaire, et de raliser une segmentation. Ces deux traitements sont typiquement utiliss pour adoucir les bords, complter, ou pour enlever des objets dans une image binaire. Le choix de llment structurant dpend de la taille et de la forme des objets modifier.

Filtrage morphologique des images monochromes


Extension de la morphologie binaire travers la notion dombre (ou sousgraphe) de la fonction image Dfinitions : niveau de gris f dun pixel P : f (m, n) o (m, n) est laffixe de P sous-graphe U ( f ) : U ( f ) = { (m, n, l), lR, tel que : l f (m, n) } reconstruction T de limage f partir de son sous-graphe U ( f ) : f (m, n) = T [ U ( f ) ] = Supl { l tel que (m, n, l) U ( f ) }
exemple ( cas dun signal 1-D) : f(n) U(f)

rosion dune image en niveaux de gris


Lrosion (note ) dune image monochrome f par un lment structurant B est dfinie en terme de sous-graphe : Y= U(f) U(B) f B = T [ Y ] = Supl { l tel que (m, n, l) Y } Classiquement, on considre un lment structurant plan de valeur nulle sur son support ( f B ) (P) = Min { valeurs des pixels du voisinage du pixel P }
exemple : n 115 m 95 55 91 68 151 77 90 210

- -

Image de rfrence

lment structurant (4-connexit)

liste ordonne des valeurs du voisinage : 68 , 90 , 91 , 95 , 151 min ( f B ) (P) = 68

Dilatation dune image en niveaux de gris


Comme pour lrosion, la dilatation (note ) est dfinie en terme de sous-graphe ( f ) U ( B ) Y= U : f B = T [ Y ] = Supl { l tel que (m, n, l) Y } En considrant un lment structurant plan de valeur nulle sur son support : ( f B ) (P) = Max { valeurs des pixels du voisinage du pixel P }
exemple : n 115 m 95 55 91 68 151 77 90 210 liste ordonne des valeurs du voisinage : 55 , 68 , 77 , 90 , 91 , 95 , 115 , 151 , 210 lment structurant max (8-connexit) ( f B ) (P) = 210

- - - - - -

Image de rfrence

Exemples de filtrages morphologiques (lment structurant 33 complet)


Image de rfrence Image dilate morphologiquement

Image rode

Observation : La dilatation en niveaux de gris accrot la luminance des pixels entours de voisins plus lumineux Observation : Lrosion en niveaux de gris rduit la luminance des pixels qui sont entours de voisins de moindre intensit

Exercice Chapitre 4 Filtrage morphologique pour des images monochromes Dans cet exercice, il sagit dtendre aux images monochromes, les traitements morphologiques qui ont t vus pour des images binaires. Chargez limage en niveaux de gris CAMERAMAN.TIF et mettez jour la liste des chemins dans le path browser . Remarque : dans le cas des images binaires, les formes taient 1 et le fond 0. Pour obtenir une telle reprsentation, nous avons vu quil faut inverser limage avec loprateur ~ pour la plupart des images naturelles. Dans le cas des images naturelles en niveaux de gris, les objets (formes) sont plutt sombres et le fond clair. On ralise donc le mme type dopration d inverse vido grce la fonction imcomplement (tapez help imcomplement pour plus dinformations). Ainsi, les formes sont claires et le fond est sombre.

Filtrage morphologique dimages monochromes


1 Erodez limage Cameraman.tif (imerode) avec llment structurant ES dfini par : ES=strel('ball',5,5). Affichez le rsultat et comparez le avec limage avant traitement. A laide des dfinitions donnes dans la toolbox Image Processing de Matlab, donnez une dfinition de lrosion pour les images en niveaux de gris. 2 De mme, Dilatez limage Cameraman.tif (imdilate) avec le mme lment structurant. Affichez le rsultat et comparez le avec limage avant traitement. Toujours laide des dfinitions donnes dans la toolbox Image Processing, donnez une dfinition de la dilatation pour les images en niveaux de gris. 3 Ralisez une ouverture et une fermeture de limage Cameraman.tif. Observez et interprtez les rsultats obtenus.

Correction de lexercice : Filtrage morphologique dimages monochromes

1 Voici les commandes pour roder limage et comparer le rsultat avec limage dorigine : % Chargement de limage I = imread(cameraman.tif) ; Ic = imcomplement(I); % inverse vido de limage de dpart figure(1) subplot(1,2,1) subimage(Ic) % Erosion SE = strel('ball',5,5) % dfinition de llment structurant Ierod = imerode(Ic,SE); subplot(1,2,2) subimage(Ierod) % Affichage des images en niveaux de gris non-inverss figure(2) subplot(1,2,1) subimage(I) subplot(1,2,2) subimage(imcomplement(Ierod)) Voici les images obtenues avant et aprs rosion :

Une rosion en niveaux de gris rduit lintensit lumineuse des pixels qui sont entours de voisins de moindre intensit (visible sur les images inverses). Ce voisinage est dfini par llment structurant. Lensemble des pixels de limage est balay en appliquant llment structurant. La valeur dun pixel aprs rosion est alors dfinie comme tant la valeur minimale de tous les pixels de son voisinage.

2 Voici les commandes pour dilater limage et comparer le rsultat avec limage dorigine : % Dilatation figure(3) Idilat = imdilate(Ic,SE); subplot(1,2,1) subimage(Idilat) subplot(1,2,2) subimage(imcomplement(Idilat)) Voici les images obtenues avant et aprs dilatation :

Une dilatation en niveaux de gris accrot lintensit lumineuse dun pixel entour de voisins plus lumineux (visible sur les images inverses). Lensemble des pixels de limage est balay en appliquant llment structurant. La valeur dun pixel aprs dilatation est alors dfinie comme tant la valeur maximale de tous les pixels compris dans le voisinage.

3 Voici un exemple de script pour raliser louverture de limage et comparer le rsultat avec limage dorigine : % Ouverture figure(4) Iouv = imopen(Ic,SE); subplot(1,2,1) subimage(Iouv) subplot(1,2,2) subimage(imcomplement(Iouv)) Voici les images obtenues avant et aprs louverture :

Une ouverture en niveau de gris est une rosion suivie dune dilatation en niveaux de gris. Elle limine les points clairs isols et lisse les contours. On observe galement une segmentation des diffrentes formes de limage. Voici un exemple de script pour raliser la fermeture : % Fermeture figure(5) Iferm = imclose(Ic,SE); subplot(1,2,1) subimage(Iferm) subplot(1,2,2) subimage(imcomplement(Iferm))

Voici les images obtenues avant et aprs la fermeture :

Une fermeture en niveaux de gris est une dilatation suivie par une rosion en niveaux de gris. Elle limine les points sombres isols et lisse les contours.

Chapitre 4 Filtrage non-linaire

TEST
Partie 1 :
On souhaite utiliser diffrents filtres pour traiter la portion dimage 5 5 suivante :

Cette portion dimage est extraite de limage Bateaux et contient une partie du filin de pche. Voici la matrice qui donne les valeurs numriques de luminance des 3 3 pixels :
175 156 132 96 87 150 119 93 85 82 114 91 80 87 153 86 80 96 165 192 79 113 174 193 194

On ignore ici les effets de bords, et on sintresse donc uniquement aux rsultats obtenus aprs filtrage pour les 3 3 pixels centraux. :
X X X X X X ? ? ? X X ? ? ? X X ? ? ? X X X X X X

Compltez cette matrice dans chacun des cas suivants : filtrage mdian 3 3 complet ; filtrage mdian 3 3 en croix ; rosion avec un lment structurant 3 3 complet ; dilatation avec un lment structurant 3 3 complet ; fermeture avec un lment structurant 3 3 en croix.

Partie 2 :
Dveloppez respectivement pour lrosion et la dilatation une fonction sous Matlab (ne pas traiter les effets de bord). Ces deux fonctions ont donc en paramtres dentre : limage filtrer et llment structurant. Llment structurant considr sinscrira dans un support de taille 3 3. Exemples :

partir de vos deux fonctions prcdentes, crez les fonctions pour la fermeture et louverture dune image. Testez vos quatre fonctions sur limage Bateaux . Comparez les rsultats (par exemple avec la fonction isequal) obtenus avec ceux obtenus en utilisant directement les fonctions imdilate, imerode, imclose, et imopen de la toolbox Image Processing de Matlab.