SEGMENTATION
D'IMAGES
*YOUNESS MIFTAH
MOHAMED EDDADISSI
INTRODUCTION
INTRODUCTION
La segmentation d'image est une
opération de traitement d'images
consistant à détecter et rassembler les
pixels suivant des critères, notamment
d'intensité ou spatiaux, l'image
apparaissant ainsi formée de régions
uniformes. La segmentation peut par
exemple montrer les objets en les
distinguant du fond avec netteté.
[Link]
SEUILLAGE ADAPTATIF
MÉTHODE OTSU
La méthode Otsu est une technique de seuillage global qui calcule automatiquement
le seuil optimal pour séparer les objets de l'arrière-plan dans une image. Elle repose sur
l’analyse de l’histogramme des niveaux de gris de l’image pour minimiser la variance
intra-classe et maximiser la variance inter-classe. Voici comment cette méthode
fonctionne mathématiquement :
Définition des Classes : On suppose que l'image est constituée de deux classes
distinctes de pixels : l'arrière-plan et l'objet. L'objectif est de trouver un seuil ttt qui
sépare ces deux classes de manière optimale.
Calcul des Probabilités :
ω1(t) : Probabilité que le pixel appartienne à la classe 1 (arrière-plan) pour un seuil ttt.
C’est la somme des fréquences normalisées de l’histogramme pour les niveaux de
gris de 0 à t.
ω2(t)\omega_2(t)ω2(t) : Probabilité que le pixel appartienne à la classe 2 (objet) pour
un seuil t. C’est la somme des fréquences normalisées de t+1à 255.
Calcul des Moyennes :
μ1(t): Moyenne des niveaux de gris de la classe 1 pour un seuil t.
μ2(t) : Moyenne des niveaux de gris de la classe 2 pour un seuil t.
Variance Intra-classe : La méthode Otsu minimise la variance intra-classe définie
comme :
où sigma_1^2(t) et sigma_2^2(t) sont les variances des niveaux de gris pour les classes 1 et
2.
Variance Inter-classe : On peut également maximiser la variance inter-classe :
La méthode Otsu choisit le seuil t qui maximise sigma_b^2(t)
Code Python pour la Méthode Otsu
exemple :
SEUILLAGE ADAPTATIF
ADAPTIVE THRESHOLDING
Contrairement à la méthode de seuillage global, qui utilise un seul seuil pour
l'ensemble de l'image, le seuillage adaptatif (Adaptive Thresholding) utilise des seuils
qui varient selon les régions locales de l'image. Cela permet une segmentation plus
efficace, en particulier pour les images avec des variations d'éclairage ou des ombres.
Principe Mathématique
Division de l'Image en Régions Locales : L'image est divisée en petites régions (ou
fenêtres) de taille fixe.
Calcul du Seuil Local : Pour chaque région, un seuil est calculé en utilisant des statistiques
locales comme la moyenne ou la moyenne pondérée des niveaux de gris des pixels dans
cette région.
Application du Seuil Local : Si l'intensité d'un pixel est supérieure au seuil local, ce pixel est
assigné à une classe (par exemple, 255 pour blanc) ; sinon, il est assigné à l'autre classe (par
exemple, 0 pour noir).
Les deux principales méthodes de seuillage adaptatif sont :
Moyenne : Le seuil local est la moyenne des intensités des pixels dans la fenêtre locale.
Moyenne Pondérée (Gaussienne) : Le seuil local est une moyenne pondérée, où les pixels plus proches
du centre de la fenêtre ont plus d'influence.
CODE PYTHON POUR LE SEUILLAGE ADAPTATIF (ADAPTIVE THRESHOLDING)
exemple :
CROISSANCE DE RÉGIONS (REGION GROWING)
La méthode de Croissance de Régions (Region Growing) est une technique de
segmentation d'image qui part de pixels initiaux appelés points graines (seed points)
pour créer des régions. Elle fonctionne en étendant ces régions en fonction des
propriétés de similarité des pixels voisins.
Principe de Fonctionnement
Points Graines : On commence avec un ou plusieurs points initiaux (graines) qui servent
de base pour la croissance des régions. Ces graines peuvent être définies manuellement
ou sélectionnées automatiquement.
Critère de Similarité : On étend la région en ajoutant des pixels adjacents qui partagent
des propriétés similaires avec les pixels de la région (par exemple, une intensité de couleur
similaire).
Processus Itératif : Le processus se poursuit jusqu'à ce qu'aucun autre pixel ne puisse être
ajouté à la région en respectant le critère de similarité.
Exemple Mathématique
Si l'intensité d'un pixel P est similaire à celle d'un pixel voisin Q, alors Q est ajouté à la
région. Le critère de similarité peut être défini par une simple différence d'intensité :
∣I(P)−I(Q)∣<T
où I représente l'intensité des pixels et T est un seuil prédéfini.
Quand cette Méthode est Efficace?
La méthode de croissance de régions est particulièrement efficace pour segmenter des
objets ayant des propriétés bien définies et homogènes, comme des organes en imagerie
médicale ou des objets avec des contours nets dans des images avec peu de bruit.
Code Python pour la Croissance de Régions
exemple :
MÉTHODE WATERSHED
La méthode Watershed est une technique de segmentation basée sur la transformation de
l'image en une carte de gradient, qui représente l'image comme un relief topographique.
L'idée est d'utiliser les propriétés de ce relief pour segmenter l'image en régions distinctes.
Principe de la Transformation en Carte de Gradient
Carte de Gradient : Une image en niveaux de gris est d'abord convertie en une carte
de gradient. Le gradient mesure les variations d'intensité des pixels, et les bords ou
contours d'une image correspondent à des zones où le gradient est élevé (forte
variation d'intensité).
Relief Topographique : La carte de gradient est perçue comme un relief
topographique, avec des "crêtes" (zones de gradient élevé) représentant les bords
des objets, et des "vallées" (zones de gradient faible) représentant les régions
homogènes.
Inondation des Vallées : La méthode Watershed fonctionne en inondant ces vallées
de manière progressive. L'eau "remplit" les vallées, et lorsque l'eau provenant de
différentes sources se rencontre, des lignes de crête sont formées pour séparer les
régions. Ces lignes de crête définissent les frontières entre les objets segmentés.
Processus de Segmentation par Watershed
Prétraitement : L'image est souvent lissée pour réduire le bruit, puis convertie en
une carte de gradient.
Marqueurs : Des marqueurs sont utilisés pour identifier les régions d'intérêt. Ces
marqueurs servent de points de départ pour l'inondation. Ils peuvent être placés
manuellement ou détectés automatiquement.
Inondation : L'algorithme inonde progressivement l'image à partir des marqueurs, et
des frontières sont créées là où l'eau de différentes sources se rencontre.
Code Python pour la Méthode Watershed
EXEMPLE
K-MEANS CLUSTERING
L'algorithme K-means Clustering est une méthode de classification non supervisée utilisée
pour regrouper des données en plusieurs clusters. Dans le contexte de la segmentation
d'images, il regroupe les pixels en fonction de leur intensité ou de leur couleur pour former
des régions d'intérêt distinctes.
Principe de Fonctionnement
Initialisation : On commence par choisir un nombre de clusters KKK (le nombre de
régions que l'on souhaite obtenir) et initialiser les centres de ces clusters (appelés
centroides). Ces centres peuvent être choisis aléatoirement parmi les pixels de
l'image.
Assignation des Pixels aux Clusters : Chaque pixel de l'image est assigné au cluster
dont le centroïde est le plus proche. La distance est généralement calculée en
utilisant la distance euclidienne.
Mise à Jour des Centres : Une fois que tous les pixels ont été assignés à un cluster,
les centres des clusters sont recalculés en prenant la moyenne de tous les pixels
assignés à chaque cluster.
Itération : Les étapes d'assignation et de mise à jour des centres sont répétées
jusqu'à ce que les centres des clusters ne changent plus de manière significative ou
qu'un nombre maximal d'itérations soit atteint
Critère de Convergence
L'algorithme K-means cherche à minimiser la variance intra-cluster, c'est-à-dire à
minimiser la somme des distances au carré entre chaque pixel et le centroïde de son
cluster. La fonction de coût (à minimiser) est :
où :
K est le nombre de clusters.
Ciest l'ensemble des pixels du cluster i.
μiest le centroïde du cluster i.
xjest un pixel assigné au cluster i.
||.|| représente la distance euclidienne.
Code Python pour K-means Clustering
Avantages de K-means pour la Segmentation d'Images
Simple à comprendre et à implémenter.
Efficace pour les images ayant des régions bien définies avec des couleurs ou des
intensités distinctes.
Permet de réduire la complexité de l'image en réduisant le nombre de couleurs.
Limites
Nécessite de choisir le nombre de clusters KKK à l'avance, ce qui peut être difficile
sans connaissance préalable de l'image.
Sensible aux valeurs initiales des centroides : un mauvais choix peut mener à des
résultats non optimaux.
Peut ne pas bien fonctionner sur des images avec des variations d'intensité ou de
couleur très complexes.
exemple :
SEGMENTATION PAR CONTOURS ACTIFS (SNAKES)
La segmentation par contours actifs, aussi connue sous le nom de Snakes, est une méthode
utilisée pour détecter les contours d'objets dans une image. Elle repose sur une courbe
déformable qui évolue progressivement sous l'influence de forces internes et externes pour
s'adapter aux contours des objets.
Principe de Fonctionnement
La méthode des Snakes est basée sur l'optimisation d'une courbe fermée qui se déplace dans
l'image pour s'ajuster aux bords ou aux contours de l'objet d'intérêt. La courbe est définie par
un ensemble de points qui se déplacent de manière à minimiser une énergie globale
composée de trois termes : l'énergie interne, l'énergie d'image (externe), et l'énergie de
contrainte.
1. Énergie Interne EinterneE_interne:
Elle contrôle la souplesse et la rigidité de la courbe.
Elle est définie de manière à empêcher la courbe de se déformer de manière excessive.
Par exemple, la courbe peut être contrainte à être lisse et continue.
2. Énergie d'Image (ou Externe) E_image:
Elle attire la courbe vers les bords de l'objet.
Les bords sont généralement définis comme des zones avec un gradient élevé (c'est-à-
dire des zones de forte variation d'intensité).
Cette énergie est souvent calculée à partir de la carte de gradient de l'image.
3. Énergie de Contrainte EcontrainteE_contrainte:
Elle permet de guider la courbe vers des points spécifiques si des informations
supplémentaires sont disponibles, comme des points d'attraction prédéfinis.
Cela peut être utilisé pour imposer des contraintes supplémentaires basées sur la
connaissance préalable de la forme ou de la position de l'objet.
Formule de l'Énergie Totale
L'énergie totale E_snakede la courbe est la somme des énergies interne, d'image et de
contrainte :
Esnake=Einterne+Eimage+Econtrainte
L'objectif est de minimiser cette énergie totale pour obtenir la meilleure correspondance entre
la courbe et les contours de l'objet.
Avantages de la Méthode Snakes
Elle est efficace pour segmenter des objets avec des contours bien définis.
La méthode peut être améliorée avec des informations supplémentaires, comme des forces
de contrainte.
Adaptable pour différentes formes d'objets.
Limites
Sensible aux conditions initiales : Le placement de la courbe initiale a un impact important
sur le résultat final.
Peut avoir des difficultés avec des objets aux contours très complexes ou bruités.
L'algorithme peut être piégé dans des minima locaux de l'énergie, ne trouvant pas toujours
les contours globaux optimaux.
Code Python pour K-means Clustering
exemple :
MESURES DE LA PERFORMANCE POUR LA
SEGMENTATION D'IMAGES
Pour évaluer la qualité d'une méthode de
segmentation d'image, il est essentiel de comparer
les résultats segmentés avec un masque de
référence (aussi appelé ground truth). Voici une
explication simple des mesures de performance
que tu peux utiliser :
[Link]
MESURES DE LA PERFORMANCE POUR LA SEGMENTATION D'IMAGES
1. INDICE DE JACCARD (INTERSECTION OVER UNION - IOU)
Explication : L'indice de Jaccard mesure le degré de chevauchement entre les pixels segmentés
par la méthode et les pixels du masque de référence. Il calcule l'intersection entre les pixels des
deux ensembles divisée par leur union.
Formule : IoU=Pixels en IntersectionPixels en Union\text{IoU} = \frac{\text{Pixels en Intersection}}
{\text{Pixels en Union}}
Utilité : Plus l'IoU est proche de 1, meilleure est la qualité de la segmentation.
Code Python pour Calculer l'IoU
MESURES DE LA PERFORMANCE POUR LA SEGMENTATION D'IMAGES
2. COEFFICIENT DE DICE (F1-SCORE)
Explication : Le coefficient de Dice est une autre mesure de similarité qui est souvent utilisée en
segmentation. Il est particulièrement utile pour évaluer des objets petits ou éparpillés. Le Dice est
calculé en utilisant la formule suivante :
Formule :
Utilité : Plus le coefficient de Dice est proche de 1, meilleure est la segmentation.
Code Python pour Calculer le Coefficient de Dice
MESURES DE LA PERFORMANCE POUR LA SEGMENTATION D'IMAGES
3. VISUALISATION
Explication : La visualisation permet de voir Code Python pour la Visualisation
clairement comment la méthode de segmentation
a fonctionné. On compare l'image originale, le masque
de vérité terrain, et l'image segmentée pour comprendre
visuellement les différences.
Utilité : Cela aide à interpréter les résultats de la
segmentation et à vérifier si la méthode a correctement
détecté les objets d'intérêt.
MESURES DE LA PERFORMANCE POUR LA SEGMENTATION D'IMAGES
4. TEMPS D'EXÉCUTION
Explication : Le temps d'exécution mesure la rapidité
d'une méthode de segmentation. C'est important pour
les applications en temps réel, comme l'imagerie
médicale ou la vision par ordinateur.
Utilité : Cela aide à déterminer si une méthode est
pratique à utiliser dans un contexte où la vitesse est Code Python pour Mesurer le Temps d'Exécution
cruciale.
COMPARAISON GÉNÉRALE
[Link]
THANK
YOU!
[Link]