EP08_11 — 🔴 Classificazione e Validazione di Oggetti con Riferimento di Bounding Box
8.14.11 EP08_11 🔴 Classificazione e Validazione di Oggetti con Riferimento di Bounding Box
In questo esercizio, l’obiettivo è elaborare un’immagine in scala di grigi contenente molteplici oggetti geometrici, estrarne le proprietà con mm.measure e validare le scatole delimitatrici (bounding boxes) rilevate rispetto a un riferimento reale (Ground Truth - GT) fornito in input, utilizzando la metrica IoU (Intersection over Union).
8.14.11.1 📋 Linee Guida di Implementazione
Lettura dell’Immagine: Leggere le dimensioni \(H \times W\) e la matrice \(H \times W\) di pixel dell’immagine in scala di grigi.
Pipeline Morfologico: Binarizzare l’immagine tramite il metodo di Otsu (mm.threshold) e visualizzare la maschera binarizzata risultante utilizzando mm.drawImg.
Lettura del Riferimento Reale (Ground Truth):
Leggere la quantità \(G\) di scatole delimitatrici del riferimento.
Se \(G > 0\), leggere \(G\) righe contenenti 5 valori ciascuna: id xmin_norm ymin_norm xmax_norm ymax_norm.
Conversione delle Coordinate: Le coordinate del riferimento sono normalizzate nell’intervallo \([0.0, 1.0]\). Per convertirle in pixel sulla griglia dell’immagine:
\[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}\]
Estrazione delle Metriche e Calcolo dell’IoU:
Estrarre le proprietà delle istanze con mm.measure(img_bin, precision=0.02).
Per ogni bounding box rilevata \((x, y, w, h)\), calcolare la sovrapposizione IoU rispetto alle scatole del riferimento e definire hits = 1 se esiste una corrispondenza con \(\text{IoU} \ge 0.50\), oppure hits = 0 in caso contrario.
Output: Ordinare le istanze per posizione (bbox[0], bbox[1]) e stampare la tabella CSV con la colonna aggiuntiva hits.
Per ordinare, usare medidas.sort(key=lambda m: (m['bbox'][1], m['bbox'][0])), con medidas = mm.measure(img).
8.14.11.2 🧠 Fondamenti Teorici e Conversione
Concetto
Formula / Operazione
Descrizione
BBox Rilevata
\((x, y, w, h)\) tramite mm.measure
Scatola delimitatrice calcolata sulla griglia discreta in pixel interi.
BBox Riferimento (GT)
\((x_{\min}, y_{\min}, w, h)\) convertiti
Scatola reale fornita in input in coordinate relative \([0.0, 1.0]\).
Valuta il tasso di sovrapposizione delle scatole. È considerata valida se \(\text{IoU} \ge 0.50\).
Stato di Validazione (hits)
\(1\) se \(\max(\text{IoU}) \ge 0.50\), altrimenti \(0\)
Indicatore binario di correttezza del rilevatore rispetto al riferimento.
8.14.11.3 📦 Specifica di Input e Output (VPL)
Input:
Riga 1: Interi \(H\) e \(W\) (dimensioni della matrice).
Successive \(H\) righe:\(W\) interi (\(0\) a \(255\)) che rappresentano l’immagine in scala di grigi.
Riga \(H + 2\): Intero \(G\) (quantità di scatole del riferimento reale).
Successive \(G\) righe: 5 valori numerici per riga: id xmin_norm ymin_norm xmax_norm ymax_norm (dove le coordinate sono valori fluttuanti tra \(0.0\) e \(1.0\)).
Output:
Matrice binarizzata visualizzata tramite mm.drawImg(img_bin).
🧮 Simulatore EP08_11: Bounding Boxes e Confronto IoU con Controlli IndipendentiValidazione BBox GT vs DET
MODALITÀ DI VISUALIZZAZIONE
VISUALIZZAZIONE DELLE BOUNDING BOXES
LEGENDA DELLE BBOXES:
Riferimento Reale (GT)
Rilevazione Accettata (IoU ≥ 0.5)
Rilevazione Rifiutata (IoU < 0.5)
Sovrapposizione di BBoxes
VISUALIZZAZIONE DELLA MATRICE DI PIXEL
MISURE, CLASSIFICAZIONE GEOMETRICA E CONFRONTO IoU CON RIFERIMENTO
id
classe
area
solidità
vertici
bbox det (x,y,w,h)
bbox gt (x,y,w,h)
IoU
stato (IoU ≥ 0.5)
Figura 8.25: Simulatore EP08_11: Classificazione Geometrica con Controlli Indipendenti di Overlay BBox (GT e DET)
%%writefile EP08_11.py# Codice Python
Overwriting EP08_11.py
TestSuite("EP08_11.py").run()
✔️ EP08_11.cases esiste già in casos/
📋 3 caso/i caricato/i da casos/EP08_11.cases
🔍 Test di Python: EP08_11.py
⚠️ EP08_11.py: file vuoto (meno di 3 righe). Test saltati.