0% ont trouvé ce document utile (0 vote)
5 vues5 pages

Segmentation D'images: Rappels: Fonctions Clés

Le TP5 sur la segmentation d'images enseigne aux étudiants à appliquer diverses techniques de traitement d'images, notamment le seuillage fixe, Otsu, et adaptatif, ainsi que la segmentation par couleur dans l'espace HSV et l'analyse des contours. Les étudiants apprendront également à utiliser le clustering K-Means pour quantifier les couleurs d'une image. Chaque partie du TP est accompagnée d'exercices pratiques et de questions pour renforcer la compréhension des concepts abordés.

Transféré par

little.foxx56999
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
5 vues5 pages

Segmentation D'images: Rappels: Fonctions Clés

Le TP5 sur la segmentation d'images enseigne aux étudiants à appliquer diverses techniques de traitement d'images, notamment le seuillage fixe, Otsu, et adaptatif, ainsi que la segmentation par couleur dans l'espace HSV et l'analyse des contours. Les étudiants apprendront également à utiliser le clustering K-Means pour quantifier les couleurs d'une image. Chaque partie du TP est accompagnée d'exercices pratiques et de questions pour renforcer la compréhension des concepts abordés.

Transféré par

little.foxx56999
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

TP5 — Segmentation d'images | Computer Vision 2EET | 2MIQ

TRAVAUX PRATIQUES N°5

Segmentation d'images
Module : Computer Vision | Séance 5 | Durée estimée : 2h

🎯 Objectifs du TP5
À l'issue de ce TP, vous serez capable de :
 Appliquer le seuillage fixe, Otsu et adaptatif pour binariser une image
 Segmenter une image par couleur dans l'espace HSV
 Extraire et analyser les contours d'une image binaire
 Appliquer le clustering K-Means pour quantifier les couleurs d'une image

Rappels : Fonctions clés


Les fonctions suivantes seront utilisées dans ce TP.

Fonction Rôle Paramètres clés


thresh : valeur de seuil
threshold(src, dst, thresh, Seuillage fixe ou maxVal : valeur maximale assignée
maxVal, type) Otsu type = type de seuillage (THRESH_BINARY,
THRESH_OTSU, …)

method: méthode de seuillage


adaptiveThreshold(src, dst, (ADAPTIVE_THRESH_MEAN_C,
maxVal, method, type, blockSize, Seuillage ADAPTIVE_THRESH_GAUSSIAN_C), blockSize
C) adaptatif local : taille de voisinage, C : constante
soustraite du seuil (seuil =
moyenne_locale – C)

cvtColor(src, hsv, COLOR_BGR2HSV)


Conversion BGR H∈[0,179], S/V∈[0,255] en OpenCV
→ HSV

inRange(hsv, low, high, mask)


Masque binaire mask = 255 si dans plage [low, high], 0
par plage HSV sinon

Appliquer un
bitwise_and(src, src, dst, mask) masque sur une dst = src là où mask=255
image

bitwise_or(mask1, mask2, dst)


Combiner deux Pour la couleur rouge (2 plages HSV)
masques
hierarchy : relations entre contours,
Extraire les mode : mode de récupération de contours
findContours (bin, contours,
hierarchy, mode, method) contours d'une (RETR_EXTERNAL,RETR_TREE),method :
image binaire approximation des contours
(CHAIN_APPROX_NONE,CHAIN_APPROX_SIMPLE)

i : indice du contour (i = -1 pour tous),


Dessiner les color : couleur du dessin du contour,
drawContours(img, contours, i,
color, thickness, lineType) contours thickness : épaisseur de ligne (=-1 pour
détectés remplir le contour), lineType : type de
ligne (LINE_8, LINE_AA, …)

Aire (px²) et Utiliser pour filtrer les petits bruits


contourArea(c) / arcLength(c,true) périmètre d'un (éliminer les petits artefacts dus au
contour bruit)

Rectangle
Moments M = moments(c) ;
englobant / Centre de masse d’un contour c :
boundingRect(c) / moments(c) Informations Point centre(M.m10/M.m00, M.m01/M.m00);
géométriques
d’un contour

Enseignante : Amel Tilouche Page 1


TP5 — Segmentation d'images | Computer Vision 2EET | 2MIQ

Fonction Rôle Paramètres clés


pixels : ensemble de points en format
CV_32F, bestLabels : étiquette de
cluster pour chaque point, criteria :
Kmeans (pixels, k, bestLabels, condition d’arrêt, attempts : nombre de
criteria, attempts, flags,
Clustering K- réinitialisation de K-Means avec
centers) Means sur les différents centres initiaux, flags :
pixels méthode d’initialisation des centres
(KMEANS_RANDOM_CENTERS,
KMEANS_PP_CENTERS,
KMEANS_USE_INITIAL_LABELS), centers :
centres finaux des clusters

