Template Matching
[Slide](C:\UNI\Magistrale\visione\09_Template matching.pdf)
Indice
Definizione e Tassonomia
Definizione
Il template matching è il problema di localizzare un oggetto noto (descritto da un template ) all’interno di un’immagine . L’output è una o più finestre di rilevamento che indicano posizione e dimensione dell’oggetto trovato.
Tassonomia:
Template Matching
├── Rigido (forma fissa)
│ ├── Pixel-based (correlazione, SSD)
│ ├── Feature-based (SIFT/SURF/HoG + distanza)
│ └── Hough transform (modelli parametrici)
└── Deformabile (forma variabile)
├── Free-form (contorni attivi, snakes)
└── Parametrico (shape learning con KL)
Valutazione delle Prestazioni
Precision e Recall
Per valutare un sistema di localizzazione si confrontano le detection trovate dal sistema con le ground truth (annotazioni manuali).
| Termine | Significato |
|---|---|
| TP (True Positive) | Detection corretta: il sistema ha trovato un oggetto che esiste |
| FP (False Positive) | Detection errata: il sistema ha segnalato un oggetto che non c’è |
| FN (False Negative) | Detection mancata: c’era un oggetto che il sistema non ha trovato |
Le due metriche principali:
- Precision : fra tutte le detection del sistema, quante sono corrette?
- Recall : fra tutti gli oggetti reali, quanti ne ha trovati il sistema?
Note
I due obiettivi sono in tensione: aumentare la sensibilità (trovare più oggetti) tende ad aumentare i falsi positivi, abbassando la precision. La soglia di classificazione permette di spostare l’equilibrio tra i due.
IoU Score
Per decidere se una detection è un TP o un FP si usa il Jaccard index (IoU — Intersection over Union):
- : sovrapposizione perfetta
- : nessuna sovrapposizione
- Tipicamente si usa come soglia per considerare una detection corretta
Curva ROC
La curva ROC (Receiver Operating Characteristic) mostra il trade-off tra errori al variare della soglia di decisione :
- Asse X: False Positive Rate (FPR) — falsi allarmi
- Asse Y: False Negative Rate (FNR) — oggetti mancati
Abbassare la soglia riduce i FN ma aumenta i FP; alzarla fa il contrario. La curva ROC visualizza tutti i possibili trade-off.
Template Matching Rigido su Correlazione
L’approccio più diretto: si fa scorrere una finestra mobile sull’immagine e si misura la similarità tra il contenuto della finestra e il template.
Sum of Squared Differences (SSD)
Misura la dissimilarità pixel per pixel. Valori bassi indicano buona corrispondenza. Il minimo globale corrisponde alla posizione più probabile dell’oggetto.
Cross-Correlation
Misura la similarità come prodotto scalare tra il vettore template e il vettore immagine. Il massimo globale indica la posizione migliore.
Equivalenza
SSD e CC sono equivalenti quando i vettori sono normalizzati: . Con norme costanti, minimizzare SSD equivale a massimizzare CC.
Problemi e Approccio Multi-Risoluzione
Problemi della correlazione:
- Complessità computazionale: dove è l’immagine e il template — costoso per immagini e template grandi
- Pattern deformabili: la correlazione assume un template rigido; oggetti con variazioni di forma non vengono rilevati
Approccio multi-risoluzione (piramide di risoluzioni):
- Si costruisce una piramide gaussiana di livelli (ogni livello è un downsampling 2× del precedente)
- Si esegue il matching alla risoluzione più bassa (veloce, approssimato)
- Le posizioni candidate vengono raffinate alle risoluzioni superiori (coarse-to-fine)
Questo riduce drasticamente il costo computazionale mantenendo buona accuratezza.
Template Matching Rigido su Feature
Invece di confrontare direttamente i pixel, si estraggono descrittori locali e si confrontano in uno spazio di feature.
Dense Sampling e Descrittori Locali
Pipeline:
- Si campiona l’immagine su una griglia uniforme (dense sampling)
- Per ogni punto della griglia si calcola un descrittore locale (SIFT, SURF, HOG, Haar)
- Si confrontano i descrittori della finestra di ricerca con quelli del template tramite distanza euclidea
- La finestra con distanza minima è la detection
Vantaggio: i descrittori locali sono invarianti a piccole deformazioni, cambi di illuminazione e rotazioni — più robusti della correlazione pixel.
Localizzatore di Viola e Jones
Il localizzatore di Viola e Jones è il metodo classico per il rilevamento di volti in tempo reale. Combina tre ingredienti:
1. Haar-like features: maschere rettangolari binarie calcolate efficientemente tramite immagine integrale. Per una finestra 24×24 si ottengono ~49.000 feature candidate.
2. Boosting (AdaBoost): costruisce un classificatore robusto come combinazione di molti classificatori deboli (uno per feature). AdaBoost seleziona iterativamente le feature più discriminative tra le ~49.000 disponibili.
3. Multiscale detection: la finestra di ricerca scorre sull’immagine a diverse scale. Per ogni finestra, si estraggono le Haar-like feature e si classifica (+1 face / -1 non-face).
In pratica: l’addestramento avviene su un dataset con esempi positivi (volti) e negativi (non-volti). Il classificatore impara quali Haar-like feature sono maggiormente discriminative per distinguere volti da sfondi.
Histogram of Oriented Gradients (HoG)
Definizione
L’HoG (Histogram of Oriented Gradients) è un descrittore proposto da Dalal e Triggs per la localizzazione di persone. Si basa sull’istogramma delle orientazioni del gradiente calcolato su sottoregioni dell’immagine.
Pipeline HoG:
Input (64×128) → Normalizzazione colore → Calcolo gradiente
→ Istogramma orientazioni per cella → Normalizzazione per blocchi
→ Concatenazione → Classificatore SVM → Persona / Non-persona
Dettagli costruttivi (per la finestra standard 64×128):
| Componente | Dettaglio |
|---|---|
| Celle | 8×8 pixel → 8×16 celle per finestra |
| Istogramma | 9 bin di orientazione (0°–180°, unsigned) per cella |
| Blocchi | 2×2 celle con overlap → 7×15 blocchi per finestra |
| Normalizzazione | Ogni blocco è normalizzato rispetto alla sua norma L2 (robustezza a variazioni di contrasto) |
| Descrittore finale | valori concatenati |
Nota: il descrittore HoG è analogo a SIFT ma calcolato densamente su tutta la finestra anziché attorno a keypoint. Cattura la struttura locale degli edge, ed è robusto a piccole deformazioni geometriche.
Post-processing: si applica la soppressione dei non-massimi per ridurre i falsi positivi e unificare le detection multiple dello stesso oggetto.
Trasformata di Hough
Definizione
La trasformata di Hough è una tecnica per localizzare forme parametriche (rette, cerchi, ellissi) in un’immagine basandosi sul principio del voto: ogni pixel dell’immagine “vota” per tutte le forme compatibili con la sua posizione.
Meccanismo generale:
- Si definisce uno spazio dei parametri del modello (es. per rette), discretizzato in un array di accumulatori
- Si scansiona l’immagine: ogni pixel attivo vota per tutte le celle dello spazio dei parametri compatibili con esso
- Al termine, i massimi dell’array corrispondono alle forme più probabilmente presenti nell’immagine
Efficienza
Nonostante la reputazione di costosa, la trasformata di Hough può essere resa efficiente usando il gradiente (per limitare i voti), l’aritmetica intera e il pre-calcolo — spesso più veloce della correlazione.
Hough per Rette
Una retta nel piano è descritta da . Lo spazio dei parametri è , discretizzato in una matrice .
Algoritmo:
- Per ogni pixel attivo : fissate e , per ogni valore discreto si calcola e si incrementa
Problema con : la pendenza va a infinito per rette verticali. Si usa quindi la parametrizzazione polare:
Lo spazio dei parametri diventa , che gestisce correttamente tutte le orientazioni. Ogni pixel attivo traccia una curva sinusoidale nello spazio ; i punti collineari producono curve che si intersecano nello stesso punto.
Hough per Circonferenze
Una circonferenza è descritta da .
- Raggio prefissato: lo spazio dei parametri è bidimensionale — per ogni pixel si vota il centro compatibile
- Raggio variabile: lo spazio è tridimensionale — complessità computazionale maggiore
Pipeline tipica: edge detection (Canny) → binarizzazione → trasformata di Hough → pick dei massimi.
Hough per Ellissi
Si sostituisce l’equazione dell’ellisse:
I parametri sono 4 — spazio a 4 dimensioni. Per ottenere implementazioni efficienti è necessario adottare semplificazioni (es. fissare uno dei parametri o usare il gradiente per ridurre i voti).
Template Matching Deformabile
Gli oggetti reali non sono rigidi: la stessa classe di oggetti (es. una mano, un volto) può apparire in pose molto diverse. Il template matching rigido non è sufficiente.
Shape Learning
Definizione
Il shape learning (metodo di Cootes) è un approccio per apprendere un modello parametrico della forma di un oggetto a partire da esempi del training set, catturando le sue principali modalità di variazione.
Pipeline:
- Si raccoglie un training set di immagini etichettate con poligonali che tracciano il contorno dell’oggetto, marcando i punti corrispondenti sempre nello stesso ordine
- Si allineano le forme del training set (normalizzando posizione, scala, orientazione)
- Si applica la trasformata KL (PCA) alle coordinate dei punti: si ottengono i modi di variazione principale — i gradi di libertà che catturano la maggior parte della variabilità della forma
Il modello risultante è parametrico con pochi gradi di libertà: tipicamente 5 modi principali sono sufficienti a descrivere la maggior parte delle variazioni.
Applicazione: dato il modello, si ottimizza sui parametri per fittare il contorno di un nuovo oggetto nell’immagine, partendo da una soluzione iniziale anche molto approssimata (convergenza robusta).
Esempi:
- Forma della mano: 18 immagini etichettate, 5 modi principali (KL) catturano la maggior parte delle pose possibili
- Caratteristiche del volto: 200 immagini etichettate con più poligonali (occhi, naso, bocca), stessa conclusione: 5 modi principali sufficienti