Image Processing Exercices
Image Processing Exercices
Image Processing Exercices
Objet original
Figure 1.1: érosion (gauche) et dilatation (droite) de l’objet binaire en utilisant un élément structurant B circulaire.
Plus précisément érosion ǫB (I) et dilatation δB (I) sont définis (pour une image binaire en noir et blanc) comme:
ǫB (I) = I B, (1.1)
δB (I) = I B. (1.2)
1
Cours MATLAB - Analyse morphologique d’image - UNIL-FGSE H 09/10
Figure 1.2: Érosion (gauche) et dilatation (droite) des objets originaux (centre) en utilisant un élément structurant B
circulaire de rayon 2 (lx) et 5 (dx) pixels.
L’extension de ces techniques aux cas de l’image à échelle de gris, nécessite une adaptation par rapport à l’assignation
des nouvelles valeurs de l’image filtrée. Si avant il s’agissait d’opérations booléennes, ces opérations deviennent
arithmétiques assignant la valeur maximale (dilatation) ou minimale (érosion) contenue dans la surface de l’élément
structurant au pixel filtré x̂ sur lequel B est centré. On définit l’érosion ǫB (I) et dilatation δB (I), pour une image à
échelle de gris, comme suit:
Figure 1.3: Érosions (vers gauche) et dilatations (vers droite) de l’image originale (centre) en utilisant un élément
structurant B circulaire de rayon [2, 4, 6, 8] pixels. (Image example de MATLAB, ’cameraman.tif ’)
D’un point de vue purement pratique, l’érosion (en prenant le minimum de valeurs de gris contenu dans l’élément
B) efface les éléments clairs contenus dans la taille de l’élément. Au contraire, la dilatation efface les éléments sombres
de l’image. (Rappel: plus une valeur est grande, plus elle tend vers le blanc!)
Érosion et Dilatation sont les deux opérations de base dans le domaine de la morphologie mathématique. Par
la suite, on verra comment la combinaison ou l’itération de ces éléments nous amènent à obtenir d’autres filtres et
opérateurs très utilisés lors de l’extraction d’information structurale d’une image ou bien lors d’un lissage, ou encore
pour éliminer des objets dans l’image.
Dans MATLAB ces deux opérations sont contenues dans la toolbox de traitement d’image:
Les deux fonctions donnent en sortie l’image filtrée IM2, avec la même classe de l’image en entrée. Les classes
acceptées sont toutes classes acceptées pour une image valable (logical, uint8,uint16,...).
3 Ouverture et Fermeture
Les opérateurs ouverture et fermeture sont une combinaison des opérateurs élémentaires qu’on a vu au chapitre
précédent appliqués en série en respectant un certain ordre. La définition de ouverture (γB (I)) et fermeture (φB (I)),
par un élément structurant B, est donnée par la combinaison de dilatation et érosion, comme suit:
2
Cours MATLAB - Analyse morphologique d’image - UNIL-FGSE H 09/10
Pratiquement, ces opérateurs appliquent un filtrage externe ou interne à l’objet. Plus l’élément structurant B est
grand, plus la géométrie de l’objet (en termes d’angles et formes) sera uniformée. Un objet qui présente une géométrie
régulière sera peu filtré par rapport aux autres. Plus B est grand, plus les objets clairs ou sombres seront filtrés sur
la base de leur tonalité et dimension. Avec ces types d’opérateurs, la forme de B (le type de voisinage à considérer)
est aussi très influente. Par la suite nous verrons des exemples. Ces deux opérateurs exploitent la combinaison de
l’érosion et de la dilatation (dans un ordre défini), pour filtrer (et non éliminer comme on a vu auparavant) des parties
sombres ou claires de l’image.
Figure 1.4: Ouvertures (vers gauche) et fermetures (vers droite) de l’image originale (centre) en utilisant un élément
structurant B circulaire de rayon [2, 4, 6, 8] pixels.
Ces deux opérations sont présentes en tant que fonctions indépendantes en MATLAB (I.P. Toolbox), mais lors de
ce TP on ne les utilisera pas. À titre informatif, les fonctions sont:
k−1
ρδ (ǫB (I)) k
= ρδ (IM ) = min xIM , δB k
(IM )| δB (IM ) = δB (IM ) , (1.7)
k−1
ρǫ (δB (I)) = ρǫ (IM ) = max xIM , ǫkB (IM )| ǫkB (IM ) = ǫB
(IM ) . (1.8)
En deux mots, l’ouverture géodésique d’une image est donnée par la reconstruction d’une version dilatée de l’image
(marqueur IM ) en assignant, pour chaque pixel sur lequel l’élément structurant est centré (x), le minimum (équivalent
k
à l’infimum) entre xIM (la valeur du pixel-centre de l’image originale) et δB (IM ), la valeur des dilatations pour des
pixels contenus dans B à l’itération k. La fermeture géodésique, de façon opposée, assigne le maximum entre la valeur
originale et les subséquentes itérations d’érosions (donc le supremum dans B) de l’image à l’iteration k. Ces filtres
sont aussi connus comme filtres de reconstruction parce-que ce processus se fait jusqu’à quand l’image filtrée produite
à l’itération k est égale a celle produite à l’itération k − 1.
Visuellement, ces opérateurs filtrent les objets claires et sombres selon la grandeur de l’élément structurant qu’on
utilise au départ (qui nous définit la grandeur des objets à filtrer). Dans l’itération de reconstruction, on utilise
toujours une connectivité B d’ordre 8 (Figure 1.5). Ce type de connectivité est standard lors de l’application des
filtres géodésiques, ainsi il est possible de reconstruire n’importe quel type de forme.
Pour que soit plus clair ce concept de reconstruction itérative, l’algorithme est donné (voir Algorithme 1).
Voyons maintenant des exemples. Ce type de filtrage donne, pour une image en noir et blanc, l’élimination des
objets plus petits de l’élément structurant utilisé au départ (pour créer l’ IM ) en gardant la forme des autres objets
3
Cours MATLAB - Analyse morphologique d’image - UNIL-FGSE H 09/10
_@@ O ? 1 1 1
@@ ~~~
@@ ~
@ ~~~
o x /
~~ @@@ 1 1 1
~ @@
~~~ @@
~
1 1 1
composant l’image. La “puissance” du lissage est donc contrôlée par la grandeur de l’élément structurant utilisé pour
la première érosion ou dilatation. Comme dit auparavant, l’opérateur dans la boucle d’itération, prend en paramètre
un élément structurant B de connectivité 8.
Figure 1.6: Ouvertures (vers gauche) et fermetures (vers droite) géodésiques de l’image originale (centre) en utilisant
un élément structurant B circulaire de rayon [2, 4, 6, 10] pixels.
Dans l’exemple (Figure 1.6) on a un exemple de filtrage géodésique en noir et blanc. La fermeture efface les
éléments qui ne contiennent pas entièrement B. Au contraire, l’ouverture remplie les zones blanches (assigne la valeur
1) qui sont contenues par un élément structurant, en ne modifiant aucune autre forme.
Pour une image à échelle de gris, ces opérateurs lissent les éléments qui composent le pixel selon le critère choisi.
L’exemple à la Figure 1.7 montre comment les éléments plus ou moins uniformes de l’image (éléments du fond, visage,
main) sont filtrés par rapport à leur dimension et à leur tonalité de gris.
Figure 1.7: Ouvertures (vers gauche) et fermetures (vers droite) géodésiques de l’image originale (centre) en utilisant
un élément structurant B circulaire de rayon [2, 4, 6, 15] pixels.
4
Cours MATLAB - Analyse morphologique d’image - UNIL-FGSE H 09/10
Figure 1.8: Érosions (vers gauche) et dilatations (vers droite) de l’image originale (centre) en utilisant un élément
structurant B circulaire de rayon [2, 6, 10, 14] pixels.
Les ouvertures et les fermetures, par contre nous donnent des images filtrées qui gardent les structures principales
avec un niveau de lissage proportionnel soit à la taille de B soit aux valeurs de gris plus ou moins grands pour chaque
bande.
Dans le cas des opérateurs ouverture et fermeture, la forme et la taille de l’élément structurant jouent un rôle
important sur l’effet du filtrage. Jusqu’à maintenant, nous avons utilisé qu’un disque de taille variable pour filtrer les
images. Mais que se passe-t-il lors de l’utilisation de différentes formes?
Avec la fonction SE = strel(type, parameters) on peut initialiser B avec différentes formes. Ici se trouve une
courte liste du paramètre type qui caractérise la forme de l’élément structurant:
Avec des éléments structurants B de forme différente, le filtrage se fait avec des critères qui suivent la forme de
l’élément. Dans la Figure 1.9 des exemples sont montrés. Dans 1.9(a), le filtrage est cohérent avec les angles d’un
diamant (forme rhomboı̈dale), en ressortant les structures qui sont reliées avec les pistes de l’aéroport. En 1.9(b),
un objet linéaire vertical, nous ressorte de l’information par rapport aux routes qui suivent cette direction. Dans le
dernier cas (1.9(c)), un élément B nous préserve la forme de champs circulaires, mais fourni de l’information “lissée”
par rapport à l’image originale.
Si les opérateurs d’ouverture et de fermeture sont beaucoup utilisés, les plus répandus en absolus sont les opérateurs
géodésiques. Le fait de préserver formes et contours en fait des opérateurs de filtrage très puissants. À titre d’exemple,
ces opérateurs peuvent effacer des objets contenus dans l’image considérée, mais en ne modifiant pas la structure des
éléments plus grands. Un exemple est montré dans la Figure 1.6 et 1.10.
5
Cours MATLAB - Analyse morphologique d’image - UNIL-FGSE H 09/10
(a)
(b)
(c)
Figure 1.9: Ouvertures (vers gauche) et fermetures (vers droite) de l’image originale (centre) en utilisant un élément
structurant B circulaire de rayon [2, 6, 10, 15] pixels. Ici, les formes des éléments structurants utilisés sont, dans l’ordre,
le diamant (a), la ligne verticale (b) et le cercle (c).
Figure 1.10: Ouvertures (vers gauche) et fermetures (vers droite) géodésiques de l’image originale (centre) en utilisant
un élément structurant B circulaire de rayon [2, 4, 6, 10] pixels.
6
Cours MATLAB - Analyse morphologique d’image - UNIL-FGSE H 09/10
3. Créez des fonctions de filtrage (voir fichier Cours matlab MM.m). N’oubliez pas d’initialiser d’abord les éléments
structurants B soit par la fonction SE = strel(type,par) soit en le déclarant soi-même comme une matrice
binaire de voisinage.
4. Visualisez et sauvegardez les images filtrés. Après avoir vérifié le fonctionnement des trois fonctions, regroupez
les dans un seule fonction (nommez-la filtres morphologiques). Ainsi, vous avez la fonction complète.
5. Testez différents types de SE et observez les changements, aussi par rapport aux différents types d’opérateurs.
OPT.1 Lancez la fonction exemple ocr avec une image à échelle de gris, définissez un SE et le paramètre 'op recon'
ou 'cl recon' pour choisir le type de paramètre. Il s’agit d’une démonstration itérative de comment le filtres
de reconstruction marchent.
OPT.2 Ouvrez GoogleEarth et cherchez des images avec des structures particulières à traiter. Une fois qu’on a sauve-
gardé l’image en .jpg et on l’ouvre avec MATLAB, on a à disposition 3 bandes (RGB), comme si on travaillait
avec des photos aériennes. Recoupez l’image en MATLAB pour enlever la légende et des graphiques qui ne sont
pas parties de la photo aérienne. Filtrez-la avec des opérateurs et des éléments structurants de votre choix.
7
Références
[1] M. Fauvel, J. A. Benediktsson, J. Chanussot, and J. R. Sveinsson. Spectral and spatial classification of hyperspectral
data using svms and morphological profiles. IEEE Transactions on Geoscience and Remote Sensing, 46(11):3804
– 3814, 2008.
[2] R. C. Gonzalez, Richard E. Woods, and S. L. Eddins. Digital Image Processing Using MATLAB. Pearson Prentice
Hall, 2004.
[3] Kumar Navulur. Multispectral Image Analysis Using the Object-Oriented Paradigm. CRC Press, 2007.
[4] Maria Petrou and Pedro Garcia Sevilla. Dealing With Texture. John Wiley and Sons, 2006.
[5] J. Plaza, A. Plaza, and C. Barra. Multi-channel morphological profiles for classification of hyperspectral images
using support vector machines. Sensors, 9:196 – 218, 2009.
[6] D. Tuia, F. Pacifici, M. Kanevski, and W. J. Emery. Classification of very high spatial resolution imagery using
mathematical morphology and support vector machines. IEEE Transactions on Geoscience and Remote Sensing,
47(11):3866 – 3879, 2009.