EP09_06 — 🔴 Pipeline Integrato: Dalla Rilevazione alla Misurazione nel Mondo Reale
9.10.6 EP09_06 🔴 Pipeline Integrato: Dalla Rilevazione alla Misurazione nel Mondo Reale
Questo esercizio finale integra i due esercizi di rilevazione e il principio di fotogrammetria presentato nella sezione “Fotogrammetria e Riferimento di Scala” — esattamente lo stesso calcolo implementato nella figura di misurazione per riferimento di scala di questo capitolo. Lo scenario riproduce una situazione realistica: un rilevatore (Faster R-CNN o YOLO) genera diverse scatole candidate sovrapposte per lo stesso oggetto di interesse; dopo averle filtrate tramite NMS, la scatola sopravvissuta con maggiore confidenza viene utilizzata, insieme a una scatola di riferimento di larghezza reale nota (come la carta da \(8{,}56\) cm), per stimare le dimensioni reali dell’oggetto rilevato.
9.10.6.1 📋 Linee Guida di Implementazione
Riferimento noto: Leggere il valore reale \(L_{ref}\) (larghezza reale dell’oggetto di riferimento, in cm) e successivamente i quattro reali \(x_1\ y_1\ x_2\ y_2\) della sua scatola delimitante in pixel (già nota, senza necessità di rilevazione).
Candidati dell’oggetto da misurare: Leggere l’intero \(N\) (numero di scatole candidate prodotte dal rilevatore per l’oggetto di interesse) e la soglia reale \(\tau\); successivamente, leggere le \(N\) righe di scatole candidate, ciascuna con \(x_1\ y_1\ x_2\ y_2\ \text{score}\).
Fase 1 — NMS: Applicare esattamente l’algoritmo di Soppressione Non Massima dell’EP09_04 alle \(N\) scatole candidate, utilizzando la soglia \(\tau\), per eliminare rilevazioni ridondanti dello stesso oggetto.
Fase 2 — Selezione della scatola finale: Dopo il NMS, la scatola con il score più alto tra quelle mantenute è la rilevazione finale dell’oggetto (l’input garantisce che tutte le scatole candidate corrispondano a un singolo oggetto fisico, quindi la prima scatola selezionata dal NMS è già il risultato finale).
Fase 3 — Misurazione per riferimento di scala: Calcolare il rapporto \(\text{cm/pixel} = L_{ref} / \text{larghezza del riferimento in pixel}\) e applicarlo sia alla larghezza che all’altezza (in pixel) della scatola finale dell’oggetto, ottenendo le sue dimensioni reali stimate in centimetri.
Output: Prima, una riga per ogni scatola mantenuta dopo il NMS (stesso formato dell’EP09_04): índice score. Successivamente, la riga Total mantidas: X. Infine, la riga Objeto: L x A cm, dove \(L\) e \(A\) sono la larghezza e l’altezza stimate dell’oggetto, ciascuna con 2 cifre decimali.
9.10.6.2 📌 Vincoli Computazionali
Riutilizzare integralmente il NMS dell’EP09_04 — stessa regola di parità, stesso criterio di soppressione (\(\text{IoU} > \tau\)).
Il riferimento non passa attraverso il NMS: la sua scatola è data direttamente, senza candidati concorrenti.
Rapporto unico per larghezza e altezza: così come nella figura di fotogrammetria del capitolo, lo stesso rapporto cm/pixel (derivato dalla larghezza del riferimento) viene applicato sia alla larghezza che all’altezza dell’oggetto — non vi è calibrazione verticale separata.
9.10.6.3 🧠 Fondamenti Teorici
Fase
Concetto del capitolo
Multiple scatole candidate
Output grezzo di un rilevatore come Faster R-CNN o YOLO, prima della post-elaborazione
NMS (EP09_04)
Filtra le rilevazioni ridondanti, preservando solo la più affidabile per l’oggetto
Riferimento di scala noto
Stesso principio della carta da \(8{,}56\) cm utilizzata nella sezione “Fotogrammetria e Riferimento di Scala”
Conversione pixel → centimetro
Regola del tre semplice: \(\text{cm/pixel} = L_{ref} / w_{ref\_px}\), applicata alla scatola finale dell’oggetto
9.10.6.4 🧩 Metodi di morph.py che possono aiutare
mm.IoU(boxA, boxB) — la stessa funzione suggerita nell’EP09_04, qui riutilizzata all’interno della fase di NMS di questo pipeline integrato (ricordarsi della conversione di formato: \(w = x_2-x_1\), \(h = y_2-y_1\)).
Se hai già risolto l’EP09_04 incapsulando il NMS in una funzione propria, questo è il momento ideale per riutilizzare quel codice — l’integrazione di moduli già testati singolarmente è esattamente la pratica ingegneristica che questo esercizio vuole rafforzare.
9.10.6.5 📦 Specifica di Input e Output (VPL)
Input:
Riga 1: Reale \(L_{ref}\).
Riga 2: \(x_1\ y_1\ x_2\ y_2\) della scatola di riferimento.
0 0.9200
2 0.4000
Total mantidas: 2
Objeto: 13.45 x 9.17 cm
La scatola 1 viene soppressa perché si sovrappone fortemente alla scatola 0; la rilevazione finale dell’oggetto è la scatola 0.
🎮 Simulatore: Pipeline Integrato — Dal Rilevamento alla Misurazione🔴 Fotogrammetria
Casella selezionataCasella soppressaRiferimentoOggetto finale
8.56
0.50
Modello
🎯 Visualizzazione del Pipeline
📋 Pipeline Passo dopo Passo
Figura 9.48: Simulatore EP09_06: Pipeline Integrato — Rilevamento alla Misurazione del Mondo Reale
%%writefile EP09_06.py# Codice Python
Overwriting EP09_06.py
TestSuite("EP09_06.py").run()
✔️ EP09_06.cases esiste già in casos/
📋 3 caso/i caricato/i da casos/EP09_06.cases
🔍 Test di Python: EP09_06.py
⚠️ EP09_06.py: file vuoto (meno di 3 righe). Test saltati.