TP5 - Morphologie mathématique Vincent Barra - Christophe Tilmant 5 novembre 2007 1 Partie théorique 1.1 Introduction La morphologie mathématique [1] est un outil mathématique permettant au départ d explorer la structure géométrique des objets dans une image. Le développement de techniques basées sur ces outils a ensuite permis d élargir le champ de ses applications, par exemple dans le domaine du réhaussement de contraste ou du filtrage. Vu sous son angle reconnaissance des formes, le traitement d images vise à extraire d une image donnée des informations de type géométrique (localisation, périmètre, aire, orientation), permettant de distinguer certains objets dans une scène. La plus grande partie des traitements de ce type nécessitent le design d un opérateur de forme, possédant un certain nombre de propriétés attendues (invariance par transformations affines,...) et permettant de discriminer un objet particulier. Plusieurs problèmes se posent alors, et notamment le fait que les objets sont opaques, et que donc l information de forme n est pas additive. En fait, les objets dans une scène se combinent principalement sous deux formes : par union ensembliste (recouvrement d objets) : X = X 1 X 2 par intersection ensembliste (occlusion) : X = X 2 \ X 1 = X C 1 X 2 L opérateur de forme Ψ à construire doit alors se distribuer sur l ensemble des unions et des intersections (équivalent de la linéarité) : Ψ δ (X 1 X 2 ) = Ψ δ (X 1 ) Ψ δ (X 2 ) Ψ ɛ (X 2 \ X 1 ) = Ψ ɛ (X 1 ) Ψ ɛ (X 2 ) La première opération va être appelée dans la suite dilatation morphologique, et la seconde érosion morphologique. Ces deux opérations sont à la base de la morphologie mathématique, à partir desquelles des opérateurs morphologiques plus complexes vont être construits. Dans la suite, nous allons préciser la notion d érosion, de dilatation et de diverses autres opérations dans le cadre des images binaires, puis étendre le propos au cas (plus intéressant...) des images en niveaux de gris. 1.2 Cas des images binaires Commençons par quelques définitions de base : pour A, B Z 2, dont les composantes sont notées a = (a 1, a 2 ) et b = (b 1, b 2 ), la translation de A par x, notée (A) x est (A) x = {c = a + x, a A} la réflexion de B, notée ˆB est ˆB = {x = b, b B} le complément de A, noté A C est A C = {x, x / A} la différence de A et B est A \ B = A B C = {x, x A, x / B} Ici, A sera une image binaire, et B un opérateur de forme binaire. 1.2.1 Dilatation et érosion Définition 1 La dilatation de A par B, notée A B est l ensemble défini par A B = {x, ( ˆB) x A } Définition 2 L érosion de A par B, notée A B est l ensemble défini par A B = {x, (B) x A} 1
B est l opérateur de forme, et dans le cadre de la morphologie mathématique on l appelle l élément structurant. En clair, pour un objet A binaire et un élément structurant B binaire lui aussi et symétrique, les opérations simples de morphologie mathématique consistent à parcourir l image et à considérer B comme un masque binaire : si, centré en (x, y), B intersecte A, alors la valeur du dilaté de A par B en (x, y) vaut 1, et 0 sinon. De même si B n est pas tout inclus dans A, la valeur de l érodé de A par B en (x, y) vaut 0, et 1 (figure 1). Ainsi, l érosion rapetisse A, et la dilatation l étend, selon B (comme les noms sont bien choisis!) Erosion par un élément structurant circulaire Dilatation par un élément structurant circulaire Fig. 1 Exemple de dilatation et d érosion Il est facile de montrer que l érosion est la transformation duale de la dilatation par rapport à la complémentation et à la réflexion :A B = (A C ˆB) C. Ainsi, il est équivalent d éroder un objet ou de dilater son complémentaire. 1.2.2 Ouverture et fermeture A partir de la dilatation et de l érosion, on définit deux opérations : l ouverture et la fermeture. Définition 3 L ouverture de A par B est définie par A B = (A B) B Définition 4 La fermeture de A par B est définie par A B = (A B) B L ouverture généralement lisse les contours d une image, casse les liens étroits entre objets (les isthmes), et élimine les petits objets isolés (petits au sens de B). Le lissage et le type de lissage sont déterminés par la forme et la taille de B. La fermeture tend également à lisser les contours, mais rassemble les objets proches (au sens de B), élimine les petits trous (au sens de B) et connecte les contours. La figure 2 présente le résultat de l ouverture morphologique de l image précédente, par un élément structurant circulaire. la notion de filtrage prend son importance lorsque l on considère une forme et une taille adaptée pour B : la figure 3-a présente un tableau d Henri Matisse (La femme à l amphore, 1952, un peu de culture), la figure 3-b une version dégradée par par un bruit vertical, et la 3-c l image restaurée, par ouverture morphologique par un élément structurant adapté. 1.3 Les images en niveaux de gris Ici, A = I est l image et B est un élément structurant en niveaux de gris (une fonction). Définition 5 La dilatation de A par B est (A B)(s, t) = max (s x),(t y) D I,(x,y) D B {I(s x, t y) + B(x, y)}
Fig. 2 Ouverture morphologique par un élément structurant circulaire image originale image bruitée image restaurée Fig. 3 Exemple de dilatation et d érosion où D I (resp. D b ) est le domaine de l image (resp. de l élément structurant). On a l habitude d illustrer cette définition sur des fonctions 1D (figure 4-a, où I = f), pour lesquelles la formule précédente se réécrit (A B)(s, t) = max (s x) D I,x D B {I(s x) + B(x)} Illustration du processus de dilatation Illustration du processus d érosion Fig. 4 Illustration de la dilatation en niveaux de gris (d après [2]) De même, on peut définir l érosion d une image en niveaux de gris par un élément structurant en niveaux de gris : Définition 6 L érosion de A par B est (A B)(s, t) = min (s+x),(t+y) D I,(x,y) D B {I(s + x, t + y) B(x, y)}
et l illustration correspondante en 1D est décrite sur la figure 4-b. Ces deux définitions permettent là encore de développer des opérations de morphologie mathématique plus complexes (ouverture, fermeture, mais aussi squelettisation, transformation en tout ou rien, filtrages...[1][2]). 2 Partie pratique 2.1 Travail demandé Nous nous intéressons à l application de la morphologie mathématique au réhaussement de contraste. 2.1.1 Réhaussement de Kramer et Bruckner Soit I une image, et (x, y) la position générique d un pixel. Pour tout (x, y), on calcule une fonction M définie par : M(x, y) = 1 ((f b)(x, y) + (f b)(x, y)) 2 et on définit l image de sortie par { (f b)(x, y) si I(x, y) M(x, y) J(x, y) = (f b)(x, y) sinon Implémentez cette méthode et tester là sur les images fournies en TP. 2.1.2 Filtres alternés séquentiels Nous avons vu que les ouvertures et fermetures étaient des filtres morphologiques. Sans entrer dans la théorie ce ces filtres, nous ne décrirons ici que les filtres alternés séquentiels, qui sont beaucoup utilisés en pratique (par exemple pour filtrer progressivement le bruit positif (pics étroits) et le bruit négatif (vallées étroites)), et qui sont construits à partir de suites d ouvertures et de fermetures de tailles croissantes. Dans le cas discret, un tel filtre appliqué à une fonction I s exprime comme : ( (((I B 1 ) B 1 ) B 2 ) B 2 ) B n ) B n On obtient ainsi des opérations croissantes et idempotentes (donc des filtres morphologiques). Le dernier élément structurant utilisé (de taille n) est déterminé en fonction de la taille minimale des objets de l image que l on veut conserver après le filtrage (figure 5) Réaliser un filtre alterné séquentiel, pour un élement structurant 2.1.3 Extraction de contour A l aide d opérations simples de morphologie mathématique, proposez un algorithme permettant d extraire les contours d une image. 2.2 Quelques fonctions utiles Vous trouverez dans la référence de Cimg la description complète des fonctions suivantes : erode : érosion d une image par un élément structurant. le second prototype permet d éroder directement par un carré de taille n erode (const CImg< t > &mask, const unsigned int cond=1, const bool weighted_erosion=false) template<typename t> CImg &erode (const unsigned int n=1, const unsigned int cond=1) dilate : dilatation d une image par un élément structurant. le second prototype permet de dilater directement par un carré de taille n dilate (const CImg< t > &mask, const unsigned int cond=1, const bool weighted_dilatation=false) dilate (const unsigned int n=1, const unsigned int cond=1)
Références Fig. 5 filtres alternés séquentiels : : image originale, tailles max 1, 2 et 3 [1] J.Serra, Image Analysis and Mathematical Morphology, Academic Press, 1982 [2] R. C. Gonzalez and R. E. Woods, Digital Image Processing, Addison-Wesley, 1992 [3] W. K. Pratt, Digital Image Processing, Wiley Interscience, 2001 [4] The Quantitative Imaging Group, An interactive image processing course