Ajustez l'épaisseur du pont entre les pièces et observez comment l'érosion morphologique sépare les objets pour le comptage et l'extraction de descripteurs (aire et boîte englobante).
1 px
Dans une ligne de production de pièces de monnaie, il est courant que les pièces se touchent sur le tapis roulant, formant une seule tache connectée dans l’image — un comptage naïf donnerait un nombre erroné. La solution classique combine des opérations morphologiques et une analyse de connectivité : d’abord, une érosion réduit ou rompt les connexions fragiles entre les objets, puis l’étiquetage des composantes connexes sépare chaque objet en une région distincte. Enfin, des descripteurs géométriques (aire et boîte englobante) résument chaque composante trouvée.
Voir Figure 4.39 pour une simulation de cet EP.
Dimensions de l’image : lire les entiers \(L\) (lignes) et \(C\) (colonnes) de \(f\).
Dimensions de \(B\) : lire les entiers \(L_B\) (lignes) et \(C_B\) (colonnes) de l’élément structurant.
Élément structurant : lire la matrice \(B\), contenant des valeurs \(0\) ou \(1\), ligne par ligne.
Données : lire la matrice binaire \(f\) (valeurs \(0\) ou \(1\)), ligne par ligne.
Séparation : calculer \[ f_{ero} = f \ominus B \] en utilisant une érosion binaire plane (comme dans l’EP04_04), en éliminant les connexions fragiles entre les objets.
Étiquetage : sur \(f_{ero}\), identifier les composantes connexes en utilisant la connectivité définie par le voisinage \(B\). L’étiquetage doit suivre un balayage raster : lorsqu’un pixel \(1\) non encore étiqueté est trouvé, attribuer un nouveau label entier croissant à partir de 1 et propager ce label à toute la région connexe.
Descripteurs : pour chaque label \(k\), calculer :
Sortie : afficher le nombre total de labels, puis une ligne par label au format : \[ k,\ \text{aire},\ y_{min},\ x_{min},\ y_{max},\ x_{max} \]
| Concept | Signification | Impact |
|---|---|---|
| Pont fin | Connexion étroite entre objets | Peut être supprimé par l’érosion morphologique |
| Connectivité | Définie par l’ensemble \[\mathcal{N}(y,x)\] | Détermine quels pixels appartiennent à la même composante |
| Aire | Nombre de pixels par composante | Estimation directe de la taille de l’objet |
| Boîte englobante | Extension spatiale du label | Résumé géométrique de la composante |
Entrée :
Sortie :
Ajustez l'épaisseur du pont entre les pièces et observez comment l'érosion morphologique sépare les objets pour le comptage et l'extraction de descripteurs (aire et boîte englobante).
%%writefile EP04_10.py
# Code PythonOverwriting EP04_10.py
TestSuite("EP04_10.py").run()✔️ EP04_10.cases existe déjà dans casos/
📋 4 cas chargé(s) depuis casos/EP04_10.cases
🔍 Test de Python : EP04_10.py
⚠️ EP04_10.py : fichier vide (moins de 3 lignes). Tests ignorés.