EP08_11 — 🔴 Classification et Validation d’Objets avec Gabarit de Bounding Box
8.14.11 EP08_11 🔴 Classification et Validation d’Objets avec Gabarit de Bounding Box
Dans cet exercice, l’objectif est de traiter une image en niveaux de gris contenant plusieurs objets géométriques, d’extraire leurs propriétés avec mm.measure et de valider les boîtes englobantes (bounding boxes) détectées par rapport à un gabarit réel (Ground Truth - GT) fourni en entrée, en utilisant la métrique IoU (Intersection over Union).
8.14.11.1 📋 Directives d’implémentation
Lecture de l’image : Lire les dimensions \(H \times W\) et la matrice \(H \times W\) de pixels de l’image en niveaux de gris.
Pipeline morphologique : Binariser l’image via la méthode d’Otsu (mm.threshold) et afficher le masque binarisé résultant à l’aide de mm.drawImg.
Lecture du gabarit réel (Ground Truth) :
Lire la quantité \(G\) de boîtes englobantes du gabarit.
Si \(G > 0\), lire \(G\) lignes contenant chacune 5 valeurs : id xmin_norm ymin_norm xmax_norm ymax_norm.
Conversion des coordonnées : Les coordonnées du gabarit sont normalisées dans la plage \([0.0, 1.0]\). Pour les convertir en pixels dans la grille de l’image :
\[x_{\min} = \lfloor \text{xmin\_norm} \times W \rfloor, \quad y_{\min} = \lfloor \text{ymin\_norm} \times H \rfloor\]
\[w = \lfloor \text{xmax\_norm} \times W \rfloor - x_{\min}, \quad h = \lfloor \text{ymax\_norm} \times H \rfloor - y_{\min}\]
Extraction des métriques et calcul de l’IoU :
Extraire les propriétés des instances avec mm.measure(img_bin, precision=0.02).
Pour chaque bounding box détectée \((x, y, w, h)\), calculer le chevauchement IoU par rapport aux boîtes du gabarit et définir hits = 1 s’il existe une correspondance (match) avec \(\text{IoU} \ge 0.50\), ou hits = 0 dans le cas contraire.
Sortie : Trier les instances par position (bbox[0], bbox[1]) et imprimer le tableau CSV avec la colonne supplémentaire hits.
Pour le tri, utiliser medidas.sort(key=lambda m: (m['bbox'][1], m['bbox'][0])), avec medidas = mm.measure(img).
8.14.11.2 🧠 Fondements théoriques et conversion
Concept
Formule / Opération
Description
BBox détectée
\((x, y, w, h)\) via mm.measure
Boîte englobante calculée sur la grille discrète en pixels entiers.
BBox gabarit (GT)
\((x_{\min}, y_{\min}, w, h)\) convertis
Boîte réelle fournie en entrée en coordonnées relatives \([0.0, 1.0]\).
Évalue le taux de chevauchement des boîtes. Est considérée comme valide si \(\text{IoU} \ge 0.50\).
Statut de validation (hits)
\(1\) si \(\max(\text{IoU}) \ge 0.50\), sinon \(0\)
Indicateur binaire de succès du détecteur par rapport au gabarit.
8.14.11.3 📦 Spécification d’entrée et de sortie (VPL)
Entrée :
Ligne 1 : Entiers \(H\) et \(W\) (dimensions de la matrice).
Les \(H\) lignes suivantes :\(W\) entiers (\(0\) à \(255\)) représentant l’image en niveaux de gris.
Ligne \(H + 2\) : Entier \(G\) (quantité de boîtes du gabarit véritable).
Les \(G\) lignes suivantes : 5 valeurs numériques par ligne : id xmin_norm ymin_norm xmax_norm ymax_norm (où les coordonnées sont des valeurs flottantes entre \(0.0\) et \(1.0\)).
Sortie :
Matrice binarisée affichée via mm.drawImg(img_bin).
🧮 Simulateur EP08_11 : Boîtes englobantes et comparaison IoU avec contrôles indépendantsValidation BBox GT vs DET
MODE D'AFFICHAGE
AFFICHAGE DES BOÎTES ENGL OBANTES
LÉGENDE DES BBOX :
Référence réelle (GT)
Détection acceptée (IoU ≥ 0.5)
Détection rejetée (IoU < 0.5)
Superposition des BBox
VISUALISATION DE LA MATRICE DE PIXELS
MESURES, CLASSIFICATION GÉOMÉTRIQUE ET COMPARAISON IOU AVEC LA RÉFÉRENCE
id
classe
aire
solidité
sommets
bbox dét (x,y,w,h)
bbox gt (x,y,w,h)
IoU
statut (IoU ≥ 0.5)
Figure 8.25: Simulateur EP08_11 : Classification géométrique avec contrôles indépendants des overlays BBox (GT et DET)
%%writefile EP08_11.py# Code Python
Overwriting EP08_11.py
TestSuite("EP08_11.py").run()
✔️ EP08_11.cases existe déjà dans casos/
📋 3 cas chargé(s) depuis casos/EP08_11.cases
🔍 Test de Python : EP08_11.py
⚠️ EP08_11.py : fichier vide (moins de 3 lignes). Tests ignorés.