14
Capitolo 3
Tracking
Questo capitolo è una guida allo sviluppo di un algoritmo di tracking.
Sono presentate diverse scelte implementative che lo sviluppatore può prendere
per realizzare una buona applicazione.
Saranno specificate e motivate le nostre scelte,i cui risultati verranno documentati
nel capitolo dei risultati sperimentali.
3.1 Motion detector output
Lo scopo della motion detecton è quello di separare le regioni di interesse dallo
sfondo creando una maschera di foreground che verrà inviata al tracker per
l’analisi comportamentale dei blob.
La maschera di foreground è un’immagine binaria i cui positivi rappresentano le
zone di movimento ,mentre il background le zone statiche.
È molto difficile ottenere una corretta separazione tra background e foreground;
molto spesso si hanno falsi positivi o falsi negativi.
Può accadere che le regioni di interesse (ROI) rappresentino solo parte della
sezione realmente in movimento,oppure che comprendano zone non rilevanti per
l’object tracking.
Un esempio comune di falsi positivi sono ombre e riflessi che si possono
manifestare sotto forma di piccole regioni di foreground,e quindi facilmente
rimovibili,oppure in casi peggiori, possono essere adiacenti alle vere e proprie
ROI deformandole rendendo cosi più difficile l’analisi di tali blob.
Ecco di seguito in figura 3,4 e 5 un esempio di input(sintetico) e output del motion
detector:
Figura 3. Input Frame.
15
Figura 4. Real Foreground
Figura 5. Estimated Forground
Come si può vedere dalla figura 5 le regioni di interesse rilevate sono molto
diverse da quelle che ci si saremmo aspettati.
La mano e il piede sono staccate dal resto del corpo,mentre alcuni fiori sono
rilevati come parte del foreground perché si muovono leggermente,forse spostati
dal vento.
Per ovviare a questi problemi sono necessarie delle operazioni di foreground mask
processing.
Queste possono essere svolte dal tracker prima dell’elaborazione,oppure dal
motion detector in post elaborazione come mostrato in figura 6.
16
Figura 6. Tempistica delle operazioni di foreground mask processing.
3.2 Foreground Mask Processing
3.2.1 Vincoli sull’area delle regioni di interesse
Uno dei metodi principali per pulire la maschera di foreground è la rimozione
delle regioni con area esterna al range di interesse.
Il foreground non è altro che un insieme di regioni trovate dal motion detector e
fornite in input al tracker.
E’ possibile eliminare alcune di queste regioni in base alla loro area con un
semplice controllo.
Nel sistema di tracking implementato l’area sarà la prima feature calcolata e,in
base a quella,verrà deciso se sottoporre la regione al resto del processing oppure
se scartarla.
Quest’operazione,come tutte le altre operazioni di foreground mask processing,
deve essere svolta prima di analizzare le traiettorie dei blob permettendo cosi di
migliorare l’efficienza computazionale dell’algoritmo di tracking.
Esaminando unicamente le regioni con area compresa nel range interessato si
rende l’applicazione piu snella e veloce evitando lo spreco di risorse che si
avrebbe analizzando delle regioni che in realtà andrebbero eliminate.
17
Per queste operazioni non esistono vere e proprie regole di decisione ,dipende
tutto dalle esigenze dell’utente.
Date A l’area della regione ,areaMin e areaMax è possibile eliminare le regioni
esterne ai seguenti range:
- A > areaMin
- A < areaMax
- A > areaMin ∩ A < areaMax
Nella maggior parte dei casi,però, le regioni meno significative sono quelle piu
piccole.
Spesso nascono da errori del motion detectior ed è necessario eliminarle.
L’utente può scegliere liberamente il limite inferiore utilizzabile,oppure può
eliminarle in rapporto all’area totale dell’immagine come fatto nell’ algoritmo di
tracking che è stato sviluppato.
Per esempio data un immagine 320 x 240 pixel (nella maggior parte dei casi i
video in esame sono a bassa risoluzione) con area totale 76800 sarebbe una scelta
ragionevole eliminare le regioni con area inferiore al rapporto 1/256.
Questo significa non analizzare le regioni con area inferiore a 300.
300 / 76800 = 1 / 256
Prendendo per esempio l’immagine in figura 3 ecco rappresentato in figura 7 e 8
la maschera di foregroune e la regione di interesse.
Figura 7. Small Regions Figura 8. ROI
3.2.2 Fusione delle regioni sovrapposte
Un altro problema caratteristico delle forground mask è la suddivisione di un blob
in aree diverse per errori verificatisi durante la fase di segmentazione nel motion
detection.
Questo inconveniente è molto fastidioso perché quello che in realtà dovrebbe
essere un unico blob,viene suddiviso in piu regioni.
18
Per ovviare a questo problema è necessario effettuare un controllo sulle bounding
box delle sezioni interessate.
La bounding box di una regione costituiste il piu piccolo rettangolo in grado di
contenere la stessa.
E’ possibile che le bounding box di due regioni differenti si sovrappongano senza
che le regioni in questione si tocchino, un esempio è la figura 9.
Figura 9.
In questo caso le regioni non sono sovrapposte,ma le loro bounding box lo sono e
per un area non certo indifferente.
Nel nostro algoritmo di tracking, per effettuare un controllo sulla posizione delle
bounding box delle zone in esame è necessario stabilire una percentuale di
sovrapposizione massima al di sopra della quale le regioni verranno considerate
―in overlap‖ e poi fondere tali regioni in un unico ―blob di merge‖.
Questo processo è suddiviso in diverse fasi:
- Labeling delle componenti connesse:
Viene assegnata un etichetta ad ogni regione in esame e viene salvata la
posizione dei punti(pixel) che la compongono in una lista.
La dimensione di questa lista non è altro che l’area della regione stessa.
Questa operazione è importantissima,perché sia la label che la lista di
punti sono feature che verranno utilizzate anche in seguito nella fase di
processing del tracker.
- Controllo della posizione delle bounding box:
Si stabilisce una percentuale massima di overlap e si calcolano le bounding
box per ogni blob.
Viene stabilito quali blob sono in stato di ―overlap‖ confrontando le
posizioni delle bounding box appena calcolate.
- Merging:
Questa fase consiste nel fondere le n regioni in overlap tra di loro creando
un nuovo blob denominato ―blob di merge‖.
19
Il blob di merge avrà un’etichetta nuova e la sua lista di punti sarà la
somma delle liste di punti delle regioni di cui è composto.
Le regioni in stato di overlap che hanno appena partecipato al merge
vengono eliminate.
Ecco di seguito degli esempi pratici in figura 10 e 11.
Figura 10 a-b. Nella 10a c’è un roblema di overlapping regions: b e c dovrebbero essere
una sola regione. Nella 10b c’è la soluzione: creazione del blob di merge “d”.
Come si vede dalle figure precedenti le due persone in corsa sono molto vicine e
quindi bisogna prestare molta attenzione nella scelta della soglia di ―max overlap‖
altrimenti si può incorrere in errori come quello della figura seguente.
20
Figura 11. Errore! Scelta della soglia di sovrapposizione troppo bassa.
3.2.3 Morfologia matematica
Nell’ambito dell’image processing il termine morfologia matematica denota lo
studio della struttura geometrica dell’immagine [6].
E’ uno strumento utile per la rappresentazione e la descrizione della forma di una
regione.
Gli operatori di morfologia matematica vengono definiti inizialmente su immagini
binarie ma sono facilmente estensibili ad immagini a toni di grigio e quindi a
colori.
La maggior parte delle tecniche per l’analisi ed il processing della forma delle
regioni sono basate sulla realizzazione di un operatore di forma che soddisfi le
proprietà richieste.
La struttura dell’immagine viene ―sondata‖ con un insieme di forma definibile
dall’utente (elemento strutturante) solitamente codificato da un piccola immagine
raster (3×3 o 5×5).
Vengono definiti 4 operatori principali: Dilation, Erosion, Opening, Closing, che
combinati con diversi elementi strutturanti B trasformano un ―oggetto‖ A in vario
modo.
Erosione e Dilatazione sono gli operatori elementari.
Apertura e chiusura sono più complessi definiti come combinazioni di questi
ultimi.
DILATION:
L’operatore di dilatazione espande gli oggetti.
21
L’effetto dilatazione è dovuto all’applicazione dell’elemento strutturante B vicino
ai bordi.
Dalla definizione si evince che l’elemento strutturale viene ribaltato rispetto alla
sua origine, attraverso l’operazione di riflessione, e shiftato di z posizioni
attraverso una traslazione.
Il risultato dell’operatore è l’insieme delle posizioni z tali (B^)
z
che interseca
almeno un elemento di A.
Ecco degli esempi di dilation data la regione A e l’elemento strutturante B in
figura 12 e 13.
Figura 12.Esempio di Dilation Figura 13. Altro esempio di dilation
EROSION:
L’operatore di erosione erode/assottiglia gli oggetti.
L’elemento strutturante viene riflesso e traslato su tutta la regione proprio come
nella dilation,causando però l’effetto opposto.
L’effetto di erosione è dovuto al fatto che quando B viene traslato vicino ai bordi
esso non è completamente contenuto in A.
Figura 14. Esempio di erosion Figura 15.Altro esempio di erosion
OPENING:
Un erosione seguita da una dilatazione utilizzando lo stesso elemento strutturale.
L’effetto dell’opening è di preservare il più possibile regioni di forma simile
all’elemento strutturante, e di eliminare quelle differenti.
22
E’ un filtro di smoothing, di cui potenza e tipologia vengono determinati dalla
forma e dalle dimensioni di B.
Figura 16.Opening
Un esempio di problema che richiede l’applicazione dell’apertura è l’eliminazione
delle linee dall’immagine in figura 16.
In questo caso viene utilizzato un elemento strutturale a forma sferica di raggio
pari a quello dei cerchi da preservare che è maggiore dello spessore delle linee.
CLOSING:
La procedura con cui si applica l’operatore di chiusura è l’esatto opposto di una
opening,cioè una dilatazione seguita da un erosione utilizzando lo stesso elemento
strutturale.
L’effetto del closing è di chiudere gli eventuali buchi interni e l’unione ad altre
regioni immediatamente vicine come in figura 17.
Figura 17. Closing
Descritti i principali operatori di morfologia matematica discutiamo delle loro
applicazioni su un immagine binaria data in input ad un tracker.
Come sopra citato è frequente che ombre e riflessi diano origine a falsi positivi
rappresentati da piccole regioni.
Queste possono essere eliminate con un controllo sull’area,ma sarebbe ancora
meno dispendioso eliminarle in una fase precedente con l’utilizzo dell’erosion
guadagnando sul fatto di non dover calcolare l’area anche sulle regioni che non
interessano.
Quindi se si vogliono eliminare piccole regioni,o erodere i bordi dei blob
l’operatore che fa al caso nostro è l’erosion.