morphologyEx(bin, dst, op, k)


Nettoyage
op: opération morphologique MORPH_OPEN
morphologique puis MORPH_CLOSE
post-binarisation

Partie 1 : Seuillage

Mise en contexte
Le seuillage est la méthode de segmentation la plus simple : chaque pixel est classé en objet
(255) ou fond (0) selon qu'il dépasse un seuil T. La méthode d'Otsu calcule automatiquement le
seuil optimal en maximisant la séparation entre les deux classes. Le seuillage adaptatif calcule
un seuil local pour chaque bloc de pixels, adapté aux variations d'éclairage.

Exercice 1 : Seuillage — fixe, Otsu et adaptatif


1. Créez un projet VS nommé TP5_Exercice1
2. Chargez une image en couleur et convertissez-la en niveaux de gris
3. Appliquez un pré-lissage gaussien pour réduire le bruit
4. Appliquez le seuillage binaire fixe avec T=127
5. Appliquez le seuillage d’Otsu binaire et affichez le seuil T calculé
6. Appliquez le seuillage adaptatif gaussien (blockSize=11, C=2)
7. Testez l'effet d'un éclairage non uniforme : comparez Otsu vs adaptatif sur une image
avec ombre
8. Affichez et sauvegardez les 3 résultats

Condition d'application de la méthode d'Otsu


La méthode d'Otsu est optimale uniquement si l'histogramme de l'image présente deux pics bien séparés
(distribution bimodale : un pic pour le fond, un pour les objets). Sur des images avec éclairage variable
ou histogramme plat, le seuil adaptatif donne de meilleurs résultats.

N° Question Réponse
Quelle est la valeur du seuil T calculé par Otsu sur votre image ?
1
Est-elle cohérente avec ce que vous observez sur l'histogramme ?
Comparez le résultat du seuillage fixe (T=127) et du seuil Otsu.
2
Dans quel cas le seuillage fixe est-il suffisant ?
Sur une image avec éclairage non uniforme (ombre d'un côté),
3 quelle méthode donne les meilleurs résultats entre Otsu et le
seuillage adaptatif ? Pourquoi ?
Quel est l'effet du nettoyage morphologique (MORPH_OPEN +
4 MORPH_CLOSE) sur l'image binarisée ? Que suppriment ces
opérations ?

Enseignante : Amel Tilouche Page 2


TP5 — Segmentation d'images | Computer Vision 2EET | 2MIQ

Partie 2 : Segmentation par Couleur

Mise en contexte
La segmentation par couleur isole des objets selon leur teinte dans l'espace HSV. Contrairement
à BGR, la teinte (H) est indépendante de la luminosité, ce qui rend la détection plus robuste aux
variations d'éclairage. La fonction inRange() crée un masque binaire que l'on applique ensuite
avec bitwise_and().

Couleur Borne inférieure Borne supérieure Remarque


Combiner avec
Rouge (0, 120, 70) (10, 255, 255)
(170,120,70)→(180,255,255)
Vert (36, 100, 100) (86, 255, 255) Plage unique
Bleu (100, 150, 50) (130, 255, 255) Plage unique
Jaune (20, 100, 100) (35, 255, 255) Plage unique
Orange (10, 120, 70) (20, 255, 255) Entre rouge et jaune

Exercice 2 : Seuillage — fixe, Otsu et adaptatif


1. Créez un projet VS nommé TP5_Exercice2
2. Chargez une image couleur contenant au moins un objet d'une couleur distinctive
3. Convertissez l'image en HSV
4. Créez un masque pour isoler une couleur de votre choix
5. Appliquez le masque sur l'image pour obtenir l'objet isolé
6. Nettoyez le masque avec morphologyEx() (MORPH_OPEN puis MORPH_CLOSE)
7. Testez avec la couleur rouge
8. Affichez le masque binaire, l'objet isolé et l'image nettoyée

Plages HSV en OpenCV


En OpenCV, la teinte H est dans [0, 179] (et non [0°, 360°] comme dans le standard). La saturation S et
la valeur V sont dans [0, 255]. Une valeur S trop basse (<50) correspond à des couleurs grises/blanches.
Une valeur V trop basse (<50) correspond à des couleurs très sombres.

N° Question Réponse
Pourquoi utilise-t-on l'espace HSV plutôt que BGR pour la
1
segmentation par couleur ?
Que représente un pixel blanc dans le masque binaire ? Que
2
représente un pixel noir ?
Que se passe-t-il si vous élargissez les bornes inRange() ? Et
3
si vous les réduisez trop ?
Pourquoi la couleur rouge nécessite-t-elle deux masques
4
combinés avec bitwise_or() ?

