• 10 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 17/12/2019

Initiez-vous au domaine de la Morphologie Mathématique

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Dans cette partie, vous allez découvrir les opérateurs de base du traitement d'image fondés sur la Morphologie Mathématique.

Afin d'apprécier l'effet de cette technique sur une image binaire fortement bruitée, les concepts de l'Érosion et de la Dilatation seront abordés. Les processus d'ouverture et de fermeture seront également exposés. Enfin, des opérations morphologiques de plus haut niveau, d'extraction de contours, intitulées Gradients Morphologiques seront présentées.

L'effet de ces traitements sera illustré au travers d'images bruitées corrigées grâce à ces opérateurs, afin de vous permettre de mieux comprendre ces différentes techniques.

Historique et genèse

La Morphologie Mathématique est une technique de traitement d’image qui remonte aux années 1960, découverte par Georges Mathéron et Jean Serra à l'École des Mines de Paris.

La Morphologie Mathématique est un ensemble de méthodes développées pour le traitement de la forme des objets dans une image, et permet de supprimer le bruit introduit par des opérations de segmentation. Elle permet ainsi de nettoyer des images très bruitées.

Le développement de ce nouvel opérateur a donné lieu à la publication d'un livre de référence : « Image analysis and mathematical morphology », J. Serra, 1982.

Objectifs

Les objectifs de la morphologie mathématique sont :

  • D’une part la transformation géométrique d’une image binaire par un élément structurant ;

  • D’autre part le traitement de la forme des objets dans une image ou la suppression du bruit introduit par les opérateurs de segmentation.

Principes

Le principe de la morphologie mathématique est fondé sur l’utilisation d’un élément structurant (ES) qui représente un masque de convolution appliqué à une image binaire.

Elément structurant ou masque de convolution

Considérons une image binaire de petite taille avec un objet clair sur fond noir :

Imagette binaire
Activité n° 1 - Chargement d'une image N&B

Prérequis : un environnement Python configuré pour le cours.

Téléchargez cette image (lien) et enregistrez-la sous le nom  smiley_nb.png  :

Image exemple pour le cours
Smiley en N&B

Ouvrez un interpréteur Python dans le dossier où vous avez votre image et copiez-collez le code suivant :

#Chargement d'une image N&B
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
image = cv.imread('smiley_nb.png',0)
plt.imshow(image, cmap='gray')
plt.show()

Ce code permet de charger une image et d'ouvrir une fenêtre afin de l'afficher. Assurez-vous de bien voir l'image à l'écran.

Combien y a-t-il de valeurs différentes pour l'ensemble des pixels ?

Quelle est la taille de l'image ?

Veuillez noter vos réponses. La correction vous sera donnée à la fin de ce chapitre.

Notion d’Élément Structurant (ES)

L’élément structurant sous forme d’image peut être utilisé en termes :

  • D’exclusion (en vert sur l'image ci-dessous) ;

  • D’intersection (en bleu) ;

  • Ou d’inclusion (en violet).

Imagette binaire avec différents types d'éléments structurants
Différents types d'éléments structurants

Il existe plusieurs sortes d’éléments structurants. Ils ne sont restreints ni en taille ni forme. Pour ce cours, vous observerez des ES de forme rectangulaire avec origine au pixel central.

Voici ci-dessous une représentation de différents masques de convolution :

Carré 

(4-connexité)

 

 

Hexagonal

(6-connexité)

 

 

 

 2 cas possibles :

Carré

(8-connexité)

 

 

Deux critères sont importants pour choisir le masque de convolution :

  • Le masque doit être capable de supprimer le bruit sans altérer l'information principale de l'image ;

  • La taille du masque doit être raisonnable afin de limiter les temps d'exécution.

Activité n° 2 - Création d'éléments structurants

Récupérez le code suivant et exécutez-le dans votre environnement Python :

#Notion d'élément structurant
import cv
import numpy as np
import matplotlib.pyplot as plt
kernel_cross = cv.getStructuringElement(cv2.MORPH_CROSS,(5,5))
print(kernel_cross)
plt.imshow(kernel_cross,cmap='gray')
plt.show()
kernel_circle = cv.getStructuringElement(cv2.MORPH_ELLIPSE,(20,20))
print(kernel_circle)
plt.figure()
plt.imshow(kernel_circle,cmap='gray')
plt.show()
kernel_rect = cv.getStructuringElement(cv2.MORPH_RECT,(5,5))
print(kernel_rect)
plt.figure()
plt.imshow(kernel_rect,cmap='gray')
plt.show()

Vous devriez voir apparaître successivement trois formes d'éléments structurants. Les différents éléments structurants vous permettront d'appliquer différents effets sur vos images.

Pourquoi la dernière forme, un carré, apparaît-elle toute noire ?

Exemple d’application

Prenons comme exemple une image d’empreinte digitale après segmentation qui est très bruitée :

Image avant segmentation
Image après segmentation 

L’intérêt de la morphologie mathématique est de nettoyer cette image bruitée afin d’obtenir une image beaucoup plus nette :

Image après segmentation et traitement morphologique
Image après segmentation et traitement morphologique

Réponses aux activités

Activité n° 1 - Chargement d'une image N&B

Combien y a-t-il de valeurs différentes pour l'ensemble des pixels ?

La bonne réponse est : 2. Une pour le blanc et une pour le noir.

 Quelle est la taille de l'image ?

Réponse :  print(image.shape)  nous donne [50 50], donc 50 pixels par 50 pixels.

Activité n° 2 - Création d'éléments structurants

Pourquoi la dernière forme, un carré, apparaît-elle toute noire ?

Réponse : la  forme ne contient que des 1, et donc l'affichage utilise tout le temps la même couleur pour la valeur 1.

Exemple de certificat de réussite
Exemple de certificat de réussite