Sei sulla pagina 1di 86

UNIVERSIT

`
A DEGLI STUDI DI FIRENZE
Facolt` a di Ingegneria - Dipartimento di Sistemi e Informatica
Tesi di Laurea Ingegneria Informatica
Riconoscimento di gesti
con Microsoft Kinect
Candidato
Lorenzo Usai
Relatore
Prof. Alberto Del Bimbo
Correlatori
Ing. Lorenzo Seidenari
Ing. Andrew Bagdanov
Anno Accademico 2010-2011
alla mia mamma
i
La preoccupazione delluomo e del suo destino deve sempre costituire
linteresse principale di tutti gli sforzi tecnici; non dimenticatelo mai, in
mezzo ai vostri diagrammi e alle vostre equazioni
Albert Einstein
Ecco i pazzi. I disadattati. I ribelli. I contestatori. Puoi citarli,
disapprovarli, gloricarli o denigrarli. Ma ci` o che non potrai fare `e ignorarli.
Perche sono quelli che cambiano le cose. Fanno progredire lumanit`a.
Perche le persone cos` pazze da pensare di poter cambiare il mondo...sono
quelle che lo cambiano per davvero.
Think Dierent, Apple
ii
Indice
Introduzione v
1 Microsoft Kinect 1
1.1 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Calcolo della mappa di profondit` a . . . . . . . . . . . . . . . . 3
1.2.1 Tecnologie per il calcolo della mappa di profondit`a
della scena . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.2 Tecnologia PrimeSense . . . . . . . . . . . . . . . . . . 5
1.3 Caratteristiche tecniche . . . . . . . . . . . . . . . . . . . . . . 8
1.4 API Software . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.4.1 OpenNI (Open Natural Interaction) . . . . . . . . . . . 9
1.4.2 SDK Microsoft . . . . . . . . . . . . . . . . . . . . . . 10
1.4.3 Libfreenect . . . . . . . . . . . . . . . . . . . . . . . . 10
1.4.4 API utilizzata . . . . . . . . . . . . . . . . . . . . . . . 10
2 Localizzazione e tracciamento delle mani 12
2.1 Strumenti oerti dalla libreria . . . . . . . . . . . . . . . . . . 12
2.2 Threshold adattivo . . . . . . . . . . . . . . . . . . . . . . . . 15
2.3 Utilizzo della silhouette . . . . . . . . . . . . . . . . . . . . . . 17
2.4 Inizializzazione dellhand-tracker . . . . . . . . . . . . . . . . . 17
2.5 Algoritmo per la localizzazione e il tracciamento delle mani . . 19
3 Riconoscimento dello stato delle mani 23
3.1 Costruzione del dataset . . . . . . . . . . . . . . . . . . . . . . 24
3.2 Segmentazione delle immagini . . . . . . . . . . . . . . . . . . 27
iii
3.3 Estrazione feature . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.3.1 Momenti di Hu . . . . . . . . . . . . . . . . . . . . . . 30
3.3.2 SIFT (Scale Invariant Feature Trasform) . . . . . . . . 30
3.3.3 SURF (Speeded Up Robust Features) . . . . . . . . . . 31
3.4 Costruzione del modello . . . . . . . . . . . . . . . . . . . . . 33
3.4.1 Scelta del descrittore . . . . . . . . . . . . . . . . . . . 35
4 Realizzazione del detector 45
4.1 Costruzione del modello SVM . . . . . . . . . . . . . . . . . . 45
4.2 Calcolo del descrittore . . . . . . . . . . . . . . . . . . . . . . 46
4.3 Predizione dello stato . . . . . . . . . . . . . . . . . . . . . . . 47
4.4 Robustezza del detector . . . . . . . . . . . . . . . . . . . . . 47
4.4.1 Filtro di Kalman . . . . . . . . . . . . . . . . . . . . . 48
4.4.2 Utilizzo del ltro di Kalman . . . . . . . . . . . . . . . 50
5 Risultati sperimentali 52
5.1 Valutazione dellaccuratezza al variare della distanza dal sensore 52
5.2 Valutazione della robustezza del detector . . . . . . . . . . . . 53
5.3 Valutazione dellinerzia del detector . . . . . . . . . . . . . . . 61
5.4 Valutazione delle prestazioni temporali . . . . . . . . . . . . . 62
6 Progetto di un sistema di riconoscimento di gesti 64
6.1 Protocollo TUIO . . . . . . . . . . . . . . . . . . . . . . . . . 65
Conclusioni 67
A Libreria OpenNI 68
B Libreria miccKinect 72
Bibliograa 75
iv
Introduzione
Oggigiorno `e cambiato il modo con cui gli utenti utilizzano il computer: sia-
mo passati da macchine disegnate con lo scopo di essere utilizzate solo da un
ristretto gruppo di esperti a dispositivi sempre pi` u semplici da utilizzare e
sempre pi` u alla portata di tutti. Questa evoluzione del cambiamento di uti-
lizzo dellelaboratore ha ovviamente inuenzato il modo con cui gli utenti si
approcciano a questo, introducendo il concetto di interfaccia. Tutti utilizzia-
mo interfacce grache basate sul paradigma GUI (Graphical User Interface)
per interagire con le applicazioni mediante icone, nestre, men` u e sistemi di
puntamento [15]. Nellultimo periodo tuttavia siamo di fronte ad una ulte-
riore evoluzione, grazie alla quale stiamo passando da interfacce di tipo GUI
ad interfacce di tipo NUI (Natural User Interface) il cui obiettivo `e quello
di favorire linterazione dellutente con lapplicazione, permettendogli di po-
ter dialogare con la macchina in modo naturale, ovvero utilizzando lo stesso
linguaggio utilizzato normalmente nella vita toccando gli oggetti, facendo
domande, muovendosi [9].
Linterazione naturale `e denita come labilit` a di interagire con il mon-
do digitale senza la necessit` a di dispositivi sici articiali e obsoleti come
controller o joystick che impediscono il naturale modo con cui le persone co-
municano fra di loro e con lambiente. Linterazione naturale `e denita in
termini di esperienza: le persone comunicano in maniera naturale tramite
espressioni vocali, gesti, emozioni esplorando gli ambienti attraverso la vi-
sione e la manipolazione di oggetti sici: la chiave `e quindi permettere loro
di interagire con la tecnologia nello stesso modo con cui interagiscono con la
realt` a tutti i giorni. La rivoluzione che stiamo vivendo `e quindi il passaggio
da sistemi che si adattano allutente a sistemi che permettono la sua intera-
v
zione: lutente non `e pi` u visto come elemento nale del progetto ma come
punto di partenza. Sta mutando quindi la denizione di utente, passando
da fattore umano, sostanzialmente passivo al sistema, ad attore umano, un
individuo attivo, capace di controllo e di scelta. Sono i sistemi che devono
adattarsi agli utenti e non viceversa [15].
Recentemente linterazione naturale ha subito un notevole impulso grazie
al lancio sul mercato di Microsoft Kinect, un accessorio della console Xbox
360
1
che permette di interagire con i videogame senza lutilizzo di controller
sici: con Microsoft Kinect `e possibile uninterazione realmente naturale con
il gioco, dato che i giocatori possono calciare la palla oppure giocare con
altri giocatori. Grazie alle API disponibili per interagire con il dispositivo,
`e possibile utilizzare Microsoft Kinect non solo nel campo dei videogame,
ma come sensore per realizzare ambienti di interazione uomo-macchina in
cui gli utenti utilizzano le interfacce senza lutilizzo di controller sici ma
semplicemente utilizzando i gesti delle mani e del corpo, aerrando oggetti e
spostandoli come nella realt` a.
La maggior parte delle applicazioni di interazione naturale che utilizzano
Microsoft Kinect permettono allutente di interagire con oggetti e contenuti
digitali sfruttando il meccanismo della persistenza, dato che il dispositivo non
ore un meccanismo automatico di riconoscimento della posa delle mani. In
base a questo meccanismo lutente per iniziare ad interagire con gli oggetti
deve posizionare la mano sopra di questi per un certo tempo. Tuttavia nella
vita di tutti i giorni noi non interagiamo con gli oggetti attraverso la persi-
stenza ma utilizzando le mani per aerrarli e manipolarli.
Lobiettivo di questo lavoro di tesi consiste nella realizzazione di un siste-
ma capace di orire allutente questo tipo di interazione. A tale scopo occorre
localizzare ad ogni frame la posizione delle mani degli utenti, determinando
se queste sono aperte oppure chiuse. Determinare la posizione delle mani e il
loro stato costituisce quindi la base per la realizzazione di interfacce che con-
1
www.xbox.com
vi
sentono allutente uninterazione realmente naturale con lapplicazione. Nei
prossimi capitoli verr` a descritto il metodo proposto. Il primo capitolo con-
tiene una panoramica sul funzionamento di Microsoft Kinect, illustrandone
le caratteristiche tecniche, le API disponibili per interagire con la periferica
e la tecnologia utilizzata per il calcolo della mappa di profondit`a della scena.
Nel secondo capitolo viene arontato il problema della localizzazione del-
le mani degli utenti allinterno del frame; in particolare viene proposta una
soluzione al problema dellinizializzazione del tracker di libreria. Nel terzo
capitolo viene studiato il problema centrale della tesi, ovvero la costruzione
di un classicatore per il riconoscimento dello stato delle mani degli utenti;
nel capitolo viene descritta la procedura seguita per la costruzione del dataset
di immagini e lo studio eettuato su tali immagini per la scelta del descrit-
tore da utilizzare per la costruzione del classicatore. Nel quarto capitolo
viene descritta la soluzione proposta per la realizzazione del classicatore,
mentre nel quinto capitolo vengono riportati alcuni risultati sperimentali
che ne dimostrano laccuratezza e la robustezza. Inne nel sesto capitolo
`e illustrata una soluzione per poter utilizzare il sistema progettato al ne di
implementare applicazioni di interazione naturale.
vii
Capitolo 1
Microsoft Kinect
I
n questo capitolo viene presentato Microsoft Kinect descrivendone le
caratteristiche tecniche, la tecnologia utilizzata per il calcolo della map-
pa di profondit`a della scena e le principali API software disponibili per
interfacciarsi con il dispositivo.
Microsoft Kinect `e una periferica per la console Xbox 360 che permette di
interagire con i videogiochi senza lutilizzo di controller sici. A dierenza
delle altre console presenti sul mercato, come ad esempio Nintendo Wii op-
pure Sony PlayStation, i giocatori interagiscono con i videogiochi solo con
movimenti del corpo e comandi vocali. Microsoft Kinect ore quindi allu-
tente la possibilit` a di vivere unesperienza di gioco molto pi` u coinvolgente
rispetto ai videogame tradizionali. Dal 2010 (anno di lancio) ad oggi Mi-
crosoft Kinect sta diventando sempre pi` u oggetto di studio per ricercatori e
sviluppatori di sistemi di human pose recognition perche in grado di resti-
tuire in real-time una mappa di profondit`a della scena abbastanza precisa,
realizzando un ottimo compromesso fra prestazioni e costo (il prezzo infatti
`e di circa 150 $).
1.1 Hardware
Microsoft Kinect `e costituito da una barra orizzontale connessa ad una base
con un perno motorizzato, capace di ruotare il sensore attorno al suo asse
1
CAPITOLO 1. MICROSOFT KINECT
orizzontale. Il dispositivo mostrato in gura 1.1 `e dotato di:
telecamera a colori RGB in tecnologia CMOS;
proiettore di pattern luminosi in luce IR;
telecamera IR in tecnologia CMOS;
array di microfoni.
Perno motorizzato
Led di stato
Array di microfoni
(a) Vista esterna: il led di stato indica la connessione della periferica al PC;
larray di microfoni (che non si vede) `e disposto internamente lungo tutta la
lunghezza del frontalino.
Proiettore pattern IR
Telecamera RGB Telecamera IR
(b) Vista interna: si nota la coppia proiettore-telecamera IR che permette la
ricostruzione 3D della scena e la telecamera a colori RGB.
Figura 1.1: Microsoft Kinect
2
CAPITOLO 1. MICROSOFT KINECT
1.2 Calcolo della mappa di profondit`a
Le immagini di profondit`a semplicano molti problemi di computer-vision e
di interazione come ad esempio:
rimozione del background e segmentazione della scena;
tracking di oggetti e persone;
ricostruzione 3D degli ambienti;
riconoscimento della posa del corpo;
implementazione di interfacce basate su gesti.
1.2.1 Tecnologie per il calcolo della mappa di profon-
dit`a della scena
Diamo innanzitutto la denizione di mappa di profondit`a della scena:
Denizione 1.2.1 (Mappa di profondit`a) La mappa di profondit`a della
scena `e unimmagine M di dimensione m n, in cui ciascun pixel p(x, y)
codica la distanza nella scena 3D del punto (x, y) dal sensore.
In letteratura esistono molte tecniche per calcolarla e le pi` u utilizzate sono:
triangolazione stereo: la scena `e ripresa da due telecamere e una volta
nota la geometria del sistema (la distanza tra le telecamere e i parame-
tri interni) `e possibile determinare la profondit` a di un oggetto a partire
dalla posizione dei pixel che lo rappresentano nelle due immagini, dato
che lo scostamento tra i punti `e legato alla distanza di tale oggetto
dal sistema [1]. Questa tecnica presenta molti svantaggi, in particolare
la necessit` a di utilizzare (almeno) due telecamere calibrate. Inoltre la
risoluzione delle immagini 3D dipende da numerosi fattori come lillu-
minazione della scena, la qualit`a delle telecamere, la quantit` a di dettagli
presenti nella scena stessa. Altro svantaggio `e dato dallimpossibilit` a
di calcolare la mappa di profondit` a con un frame-rate elevato poiche
sono necessarie molte operazioni di processing;
3
CAPITOLO 1. MICROSOFT KINECT
time-of-ight: questa tecnica utilizza solo una telecamera. Nella scena
viene proiettato un segnale luminoso (in genere infrarosso) e la profon-
dit` a `e calcolata studiando la distorsione che tale segnale subisce quando
entra in contatto con gli oggetti [13]. Diversamente dalla triangolazione
stereo questa tecnica utilizza una sola telecamera e permette di ottenere
una mappa 3D ad una risoluzione che non dipende dalle condizioni di
illuminazione della scena e dalla sua complessit`a. Tuttavia presenta co-
munque alcuni svantaggi come il costo elevato del sistema e la necessit` a
di utilizzare meccanismi per la soppressione di rumore ed interferenze;
proiezione di pattern: questa tecnica utilizza un sistema di visione ste-
reo costituito da una coppia proiettore-telecamera. Nella scena viene
proiettato un pattern luminoso (infrarosso) noto e la profondit` a degli
oggetti `e calcolata studiando la sua distorsione sugli oggetti.
`
E possibile
implementare questa tecnica con varie tecnologie:
proiezione di linee (gura 1.2) e studio della loro curvatura sugli
oggetti: non molto veloce e soggetta a disturbi quando gli oggetti
sono in movimento;
Figura 1.2: Proiezione di fasci di luce IR nella scena
proiezione di pattern 2D periodici e studio del loro scostamento
quando colpiscono gli oggetti: linformazione 3D `e ottenuta in
real-time ma non `e in grado di lavorare su lunghe distanze per via
della distorsione del pattern;
4
CAPITOLO 1. MICROSOFT KINECT
proiezione di pattern 2D pseudo-casuali: anche in questo caso i
pattern sono 2D (gura 1.3) ma la loro randomicit` a permette di
ottenere accurate mappe 3D in real-time con un sistema molto
semplice ed economico.
Figura 1.3: Proiezione di pattern 2D
1.2.2 Tecnologia PrimeSense
Microsoft Kinect costruisce la mappa di profondit`a della scena utilizzando
come tecnologia la proiezione di pattern pseudo-casuali, mediante un sistema
di visione stereo costituito da un proiettore IR e da una telecamera sensibile
alla stessa banda. Questa tecnologia `e stata brevettata nel 2005 [16] da
Zalevsky, Shpunt, Maizels e Garcia, sviluppata e integrata in un chip dalla
compagnia israeliana PrimeSense
1
. Il sistema mostrato in gura 1.4a `e
costituito da 3 elementi principali:
1. proiettore di pattern pseudo-casuali IR;
2. telecamera IR (in tecnologia CMOS);
3. unit`a di controllo (chip PS1080).
Il proiettore `e molto semplice ed economico ed `e costituito da un emettitore
di raggi IR e da un generatore di pattern che devia tali raggi nella scena
imprimendo ad essi angolazioni pseudo-casuali. Una volta proiettato il pat-
tern, la telecamera acquisisce limmagine IR della scena contenente il pattern
distorto e la invia allunit` a di controllo che costruisce cos` la mappa di pro-
fondit` a della scena, come mostrato in gura 1.4b.
1
www.primesense.org
5
CAPITOLO 1. MICROSOFT KINECT
(a) Sistema brevettato costituito da proiettore e telecamera IR
e dallunit`a di controllo
(b) Il chip PS1080 ricostruisce la mappa di profondit`a a partire
dallimmagine ripresa dalla telecamera IR
Figura 1.4: Tecnologia PrimeSense per la ricostruzione della mappa di
profondit` a della scena
6
CAPITOLO 1. MICROSOFT KINECT
Con questo sistema `e necessario acquisire una singola immagine e quindi uti-
lizzare un singolo algoritmo di matching per determinare la profondit`a degli
oggetti (dato che laltra immagine `e costituita dal pattern originale che `e
noto). Lunit` a di controllo, conoscendo la struttura del pattern proiettato,
calcola lo scostamento fra i punti proiettati e quelli ripresi dalla telecamera
determinando in questo modo la mappa di profondit`a della scena (gura 1.5).
(a) Immagine della scena illuminata dal
pattern IR
(b) La mappa di profondit`a `e ricostrui-
ta a partire dallimmagine della scena
illuminata dal pattern proiettato
Figura 1.5: Ricostruzione della mappa di profondit`a della scena
La dimensione dei punti proiettati, la loro forma e orientazione non `e costante
ma dipende dalla distanza dal sensore. Il brevetto individua tre dierenti ti-
pologie di punti per tre dierenti regioni dello spazio come mostrato in gura
1.6: una prima regione R1 (0.8 - 1.2 m) in cui si ha la massima risoluzione,
una seconda regione R2 (1.2 - 2 m) con una buona accuratezza e una terza
regione R3 (2 - 3.5 m) dove laccuratezza `e scarsa.
PrimeSense non ha solo sviluppato un nuovo sistema di acquisizione del-
la mappa 3D della scena, ma soprattutto una tecnologia capace di elaborare
questi dati realizzando molti task di processing 3D. Infatti il chip PS1080
ha al suo interno molte funzionalit` a di processing per il tracciamento, la
ricostruzione della scena, il riconoscimento di gesti.
7
CAPITOLO 1. MICROSOFT KINECT
Figura 1.6: Regioni dello spazio individuate dal brevetto PrimeSense
1.3 Caratteristiche tecniche
In tabella 1.1 sono riportate le caratteristiche tecniche di Microsoft Kinect.
Field of View 58

H,45

V,70

D
Risoluzione x/y (a 2 m dal sensore) 3 mm
Risoluzione z (a 2 m dal sensore) 10 mm
Range di lavoro 0.8 m - 3.5 m
Interfaccia USB 2.0
Consumo 2.25 W
Immagine di profondit`a 640 480 pixel
Immagine a colori RGB 640 480 pixel
Frame-rate 30 fps
Stream audio 4 canali 16 bit (fc 16KHz)
Tabella 1.1: Caratteristiche tecniche di Microsoft Kinect
La caratteristica principale di Microsoft Kinect `e quella di essere uno scanner
3D con un ottimo compromesso fra costi e prestazioni. Difatti anche se la ri-
soluzione `e molto inferiore rispetto ai tradizionali scanner 3D, sta diventando
8
CAPITOLO 1. MICROSOFT KINECT
sempre pi` u oggetto di studio nel campo dellinterazione naturale come siste-
ma di acquisizione economico e con sucienti prestazioni per la realizzazione
di interfacce applicabili a qualsiasi contesto.
1.4 API Software
`
E possibile sviluppare applicazioni con Microsoft Kinect mediante lutiliz-
zo di API software, che realizzano uninterfaccia tra il dispositivo sico e
lapplicazione.
1.4.1 OpenNI (Open Natural Interaction)
OpenNI [11] `e un framework open-source multi-language e cross-platform
che ore allo sviluppatore una serie di API software per lo sviluppo di appli-
cazioni di interazione naturale, utilizzabile per tutti i sensori costruiti attorno
alla tecnologia PrimeSense (Microsoft Kinect non `e lunico sensore esistente,
anche se sicuramente `e il pi` u famoso). OpenNI rappresenta una API stan-
dard per realizzare la comunicazione tra loutput proveniente dai sensori sici
(immagini RGB, mappa di profondit` a e stream audio) e moduli software che
elaborano tali dati per realizzare funzionalit` a di processing 3D come il trac-
king di oggetti e persone nella scena e il riconoscimento di gesti di alto livello.
OpenNI mette a disposizione quindi sia API per interagire con il dispositivo
sico, che API per interagire con i moduli software realizzando una totale
indipendenza tra questi (ovvero le API di elaborazione sono indipendenti
dal sensore utilizzato) orendo cos` agli sviluppatori la possibilit` a di scrive-
re algoritmi utilizzando i dati grezzi provenienti dal sensore oppure dati
pi` u complessi provenienti dallelaborazione 3D. PrimeSense ha sviluppato
uno di questi componenti software chiamato NITE (Natural Interaction
Technology for End-user) [12] non open source. NITE utilizza algoritmi
di computer-vision per realizzare:
segmentazione della scena: processo per individuare gli utenti e gli
oggetti presenti nella scena separandoli dal background;
9
CAPITOLO 1. MICROSOFT KINECT
hand-tracking: processo per individuare e tracciare le mani degli utenti;
full-body-tracking: utilizzando loutput proveniente dalla segmentazio-
ne della scena realizza il tracking degli utenti, tracciando nel tempo la
posizione delle loro parti del corpo.
1.4.2 SDK Microsoft
Con il lancio di Kinect, Microsoft ha rilasciato anche la propria SDK uciale
[8] per gli sviluppatori. La libreria permette di ottenere i ussi provenienti
dal sensore orendo inoltre funzionalit` a di processing 3D, in particolare un
tracker di utenti molto preciso che non necessita della posa di inizializzazione
e che supporta al massimo due utenti.
1.4.3 Libfreenect
Libreria open source [10] (ottenuta come reverse engeneering della periferi-
ca) che ore una semplice interfaccia con il dispositivo: restituisce soltanto
loutput proveniente dai sensori e non implementa nessuna funzionalit`a di
processing 3D di alto livello.
1.4.4 API utilizzata
Per questo lavoro di tesi abbiamo utilizzato la libreria OpenNI con il modulo
software NITE. Infatti sia OpenNI che la libreria Microsoft orono allo svi-
luppatore non solo la possibilit`a di processare loutput grezzo proveniente
dal sensore, ma anche di utilizzare numerose risorse software di processing
3D. La scelta di utilizzare OpenNI `e da giusticarsi per una serie di motivi:
1. ore la possibilit` a di realizzare applicazioni indipendenti sia dal sensore
che dal modulo software utilizzato (permettendo anche di svilupparne
di nuovi), a dierenza della libreria Microsoft;
2. non pone vincoli sul ne delle applicazioni sviluppabili, mentre Mi-
crosoft concede la propria SDK per sviluppare solo applicazioni non
commerciali;
10
CAPITOLO 1. MICROSOFT KINECT
3. esistono versioni per i principali sistemi operativi (Windows, Linux e
Mac OSX) sia a 32 che a 64 bit;
4. `e in grado di tracciare tutti gli utenti che occupano la scena, a dierenza
della SDK che permette di tracciarne solo due.
11
Capitolo 2
Localizzazione e tracciamento
delle mani
Q
uesto capitolo aronta il problema della localizzazione e del traccia-
mento della posizione delle mani degli utenti nello spazio. Per il trac-
ciamento delle mani si utilizza il tracker della libreria e nel capitolo `e
presentato un metodo per la sua inizializzazione.
Passiamo quindi ad arontare il primo problema, ovvero quello di determi-
nare la posizione delle mani degli utenti che si trovano allinterno della scena.
Lobiettivo `e quello di realizzare un sistema capace di tracciare le mani degli
utenti nello spazio reale 3D, fornendo ad ogni frame la localizzazione della
loro posizione nel piano immagine 2D.
2.1 Strumenti oerti dalla libreria
La libreria OpenNI (ovvero il suo modulo NITE) contiene al suo interno un
sistema basato sulla mappa di profondit`a per la localizzazione ed il traccia-
mento delle mani degli utenti nello spazio reale 3D. In particolare esistono
due sistemi per il raggiungimento dello scopo:
hand-tracker: localizza e traccia le mani degli utenti nello spazio reale
3D, determinandone ad ogni frame la posizione;
12
CAPITOLO 2. LOCALIZZAZIONE E TRACCIAMENTO DELLE MANI
full-body-tracker: localizza e traccia gli utenti nello spazio reale 3D,
determinando ad ogni frame posizione e angolazione dei giunti del
corpo.
Vista la disponibilit` a di questi due strumenti, appare superuo per questo
lavoro di tesi sviluppare un sistema di localizzazione e tracciamento delle
mani degli utenti, mentre risulta pi` u conveniente concentrarsi sullo sviluppo
di un sistema per riconoscere la posa delle loro mani. Inoltre entrambi questi
sistemi risultano precisi e robusti alle occlusioni, anche se presentano alcuni
problemi:
lhand-tracker necessita di conoscere come input iniziale la coordinata
della mano da tracciare come punto nello spazio reale 3D; inoltre `e
necessario reinizializzarlo nel caso in cui non sia in grado, per qualche
frame, di determinare la posizione della mano che stava tracciando (ad
esempio perche `e occlusa). Per risolvere questo problema sono pos-
sibili molti approcci. Nella documentazione della libreria `e suggerito
di utilizzare una focus gesture (ad esempio tap, swipe, circle): NI-
TE possiede un sistema capace di riconoscere se allinterno della scena
un utente sta eettuando questa gesture della mano, determinando la
coordinata in cui questa `e stata rilevata: basta quindi utilizzare questa
coordinata per inizializzare il tracker. Unaltra soluzione consiste nel
posizionare la mano in una particolare regione dello spazio (nota), da
cui `e possibile determinare la coordinata e quindi inizializzare il tracker.
Altra soluzione consiste invece nelleettuare un threshold della mappa
di profondit` a della scena con un valore di soglia predenito: quando
lutente posiziona le mani ad una distanza dal sensore inferiore a tale
valore, `e possibile localizzare la posizione delle mani e quindi inizializ-
zare il tracker. Tutti questi approcci risolvono il problema dellinizia-
lizzazione, tuttavia progettare unapplicazione di interazione naturale
utilizzando uno di questi, la rende dicilmente utilizzabile dagli utenti
dato che questi sono costretti ad eettuare alcune azioni, come una
particolare gesture della mano, posizionarsi in una specica area della
scena per eettuare il threshold;
13
CAPITOLO 2. LOCALIZZAZIONE E TRACCIAMENTO DELLE MANI
il full-body-tracker richiede la calibrazione iniziale degli utenti per poter
procedere al loro tracciamento. La calibrazione consiste nel far assu-
mere al giocatore una specica posa come mostrato in gura 2.1 (detta
posa a ) necessaria al tracker per determinare la posizione inizia-
le dei giunti del corpo e iniziare cos` il loro tracciamento nello spazio.
Lassumere questa posa innaturale non `e accettabile in contesti di in-
terazione naturale. Recentemente `e stata rilasciata una nuova versione
della libreria (NITE 1.5) che non richiede la calibrazione iniziale degli
utenti: tuttavia il tracciamento che ne consegue non `e aatto preciso e
commette errori nella posizione dei giunti anche di diversi centimetri,
il che `e molto critico per un sistema di localizzazione delle mani, dato
che queste occupano unarea allinterno del frame molto piccola.
Figura 2.1: Posa di calibrazione.
Per questo lavoro di tesi abbiamo scelto di utilizzare lhand-tracker, sia perche
il full-body-tracker presenta i problemi di cui abbiamo discusso in precedenza,
sia perche per questo lavoro non `e necessario conoscere la posizione di tutti i
giunti del corpo ma solo quella delle mani. Inoltre lhand-tracker risulta es-
sere molto robusto e computazionalmente eciente. Resta quindi da trovare
una soluzione per linizializzazione sia allavvio dellapplicazione che durante
la sua esecuzione, nel caso in cui il tracker non sia in grado di individuare la
posizione delle mani per qualche frame.
14
CAPITOLO 2. LOCALIZZAZIONE E TRACCIAMENTO DELLE MANI
2.2 Threshold adattivo
La dicolt` a dellinizializzazione dellhand-tracker consiste nel determinare la
posizione iniziale delle mani degli utenti che si trovano nella scena senza che
questi assumano posizioni o pose particolari.
La libreria ore alcuni strumenti utili per lo scopo. Infatti per ogni utente
presente nella scena:
`e in grado di localizzare la sua posizione nello spazio come punto 3D,
che chiameremo centro di massa CdM := (x
c
, y
c
, z
c
);
`e in grado di costruire unimmagine, che chiameremo mappa utente,
contenente la sua silhouette, denita come linsieme dei punti risultan-
te dalla proiezione del corpo dellutente nel piano immagine 2D come
mostrato in gura 2.2.
Figura 2.2: Ricostruzione della mappa utente.
La silhouette `e ottenuta mediante la background-subtraction del cor-
po dellutente che si muove allinterno della scena ed `e robusta alle
occlusioni, ovvero NITE non eettua semplicemente una foreground-
segmentation nel 2D ma sfrutta le informazioni 3D a disposizione per
segmentare correttamente gli utenti che si occludono, dato che questi
si trovano comunque a distanze dierenti, come nellesempio di gura
2.3. La mappa utente `e quindi unimmagine in cui ciascun pixel codica
lidentit` a di quel punto allinterno della scena.
15
CAPITOLO 2. LOCALIZZAZIONE E TRACCIAMENTO DELLE MANI
(a) Immagine RGB (b) Mappa utente
Figura 2.3: Le mappe utente sono segmentate correttamente sfruttando le
informazioni del 3D.
Sfruttando questi due strumenti possiamo realizzare una procedura capace di
localizzare la posizione iniziale delle mani dellutente. Lidea di base consiste
nelleettuare un threshold adattivo della mappa di profondit`a, ovvero un
threshold il cui valore di soglia dipende dalla posizione dellutente allinterno
della scena. Con il threshold si ottiene un immagine binaria contenente tutto
quello che sulla mappa di profondit`a si trova oltre soglia.
Sia M la mappa di profondit` a proveniente dal sensore e un valore espresso
in millimetri. Fissiamo con s = z
c
+ il valore della soglia. Calcolando
il threshold della mappa di profondit` a con il valore di soglia s si ottiene la
mappa sogliata denita come:
M
s
= {p(x, y) M | p(x, y) < s}
La mappa sogliata M
s
`e unimmagine binaria che contiene la proiezione nello
spazio proiettivo 2D di tutto quello che nello spazio reale si trova di fronte
alluente. In particolare quando lutente discosta le mani dal corpo, pro-
tendendole in avanti, la mappa di profondit` a sogliata conterr` a due blob che
rappresentano la proiezione delle mani nel piano immagine. In questo modo
`e quindi possibile localizzare le mani nel piano immagine, convertire la loro
posizione in punti 3D e quindi iniziare il loro tracciamento.
16
CAPITOLO 2. LOCALIZZAZIONE E TRACCIAMENTO DELLE MANI
Osservazione 2.2.1
`
E ovvio che se lutente non muove le mani e non le
porta avanti al suo corpo, non `e possibile localizzarle: per questo occorre
progettare uninterfaccia dellapplicazione che stimoli lutente a scostare le
mani dal suo corpo portandole avanti.
2.3 Utilizzo della silhouette
La maschera binaria ottenuta con il threshold adattivo presenta un inconve-
niente: sogliando la mappa di profondit` a si ottiene unimmagine contenente
non solo la proiezione delle mani, ma ovviamente anche la proiezione di tutto
quello che si trova oltre la soglia nella mappa di profondit`a. Ad esempio, se ci
sono oggetti davanti allutente, oppure se sono presenti altri utenti pi` u vicini
al sensore, limmagine binaria conterr` a non solo i blob delle mani dellutente
che stiamo considerando ma anche la proiezione di questi, come nellesempio
di gura 2.4b. Per risolvere questo problema combiniamo la mappa sogliata
M
s
con la mappa utente M
u
costruendo cos` unimmagine, che chiameremo
mappa delle mani, contenente solo la proiezione delle mani dellutente nel
piano immagine 2D, come nellesempio di gura 2.4d. La mappa delle mani
`e denita come:
M
m
= M
s
M
u
= {p(x, y) M
s
| p(x, y) M
u
}
La mappa delle mani contiene due blob: per discriminare quale dei due si
riferisce alla mano destra e quale alla mano sinistra basta determinare la
posizione rispetto al centro di massa dellutente.
2.4 Inizializzazione dellhand-tracker
Conoscendo dunque la posizione delle mani, come proiezione nello spazio rea-
le 3D dei pixel appartenenti alla mappa delle mani, `e possibile inizializzare
lhand-tracker. Consideriamo quindi la mappa delle mani dellutente: questa
`e unimmagine binaria contenente due blob, che rappresentano la proiezione
della mano destra e della mano sinistra sul piano immagine 2D. Per deter-
minare la coordinata di ciascuna mano, calcoliamo per ognuno dei blob il
17
CAPITOLO 2. LOCALIZZAZIONE E TRACCIAMENTO DELLE MANI
(a) Immagine RGB (b) Mappa sogliata M
s
(c) Mappa utente M
u
(d) Mappa delle mani M
m
Figura 2.4: Costruzione della mappa delle mani: una volta individuata la
posizione dellutente nella scena viene calcolata la mappa sogliata la quale,
combinata con la mappa utente, permette di calcolare la mappa delle mani
centroide. Ciascun centroide c rappresenta la coordinata 2D della mano nel
piano immagine. Lhand-tracker tuttavia necessita di conoscere la coordi-
nata della mano nello spazio reale come punto 3D (x, y, z). Per convertire
ciascun centroide c in un punto 3D si utilizza una funzione di libreria, che
necessita di conoscere la coordinata z del punto da convertire (g.2.5), ovvero
la profondit`a alla quale si trova la mano rispetto al sensore.
La profondit` a della mano si ricava dalla mappa di profondit` a della scena M
come valore di profondit` a minimo in un intorno di pixel I(c, ) di raggio
centrato nel centroide c:
z = min
p(x,y)I(c,)
M
18
CAPITOLO 2. LOCALIZZAZIONE E TRACCIAMENTO DELLE MANI
Kinect
z
Figura 2.5: Per convertire un punto 2D nel piano immagine in un punto
3D nello spazio reale `e necessario conoscere la distanza z di tale punto dal
sensore
2.5 Algoritmo per la localizzazione e il trac-
ciamento delle mani
La procedura vista nella precedente sezione si utilizza per linizializzazione
dellhand-tracker sia allavvio del sistema che durante la sua esecuzione, nel
caso in cui il tracker fallisca nel rilevare la posizione delle mani dellutente.
Pu` o capitare infatti che lutente occluda la mano con il suo corpo oppure
che un altro utente si interponga tra lui e il sensore: il tracker in questi casi
non `e in grado di determinare la posizione della mano e per questo motivo `e
necessario re-inizializzarlo utilizzando la stessa procedura. In una visione di
insieme, il sistema per la localizzazione e il tracciamento delle mani mostrato
in gura 2.6, per ogni utente presente nella scena:
1. localizza il centro di massa CdM (x
c
, y
c
, z
c
) (gura 2.7b);
2. crea la mappa utente M
u
(gura 2.7c);
3. crea la mappa sogliata M
s
mediante un threshold della mappa di pro-
fondit` a M con un valore di soglia s = z
c
+ 15 cm (`e stato scelto di
utilizzare il valore 15 cm poiche rappresenta una distanza suciente
per determinare la posizione delle mani quando queste si discostano
dal corpo dellutente);
19
CAPITOLO 2. LOCALIZZAZIONE E TRACCIAMENTO DELLE MANI
4. crea la mappa delle mani M
m
combinando la mappa sogliata M
s
con
la mappa utente M
u
(gura 2.7d);
5. localizza i centroidi dei blob della mappa delle mani, ovvero le coordi-
nate delle mani nel piano immagine 2D (gura 2.7e);
6. converte i punti 2D in punti 3D, considerando come profondit` a della
mano il valore z = min
p(x,y)I(c,)
M;
7. se `e necessario (re)-inizializza il tracker.
La procedura viene calcolata ad ogni frame, cos` da rendere il sistema robusto
rispetto a possibili fallimenti dellhand-tracker.
20
CAPITOLO 2. LOCALIZZAZIONE E TRACCIAMENTO DELLE MANI
Utente presente
nella scena
Localizzazione CdM
(x
c
,y
c
,z
c
)
Creazione
mappa sogliata M
s
Mappa di
profondit M
s = z
c
+ 15 cm
Creazione
mappa utente M
u
Creazione
mappa delle mani M
m
&
blob sinistro blob destro
calcolo
centroide
conversione
2D 3D
(re)inizializzare
il tracker ?
inizializzazione
tracker
SI
calcolo
centroide
conversione
2D 3D
(re)inizializzare
il tracker ?
inizializzazione
tracker
SI
Figura 2.6: Schema del sistema per la (re)inizializzazione dellhand-tracker
21
CAPITOLO 2. LOCALIZZAZIONE E TRACCIAMENTO DELLE MANI
(a) Utente entra nella scena (b) Localizzazione CdM
(c) Costruzione mappa utente M
u
(d) Costruzione mappa delle mani M
m
(e) Localizzazione centroidi (f) Localizzazione delle mani nel frame
Figura 2.7: Non appena lutente entra nella scena viene localizzato il suo
centro di massa e calcolata la sua silhouette. Con queste informazioni si
calcola la mappa delle mani contenente due blob che rappresentano la proie-
zione delle mani nel piano immagine. Calcolando i centroidi si determinano
le coordinate 2D delle mani, che vengono poi convertiti in punti 3D. Con
tali punti si inizializza lhand-tracker cos` da individuare ad ogni frame la
posizione delle mani degli utenti nellimmagine RGB.
22
Capitolo 3
Riconoscimento dello stato
delle mani
I
n questo capitolo `e stata studiata la realizzazione di un classicatore
per discriminare quando le mani dellutente sono aperte e quando so-
no chiuse. Per la realizzazione del classicatore `e stato innanzitutto
costruito un dataset di immagini e successivamente `e stato studiato
un descrittore capace di discriminare quando limmagine di una mano
si riferisce ad una mano aperta oppure ad una mano chiusa.
Una volta costruito un sistema per la localizzazione e il tracciamento della
posizione delle mani degli utenti nella scena, passiamo ad arontare lo studio
di un sistema per riconoscerne lo stato.
Denizione 3.0.1 (Stato della mano) Data una mano, il suo stato con-
siste nellessere aperta oppure chiusa. Una mano si dice aperta quando le
dita non ne occludono il palmo, mentre si dice chiusa altrimenti.
Per determinare lo stato della mano realizziamo un classicatore, ovvero un
sistema di intelligenza articiale che, data limmagine di una mano aper-
ta oppure chiusa, `e capace di determinarne lo stato. Seguiremo lo schema
mostrato in gura 3.1.
23
CAPITOLO 3. RICONOSCIMENTO DELLO STATO DELLE MANI
Segmentazione
immagini
Estrazione
feature
Costruzione
modello
Costruzione
dataset
Realizzazione
classicatore
Figura 3.1: Schema per la realizzazione del classicatore
3.1 Costruzione del dataset
Per addestrare il classicatore `e necessario innanzitutto costruire un dataset
di immagini di mani aperte e chiuse acquisite tramite Microsoft Kinect. Il
dataset `e costituito sia da immagini a colori (immagini rgb) che da immagini
di profondit` a (immagini depth). Per realizzarlo si utilizza il sistema di lo-
calizzazione e tracciamento delle mani, individuando la posizione delle mani
degli utenti nel piano immagine 2D. Conoscendo la posizione della mano al-
linterno del frame, `e possibile ritagliare da questo una immagine della mano
e quindi salvarla. Per ritagliare correttamente limmagine della mano dal
frame rgb e dal frame della mappa di profondit`a, occorre che i frame siano
registrati ovvero che ad ogni pixel nella mappa rgb corrisponda lo stesso pixel
nella mappa di profondit` a. Le immagini provenienti da Microsoft Kinect non
sono registrate, in quanto i sensori si trovano in posizioni siche dierenti:
esiste tuttavia una funzione di libreria per registrare i ussi provenienti dai
due sensori, risolvendo quindi il problema dellallineamento delle immagini.
Abbiamo visto in precedenza lesistenza della funzione di libreria che con-
verte punti sul piano immagine 2D in punti 3D: la stessa funzione `e capace di
realizzare anche la conversione inversa, passando da punti nello spazio reale
3D a punti nel piano immagine 2D. In questo modo si ha la localizzazione
delle mani nel piano immagine.
`
E possibile quindi ritagliare da entrambi i
frame un quadrato centrato nel punto del piano immagine in cui `e localiz-
zata la mano, ottenendo cos` coppie di immagini rgb-depth registrate come
24
CAPITOLO 3. RICONOSCIMENTO DELLO STATO DELLE MANI
mostrato in gura 3.2. La dimensione del quadrato varia in base alla distan-
za dellutente dal sensore: utilizzando la funzione per la conversione delle
coordinate `e possibile infatti scalare il quadrato in modo tale che contenga
sempre al suo interno i pixel appartenenti alle mani degli utenti. Ogni cop-
pia di immagini `e quindi salvata in un le con estensione .png indicando nel
nome del le:
il numero del frame (ogni coppia ha lo stesso numero di frame);
lid associato allutente quando questo entra nella scena;
se limmagine si riferisce alla mano destra oppure alla mano sinistra;
la profondit`a alla quale `e stata localizzata la mano.
Figura 3.2: Una volta localizzata una mano nella mappa rgb, si ritaglia da
questa un quadrato contenente limmagine della mano; analogamente per le
immagini ritagliate dalla mappa di profondit` a. Ciascuna coppia rgb-depth
salvata ha lo stesso numero di frame.
25
CAPITOLO 3. RICONOSCIMENTO DELLO STATO DELLE MANI
Con questo sistema `e stato quindi realizzato un dataset di 8 soggetti,
acquisendo le immagini delle mani aperte e chiuse a dierenti distanze dal
sensore. In particolare sono state individuate 4 regioni:
(a) da 1000 a 2000 cm;
(b) da 2000 a 2400 cm;
(c) da 2400 a 2700 cm;
(d) da 2700 a 3000 cm.
Ciascun utente si `e quindi spostato fra le quattro regioni muovendo le mani
nello spazio mentre un sistema di acquisizione salvava le coppie di frame.
Figura 3.3: Per la costruzione del dataset ciascun utente si `e spostato
allinterno delle quattro regioni.
La tabella 3.1 riassume il contenuto del dataset mentre nella gura 3.4 sono
riportate alcune coppie rgb-depth di immagini di mani aperte e chiuse.
26
CAPITOLO 3. RICONOSCIMENTO DELLO STATO DELLE MANI
SOGGETTO IMG. MANO CHIUSA IMG. MANO APERTA
S1 1174 1587
S2 2371 2130
S3 2212 2158
S4 1299 1811
S5 1453 1854
S6 1278 1782
S7 1704 2409
S8 2953 2997
TOT. 14444 16728
Tabella 3.1: Dataset utilizzato.
3.2 Segmentazione delle immagini
Per rendere il classicatore pi` u robusto, elaboriamo le immagini del data-
set per rimuovere da esse lo sfondo. Guardando i dati a disposizione per
la costruzione del modello, si nota come non sia possibile utilizzare solo le
immagini di profondit` a. Infatti Microsoft Kinect `e molto preciso nel rilevare
la profondit`a degli oggetti nei pressi del sensore, mentre allontanandosi da
questo risulta pi` u impreciso. Analizzando infatti le immagini di profondit` a
del dataset si osserva che, mentre da vicino ci sono sucienti dettagli per
poter discriminare fra mano aperta e mano chiusa (si riescono a distinguere
le dita della mano), allontanandosi questo non `e pi` u vero. Dato che vogliamo
realizzare un classicatore robusto e il pi` u possibile invariante rispetto alla
distanza, non `e possibile utilizzare solo linformazione di profondit` a e occorre
quindi unirla allinformazione delle immagini a colori. Le immagini a colori
daltro canto hanno il difetto di contenere oltre ai pixel della mano, anche pi-
xel appartenenti allo sfondo (pareti della stanza, altri soggetti presenti nella
scena). Un classicatore addestrato con queste immagini non sarebbe molto
robusto dato che le informazioni che deve apprendere (la forma delle mani)
si trovano ad essere confuse con lo sfondo, come mostrato negli esempi di
27
CAPITOLO 3. RICONOSCIMENTO DELLO STATO DELLE MANI
Figura 3.4: Esempi di immagini del dataset.
gura 3.4.
Per rimuovere lo sfondo dalle immagini a colori si utilizzano le immagini
di profondit` a. Ogni coppia di immagini `e stata salvata codicando nel nome
del le la distanza alla quale si trovava la mano nello spazio 3D. Possiamo
quindi utilizzare questo valore per eettuare una sogliatura delle immagini
di profondit`a cos` da ottenere una maschera binaria contenente un blob che
rappresenta la proiezione della mano nel piano immagine. Usando quindi
questa maschera binaria `e possibile estrarre dalle immagini rgb solo i pixel che
si riferiscono alla mano, eliminando cos` lo sfondo. Durante questo processo
le immagini rgb sono convertite in scala di grigio in quanto linformazione
del colore non `e utile nel processo discriminativo (infatti il colore dei pixel
delle mani non cambia nelle immagini delle mani aperte e in quelle delle
mani chiuse). Inne completiamo il processo di elaborazione eettuando un
cropping dellimmagine per ridurre al minimo i pixel che non contengono
contenuto informativo. Il processo di segmentazione `e riassunto in gura 3.5,
mentre in gura 3.6 sono riportati alcuni esempi di immagini del dataset
segmentate.
28
CAPITOLO 3. RICONOSCIMENTO DELLO STATO DELLE MANI
Immagine
a colori
Immagine di
profondit
Sogliatura
Maschera
binaria
&
Immagine priva
del background
Cropping
Immagine
segmentata
Immagine
scala di grigi
D
Figura 3.5: Schema del processo di segmentazione: le immagini di profondit`a
sono sogliate con un valore pari a D+10 cm dove D `e la profondit`a alla quale
si trovava la mano nello spazio 3D (codicata nel nome del le) mentre il va-
lore 10 cm `e stato scelto considerando che una mano rientra sucientemente
in questo spazio. Con la sogliatura si ottiene una maschera binaria, la quale
`e combinata con limmagine della mano in scala di grigi per rimuovere lo
sfondo.
3.3 Estrazione feature
Per realizzare il classicatore `e necessario estrarre da ciascuna immagine un
insieme di feature per ottenere una descrizione compatta. Le feature di una
immagine costituiscono le informazioni principali associate allimmagine stes-
sa grazie alle quali `e possibile addestrare il classicatore per discriminare fra
immagini di mani aperte e chiuse. Il classicatore impara cio`e a classicare
le immagini in base al valore delle feature ad esse associate. La bont`a del
classicatore, ovvero la capacit` a del modello di classicare correttamente, di-
29
CAPITOLO 3. RICONOSCIMENTO DELLO STATO DELLE MANI
Figura 3.6: Esempi di immagini segmentate.
pende dalla capacit`a delle feature di rappresentare la dierenza fra gli stati.
Per questo lavoro di tesi sono state valutate le seguenti feature:
Momenti di HU;
SIFT;
SURF.
3.3.1 Momenti di Hu
I momenti sono feature molto semplici da calcolare che danno informazioni
sulla forma degli oggetti. I momenti di Hu [4] sono 7 particolari momenti
invarianti alla traslazione, alla variazione di scala e alla rotazione. Utilizzando
questo insieme di feature, per ogni immagine del dataset `e stato estratto un
vettore di 7 elementi (7 momenti di Hu).
3.3.2 SIFT (Scale Invariant Feature Trasform)
`
E un algoritmo molto utilizzato in computer vision per rilevare e descrivere
propriet` a locali nelle immagini. Le eature SIFT sono invarianti alla lumi-
nosit` a, alla rotazione e alla variazione di scala. Lalgoritmo [6] consiste nel
determinare un insieme di punti di interesse, detti keypoint, in corrisponden-
za dei quali sono calcolati i descrittori SIFT, ciascuno costituito da un array
di 128 elementi.
Per questo lavoro non abbiamo estratto i keypoint dalle immagini del data-
set perche a ciascuna immagine deve essere associato un array dello stesso
30
CAPITOLO 3. RICONOSCIMENTO DELLO STATO DELLE MANI
numero di elementi. Pertanto abbiamo solo calcolato il descrittore SIFT in
specici punti. Per ogni immagine di dimensione m n abbiamo utilizzato
come keypoint il punto centrale (

m
2

n
2

) e abbiamo calcolato il descrittore


SIFT allinterno di una patch di dimensione r r con r = min(m, n) posta
al centro dellimmagine, come mostrato in gura 3.7.
Figura 3.7: Estrazione del descrittore nella patch centrata.
3.3.3 SURF (Speeded Up Robust Features)
`
E un altro descrittore locale [2] invariante alla scala e alla rotazione molto
veloce da calcolare (a dierenza di altri descrittori come SIFT). Come per
SIFT, lalgoritmo SURF calcola un descrittore in corrispondenza dei keypoint.
Nellalgoritmo originale ogni descrittore SURF `e costituito da un array di 64
elementi, anche se esiste una variante dellalgoritmo, che chiameremo SURF*,
che estrae invece array di 128 elementi.
Come per SIFT non abbiamo calcolato i keypoint ma soltanto il descrittore
in specici punti delle immagini. Diversamente da SIFT per` o non abbiamo
estratto il descrittore SURF solo in corrispondenza del keypoint centrale, ma
abbiamo considerato anche da una griglia densa di quattro e cinque keypoint.
SURF centrato
Abbiamo seguito lo stesso procedimento visto per SIFT calcolando il descrit-
tore allinterno di una patch r r centrata nellimmagine (di dimensione
mn) e di dimensione pari a r = min(m, n), come mostrato in gura 3.7.
31
CAPITOLO 3. RICONOSCIMENTO DELLO STATO DELLE MANI
Griglia di 4 SURF
Per calcolare la posizione dei keypoint allinterno della griglia partiamo dal-
lassunzione che ogni patch entro cui `e necessario calcolare il descrittore deve
avere la stessa dimensione e che le patch relative a keypoint adiacenti abbia-
no unintersezione del 50%. Consideriamo quindi unimmagine m n. Per
estrarre la griglia partiamo individuando la patch posizionata nel centro del-
limmagine (

m
2

n
2

) e di dimensione r r con r = min(m, n). Per estrarre


le sotto-patch in modo tale che siano della stessa dimensione e che abbiano
unintersezione del 50%, costruiamo una griglia 3 3: i keypoint sono dati
dalle intersezioni della griglia. Una volta individuati, per ciascuno di essi si
calcola un descrittore SURF di dimensione pari a
2
3
r (gura 3.8).
Figura 3.8: Estrazione della griglia di 4 SURF.
Griglia di 5 SURF
`
E realizzata a partire dalla griglia di 4 SURF vista in precedenza, con lag-
giunta di un ulteriore keypoint al centro di una patch della stessa dimensione
delle precedenti, come mostrato in gura 3.9.
32
CAPITOLO 3. RICONOSCIMENTO DELLO STATO DELLE MANI
Figura 3.9: Estrazione della griglia di 5 SURF.
3.4 Costruzione del modello
Il classicatore `e realizzato addestrando una macchina a vettori di supporto
SVM (Support Vector Machine) [7]. Una SVM `e un classicatore supervisio-
nato molto utilizzato per risolvere problemi di apprendimento. Laddestra-
mento del classicatore si ottiene fornendo a questo un insieme di esempi di
apprendimento detto training-set: ogni istanza dellinsieme contiene il valore
target, ovvero la classe cui si riferisce lesempio, e un array di feature che
costituisce lesempio da apprendere. SVM in base agli esempi di training co-
struisce un modello dei dati, ovvero una funzione capace di discriminare se
un esempio appartiene ad una classe oppure ad unaltra. Una volta costruito
il modello ne viene calcolata laccuratezza, determinando la classe di appar-
tenenza degli esempi di un altro insieme di dati (diverso dal training-set)
detto test-set. Per ciascun esempio il classicatore determina la classe alla
quale appartiene sfruttando il modello addestrato: alla ne viene determina-
ta laccuratezza complessiva del classicatore calcolando il numero di esempi
la cui classe `e predetta correttamente.
Formulazione Matematica
Consideriamo un training-set di l esempi di apprendimento, costituito da cop-
pie (x
i
, y
i
) dove x
i
R
n
rappresenta lesempio da apprendere e y
i
{1, 1}
letichetta che indica la classe alla quale appartiene lesempio. Lobiettivo di
33
CAPITOLO 3. RICONOSCIMENTO DELLO STATO DELLE MANI
SVM `e quello di risolvere il seguente problema di ottimizzazione vincolata:
min
w,b,
1
2
w
T
w +C
l

i=1

i
con i vincoli y
i
(x
T
(x
i
) + b) 1
i

i
0
La funzione : R
n
R
N
mappa gli esempi x
i
in uno spazio di dimensio-
ne N >> n (potenzialmente innita). La mappatura in realt` a non viene
mai calcolata in quanto al posto di risolvere il problema come espresso in
precedenza, viene risolto il problema duale:
min

1
2

T
Q e
T

con i vincoli y
T
= 0
0
i
C
dove C > 0 e Q = y
i
y
j
K(x
i
, x
j
) `e una matrice l l semi-denita positiva.
La funzione K(x
i
, x
j
) = (x
i
)
T
(x
j
) `e detta kernel. In letteratura sono
disponibili molti kernel utilizzabili a seconda del problema da trattare. Per
questo lavoro `e stato utilizzato il kernel RBF (Radial Basis Function):
K(x
i
, x
j
) = exp(||x
i
x
j
||
2
), > 0
Il processo di ottimizzazione consiste nel determinare liperpiano che meglio
separa i punti nello spazio suddividendoli in base alla classe di appartenen-
za. Il risultato del processo di ottimizzazione `e dato da un insieme di vettori

i
= 0 detti vettori di supporto che costituiscono il modello SVM insieme agli
esempi x
i
corrispondenti. I parametri C e ottimi sono ottenuti mediante la
cross-validazione sul training-set, variandoli su una griglia logaritmica (ov-
vero C = 2
5
, 2
4
, . . . , 2
15
, = 2
15
, 2
14
, . . . , 2
6
): la coppia ottima C

`e
quella con la quale si ottiene il minor errore di classicazione e viene utiliz-
zata per addestrare il modello sul training-set.
Nel nostro caso il classicatore `e un classicatore binario, dato che le classi
che deve discriminare sono due e sono mano aperta e mano chiusa. Ogni
esempio fornito a SVM `e quindi costituito da una coppia etichetta-valore in
34
CAPITOLO 3. RICONOSCIMENTO DELLO STATO DELLE MANI
cui letichetta `e uguale a 1 se lesempio si riferisce ad unimmagine di mano
aperta oppure 0 se si riferisce ad unimmagine di mano chiusa mentre il
valore `e dato dallarray di feature estratto con una delle tecniche viste nella
precedente sezione.
3.4.1 Scelta del descrittore
Sono stati realizzati numerosi esperimenti per determinare la migliore con-
gurazione di feature da utilizzare per la realizzazione del classicatore, uti-
lizzando un sottoinsieme del dataset costituito da tre soggetti S1, S2 e S3.
Ciascun test consiste nelladdestrare un classicatore SVM con kernel RBF
utilizzando come training-set le immagini appartenenti a due soggetti, deter-
minando cos` un modello la cui accuratezza `e testata utilizzando le immagini
appartenenti allaltro soggetto come mostrato in tabella 3.2.
TEST TRAINING-SET TEST-SET
T1 S1+S2 S3
T2 S1+S3 S2
T3 S2+S3 S1
Tabella 3.2: Test
Per ciascun criterio di estrazione delle feature sono stati condotti 45 test,
suddividendo ulteriormente il dataset in base alla distanza dal sensore e
distinguendo tra mano destra e sinistra. I test sono stati condotti con la
libreria open source libSVM [3], determinando i parametri C e ottimi per
ciascun modello mediante una 5-fold cross-validation. Nelle gure seguenti
sono riportati i risultati dei test, da cui possiamo fare alcune considerazioni:
i momenti di Hu (gura 3.10) non sono un buon descrittore per lo stato
della mano.
`
E vero infatti che la forma di una mano aperta `e molto
diversa da quella di una mano chiusa, ma questo non `e sempre vero se
si considera la rotazione della mano e la sua distanza dal sensore ed
infatti i risultati ottenuti con questo descrittore sono molto scadenti;
35
CAPITOLO 3. RICONOSCIMENTO DELLO STATO DELLE MANI
SIFT (gura 3.11) ha dato dei risultati decisamente migliori rispetto
ai momenti di Hu, ma comunque inferiori a quelli ottenuti utilizzando
SURF sia nella versione base con array di 64 elementi (gura 3.12)
che, soprattutto, nella sua versione con array di 128 elementi (gura
3.13). Linvarianza alla luminosit`a del descrittore SIFT risulta essere
uno svantaggio per questo problema in quanto nella discriminazione tra
mano aperta e mano chiusa le ombre che si creano nelle immagini delle
mani giocano un ruolo chiave per la classicazione. Per questo motivo
non si `e ritenuto opportuno eettuare dei test utilizzando griglie di
SIFT ma abbiamo eettuato solo test utilizzando griglie di SURF;
i risultati ottenuti utilizzando le griglie di SURF (gure 3.14, 3.15, 3.16,
3.17) sono i migliori, in particolare il miglior descrittore risulta essere
quello costituito dalla griglia di 5 SURF* nella versione a 128 feature,
con una lunghezza complessiva del descrittore di 5x128 = 640 elementi;
eettuare i test al variare della distanza dal sensore `e stato molto utile
per avere unidea di come varia laccuratezza in base alla profondit`a;
separando invece i dataset in base alle mani si sperava in un forte
miglioramento dellaccuratezza media, che invece non si `e realizzato.
I test sono quindi serviti per determinare quale descrittore utilizzare per
implementare il detector di posa delle mani.
36
CAPITOLO 3. RICONOSCIMENTO DELLO STATO DELLE MANI
Mano = entrambe Mano = destra Mano = sinistra
Distanza = tutte Distanza = tutte Distanza = tutte
TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA
T1 47,57%
56,00%
T1 58,42%
60,34%
T1 57,93%
58,48% T2 63,53% T2 62,82% T2 60,16%
T3 56,89% T3 59,78% T3 57,36%
Mano = entrambe Mano = destra Mano = sinistra
Distanza = 1000-2000 cm. Distanza = 1000-2000 cm. Distanza = 1000-2000 cm.
TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA
T1 40,96%
48,22%
T1 39,14%
55,17%
T1 51,37%
56,38% T2 50,70% T2 66,36% T2 56,10%
T3 53,00% T3 60,00% T3 61,68%
Mano = entrambe Mano = destra Mano = sinistra
Distanza = 2000-2400 cm. Distanza = 2000-2400 cm. Distanza = 2000-2400 cm.
TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA
T1 55,52%
62,51%
T1 62,00%
65,09%
T1 57,36%
64,61% T2 67,39% T2 64,46% T2 71,68%
T3 64,62% T3 68,80% T3 64,80%
Mano = entrambe Mano = destra Mano = sinistra
Distanza = 2400-2700 cm. Distanza = 2400-2700 cm. Distanza = 2400-2700 cm.
TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA
T1 81,25%
68,34%
T1 61,00%
63,54%
T1 67,82%
63,07% T2 59,42% T2 70,00% T2 62,40%
T3 64,35% T3 59,62% T3 59,00%
Mano = entrambe Mano = destra Mano = sinistra
Distanza = 2700-3000 cm. Distanza = 2700-3000 cm. Distanza = 2700-3000 cm.
TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA
T1 69,30%
58,08%
T1 63,41%
57,15%
T1 67,82%
57,10% T2 50,35% T2 50,37% T2 51,47%
T3 54,60% T3 57,66% T3 52,00%
Momenti di Hu (7 features)
Figura 3.10: Risultati Momenti di Hu (7 features).
37
CAPITOLO 3. RICONOSCIMENTO DELLO STATO DELLE MANI
Mano = entrambe Mano = destra Mano = sinistra
Distanza = tutte Distanza = tutte Distanza = tutte
TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA
T1 83,53%
82,97%
T1 83,29%
84,43%
T1 85,51%
84,51% T2 84,54% T2 85,52% T2 85,53%
T3 80,85% T3 84,48% T3 82,48%
Mano = entrambe Mano = destra Mano = sinistra
Distanza = 1000-2000 cm. Distanza = 1000-2000 cm. Distanza = 1000-2000 cm.
TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA
T1 78,38%
80,33%
T1 73,39%
80,98%
T1 79,00%
79,11% T2 78,05% T2 83,94% T2 71,28%
T3 84,57% T3 85,62% T3 87,04%
Mano = entrambe Mano = destra Mano = sinistra
Distanza = 2000-2400 cm. Distanza = 2000-2400 cm. Distanza = 2000-2400 cm.
TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA
T1 76,95%
80,11%
T1 79,31%
74,09%
T1 67,48%
79,01% T2 86,38% T2 77,11% T2 84,96%
T3 77,00% T3 65,84% T3 84,59%
Mano = entrambe Mano = destra Mano = sinistra
Distanza = 2400-2700 cm. Distanza = 2400-2700 cm. Distanza = 2400-2700 cm.
TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA
T1 85,00%
74,92%
T1 100,00%
76,38%
T1 70,21%
64,40% T2 76,68% T2 73,40% T2 55,00%
T3 63,08% T3 55,75% T3 68,00%
Mano = entrambe Mano = destra Mano = sinistra
Distanza = 2400-2700 cm. Distanza = 2400-2700 cm. Distanza = 2400-2700 cm.
TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA
T1 90,29%
80,86%
T1 96,55%
79,82%
T1 72,53%
77,88% T2 77,35% T2 69,63% T2 88,02%
T3 74,95% T3 73,29% T3 73,10%
1 SIFT (128 features)
Figura 3.11: Risultati 1 SIFT (128 features).
38
CAPITOLO 3. RICONOSCIMENTO DELLO STATO DELLE MANI
Mano = entrambe Mano = destra Mano = sinistra
Distanza = tutte Distanza = tutte Distanza = tutte
TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA
T1 87,76%
83,63%
T1 89,47%
86,59%
T1 83,14%
84,19% T2 84,66% T2 87,67% T2 85,96%
T3 78,47% T3 82,63% T3 83,47%
Mano = entrambe Mano = destra Mano = sinistra
Distanza = 1000-2000 cm. Distanza = 1000-2000 cm. Distanza = 1000-2000 cm.
TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA
T1 77,59%
80,05%
T1 80,88%
83,88%
T1 68,39%
71,70% T2 78,30% T2 82,32% T2 65,54%
T3 84,26% T3 88,44% T3 81,16%
Mano = entrambe Mano = destra Mano = sinistra
Distanza = 2000-2400 cm. Distanza = 2000-2400 cm. Distanza = 2000-2400 cm.
TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA
T1 68,18%
75,68%
T1 82,07%
78,45%
T1 66,87%
70,88% T2 83,51% T2 87,35% T2 76,11%
T3 75,36% T3 65,94% T3 69,67%
Mano = entrambe Mano = destra Mano = sinistra
Distanza = 2400-2700 cm. Distanza = 2400-2700 cm. Distanza = 2400-2700 cm.
TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA
T1 81,25%
74,02%
T1 90,91%
75,09%
T1 65,96%
69,43% T2 79,82% T2 78,72% T2 75,97%
T3 61,00% T3 55,63% T3 66,36%
Mano = entrambe Mano = destra Mano = sinistra
Distanza = 2700-3000 cm. Distanza = 2700-3000 cm. Distanza = 2700-3000 cm.
TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA
T1 90,75%
75,33%
T1 85,44%
74,14%
T1 66,48%
71,56% T2 71,17% T2 71,11% T2 78,44%
T3 64,07% T3 65,87% T3 69,75%
1 SURF (1x64 features)
Figura 3.12: Risultati 1 SURF (64 features).
39
CAPITOLO 3. RICONOSCIMENTO DELLO STATO DELLE MANI
Mano = entrambe Mano = destra Mano = sinistra
Distanza = tutte Distanza = tutte Distanza = tutte
TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA
T1 88,77%
86,92%
T1 91,16%
87,88%
T1 86,03%
86,15% T2 87,00% T2 87,28% T2 87,66%
T3 85,00% T3 85,21% T3 84,77%
Mano = entrambe Mano = destra Mano = sinistra
Distanza = 1000-2000 cm. Distanza = 1000-2000 cm. Distanza = 1000-2000 cm.
TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA
T1 79,84%
84,86%
T1 78,81%
85,23%
T1 70,03%
75,46% T2 85,15% T2 83,33% T2 70,61%
T3 89,58% T3 93,55% T3 85,74%
Mano = entrambe Mano = destra Mano = sinistra
Distanza = 2000-2400 cm. Distanza = 2000-2400 cm. Distanza = 2000-2400 cm.
TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA
T1 66,56%
75,10%
T1 82,76%
81,64%
T1 76,07%
79,79% T2 86,34% T2 92,17% T2 82,30%
T3 72,40% T3 70,00% T3 81,00%
Mano = entrambe Mano = destra Mano = sinistra
Distanza = 2400-2700 cm. Distanza = 2400-2700 cm. Distanza = 2400-2700 cm.
TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA
T1 86,25%
78,32%
T1 96,97%
80,97%
T1 74,47%
75,11% T2 85,20% T2 87,23% T2 80,62%
T3 63,50% T3 58,70% T3 70,25%
Mano = entrambe Mano = destra Mano = sinistra
Distanza = 2700-3000 cm. Distanza = 2700-3000 cm. Distanza = 2700-3000 cm.
TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA
T1 86,46%
76,64%
T1 96,55%
79,42%
T1 76,37%
74,54% T2 74,83% T2 73,33% T2 79,64%
T3 68,63% T3 68,38% T3 67,61%
1 SURF* (1x128 features)
Figura 3.13: Risultati 1 SURF* (128 features).
40
CAPITOLO 3. RICONOSCIMENTO DELLO STATO DELLE MANI
Mano = entrambe Mano = destra Mano = sinistra
Distanza = tutte Distanza = tutte Distanza = tutte
TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA
T1 88,96%
86,12%
T1 91,40%
88,18%
T1 83,93%
84,96% T2 86,68% T2 87,00% T2 86,38%
T3 82,73% T3 86,13% T3 84,57%
Mano = entrambe Mano = destra Mano = sinistra
Distanza = 1000-2000 cm. Distanza = 1000-2000 cm. Distanza = 1000-2000 cm.
TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA
T1 84,48%
84,94%
T1 87,34%
88,27%
T1 73,84%
78,13% T2 83,76% T2 84,55% T2 78,00%
T3 86,58% T3 92,92% T3 82,54%
Mano = entrambe Mano = destra Mano = sinistra
Distanza = 2000-2400 cm. Distanza = 2000-2400 cm. Distanza = 2000-2400 cm.
TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA
T1 79,55%
83,03%
T1 84,83%
84,02%
T1 87,73%
83,76% T2 88,53% T2 93,98% T2 77,88%
T3 81,00% T3 73,25% T3 85,67%
Mano = entrambe Mano = destra Mano = sinistra
Distanza = 2400-2700 cm. Distanza = 2400-2700 cm. Distanza = 2400-2700 cm.
TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA
T1 96,25%
77,66%
T1 93,94%
78,54%
T1 95,74%
77,68% T2 75,78% T2 86,17% T2 75,19%
T3 60,96% T3 55,52% T3 62,10%
Mano = entrambe Mano = destra Mano = sinistra
Distanza = 2700-3000 cm. Distanza = 2700-3000 cm. Distanza = 2700-3000 cm.
TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA
T1 92,33%
78,88%
T1 100,00%
79,64%
T1 86,81%
78,51% T2 75,74% T2 71,85% T2 83,23%
T3 68,57% T3 67,07% T3 65,48%
4 SURF (4x64 features)
Figura 3.14: Risultati 4 SURF (256 features).
41
CAPITOLO 3. RICONOSCIMENTO DELLO STATO DELLE MANI
Mano = entrambe Mano = destra Mano = sinistra
Distanza = tutte Distanza = tutte Distanza = tutte
TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA
T1 88,09%
86,79%
T1 90,80%
88,37%
T1 82,34%
85,96% T2 88,42% T2 89,24% T2 88,51%
T3 83,86% T3 85,06% T3 87,04%
Mano = entrambe Mano = destra Mano = sinistra
Distanza = 1000-2000 cm. Distanza = 1000-2000 cm. Distanza = 1000-2000 cm.
TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA
T1 82,23%
86,20%
T1 87,86%
88,92%
T1 72,02%
79,61% T2 87,31% T2 85,98% T2 81,42%
T3 89,06% T3 92,92% T3 85,39%
Mano = entrambe Mano = destra Mano = sinistra
Distanza = 2000-2400 cm. Distanza = 2000-2400 cm. Distanza = 2000-2400 cm.
TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA
T1 80,84%
82,46%
T1 84,14%
84,58%
T1 84,66%
83,69% T2 87,81% T2 94,58% T2 79,65%
T3 78,72% T3 75,02% T3 86,76%
Mano = entrambe Mano = destra Mano = sinistra
Distanza = 2400-2700 cm. Distanza = 2400-2700 cm. Distanza = 2400-2700 cm.
TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA
T1 92,50%
79,22%
T1 96,97%
81,64%
T1 91,49%
79,45% T2 82,51% T2 92,55% T2 81,40%
T3 62,65% T3 55,40% T3 65,46%
Mano = entrambe Mano = destra Mano = sinistra
Distanza = 2700-3000 cm. Distanza = 2700-3000 cm. Distanza = 2700-3000 cm.
TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA
T1 92,78%
79,17%
T1 99,23%
79,88%
T1 86,26%
80,41% T2 T2 69,63% T2 85,63%
T3 65,55% T3 70,78% T3 69,34%
4 SURF* (4x128 features)
Figura 3.15: Risultati 4 SURF* (512 features).
42
CAPITOLO 3. RICONOSCIMENTO DELLO STATO DELLE MANI
Mano = entrambe Mano = destra Mano = sinistra
Distanza = tutte Distanza = tutte Distanza = tutte
TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA
T1 90,68%
86,96%
T1 90,90%
87,85%
T1 83,67%
85,04% T2 87,67% T2 88,35% T2 86,82%
T3 82,52% T3 84,29% T3 84,62%
Mano = entrambe Mano = destra Mano = sinistra
Distanza = 1000-2000 cm. Distanza = 1000-2000 cm. Distanza = 1000-2000 cm.
TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA
T1 83,11%
86,41%
T1 88,11%
89,42%
T1 75,34%
81,12% T2 87,88% T2 87,96% T2 82,65%
T3 88,23% T3 92,20% T3 85,38%
Mano = entrambe Mano = destra Mano = sinistra
Distanza = 2000-2400 cm. Distanza = 2000-2400 cm. Distanza = 2000-2400 cm.
TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA
T1 82,35%
84,05%
T1 80,56%
81,12%
T1 86,42%
82,50% T2 90,80% T2 97,53% T2 78,18%
T3 79,00% T3 72,16% T3 82,91%
Mano = entrambe Mano = destra Mano = sinistra
Distanza = 2400-2700 cm. Distanza = 2400-2700 cm. Distanza = 2400-2700 cm.
TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA
T1 96,05%
78,85%
T1 100,00%
80,66%
T1 93,18%
76,46% T2 79,00% T2 86,81% T2 76,56%
T3 61,50% T3 55,17% T3 59,63%
Mano = entrambe Mano = destra Mano = sinistra
Distanza = 2700-3000 cm. Distanza = 2700-3000 cm. Distanza = 2700-3000 cm.
TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA
T1 92,33%
79,62%
T1 98,47%
79,15%
T1 86,26%
79,07% T2 77,29% T2 70,00% T2 82,53%
T3 69,23% T3 68,98% T3 68,43%
5 SURF (5x64 features)
Figura 3.16: Risultati 5 SURF (320 features).
43
CAPITOLO 3. RICONOSCIMENTO DELLO STATO DELLE MANI
Mano = entrambe Mano = destra Mano = sinistra
Distanza = tutte Distanza = tutte Distanza = tutte
TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA
T1 90,17%
87,81%
T1 93,57%
88,83%
T1 81,80%
85,27% T2 90,00% T2 89,54% T2 89,11%
T3 83,27% T3 83,37% T3 84,90%
Mano = entrambe Mano = destra Mano = sinistra
Distanza = 1000-2000 cm. Distanza = 1000-2000 cm. Distanza = 1000-2000 cm.
TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA
T1 83,78%
86,52%
T1 88,63%
89,67%
T1 73,70%
82,33% T2 87,76% T2 88,98% T2 88,78%
T3 88,03% T3 91,40% T3 84,52%
Mano = entrambe Mano = destra Mano = sinistra
Distanza = 2000-2400 cm. Distanza = 2000-2400 cm. Distanza = 2000-2400 cm.
TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA
T1 80,72%
82,85%
T1 82,00%
82,33%
T1 83,30%
80,47% T2 87,13% T2 90,74% T2 77,27%
T3 80,69% T3 69,89% T3 80,83%
Mano = entrambe Mano = destra Mano = sinistra
Distanza = 2400-2700 cm. Distanza = 2400-2700 cm. Distanza = 2400-2700 cm.
TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA
T1 98,68%
81,49%
T1 96,88%
80,39%
T1 100,00%
80,60% T2 86,30% T2 89,01% T2 80,47%
T3 59,50% T3 55,29% T3 61,32%
Mano = entrambe Mano = destra Mano = sinistra
Distanza = 2700-3000 cm. Distanza = 2700-3000 cm. Distanza = 2700-3000 cm.
TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA TEST ACC. ACC. MEDIA
T1 93,00%
80,71%
T1 96,17%
80,88%
T1 84,62%
80,31% T2 78,44% T2 76,78% T2 85,54%
T3 70,70% T3 69,70% T3 70,76%
5 SURF* (5x128 features)
Figura 3.17: Risultati 5 SURF* (640 features).
44
Capitolo 4
Realizzazione del detector
I
n questo capitolo `e descritta la struttura del sistema capace di rico-
noscere lo stato delle mani degli utenti presenti nella scena, la cui
ecacia `e stata incrementata utilizzando un ltro di Kalman per eli-
minare le predizioni di classicazione errate.
Lo scopo della tesi consiste nella realizzazione di un sistema capace di rile-
vare in real-time lo stato delle mani degli utenti presenti nella scena, la cui
posizione `e individuata dal sistema di localizzazione e tracciamento. Nel ca-
pitolo precedente abbiamo visto che il miglior descrittore per rappresentare
lo stato della mano `e realizzato mediante un array di 640 feature, derivato
dal calcolo della griglia di 5 SURF*. Per individuare lo stato delle mani degli
utenti `e quindi necessario realizzare un detector, la cui struttura `e mostrata
in gura 4.1.
4.1 Costruzione del modello SVM
Utilizzando tutti i dati del dataset (circa 31000 esempi) abbiamo addestra-
to un classicatore SVM con kernel RBF, utilizzando la libreria libSVM.
Per la valutazione dei parametri SVM ottimi `e stata utilizzata una 5-fold
cross-validation che ha dato come risultato C = 8 e = 0.03125, con unac-
curatezza sul training-set del 97.82%.
45
CAPITOLO 4. REALIZZAZIONE DEL DETECTOR
Predizione
dello stato
Calcolo
descrittore
Modello SVM
Posizione della
mano nel frame
Stato della mano
"aperta" - "chiusa"
Estrazione immagini
della mano
Segmentazione
Estrazione feature
Figura 4.1: Schema del detector
Con questi parametri `e stato quindi addestrato il classicatore, che ha por-
tato alla denizione di un modello SVM con 8024 vettori di supporto. Lac-
curatezza del modello `e stata valutata con un test-set costituito da immagini
appartenenti ad un soggetto al di fuori degli otto che compongono il dataset,
ottenendo unaccuratezza del 97.97%.
4.2 Calcolo del descrittore
Ad ogni frame conosciamo la posizione delle mani degli utenti sia nellim-
magine di profondit` a che nellimmagine rgb. Per calcolare il descrittore
procediamo nello stesso modo visto nel precedente capitolo:
1. estrazione immagini della mano dal frame rgb e dal frame della mappa
di profondit`a;
2. calcolo dellimmagine segmentata (gura 3.5);
3. calcolo del descrittore dato dalla concatenazione di 5 SURF* (gura
3.9).
46
CAPITOLO 4. REALIZZAZIONE DEL DETECTOR
4.3 Predizione dello stato
Una volta calcolato il descrittore dellimmagine della mano di cui vogliamo
conoscere lo stato, utilizziamo il modello SVM per determinare se questa
`e aperta oppure chiusa: lo stato della mano `e funzione delloutput della
predizione di SVM. Utilizzando la libreria libSVM calcoliamo lo stato della
mano predetto dal classicatore, fornendo come input larray di 640 elementi
estratto dallimmagine segmentata: SVM restituisce lo stato predetto come
numero reale y: a valori di y > 0 corrisponde lo stato mano aperta, mentre
per valori di y < 0 corrisponde lo stato mano chiusa. Loutput di SVM
indica il grado di condenza della predizione: pi` u il valore si discosta dallo
zero, pi` u lo stato predetto ha una condenza elevata.
4.4 Robustezza del detector
Il detector realizzato con questo sistema a volte commette degli errori nel
determinare lo stato delle mani degli utenti. Pu`o capitare infatti che SVM
sbagli la predizione per qualche frame, ad esempio quando la mano dellu-
tente `e in uno stato semi-denito (ad esempio quando passa da uno stato
allaltro) oppure quando lutente muove le mani troppo velocemente. Infatti
muovendo le mani ad una velocit`a elevata si ottengono immagini rumorose la
cui conseguente segmentazione risulta sbagliata. In questi casi la predizione
di SVM pu`o risultare errata. Gli errori tuttavia sono poco frequenti, nel senso
che avvengono solo per pochi frame e in questi casi si registra che loutput di
SVM `e un valore molto vicino allo zero (basso grado di condenza). Tuttavia
la presenza di questi errori nel sistema comporta dei problemi quando questo
viene applicato in contesti di interazione naturale. Supponiamo ad esempio
di voler utilizzare il detector per realizzare uninterfaccia che permetta agli
utenti di aerrare alcuni contenuti digitali con la possibilit` a di trascinar-
li sullo schermo. Per realizzare il gesto dellaerrare lutente posiziona la
mano aperta sopra loggetto, chiudendola successivamente; mentre per tra-
scinarlo lutente deve mantenere la mano chiusa spostandosi nello schermo.
Se durante il trascinamento delloggetto il detector commette un errore
47
CAPITOLO 4. REALIZZAZIONE DEL DETECTOR
di predizione restituendo un valore positivo (mano aperta), lutente perde
il controllo delloggetto che deve essere nuovamente aerrato. Da questo
semplice esempio applicativo si capisce limportanza di dover correggere que-
sti errori. Per questo viene utilizzato un ltro di Kalman per inseguire
loutput di SVM cos` da eliminare le predizioni sbagliate.
4.4.1 Filtro di Kalman
Il ltro di Kalman [5] `e un ltro ricorsivo molto utilizzato nellambito dei
controlli automatici per valutare lo stato di sistemi dinamici soggetti ad errori
di misurazione dovuti a rumore e ad imprecisioni del modello del sistema.
Formulazione matematica
Consideriamo un processo a tempo discreto P e indichiamo con x R
n
il
suo stato e con u R
l
linsieme dei suoi ingressi. Lo stato del processo al
tempo k + 1 `e dato da:
x
k+1
= Ax
k
+ Bu
k
+w
k
dove A R
nn
lega lo stato attuale allo stato al tempo precedente, B R
nl
lega lo stato attuale agli ingressi e w
k
R
n
rappresenta il rumore di processo.
Lo stato viene stimato per mezzo di misurazioni z R
m
tali che:
z
k
= Hx
k
+v
k
dove H R
mn
lega le misurazioni allo stato del sistema e v
k
R
m
rappre-
senta il rumore di misurazione.
Sia x

k
R
n
la stima dello stato a priori, ovvero dello stato al passo k prima
di eettuare la misurazione e conoscendo gli stati precedenti x
0
. . . x
k1
e sia
x
k
R
n
la stima dello stato a posteriori, ovvero dello stato una volta noto
z
k
. Deniamo quindi errore di stima a priori il vettore:
e

k
= x
k
x

k
48
CAPITOLO 4. REALIZZAZIONE DEL DETECTOR
ed errore di stima a posteriori il vettore:
e
k
= x
k
x
k
Inoltre deniamo la covarianza dellerrore stimata a priori come:
P

k
= E[e

k
e

T
k
]
e la covarianza dellerrore stimata a posteriori come:
P
k
= E[e
k
e
T
k
]
Lidea del ltro di Kalman `e quella di esprimere la stima a posteriori x
k
come combinazione lineare tra la stima a priori x

k
e la dierenza pesata tra
la misurazione z
k
e una sua previsione H
k
x

k
, ovvero:
x
k
= x

k
+K
k
(z
k
Hx

k
)
La quantit` a (z
k
Hx

k
) esprime la dierenza tra la previsione di misurazione
e la misurazione reale: se tale dierenza `e nulla signica che c`e un totale
accordo tra la stima e la misurazione. La matrice K
k
R
nm
`e detta guada-
gno di Kalman ed `e determinata in modo tale da minimizzare la covarianza
dellerrore a posteriori P
k
. Una forma per esprimere il guadagno di Kalman
`e data da:
K
k
=
P

k
H
T
HP

k
H
T
+R
k
dove R
k
`e la covarianza dellerrore di misurazione. Si osserva che quando
R
k
0 la stima dello stato a posteriori x
k
`e funzione solo della misurazio-
ne z
k
, ovvero la misurazione `e considerata pi` u attendibile. Al contrario
quando P

k
0 la stima dello stato a posteriori dipende solo dalla stima
dello stato a priori, ovvero la misurazione `e considerata meno attendibile.
In altre parole quando la misurazione si discosta molto dal valore predetto,
questa inuenza di meno lo stato del sistema rispetto a quando il suo scosta-
mento `e piccolo: in questo modo il ltro di Kalman `e in grado di eliminare
misurazioni sbagliate.
49
CAPITOLO 4. REALIZZAZIONE DEL DETECTOR
Algoritmo di aggiornamento del ltro
Il processo di aggiornamento del ltro di Kalman si divide in due fasi ovvero
predizione e correzione. Durante la fase di predizione viene stimato lo sta-
to del sistema, mentre durante la fase di correzione lo stato viene corretto
pesando il valore della misurazione come mostrato in gura 4.2.
Misurazione
PREDIZIONE
Stima dello stato del sistema
CORREZIONE
Correzione dello stato del sistema
Figura 4.2: Aggiornamento del ltro di Kalman.
4.4.2 Utilizzo del ltro di Kalman
Il ltro di Kalman `e quindi in grado di eliminare le predizioni SVM sba-
gliate ed `e posto in cascata alloutput di SVM come mostrato in gura 4.3.
Per ogni descrittore estratto si calcola la predizione dello stato della mano
con SVM e con il valore restituito si aggiorna lo stato del ltro di Kalman.
Diversamente da prima lo stato della mano non `e funzione diretta dellout-
put del classicatore ma delloutput del ltro di Kalman: in questo modo `e
possibile eliminare eventuali predizioni sbagliate rendendo il detector molto
pi` u robusto. Supponiamo ad esempio che la mano si trovi nello stato mano
aperta e che SVM restituisca invece in uscita un valore negativo, anche se
molto prossimo allo zero. Dato che lo stato di partenza `e un valore positivo,
il valore dello stato predetto dal ltro sar`a con buona probabilit` a un valore
positivo e pertanto il detector non fallir` a la predizione dello stato: il ltro
di Kalman elimina la predizione SVM sbagliata. Consideriamo ora il caso in
cui lutente chiuda realmente la mano, passando allo stato mano chiusa.
50
CAPITOLO 4. REALIZZAZIONE DEL DETECTOR
Predizione SVM
Aggiornamento ltro
Output ltro
Predizione
dello stato
Calcolo
descrittore
Posizione della
mano nel frame
Stato della mano
"aperta" - "chiusa"
Estrazione immagini
della mano
Segmentazione
Estrazione feature
Figura 4.3: Schema del detector utilizzando il ltro di Kalman.
Supponiamo che SVM restituisca un valore (corretto) negativo: per via del
ltro di Kalman loutput del detector per alcuni frame continuer`a ad essere
positivo per poi convergere comunque ad un valore negativo.
Il ltro di Kalman introduce quindi un po di inerzia al sistema risultante,
ma questo migliora la robustezza del detector dato che riesce ad eliminare gli
errori.
`
E possibile modicare il comportamento del detector variando la co-
varianza dellerrore di misurazione. Generalmente in contesti di interazione
naturale gli utenti utilizzano le applicazioni muovendosi non troppo veloce-
mente (come nellesempio visto in precedenza): in questi casi `e necessario
che il detector sia molto robusto (e quindi meno reattivo). Al contrario, nei
videogiochi gli utenti si muovono molto pi` u freneticamente e quindi `e ne-
cessario che il detector sia reattivo, pagando per`o la reattivit` a in termini di
peggioramento della robustezza.
51
Capitolo 5
Risultati sperimentali
I
n questo capitolo sono presentati dei risultati sperimentali per valu-
tare lecienza del sistema; in particolare viene valutata linvarianza
dellaccuratezza del classicatore al variare della distanza dal sensore,
lutilizzo del ltro di Kalman per eliminare predizioni errate di SVM
e le prestazioni temporali al variare del numero di utenti.
5.1 Valutazione dellaccuratezza al variare del-
la distanza dal sensore
Come mostrato nel capitolo precedente, la bont` a del modello SVM `e stata
valutata sul test-set ottenendo unaccuratezza del 97.97%. Per dimostrare
che tale valore varia di poco con la distanza dal sensore, abbiamo suddiviso le
immagini dellinsieme di test in quattro sotto-insiemi in base alla profondit` a
alla quale sono state salvate durante il processo di acquisizione. Il test-set `e
stato quindi suddiviso in base ai seguenti intervalli di distanze:
(a) da 1000 a 2000 cm;
(b) da 2000 a 2400 cm;
(c) da 2400 a 2700 cm;
(d) da 2700 a 3000 cm.
52
CAPITOLO 5. RISULTATI SPERIMENTALI
Per ciascun sotto-insieme del test-set `e stata calcolata laccuratezza del clas-
sicatore utilizzando la libreria libSVM. I risultati ottenuti mostrano che
laccuratezza sostanzialmente resta invariata allontanandosi dal sensore, di-
mostrando quindi la bont` a del modello addestrato, come si pu`o vedere in
gura 5.1.
0,80
0,82
0,84
0,86
0,88
0,90
0,92
0,94
0,96
0,98
1,00
1000-2000 cm.! 2000-2400 cm.! 2400-2700 cm.! 2700-3000 cm.!
A
c
c
u
r
a
t
e
z
z
a
!
Distanza dal sensore!
Accuratezza del classicatore!
Figura 5.1: Laccuratezza del classicatore resta sostanzialmente invariata
rispetto alla distanza dal sensore.
5.2 Valutazione della robustezza del detector
La robustezza del detector `e valutata mediante degli esperimenti condotti in
real-time da un utente non appartenente al training-set. In ciascun esperi-
mento lutente ha eseguito il medesimo task, disegnando nello spazio delle
circonferenze, prima con le mani aperte e poi con le mani chiuse muovendosi
allinterno della scena a dierenti distanze dal sensore. Per ogni test `e stata
valutata la robustezza del detector progettato e la capacit` a del ltro di Kal-
man di eliminare gli errori nelle predizioni SVM, considerando come errore
di misura il valore 10
3
. I risultati di ciascun esperimento sono stati raccolti
53
CAPITOLO 5. RISULTATI SPERIMENTALI
in graci: per ogni frame contenente limmagine della mano estratta durante
il processo di acquisizione `e riportata la condenza della classicazione e la
condenza ltrata con Kalman, come mostrato in gura 5.2. I punti blu del
graco al di sopra dellasse delle ascisse indicano che il classicatore ha rile-
vato la mano come aperta, mentre i punti al di sotto di tale asse indicano
che il classicatore ha rilevato la mano come chiusa. La linea rossa rap-
presenta la condenza sogliata ovvero lo stato predetto dal detector: anche
il questo caso lasse delle ascisse discrimina fra mano aperta e mano chiusa.
1! 2! 3! 4! 5! 6! 7! 8! 9! 10! 11! 12! 13! 14! 15! 16! 17! 18! 19! 20!
Frame!
Classicazione immagini di una sequenza mano aperta - mano chiusa!
Condenza!
Condenza ltrata!
Figura 5.2: Graco di una sequenza mano aperta - mano chiusa in cui sono
riportati i valori della condenza del classicatore con e senza ltraggio.
Nei graci che raccolgono i risultati dei test sono indicati i frame che si
riferiscono ad immagini di mani aperte e quelli che si riferiscono ad immagi-
ni di mani chiuse cos` da poter individuare gli errori del classicatore e del
detector. Il valore di verit` a dei frame `e indicato con dei box gialli: punti al
di fuori dei box costituiscono errori del classicatore oppure del detector; per
alcuni di questi sono riportati i frame che sono stati predetti in modo errato.
54
CAPITOLO 5. RISULTATI SPERIMENTALI
Nel graco di gura 5.3 si nota come la presenza del ltro di Kalman renda
il sistema robusto, evitando errori di predizione con condenza prossima
allo zero. Analizzando i frame che generano gli errori, `e possibile osservare
che questi sono determinati da problematiche dierenti. Sia il frame (a)
che il frame (b) hanno un valore di condenza molto basso, anche se per
motivi dierenti: infatti il frame (a) `e unimmagine a basso contrasto che
viene quindi mal interpretata dal descrittore che invece discrimina molto in
base alla texture della mano, mentre il frame (b) contiene anche un errore
dovuto segmentazione dellimmagine della mano. Questo errore `e dovuto alla
mancanza di sincronizzazione tra i ussi provenienti dal sensore di profondit` a
e dal sensore RGB: quando lutente muove la mano troppo velocemente si
crea un disallineamento tra le immagini, che determina un errore nel calcolo
della maschera e quindi nella segmentazione. Gli errori dei frame (c), (d) e
(e) sono generati per lo stesso motivo: in particolare nel frame (c) si nota
come lerrore nella segmentazione porta ad includere nel frame anche parte
della scena, con un conseguente errore nella predizione dello stato.
1! 11! 21! 31! 41! 51! 61! 71! 81! 91! 101! 111! 121! 131! 141! 151! 161! 171! 181!
Frame!
Classicazione immagini mano destra alla distanza 1000-2000 cm.!
Condenza!
Condenza ltrata!
Mano aperta
Mano chiusa
(a) (b)
(c)
(d)
(e)
Figura 5.3: Risultati mano destra ad una distanza tra 1000 e 2000 cm.
55
CAPITOLO 5. RISULTATI SPERIMENTALI
Anche nellesempio di gura 5.4 si nota come il detector non fallisca mai
le predizioni dello stato delle mani, correggendo gli errori del classicatore
SVM. In particolare gli errori generati dai frame (a) e (b) sono dovuti al
basso contrasto delle immagini e a questi `e associato un output di SVM molto
prossimo allo zero. Il frame (c) determina invece un output di SVM positivo
per via di un evidente errore nella segmentazione del frame, dovuto alla
mancanza di sincronizzazione dei ussi e ad unelevata velocit`a di movimento
della mano: `e possibile infatti osservare come la maschera binaria sia molto
pi` u grande della dimensione eettiva della mano, segno che questultima si `e
spostata troppo velocemente.
1! 11! 21! 31! 41! 51! 61! 71! 81! 91! 101! 111! 121! 131! 141! 151!
Frame!
Classicazione immagini mano sinistra alla distanza 1000-2000 cm.!
Condenza!
Condenza ltrata!
Mano aperta
Mano chiusa
(a)
(b)
(c)
Figura 5.4: Risultati mano sinistra ad una distanza tra 1000 e 2000 cm.
Gli esempi delle gure 5.5 e 5.6 mostrano come il ltro di Kalman renda
il sistema robusto rispetto a predizioni errate con condenze molto basse. Al
solito gli errori sono dovuti al basso contrasto delle immagini e alla mancanza
di sincronizzazione tra i ussi.
56
CAPITOLO 5. RISULTATI SPERIMENTALI
1! 11! 21! 31! 41! 51! 61! 71! 81! 91! 101! 111! 121! 131! 141! 151! 161! 171! 181! 191!
Frame!
Classicazione immagini mano destra alla distanza 2000-2400 cm.!
Condenza!
Condenza ltrata!
Mano aperta
Mano chiusa
(a)
(b)
(c)
(d) (e)
Figura 5.5: Risultati mano destra ad una distanza tra 2000 e 2400 cm.
1! 11! 21! 31! 41! 51! 61! 71! 81! 91! 101! 111! 121! 131! 141! 151! 161! 171!
Frame!
Classicazione immagini mano sinistra alla distanza 2000-2400 cm.!
Condenza!
Condenza ltrata!
Mano aperta
Mano chiusa
(a)
(b)
Figura 5.6: Risultati mano sinistra ad una distanza tra 2000 e 2400 cm.
57
CAPITOLO 5. RISULTATI SPERIMENTALI
Lesempio di gura 5.7 mostra invece alcuni fallimenti del detector, in
cui il ltraggio non riesce comunque a risolvere le predizioni SVM errate. I
frame che generano gli errori (che nella gura sono riportati ingranditi per
permettere meglio la loro analisi) hanno quasi tutti un basso contrasto ed
evidenti errori di segmentazione. In particolare per il frame (e) anche il de-
tector fallisce la predizione: in questo caso la condenza del classicatore non
`e prossima allo zero ed `e seguente ad unaltra predizione errata anchessa con
un valore piuttosto positivo; in questo caso il ltro di Kalman con errore di
misurazione impostato al valore 10
3
non riesce ad eliminare questo errore
(nella sezione seguente sar` a mostrato come variando questo parametro `e pos-
sibile irrobustire il ltro).
1! 11! 21! 31! 41! 51! 61! 71! 81! 91! 101! 111! 121! 131! 141! 151! 161!
Frame!
Classicazione immagini mano destra alla distanza 2400-2700 cm.!
Condenza!
Condenza ltrata!
Mano aperta
Mano chiusa
(a) (b)
(c)
(d) (e)
Figura 5.7: Risultati mano destra ad una distanza tra 2400 e 2700 cm.
58
CAPITOLO 5. RISULTATI SPERIMENTALI
1! 11! 21! 31! 41! 51! 61! 71! 81! 91! 101! 111! 121! 131! 141! 151! 161! 171!
Frame!
Classicazione immagini mano sinistra alla distanza 2400-2700 cm.!
Condenza!
Condenza ltrata!
Mano aperta
Mano chiusa
(a)
(b)
(c)
(d)
Figura 5.8: Risultati mano sinistra ad una distanza tra 2400 e 2700 cm.
Inne nelle gure 5.9 e 5.10 sono riportati i risultati dei test eettuati
ad una distanza molto elevata dal sensore. In particolare nella gura 5.9 si
nota un fallimento del detector per il frame (e) la cui origine `e identica a
quella degli errori presenti in gura 5.7. Negli altri casi comunque `e bene
sottolineare che il detector corregge numerosi errori di predizione.
In conclusione `e possibile calcolare laccuratezza del classicatore e del
detector per valutare quanto la presenza del ltro di Kalman aumenti laccu-
ratezza complessiva del sistema. Con il classicatore (output SVM) si ottie-
ne unaccuratezza del 96.34%, mentre con il detector (classicatore ltrato)
laccuratezza sale al 98.95% aumentando cio`e del 2.6%, che `e un aumento
importante per i sistemi di interazione naturale.
59
CAPITOLO 5. RISULTATI SPERIMENTALI
1! 11! 21! 31! 41! 51! 61! 71! 81! 91! 101! 111! 121! 131! 141! 151! 161! 171!
Frame!
Classicazione immagini mano destra alla distanza 2700-3000 cm.!
Condenza!
Condenza ltrata!
Mano aperta
Mano chiusa
(a)
(b)
(c)
(d)
(e)
(f)
Figura 5.9: Risultati mano destra ad una distanza tra 2700 e 3000 cm.
1! 11! 21! 31! 41! 51! 61! 71! 81! 91! 101! 111! 121! 131! 141! 151! 161! 171! 181!
Frame!
Classicazione immagini mano sinistra alla distanza 2700-3000 cm.!
Condenza!
Condenza ltrata!
Mano aperta
Mano chiusa
(a)
(b)
(c)
(d)
Figura 5.10: Risultati mano sinistra ad una distanza tra 2700 e 3000 cm.
60
CAPITOLO 5. RISULTATI SPERIMENTALI
5.3 Valutazione dellinerzia del detector
Le prestazioni del detector riportate nella sezione precedente, sono state valu-
tate considerando il rumore di misurazione costante e pari a 10
3
. Variando
tale parametro `e possibile modicarle: aumentando il rumore di misurazione
si ottiene un sistema pi` u robusto ma meno reattivo, al contrario diminuendo
il rumore di misurazione si ottiene un sistema molto reattivo ma molto meno
robusto. Consideriamo il test della gura 5.7 in cui il detector commetteva
alcuni errori. Variando il rumore di misurazione `e possibile ottenere un detec-
tor molto pi` u robusto ma scarsamente reattivo, come mostrato in gura 5.11.
Considerando come errore di misurazione i valori 10
1
e 10
2
si ottengono
detector molto robusti nonostante la misurazione errata con alta conden-
za (come mostrato nel rettangolo). Viceversa per` o sono estremamente poco
reattivi, tanto che il passaggio dallo stato mano aperta allo stato mano
chiusa avviene dopo 5 e 10 frame rispetto al valore reale.
1! 11! 21! 31! 41! 51! 61! 71! 81! 91! 101! 111! 121! 131! 141! 151! 161!
Frame!
Inerzia del detector al variare dell'errore di misurazione!
Condenza!
Errore 10^-1!
Errore 10^-2!
Errore 10^-3!
Mano aperta
Mano chiusa
Figura 5.11: Aumentando lerrore di misurazione il detector risulta pi` u
robusto ma molto meno reattivo.
61
CAPITOLO 5. RISULTATI SPERIMENTALI
5.4 Valutazione delle prestazioni temporali
Sono state valutate inne le prestazioni temporali del sistema, calcolando i
tempi medi per lesecuzione di ciascun task che costituisce il sistema nel suo
complesso. In particolare sono stati valutati i tempi medi per:
localizzare le mani dellutente (localizzazione mediante il threshold
adattivo e lhand-tracker della libreria);
estrarre le immagini rgb e depth delle mani dellutente, compresa la
segmentazione e cropping;
calcolare il descrittore per ciascuna immagine (griglia di 5 SURF*);
determinare lo stato di ogni mano (calcolo accuratezza SVM e corre-
zione con ltro di Kalman).
Per valutare le prestazioni sono stati calcolati i tempi al variare del numero
di utenti che interagiscono simultanemente col sistema ottenendo i risultati
mostrati nel graco di gura 5.12.
0
0,02
0,04
0,06
0,08
0,1
0,12
0,14
0,16
0,18
0,2
1! 2! 3!
t
e
m
p
o

(
s
)
!
numero utenti!
Prestazionitemporali
Predizionedellostato
Calcolodescri7ore
Estrazioneesegmentazionemani
Localizzazionemani
Figura 5.12: I tempi medi complessivi aumentano con laumentare del numero
degli utenti che interagiscono col sistema.
62
CAPITOLO 5. RISULTATI SPERIMENTALI
Dal graco si nota come il tempo medio complessivo per lesecuzione di tutti i
task aumenti con laumentare del numero degli utenti coinvolti. In particolare
si osserva che i task per la localizzazione delle mani degli utenti e per il calcolo
del loro stato sono quelli che hanno un peso maggiore, al contrario invece dei
task per la segmentazione delle mani e lestrazione delle features.
63
Capitolo 6
Progetto di un sistema di
riconoscimento di gesti
Il sistema di riconoscimento di gesti progettato pu` o essere utilizzato per rea-
lizzare applicazioni di interazione naturale. Un esempio di applicazione pu`o
essere quello di uninterfaccia in cui lutente (o gli utenti) possono interagire
con degli oggetti digitali, ad esempio spostandoli allinterno di unarea pro-
iettata su una parete di grandi dimensioni. Per aerrare un oggetto basta
posizionare la mano aperta sopra di esso e quindi chiuderla; mantenendo la
mano chiusa `e possibile spostare loggetto nello schermo e rilasciarlo aprendo
la mano.
Figura 6.1: Esempio di interfaccia di interazione naturale
64
CAPITOLO 6. PROGETTO DI UN SISTEMA DI RICONOSCIMENTO DI GESTI
Per realizzare questa interfaccia `e possibile utilizzare il sistema che abbiamo
progettato. Infatti siamo in grado di determinare la posizione della mano
allinterno del piano immagine ed il suo stato: per rilevare che lutente ha
aerrato loggetto basta vericare che la mano sia chiusa, analogamente per
rilasciarlo basta vericare che la mano sia aperta; durante il suo trascina-
mento `e necessario vericare sempre che la mano continui ad essere chiusa.
La necessit` a di ltrare loutput di SVM `e quindi fondamentale per realizzare
al meglio lapplicazione: sarebbe fastidioso per lutente perdere il controllo
delloggetto durante il suo spostamento.
6.1 Protocollo TUIO
La maggior parte delle applicazioni di interazione naturale sono basate sul
protocollo TUIO [14]. TUIO `e un framework open-source che denisce sia un
protocollo che una API standard per linterazione con le superci multitouch.
Il protocollo TUIO permette la comunicazione tra il sistema di acquisizione
(basato sulla computer-vision) e lapplicazione stessa, come mostrato in gu-
ra 6.2. Lo scopo del protocollo `e quello di codicare i dati provenienti dalla
tracker application che rileva i gesti degli utenti sulla supercie, in modo tale
che siano utilizzabili dalla client application che li traduce i gesti in azioni
sullinterfaccia.
Figura 6.2: Protocollo TUIO
65
CAPITOLO 6. PROGETTO DI UN SISTEMA DI RICONOSCIMENTO DI GESTI
TUIO nasce come protocollo per interfacce multitouch siche come i tavoli
multimediali, ma pu` o essere utilizzato con qualsiasi altra interfaccia di intera-
zione. In particolare `e possibile legare il sistema progettato ad una qualunque
interfaccia progettata con lo standard TUIO, realizzando una TUIO tracker
application, che converte i segnali provenienti dal sistema di riconoscimento
di gesti progettato nello standard TUIO, inviando cos` alla TUIO client ap-
plication la posizione delle mani degli utenti e il loro stato, come mostrato
in gura 6.3.
Coordinate delle mani
nel piano immagine 2D
Coordinate delle mani
nello spazio reale 3D
Utente presente
nella scena
Stato delle mani
TUIO client
application
TUIO tracker
application
(x,y)
aperta
chiusa
Figura 6.3: Applicazione del sistema progettato ad una interfaccia utente
TUIO-based
66
Conclusioni
In questo lavoro di tesi `e stato realizzato un sistema per il riconoscimento di
gesti delle mani utilizzando Microsoft Kinect. In particolare il sistema `e in
grado di localizzare la posizione delle mani degli utenti nello spazio 3D e nel
piano immagine e di determinarne lo stato.
Il sistema progettato `e risultato essere molto accurato nel rilevare lo sta-
to delle mani degli utenti, mantenendosi pressoche invariante in base alla
distanza dellutente dal sensore, al suo abbigliamento e alla sua sionomia.
Inoltre i tempi di esecuzione piuttosto contenuti ne garantiscono lutilizzo in
real-time.
Possono essere apportati molti miglioramenti al sistema. Innanzitutto lo
sviluppo di un hand-tracker pi` u robusto e preciso rispetto a quello oerto da
NITE, sfruttando le informazioni della mappa di profondit` a.
Altri miglioramenti possono essere apportati al sistema di segmenta-
zione delle immagini delle mani degli utenti, per aumentare il contrasto
dei frame e per individuare quelli segmentati in modo errato per via della
sincronizzazione, cos` da ridurre gli errori durante il rilevamento dello stato.
Per quanto riguarda invece il ltraggio delloutput del classicatore, sa-
rebbe importante ottimizzare il valore del rumore di misurazione in modo
tale da minimizzare linerzia del detector e massimizzare la robustezza.
Osservando poi i tempi di esecuzione si nota come sia possibile aumen-
tare il numero di feature, dato lestrazione ha un costo molto basso; i tempi
per la predizione SVM possono invece essere ridotti utilizzando altri kernel.
Inne potremmo pensare anche di parallelizzare i task per distribuirli su pi` u
processori utilizzando come unit` a di calcolo anche la GPU.
67
Appendice A
Libreria OpenNI
La libreria OpenNI (Open Natural Interaction) `e un framework open-source
che svolge la funzione di interfaccia di programmazione standard per lo svi-
luppo di applicazioni di interazione naturale, realizzando un collegamento
fra i sensori audio-video e una serie di moduli software, detti componenti
middleware, che processano i dati provenienti dai sensori interpretandoli
e realizzando elaborazioni 3D (ad esempio riconoscendo la posizione di una
mano allinterno di un frame). Linterfaccia di OpenNI ore agli sviluppa-
tori sia API per la comunicazione coi i sensori sici che con i componenti
middleware, mantenendo per` o sempre la loro indipendenza: `e possibile in-
fatti scrivere applicazioni e conseguentemente cambiare dispositivi di input
oppure i moduli software intermedi senza la necessit`a di riscrivere il codice
(a patto di rispettare linterfaccia). Uno di questi componenti middleware `e
NITE ed `e stato sviluppato da PrimeSense.
Grazie ad OpenNI gli sviluppatori possono realizzare applicazioni di in-
terazione naturale utilizzando informazioni 3D della scena, che provengono
dallelaborazione dei dati provenienti dai sensori, come ad esempio la rappre-
sentazione del corpo degli utenti, la localizzazione delle loro mani, la mappa
di profondit`a della scena.
68
APPENDICE A. LIBRERIA OPENNI
La struttura di OpenNI `e su tre livelli, come mostrato in gura A.1:
Livello alto: software che implementa applicazioni di interazione natu-
rale, al di sopra di OpenNI;
Livello medio: interfaccia OpenNI per la comunicazione con i sensori e
i componenti middleware;
Livello basso: dispositivi hardware che registrano le informazioni audio,
video e 3D presenti nella scena.
OpenNI
Applicazione
Componente
middleware A
Componente
middleware B
Interfaccia
OpenNI
Figura A.1: Struttura del framework OpenNI
I dispositivi sici e i componenti middleware sono detti moduli : le API della
libreria permettono di registrare molti moduli allinterno del framework. I
moduli supportati dalla libreria sono:
moduli di input:
sensori 3D (ad esempio Microsoft Kinect);
telecamera RGB;
telecamera IR;
array di microfoni;
69
APPENDICE A. LIBRERIA OPENNI
moduli middleware:
analisi del corpo degli utenti: processa i dati provenienti dai mo-
duli di input restituendo informazioni sul corpo degli utenti come
la posizione e lorientazione dei giunti del corpo e la posizione del
centro di massa;
analisi delle mani degli utenti: processa i dati provenienti dai mo-
duli di input restituendo la posizione delle mani degli utenti nello
spazio reale 3D e nel piano immagine 2D;
riconoscimento di gesti: riconosce se allinterno della scena un
utente sta eseguendo un gesto della mano (fra un serie di gesti
predeniti);
analisi della scena: analizza le immagini della scena realizzando la
separazione delle gure dallo sfondo, lidenticazione delle coor-
dinate del pavimento, lidenticazione delle gure presenti nella
scena.
Gli oggetti principali della libreria sono i generatori che i implementano i
moduli di input e i moduli middleware. Esistono vari tipi di generatori:
MapGenerator `e linterfaccia base per tutti i generatori connessi ai
sensori:
DepthGenerator: permette lacquisizione della mappa di profon-
dit` a della scena ed inoltre ore la funzionalit`a per convertire pun-
ti nello spazio reale 3D in punti nel piano immagine 2D e vi-
ceversa grazie alle funzioni ConvertRealWorldToProjective() e
ConvertProjectiveToRealWorld();
ImageGenerator: permette lacquisizione della mappa a colori
della scena;
IRGenerator: permette lacquisizione della mappa ripresa dalla
telecamera IR;
HandsGenerator implementa lhand-tracker e permette quindi di loca-
lizzare le mani degli utenti nello spazio 3D;
70
APPENDICE A. LIBRERIA OPENNI
UserGenerator implementa il full-body-tracker e permette quindi di
determinare la posizione e langolazione dei giunti del corpo degli uten-
ti nello spazio 3D; inoltre `e capace di localizzare il centro di massa
dellutente con la funzione GetCoM() e di calcolare la sua silhouette
con la funzione GetUserPixels().
Altre funzionalit` a della libreria molto importi sono la possibilit` a di registra-
re le immagini di profondit` a con le immagini rgb utilizzando la funzione
GetalternativeViewPointCap() e la possibilit` a di sincronizzare i ussi in
modo tale che arrivino allapplicazione nello stesso istante di tempo grazie
alla funzione GetFrameSyncCap().
71
Appendice B
Libreria miccKinect
Questo lavoro di tesi `e stato interamente sviluppato in linguaggio C++, uti-
lizzando la libreria opencv per tutte le funzionalit`a di computer-vision e di
elaborazione delle immagini e OpenNI come interfaccia con Microsoft Kinect.
Il sistema progettato per il rilevamento dello stato delle mani degli utenti
`e stato organizzato come libreria denominata miccKinect e che permette
linterazione con Microsoft Kinect orendo una semplice interfaccia per ge-
stire le informazione degli utenti presenti allinterno della scena. La libreria
`e costituita da tre blocchi fondamentali:
miccKinect: ore una semplice interfaccia con Microsoft Kinect con
la quale `e possibile acquisire la mappa di profondit`a della scena e la
mappa rgb (gura B.1);
+miccKinect()
+display_depthMap()
+display_rgbMap()
+grab_and_retrieve()
+init()
+retrive_depthMap()
+retrive_rgbMap()
#main_context:Context
#depth_generator:DepthGenerator
#img_generator:ImageGenerator
#rgbMap:Mat
#depthMap:Mat
miccKinect
Figura B.1: UML classe miccKinect
72
APPENDICE B. LIBRERIA MICCKINECT
playerKinect: permette di gestire gli utenti che interagiscono con
lapplicazione e in particolare resituisce le coordinate delle loro mani
sia come punti nello spazio reale 3D che come punti nel piano immagine
2D. In particolare:
la gestione degli utenti `e indipendente dal sistema utilizzato per
localizzare e tracciare le mani di questi: `e stato scelto di ren-
derla tale cos` da poter essere facilmente sviluppabile nel futuro;
attualmente (gura B.2) `e possibile utilizzare sia lhand-tracker
(thresholdPlayer) che il full-body-tracker (skeletonPlayer);
miccKinect
+playerKinect()
+update_CoM()
+init()
+update_hands()
+get_player()
#user_generator:UserGenerator
playerKinect
+init()
+update_hands()
skeletonKinect
+init()
+update_hands()
-hands_generator:HandsGenerator
thresholdKinect
Figura B.2: UML classe miccPlayer
la classe playerKinect ha al suo interno un array di oggetti di tipo
Player che rappresentano gli utenti che interagiscono col sistema.
Ciascun utente `e modellato con la struttura mostrata in gura B.3
ed `e costituito da due oggetti di tipo Hand che rappresentano le
mani. A ciascuna mano `e associato un ltro di Kalman in modo
tale da poter ltrare le predizioni SVM.
73
APPENDICE B. LIBRERIA MICCKINECT
playerKinect
* #P
+Hand()
#position:XnPoint3D
Hand
#left_hand
#right_hand
+Player()
#id:XnUserID
#CoM:XnPoint3D
#present:bool
Player
+Kalman()
+predict()
+correct()
-KF:KalmanFilter
-measurament:Mat
-has_measure:bool
Kalman
#KF
Figura B.3: UML classe Player
gestureKinect: implementa il detector capace di riconoscere lo stato
delle mani degli utenti (gura B.4).
miccKinect
+gestureKinect()
+get_handStatus()
+load_model()
+load_scaleFactors()
+update_maps()
-bgrMap_original:Mat
-depthMap_original:Mat
-model_svm:svm_model*
-feature_min:double*
-feature_max:double*
gestureKinect
Figura B.4: UML classe gestureKinect
74
Bibliograa
[1] E. H. Adelson and J. Y. A. Wang, Single lens stereo with a ple-
noptic camera, IEEE Transactions on Pattern Analysis and Machine
Intelligence, vol. 14, no. 2, pp. 99106, 1992.
[2] H. Bay, A. Ess, T. Tuytelaars, and L. Vangool, Speeded-up robust
features (surf), Computer Vision and Image Understanding, vol. 110,
no. 3, pp. 346359, 2008.
[3] C.-C. Chang and C.-J. Lin, LIBSVM: a library for support vector
machines, 2001.
[4] M.-K. Hu, Visual pattern recognition by moment invariants, In-
formation Theory IRE Transactions on, vol. 8, no. 2, pp. 179187,
1962.
[5] R. E. Kalman, A new approach to linear ltering and prediction pro-
blems, Journal Of Basic Engineering, vol. 82, no. Series D, pp. 3545,
1960.
[6] D. G. Lowe, Distinctive image features from scale-invariant keypoints,
International Journal of Computer Vision, vol. 60, no. 2, pp. 91110,
Nov. 2004.
[7] S. V. Machine, Support vector machine, Constraints, vol. 3, no. 2, pp.
16, 2006.
[8] Microsoft. (2012, February) Kinect for windows sdk beta 2. [Online].
Available: http://www.microsoft.com/download/en/details.aspx?id=
27876
75
BIBLIOGRAFIA
[9] D. Norman, The design of everyday things, 1st ed. MIT Press, 1998.
[10] openkinect.org. (2012, February) libfreenect. [Online]. Available:
http://openkinect.org/wiki/Main Page
[11] openni.org. (2012, February) Openni user guide. [Online]. Available:
http://openni.org/Documentation
[12] primesense.org. (2012, February) Nite controls user guide. [Online].
Available: http://primesense.org
[13] T. Sawada, K. Ito, M. Nakayama, and S. Kawahito, Tof range image
sensor using a range-shift technique, 2008 IEEE Sensors, pp. 1390
1393, 2008.
[14] tuio.org. (2012, February) Tuio protocolo. [Online]. Available:
http://tuio.org
[15] A. Valli, Natural interaction white paper, Citeseer, vol. 15, no.
September, p. 21, 2007.
[16] Zalevsky, Method and system for object recostruction, PrimeSense, 2007.
76
Ringraziamenti
Cercher` o di scrivere dei ringraziamenti il pi` u possibile scientici, ringrazian-
do chi mi ha veramente aiutato a vivere questa bellissima esperienza di tesi :)
Vorrei innanzitutto ringraziare i miei genitori che mi hanno sempre so-
stenuto economicamente, spiritualmente, umanamente durante questo primo
percorso di studi, incoraggiandomi sempre ad andare avanti superando le
dicolt` a ed educandomi a riconoscere sempre il vero nelle cose.
Un ringraziamento particolare lo devo alla mia mamma: per te ho scrit-
to ogni singolo carattere di questa tesi e ogni singola riga di codice che fa
funzionare questo trabiccolo, sperando di essere riuscito a dimostrarti il bene
che ti voglio.
Restando sempre in ambito familiare, ringrazio anche Matteo, Carolina
e le piccole pesti Tommaso e Carlotta, anche se spesso mi fate uscire di testa!
Marta, per te non ci sono parole sucienti per descrivere lenorme con-
tributo che mi hai dato e che continuamente mi dai, non solo nello studio ma
soprattutto nella vita, a cominciare dal sopportarmi! GRAZIE
LUCIA! Compagna di studio un po tonterella, di chiaccherate sulla vita
senza mai capirci, di pettegolezzi sulla gente, di tante e tante risate. Ho tra-
scorso con te un periodo universitario fantastico, in particolare questo della
tesi, anche se come prevedibile mi sono laureato prima di te :) Devo ringra-
ziarti per tanti motivi: per aver sopportato le mie pazzie, per avermi aiutato
77
BIBLIOGRAFIA
negli esperimenti, per essere entrata nella storia comparendo nelle foto della
tesi, per aver trovato chiss`a come tutti quegli errori nascosti, ma soprattutto
per essere mia amica. Mi mancherai
Ringrazio poi particolarmente il Prof. Del Bimbo per avermi dato questa
straordinaria opportunit`a della tesi, che mi ha realmente cambiato e che ha
risvegliato in me una voglia incredibile di studiare. Come poi non ringraziare
Lorenzo e Andy che mi hanno seguito come dei veri mentori, portandomi
sulla retta via della programmazione intelligente! Vorrei inoltre ringraziare
tutti gli amici del MICC, dai noti Beppino, Beppone, Lambe a chi ho co-
nosciuto in questi mesi: il canterino-pompato Masi, Marco, il veterano Da
Campo. Ho vissuto uno dei periodi pi` u belli della mia vita lavorando con voi.
Al limite dello scientico devo poi ringraziare i miei tre pi` u cari amici
ingegneri (non me ne vogliano gli altri): il mitico Vannu che mi ha fatto cre-
scere e diventare quello che sono, il fantastico Giorgio perche mi ha sempre
rilanciato nello studio e il Novix (alias schizzo) per avermi mostrato cosa
signica non studiare!
Scendendo ancora meno nello scientico devo ovviamente ringraziare la
mia farmacista di ducia Camilla, lamico di vecchia data Giova, il Nardel-
lo e il Becks, Alex per gli amici capellone, lAnnina, il mitico Bazzica per
avermi passato questo fantastico template, i pischelli Tommi e Cristian, la
piccola letterata Sara e tutti gli uomini di buona volont` a che sicuramente
mi hanno aiutato e che mi perdoneranno se non ho ringraziato...ma sono le
3.57 di notte! (mi rifar` o alla magistrale).
Inne ringrazio il Signore per avermi donato questa vita.
78

Potrebbero piacerti anche