Enseignante : Amel Tilouche Page 3


TP5 — Segmentation d'images | Computer Vision 2EET | 2MIQ

Partie 3 : Analyse des Contours

Mise en contexte
Après binarisation, findContours() extrait les frontières des régions. On peut ensuite analyser
chaque contour : calculer son aire, son périmètre, son rectangle englobant ou son centre de
masse. Un filtrage par aire permet d'éliminer les petits artefacts dus au bruit.

Paramètres de findContours()
• RETR_EXTERNAL : retourne uniquement les contours les plus externes (ignore les trous)
• RETR_TREE : retourne tous les contours avec leur hiérarchie complète (contours imbriqués)
• CHAIN_APPROX_SIMPLE : compresse les segments horizontaux/verticaux — réduit les points
stockés
• CHAIN_APPROX_NONE : conserve tous les points du contour (plus de mémoire)

Exercice 3 : findContours() — extraction et analyse des objets


1. Créez un projet VS nommé TP5_Exercice3
2. Chargez une image contenant plusieurs objets distincts
3. Binarisez avec le seuil Otsu puis nettoyez avec morphologyEx()
4. Extrayez les contours (RETR_EXTERNAL, CHAIN_APPROX_SIMPLE)
5. Filtrez les contours dont l'aire est inférieure à 500 pixels²
6. Pour chaque contour valide : dessinez le contour (vert), le rectangle englobant (rouge)
et le centre de masse (bleu)
7. Affichez le nombre d'objets détectés dans la console et calculez l'aire de chaque objet
8. Affichez et sauvegardez l'image annotée

N° Question Réponse
Combien de contours findContours() détecte-t-il avant filtrage
1
? Et après filtrage par aire (> 500 px²) ?
Que se passe-t-il si vous remplacez RETR_EXTERNAL par
2 RETR_TREE ? Observez-vous des contours supplémentaires
à l'intérieur des objets ?
Quel est l'effet du nettoyage morphologique (OPEN + CLOSE)
3
sur le nombre de contours détectés ?
Comment pourriez-vous calculer la circularité d'un contour ?
4
Donnez la formule en utilisant contourArea() et arcLength().

Partie 4 : Segmentation K-Means

Mise en contexte
Le K-Means regroupe les pixels en K clusters selon leur couleur. Contrairement au seuillage, il
ne nécessite aucune connaissance a priori des couleurs. Il est particulièrement utile pour
quantifier les couleurs d'une image ou identifier les teintes dominantes. En OpenCV, kmeans()
attend les données sous forme d'une matrice N×3 de flottants.

Valeur K Effet sur l'image Usage typique


2 régions seulement (ex. fond /
K=2 Segmentation binaire, fond uniforme
objet)
Segmentation grossière — teintes
K=4 Analyse rapide de composition colorimétrique
dominantes

Enseignante : Amel Tilouche Page 4


TP5 — Segmentation d'images | Computer Vision 2EET | 2MIQ

Valeur K Effet sur l'image Usage typique


K=8 Bonne représentation des couleurs Réduction de palette, compression d'image
Segmentation fine — presque toutes
K = 16+ Analyse détaillée, rendu artistique
les couleurs

Exercice 4 : K-Means — segmentation et quantification des couleurs


1. Créez un projet VS nommé TP5_Exercice4
2. Chargez une image couleur et reformatez-la en N×3 flottants
3. Appliquez kmeans() avec K=4 (100 itérations max, eps=0.2, 3 tentatives,
KMEANS_PP_CENTERS)
4. Reconstruisez l'image segmentée en remplaçant chaque pixel par la couleur de son
centroïde
5. Répétez avec K=2, K=8 et K=16, comparez les résultats visuellement
6. Affichez les K couleurs dominantes (centroïdes) sous forme de rectangles colorés
annotés
7. Sauvegardez l'image segmentée pour K=4 et K=8

N° Question Réponse
Quelle différence visuelle observez-vous entre K=2, K=4, K=8
1 et K=16 ? À partir de quelle valeur de K l'image vous semble-
t-elle fidèle à l'originale ?
Le K-Means donne-t-il toujours le même résultat à chaque
2 exécution ? Pourquoi ? Quel paramètre permet d'améliorer la
stabilité ?
Comparez la segmentation K-Means (K=4) avec le seuillage
3 Otsu sur la même image. Laquelle est la plus adaptée à votre
image ?
Quel est l'avantage principal du K-Means par rapport au
4 seuillage ? Dans quel cas serait-il préférable d'utiliser
inRange() plutôt que K-Means ?

Enseignante : Amel Tilouche Page 5

Vous aimerez peut-être aussi