Dans cet exercice, certains objets géométriques sont légèrement en contact (superposés sur les bords). La simple extraction des contours traiterait deux objets comme s’ils n’en formaient qu’un seul.
8.14.10.1 📋 Directives d’Implémentation
Entrée : matrice \(H \times W\) en niveaux de gris avec des objets d’intensité \(110\dots140\) sur un fond \(0\), avec bruit et une paire d’objets tangents.
Prétraitement et Séparation :
Application du seuillage.
Application de la Transformée de Distance (mm.dist).
Obtention des pics de distance pour servir de marqueurs dans la Transformée Watershed (mm.watershed), séparant physiquement les objets en contact dans le masque. Astuce : utiliser mm.regmax() pour obtenir les maxima locaux, puis les étiqueter avec mm.label0.
Après le watershed, appliquer à nouveau le seuillage avec mm.threshold(water,0)//255.
Analyse des Composants Connectés : mesurer chaque région isolée après le Watershed.
Sortie : imprimer les composants triés par (bbox[0], bbox[1]) avec leurs métriques individuelles de surface, centroïde et solidité.
Pour trier, utiliser medidas.sort(key=lambda m: (m['bbox'][1], m['bbox'][0])), avec medidas = mm.measure(img, precision=0.02).
TABLEAU DES MESURES DES DISQUES APRÈS LA COUPE DU WATERSHED
id
aire
périmètre
cx
cy
x
y
w
h
circularité
solidité
sommets
Figure 8.24: Simulateur EP08_10: Séparation de Disques Tangents via Transformée de Distance L2 et Watershed
%%writefile EP08_10.py# Code Python
Overwriting EP08_10.py
TestSuite("EP08_10.py").run()
✔️ EP08_10.cases existe déjà dans casos/
📋 3 cas chargé(s) depuis casos/EP08_10.cases
🔍 Test de Python : EP08_10.py
⚠️ EP08_10.py : fichier vide (moins de 3 lignes). Tests ignorés.