Regola lo spessore del ponte tra le monete e osserva come l'erosione morfologica separa gli oggetti per il conteggio e l'estrazione dei descrittori (area e bounding box).
1 px
In una linea di produzione di monete, è comune che i pezzi si tocchino l’un l’altro sul nastro trasportatore, formando un’unica macchia connessa nell’immagine — un conteggio ingenuo sbaglierebbe il totale. La soluzione classica combina operazioni morfologiche e analisi di connettività: prima un’erosione riduce o spezza le connessioni fragili tra gli oggetti, e poi l’etichettatura delle componenti connesse separa ciascun oggetto in una regione distinta. Infine, descrittori geometrici (area e bounding box) riassumono ciascuna componente trovata.
Vedi in Figura 4.39 una simulazione di questo EP.
Dimensioni dell’immagine: leggere gli interi \(L\) (righe) e \(C\) (colonne) da \(f\).
Dimensioni di \(B\): leggere gli interi \(L_B\) (righe) e \(C_B\) (colonne) dell’elemento strutturante.
Elemento strutturante: leggere la matrice \(B\), contenente valori \(0\) o \(1\), riga per riga.
Dati: leggere la matrice binaria \(f\) (valori \(0\) o \(1\)), riga per riga.
Separazione: calcolare \[ f_{ero} = f \ominus B \] usando erosione binaria piatta (come nell’EP04_04), eliminando connessioni fragili tra gli oggetti.
Etichettatura: su \(f_{ero}\), identificare le componenti connesse usando la connettività definita dall’intorno \(B\). L’etichettatura deve seguire una scansione raster: quando si trova un pixel \(1\) non ancora etichettato, assegnare una nuova etichetta intera crescente a partire da 1 e propagare tale etichetta a tutta la regione connessa.
Descrittori: per ogni etichetta \(k\), calcolare:
Output: mostrare il numero totale di etichette e, successivamente, una riga per etichetta nel formato: \[ k,\ \text{area},\ y_{min},\ x_{min},\ y_{max},\ x_{max} \]
| Concetto | Significato | Impatto |
|---|---|---|
| Ponte sottile | Connessione stretta tra oggetti | Può essere rimosso dall’erosione morfologica |
| Connettività | Definita dall’insieme \[\mathcal{N}(y,x)\] | Determina quali pixel appartengono alla stessa componente |
| Area | Numero di pixel per componente | Stima diretta della dimensione dell’oggetto |
| Bounding box | Estensione spaziale dell’etichetta | Riassunto geometrico della componente |
Input:
Output:
Regola lo spessore del ponte tra le monete e osserva come l'erosione morfologica separa gli oggetti per il conteggio e l'estrazione dei descrittori (area e bounding box).
%%writefile EP04_10.py
# Codice PythonOverwriting EP04_10.py
TestSuite("EP04_10.py").run()✔️ EP04_10.cases esiste già in casos/
📋 4 caso/i caricato/i da casos/EP04_10.cases
🔍 Test di Python: EP04_10.py
⚠️ EP04_10.py: file vuoto (meno di 3 righe). Test saltati.