POLITECNICO DI TORINO III Facoltà di Ingegneria Tesi di - e-Lite

Commenti

Transcript

POLITECNICO DI TORINO III Facoltà di Ingegneria Tesi di - e-Lite
POLITECNICO DI TORINO
III Facoltà di Ingegneria
Corso di laurea in Ingegneria Informatica
Tesi di Laurea
Progetto e ottimizzazione
di algoritmi di riconoscimento
di forme per il gaze tracking
Relatori:
Ing. Fulvio Corno
Ing. Laura Farinetti
Candidato:
Emiliano Castellina
Luglio 2005
Indice generale
Indice delle Figure
5
Indice delle Tabelle
8
Introduzione
10
CAPITOLO 1
Gaze tracking
12
1.1 Introduzione
12
1.2 Cos'è l'eye tracking ?
13
1.3 Storia dell'eye tracking
14
1.4 Possibili applicazioni dell’eye-tracking
16
1.4.1 Ergonomia
16
1.4.2 Studio sulla percezione visiva
17
1.4.3 Utilizzo del computer in ambienti di lavoro
18
1.4.4 Disabili motori gravi
18
1.5 Head tracking
20
1.6 Obbiettivo e struttura della tesi
21
CAPITOLO 2
Sistemi di Gaze tracking
23
2.1 Introduzione
23
2.2 Cattura delle immagini
24
2.2.1 API per l'acquisizione di immagini
26
2.3 Riconoscimento della forma
26
2.4 Determinazione del punto fissato (gaze detection)
29
2.5 Alcuni sistemi di eye-tracking esistenti
35
2.5.1 Mytobii
35
2.5.2 Eyegaze System
36
2.5.3 Quick Gaze II
37
2.5.4 EagleEyes
38
CAPITOLO 3
Active shape model
40
3.1 Introduzione
40
3.2 Modello di distribuzione dei punti
42
3.2.1 Picchettatura del training set
42
3.2.2 Allineamento del training set
43
3.2.3 Cattura delle statistiche di un insieme di forme allineate
45
3.3 Ricerca delle forme nelle immagini
47
3.3.1 Calcolo dello spostamento indicato per ogni punto del modello
48
3.3.2 Calcolo dei cambiamenti nella posizione e nei parametri della forma
48
3.3.3 Aggiornamento della posizione e dei parametri della forma
50
3.4 Implementazione dell'algoritmo
50
CAPITOLO 4
Analisi di fattibilità
52
4.1 Introduzione
52
4.2 Cattura delle immagini
53
4.3 Problematiche nell’utilizzo di ASM
54
4.3.1 Difficoltà nel produrre un modello
55
4.3.2 Calcolo della complessità computazionale
57
4.4 Determinazione punto fissato (Gaze detection)
59
4.4.1 Fase di addestramento
59
4.4.2 Utilizzo dei pesi del modello
60
4.4.3 Utilizzo dell'indice delle immagini
67
4.4.4 Classificatore senza addestramento
73
CAPITOLO 5
Progettazione del sistema
79
5.1 Struttura generale del sistema
79
5.2 Programma di Training
82
5.2.1 Cattura di una collezione di immagini
82
5.2.2 Picchettatura delle forme
83
5.2.3 Generazione del modello e delle matrici associative
86
5.2.4 Funzionalità aggiuntive
89
5.3 Programma di gaze tracking
90
5.3.1 Scelta dell'utente
90
5.3.2 Scelta del modello e della matrice associativa
91
5.3.3 Gaze tracking
92
5.3.3.AGestione dispositivo di input
93
5.3.3.BRicerca della forma
94
5.3.4 Determinazione del punto fissato
95
5.3.4.ADeterminazione del punto fissato (eye tracking)
95
5.3.4.BDeterminazione del punto fissato (head tracking)
97
5.3.5 Applicazioni
100
5.3.5.AApplicazione - Impostazione
101
5.3.5.BApplicazione – Rettangoli
102
5.3.5.CApplicazione – Editor di testi
102
5.4 Database
103
5.4.1 Scelta del Database
103
5.4.2 Struttura del database
104
CAPITOLO 6
Verifiche sperimentali
112
6.1 Introduzione
112
6.2 Parametri ottimali di funzionamento
113
6.2.1 Numero immagini del training set
6.3 Prestazioni del sistema
113
117
6.3.1 Memoria occupata sul disco fisso
117
6.3.2 Utilizzo della memoria RAM
118
6.3.3 Utilizzo del processore
118
CAPITOLO 7
Conclusione e sviluppi futuri
7.1 Possibili sviluppi futuri
120
122
7.1.1 Modifiche al programma di training
123
7.1.2 Database centralizzato
123
7.1.3 Utilizzo di due webcam
123
BIBLIOGRAFIA
124
APPENDICE A Anatomia e movimenti dell'occhio
125
Anatomia dell'occhio umano
125
Movimenti oculari
125
APPENDICE B Guida al programma di training
Creare un nuovo Training set e catturare una collezione di immagini
127
127
Creare un nuovo Training Set
127
Catturare un collezione di immagini
127
Creare un nuovo path
127
Eseguire la cattura
128
Caricare una collezione di immagini
128
Catturare una singola immagine da webcam
129
Posizionare i picchetti
129
Occhio
131
Testa
131
Generare il modello matematico e matrici associative
132
Gestire i Training Set
132
Caricare Training set
132
Inserire nuove forme
133
Visualizzare/Eliminare le forme inserite
133
Visualizzare modello
133
Gestione Database
134
Compattare Database
134
Esportare TrainingSet
134
Importare TrainingSet
134
APPENDICE C Guida al programma di gaze tracking
135
Considerazioni sulla webcam
135
Gestione utenti
135
Scelta del Training e Modello
135
Provare il modello
Eye-tracking
136
137
Finestra "Touch Image"
137
Come utilizzare le Applicazioni con l'eye-tracking
137
Impostazioni - Options
137
Applicazioni
Mouse Move
APPENDICE D Esempio di codice
138
138
139
Indice delle Figure
Figura 1.1: esempio di eye tracking
13
Figura 1.2: esempio di eye tracker indossabile
15
Figura 1.3: esempio delle zone osservate con maggior frequenza in una pagina web
17
Figura 2.1: ausilio informatico
24
Figura 2.2: schema sistema gaze-tracking
24
Figura 2.3: Cattura delle immagini
25
Figura 2.4: Riconoscimento della forma
27
Figura 2.5: filtro di Sobel
28
Figura 2.6 : determinazione punto fissato
30
Figura 2.7: immagine di Tobii
36
Figura 2.8: immagine di eyegaze
37
Figura 2.9: Quick Glace in configurazione portatile
38
Figura 3.1: immagini di occhio catturate da webcam
43
Figura 3.2: Picchetti occhi
43
Figura 3.3: Memorizzazione matrice colori
52
Figura 4.1: disposizione webcam Eye tracking
55
Figura 4.2: disposizione webcam Head tracking
55
Figura 4.3: immagine dell'occhio
57
Figura 4.4: posizione picchetti sull'occhio
57
Figura 4.5: immagine del volto
57
Figura 4.6: posizione dei picchetti sulla testa
57
Figura 4.7: fase di addestramento
61
Figura 4.8: variazione della forma del modello in relazione ai pesi
62
Figura 4.9: Verifica 1 e 2, griglia
64
Figura 4.10: Verifica 3 e 4, griglia 3x3
65
Figura 4.11: Verifica 5 e 6, griglia 2x3
65
Figura 4.12: Relazione tra pesi delle forme e zone osservate. Griglia 2x3
66
Figura 4.13: Relazione tra pesi delle forme e zone osservate. Griglia 3x3
66
Figura 4.14: andamento tasso di errore verifiche 5 e 6
67
Figura 4.15: andamento del tempo di classificazione nelle verifiche 5 e 6
68
Figura 4.16 : andamento tasso di errore Griglia 3x4
71
Figura 4.17 : andamento tasso di errore Griglia 3x3
71
Figura 4.18 : andamento tasso di errore Griglia 2x3
72
Figura 4.19: andamento del tempo di addestramento in funzione del numero di forme catturate per ogni
zona
72
5
Figura 4.20: tasso di errori in funzione del parametro
73
Figura 4.22: andamento del tasso d'errore in funzione della differenza di posizione. Griglia 3x4
76
Figura 4.23 andamento del tasso d'errore in funzione della differenza di posizione. Griglia 3x3
77
Figura 4.24 andamento del tasso d'errore in funzione della differenza di posizione. Griglia 4x4
77
Figura 4.25:andamento del tasso d'errore in funzione di F , Griglia 3x4, Differenza di posizione 0,5 cm
78
Figura 4.26:andamento del tasso d'errore in funzione di F , Griglia 3x3, Differenza di posizione 0,5 cm
78
Figura 4.27:andamento del tasso d'errore in funzione di F , Griglia 2x3, Differenza di posizione 0,5 cm
79
Figura 5.1: applicazione di training
81
Figura 5.2: Applicazione di Gaze tracking
82
Figura 5.3: schema del funzionamento del programma di training
83
Figura 5.4: esempio di punti che costituiscono un PATH
84
Figura 5.5: zona intorno intorno all'occhio da selezionare
85
Figura 5.6: zona della testa da selezionare
85
Figura 5.7: ordine di posizionamento dei picchetti sull'occhio
86
Figura 5.8: ordine di posizionamento dei picchetti sulla testa
86
Figura 5.9: rappresentazione coordinate PUNTO
87
Figura 5.10 : esempio di variazione delle forme del modello della testa
88
Figura 5.11 : esempio di variazione delle forme del modello dell'occhio
88
Figura 5.12: intorno dei picchetti nelle differenti matrici associative
90
Figura 5.13: funzionalità applicativo di gaze tracking
91
Figura 5.14 : finestra di Scelta del modello
92
Figura 5.15 : schema componenti comuni tra head tracking e eya tracking
94
Figura 5.16: indicazione posizione occhio
96
Figura 5.17 indicazione posizione modello della testa
96
Figura 5.18: scambio messaggi eye tracking
97
Figura 5.19: finestra di confronto immagine (eye tracking)
97
Figura 5.21: picchetti utilizzati per il calcolo del punto medio
99
Figura 5.22: dominio di variabilità della posizione del punto medio
99
Figura 5.24: controllo movimento del mouse
100
Figura 5.25 scambio di messaggi tra sistema e applicazioni
102
Figura 5.26: layout applicazione - impostazione
103
Figura 5.27: Applicazione Editor di testo
104
Figura 5.28: schema delle relazioni tra le tabelle del database
106
Figura 6.1: numero forme riconosciute su numero di forme del training set
115
Figura 6.2: percentuale forme riconosciute su forme del training set
115
Figura 6.3: tempi di costruzione dei modelli in funzione del numero di immagini del training set
116
6
Figura 6.4: percorso di cattura A
117
Figura 6.5: percorso di cattura B
117
Figura 7.1 Tempi per l'utilizzo del sistema di gaze tracking
122
Figura A: morfologia dell'occhio
126
7
Indice delle Tabelle
Tab. 2.1
CARATTERISTICHE TECNICHE Mytobii
36
Tab. 2.2: Caratteristiche tencniche Eyegaze System
37
Tab. 2.3: Caratteristiche tecniche Quick Glace II
38
Tab 2.4: Caratteristiche tecniche Eagle Eyes
39
Tab. 4.1: Verifica sperimentale 1
63
Tab. 4.2: Verifica sperimentale 2
63
Tab. 4.3: Verifica sperimentale 3
63
Tab. 4.4: Verifica sperimentale 4
63
Tab. 4.5: Verifica sperimentale 5
64
Tab. 4.6: Verifica sperimentale 6
64
Tab 4.7: Verifica sperimentale 7
69
Tab 4.8: Verifica sperimentale 8
70
Tab 4.9: Verifica sperimentale 9
70
Tab 4.10: Verifica sperimentale 10
70
Tab 4.11: Verifica sperimentale 11
70
Tab 4.12: Verifica sperimentale 12
70
Tab. 4.13: Verifica sperimentale 13
75
Tab. 4.14: Verifica sperimentale 14
75
Tab. 4.15: Verifica sperimentale 15
75
Tab. 4.16: Verifica sperimentale 16
75
Tab. 4.17: Verifica sperimentale 17
75
Tab. 4.18: Verifica sperimentale 18
76
Tab. 5.1: Caratteristiche nell'intorno dei picchetti nelle differenti matrici associative
90
Tab. 5.2 : Tabella Archive
106
Tab. 5.3 : Tabella TrainingSet
107
Tab. 5.4 : Tabella SpotsInfo
108
Tab. 5.5 : Tabella Spots
108
Tab. 5.6 : Shapets
109
Tab. 5.7 : Tabella Matrix
109
Tab. 5.8: Tabella ImagesTs
110
Tab. 5.9: Tabella Collection
111
Tab. 5.10: Tabella ImaColl
111
Tab. 5.11: Tabella PathList
112
Tab. 6.1: Specifiche computer
114
Tab. 6.2: Specifiche webcam
114
8
Tab. 6.3: Caratteristiche dei TEST
117
Tab. 6.5: Utilizzo della Ram programma di training
118
Tab. 6.6: Utilizzo della Ram programma di training
119
Tab. 6.7: Utilizzo CPU programma di training
119
Tab. 6.8: Utilizzo CPU programma di gaze tracking
119
9
Introduzione
Tutti i cittadini hanno pari dignità sociale e sono eguali davanti
alla legge senza distinzione di sesso, di razza, di lingua, di religione, di opinioni politiche, di condizioni personali e sociali
(art. 3 Costituzione della Repubblica Italiana)
Il numero di disabili in Italia secondo le stime di un’indagine dell’ISTAT sulle salute del
1999-2000 è di 2.165.000 pari a circa il 5% della popolazione. La percentuale di popolazione invalida è in costante aumento nei paesi industrializzati essenzialmente per l'occorrenza di tre circostanze:
l'aumento della vita media : incrementano le persone di età avanzata che sono maggiormente soggette a difficoltà sensoriali,motorie e psichiche;
la diminuzione della mortalità infantile: grazie all'efficacia delle terapie mediche è
possibile tenere in vita neonati con gravi malformazioni;
l'aumento di incidenti non mortali della strada, lavorativi e domestici.
10
In questo contesto sono sempre più necessarie nuove tecnologie che permettano di fornire
una vita più dignitosa e agevole alle persone disabili.
L’utilizzo del computer può essere d’ausilio alle persone disabili permettendo di comunicare e interagire con l’ambiente circostante.
Sovente le periferiche di input come mouse e tastiera non sono utilizzabili da utenti disabili, per questo si è reso necessario lo studio di sistemi alternativi per l’interazione tra uomo e
computer.
Il gaze tracking o tracciamento del punto fissato è una tecnica utilizzata per poter controllare il computer tramite la stima del punto osservato sullo schermo dall’utente. Esso può basarsi sull’analisi e l’elaborazione dei movimenti della testa (head tracking) o degli occhi
(eye tracking).
Nel 2004 il politecnico di Torino è entrato a far parte di COGAIN, una rete di eccellenza
per lo sviluppo e la ricerca di tecnologie per l'interazione fra utenti disabili e computer.
COGAIN è un consorzio finanziato dall’unione europea, costituito da ricercatori, imprese
e associazioni di utenti ,che ha come scopo il miglioramento della qualità della vita per le
persone afflitte da disordini nel controllo motorio.
L’efficienza, il comfort e l'ergonomia delle tecnologie prodotte è garantita dal forte coinvolgimento delle comunità di utenti nel progetto.
Nell’ambito di questo consorzio il Politecnico di Torino ha progettato e sviluppato un proprio sistema di gaze tracking finalizzato all’ausilio per le persone disabili.
11
CAPITOLO 1
Gaze tracking
1.1 Introduzione
Per gaze tracking si intende l’insieme delle tecnologie hardware e software atte a permettere l’interazione tra utente e computer attraverso la cattura e l’elaborazione del punto dello
schermo osservato.
Il gaze tracking si può ulteriormente distinguere in eye tracking ed head tracking a seconda
che per il riconoscimento si analizzino gli occhi o la testa dell’utente.
Le tecniche di eye tracking hanno una diffusione maggiore sia per quanto riguarda il numero di sistemi commerciali esistenti sia per il numero di articoli pubblicati su algoritmi e studi teorici.
Questo capitolo tratterà un’introduzione all’eye tracking di cui si illustreranno la storia e gli
ambiti di utilizzo.
Un breve paragrafo sarà dedicato all’head tracking e ai suo campi di applicazione.
12
CAPITOLO 1 Gaze tracking
Una volta introdotti i sistemi e le metodologie di gaze tracking verranno descritti gli obbiettivi e la struttura della presente tesi.
1.2 Cos'è l'eye tracking ?
Per eye tracking o tracciamento oculare si intende la tecnica utilizzata nelle scienze cognitive, in psicologia, nell'interazione fra uomo e computer e in numerosi altri campi per catturare e registrare i movimenti degli occhi.
Figura 1.1: esempio di eye tracking
Nell'osservazione del contenuto di una schermata di computer gli occhi presentano due
comportamenti tipici fondamentali: delle saccadi e delle fissazioni.
Le saccadi sono i movimenti che sono volti a posizionare il contenuto dello schermo nella
zona di maggior risoluzione dell'occhio. Sono i movimenti più rapidi che il corpo umano
possa eseguire: possono superare i 400 gradi al secondo e hanno una durata che si aggira
tra i 20 e 50 millisecondi.
Le fissazioni sono soste del movimento oculare su singoli elementi interessanti. Questa
pause( della durata media di un quarto di secondo) sono volte al recupero e all'analisi del
contenuto fissato, il che permette di leggere un testo, interpretare un'immagine,ecc.
I movimenti saccadici e le fissazioni si alternano in modo che l'occhio si muova da un punto all'altro dello schermo. La registrazione dell'alternanza tra movimenti saccadici e fissazioni è denominata scanpath.
Attualmente sono disponibili quattro tecniche che permettono di registrare i dati relativi ai
movimenti oculari:
1. l'elettrooculografia: per mezzo di elettrodi posti vicino agli occhi registra l'attività elettrica prodotta dalla loro rotazione. Le informazioni hanno un buon data-rate (elevati
13
CAPITOLO 1 Gaze tracking
dati al secondo) ma sono poco precise sulla posizione dello sguardo.
2. La tecnica galvanometrica o della “bobina sclerale”: i movimenti oculari sono dedotti
dalle variazioni del campo magnetico in cui il soggetto è immerso. Le variazioni sono
dovute al fatto che sull'occhio del soggetto è posta una speciale lente a contatto contenente un filamento elettrico. La precisione dei dati è elevata ma questa tecnica è molto
invasiva, quindi scarsamente usata.
3. La tecnica del riflesso corneale: inviando un piccolo fascio luminoso infrarosso al centro della pupilla, è possibile dedurre i movimenti dell'occhio dalle variazioni del riflesso rinviato. Maggiori dettagli su questa tecnica saranno esposti nella descrizione di alcuni sistemi commerciali di eye-tracking nel paragrafo 2.5.
4. Le tecniche di analisi dell'immagine: le immagini catturate in tempo reale vengono
processate ed elaborate per stabilire il punto osservato. La precisione e le prestazioni
sono dipendenti dalla risoluzione del dispositivo di cattura utilizzato e dalla capacità di
elaborazione del computer sui cui è in funzione il sistema. Il sistema, oggetto di questa
tesi, utilizza queste tecniche.
1.3 Storia dell'eye tracking
Lo studio del movimento degli occhi precede la diffusione del computer di almeno 100
anni, un esempio di tali ricerche è “Physiologie de la lecture et de l'écriture”,scritto dall’oftalmico francese Emile Javal nel 1878.
I primi metodi per tracciare la posizione fissata dagli occhi erano piuttosto invasivi, richiedevano un contatto meccanico diretto con la cornea.
Dodge e Cline nel 1901 svilupparono la prima tecnica precisa e non invasiva di tracciamento oculare usando la luce riflessa dalla cornea. Il loro sistema registrava su una lastra
fotografica solamente la posizione orizzontale dell’occhio e richiedeva che la testa del partecipante fosse senza movimento.
Poco dopo, nel 1905 Judd,McAllister e Steel applicarono la tecnica cinematografica per
registrare l’aspetto temporale del movimento degli occhi in due dimensioni. La loro tecnica
registrava il movimento di una piccola particella bianca inserita negli occhi dei partecipanti
invece della luce riflessa direttamente dalla cornea.
Queste e altre ricerche inerenti lo studio del movimento degli occhi fecero ulteriori progressi durante la prima metà del ventesimo secolo con la combinazione della tecnica cine14
CAPITOLO 1 Gaze tracking
matografica e della riflessione della luce dalla cornea in diversi modi.
Negli anni trenta, Miles Tinker e i suoi colleghi iniziarono ad applicare tecniche fotografiche allo studio del movimento degli occhi durante la lettura. Studiarono gli effetti sulla velocità di lettura e i differenti modelli di movimento oculare risultanti dalla variazione di carattere, dimensione di stampa e layout di un testo.
Nel 1947 Paul Fitts e i suoi collaboratori iniziarono ad utilizzare la tecnica cinematografica
per studiare il movimento degli occhi dei piloti al fine di comprendere come venivano osservati i controlli e gli strumenti nella cabina di pilotaggio durante la fase di atterraggio.
Gli studi di Fitts rappresentano la prima applicazione di eye tracking per l’ergonomia, ossia
uno studio sistematico delle interazioni tra utenti e prodotto per migliorare la progettazione
del prodotto.
Nel 1948 Hartridge e Thompson inventarono il primo eye tracker che si posizionava sulla
testa.
Rozzo per gli attuali standard, questa innovazione servì a liberare i partecipanti agli studi
dai costrittivi vincoli al movimento della testa.
Negli anni sessanta Shackel, Mackworth & Thomas migliorarono il sistema di eye-tracking
posizionato sulla testa rendendolo meno fastidioso e riducendo ulteriormente le restrizioni
al movimento della testa.
Figura 1.2: esempio di eye tracker indossabile
La ricerca sul movimento oculare e sull’eye tracking rifiorì negli anni settanta, con grandi
progressi sia nella tecnologia di eye-tracking , sia nella teoria psicologica del legame tra i
processi cognitivi e i modelli di movimento oculare.
Molto del lavoro fu focalizzato sulla ricerca in psicologia e fisiologia nel comprendere
come l’occhio umano funzionasse e cosa potesse rivelare sui processi percettivi e cogniti-
15
CAPITOLO 1 Gaze tracking
vi.
Le pubblicazioni degli anni settanta riportano una stasi nell’utilizzo dell’eye-tracking per
l’ergonomia, probabilmente cioè fu dovuto alla difficoltà nelle raccolta e soprattutto nell’analisi dei dati.
Molti dei rilevanti lavori degli anni settanta riguardavano il miglioramento tecnico per aumentare l’accuratezza e la precisione dei tracker. La scoperta che la riflessione multipla
dall’occhio potesse essere usata per dissociare la rotazione oculare dal movimento della testa incrementò la precisione del tracciamento e aprì la strada allo sviluppo di sistemi senza
vincoli di movimento per i partecipanti.
Nel 1974 due imprese belliche statunitensi in collaborazione con l’esercito e la marina svilupparono ognuna un sistema automatico di eye tracking in tempo reale, utilizzando un minicomputer,
Questi sistemi furono i precursori nell’utilizzo di sistemi di eye tracking per l’interazione
uomo macchina in tempo reale.
Negli anni ottanta con il diffondersi dei personal computer, i ricercatori iniziarono a studiare come l’eye tracking potesse essere applicato alla interazione uomo computer. Dapprima
fu utilizzato per lo studio dell’ergonomia delle applicazione, in seguito per permettere l’utilizzo del computer ad utenti disabili.
1.4 Possibili applicazioni dell’eye-tracking
In periodi recenti con l’evoluzione della capacità elaborativi dei personal computer e il miglioramento continuo della tecnologia hardware relative all’acquisizione di immagini l’utilizzo dell’eye-tracking si è potuto diffondere oltre l’ambito accademico di ricerca in cui è
stato sviluppato.
1.4.1 Ergonomia
Uno dei campi di maggior utilizzo dei sistemi di eye-tracking è lo studio dell’ergonomia
dei prodotti per migliorarne la progettazione.
Vengono condotti test statistici di osservazione su campioni rappresentativi di individui e
grazie ai dati raccolti si ottimizza il layout del prodotto.
16
CAPITOLO 1 Gaze tracking
Esempi di prodotti interessati da un’analisi dell'ergonomia condotta con tracciamento oculare sono:
•
applicativi informatici e siti web : si può ottenere un miglioramento dell’interfaccia per agevolare l’utilizzo dell’applicativo sia da parte di utenti normodotati
che da disabili. Grazie a questi studi è stato possibile determinare delle linee
guida da rispettare per permettere l’accessibilità di siti web per persone ipovedenti, come tipologia e dimensione dei caratteri da utilizzare e abbinamenti cromatici adatti. Un esempio di questo campo di applicazione è rappresentato in figura 1.3, in cui le zone più fissate di una pagina web sono evidenziate da una
maggiore altezza in modalità tridimensionale.
Figura 1.3: esempio delle zone osservate con maggior frequenza in una pagina web
•
mezzi di trasporto: la posizioni dei controlli e dei comandi vengono progettate
per minimizzare errori di lettura e migliorare la funzionalità. Questa tipologia di
analisi è diffusa soprattutto in ambito aeronautico.
•
Pubblicità: i marchi dei prodotti vengono posizionati per essere maggiormente
visibili nei punti che dagli studi sono risultati più frequentemente fissati. In
questo ambito si ha il più diffuso utilizzo dell’eye-tracking.
1.4.2 Studio sulla percezione visiva
I sistemi di tracciamento del movimento oculare vengono utilizzati, in ambito di ricerca in
psicologia, per creare modelli che relazionano la posizione fissata da un soggetto alle facoltà di lettura, apprendimento e comprensione.
Studi recenti dello psicologo inglese Richard Wiseman hanno dimostrato che una persona
17
CAPITOLO 1 Gaze tracking
non vede in realtà l’immagine fissata dagli occhi, ma una rielaborazione che il cervello fa
di essa.
In questa rielaborazione si ha una modifica dell’immagine reale con l’omissione di particolari “superflui” ed in attesi.
Un esempio di tale rielaborazione selettiva del cervello si è risultato da un esperimento
svolto su 10 piloti di aviazione civile. Il test consisteva nel far provare ai piloti con un simulatore di volo un atterraggio e di registrare i tramite tecniche di eye tracking la zona osservata in ogni momento. Durante il test il simulatore visualizzava improvvisamente sulla
pista di atterraggio un aereo. Quattro dei dieci piloti, partecipanti al test, non si sono accorti
di nulla e hanno proseguito la manovra di atterraggio. Le registrazioni effettuate dall'eye
tracker hanno evidenziato che i piloti hanno fissato la zona in cui è apparso l'aereo, ma il
cervello ha omesso tale informazione perché inattesa e non ritenuta possibile.
1.4.3 Utilizzo del computer in ambienti di lavoro
Data l’elevato costo dei dispositivi di eye-tracking il loro utilizzo è limitato al momento all’ambiente militare. Un sistema di tracciamento oculare è utilizzato all’interno dei caschi
dei piloti di aviazione per interagire col computer di bordo e visualizzare informazioni.
Esistono anche visori speciali utilizzati dall’esercito collegati a computer indossabili, in
questo caso l’eye tracking è utilizzato come strumento di puntamento per selezionare le
funzionalità del computer.
In linea di massima un’interfaccia di eye tracking è utilizzabile in tutti gli ambienti lavorativi in cui l’operatore non ha la possibilità di utilizzare le mani per gestire e controllare un
computer.
1.4.4 Disabili motori gravi
Una delle applicazioni più utili dell’eye tracking è dare la possibilità a persone affette da
inabilità motorie gravi di utilizzare un personal computer . Il personal computer può eseguire programmi ad hoc che consentono all’utente di comunicare e di interagire con l’ambiente circostante.
Esempi di patologie e disturbi in cui i sistemi di eye tracking possono essere strumenti efficaci sono:
18
CAPITOLO 1 Gaze tracking
•
Sclerosi laterale amiotrofica (SLA): una malattia degenerativa che interessa un
gruppo specifico di cellule del midollo spinale (il primo e il secondo motoneurone).
Queste cellule nervose svolgono la funzione fondamentale di trasmettere ai muscoli
i comandi per il movimento. La scomparsa dei motoneuroni causa una progressiva
atrofia muscolare: i muscoli volontari non ricevono più i comandi provenienti del
cervello e, nel tempo, si atrofizzano, portando a una paralisi progressiva dei quattro
arti e dei muscoli deputati alla deglutizione e alla parola. Purtroppo non è stata ancora individuata una terapia in grado di sconfiggere questa patologia. Solo in una
piccola percentuale di casi sono state riscontrate possibili cause di origine genetica,
mentre perlopiù la causa scatenante della SLA è ignota. Il decorso medio è di circa
tre anni; la morte è provocata quasi sempre per insufficienza respiratoria.. E’ conosciuta come morbo di Lou Gehrig, dal nome di un famoso giocatore di baseball a
cui per primo fu diagnosticata.
•
Lesioni del midollo spinale.
•
Paralisi cerebrale.
•
Sclerosi multipla: è una malattia autoimmunitaria provocata da una risposta anomala del sistema immunitario contro il sistema nervoso centrale. I sintomi della malattia dipendono dalla zona del sistema nervoso colpita, i più frequenti sono annebbiamento della vista, difficoltà di coordinazione dei movimenti, tremore , paralisi e
spasticità muscolari. In alcuni pazienti la malattia alterna periodi di miglioramento
con assenza dei sintomi e fasi acute di remissione. In altri pazienti la malattia progredisce portando a disabilità permanenti.
•
Lesioni cerebrali.
•
Distrofia muscolare: la malattia è dovuta alla mancanza di distrofina, una proteina
che protegge i muscoli dai traumi durante la contrazione. E’ una malattia di origine
genetica , dovuta ad un difetto del cromosoma X per questo colpisce praticamente
solo maschi (infatti le donne hanno due cromosomi X ed è improbabile che entrambi siano danneggiati).
Le forme più comuni sono quelle di Duchenne e quella di Becker, la prima evolve
in una paralisi totale dei muscoli, mentre la seconda ha un andamento meno debilitante.
19
CAPITOLO 1 Gaze tracking
Sono numerose le applicazioni progettate appositamente per facilitare la comunicazione
delle persone disabili: si va dalla semplice rappresentazione di una tastiera su schermo collegata ad un sistema di sintesi vocali, all’utilizzo di un complesso linguaggio simbolico per
esprimere le necessità .
Un’altra interessante applicazione è l’interazione tra sistemi di eye-tracking e casa domotica.
Per casa domotica si intende un’abitazione progettata o “riadattata” per essere controllabile
tramite computer. Un’utente disabile può quindi avere una notevole autonomia ed effettuare semplici azioni come accendere una luce,accendere il forno o aprire una porta senza l’assistenza di altre persone.
Nel computer che controlla l’abitazione può essere implementato un sistema di gaze-tracking.
1.5 Head tracking
Per head-tracking si intende un processo di analisi e di riconoscimento della testa dell’utente al fine di effettuare un’interazione con un sistema informatico.
Esistono diversi sistemi di head-tracking ,presenti in letteratura e in commercio, che possono essere raggruppati in base alla funzione svolta. Possiamo distinguere essenzialmente tre
funzioni:
Χ
Il riconoscimento della posizione della testa: può avvenire come per l’eye tracking sia
attraverso dispositivi indossati dall’utente (caschi e occhiali) sia tramite analisi dell’immagine acquisite da dispositivi di cattura video.
La determinazione della posizione della testa può essere utilizzata per la stima della
zona o del punto dello schermo osservato dall’utente.
I campi di utilizzo di questi sistemi sono:
Ludico: esistono in commercio molti dispositivi hardware(caschi e occhiali) che
permettono di sostituire ai joystick il movimento della testa.
Professionale: vi sono applicazioni e dispositivi che attraverso i movimenti della testa permettono il movimento in ambienti di realtà virtuale. Questi sistemi
sono pochi e utilizzati soprattutto nelle progettazione o vendita di edifici.
Ausilio per disabili: tipicamente le tecniche di head-tracking sono utilizzate dai
20
CAPITOLO 1 Gaze tracking
sistemi di eye-tracking per il controllo degli errori o per migliorare l’accuratezza
della stima del punto osservato.
Χ
Il riconoscimento del volto: avviene tramite riconoscimento dell’immagine acquisite da
dispositivi di cattura. Questi strumenti sono utilizzati per l’identificazione e l’autenticazione degli utenti per l’accesso a sistemi ad elevata sicurezza o per la ricerca di individui all’interno di un database da parte delle forze dell’ordine .
Χ
Il riconoscimento dell’espressione del volto: questi sistemi sono utilizzati al momento
sono in ambito di ricerca , hanno l’intento di riconoscere lo stato d’animo dell’utente
(allegria,tristezza,attenzione,noia,…) a partire dall’analisi dell’immagine del volto degli
utenti.
1.6 Obbiettivo e struttura della tesi
Lo scopo di questa tesi è l’analisi e lo sviluppo di un sistema di gaze tracking per l’ausilio
alle persone con problemi motori gravi .
Per realizzare questo progetto si è partiti da un sistema già esistente sviluppato nel corso di
tesi precedenti.
Un ostacolo alla diffusione dei dispositivi di gaze tracking commerciali descritti nei paragrafi precedenti è l’elevato costo che non permette alla maggior parte delle persone di poterli utilizzare; solitamente i sistemi più accurati e all’avanguardia sono acquistati da associazione e da ospedali e l’utente per poterne usufruire deve essere portato in questi luoghi.
Per dare la possibilità alla maggior parte degli utenti di accedere ad un ausilio
informatico,indipendentemente dalle condizioni economiche, si è scelto di sviluppare un
sistema che utilizzi dispositivi di cattura immagini a basso costo come semplici webcam.
Mantenendo come principale vincolo progettuale il basso costo si sono dovute accettare
delle limitazioni per quanto riguarda le prestazioni e l’accuratezza del sistema.
Si è progettata e ottimizzata l'integrazione nel sistema di gaze tracking di un particolare algoritmo di ricerca forme denominato active shape model.
Il sistema sviluppato permette tramite head tracking di utilizzare i movimenti della testa
per muovere il puntatore del mouse. Dopo un breve periodo di apprendimento l'utente è in
grado di controllare con elevata precisione il puntatore, tanto da consentire di utilizzare
senza alcuna modifica le normali applicazioni del sistema operativo.
21
CAPITOLO 1 Gaze tracking
Per quanto riguarda l'eye tracking ,a seconda delle condizioni di luce e del posizionamento
dell'utente, il sistema riesce a determinare la zona fissata tra un minimo di quattro ad una
massimo di sedici zone in cui può essere diviso lo schermo.
Sono state sviluppate applicazioni specifiche per essere in grado di interagire con il sistema di eye tracking. Una particolarità di tali applicazione è la possibilità di modificare l'interfaccia in base alla precisione del sistema.
La struttura della tesi rispecchia i diversi passi effettuati per realizzare il progetto; di seguito sono brevemente descritti i capitoli in cui è suddiviso il presente elaborato.
•
Nel CAPITOLO DUE “Sistemi di gaze tracking” vengono descritte i diversi componenti che costituiscono un generico sistema di gaze tracking. Sono illustrati alcuni algoritmi e tecniche presenti in letteratura adatti a realizzare le funzioni di cattura
immagine,riconoscimento forme e determinazione del punto fissato.
•
Nel CAPITOLO TRE “Active shape model” viene descritto dettagliatamente l’algoritmo di riconoscimento forme scelto per essere implementato all’interno del sistema.
•
Nel CAPITOLO QUATTRO “Analisi di fattibilità” viene proposta un’analisi delle
problematiche incontrate per la realizzazione del sistemo sia a livello teorico che a
livello implementativo.
•
Nel CAPITOLO CINQUE “Progettazione del sistema” vengono spiegate le soluzioni adottate per ovviare ai problemi riscontrati durante la fase di analisi.
•
Nel CAPITOLO SEI “Verifiche sperimentali” vengono riportati i risultati delle verifiche sperimentali effettuate per la misurazione delle prestazioni e il controllo dell’accuratezza del sistema.
•
Nel CAPITOLO SETTE “Conclusione e sviluppi futuri” vengono elencati alcuni
possibili sviluppi futuri che il progetto descritto in questa tesi potrà avere.
22
CAPITOLO 2
Sistemi di Gaze tracking
2.1 Introduzione
Un ausilio informatico che utilizzi le tecniche di gaze tracking è caratterizzato da tre componenti:
Χ
Un sistema di elaborazione delle informazioni di input che fornisce le coordinate del
punto o della zona fissati.
Χ
Uno strato applicativo che utilizza i dati sul punto fissato per svolgere una determinata
funzione (sintesi vocale, azionare un dispositivo,...)
Χ
Uno stadio di uscita che è il risultato dell'esecuzione delle applicazioni.
Uno schema della strutturazione di un ausilio informatico che utilizzi il gaze tracking è illustrato in figura 2.1.
In questo capitolo sarà analizzato il principio di funzionamento del primo componente di
dell'ausilio informatico descritto sopra, ossia un sistema di gaze tracking.
23
CAPITOLO 2 Sistemi di Gaze tracking
Applicazioni
Output
Gaze tracking
Applicazioni
di sistema
Figura 2.1: ausilio informatico
Sarà descritto un generico sistema di riconoscimento del punto fissato basato su algoritmi
di riconoscimento forme.
Per ogni componente del sistema saranno descritte le diverse implementazioni presenti in
letteratura.
Ogni sistema complesso per poter essere efficientemente sviluppato, modificato e aggiornato deve avere un elevata modularità, ossia deve essere strutturato in modo tale da comprendere componenti il più possibile indipendenti.
Ogni modulo può essere modificato e migliorato indipendentemente dagli altri, con l'accortezza però di mantenere invariate le interfacce di input e output con gli altri moduli.
Una struttura esemplificativa di un sistema di tracciamento oculare è rappresentato dallo
schema in figura 2.2.
Figura 2.2: schema sistema gaze-tracking
2.2 Cattura delle immagini
Lo scopo del primo blocco del sistema (fig. 2.3) è quello di acquisire immagini da un dispositivo di cattura video, come ad esempio una webcam, e fornirle in un formato specifico
al blocco successivo.
24
CAPITOLO 2 Sistemi di Gaze tracking
Figura 2.3: Cattura delle immagini
Per permettere la comunicazione fra un sistema informatico e un dispositivo di cattura immagini sono possibili diverse alternative:
•
L'implementazione di un driver a partire dalle specifiche tecniche che svolge solo
le funzioni necessarie agli altri moduli del sistema. Il termine driver indica un'interfaccia di comunicazione fra periferico di acquisizione e sistema. Questa alternativa
è la più complessa da attuare sia per la difficoltà nella programmazione a basso livello sia perché poche case produttrici forniscono le specifiche dettagliate dei propri dispositivi. Inoltre il funzionamento è indissolubilmente legato all'hardware
quindi se si cambia il dispositivo si deve modificare quasi integralmente il codice
del modulo. Per contro si ha un notevole aumento dell'efficienza del sistema, poiché si possono sviluppare solo le funzioni necessarie.
•
Utilizzo dei driver forniti dalla casa produttrice del dispositivo di acquisizione: in
questo caso si utilizzano le funzioni elementari fornite per costruire il modulo di acquisizione. Utilizzando questo metodo si ha una media complessità di progettazione
ed implementazione poiché i driver forniti tipicamente svolgono funzioni elementari che non garantisco un livello di astrazione del dispositivo elevato, quindi si è ancora molto legati alla struttura dell'hardware utilizzato.
•
Utilizzo di librerie per l'acquisizione di immagini: si utilizzano API (application
programming interface) già sviluppate che astraggono totalmente il dispositivo di
cattura e si occupano di interfacciarsi con l'hardware rendendo semplice lo sviluppo
di applicazioni. Il vantaggio dell'utilizzo di librerie già sviluppate è senza dubbio la
semplicità di sviluppo che consentono, d'altro canto però non forniscono un totale
controllo del dispositivo e garantiscono prestazioni inferiori ai metodi precedentemente descritti.
25
CAPITOLO 2 Sistemi di Gaze tracking
2.2.1 API per l'acquisizione di immagini
Sono innumerevoli le librerie presenti in commercio per l'elaborazione e acquisizione di
immagini, di seguito saranno brevemente descritte le librerie più utilizzate.
Microsoft Video for Windows: è un API per la cattura ed elaborazione di video già introdotto nei sistemi Windows a 16 bit. Il numero di funzioni esportate è limitato e nonostante i parecchi anni passati dalla progettazione risulta di facile utilizzo. Questa API
è già presente nei più diffusi ambienti di sviluppo, quindi non è necessario il pagamento di royalties aggiuntive per integrarlo nelle proprie applicazioni.
Victor Image Processing: è un API prodotta dalla Catenary System che svolge funzioni
di cattura,memorizzazione ed elaborazione di immagini. Ha il pregio di essere efficiente e veloce, ma ha il grave difetto di non permettere il passaggio dell'immagine acquisita direttamente in memoria. I precedenti lavori di tesi che utilizzano tale libreria per ovviare a questo hanno dovuto utilizzare una ram disk. Il costo per l'utilizzo della librerira è di circa 500 dollari.
Intel Image Processing Library: è una API opensource che offre numerosissime funzioni di elaborazione e analisi dell'immagine. Esempi di alcune funzioni esportate sono:
Conversione di formato.
Applicazione di filtri.
Trasformazioni: rotazioni,ridimensionamenti.
Ricerca dei contorni.
2.3 Riconoscimento della forma
Questo modulo ha come dati di ingresso l'immagine catturata e fornisce come output la forma trovata dopo l'analisi effettuata (figura 2.4).
Figura 2.4: Riconoscimento della forma
La maggior parte degli algoritmi di riconoscimento forme effettua come prima operazione
sull'immagine l'applicazione di un filtro con lo scopo di enfatizzare i contorni delle imma-
26
CAPITOLO 2 Sistemi di Gaze tracking
gini e ridurre i dati da analizzare.
I contorni di un’immagine sono determinati da zone ad elevata differenza d’intensità, per
rilevarli si analizzano i punti di discontinuità del gradiente.
I principali algoritmi di rilevazione dei contorni presenti in letteratura sono i seguenti:
•
Gradienti discreti e trasformata di Laplace (Roberts 1965, Prewitt 1970, Sobel
1970, Kirsh 1971): sono basati sulla ricerca degli zeri della trasformata di Laplace
del gradiente dell’immagine. Il gradiente è calcolato in due direzioni effettuando il
prodotto di convoluzione fra l’immagine e matrici diverse per ogni implementazione.
•
Trasformata di Laplace della Gaussiana: sviluppato da Marr e Hildreth nel 1980
consiste nella ricerca degli zeri della trasformata di Laplace dell’immagine a cui è
applicata precedentemente una maschera Gaussiana. Il filtro gaussiano ha lo scopo
di sfumare i contorni meno marcati dall’immagine ,così da evitare molti zeri della
funzione trasformata dovuti ha piccole discontinuità di intensità.
•
Canny Edge Detector: sviluppato da John Canny nel 1983, questo algoritmo dapprima massimizza il rapporto segnale rumore dell’immagine poi minimizza le risposte
dei singoli contorni evitando così falsi riconoscimenti. Dopo i suoi studi Canny ha
trovato una funzione costituita dalla somma di quattro esponenziali che se applicata
all’immagine effettua le operazioni sopra descritte.
Un esempio è rappresentato in figura 2.5 in cui è applicato il filtro di Sobel .
Figura 2.5: filtro di Sobel
Il passo successivo all'applicazione (o meno) di filtri è la ricerca vera e propria della forma
che può essere basata su modelli statistici o funzioni matematiche predeterminati, oppure
calcolati durante una fase di addestramento del sistema.
Di seguito sono sinteticamente descritti alcuni algoritmi per la costruzioni di modelli per il
27
CAPITOLO 2 Sistemi di Gaze tracking
riconoscimento forme .
1. Modelli “artigianali”: sono modelli flessibili costruiti dall’unione di semplici sottocomponenti, come circonferenze, linee o archi che hanno determinati gradi di libertà
nel posizionamento relativo e possibile di variazioni di scala e di orientamento. Quando
si ricerca una forma nell’immagine, si attiene prima una forma approssimata del modello che viene rifinita cambiando i diversi sottocomponenti uno alla volta. Questi modelli
sono tipicamente utilizzate nella ricerca di forme in ambito medico come valvole cardiache e vertebre.
2. Modelli di serie di Fourier di forme: questi modelli utilizzano espansioni di funzioni
trigonometriche. Le forme prodotte sono funzioni parametriche, alla variazione dei parametri si originano forme differenti. I modelli così generati sono quasi infinitamente
deformabili , e non contengono informazioni a priori sulla forma.
3. Active shape model (ASM): utilizza un modello statistico deformabile dell’oggetto da
ricercare. Il modello è generato da un insieme di immagini campione in cui vengono
identificati i punti significativi della forma dell’oggetto, denominati picchetti.
Nel modello viene anche memorizzato il valore del livello di grigio nell’intorno di
ogni picchetto.
La ricerca della forma avviene iterando il processo di deformazione del modello fino ad
ottenere una differenza minima fra i livelli di grigio memorizzati e quelli dell’immagine analizzata.
Maggiori dettagli su questo algoritmo verranno esposti nei capitoli successivi.
4. Active appearence model (AAM): anch’esso utilizza un modello statistico deformabile dell’oggetto da ricercare, ma si differenzia dall’ASM nella memorizzazione dei livelli di grigio. In questo algoritmo viene generato sia un modello per la forma dell’oggetto sia un modello per il livello di grigi (texture dell’immagine).
La ricerca della forma avviene tramite confronto tra l’immagine analizzata e le immagini sintetizzate dalla deformazione del modello.
Verifiche sperimentali hanno dimostrato che l’active shape model è più veloce nella ricerca della forma, mentre l’active appearence model ha una precisione maggiore e richiede un numero minore di punti per la costruzione del modello.
5. Snakes o contorni attivi: i contorni attivi sono curve definite all’interno del dominio
di un’immagine, che possono essere modificate in base a vincoli interni alla curva stes-
28
CAPITOLO 2 Sistemi di Gaze tracking
sa e vincoli esterni dovuti all’immagine su cui sono applicate. I vincoli interni ed esterni sono definiti in modo tale da conformare la curva al contorno della forma da ricercare.
Vi sono due tipi di algoritmo per “contorni attivi” presenti in letteratura:
5.1. Contorni attivi parametrici: l’immagine è utilizzata per definire funzioni potenziali i cui minimi sono utilizzati come vincoli su cui far spostare le curve che definiscono i contorni.
5.2. Contorni attivi geometrici: basati sulla teoria dell’evoluzione delle curve sui flussi
geometrici, questi modelli definiscono un contorno attivo come un insieme di livello di una funzione scalare in un dominio spaziale.
E’ stato dimostrato che i metodi sopra riportati ottengo risultati equivalenti, con la
differenza sostanziale che i contorni attivi geometrici nell’analisi delle immagini
con più oggetti riescono ad adattarsi automaticamente, mentre quelli parametrici necessitano ulteriori modifiche per poter distinguere diverse forme.
2.4 Determinazione del punto fissato (gaze detection)
Lo scopo di questo modulo è stabilire il punto o la zona dello schermo fissato basandosi
sulle forme di occhio o testa riconosciute(figura 2.6).
Figura 2.6 : determinazione punto fissato
Per effettuare questa funzione si deve stabilire una distinzione in classi delle forme in ingresso, in modo da porre in relazione ogni forma in ingresso con l’indicazione della zona
fissata in uscita.
Il processo di classificazione può essere distinto in tre fasi:
29
CAPITOLO 2 Sistemi di Gaze tracking
1
Addestramento: si produce un modello da un insieme di addestramento.
L’addestramento è definito supervisionato quando viene indicata per ogni oggetto
dell’insieme di addestramento la classe a cui appartiene, mentre esistono anche tecniche di addestramento non supervisionato in cui vengono distinte e generate automaticamente le classi.
Il risultato può essere presentato in varie forme: alberi di decisione,regole,formule
matematica,ecc..
2
Stima dell’accuratezza: si stima la precisione del modello un insieme di test. Si misura la percentuale di errori commessi sull’insieme di test, che non deve coincidere
con l’insieme di addestramento per non avere stime troppo ottimistiche dell’accuratezza.
3
Utilizzo del modello: si classificano oggetti di classe non conosciuta a priori.
Per costruire un modello efficiente si deve effettuare una preparazione dei dati:
•
Data Cleaning: molti algoritmi di classificazione effettuano come primo passo una
rielaborazione in modo da:
1. eliminare rumore: solitamente tramite smoothing.
2. eliminare eventuali outlier : per outlier si intendono dati con caratteristiche completamente diverse dagli altri.
3. trattare gli attributi mancanti: solitamente si sostituisce la media dei valori per l’attributo.
•
Analisi di rilevanza degli attributi: denominata anche feature selection, ha lo scopo
di ottimizzare le prestazioni e migliorare il modello. Si base sul presupposto che il
tempo impiegato a scegliere gli attributi rilevanti di un oggetto sia minore del tempo per eseguire un addestramento su tutti gli attributi dell’oggetto.
•
Trasformazione dei dati: solitamente si effettua una normalizzazione dei dati, oppure si assegna una gerarchia di priorità ai diversi attributi dell’oggetto da classificare.
Criteri di valutazione e confronto per metodologie di classificazione sono:
•
Accuratezza nella predizione.
•
Velocità: tempo per costruire il modello e tempo per utilizzarlo.
30
CAPITOLO 2 Sistemi di Gaze tracking
•
Robustezza: misura l’abilità del modello nel fare previsioni in condizione di dati errati o mancanti.
•
Scalabilità: indica se l’efficienza è mantenuta anche aumentando la quantità di dati
del modello.
•
Interpretabilità: possibilità di assegnare un significato intuitivo al modello generato.
Di seguito sono riportati alcuni sistemi e algoritmi che possono essere utilizzati per svolgere le funzione sopra descritte.
•
Classificazione con Alberi di Decisione: il modello è rappresentato da un albero in
cui:
Χ
I nodi interni rappresentano test sugli attributi.
Χ
I rami rappresentano i risultati del test al nodo padre.
Χ
Le foglie rappresentano una classe o una distribuzione di probabilità di una
classe
Χ
L’apprendimento consiste nella costruzione dell’albero di decisione e
nello sfoltimento (o pruning) per eliminate rumori nei dati o outlier.
Il modello viene utilizzato controllando i valori degli attributi del dato in
ingresso e confrontandolo a partire dal nodo radice fino ad arrivare ad un
nodo foglia.
•
Regole di Classificazione: una regola di classificazione è una formula logica del
tipo:
IF <antecedente> THEN <conseguente>
L’antecedente è rappresentato da una serie di test, come i nodi dell’albero di decisione, oppure da una formula logica.
Il conseguente dà la classe da assegnare agli oggetti che soddisfano l’antecedente.
Per generare un insieme di regole si può utilizzare un albero di decisione, oppure
utilizzare algoritmi di copertura, che vengono così definiti perché ad ogni passo coprono un sottoinsieme degli oggetti della classe. Un esempio di algoritmo di copertura è PRISM che opera nel seguente modo:
o Si parte da una regola di base senza condizioni.
o Si migliora la regola aggiungendo dei test che migliorano l’accuratezza, ossia il rapporto tra gli oggetti che soddisfano sia la premessa che la conclu31
CAPITOLO 2 Sistemi di Gaze tracking
sione e il numero di oggetti che soddisfano la premessa.
o Ogni nuovo test riduce la copertura della regola.
o Ci si ferma quando l’accuratezza è 1 o la regola non si può dividere.
•
Classificatore Bayessiano: è un metodo statistico di classificazione, predice la
probabilità che un dato oggetto appartenga ad una determinata classe.
Ogni istanza dell’insieme di addestramento modifica in maniera incrementale la
probabilità che un’ipotesi sia giusta.
Sia X un oggetto da classificare, e C1,….Cn le possibili classi. I classificatori
Bayessiani calcolano la probabilità che un oggetto X appartenga ad una classe Ci
come:
P C iX P X C i P C i PX Si scegli la classe Ci che massimizza tale probabilità.
Χ
P C i è la probabilità di rilevare la classe Ci, si calcola dall’insieme di adde-
stramento facendo un rapporto fra la frequenza in cui appare la classe Ci e il numero totale di elementi.
Χ
P(X) è la probabilità di avere come dato l’oggetto X, solitamente si considera
uguale per ogni elemento.
Χ
P X C i è la probabilità di avere l’oggetto X nella classe Ci. Se si considerano
oggetti con molti attributi per poter rendere possibili i calcoli, essi vengono assunti come indipendenti.
•
Reti Bayessiane: sono costituite da un grafo diretto aciclico e da una tabella di
probabilità condizionata. Nel grafo ogni nodo è una variabile casuale ed ogni
arco rappresenta una dipendenza probabilistica. Queste reti superano il limite
del semplice classificatore Bayessiano permettendo di esplicitare le relazioni
che esistano fra i vari attributi di uno stesso oggetto.
•
Metodi basati sulle istanze: memorizzano gli oggetti che fanno parte dell’insieme di addestramento e rimandano ogni calcolo al momento in cui un nuovo
oggetto deve essere classificato. Questo tipo di valutazione viene anche definita
lazy evaluation (valutazione pigra) e si contrappone agli altri metodi definiti di
eager evaluation.
32
CAPITOLO 2 Sistemi di Gaze tracking
Fanno parte di questa categoria gli algoritmi k-nearest neighbor e case-based
reasoning.
Questi algoritmi hanno il vantaggio di essere più accurati, avendo uno spazio
delle ipostesi maggiore, ma sono computazionalmente molto pesanti.
•
Reti neurali: sono un modello matematico di processamento delle informazioni, che cercano di simulare il funzionamento dei neuroni all'interno di un sistema informatico. Possono essere composte sia da programmi che da hardware
dedicato. Le reti neurali si basano principalmente sulla simulazioni di neuroni
artificiali opportunamente collegati.
I suddetti neuroni ricevono in ingresso degli stimoli e li elaborano. L'elaborazione può essere anche molto sofisticata ma in un caso semplice si può pensare che
i singoli ingressi vengano moltiplicati per un opportuno valore detto peso, il risultato delle moltiplicazioni viene sommato e se la somma supera una certa soglia il neurone si attiva attivando la sua uscita. Il peso serve a quantificare l'importanza dell'ingresso, un ingresso molto importante avrà un peso elevato, mentre un ingresso poco utile all'elaborazione avrà un peso inferiore. I singoli neuroni vengono collegati alla schiera di neuroni successivi, in modo da formare
una rete di neuroni. Normalmente una rete è formata da tre strati. Nel primo abbiamo gli ingressi(I), questo strato si preoccupa di trattare gli ingressi in modo
da adeguarli alle richieste dei neuroni. Se i segnali in ingresso sono già trattati
può anche non esserci. Il secondo strato è quello nascosto (H, hidden), si preoccupa dell'elaborazione vera e propria e può essere composto anche da più colonne di neuroni. Il terzo strato è quello di uscita (O) e si preoccupa di raccogliere i
risultati ed adattarli alle richieste del blocco successivo della rete neurale. Queste reti possono essere anche molto complesse e coinvolgere migliaia di neuroni
e decine di migliaia di connessioni. La fase più importante dell’implementazione di una rete neurale è l’apprendimento che consiste nella determinazione dei
pesi dei singoli neuroni che compongono la rete. L’apprendimento può essere
effettuato secondo tre modalità:
Χ
Supervisionato (supervised learning): è basato su un insieme di dati per
l’addestramento (training set) che comprende esempi di ingressi con relative uscite loro corrispondenti. La rete tramite un opportuno algoritmo
33
CAPITOLO 2 Sistemi di Gaze tracking
cerca di riconoscere la relazione incognita che lega le variabili di ingresso
a quella di uscita, con lo scopo di poter fare previsioni anche laddove l’uscita non è nota a priori.
Χ
non supervisionato (unsupervised learning), basato su algoritmi d’addestramento che modificano i pesi della rete facendo esclusivamente riferimento ad un insieme di dati che include le sole variabili d’ingresso. Tali
algoritmi tentano di raggruppare i dati d’ingresso e di individuare pertanto degli opportuni cluster rappresentativi dei dati stessi, facendo uso tipicamente di metodi topologici o probabilistici. L’apprendimento non supervisionato è anche impiegato per sviluppare tecniche di compressione
dei dati.
Χ
con rafforzamento (reinforcement learning), nel quale un opportuno algoritmo si prefigge lo scopo di individuare un certo modus operandi, a
partire da un processo d’osservazione dell’ambiente esterno; ogni azione
ha un impatto sull’ambiente, e l’ambiente produce una retroazione che
guida l’algoritmo stesso nel processo d’apprendimento. Tale classe di
problemi postula un agente, dotato di capacità di percezione, che esplora
un ambiente nel quale intraprende una serie di azioni. L’ambiente stesso
fornisce in risposta un incentivo o un disincentivo, secondo i casi. Gli algoritmi per il reinforcement learning tentano in definitiva di determinare
una politica tesa a massimizzare gli incentivi cumulati ricevuti dall’agente nel corso della sua esplorazione del problema. L’apprendimento con
rafforzamento differisce da quello supervisionato poiché non sono mai
presentate delle coppie input-output di esempi noti, né si procede alla
correzione esplicita di azioni subottimali. Inoltre, l’algoritmo è focalizzato sulla prestazione in linea, la quale implica un bilanciamento tra esplorazione di situazioni ignote e sfruttamento della conoscenza corrente.
Le reti neurali hanno il vantaggio di effettuare predizione molto precise e robuste,
ma hanno lo svantaggio di richiedere un lungo periodo di apprendimento.
34
CAPITOLO 2 Sistemi di Gaze tracking
2.5 Alcuni sistemi di eye-tracking esistenti
Esistono sul mercato diversi sistemi di tracciamento oculare, si distinguono essenzialmente
in due categorie:
•
Sistemi a postazione fissa : i dispositivi vengono posizioni su un supporto distante
dall’utente (scrivania,carrozzina,letto).
•
Sistemi indossabili : i dispositivi devono essere posizioni a diretto contatto con l’utente, di solito sono costituiti da visori da indossare come occhiali.
Di seguito è riportata la descrizione di alcuni sistemi commerciali con una breve descrizione del principio di funzionamento e delle caratteristiche tecniche.
2.5.1 Mytobii
Prodotto dalla società svedese Mytobii technology,questo dispositivo è costituito da un monitor che integra due emettitori di raggi infrarossi e una telecamera ad alta definizione sensibile agli infrarossi. Il sistema cattura ed analizza i raggi riflessi dalla cornea e stabilisce il
punto dello schermo osservato.
Figura 2.7: immagine di Tobii
Tab. 2.1
CARATTERISTICHE TECNICHE Mytobii
Display
17’’ TFT (1280x1024 px.)
Requisiti di sistema
Windows XP, porta firewire
Peso
9 Kg
Distanza di lavoro
50-70 cm
Libertà dei movimenti della testa
30x15x20 cm
Massima velocità movimento della
testa
10 cm/s
35
CAPITOLO 2 Sistemi di Gaze tracking
Tab. 2.1
CARATTERISTICHE TECNICHE Mytobii
40 punti/s
Riconoscimento punti osservati
Precisione di stima del punto osservato
Circa 0,5 cm
Tolleranza alla luce ambientale/so- Funziona bene in diverse condizioni di illuminazione
lare
Tolleranza agli occhiali e lenti a
contatto
Utilizzando un supporto per monitor può essere
Posizionamento
posizionato su una scrivania o su un letto.
Compensazione dell’errore nel movimento della testa
Applicazioni incluse
Tempo
di
posizionamento
l’hardware
Funziona nella maggioranza dei casi
del-
Circa 1 grado.
•
Sostituto della tastiera
•
Sostituto del mouse
•
Internet browser
•
Client e-mail
•
Controllo ambientale
Meno di 30 minuti
Tempo di calibrazione
Pochi secondi
Prezzo
17900 …
2.5.2 Eyegaze System
Prodotto dalla LC Technologies inc. questo sistema ha lo stesso principio di funzionamento
descritto prima con la differenza che la telecamera e l’emettitore di raggi infrarossi sono
posizionati al disotto del monitor.
Una limitazione di Eyegaze è la scarsa tolleranza ai movimenti della testa e la necessità che
nella prossimità della telecamera non ci siano fonti di interferenza infrarosse come luci di
elevata intensità.
Eyegaze esiste in due versioni:
•
eyegaze analysis: dedicata agli sviluppatori in cui sono incluse le librerie per poter
36
CAPITOLO 2 Sistemi di Gaze tracking
sviluppare programmi che utilizzino questo dispositivo.
•
eyegaze comunication: integra programmi di comunicazione dedicati ad utenti con
difficoltà motorie. Una possibile configurazione è rappresentata in figura 2.
Figura 2.8: immagine di eyegaze
Tab. 2.2: Caratteristiche tencniche Eyegaze System
Peso
2,7 Kg
Precisione di stima del punto osservato
0,45÷0,70 gradi (0,38÷0,63 cm)
Tolleranza alla luce ambientale/solare
Poco tollerante a forti fonti di luce infrarossa
Libertà dei movimenti della testa
3,8 x 3,0 x 3,8 cm
Frequenza di campionamento
60 Hz
Utilizzo CPU
50-60 %
Utilizzo Memoria
6 MB
Tempo di Calibrazione
15 s
Applicazioni incluse
•
Sostituto della tastiera
•
Sostituto del mouse
•
Internet browser
•
Client e-mail
•
Supporto per la lettura libri elettronici
•
Controllo ambientale
2.5.3 Quick Gaze II
Prodotto dall’Eyetech Digital System, come i precedenti dispositivi è costituito da una videocamera sensibile agli infrarossi e da due emettitori. La caratteristica che lo differenzia e
lo rende degno di nota è la possibilità data le ridotte dimensione dei dispositivi di essere
applicato con facilità ad un computer portatile (come mostrato in figura 2.9).
37
CAPITOLO 2 Sistemi di Gaze tracking
Figura 2.9: Quick Glace in configurazione portatile
Tab. 2.3: Caratteristiche tecniche Quick Glace II
Requisiti di sistema
Microsoft Windows 98/XP (800 MHz o superiore)
Precisione di stima del punto 1 grado
osservato
Libertà dei movimenti della te- Dipende dal modello, da 4 x 4 cm a 10 x 10 cm
sta
Tolleranza
alla
luce Dipende dal modello, la tolleranza varia da discreta a
ambientale/solare
Tolleranza agli occhiali e lenti a
contatto
buona
Funziona nella maggioranza dei casi
Riconoscimento punti osservati 15÷30 punti/s
Tempo di calibrazione
Decine di secondi.
•
Sostituto della tastiera
•
Sostituto del mouse
•
Internet browser
•
Client e-mail
•
Sintesi Vocale
•
Giochi
Applicazioni incluse
Numero di sistemi in uso
500÷1000
2.5.4 EagleEyes
Sviluppato da Opportunity foundation of America, per il tracciamento della posizione oculare utilizza la tecnica dell’elettro-oculografia che consiste nella misurazione del potenziale
elettrico prodotto dal movimento oculare tramite cinque elettrodi posti sulla testa dell’utente. Questo sistema è disponibile gratuitamente per utenti selezionati dalla fondazione.
38
CAPITOLO 2 Sistemi di Gaze tracking
In tabella 6.4 sono riportate alcune caratteristiche tecniche di EagleEyes, tra cui emergono
l’ampia libertà dei movimenti della testa e l’indipendenza dalle condizioni ambientali di illuminazione.
Tab 2.4: Caratteristiche tecniche Eagle Eyes
Requisiti di sistema
Microsoft Windows 98/XP , porta USB
meno di 500 g
Peso
Tolleranza alla luce ambientale/solare
Tolleranza agli occhiali e
Funziona in tutte le condizioni di luce.
Funziona bene nella maggioranza dei
casi
lenti a contatto
Libertà dei movimenti della Consente ampia libertà (superiore a 20
cm)
testa
15 Hz
Frequenza di campionamento
Tempo
di
posizionamento
10 minuti
dell’hardware
variabile
Tempo di Calibrazione
Applicazioni incluse
•
Sostituto della tastiera
•
Sostituto del mouse
•
Internet browser
•
Client e-mail
•
Supporto per la lettura libri
elettronici
•
Controllo ambientale
10÷50
Numero di sistemi in uso
39
CAPITOLO 3
Active shape model
3.1 Introduzione
Per sviluppare il sistema di gaze tracking oggetto di questa tesi, si è partiti da un sistema
esistente che utilizza l'active shape model (ASM) come algoritmo di ricerca forme.
Nel corso del progetto si è analizzata e ottimizzata l'integrazione di questa tecnica all'interno del sistema.
In questo capitolo è illustrato il principio di funzionamento dell'active shape model e del
modello matematico su cui è basato.
L’algoritmo di active shape model fu descritto per la prima volta in un articolo del 1992
intitolato “active shape models their training and aplication”, scritto da un gruppo di ricercatori formato da T.F. Cootes, C.J. Taylor ,D.H Cooper,e J.Graham.
L’obbiettivo di questo algoritmo è la ricerca di forme di oggetti conosciuti all’interno di
immagini. Questo metodo si differenzia dai predecessori per l’utilizzo di modelli flessibili
e deformabili per rappresentare le forme degli oggetti , ciò lo rende adatto all’utilizzo in
40
CAPITOLO 3 Active shape model
tutti i casi in cui si debbano ricercare oggetti il cui aspetto può variare (es. organi, componenti elettronici,ecc.).
Il modello della forma di un oggetto è costruito a partire da un insieme di immagini denominato training set.
In questa tecnica ogni oggetto è rappresentato da un’insieme di punti.
I punti possono caratterizzare il contorno, caratteristiche interne e particolarità esterne dell’oggetto come il centro della sezione concava di un bordo.
I punti vengo posizionati nello stesso modo per ogni immagine del training set.
Il posizionamento dei punti avviene in modo manuale. Ci riferiremo al singolo punto con
il termine picchetto ,mentre a questa procedura con il termine di picchettatura.
L’insieme dei punti viene allineato automaticamente per minimizzare la varianza nella distanza fra punti equivalenti nelle diverse immagini.
Dall’analisi della statistica della posizione dei punti viene ricavato un “modello della distribuzione dei punti” che fornisce la posizione media dei punti e comprende un numero di
parametri che controllano le principali modalità di variazione riscontrate nel training set.
Dato il modello appena descritto e un'immagine contenente un esemplare dell'oggetto modellato, l'interpretazione dell'immagine consiste nella scelta del valore di ogni parametro in
modo tale da avere la migliore corrispondenza tra la forma del modello e l'oggetto nell'immagine.
L'active shape model è una tecnica che funziona a partire da un modello non molto preciso
per quanto riguarda forma,posizione,scala e orientamento, che viene raffinato iterativamente confrontandolo con l'immagine in cui si ricerca l'oggetto; si utilizzano le differenze
fra modello e immagine per modificare i parametri del modello deformando la forma.
Nell'articolo sopracitato venivano illustrati esempi di ricerca di forme di resistori su un circuito stampato, per contestualizzare tali esempi all'oggetto di questa tesi si sono modificati
con campioni di forme d'occhio.
41
CAPITOLO 3 Active shape model
3.2 Modello di distribuzione dei punti
Il nostro scopo è creare un modello per rappresentare le forme di occhio come appaiono in
immagini catturate da webcam come mostrato in figura 3.1 .
Figura 3.1: immagini di occhio catturate da webcam
Le immagini di occhi che fissano differenti punti dello schermo sono rappresentate da forme molto differenti tra loro, quindi rendono inadatto l'utilizzo di un modello rigido di rappresentazione.
L'obbiettivo che si prefigge il modello di distribuzione dei punti è la descrizione sia della
forma tipica dell'oggetto sia della tipica variazione tra una forma e l'altra a partire da un insieme di immagini che costituisce il training set.
Si ottiene ciò rappresentando ogni campione come un insieme di punti etichettati, denominati “picchetti”.
3.2.1 Picchettatura del training set
Ogni forma per essere modellata è rappresentata da un'insieme di punti. Per la forma dell'occhio abbiamo scelto di posizionare 37 picchetti seguendo sia il contorno dell'occhio sia
il contorno della pupilla come mostrato in figura 3.2.
Figura 3.2: Picchetti occhi
42
CAPITOLO 3 Active shape model
Ogni picchetto rappresenta un particolare punto dell'oggetto o del suo contorno: per esempio il picchetto 1 e il picchetto 3 rappresentano gli estremi sinistro e destro dell'occhio,
mentre i picchetti 2 e 4 indicano gli estremi superiore e inferiore.
Il metodo funziona modellando come i diversi picchetti tendono a muoversi insieme al variare delle forme. Se la picchettatura non è corretta, con un particolare picchetto posizionato malamente, questo metodo non riesce a catturare la variabilità della forma con precisione.
Possiamo ricondurre i picchetti a tre tipologie:
1.
posizionati in punti con particolare significato per l'applicazione che usa il modello: come ad esempio il centro della pupilla.
2.
posizionati in punti senza particolare significato per le applicazioni: come il punto
più elevato della forma, una curvatura estrema o un caratteristico orientamento
3.
punti di interpolazione fra picchetti di tipo 1 e picchetti di tipo 2
E' da notare che i picchetti possono essere utilizzati per descrivere singoli oggetti o diversi
oggetti che hanno correlazione spaziale, come ad esempio diverse parti di una struttura.
3.2.2 Allineamento del training set
Questo metodo di costruzione del modello funziona analizzando le statistiche delle coordinate delle posizioni dei picchetti nel training set. Per confrontare punti equivalenti di immagini diverse, i picchetti devono essere allineati rispetto a un insieme di assi.
Si ottiene l'allineamento voluto attraverso variazioni di scala, rotazioni e traslazioni delle
forme del training set in modo che corrispondano il più possibile. Lo scopo è minimizzare
la somma pesata dei quadrati delle distanze fra punti equivalenti di forme differenti.
Consideriamo prima l'allineamento di una coppia di forme, sia
x i un vettore che descri-
ve le n posizioni della forma i-esima del training set.
x i x i0 , y i0 , x i1 , y i1 ,... , x ik , y ik ,... , x i n#1 , y i n#1 Sia
M s , x una rotazione di θ e uno scalamento di s. Date due forme simili x i e
x j possiamo scegliere j , s j e una traslazione t j t x j , t y j che mappano x i su
M s , x j t j in modo da minimizzare la somma pesata:
E j x i #M s , x j #t j T W x i # M s , x j #t j 43
CAPITOLO 3 Active shape model
M s , dove
s cos x j k # s sin y j k
x jk
y jk
s sin x j k s cos y j k
W è una matrice diagonale di pesi per ogni punto.
Se poniamo
a x s cos a y s sin un approccio ai minimi quadrati (differenza rispetto ognuna delle variabili
ax , ay ,tx ,t y )
porta ad un insieme di quattro equazioni lineari.
X 2 #Y 2 W
0
0
W
Y2 X2
Z
0
X2 Y2
0
Z #Y 2 X 2
ax
X1
ay
Y
1
tx
C1
ty
C2
dove
n#1
n#1
X i w k x ik
Y i w k y ik
k 0
k 0
n#1
n#1
Z w k x 2 k y 2 k W w k
2
2
k 0
k 0
n#1
C 1 w k x 1 k x 2 k y 1 k y 2 k k 0
n#1
C 2 w k y 1 k x 2 k # x 1 k y 2 k k 0
I pesi possono essere scelti in modo tale da dare più importanza ai punti che tendono ad essere maggiormente “stabili” nell'insieme: ossia quei punti che si discostano poco dai corrispettivi altri punto delle altre forme.
La matrice dei pesi utilizzata è calcolata come segue:
sia
R k l la distanza tra i punti k e l in una forma: sia V R
stanza nell'insieme delle forme. Si è scelto un peso
kl
la varianza della di questa di-
w k per il punto k-esimo usando
#1
n#1
wk
VR
kl
l0
Se un punto si muove notevolmente rispetto agli altri punti della forma la somma delle varianze sarà alta e sarà assegnato un peso di basso valore, mentre se un punto tende a rimanere fisso rispetto agli altri avrà una somma delle varianze bassa e gli sarà assegnato un
44
CAPITOLO 3 Active shape model
peso elevato e riscontrare tali punti nelle altre forme sarà una priorità.
Si è utilizzato il seguente algoritmo per allineare un'insieme di N forme.
Χ
Si ruota, si scala e si trasla ogni forma del training set per allinearla con la prima .
Χ
Finché il processo non converge
Χ
Si calcola la forma media dalle forme allineate.
Χ
Si normalizza l'orientamento, la scala e l'origine della forma media calcolata precedentemente per riportarla a caratteristiche predefinite.
Χ
Si riallinea ogni forma dell'insieme con la forma media corrente.
La normalizzazione della forma media, con una scala e una posizione predefinita, è necessaria in ogni interazione per garantire la convergenza dell'algoritmo.
Senza normalizzazione vi sarebbero
4 N variabili ( , s , t x , t y
4 N #1 vincoli su
per ognuna delle N forme) e l'algoritmo sarebbe divergente, la forma media sarebbe, contratta, ruotata e traslata all'infinito. I vincoli sulla posizione e la scala della forma media
permettono di avere un'unica soluzione all'equazione.
3.2.3 Cattura delle statistiche di un insieme di forme allineate
In figura X le coordinate di alcuni dei vertici delle forme di occhio allineate sono rappresentate sovrapposte alla forma media. Si può notare che alcuni vertici mostrano una piccola
variabilità nel training set, mentre altri formano “nuvole” di punti più diffuse.
Ogni campione del training set, quando allineato, può essere rappresentato da un singolo
punto in uno spazio
2 n dimensionale. Perciò un insieme di
stituisce una nuvola di
N punti in uno spazio
N campioni di forme co-
2 n dimensionale.
Si assume che questi punti si trovino all'interno di una regione dello spazio che chiamiamo
“dominio delle forme possibile”, e che diano un indicazione sulla forma e sulla dimensione
di questa regione. Muovendosi all'interno del “dominio delle forma possibile” si possono
generare nuove forme in maniera sistematica. L'approccio descritto di seguito, cerca di modellare la forma della nuvola di distribuzione dei punti in un spazio ad elevata dimensione,
perciò cerca di stabilire la relazione tra le posizioni dei singoli picchetti.
Si assume che la nuvola sia approssimativamente ellissoidale e si procede a calcolarne il
centro (ottenendo una forma media) e i suo assi maggiori, che danno un modo per muoversi all'interno di essa.
Dato un insieme di
N
forme allineate, la forma media,
45
x (il centro del dominio ellis-
CAPITOLO 3 Active shape model
soidale della forma possibile), è calcolato usando
x 1
N
N
xi
i1
Ogni asse dell'ellissoide dà una modalità di variazione, un modo col quale i picchetti tendo
a muoversi insieme al variare della forma. Per ogni campione nel training set si calcola la
sua deviazione dalla forme media,
d xi
dove
d x i x i # x
Si può calcolare la matrice di covarianza
S
1
N
S di dimensioni
2 n)2 n , usando
N
d x i d x Ti
i1
Gli assi principali dell'ellissoide, sono descritti da
lori di
p k k 1,.... ,2 n l'insieme di autova-
S tali che
Sp k k p k
(dove k è il k-esimo autovalore di
S , con k k 1 )
T
p k p k 1
Può essere dimostrato che gli autovettori della matrice di covarianza corrispondono ai maggiori autovalori che descrivono gli assi più lunghi dell'ellissoide, e perciò le più significanti
modalità di variazione delle variabili sono usate per ottenere la matrice di covarianza. La
varianza determinata da ogni autovettore è uguale al corrispondente autovalore. La maggior
parte della variazione può essere determinata in un piccolo numero di modi,
significa che l'ellissoide di dimensione
ne
t . Questo
2 n è approssimato da un ellissoide di dimensio-
t , dove t è scelto in modo tale che l'ellissoide originale abbia abbia un relativa-
mente piccola larghezza lungo gli assi
Un metodo per calcolare
t
t1 e superiori.
è scegliere il più piccolo numero di modi tali che la somma
delle loro varianze determini una sufficientemente larga proporzione di
T , la varianza
totale di tutte le variabili, dove
2n
T k
k 1
Ogni punto del dominio della forma possibile può essere ottenuto a partire dal punto medio
e sommando una combinazione lineare di autovettori. Il k-esimo autovettore incide nel modello sul movimento del punto
l lungo un vettore parallelo a
tenuto da l-esima coppia di elementi in
pk :
46
d x k l , d y k l , che è ot-
CAPITOLO 3 Active shape model
T
p k d x k 0 , d y k 0 , ...... , d x k l , d y k l , ...... , d x k n#1 , d xy k n#1 Una forma nel training set può essere approssimata usando la forma media e la somma pesata delle suo deviazioni ottenuta dalla prime t mode:
x x Pb (1),
dove
T
P p1 , p1 , . . . , p t è la matrice dei primi t autovettori,
e bb1 b 2 .... bt T è un vettore di pesi.
Le equazioni sopra descritte permettono di generare nuovi campioni di forme variando i
parametri b k all'interno di appropriati limiti, in modo tale che la nuova forma sia simile a quelle del training set. I parametri sono linearmente indipendenti, anche ci potrebbe essere una dipendenza non lineare ancora presente.
I limiti per
b k sono calcolati esaminando la distribuzione dei valori dei parametri richie-
sti per generare il training set. Dato che la varianza di b k nel training set può essere mostrata da k , limiti idonei sono tipicamente dell'ordine di
#3 k b k 3 k
(2)
poiché la maggior parte dei punti è localizzata entro tre volte la deviazione standard dal
punto medio.
3.3 Ricerca delle forme nelle immagini
Dove aver generato un modello flessibile , esso verrà utilizzato per trovare nuovi campioni
di oggetti modellati nelle immagini. Questo coinvolge la ricerca della forma e la scelta dei
parametri in modo tale da far coincidere il modello con le strutture dell'immagine interessata. Un 'istanza del modello è data da
X M s , x X c , dove
T
X c X c , Y c , X c , Y c , ..... , X c , Y c M s , è una rotazione di e uno scalamento di s, e
X c , Y c è la posizione del centro del modello nell'immagine.
In questo paragrafo sarà descritto un metodo iterativo per trovare un
X appropriato data
un'approssimazione iniziale molto poco accurata.
L'idea dello schema iterativo è posizionare la stima corrente di
47
X
nell'immagine ed esa-
CAPITOLO 3 Active shape model
minare la regione dell'immagine attorno ad ogni punto del modello per determinare spostamento in una posizione migliore. Queste deformazioni locali sono trasformate in cambiamenti di posa,scala e parametri della forma dei modello di distribuzione dei punti.
I vincoli sui parametri del modello possono essere applicati per fare in modo che la forma
generata sia simile a quelle presenti nel training set.
La procedura di deformazione viene ripetuta Finché non si ottengono significanti cambiamenti.
3.3.1 Calcolo dello spostamento indicato per ogni punto del modello
Data una stima iniziale delle posizioni dell'insieme dei punti del modello che si sta cercando di adattare ad un oggetto nell'immagine, si ha necessità di trovare un insieme di aggiustamenti che spostino ogni punto in una posizione migliore. Quando i punti del modello
rappresentano i contorni dell'oggetto questa procedura comporta lo spostamento lungo i
bordi dell'immagine. Denotiamo l'insieme degli aggiustamenti come un vettore
dX ,
dove
d X d X 0 , d Y 0 , ........ , d X n#1 , d Y n#1 3.3.2 Calcolo dei cambiamenti nella posizione e nei parametri della forma
L'obbiettivo e modificare la posizione e i parametri della forma del modello per muovere i
punti dalla loro attuale posizione nell'immagine,
X
, per essere il più vicini possibile
alle nuove posizioni indicate X d X , rispettando i vincoli del modello.
Se la stima corrente del modello è centrata in
X c , Y c con orientamento e scala
s , dapprima si deve calcolare come modificare questi parametri per avere un migliore
adattamento all'immagine. Ciò è ottenuto trovando la traslazione d X c , d Y c la rotazione
d e il fattore di scala
1d s che meglio mappa l'insieme corrente di punti,
X , nell'insieme di punti dato da X d X .
Dopo aver modificato le variabili che controllano la posizione del modello, rimangono da
cambiare i parametri che permettono di deformare la forma del modello.
Si calcolano gli aggiustamenti,
lo spostamento dei punti
X di
d x , nelle coordinate locali dell'immagine, richiesti per
dX
quando si combinano con gli effetti dei parametri
della nuova scala, rotazione e traslazione.
48
CAPITOLO 3 Active shape model
La posizione iniziali dei punti nell'immagine è data da
X M s , x X c
Si calcolano un insieme di aggiustamenti residui
d x nelle coordinate locali del modello
in modo che:
M s1d s ,
d xd x X c d X c X d X perciò
M s1d s , d xd x M s , x d X # X c d X c e poiché
M
#1
#1
s , M s ,#
si ottiene
d xM s 1d s#1 ,#
d y # x (3)
, dove
yM s , x d X #d X c
L'equazione (3) fornisce un metodo di calcolare i movimenti indicati nei punti
x nelle
coordinate locali del modello. Questi movimenti in genere non sono consistenti con il modello della forme.
Con lo scopo di applicare i vincoli della forma, si trasforma n d x nello spazio dei parametri del modello. Sia d b , i cambiamenti ai parametri del modello richiesti per adattare
i punti del modello a d x secondo i vincoli.
Si vuole calcolare
d b in modo che
xd x x P bd b (4)
Dato che ci sono solo t 2 n modi di variazioni sono possibili e
dx
può muovere i punti in 2 n differenti gradi di libertà, si può ottenere un'approssimazione
della deformazione richiesta.
Sottraendo la (1) dalla (20) si ottiene
d x P b
e
T
d b P d x (5)
dato che
P T P #1 , poiché le colonne di
P sono mutuamente ortogonali.
Può essere dimostrato che l'equazione (5) è equivalente ad utilizzare l'approssimazione del
minimo quadrato per calcolare i parametri modificati della forma , d b .
49
CAPITOLO 3 Active shape model
3.3.3 Aggiornamento della posizione e dei parametri della forma
Le equazioni precedenti permettono di calcolare i cambiamenti alla variabili di posizionamento e gli aggiustamenti
d X C , d Y C , d , d s ai parametri della forma
db
richiesti per migliorare la corrispondenza tra modello e immagine.
L'aggiornamento dei parametri si applica in uno schema iterativo
X c X c w t d X c
Y c Y c w t d Y c
w d s s 1w s d s
b b
W b d b
dove
w t , w s , w sono pesi scalari e
W b è una matrice diagonale di pesi, uno per ogni
moda. Questa può essere la matrice identità, o ogni peso può essere proporzionale alla deviazione del corrispondente parametro della forma nel training set. Si assicura che il modello venga deformato solamente in forme consistenti col training set ponendo dei limiti al
valore di
bk
. Una forma può essere considerata accettabile se la distanza di Mahalano-
bis D m è minore di una costante opportuna , D max . Questo limite è calcolato in modo
tale che pressoché tutti i campioni presenti nel training set soddisfino l'equazione 16.
3.4 Implementazione dell'algoritmo
E' stato appena descritto nei paragrafi precedenti un metodo generico per ricercare una forma di un oggetto a partire da un modello di distribuzione dei punti.
Non è stato sinora spiegato come implementare lo spostamento e la deformazione della forma del modello sull'oggetto dell'immagine. Questo passo dell'algoritmo non è descritto
specificatamente nell'articolo citato in precedenza, ma viene lasciata libertà di scelta.
Verrà ora descritta l'implementazione adottata nel sistema di gaze tracking esistente.
Per ogni punto di ogni forma presente nel training set viene memorizzata una matrice di
gradienti di colori
W ) H riempita considerando un rettangolo centrato nel picchetto e
con orientamento normale all'andamento del contorno dell'oggetto come mostrato in figura
3.3.
50
CAPITOLO 3 Active shape model
Figura 3.3: Memorizzazione matrice colori
Viene in seguito elaborata una “matrice associativa” che contiene tutti le matrici dei gradienti dei colori di ogni picchetto di ogni forma relazionata al valore dei pesi dei parametri
che deformano il modello. L'aggiornamento delle variabili che determinano la posizione e
dei parametri che deformano il modello avviene minimizzando la differenza fra l'intorno
dei punti in cui è applicato il modello sull'immagine e le matrici dei gradienti di colori memorizzate all'interno della matrice associativa . L'aggiornamento avviene iterativamente
finché non si raggiunge una soglia di precisione voluta.
51
CAPITOLO 4
Analisi di fattibilità
4.1 Introduzione
Prima di procedere all'implementazione del sistema è necessaria una fase di analisi di fattibilità sui diversi componenti di cui è costituito.
In questo capitolo vengono riportati i risultati della fase di analisi effettuata prima e durante
la fase iniziale della progettazione del sistema di gaze tracking.
Le scelte progettuali illustrate nel capitolo successivo sono in gran parte giustificate dalle
problematiche e dalle difficoltà incontrante durante la fase di studio della possibilità tecnica di realizzazione del sistema.
Per verificare le ipotesi teoriche emerse durante la fase di analisi sono stati realizzati applicativi specifici per effettuare test sull'efficienza e la potenzialità di algoritmi e tecniche utilizzate.
Questa sperimentazione ha permesso di selezionare in fase di realizzazione solo le alterna-
52
CAPITOLO 4 Analisi di fattibilità
tive più efficienti e funzionali.
La struttura di questo capitolo ricalca la divisione in moduli di un generico sistema di gazetracking descritta nel capitolo 2.
4.2 Cattura delle immagini
La fase di cattura delle immagini è la base su cui si appoggia il resto del sistema, quindi
deve essere robusta, veloce e utilizzare poche risorse.
Un vincolo progettuale è l'utilizzo di dispositivi di cattura a basso costo per rendere accessibile al maggior numero di persone possibile il sistema di gaze-tracking.
Una webcam comune,attualmente in commercio, è in grado di catturare circa venti immagini al secondo con una risoluzione di 640x480 pixel.
Con un frame rate così basso è impossibile tracciare i movimenti degli occhi perché troppo
rapidi, quindi per determinare la posizione fissata ci si dovrà basare solo sulla forma dell'occhio durante la fase di fissazione e non durante i movimenti saccadici1.
Data la ridotta risoluzione di acquisizione diventa rilevante il posizionamento della webcam: maggiore è la vicinanza della webcam all'occhio maggiore sarà la porzione dell'immagine occupata dall'occhio.
Per poter identificare le forme di occhio quando la fissazione avviene nella parte inferiore
dello schermo è necessario che la webcam sia localizzata al di sotto del monitor (figura
4.1), poiché se fosse posizionata al di sopra la forma dell'occhio sarebbe mascherata dalle
palpebre.
Per quanto riguarda il tracciamento dei movimenti della testa risulta più utile posizionare la
webcam al disopra del monitor, poiché sono utilizzate la forma delle sopracciglia e la direzione del naso per effettuare il riconoscimento del punto fissato (figura 4.2).
Il diverso posizionamento delle webcam in caso di eye-tracking ed head-tracking lascia
aperta la possibilità di utilizzare il sistema con due webcam in contemporanea.
1
Vedere capitolo 1.2
53
CAPITOLO 4 Analisi di fattibilità
Figura 4.2: disposizione webcam Head tracking
Figura 4.1: disposizione webcam Eye tracking
In fase di progettazione sono emerse due possibili architetture d'implementazione del modulo di acquisizione delle immagini.
•
Cattura continua delle immagini della webcam.
•
Cattura delle nuove immagini quando sono necessarie al sistema per eseguire il riconoscimento.
La cattura continua delle immagini della webcam ha il vantaggio di evitare l'implementazione di un protocollo di comunicazione tra modulo di cattura immagini e modulo di riconoscimento forme con il risparmio delle relative tempistiche di funzionamento, ma ha lo
svantaggio di utilizzare risorse del sistema anche quando non strettamente necessarie all'elaborazione e riconoscimento del punto fissato. Il modulo di riconoscimento forme recupera l'immagine da una zona di memoria condivisa con il modulo di acquisizione video.
L'utilizzo della seconda tecnica permette una maggiore indipendenza del modulo di acquisizione video dal resto del sistema.
Quando richiesta l’immagine viene inviata direttamente dal modulo di acquisizione video
al modulo di riconoscimento forme.
4.3 Problematiche nell’utilizzo di ASM
In questo paragrafo sono trattate tutte le difficoltà riscontrante nello studio della possibilità
di implementazione dell'algoritmo di active shape model all'interno del sistema di gazetracking.
54
CAPITOLO 4 Analisi di fattibilità
4.3.1 Difficoltà nel produrre un modello
Come è stato illustrato nel capitolo precedente ASM necessita della costruzione di un modello dell'oggetto da ricercare all'interno delle immagini.
Sono svariate le possibilità di scelta per la costruzione di un modello, di seguito sono riportati i principali quesiti che ci siamo posti prima della sua strutturazione .
•
Cosa modellare esattamente?
•
Quanti picchetti posizionare?
•
Come determinare i punti caratteristici della forma?
•
Quanto deve essere la matrice di colori da memorizzare nell’intorno del picchetto?
•
Quante immagini sono necessarie per produrre il modello?
Un requisito del sistema è la possibilità di funzionare sia in modalità di eye tracker che di
head-tracker quindi si dovranno gestire due modelli diversi.
Per quanto riguarda il tracciamento oculare vi è la possibilità di modellare la forma di un
singolo occhio oppure di entrambi.
Noi abbiamo scelto di concentrarci sulla modellazione di un singolo occhio , essenzialmente per due motivi:
•
Analizzando la variazione della forme degli occhi in relazione al punto osservato si
è notato che le informazioni ottenute da entrambi gli occhi sono ridondanti. Si è
evidenziata inoltre la presenza di un occhio “dominante”: la cui forma ha una differenziazione maggiore rispetto all’altro occhio in relazione ai punti osservati.
•
A parità di numero di picchetti utilizzati per delimitare la forma, concentrare l’attenzione su un unico occhio permette di migliorare la definizione del modello.
Utilizzando la forma di un solo occhio abbiamo però lo svantaggio di avere un ridotto controllo sull’errore durante la fase di riconoscimento, infatti la ridondanza, vista come aspetto
negativo durante la modellazione, permette l’individuazione e il parziale recupero delle
imprecisioni.
Un’importante scelta progettuale è stata la definizione del posizionamento dei picchetti per
la determinazione dei punti caratteristici dei modelli dell’occhio e della testa.
Data l’immagine di occhio in figura 4.3 si possono evidenziare come punti caratteristici
per determinarne la forma: il contorno esterno, la pupilla e il centro della pupilla.
55
CAPITOLO 4 Analisi di fattibilità
Basandoci sugli esempi di modellazione incontrati in letteratura abbiamo ritenuto che per
avere una buona definizione del modello il numero di picchetti ideali da posizionare fosse
37 (figura 4.4).
Figura 4.4: posizione picchetti sull'occhio
Figura 4.3: immagine dell'occhio
Per quanto riguarda la modellazione della posizione della testa (figura 4.5) si possono evidenziare come punti caratteristici: le sopracciglia,il naso, e la zona di intersezione tra le sopracciglia e la sommità del naso.
Per semplificare il progetto del sistema che utilizza il modello, si è deciso di mantenere lo
stesso numero di picchetti sia per la forma dell’occhio sia per quella della testa.
Figura 4.6: posizione dei picchetti sulla testa
Figura 4.5: immagine del volto
In figura 4.6 è rappresentato un esempio di posizionamento dei picchetti sulla testa.
L’unico punto non ancora analizzato per la costruzione del modello è la scelta della dimensione della matrice di colori da memorizzare nell’intorno di ogni picchetto.
Le dimensioni delle matrici di colori incidono notevolmente sulla precisione e sui tempi
della ricerca delle forme: maggiori sono le dimensioni, migliore sarà la precisione e più
lunghi saranno i tempi per trovare la forma all’interno dell’immagine.
E’ difficile stabilire in fase di studio quali siano le dimensioni ideali per cui la scelta è stato
56
CAPITOLO 4 Analisi di fattibilità
posticipata nella fase successiva del progetto.
Per costruire il modello sono necessarie immagini dell’ occhio (o testa) che osserva punti
diversi dello schermo.
Maggiore è il numero di immagini che costituiscono il training set maggiore sarà la precisione del modello.
Il numero di immagini del training set determina anche la complessità computazionale della ricerca per cui è impossibile ipotizzare la costruzione di un unico modello per tutte le tipologie di forme d’occhio.
Il sistema di gaze-tracking quindi gestirà modelli specifici di testa e di occhio per ogni singola persona che l’utilizzi.
4.3.2 Calcolo della complessità computazionale
L’analisi della complessità dell’algoritmo è utile per determinare scelte ottimali dei parametri in fase di costruzione del modello.
Nel capitolo precedente è stata descritta a grandi linee l’implementazione dell’active shape
model utilizzata nel sistema di gaze-tracking.
Per poter effettuare un’analisi di complessità si deve dettagliare maggiormente il funzionamento dell’implementazione adottata.
•
si determina un punto iniziale dell’immagine in cui posizionare la forma “media”
dell’oggetto.
•
Per M volte si trasla,ruota e scala il modello della forma media per minimizzare la
differenza tra i gradienti di colore nell’intorno dei punti dell’immagine corrente e
quelli memorizzati nella matrice associativa.
•
Si seleziona la posizione che la cui distanza della matrici di colori risulta minima
•
Finché la differenza tra i gradienti di colore dell’immagine corrente e i gradienti
contenuti nella matrice associativa non è inferiore ad una determinata soglia, oppure al massimo per K volte si procede nel seguente modo :
1. si ricerca all’interno del training set la forma con minore differenza di colore rispetto all’immagine in cui si sta ricercando la forma
2. si utilizzano i pesi della forma trovata nel training set per calcolare i nuovi pesi
per deformare il modello della forma media
57
CAPITOLO 4 Analisi di fattibilità
3. si allinea la forma ottenuta con la posizione calcolata nel passo 2 dell’algoritmo
I calcoli esposti di seguito sono il risultato di un'estrema semplificazione del problema del
calcolo della complessità, ma riescono comunque a dare l'idea di come i parametri di progetto influiscano sul funzionamento dell'algoritmo.
Per rendere agevoli e più chiara l'analisi sono state considerate tutte le operazioni sia aritmetiche che di confronto con costo computazionale uguale.
Siano H e W rispettivamente le colonne e le righe della matrice dei gradienti di colore.
Ogni colore è rappresenta a sua volta da tre componenti memorizzati in un byte ciascuno.
Per verificare la differenze tra due forme si devono calcolare n dis 37)H )W distanze tra
punti delle matrice. In questa implementazione è considerata la distanza euclidea; siano
Σ e
Σ due punti delle matrici di colore e 5 ∗ % , 5 ∗ % le ri-
spettive componenti di colore, definiamo la distanza tra questi punti come
Γ Σ Σ 5 #5 ∗ #∗ % #% Per calcolare una distanza quindi occorrono 9 operazioni matematiche.
Il numero totali di operazioni per confrontare due forme è ΘΡΣ ΓΛς ) Θ ΓΛς .
Ipotizzando il caso peggiore, in cui l'algoritmo non trovi una differenza tra le forme al disotto della soglia predeterminata, il punto 4 dell'algoritmo si ripete per K volte. Per ricercare una forma in un'immagine il numero di operazioni è dato da
ΘΡΣ ΥΛΦΗΥΦ∆ ΘΡΣ ΓΛς ) 0 . ) 1 . )
dove
N è il numero di immagini del training set.
rappresenta il numero di operazioni necessarie alla deformazione del modello, è funzione del numero di picchetti della forma.
In conclusione, i parametri che influenzano la complessità dell'algoritmo di riconoscimento
sono:
Χ
W e H : numero di righe e colonne della matrice dei colori.
Χ
N: numero di immagini che costituiscono il training set.
Χ
M: numero di interazioni per il posizionamento della forma media del modello.
Χ
K: numero massimo di deformazioni del modello per la ricerca della forma.
58
CAPITOLO 4 Analisi di fattibilità
4.4 Determinazione punto fissato (Gaze detection)
La determinazione del punto fissato è riconducibile ad un generico problema di classificazione in cui i dati di ingresso,rappresentati dalle forme riconosciute, devono essere distinti
in classi che sono rappresentate dalle zone dello schermo fissate.
In questo contesto utilizzeremo il termine classificazione come sinonimo di Gaze detection.
Come è stato illustrato nel capitolo 3 esistono svariate tecniche di classificazione degli oggetti. Per verificare quale tecnica si adatti meglio alla Gaze detection si è sviluppata un'applicazione esterna al sistema per la ricerca delle forme tramite active shape model.
Le considerazioni riportate in questo paragrafo sono inerenti all'eye tracking, in quando per
l'head tracking non si è ricorsi all'utilizzo di un classificatore come verrà spiegato nel capitolo 5.
L'applicazione sviluppata fornisce i seguenti dati in ingresso al classificatore:
Χ
le coordinate dei punti della forma trovata
Χ
il vettore degli autovalori utilizzati per modificare il modello
Χ
il numero di interazioni effettuate
Χ
l'indice dell'immagine del training set che ha la forma più simile a quella trovata
Χ
la minima differenza tra forma trovata e le forme del training set
Sono state analizzate tre possibili implementazioni di classificatore:
Χ
Χ
Χ
un classificatore con fase di addestramento che utilizza i pesi del modello
un classificatore con fase di addestramento che utilizza l'indice delle immagini
un classificatore senza fase di addestramento
4.4.1 Fase di addestramento
La fase di addestramento è il processo in cui si raccolgono informazioni per poter stabilire
all'interno del classificatore una relazione tra ingressi e uscite desiderate. Nel sistema sviluppato questa fase consiste nell'osservazione da parte dell'utente di una forma circolare
che si muove all'interno dello schermo mentre è in esecuzione l'algoritmo di riconoscimento forme.
La posizione del cerchio è considerata l'uscita desiderata, poiché indica il punto fissato,
mentre i parametri della forma riconosciuta rappresentano i dati in ingresso.
In figura 4.7 è schematizzata la fase di addestramento descritta.
59
CAPITOLO 4 Analisi di fattibilità
Figura 4.7: fase di addestramento
Ogni fase di addestramento sperimentata è contraddistinta dai seguenti parametri:
Χ
numero di forme in ingresso
Χ
percorso effettuato dalla forma circolare
Χ
tempo impiegato
Per ogni sistema di classificazione analizzato sono state provate diverse tipologie di fasi
d'addestramento per stabilire le più appropriate.
4.4.2 Utilizzo dei pesi del modello
Il modello della forma dell'occhio ricavato dal posizionamento di 37 picchetti sulle immagini del training set risulta modificabile da 7 pesi.
Le modifiche più evidenti nella forma del modello sono prodotte dalla variazione dei primi
tre pesi. In figura 4.8 è evidenziata la variazione della forma in relazione al cambiamento
del valore dei pesi
P 0 , P 1 , P 2 . Il campo di variazione di ogni peso è calcolato utiliz-
zando la formula (2).
Nel modello da cui sono ricavate le illustrazioni i pesi hanno il seguente dominio:
P 0 ζ#24, 24 P 1 ζ#14, 14 P 2 ζ#9, 9
60
CAPITOLO 4 Analisi di fattibilità
Figura 4.8: variazione della forma del modello in relazione ai pesi
L'algoritmo per porre in relazione i pesi del modello con la posizione fissata opera nel seguente modo:
Χ
si divide lo schermo in una griglia di
m righe
n
colonne determinando
m)n zone.
Χ
durante la fase di addestramento per ogni zona in cui è diviso lo schermo si memorizzano i valori assunti dai pesi
Χ
P0 e
P1
finito l'addestramento si calcolano per ogni zona valore massimo e minimo di
ogni peso. Per escludere possibili valori errati non si considerano i valori che differiscono dalla media di più di due volte della varianza.
Χ
Per ogni zona il massimo e il minimo di
P0 e
P 1 determinano un' interval-
lo specifico del dominio di variabilità dei pesi.
Χ
La classificazione di una nuova forma avviene controllando a che intervallo di
pesi essa appartiene.
Χ
Per migliorare l'accuratezza della classificazione si è deciso di considerare i valori dei pesi su
F forme riconosciute.
Le verifiche sperimentali effettuate su questa tipologia di classificatore non sono risultate
soddisfacenti. Nelle tabelle dalla 4.1 alla 4.6 sono riportati alcuni risultati della sperimenta-
61
CAPITOLO 4 Analisi di fattibilità
zioni svolte. I risultati riportati nelle tabelle seguenti sono una media delle prove svolte utilizzando uno stesso modello e variando le condizioni di luce e la posizione dell'utente. Per
ogni verifica sono state effettuata da un minimo di 5 ad un massimo di 10 misurazioni.
Il tasso di errore globale è stato calcolato per mezzo di un apposito software che illumina in
modo casuale delle zone dello schermo che l'utente deve osservare e verifica la correttezza
della classificazione.
Tab. 4.1: Verifica sperimentale 1
Numero forme del modello
60
Dimensioni griglia
3x4
Numero forme catturate per ogni zona
dello schermo
10
Durata fase di addestramento
60 s
Tasso di errore globale
58%
Tab. 4.2: Verifica sperimentale 2
Numero forme del modello
30
Dimensioni griglia
3x4
Numero forme catturate per ogni zona
dello schermo
10
Durata fase di addestramento
50 s
Tasso di errore globale
55%
Tab. 4.3: Verifica sperimentale 3
Numero forme del modello
60
Dimensioni griglia
3x3
Numero forme catturate per ogni zona
dello schermo
10
Durata fase di addestramento
45 s
Tasso di errore globale
52%
Tab. 4.4: Verifica sperimentale 4
Numero forme del modello
30
Dimensioni griglia
3x3
Numero forme catturate per ogni zona
dello schermo
10
Durata fase di addestramento
40 s
Tasso di errore globale
48%
62
CAPITOLO 4 Analisi di fattibilità
Tab. 4.5: Verifica sperimentale 5
Numero forme del modello
60
Dimensioni griglia
2x3
Numero forme catturate per ogni zona
dello schermo
10
Durata fase di addestramento
40 s
Tasso di errore globale
50,00%
Tab. 4.6: Verifica sperimentale 6
Numero forme del modello
30
Dimensioni griglia
2x3
Numero forme catturate per ogni zona
dello schermo
10
Durata fase di addestramento
38 s
Tasso di errore globale
47%
Di seguito sono riportati i grafici che illustrano l'andamento del tasso di errore in funzione
del numero di forme utilizzate durante l'addestramento.
Figura 4.9: Verifica 1 e 2, griglia
63
3)4
CAPITOLO 4 Analisi di fattibilità
Figura 4.10: Verifica 3 e 4, griglia 3x3
Figura 4.11: Verifica 5 e 6, griglia 2x3
Come si nota dai grafici (figure 4.9, 4.10 e 4.11)e dalle tabelle le verifiche sperimentali
hanno dimostrato che nessuna fra le configurazioni provate ha fornito risultati accettabili.
Emerge dai grafici un abbassamento del tasso di errore in funzione della diminuzione del
numero di zone in cui è suddiviso lo schermo. Tale andamento è da pesare con l'aumento
della probabilità di effettuare un riconoscimento esatto in maniera casuale, infatti si passa
da 8% per una griglia 3)4 al 17 % per una griglia 2)3 .
Per avere una spiegazione di questi risultati si possono osservare i grafici nelle figure 4.12
e 4.13 in cui sono rappresentate le relazioni tra pesi e zone osservate.
Ogni forma è rappresentata da un punto del piano determinato considerando il peso
come ascissa e
P1
P0
come ordinata. Le zone in cui è suddiviso lo schermo sono rappre-
sentate da aree del piano di forma rettangolare. Le aree tratteggiate indicano la sovrapposi64
CAPITOLO 4 Analisi di fattibilità
zione tra due o più zone.
Figura 4.12: Relazione tra pesi delle forme e zone osservate. Griglia 2x3
Figura 4.13: Relazione tra pesi delle forme e zone osservate. Griglia 3x3
Il tasso di errore così elevato è dovuto all'assenza di una netta divisione tra le varie zone,
esistono valori dei pesi per cui il classificatore indica più zone possibili.
Si sono sperimentate diverse tecniche per migliorare i risultati:
Χ
quando la forma appartiene a più zone osservate la si attribuisce alla zona che ha
il baricentro più vicino al punto del piano che la rappresenta.
65
CAPITOLO 4 Analisi di fattibilità
Χ
Si attendono
F forme e si sceglie come zona osservata quella che risulta indi-
cata dalla maggioranza delle forme. L'utilizzo di questa tecniche riduce la possibilità di conflitto tra le diverse zone, ma aumenta notevolmente le tempistiche di
funzionamento del classificatore.
Nel grafico in figura 4.14 è mostrato l'andamento del tasso di errore per le verifiche 5 e 6 al
variare del parametro F.
Figura 4.14: andamento tasso di errore verifiche 5 e 6
Nel grafico in figura 4.15 è illustrato l'andamento del tempo di classificazione in funzione
parametro F. Tale tempo indica i secondi necessari al classificatore per indicare la zona
dello schermo selezionata dall'utente.
66
CAPITOLO 4 Analisi di fattibilità
Figura 4.15: andamento del tempo di classificazione nelle verifiche 5 e 6
Dalle verifiche effettuate è emerso che l'utilizzo di questo algoritmo di classificazione produce risultati inaccettabili sia per quanto riguarda il tasso di errore nel riconoscimento sia
per le tempistiche della fase di adattamento.
Il funzionamento teorico dell'algoritmo è stato confutato dalla fase sperimentale.
Questi pessimi risultati sono dovuti agli errori introdotti dall'active shape model nella ricerca della forma.
4.4.3 Utilizzo dell'indice delle immagini
L'algoritmo di ricerca forme implementato fornisce come dato in uscita l'indice dell'immagine del training set con forma più simile a quella trovata.
Si è sviluppata e testata una tecnica di classificazione che utilizza tale indice per stabilire la
zona dello schermo fissata.
L'algoritmo opera nel seguente modo:
Χ
si divide lo schermo in una griglia di
m righe
n
colonne determinando
m)n zone.
Χ
durante la fase di addestramento per ogni zona in cui è diviso lo schermo si memorizzano gli indici delle immagini del training set rilevati.
Χ
finito l'addestramento si calcolano per ogni indice memorizzato due probabilità:
Χ
Probabilità relativa alla zona:
67
CAPITOLO 4 Analisi di fattibilità
P R , Z i
Χ
Probabilità totale:
P T i
Χ
numero forme di indice i nella zona Z
numero forme nella zona Z
numero forme di indice i
numero forme TOTALI
La classificazione di una nuova forma avviene determinando quale zona dello
schermo ha maggiore probabilità di essere indicata dall'indice della forma del
training set.
Χ
Per migliorare l'accuratezza della classificazione si è deciso di calcolare la probabilità della zona osservata considerando F indici.
Χ
Dato un indice i per ogni zona
P Z , f P R , Z i∝P T con
Χ
Z si calcola:
f ζ0, F #1
Dopo f indici si calcola per ogni zona la probabilità di essere fissata:
F #1
1
P Z ∝ P Z , f
F f 0
Χ
La zona prescelta sarà quella con probabilità maggiore:
max
Z ζ1 , M )N P Z Nelle tabelle dalla 4.7 alla 4.12 sono riportati alcuni risultati della sperimentazioni svolte. I
risultati riportati nelle tabelle seguenti sono una media delle prove svolte utilizzando uno
stesso modello e variando le condizioni di luce e la posizione dell'utente.
Per avere la possibilità di effettuare un confronto con le verifiche elaborate per l'algoritmo
descritto in precedenza sono stati mantenuti gli stessi parametri di sperimentazione.
Tab 4.7: Verifica sperimentale 7
Numero forme del modello
60
Dimensioni griglia
3x4
Numero forme catturate per ogni zona
dello schermo
10
Durata fase di addestramento
60 s
Tasso di errore globale
44%
68
CAPITOLO 4 Analisi di fattibilità
Tab 4.8: Verifica sperimentale 8
Numero forme del modello
30
Dimensioni griglia
3x4
Numero forme catturate per ogni zona
dello schermo
10
Durata fase di addestramento
50 s
Tasso di errore globale
41%
Tab 4.9: Verifica sperimentale 9
Numero forme del modello
60
Dimensioni griglia
3x3
Numero forme catturate per ogni zona
dello schermo
10
Durata fase di addestramento
45 s
Tasso di errore globale
40%
Tab 4.10: Verifica sperimentale 10
Numero forme del modello
30
Dimensioni griglia
3x3
Numero forme catturate per ogni zona
dello schermo
10
Durata fase di addestramento
40 s
Tasso di errore globale
36%
Tab 4.11: Verifica sperimentale 11
Numero forme del modello
60
Dimensioni griglia
2x3
Numero forme catturate per ogni zona
dello schermo
10
Durata fase di addestramento
40 s
Tasso di errore globale
37%
Tab 4.12: Verifica sperimentale 12
Numero forme del modello
30
Dimensioni griglia
2x3
Numero forme catturate per ogni zona
dello schermo
10
Durata fase di addestramento
38 s
69
CAPITOLO 4 Analisi di fattibilità
Tab 4.12: Verifica sperimentale 12
Tasso di errore globale
33%
Nelle figure 4.16, 4.17 e 4.18 è illustrato l'andamento del tasso di errore in funzione del
numero delle forme utilizzate durante la fase di addestramento.
Figura 4.16 : andamento tasso di errore Griglia 3x4
Figura 4.17 : andamento tasso di errore Griglia 3x3
70
CAPITOLO 4 Analisi di fattibilità
Figura 4.18 : andamento tasso di errore Griglia 2x3
Dai grafici sopra riportati emerge che all'aumentare del numero di forme utilizzate durante
la fase di addestramento si ha un aumento dell'accuratezza della classificazione.
Perchè il sistema sia facilmente utilizzabile la fase di addestramento deve durare il minor
tempo possibile. Si deve cercare quindi il miglior compromesso tra durata dell'addestramento e precisione voluta. Nel grafico in figura 4.19 è riportato, in riferimento alle verifiche 11 e 12, l'andamento della durata della fase di addestramento in funzione del numero di
immagini catturate per ogni zona.
Figura 4.19: andamento del tempo di addestramento in funzione del numero di forme catturate per ogni
zona
71
CAPITOLO 4 Analisi di fattibilità
Tutti i grafici finora riportati sono stati elaborati considerando il parametro
F 1 .
Interessante è verificare , come per l'algoritmo precedente, l'andamento del tasso d'errore e
dei tempi di classificazione all'aumento del parametro
F . Tali andamenti sono illustrati
rispettivamente nei grafici in figura 4.20 e 4.21.
Figura 4.20: tasso di errori in funzione del parametro
F
Figura 4.21: tempo di classificazione in funzione del parametro F
Dalla combinazione della scelta del valore di F e del numero di forme catturate si è rilevato
che per una griglia 2)3 si hanno risultati ottimali conderando i seguenti intervalli:
Χ
Χ
F ζ5,10
Numero forme catturate
ζ15, 25
72
CAPITOLO 4 Analisi di fattibilità
Il tasso di errore, considerando i parametri all'interno tali intervalli, varia dal 14% al 22%.
Con questa tecnica si ha un evidente miglioramento della precisione della classificazione;
la percentuale d'errore resta però elevata. Nonostante l'elevata probabilità d'errore il sistema
di eye tracking con l'utilizzo di questa tecnica ha prestazioni sufficienti.
Questo comportamento è dovuto al fatto che l'errore globale non è distribuito uniformemente su tutte le zone in cui è suddiviso lo schermo; esso è concentrato quasi totalmente su
una o due fra le
M )N zone.
Le zone la cui classificazione è soggetta ad elevato tasso di errore sono difficilmente riconoscibili, ma la determinazione delle altre zone presenta buoni risultati.
I test svolti hanno rilevato che la diversa distribuzione del tasso di errore è dovuta alla presenza di un numero non omogeneo di forme relative ad ogni zona.
Per migliorare l'accuratezza della classificazione è possibile utilizzare i risultati sul tasso
di errore per bilanciare il modello, così facendo si arriva ad un tasso d'errore che va dal
12% al 21%.
Nonostante le correzioni che si possono apportare la probabilità di errore mantiene una distribuzione non uniforme.
Dall'analisi dei risultati delle sperimentazioni svolte è emerso che le zone più soggette a errore sono l'area inferiore destra dello schermo per i modelli costruiti sulla forma dell'occhio
sinistro e l'area inferiore sinistra per i modelli costruiti sulla forma dell'occhio destro.
Da i risultati sopra riportati si rileva che questa tecnica produce risultati accettabili, considerando una suddivisione dello schermo in una griglia 2)3 , purchè le applicazioni siano in grado di recuperare gli errori e funzionare senza il riconoscimento di una zona.
4.4.4 Classificatore senza addestramento
Un classificatore per funzionare necessita di riconoscere la relazione tra dati di ingresso e
uscite desiderati per far questo è necessaria solitamente una fase di addestramento per
istruire il sistema.
Per poter evitare la fase di addestramento il classificatore deve poter conoscere la relazione
tra ingresso e uscita in un altro modo.
L'algoritmo sviluppato opera nel seguente modo:
Χ
durante la costruzione del modello per ogni immagine appartenente al training
73
CAPITOLO 4 Analisi di fattibilità
set si stabilisce la zona dello schermo osservata.
Χ
Durante il processo di eye tracking il classificatore utilizza un buffer FIFO di dimensione F per memorizzare l'indicazione della zona osservata stabilita tramite
le informazioni contenute all'interno del modello.
Χ
Dopo le prime F immagini il classificatore funziona a regime e dopo la ricezione
di ogni immagine determina la zona fissata scegliendo quella maggiormente presente all'interno del buffer.
Per correttezza nelle tabelle dalla 4.13 alla 4.18 sono stati riportati i risultati delle verifiche
svolte mantenendo gli stessi parametri di sperimentazione degli algoritmi precedenti.
Tab. 4.13: Verifica sperimentale 13
Numero forme del modello
60
Dimensioni griglia
3x4
Tasso di errore globale
65%
Tab. 4.14: Verifica sperimentale 14
Numero forme del modello
60
Dimensioni griglia
3x4
Tasso di errore globale
61%
Tab. 4.15: Verifica sperimentale 15
Numero forme del modello
60
Dimensioni griglia
3x3
Tasso di errore globale
60%
Tab. 4.16: Verifica sperimentale 16
Numero forme del modello
60
Dimensioni griglia
3x3
Tasso di errore globale
56%
Tab. 4.17: Verifica sperimentale 17
Numero forme del modello
60
Dimensioni griglia
2x3
74
CAPITOLO 4 Analisi di fattibilità
Tab. 4.17: Verifica sperimentale 17
Tasso di errore globale
55%
Tab. 4.18: Verifica sperimentale 18
Numero forme del modello
60
Dimensioni griglia
2x3
Tasso di errore globale
50%
Risulta evidente che i risultati ottenuti sono pessimi, essi rappresentano una media dei valori ottenuti variando la posizione dell'utente e le condizioni di luce.
Nel corso dei test si è notato che il tasso di errore è fortemente dipendente dal posizionamento dell'utente rispetto alla posizione assunta durante la costruzione del modello.
Per misurare la dipendenza del tasso di errore dalla posizione è stato sviluppato un applicativo in grado di evidenziare la differenza tra la posizione dell'utente durante la costruzione
del modello e la posizione durante la sperimentazione. La differenza è calcolata attraverso
un semplice confronto di immagini. Per semplificazione si sono considerati come spostamenti solo le traslazioni orizzontali e verticali della testa e non eventuali rotazioni.
Nei grafici nelle figure 4.22, 4.23 e 4.24 è evidenziato l'andamento del tasso di errore in
funzione della differenza di posizione. Con la linea tratteggiata è rappresentata il valore
medio dell'errore.
90,00%
80,00%
Tasso d'errore
70,00%
60,00%
50,00%
40,00%
Verifica 13
Verifica 14
30,00%
20,00%
10,00%
0,00%
0
1
2
3
4
5
6
Differenza di posizione (cm)
Figura 4.22: andamento del tasso d'errore in funzione della differenza di posizione. Griglia 3x4
75
Tasso d'errore
CAPITOLO 4 Analisi di fattibilità
85,00%
80,00%
75,00%
70,00%
65,00%
60,00%
55,00%
50,00%
45,00%
40,00%
35,00%
30,00%
25,00%
20,00%
15,00%
10,00%
5,00%
0,00%
Verifica 15
Verifica 16
0
1
2
3
4
5
6
Differenza di posizione (cm)
Tasso d'errore
Figura 4.23 andamento del tasso d'errore in funzione della differenza di posizione. Griglia 3x3
85,00%
80,00%
75,00%
70,00%
65,00%
60,00%
55,00%
50,00%
45,00%
40,00%
35,00%
30,00%
25,00%
20,00%
15,00%
10,00%
5,00%
0,00%
Verifica 18
Verifica 17
0
1
2
3
4
5
6
Differenza di posizione (cm)
Figura 4.24 andamento del tasso d'errore in funzione della differenza di posizione. Griglia 4x4
Analogamente alle tecniche di classificazione precedenti, sono state calcolate le variazioni
dei tassi d'errore e delle tempistiche di riconoscimento in funzione del parametro F, che in
questo caso rappresenta la dimensione del buffer utilizzato per memorizzare le indicazioni
delle zone fissate. Contrariamente alla comune pratica ingegneristica non è stata effettuata
un'analisi di caso peggiore, bensì sono state considerate le condizione ottimali di funziona76
CAPITOLO 4 Analisi di fattibilità
mento. Questa scelta è stata effettuata perché nell'utilizzo reale del sistema di eye tracking
si cercherò sempre di lavorare con differenze di posizioni minime rispetto alla costruzione
del modello.
Nei grafici in figura 4.25, 4.26 e 4.27 è riportato l'andamento del tasso di errore in funzione
di F, considerando una differenza di posizionamento di 0,5 cm.
50,00%
47,50%
45,00%
42,50%
Tasso di errore
40,00%
37,50%
35,00%
32,50%
30,00%
27,50%
Verifica 13
Verifica 14
25,00%
22,50%
20,00%
17,50%
15,00%
12,50%
10,00%
1
2
5
10
20
F
Tasso di errore
Figura 4.25:andamento del tasso d'errore in funzione di F , Griglia 3x4, Differenza di posizione 0,5 cm
40,00%
37,50%
35,00%
32,50%
30,00%
27,50%
25,00%
22,50%
20,00%
17,50%
15,00%
12,50%
10,00%
7,50%
5,00%
2,50%
0,00%
Verifica 15
Verifica 16
1
2
5
10
20
F
Figura 4.26:andamento del tasso d'errore in funzione di F , Griglia 3x3, Differenza di posizione 0,5 cm
77
Tasso di errore
CAPITOLO 4 Analisi di fattibilità
40,00%
37,50%
35,00%
32,50%
30,00%
27,50%
25,00%
22,50%
20,00%
17,50%
15,00%
12,50%
10,00%
7,50%
5,00%
2,50%
0,00%
Verifica 17
Verifica 18
1
2
5
10
20
F
Figura 4.27:andamento del tasso d'errore in funzione di F , Griglia 2x3, Differenza di posizione 0,5 cm
Nei grafici che riportano l'andamento del tasso di errore in funzione del parametro F, si
nota che si ha un minimo nell'intorno del valore F = 10 .
Dall'analisi sperimentale si rilevato che questa tecnica ha i seguenti pregi:
Χ
Χ
basso tasso di errore se la differenza di posizionamento dell'utente è minima
dopo un transitorio iniziale, si ha un tempo costante per la determinazione del
punto fissato
Χ
non richiede una fase di addestramento per funzionare
Esistono però anche i seguenti svantaggi nell'utilizzo di questo algoritmo:
Χ
Elevata sensibilità ai movimenti della testa: risulta difficilmente utilizzabile da
un utente normodotato che abitualmente tende a seguire il punto fissato con leggeri movimenti del capo.
Χ
Forte dipendenza tra il modello e la griglia in cui è suddiviso lo schermo; infatti
rispetto agli algoritmi precedenti le informazioni su punti osservati e forme del
training set sono inserite al momento della costruzione del modello. Questo fatto
parta alla necessità di avere modelli specifici per utente, condizione ambiente e
per numero di zone in cui suddividere lo schermo.
78
CAPITOLO 5
Progettazione del sistema
5.1 Struttura generale del sistema
Dopo aver analizzato la possibilità d’implementazione del sistema, in questo capitolo ne
verrà descritta la progettazione e l’implementazione.
Nello stadio di analisi dei requisiti del sistema è emersa la netta distinzione tra la fase di
costruzione del modello della testa o dell’occhio e la fase di gaze-tracking; per questo motivo il sistema di gaze-tracking è stato diviso in due applicativi distinti:
∩
Un programma di Training: progettato per la costruzione di modelli dell'occhio e della
testa
∩
Un programma di Gaze tracking: utilizza i modelli creati dal programma di training per
determinare la zona dello schermo fissata.
Entrambi gli applicativi condividono un database in cui sono memorizzati i modelli costruiti e le informazioni necessarie al funzionamento del sistema.
79
CAPITOLO 5 Progettazione del sistema
Come è evidenziato negli schemi in figura 5.1 e in figura 5.2 i programmi hanno una struttura modulare.
Vi è una struttura di controllo denominata “supervisore” che ha il compito di coordinare e
gestire lo scambio di informazioni tra le diverse componenti del sistema.
Ogni modulo può interagire solo con il supervisore e non conosce il resto del sistema.
La gestione degli utenti e la cattura delle immagini è presente sia nell’applicazione per la
costruzione del modello sia nel programma di gaze-tracking quindi è stata possibile un implementazione unica di tali funzioni.
Figura 5.1: applicazione di training
Il programma di training è composto dai seguenti componenti:
•
Gestione modelli: è un componente che si interfaccia con database e permette di
scegliere un modello specifico fra tutti quelli creati col programma di training.
•
Gestione immagini: permette di archiviare le immagini che costituiscono il training set.
•
Cattura delle immagini: è un modulo di comunicazione con il dispositivo di cattura video.
•
Inserimento delle forme: permette il picchettamento delle immagini archiviate.
80
CAPITOLO 5 Progettazione del sistema
•
Costruzione del modello: crea un modello in base alle forme e ai parametri impostati.
Figura 5.2: Applicazione di Gaze tracking
Il programma di gaze-tracking è composto dai seguenti componenti:
•
Gestione utenti: permette di memorizzare le impostazione scelte da ogni utente,
permette di velocizzare l’utilizzo del sistema.
•
Gestione modelli: è un componente che si interfaccia con database e permette di
scegliere un modello specifico fra tutti quelli creati col programma di training.
•
Cattura delle immagini: è un modulo di comunicazione con il dispositivo di cattura video.
•
Ricerca della forma: è il componente che implementa l’active shape model.
•
Gaze Detection: stabilisce il punto osservato.
•
Gestione delle applicazioni: è il componente che si occupa della coordinazione
e del controllo della comunicazione tra sistema e applicativi che lo utilizzano.
81
CAPITOLO 5 Progettazione del sistema
Nei paragrafi seguenti verrà descritto il funzionamento di ogni modulo che compone il sistema, mentre i dettagli sul codice sono allegati in appendice D.
5.2 Programma di Training
Lo scopo del programma di training è la creazione , la gestione e la modifica dei modelli delle forme di occhio e di testa. Le fasi per la costruzione di un modello sono descritte dallo schema in figura 5.3.
Figura 5.3: schema del funzionamento del programma di training
5.2.1 Cattura di una collezione di immagini
Per costruire un modello occorre un insieme di immagini che rappresentino le diverse forme di occhio e della testa durante la fissazione di diversi punti dello schermo.
E’ stata distinta una fase di cattura delle immagini dalla fase di definizione delle forme tramite picchetti per evitare all’utente inutile attesi e per migliorare le tempistiche di costruzione del modello.
Come illustrato nel capitolo 4, durante la fase di analisi non è stato possibile stabilire il numero di
immagine necessarie per costruire un modello efficiente. Per questo motivo è stata lasciata la pos-
82
CAPITOLO 5 Progettazione del sistema
sibilità di decidere sia il numero di immagini da includere nel training set, sia la posizione dei punti osservati durante la cattura.
La successione dei punti da fissare durante la raccolta delle immagini del training set è denominata
PATH.
L’analisi dell’influsso della definizione di tali punti sulle prestazioni dell’algoritmo di ricerca è
trattata nel capitolo 6.
Prima di eseguire la cattura delle immagini è necessario stabilire la precisione del training set indicata dal numero zone in cui sarà suddiviso lo schermo.
La raccolta delle immagini avviane tramite una procedura guidata, in cui l’utente deve fissare una
forma circolare che si muove nello schermo.
Il movimento della forma circolare è coordinato con l’acquisizione delle immagini dalla webcam
in modo tale che quando essa raggiunge le posizione definite nel PATH avviene un cambiamento
di colore e l’effettiva memorizzazione all’interno del database.
In figura 5.4 è rappresentato un esempio del posizionamento di 12 punti che costituiscono un
PATH, con una risoluzione di 6 zone.
Figura 5.4: esempio di punti che costituiscono un PATH
5.2.2 Picchettatura delle forme
Il posizionamento dei picchetti sulle immagini del training set è un procedimento fondamentale per la costruzione del modello.
Le immagini catturate nella fase precedente ritraggono l’intero volto dell’utente, quindi prima di procedere alla collocazione dei picchetti si deve selezionare solo la zona dell’immagine interessata dal procedimento.
Nelle figure 5.5 e 5.6 sono rappresentate come rettangoli le zone selezionate, per eseguire
83
CAPITOLO 5 Progettazione del sistema
la disposizione dei picchetti, rispettivamente nel caso dell’eye-tracking e dell’head-tracking
.
Figura 5.5: zona intorno intorno all'occhio da selezionare
Figura 5.6: zona della testa da selezionare
Le zone delle immagini selezionate vengono memorizzate nel database all’interno della tabella ImagesTS (tab. x +) per essere utilizzate per il calcolo della matrici di colori nell’intorno dei picchetti.
Come spiegato nei capitoli precedenti sia per la modellazione della forma dell’occhio che
per quella della testa si è deciso di posizionare 37 picchetti.
Per rendere più agevole i posizionamento dei picchetti si è scelto di differenziare l’ordine
di inserimento dall’ordine dei punti all’interno della forma. Nelle figure 5.7 per l’occhio e
5.8 per la testa è illustrato l’ordine di inserimento dei picchetti. Come si nota da tali figure
l’ordine di inserimento è studiato in modo tale da delineare dapprima gli estremi delle forme e successivamente i punti di unione tra tali punti. Le differenze di colorazione dei picchetti hanno lo scopo di aiutarne il posizionamento, non c’è alcuna differenza nel momento
della costruzione del modello nella trattazione dei picchetti di colore più scuro rispetto a
quelli più chiari.
Alcune implementazioni dell’active shape model presenti in letteratura diversificano la gestione dei picchetti in base alla funzione che rivestono nell’applicazione.
Per dare la possibilità futura di implementare tale opzioni, all’interno del database viene
memorizzata anche l’informazione del tipo di picchetto posizionato.
84
CAPITOLO 5 Progettazione del sistema
Figura 5.7: ordine di posizionamento dei picchetti sull'occhio
Figura 5.8: ordine di posizionamento dei picchetti sulla testa
La struttura dati utilizzata per la memorizzazione di una forma è un vettore allocato dinamicamente che contiene strutture di tipo PUNTO.
Un PUNTO è rappresentato da due numeri interi che indicano le coordinate della posizione del picchetto considerando come riferimento gli assi in figura 5.9.
Per agevolare la disposizione dei picchetti viene visualizzato all’interno della finestra di
posizionamento la descrizione della localizzazione del prossimo punto da inserire.
85
CAPITOLO 5 Progettazione del sistema
Una volta terminato il picchettamento la forma viene memorizzata nel database all’interno
della tabella ShapeTS (tab. X+4).
Figura 5.9: rappresentazione coordinate PUNTO
5.2.3 Generazione del modello e delle matrici associative
La fase successiva al posizionamento dei picchetti sulle immagini del training set è la generazione del modello dell’occhio o della testa.
Il modello è costruito applicando l’algoritmo esposto nel capitolo 3.? . Maggiori dettagli
sul codice dell’implementazione sono rimandati all’appendice D?.
La struttura dati,denominata MATRIX_MODEL, per la memorizzazione del modello contiene le seguenti informazioni:
•
Numero di forme del modello.
•
Forma media dell’oggetto modellato.
•
Una matrice contenente gli autovettori del modello.
•
Un vettore contenente il valore del peso per ogni picchetto.
•
Un vettore contenente la massima variazione possibile di ogni autovalore in modo
tale da rispettare i vincoli del modello.
Questa struttura viene memorizzata all’interno del database nel campo “statistics” della tabella TrainingSet (tab.x+).
Il programma di training permette di visualizzare il modello ottenuto e di verificare la risposta del modello alla variazione del valore dei pesi applicati.
Questa possibilità è utile per appurare che la fase di posizionamento dei picchetti sia avvenuta correttamente.
Nelle figure 5.10 e 5.11 sono rappresentate le deformazioni al modello provocate dalla
modifica dei pesi.
86
CAPITOLO 5 Progettazione del sistema
Figura 5.10 : esempio di variazione delle forme del modello della testa
Figura 5.11 : esempio di variazione delle forme del modello dell'occhio
87
CAPITOLO 5 Progettazione del sistema
Dopo la costruzione del modello vengono elaborate anche delle matrici associative che
hanno la funzione di memorizzare la derivata della matrice di colore nell’intorno dei picchetti e di porla in relazione con i valori dei pesi del modello.
Per ogni immagine presente nel training set si genera una struttura denominata MAT_ASSOCIATIVA_GREYLEVEL_2D.
La matrice associativa è un vettore che contiene tutte queste strutture calcolate all’interno
di un training set.
MAT_ASSOCIATIVA_GREYLEVEL_2D è costituita da un vettore con i pesi della forma pic-
chettata sull’immagine a cui si riferisce e un vettore che contiene una struttura di tipo CELLA_GREYLEVEL_2D per ogni picchetto.
La struttura CELLA_GREYLEVEL_2D contiene le seguente informazioni:
•
Indice del picchetto
•
Coordinate del punto in cui è posizionato il picchetto
•
Una matrice con le coordinate dei punti considerati nell’intorno del picchetto.
•
Una matrice in cui sono memorizzati i colori nell’intorno del picchetto
•
Una matrice contenente la derivata della matrice descritta sopra.
•
La pendenza della retta passante per il picchetto e normale al contorno della forma.
Per ogni modello si è deciso di elaborare tre matrici associative con differente dimensione
delle zone utilizzate nell’intorno dei picchetti. Si è deciso di elaborare più matrici per non
determinare a priori la precisione e la complessità della ricerca della forma, e per dare all’utente la possibilità di scegliere il miglior compromesso tra velocità e accuratezza del sistema.
In figura 5.12 sono rappresentate in scala le differenti zone considerate nell’intorno del picchetto. Per semplicità chiameremo le differenti aree nell’intorno dei picchetti con le lettere
indicate nella figura.
88
CAPITOLO 5 Progettazione del sistema
Figura 5.12: intorno dei picchetti nelle differenti matrici associative
In tabella 5.1 sono riportate le dimensioni delle differenti zone .
Tab. 5.1: Caratteristiche nell'intorno dei picchetti nelle differenti matrici associative
Zona
Larghezza(W)
Altezza (H)
A
5 pixel
30 pixel
B
3 pixel
20 pixel
C
1 pixel
10 pixel
5.2.4 Funzionalità aggiuntive
Il programma di training oltre alla costruzione dei modelli deve provvedere alla loro gestione e memorizzazione. Sono state implementate diverse funzioni che permettono di svolgere questi compiti:
• Cattura di immagini personalizzabile: è possibile definire PATH di cattura differenti da quelli standard e specifici per l’applicazione che utilizzerà il modello.
• Visualizzazione dei modelli: permette di verificare la corretta picchettatura delle
forme e fornisce indicazioni sulla variabilità di posizione di ogni picchetto all’interno del training set.
•Modifica del training set: è possibili aggiungere o rimuovere forme per riscontrare
i cambiamenti apportati al modello.
•Esportazione e Importazione dei modelli: questa funzione dà la possibilità di trasportare training set tra sistemi differenti. Il processo d’esportazione genera un file
compresso contenente tutte le informazioni necessarie a ricostruire il modello.
89
CAPITOLO 5 Progettazione del sistema
5.3 Programma di gaze tracking
Il programma di gaze tracking utilizza i modelli prodotti dall'applicativo di training per effettuare una ricerca in tempo reale delle forme della testa o dell'occhio e determinare la
zona dello schermo fissata. Nello schema in figura 5.13 è rappresentato l'insieme delle
funzionalità che caratterizzano l'applicativo.
Figura 5.13: funzionalità applicativo di gaze tracking
5.3.1 Scelta dell'utente
Per evitare la ripetuta scelta del modello , delle matrici associative e delle impostazioni all'utente abituale si è scelto di memorizzare tali informazioni all'interno del database.
Il programma è di tipo multiutente: si avvia caricando il profilo relativo all'ultimo utente
che l'ha utilizzato. C'è la possibilità di caricare le informazioni relative ai profili esistenti o
di crearne di nuovi.
Per ogni utente vengono memorizzate le seguenti informazioni:
Χ
nome identificativo.
Χ
Ultimo modello utilizzato.
Χ
Ultima matrice associativa utilizzata.
Χ
Tipo di utilizzo: eye tracking o head tracking.
90
CAPITOLO 5 Progettazione del sistema
Χ
Impostazioni di funzionamento: verranno descritte in seguito.
5.3.2 Scelta del modello e della matrice associativa
La scelta del modello e della relativa matrice associativa è molto importante in quanto influisce notevolmente sull'accuratezza e selle prestazioni del sistema di gaze tracking.
Un utente può utilizzare l'applicazione anche senza la costruzione di un modello personale,
ma può scegliere all'interno del database il modello della forma dell'occhio (o della testa)
che più si avvicina alla sua.
Un utente su cui sono stati costruiti dei modelli personali, invece , può scegliere quello che
più si adatta alle condizioni di luce e di posizionamento al momento dell'utilizzo.
La scelta del modello e delle matrici associative è effettuata tramite la finestra in figura
5.14. Nella parte destra della finestra è rappresenta un'immagine identificativa del training
set e un'elaborazione grafica della forma risultante dalla costruzione del modello. Da questa finestra è possibile visionare, selezionare e provare tutti i modelli costruiti in precedenza con il programma di training.
Oltre alla scelta del modello è stata concessa la possibilità di decidere il tipo di matrice associativa da utilizzare per permettere di determinare il compromesso tra accuratezza e velocità di riconoscimento voluto.
Figura 5.14 : finestra di Scelta del modello
91
CAPITOLO 5 Progettazione del sistema
Le caratteristiche delle diverse matrici associative sono riportate in tabella 5.1, di seguito
sono descritti i tipici ambiti di utilizzo.
Χ
Matrici di tipo A: l’utilizzo di questo tipo di matrici è opportuno quando le condizioni
ambientali del sistema sono molto differenti dalla condizioni in cui si è generato il modello; sono impiegate tipicamente per l'eye tracking data l'elevata sensibilità ai movimenti e alla posizione della testa di tale algoritmo.
Χ
Matrici di tipo B: l’utilizzo di questo tipo di matrici permette un buon compromesso tra
accuratezza e velocità di riconoscimento delle forme. Solitamente sono impiegate nell'ambito dell'head tracking quando si utilizza un modello non specifico per l'utente.
Χ
Matrici di tipo C: questa tipologia di matrici permette la migliore velocità di funzionamento del sistema a scapito dell'accuratezza. Esse sono utilizzate nell'ambito dell'head
tracking quando si utilizza un modello specifico per l'utente.
Maggiori dettagli sulla relazione tra matrici associative e velocità e accuratezza del sistema
sono riportate nel capitolo successivo.
5.3.3 Gaze tracking
Nel secondo capitolo si sono descritti generici sistemi di gaze tracking, elencando per ogni
componente del sistema le implementazioni possibili presenti in letteratura.
Nel quarto capitolo, invece, sono stati riportati i risultati delle verifiche sperimentali effettuate per determinare la possibilità d'implementazione del sistema.
In questo paragrafo sono illustrate le scelte progettuali adottate ,in base alle sperimentazioni svolte, tra quelle descritte in precedenza.
In figura 5.15 è rappresentato lo schema di funzionamento dei componenti in condivisi dall'eye tracking e dall'head tracking.
92
CAPITOLO 5 Progettazione del sistema
Figura 5.15 : schema componenti comuni tra head tracking e eya tracking
5.3.3.AGestione dispositivo di input
Per la gestione del dispositivo di acquisizione video sono state utilizzate le librerie microsoft video for windows (VFW). Per consentire un livello di astrazione maggiore di quello
concesso da VFW è stata implementa una classe per la gestione delle comunicazioni con
la webcam denominata MYCAVICAP.
L'implementazione della classe sopraccitata si è resa necessaria per una notevole lacuna
delle VFW: non è possibile copiare l'immagine catturata in una zona di memoria senza
passare prima da un file su disco.
La libreria MYCAVICAP consente, invece ,di scegliere di copiare le immagini catturate in
una zona di memoria indicata, oppure su un file su disco.
I vantaggi dati dalla possibilità di copiare i dati direttamente in memoria senza passare dal
disco fisso sono :
Χ
maggiore velocità di cattura
93
CAPITOLO 5 Progettazione del sistema
Χ
maggiore velocità di accesso all'immagine
Χ
minore utilizzo del processore
La maggiore velocità di cattura e di accesso all'immagine non costituiscono nella realtà un
fattore critico di scelta poiché in ogni caso il processo di acquisizione delle immagini è più
veloce del processo di ricnoscimento forme e si ritrova quidi, ad attendere che quest'ultimo
finisca l'elaborazione.
La possibilità della cattura delle immagini su disco è stata implementa in MYCAVICAP per
motivi di compatibilità con webcam vecchie che non supportano la cattura direttamente in
memoria.
Tra le tecniche di cattura delle immagini trattate nel capitolo 4 si è scelto di utilizzare la
cattura a richiesta come si può notare dallo schema in figura X.
All'avvio dell'applicazione il SUPERVISORE richiede l'attivazione delle webcam al modulo
di “Gestione del dispositivo”. Se non la webcam non è presente o è occupata da un'altra
applicazione, dopo un messaggio di errore, si avvia una versione limitata del programma
che permette solo la gestione degli utenti e la visione dei modelli presenti nel database.
Dopo che l'utente avvia la ricerca della forma il SUPERVISORE inoltra le richieste provenienti dal modulo “Ricerca Forme” e il modulo di “Gestione del dispositivo” esegue la cattura. Alla chiusura del programma il modulo “Gestione dispositivo” invia il segnale di disconnessione alla webcam.
5.3.3.BRicerca della forma
La ricerca della forma all'interno delle immagini è effettuata tramite l'implementazione dell'algoritmo descritto nel capitolo 3.
All'avvio dell'applicazione di gaze tracking il SUPERVISORE si occupa di inviare al modulo
di “Ricerca della forma” il modello e la matrice associativa selezionata dall'utente corrente.
Il processo di ricerca delle forma una volta avviato tramite un segnale del SUPERVISORE
esegue ciclicamente i seguenti passaggi:
Χ
Richiesta nuova immagine
Χ
Riceve nuova immagine
Χ
ricerca della forma all'interno dell'immagine
Χ
invia parametri della forma trovata al SUPERVISORE
Χ
attende un tempo wt
94
CAPITOLO 5 Progettazione del sistema
Tramite il parametro wt il SUPERVISORE può controllare la velocità di ricerca delle forme.
Un indicazione importante per il modulo di ricerca forme è il posizionamento iniziale del
modello. Questo parametro viene acquisito dal SUPERVISORE, tramite l'indicazione da parte
dell'utente (o chi per esso) della posizione sull'immagine, e successivamente viene inviato
al modulo di ricerca delle forme. In figura 5.16 e 5.17 è rappresentata la finestra utilizzata
dal SUPERVISORE per raccogliere l'indicazione rispettivamente per l'eye tracking e head
tracking .
Figura 5.17 indicazione posizione modello della testa
Figura 5.16: indicazione posizione occhio
5.3.4 Determinazione del punto fissato
Il supervisore posiziona inizialmente i modelli in zone predeterminate:
Χ
il centro del modello dell'occhio è posizonato nella zona centrale destra dell'immagine.
Χ
Il centro del modello della testa è posizionato al centro dell'immagine.
Per la maggior parte dei casi tali disposizione consento un corretto avvio dell'algoritmo di
riconoscimento forme. La possibilità di indicare la posizione iniziale ha la funzione di controllo della correttezza della collocazione predefinita.
5.3.4.ADeterminazione del punto fissato (eye tracking)
La tecnica utilizzata dall'eye tracker per la determinazione del punto fissato è stata presentata nel capitolo 4 col nome di classificazione senza addestramento.
95
CAPITOLO 5 Progettazione del sistema
In figura 5.18 è riportato lo schema dei messaggi scambiati tra classificatore e sistema.
Figura 5.18: scambio messaggi eye tracking
Dalle analisi condotte, i cui risultati sono stati riportati precedentemente, è emerso che la
tecnica utilizzata per determinare la zona dello schermo fissata è fortemente influenzata
dalla differenza tra la posizione assunta dall'utente durante la costruzione del modello e la
posizione durante l'utilizzo del sistema. Per cercare di minimizzare tale differenza il SUPERVISORE mostra una finestra (figura 5.19) in cui è possibile confrontare la posizione
corrente con quella tenuta durante la costruzione del modello.
Figura 5.19: finestra di confronto immagine (eye tracking)
Le impostazioni che il supervisore comunica al classificatore sono le seguenti:
96
CAPITOLO 5 Progettazione del sistema
Χ
dimensione griglia in cui è diviso lo schermo
Χ
grandezza del buffer F
Χ
numero di riconoscimenti necessari per effettuare una selezione di una zona.
Il classificatore dopo un transitorio iniziale per ogni forma che riceve determina una zona
fissata indicata dal numero di riga e di colonna della griglia in cui è suddiviso lo schermo.
Il classificatore comunica al supervisore anche il valore della percentuale di selezione, calcolato come il numero di riconoscimenti consecutivi della stessa zona in rapporto al numero di riconoscimento necessari indicato nelle impostazioni.
Il valore della percentuale di selezione e la posizione fissata sono inviate dal supervisore al
modulo di gestione delle applicazioni che a sua volte li inoltra alle applicazioni in esecuzione.
5.3.4.BDeterminazione del punto fissato (head tracking)
La tecnica di head tracking implementata ha due modalità di funzionamento:
Χ
Determinazione del punto fissato: dalla posizione della testa viene rilevata la
zona dello schermo osservata.
Χ
Controllo del mouse: lo spostamento della testa permette di muovere il cursore
del mouse.
In figura 5.20 è riportato lo schema delle modalità di funzionamento dell'head tracker.
Figura 5.20: funzionamento head tracking
L'algoritmo di head tracking opera nel seguente modo:
97
CAPITOLO 5 Progettazione del sistema
Χ
viene considerato , per ogni forma trovata, il punto risultante della media delle
posizioni dei picchetti numero 29,33,35,36 come mostrato in figura 5.21.
Χ
Si effettua una fase di calibrazione, in cui viene chiesto all'utente di ruotare la testa nelle quattro direzione in modo da fissare i margini destro, sinistro,superiore
e inferiore.
Χ
Durante la fase di calibrazione si utilizzano le informazioni ricavate dalla posizione del punto medio per determinare il dominio di variabilità della posizione
(figura 5.22).
Dopo la calibrazione è possibile selezionare la modalità di funzionamento dell'head tracker.
Figura 5.21: picchetti utilizzati per il calcolo del
punto medio
Figura 5.22: dominio di variabilità della posizione
del punto medio
Il dominio di variabilità viene utilizzato per stabilire una relazione tra posizione del punto
medio e punto dello schermo fissato, come illustrato in figura 5.23.
Il classificatore, come nel caso dell'eye tracking, utilizza un buffer di dimensione F per la
memorizzazione delle indicazioni delle zone fissate. Ogni F forme riconosciute viene inviato al SUPERVISORE la segnalazione della zona maggiormente indicata all'interno del buffer.
98
CAPITOLO 5 Progettazione del sistema
Figura 5.23: relazione tra posizione punto medio e zona osservata
Per controllare il movimento del mouse il dominio di variabilità viene diviso in zone rettangolari concentriche. La direzione dello spostamento è determinata dalla posizione del
punto medio corrente rispetto al centro del dominio. La velocità di spostamento è determinata dalla zona in cui si trova il punto medio: più la zona è distante dal centro del dominio
maggiore è la velocità. In figura 5.24 è rappresenta la divisione del dominio per il controllo
della velocità e della direzioni di spostamento del cursore del mouse. Se il punto medio
della forma trovata si trova all'interno della zona indicata con lo 0 il puntatore del mouse
rimane fermo.
Se il mouse non viene mosso per un determinato periodo si esegue un click.
Il messaggio di click viene inviato direttamente al sistema operativo senza prima essere
processato dal supervisore, questo permette di utilizzare le comuni applicazioni già presenti sul sistema.
Figura 5.24: controllo movimento del mouse
99
CAPITOLO 5 Progettazione del sistema
Quando l'utente mantiene la testa ferma, affianco al cursore del mouse viene visualizzata
una barra di progresso per permettere di osservare il periodo mancante per effettuare un
click.
Posizionando il cursore sul margine sinistro dello schermo si apre una finestra che permette
all'utente di modificare le impostazioni del controllo del mouse, come la tipologia di click
(singolo, doppio, tasto destro) e l'attesa necessaria per effettuare un click.
5.3.5 Applicazioni
All'interno del sistema di gaze tracking è stato inserito un modulo per la gestione delle
applicazioni esterne che lo utilizzano. Il “gestore delle applicazione” funziona da intermediario per lo scambio di messaggi tra il supervisore e le applicazioni.
L'interfaccia di comunicazione tra applicazioni e sistema è costituita dallo scambio di 4
messaggi (figura 5.25):
Χ
Messaggio di Registrazione: un'applicazione per poter servirsi del sistema di
eye tracking deve inviare una richiesta richiesta di registrazione al modulo di gestione .
Χ
Messaggio di Impostazione: questo messaggio viene inviato alle applicazioni
quando effettuano la registrazione o quando c'è una modifica dei parametri di
funzionamento da parte dell'utente. Nel messaggio di impostazione sono contenute le informazioni relative alle dimensioni della griglia in cui è suddiviso lo
schermo.
Χ
Messaggio di Posizione: viene indicata all'applicazione la zona dello schermo
fissata e la sua percentuale di fissazione. Tale percentuale indica il periodo di
tempo mancante per effettuare la selezione della zona fissata. E' compito dell'applicazione visualizzare tale informazione tramite una barra di progresso o altri
espedienti grafici.
Quando il valore della percentuale di fissazione è uguale al 100 %, l'applicazione
deve gestire la selezione della zona fissata.
Χ
Messaggio di Terminazione: è un messaggio di tipo bidirezionale, mandato dall'applicazione al sistema quando è terminata oppure dal sistema all'applicazione
quando si è verificate una condizione di errore irrecuperabile.
100
CAPITOLO 5 Progettazione del sistema
Figura 5.25 scambio di messaggi tra sistema e applicazioni
Sono state sviluppate tre applicazioni che utilizzano il sistema di gaze tracking, due di esse
utilizzano l'eye tracking, mentre la rimanente utilizza l'head tracking.
5.3.5.AApplicazione - Impostazione
E' stata sviluppata all'interno del sistema un'applicazione per il controllo dei parametri di
funzionamento attraverso l'utilizzo dell'eye tracking.
Questa applicazione non rispetta pienamente il protocollo di scambio messaggi illustrato
precedentemente, poiché è necessario per l'applicazione comunicare al sistema le impostazioni selezionate dall'utente.
Il programma è studiato in modo da adattarsi a dimensioni variabili della griglia in cui sono
distinte le zone dello schermo. Il layout è stato ottimizzato per l'utilizzo di una griglia 2x3.
La finestra dell'applicazione risulta divisa in zone rettangolari, contraddistinte da una linea
di testo che descrive l'azione che si effettuerà selezionando quella determinata zona.
Quando un utente fissa una zona in cui è divisa l'applicazione, una barra di progresso indica l'avanzamento della selezione; quando raggiunge il 100% la zona assume una colorazione diversa. Per confermare o annullare la scelta l'utente deve fissare rispettivamente le zone
caratterizzate dal comando OK o CANCEL.
In figura 5.26 è presentato il layout dell'applicazione.
101
CAPITOLO 5 Progettazione del sistema
Figura 5.26: layout applicazione - impostazione
L'applicazione permette di impostare la dimensione del buffer F del classificatore e il numero di immagini necessarie per effettuare la selezione.
5.3.5.BApplicazione – Rettangoli
E' una semplice applicazione di test, per verificare il funzionamento del sistema di eye tracking. Il programma evidenzia la zona fissata con un rettangolo che aumenta di dimensioni
in proporzione alla durata dell'osservazione. Una versione più evoluta di questa applicazione è stata utilizzata per effettuare i test sul tasso di errore riportati nel capitolo 4.
5.3.5.CApplicazione – Editor di testi
Questa applicazione integrata nel sistema è un semplice esempio di tastiera virtuale su
schermo. Essa è utilizzabile tramite head tracking ed ha la particolarità di avere un layout
riconfigurabile in relazione alla precisione del sistema. In figura 5.27 è rappresentato l'editor con 24 tasti su schermo.
102
CAPITOLO 5 Progettazione del sistema
Figura 5.27: Applicazione Editor di testo
5.4 Database
5.4.1 Scelta del Database
Costruire un modello efficace per diversi individui porterebbe ad una complessità di ricerca
della forma troppo elevata, per cui si è deciso di costruire modelli specifici per ogni utente.
L’elevata quantità di dati da memorizzare per la costruzione di diversi modelli ha portato
alla decisione di utilizzare un database relazionale per la loro gestione e archiviazione.
Per effettuare una scelta sono stati esaminati alcuni Database Management System
(DBMS) non commerciali.
•
PostgreSQL: è un DBMS open source sviluppato dal dipartimento di informatica
di Berkeley dell’università della California. Ha un’architettura client server e supporta gli standard SQL92 e SQL99.
Comprende diverse caratteristiche tipiche dei più blasonati programmi commerciali:
Χ
Query annidate
Χ
Chiavi esterne
Χ
Trigger
Χ
Integrità della transazione
Χ
Controllo dell’accesso concorrente
Χ
Presenta interfacce native per ODBC, JDBC, C, C++, PHP, Perl, TCL,
103
CAPITOLO 5 Progettazione del sistema
ECPG, Python, e Ruby.
•
MySQL : è il DMBS open source più diffuso al mondo. Ha anch’esso un’architettura client server. Presenta interfacce per Java, ODBC e .NET.
Ha come punto di forza l’affidabilità e le elevate prestazioni.
•
SQLite : è una piccola libreria scritta in C che implementa un DBMS con le seguenti caratteristiche:
Χ
Implementa in gran parte lo standard SQL92
Χ
Non ha bisogno di alcuna configurazione del sistema per essere utilizzato.
Χ
Un database è completamente memorizzato in un unico file su disco.
Χ
Supporta database di dimensioni fino a 2 terabyte (241 byte).
Χ
E’ mediamente più veloce dei sopraccitati DBMS per le operazioni più comuni.
Χ
E’ completamente open source e libero da royalties.
Si è scelto di utilizzare SQLite per la facilità di configurazione e per le modeste dimensioni
delle librerie da integrare nel progetto.
Sebbene MySQL e PostgreSQL abbiano un’affidabilità e robustezza maggiore richiedono
una complessa configurazione e sono di maggiori dimensioni.
L’architettura client server, inoltre non è necessaria al nostro sistema per risulterebbe inutile utilizzare i DMBS che la implementano.
In appendice D? è riportata la descrizione delle tecniche di integrazione delle librerie SQLite all’interno del codice del sistema.
5.4.2 Struttura del database
Per descrivere la struttura di un database relazionare è necessario illustrare nel dettaglio le
tabelle che lo compongono e le relazioni che intercorrono tra esse.
In figura 5.28 è riportato lo schema delle relazioni tra le tabelle del database utilizzato.
Nelle tabelle dalla n alla k sono illustrati tutti gli attributi delle tabelle del database.
104
CAPITOLO 5 Progettazione del sistema
Figura 5.28: schema delle relazioni tra le tabelle del database
Tab. 5.2 : Tabella Archive
Questa tabella è utilizzata per memorizzare informazioni utili all’avvio del sistema
2
Campi
Descrizioni
LASTUSER
Indica l’ID2 dell’ultimo utente che ha utilizzato il sistema.
VERSION
E’ il numero di versione del database, è utilizzato dall’applicazione di
training per controllare che non vi siano inconsistenze tra la versione
implementata e la struttura del database. In caso di diversità tra le versioni la struttura del database può essere aggiornata.
Abbreviazione di “identifier”. Indica un valore univoco che identifica la tupla all’interno della tabella.
105
CAPITOLO 5 Progettazione del sistema
Tab. 5.3 : Tabella TrainingSet
E’ la tabella principale del database, in essa sono contenute tutte le informazioni relative
ai singoli Training Set.
Campi
Descrizioni
IDTS
E’ l’identificatore unico di ogni training set. E’ referenziato come
chiave esterna da diverse tabelle.
NAME
Indica il nome del Training Set
DESCRIPTION
E’ una breve descrizione del training set: permette di annotare il luogo
in cui è stato realizzato, particolari condizione di luce o posizione e
ulteriori note.
COMPLETE
E’ un valore booleano che indica se è già stato creato un modello per
il training set. Nel programma di gaze-tracking, sarà possibile la scelta solo dei training che hanno questo valore posto a TRUE.
NSHAPE
E’ il numero di forme che compongono il training set.
IDSPOTSINFO
E’ un riferimento alla tabella SPOTSINFO che indica la tipologia di
modello che si sta costruendo (eye o head).
dataCreation
E’ la data di creazione del training set
dataModified
E’ la data dell’ultima modifica al training set
Indicano il numero di righe e di colonne in cui viene suddiviso lo
rowGrid , colschermo per creare un modello di occhio. (Questa informazione non è
Grid
rilevante per il modello della testa)
NCollection
Indica il numero di collezioni di immagini associate al training set,E’
un’informazione ridondante in quanto si potrebbe ricavare con una
query apposita, è qui riportata per ottimizzare le prestazioni.
106
CAPITOLO 5 Progettazione del sistema
Tab. 5.3 : Tabella TrainingSet
STATISTIC,
dimstatistic
E’ un campo di tipo BLOB3 in cui è memorizzato il modello della forma creato. Contiene un valore nullo se il modello non è ancora stato
prodotto. Per poter accedere alle informazioni contenute in questo
campo è necessario conoscerne la dimensione (dimstatistic)
binWHERE
Se è presenta un modello di occhio, questo campo contiene una struttura WHERE_EYE, descritta nei paragrafi successivi, che relaziona le
singole immagini del training set con i punti fissati dello schermo.
binIma,dimIma
E’ un campo di tipo BLOB contenente un’immagine rappresentativa
del modello. Questa immagine è utilizzata dal programma di gazetracking per selezionare i diversi modelli.
Tab. 5.4 : Tabella SpotsInfo
In questa tabella sono memorizzati le tipologie di modelli possibili. Attualmente sono
inseriti solo la forma della testa e dell’occhio, ma è aperta la possibilità all’inserimento
di ulteriori forme.
Campi
Descrizioni
IDSPOTSINFO
Indica l’ID del tipo di modello.
Description
Descrizione del tipo di modello.
Image, binIma
E’ l’immagine utilizzata per rappresentare il modello all’interno dei
menù dell’applicazione
NumerSpots
Indica il numero di punti che costituiscono la forma
Tab. 5.5 : Tabella Spots
3
Acronimo di Binary Large Object, indica un campo all’interno di un database in cui è possibile memorizzare dei dati di tipo binario come immagini , strutture o classi serializzate.
107
CAPITOLO 5 Progettazione del sistema
In questa tabella sono memorizzati informazioni relative ai picchetti che costituiscono
una forma.
Campi
Descrizioni
IDSPOTS
Indica l’ID del picchetto
IDSPOTSINFO
E’ il riferimento all’identificatore della forma a cui appartiene
IndexOrder
Indica la posizione del picchetto nell’ordine di inserimento
IndexShape
Rappresenta l’indice con cui viene memorizzato all’interno della forma. Maggiori dettagli saranno illustrati nei paragrafi seguenti
Text
E’ la descrizione della posizione del picchetto.
Tab. 5.6 : Shapets
In questa tabella sono le diverse forme che appartengono ai training set.
Campi
Descrizioni
IDSHAPE
Indica l’ID della forma
IDTS
E’ il riferimento all’identificatore del training set a cui appartiene la
forma
binShape, size
E’ un campo BLOB che contiene in formato binario la disposizione
dei picchetti
IDIMATS
E’ il riferimento all’identificatore dell’immagine su cui è stata picchettata la forma. Questo indice viene utilizzato in fase di costruzione
del modello per risalire alle matrici di colori nell’intorno dei picchetti.
108
CAPITOLO 5 Progettazione del sistema
Tab. 5.7 : Tabella Matrix
In questa tabella sono memorizzate le matrici associative relative ai training set.
Campi
Descrizioni
IDMATRIX
Indica l’ID della matrice.
IDTS
E’ il riferimento all’identificatore del training set a cui appartiene la
forma
GrayL
Indica la larghezza della zona rettangolare nell’intorno di ogni picchetto da cui sono memorizzate le matrici di colori.
GreyE,GreyI
Indicano la lunghezza della zona rettangolare nell’intorno di ogni picchetto da cui sono memorizzate le matrici di colori. GrayE indica la
lunghezza in pixel della zona inferiore del picchetto mentre GrayI della zona superiore. Questa distinzione dà la possibilità di considerare
un intorno asimmetrico del picchetto.
BinMatrix
E’ memorizzata in formato binario la matrice associativa.
TSsize
Indica il numero di immagini che costituiscono il trainin gset. Questa
informazione è ridondante, è mantenuta in questa tabella per motivi di
efficienza.
Tab. 5.8: Tabella ImagesTs
In questa tabella sono memorizzati le immagini contenute nei training set.
Campi
Descrizioni
IDIMATS
Indica l’ID dell’immagine
109
CAPITOLO 5 Progettazione del sistema
IDTS
E’ il riferimento all’identificatore del training set a cui appartiene
l’immagine.
binIMA, size
Contiene l’immagine in formato binario.
binWHERE_EYE
Campo che contiene una struttura WHERE_EYE.
Tab. 5.9: Tabella Collection
In questa tabella sono memorizzate delle liste di immagini catturate da webcam ancora
da picchettare.
Campi
Descrizioni
IDCOLL
Indica l’ID della collezione di immagini
IDTS
E’ il riferimento all’identificatore del training set a cui appartiene la
collezione.
Name
Rappresenta il nome o la descrizione della collezione di immagini.
NumImaTot
Indica il numero totale di immagini della collezione.
NumImaDo
E’ l’indice della prima immagine non picchettata.
Tab. 5.10: Tabella ImaColl
In questa tabella sono memorizzati le immagini appartenenti alle collezioni presenti in
tabella X+7
Campi
Descrizioni
ID_IMACOL
Indica l’ID dell’immagine
110
CAPITOLO 5 Progettazione del sistema
IDCOLL
E’ il riferimento all’identificatore della collezione di immagini a cui
appartiene.
binIMA, size
Contiene l’immagine in formato binario.
spotted
E’ un valore booleano che indica se l’immagine è già stata picchettata.
binWHERE_EY
E
Campo che contiene una struttura WHERE_EYE.
Tab. 5.11: Tabella PathList
In questa tabella sono memorizzate strutture particolari denominati PATH.
I PATH contengono la descrizione della disposizione dei punti da osservare sullo schermo, durante la fase di cattura delle immagini che costituiranno il training set.
Campi
Descrizioni
IDPATH
Indica l’ID del PATH.
numRow
Indica il numero di righe in cui è suddiviso lo schermo.
numCol
Indica il numero di colonne in cui è suddiviso lo schermo.
subMat
Indica che precisione adottare per identificare un punto all’interno di
una zona dello schermo.
pointlist
E’ la presentazione in formato binario dell’elenco di punto che costituiscono il PATH
111
CAPITOLO 6
Verifiche sperimentali
6.1 Introduzione
Al termine dell'implementazione del sistema di gaze tracking sono state condotte delle verifiche sperimentali con un duplice finalità:
Χ
Stabilire i parametri ottimali di funzionamento.
Χ
Misurare le prestazioni e l'accuratezza del sistema.
Per effettuare tali verifiche si sono appositamente sviluppate delle applicazioni come per i
test descritti nel capitolo 4.
I risultati dei test sono fortemente dipendenti dalla macchina su cui sono eseguiti, per cui è
opportuno descrivere le caratteristiche tecniche dell'hardware utilizzato.
In tabella 6.1 sono riportate le specifiche del computer utilizzato e tabella 6.2 le specifiche
delle webcam testate.
112
CAPITOLO 6 Verifiche sperimentali
Tab. 6.1: Specifiche computer
CPU
AMD Athlon XP 2600+ (2000 Mhz)
RAM
512 MB
S.O.
Windows XP Home
Tab. 6.2: Specifiche webcam
Modello
Creative Webcam Live!
Creative Webcam Live! Pro
Risoluzione massima
640x480 (interpolata)
320x240 (reale)
640x480 (reale)
Frame Rate
20 frame/s
25 frame/s
Costo
Circa 30…
Circa 70 …
6.2 Parametri ottimali di funzionamento
I parametri del sistema di gaze tracking che possono essere modificati sono:
9
numero immagini del training set
9
posizione dei punti osservati durante la cattura
9
scelta del modello
9
scelta della matrice associativa
Le scelte del modello e della matrice associativa sono modificabili dall'utente durante il
funzionamento del sistema. E ' difficile condurre test sulla relazione tra scelta del modello
e prestazioni del sistema, in linea di massima valgono le considerazioni esposte nel capitolo 5.
Risulta interessante, invece, capire l'influsso sulle prestazioni e sull'accuratezza del sistema
del numero di immagini del training set e della posizione dei punti osservati durante la fase
di cattura delle immagini del training set.
6.2.1 Numero immagini del training set
Una osservazione soggettiva consente di affermare che maggiore è il numero di immagini
113
CAPITOLO 6 Verifiche sperimentali
che costituiscono un training set, più dettagliato e preciso risulta il modello.
Paradossalmente l'eccessiva precisione del modello risulta essere un fattore critico per l'algoritmo di ricerca forma, infatti, come illustrato nel capitolo 4, essa avviene tramite un
confronto dell'immagine da analizzare con le forme memorizzate all'interno del training
set.
Nel grafico in figura 6.1 è illustrato il rapporto tra il numero di forme riconosciute e il numero di forme che compone il training set. Il test svolto è riferito al riconoscimento di 1000
forme ( 4 minuti circa di test).
Nel grafico in figura 6.2, invece, è riportato l'andamento della percentuale di riconoscimento sui vari training set.
90
80
Numero forme
70
60
50
Forme TS
Forme Riconosciute
40
30
20
10
0
TS 1
TS 2
TS 3
TS 4
TS 5
TS 6
Figura 6.1: numero forme riconosciute su numero di forme del training set
100,00%
80,00%
60,00%
40,00%
Percentuale
20,00%
0,00%
TS
1
TS
2
TS
3
TS
4
TS
5
TS
6
Figura 6.2: percentuale forme riconosciute su forme del training set
Come si nota dai grafici sopra riportati, utilizzando un modello costruito con un training set
di 90 immagini, ben 50 immagini non vengono riconosciute.
114
CAPITOLO 6 Verifiche sperimentali
Tali immagini, però, contribuiscono comunque alla complessità della ricerca delle forme e
concorrono, inoltre, ad aumentare i tempi della costruzione del modello .
In figura 6.3 è mostrato un grafico con una stima approssimativa della relazione fra numero
Tempi di costruzione modello (min.)
di immagini del training set e tempi di costruzione del modello.
70
60
50
40
Tempo
30
20
10
0
89
60
30
12
6
Numero immagini Training Set
Figura 6.3: tempi di costruzione dei modelli in funzione del numero di immagini del training set
Dai dati appena riportati è evidente che risulta inutile utilizzare modelli costruiti su training
set formati da numerose immagini.
L'algoritmo di ricerca forma produce buoni risultati anche con modelli poco accurati come
quelli costruiti su training set composti di solo 4 o 6 immagini.
6.1.2 Posizione dei punti osservati durante la cattura
Il programma di training permette di scegliere la posizione dei punti da osservare durante
la cattura delle immagini che costituiscono il training set. Risulta utile stabilire come tale
scelta possa incidere sulle prestazioni dell'algoritmo.
In figura 6.4 e figura 6.5 sono riportati due esempi di percorsi di cattura differenti.
115
CAPITOLO 6 Verifiche sperimentali
Figura 6.5: percorso di cattura B
Figura 6.4: percorso di cattura A
Il percorso di cattura di tipo A ha il vantaggio di determinare un modello con forme molto
differenziate, ciò facilita il compito del classificatore, infatti i modelli costruiti da training
set con immagini catturate con tale percorso hanno tassi di errore inferiori rispetto al percorso di tipo B. D'altro canto, il percorso di tipo B, consente all'utente una maggiore facilità di utilizzo, poiché risulta più naturale, durante l'impiego delle applicazioni, fissare i punti centrali di ogni zona rispetto ai punti estremi. In figura 6.6 è rappresentato il grafico del
confronto tra le due tipologie di cattura. In tabella 6.3 sono riportate le condizioni in cui
sono state eseguite le misurazioni.
Tab. 6.3: Caratteristiche dei TEST
TEST
Numero forme TS
Tipo matrice
Condizioni particolari
1
12
C
-
2
12
A
Utente diverso da quello su cui è stato fatto il modello
3
30
A
Utente diverso da quello su cui è stato fatto il modello
4
12
A
-
5
6
A
-
6
6
A
Luce differente: modello costruito con la normale luce
ambientale e testato con illuminazione artificiale
7
12
A
Luce differente: modello costruito con la normale luce
ambientale e testato con illuminazione artificiale
8
18
A
-
9
24
A
-
10
30
A
-
116
CAPITOLO 6 Verifiche sperimentali
6.3 Prestazioni del sistema
Sono stati effettuati diversi test sperimentali per verificare l'utilizzo delle risorse del computer da parte del sistema di gaze.
Si è osservato l'utilizzo delle seguenti risorse:
Χ
memoria occupata sul disco fisso;
Χ
utilizzo della memoria RAM;
Χ
utilizzo del processore;
6.3.1 Memoria occupata sul disco fisso
Il sistema di gaze tracking utilizza, per il suo funzionamento, un database che può contenere un numero elevato di modelli. Si è ritenuto necessario verificare la relazione che intercorre tra il numero immagini del training set su cui è basato il modello e la dimensione fisica del modello stesso.
Nel grafico in figura 6.9 è rappresentata tale relazione.
14000
Dimensione (KB)
12000
10000
8000
6000
Dimensione (KB)
4000
2000
0
6
12
20
40
60
90
Numero forme del training set
Figura 6.9: relazione tra dimensione occupata su disco e numero immagini del training set.
117
CAPITOLO 6 Verifiche sperimentali
6.3.2 Utilizzo della memoria RAM
I risultati proposti in questo paragrafo sono stati ottenuti dalla media di 10 misurazioni effettuate in momenti diversi.
In tabella 6.4 sono riportati i dati relativi alle misurazioni sul programmi di training, mentre
in tabella 6.5 quelli relativi al programma di gaze tracking.
Tab. 6.5: Utilizzo della Ram programma di training
Condizione
Utilizzo (KB)
Avvio del programma
4300
Caricamento collezione di immagini
14500
Creazione modello e matrici associative
21200
4
Compattazione database
Memoria occupata da
database su disco
Tab. 6.6: Utilizzo della Ram programma di training
Condizione
Utilizzo (KB)
Avvio del programma
5100
Caricamento modello e matrici
14300
Utilizzo del sistema
14300
6.3.3 Utilizzo del processore
La percentuale di utilizzo del processore è un dato importante da rilevare per capire l'efficienza del programma. Nelle tabelle 6.7 e 6.8 sono riportati i valori dei tempi e delle percentuali di utilizzo del processore riferite rispettivamente ai programmi di training e di
gaze tracking.
Tab. 6.7: Utilizzo CPU programma di training
4
Condizione
Durata (ms)
Utilizzo %
Avvio del programma
170
30
Caricamento collezione di immagini
400
60
Creazione modello e matrici
associative
5300
80
Compattazione database
(Alcuni minuti)
95
Cattura nuova collezione
15400
21
Importazione/ Esportazione modello
3500
80
Questa procedura è illustrata in appendice D
118
CAPITOLO 6 Verifiche sperimentali
Tab. 6.7: Utilizzo CPU programma di training
Operazioni comuni, come :
- inserimento nuova forma
- picchettatura immagine
(variabile)
<6
Tab. 6.8: Utilizzo CPU programma di gaze tracking
Condizione
Durata (ms)
Utilizzo %
Avvio del programma e caricamento
modello e matrici associative
430
90
Cattura immagini
20
31
Calibrazione head tracking
4500
75
Ricerca Forma matrice di tipo A
370
100
Ricerca Forma matrice di tipo B
290
100
Ricerca Forma matrice di tipo C
170
96
Determinazione punto fissato
60
12
119
CAPITOLO 7
Conclusione e sviluppi futuri
Il sistema di gaze tracking progettato ha le potenzialità per diventare una buona piattaforma
di sviluppo per applicazioni dedicate all’interazione tra disabili e computer, per il momento, l’algoritmo di head tracking permette di ottenere risultati paragonabili ai più costosi sistemi commerciali, mentre ulteriori studi e approfondimenti devono essere svolti per il miglioramento della tecnica di eye tracking.
Per utilizzare efficacemente il sistema deve essere costruito per ogni utente un modello
specifico. La realizzazione del modello coinvolge l'utente per un periodo limitato di tempo
( massimo 30 secondi) per la cattura delle immagini necessarie, mentre un operatore deve
procedere ad segnalare i punti caratteristici della forma su ogni immagine. L'operatore tipicamente impiega un tempo variabile dai 5 ai 30 minuti per costruire il modello. La fase
appena descritta è svolta utilizzando il programma di training, essa è effettuata un'unica
volta per ogni utente.
Per avviare il sistema di gaze tracking è necessaria la presenza di un operatore che scelga
il modello opportuno e stabilisca la posizione corretta dell'utente, questa fase può durare da
120
CAPITOLO 7 Conclusione e sviluppi futuri
1 a 5 minuti in relazione al fatto che un utente abbia o meno un proprio modello specifico:
se l'utente non ha un proprio modello la scelta di quale utilizzare non è banale.
Dopo la scelta del modello nel caso dell'head tracking è necessaria una fase di calibrazione
del sistema, assistita dall'operatore , della durata tra i 5 e i 30 secondi.
Dopo l'eventuale fase di calibrazione l'utente è in grado di utilizzare il sistema di gaze tracking in autonomia.
La scelta del modello, il posizionamento dell'utente e la calibrazione (per l'head tracking)
sono procedure che vanno ripetute per ogni sessione di utilizzo del sistema.
In figura 7.1 sono illustrate le tempistiche delle fasi appena descritte.
Figura 7.1 Tempi per l'utilizzo del sistema di gaze tracking
Con l’utilizzo dell’head tracking è possibile per l’utente controllare con i movimenti della
testa il cursore del mouse, dopo un breve periodo di apprendimento si riesce ad ottenere
un’elevata precisione, tanto da permettere l’utilizzo delle normali applicazioni del sistema
operativo. Il click del mouse è effettuato mantenendo la stessa posizione della testa per un
determinato numero di secondi; mentre si è fermi, affianco al cursore del mouse, viene visualizzata una barra di progressione che indica quanto manca al click. Spostando il cursore
all’estremo sinistro dello schermo sarà visualizzata una finestra che dà la possibilità all’utente di modificare le impostazioni di funzionamento, come il tipo di click da effettuare
(singolo, doppio, con il tasto destro) e la durata dell’attesa necessaria per il click. Il sistema
è in grado di stabilire se c’è una perdita di tracciamento della posizione e dopo circa 5 secondi, riposiziona il modello all’interno della zona definita durante la fase di calibrazione
permettendo di riprendere l’utilizzo del sistema.
Con l’utilizzo dell’eye tracking,invece, si riesce a dividere lo schermo da un minimo di 4
121
CAPITOLO 7 Conclusione e sviluppi futuri
ad un massimo di 16 zone. I risultati migliori per accuratezza e prestazioni si sono ottenuto
considerando una suddivisione dello schermo in 6 zone (griglia 2 x 3).
L’algoritmo implementato è fortemente sensibile al movimento della testa e alla differenza
tra il posizionamento dell’utente durante l’utilizzo del sistema e la posizione assunta durante la costruzione del modello. Dai test condotti è emerso, data l’elevata sensibilità ai movimenti della testa, che la tecnica di eye tracking sviluppata è difficilmente utilizzabile da
utenti normodotati, che tendono a seguire con i movimenti della testa il punto osservato.
7.1 Possibili sviluppi futuri
Il sistema di gaze tracking attuale è già in grado di supportare lo sviluppo di applicazioni
esterne che lo utilizzano, una prosecuzione possibile del lavoro svolto è l'implementazione
di applicazioni specifiche per l'ausilio all'interazione tra utente disabile e computer.
In quest'ambito sono possibili diverse applicazioni, di seguito ne sono riportati alcuni
esempi:
Χ
applicazione di sintesi vocale: il testo editato tramite le fissazioni dell'utente è
sintetizzato come voce;
Χ
utilizzo un linguaggio simbolico: la comunicazione della necessità dell'utente avviene selezionando con lo sguardo determinati simboli che rappresentano azioni,
bisogni e desideri dell'utente.
Χ
Integrazione con una casa domotica: il sistema di gaze tracking può essere integrato con gli applicativi che gestiscono una casa completamente automatizzata.
Questa applicazione consentirebbe all'utente di controllare luci, porte e finestra
solamente attraverso lo sguardo.
Un'ulteriore prosecuzione del progetto potrebbe riguardare il miglioramento del sistema
stesso.
Nel capitolo 2 sono state illustrate diverse possibilità di implementazione di un sistema di
gaze tracking, per motivi di tempo e di opportunità non sono state sviluppate e verificate
tutte. La modularità con cui è stato progettato il sistema consente di migliorare e aggiornare
un singolo componente senza dover modificare la struttura del sistema stesso. Ciò permette
di verificare l'accuratezza e le prestazioni di algoritmi di gaze tracking diversi da quelli
implementati attualmente.
Di seguito sono elencate alcune possibili modifiche che potranno essere attuate per il mi122
CAPITOLO 7 Conclusione e sviluppi futuri
glioramento del sistema, esse sono rappresentate dalle idee emerse durante la progettazione
e che per motivi di tempo non sono state implementate.
7.1.1 Modifiche al programma di training
Il programma di training attualmente consente di creare modelli di forme costituiti da esattamente 37 punti, un'interessante estensione dell'applicazione sarebbe implementare la possibilità di modellare forme costituiti da un punto arbitrario di punti.
Un'applicazione così strutturate permetterebbe di sviluppare sistemi di riconoscimento oggetti che esulano dal gaze tracking: ad esempio si potrebbe progettare un sistema per il riconoscimento del linguaggio dei segni dei sordi, oppure per il riconoscimento di determinate presenza di eventuali patologie dall'analisi di una lastra.
7.1.2 Database centralizzato
Per dare la possibilità anche agli utenti su cui non è costruito un modello di utilizzare efficacemente il sistema sarebbe opportuno avere a disposizione diversi modelli tra cui scegliere quello che meglio si adatta alle caratteristiche dell'utente.
Per ampliare la possibilità di scelta risulterebbe d'aiuto progettare un database remoto che
dia la possibilità di condividere il maggior numero di modelli possibili tra tutti gli utenti
che utilizzano il sistema.
7.1.3 Utilizzo di due webcam
Per quanto riguarda il gaze tracking risulterebbe interessante implementare la possibilità di
utilizzo congiunto di due webcam per poter effettuare head tracking ed eye tracking contemporaneamente. Questa configurazione permette, in linea teorica, di limitare la forte
sensibilità dell'eye tracking dalla posizione e dal movimento della testa dell'utente.
123
BIBLIOGRAFIA
[1] Active Shape Models – Their training and application ; T.F. Cootes , C. J. Taylor , D.
H. Cooper, J, Graham
[2] REAL TIME EYE TRACKING FOR HUMAN COMPUTER INTERFACES ;Subramanya Amarnag, Raghunandan S. Kumaran and John N. Gowdy.
[3] www.cogain.org
[4] Data mining with decision trees and decision rules. C. Apte and S. Weiss. Future
Generation Computer Systems, 13, 1997.
[5] Classification and Regression Trees. L. Breiman, J. Friedman, R. Olshen, C. Stone.
Wadsworth International Group, 1984.
124
APPENDICE A Anatomia e movimenti dell'occhio
Anatomia dell'occhio umano
L'organo della vista è costituito dal bulbo oculare di forma sferica del diametro che va dai
24 ai 24 mm. Anteriormente è ricoperto dalla congiuntiva, una membrana trasparente, mentre nel suo complesso è avvolto da tre membrane:la sclerotica, la più esterna, che davanti a
iride e pupilla forma la cornea, la coroide e la retina, di cui si dipartono le fibre del nervo
ottico.
Figura A: morfologia dell'occhio
La cornea, l'umore acqueo contenuto nella camera anteriore (fra cornea e iride) e in quella
posteriore (fra iride e cristallino), il cristallino e il corpo vitreo che costituisce l'interno del
bulbo oculare sono i mezzi trasparenti (mezzi diottrici) che consentono il passaggio dei
raggi luminosi. Questi ultimi entrano attraverso la pupilla, subiscono una serie di rifrazioni
opera dei mezzi diottrici, che hanno densità diversa e cadono sulla retina; affinché su questa l'immagine si formi esattamente, il cristallino può cambiare la sua curvatura.
L' immagine retinica ha una persistenza di 1 / 16 di secondo per consentire la visione del
movimento. Sulla retina l'immagine si forma rovesciata, ma si vede dritta perché viene
esteriorizzata a livello celebrale.
Movimenti oculari
I movimenti oculari possono essere distinti sommariamente in due categorie: coniugati e
disconiugati, sotto il controllo rispettivamente dei sistemi di versione e di vergenza.
Il sistema di versione è diviso in quattro sottosistemi: il sottosistema per i movimenti oculari rapidi genera le saccadi; quello per i movimenti oculari lenti lo smooth pursuit o inseguimento lento; il sottosistema vestibolo-oculare il riflesso vestibolo-oculare e quello otti125
co-cinetico genera il riflesso otticocinetico.
Il movimento saccadico è un movimento oculare rapido volontario. Il suo scopo è di portare sulla fovea l'immagine di oggetti di interesse che compaiono sulla periferia della retina. Esso è caratterizzato da tre parametri che sono: ampiezza, durata e velocità di picco. La
durata aumenta in proporzione con l'aumentare dell'ampiezza del movimento, mentre la velocità di picco raggiunge un massimo per ampiezze superiori ai 20°. Altri parametri che descrivono la saccade sono la latenza, la metrica, la traiettoria e la strategia. La latenza è il
tempo che separa la comparsa dello stimolo dall'inizio del movimento, dipende sia dall'eccentricità del target sia dal paradigma di stimolazione. La metrica descrive l'accuratezza del
movimento, vale a dire il rapporto fra posizione finale dell'occhio e posizione del target: un
movimento accurato è definito ortometrico, un movimento che termina oltre il bersaglio si
dice ipermetrico mentre uno che si arresta prima del target si dice ipometrico. Le saccadi
dismetriche sono seguite da una seconda saccade correttiva con una latenza di circa 100
msec. La traiettoria descrive il modo nel quale la saccade viene eseguita. La strategia indica
il modo nel quale una saccade viene programmata e in condizioni fisiologiche è costituita
da un unico movimento ortometrico o da due movimenti, il secondo sempre correttivo.
Il movimento di inseguimento lento ha la funzione di mantenere sulla fovea l'immagine di
un oggetto in movimento.
Il riflesso vestibolo-oculare conserva costante la posizione dello sguardo durante i movimenti del capo.
Il riflesso ottico-cinetico è evocato dallo scorrere dell'immagine sulla retina causato dal
movimento della scena visiva o dalla testa. Per compensare, l'occhio esegue un movimento
lento nella direzione del movimento della scena, seguito da una saccade di ricentramento in
direzione opposta.
I movimenti di vergenza sono movimenti disconiugati. I due tipi di movimenti di vergenza sono quello di fusione, evocato quando l'immagine di un oggetto cade nei due occhi in
posizioni retiniche differenti, e quello di accomodazione, indotto da una riduzione di nitidezza dell'immagine.
126
APPENDICE B Guida al programma di training
Creare un nuovo Training set e catturare una collezione di immagini
Creare un nuovo Training Set
Premere il bottene "new ts" per aprire la finestra di dialogo con le impostazioni
del trainingset
TS Name
Specificare un nome per il trainingset
(obbligatorio)
Descrizione
Descrizione del trainingset (faooltativo)
Type
Si può scegliere fra due tipologie di trainingset
Χ Eye Ts crea un modello per eyetracking
Χ Head Ts crea un modello per headtracking
Grid
Se si è scelto come tipo Eye Ts si deve specificare
il numero di righe e il numero di colonne in cui
delimitare lo schermo.
Tipici valori utilizzabili sono 2x3,3x3,3x4
Catturare un collezione di immagini
Premere il bottone "New Cs" per aprire finestra di dialogo con le impostazione per la
cattura di una collezione di immagini, chiamata Capture Set
Per path intendiamo l'insieme dei punti da
osservare durante la cattura della collezione di
immagini.
Choose Path
E' possibile scegliere tra i path già creati, al
centro sono visualizzate informazioni come il
numero di righe , il numero di colonne e il
numero di immagini che verrano catturate.
Mentre a destra c'è un'anteprima della griglia di
cattura in cui i cerchi blu indicano i punti in cui
si deve osservare.
New Path
Per generare nuovi path personalizzati
Delete Path
Per eliminare il path selezionato
START
Per avviare la cattura delle immagini
Creare un nuovo path
127
Premere il bottone "new Path" per aprire la finestra di dialogo per la creazione di un
nuovo PATH
Selezionare il numero di righe e di colonne della griglia.
SG è l'abbreviazione di subgrid e indica il numero di righe e colonne
in cui sarà divisa ulteriormente la griglia.
(Nell'esempio le impostazioni sono R:2,C:3,SG:5)
Premere il bottone "Build" per generare la griglia.
Intendiamo con punto di cattura una zona di schermo da osservare
durante la cattura di immagini.
E' rappresentato sulla griglia da un numero che indica il numero di
immagini catturate per ogni punto.
click sinistro sulla griglia aggiunge punto di cattura al path
per catturare più immagini sullo stesso punto basta cliccare
ulteriormente
click destro sulla griglia rimuove punto di cattura dal path
Premere OK per salvare il nuovo PATH
Eseguire la cattura
Dopo aver scelto ( o creato un path) premere il bottone START per avviare la cattura della collezione
di immagini
Premere il pulsante "Center Head" e posizionare la testa in modo che risulti al centro dello
schermo.
Premere il pulsante "Stop Center" quando la posizione della testa è quella desiderata
L'ultima immagine catturata dalla webcam viene memorizzata nel database
Premere il pulsante "Capture Set" per avviare la cattura delle immagini
Un cerchio si sposta per lo schermo.
Χ Nel caso si stia facendo un training set per l'eye-tracking bisogna
tenere la testa immobile e seguire il cerchio con lo sguardo.
Χ Nel caso di head-tracking si deve seguire il cerchio muovendo la
testa.
Quando il cerchio diventa verde indica che è stata catturata un'immagine.
Caricare una collezione di immagini
Dopo aver effettua la cattura di un nuovo Capture Set (2.1 B-B2), si può caricare
nell'applicazione premendo il pulsante "New Cset"
128
Selezionare il capture Set desiderato e premere il pulsante
LOAD
Sulla parte destra della finestra viene caricate la prima immagine del
capture set
utilizzare i tasti freccia per visualizzare
le altre immagini delle collezione
Sulle sinistra viene visualizzata una griglia in
cui con una X è indicato il punto osservato
durante la cattura.
Se la posizione non è corretta si può
modificare clicclando nella posizione esatta
Catturare una singola immagine da webcam
E' possibile catturare una singola immagine da picchettare dalla webcam, per integrare o
sostituire immagini del capture set.
Si deve agganciare la webcam premendo il bottone in figura a destra in alto, che
diventerà come in figura a destra in basso.
Verrano visualizzate in basso a destra, informazioni sulla webcam, come stato
di connessione e risoluzione.
Assicurarsi che la compressione RGB 24 , premendo il pulsante "Format"
Cliccare sul pulsante in figura a destra per catturare un'immagine dalla webcam.
Posizionare i picchetti
Dopo aver caricato un Capture Set (2.1 B3) occorre posizionare i picchetti per ogni immagine della
collezione.
I picchetti vengono utilizzati per costruire un modello probabilistico della forma dell'occhio o della
posizione della testa.
129
Sull'immagine del Capure Set selezionare una zona rettangolare che
racchiuda l'occhio (o la testa) tenendo premuto il tasto sinistro del mouse.
Sulla sinistra verrà visualizzata la zona selezionata
precedentemente.
Permette di ingrandire l'immagine selezionata
Permette di rimpicciolire l'immagine selezionata
Avvia il posizionamento dei Picchetti
130
Occhio
Per posizionare i picchetti, basta cliccare col tasto sinistro del mouse
sull'immagine selezionata.
Se si è sbagliato a posizionare un picchetto si può eliminare facendo
click col tasto destro del mouse.
Vi sono 37 picchetti che vanno posizionati su punti specifici
dell'occhio, nell'ordine mostrato nella figure sulla destra.
Una volta posizionati i 37 picchetti, cliccare sul pulsante
"OK" per aggiungere la forma al Training Set
Questi passi vanno ripetuti per ogni immagine che si
desidera aggiungere al trainingset
Testa
Per posizionare i picchetti, basta cliccare col tasto sinistro del mouse sull'immagine selezionata.
Se si è sbagliato a posizionare un picchetto si può eliminare facendo click col tasto destro del mouse.
Vi sono 37 picchetti che vanno posizionati su punti specifici della testa, nell'ordine mostrato nella figure
sulla destra.
Una volta posizionati i 37 picchetti, cliccare sul pulsante "OK" per
aggiungere la forma al Training Set
Questi passi vanno ripetuti per ogni immagine che si desidera aggiungere al trainingset
131
Generare il modello matematico e matrici associative
Dopo che si sono picchettate le immagini, premento il
pulsante
"Generate Model Matrix"
La durate del processo di generazione del modello e delle
matrici associative dipende dal numero di immagini del
training set.
Dopo aver generato il modello e le matrici associative è possibile utilizzarli con Sandra per eye-tracking
o head-tracking
Gestire i Training Set
Le seguenti informazioni illustrano le principali funzioni per gestire la raccolta dei training set
Caricare Training set
Nella finestra principale "Choose Training Set", cliccando sul nome
di un training set si visualizzeranno sulla destra informazioni
Type
Eye TS o Head Ts
Description
La descrizione del traing set immessa nella creazione, può anche
mancare
Creation Date and Last modified Date
La funzione che imposta la data dell'ultima modifica non è
funzionante!!
Shape
Numero di immagini picchettate
Statistic Generated
Indica se sono già stati generati modello e matrici associative
Collection
Indica il numero di capture set associati al training set
Premere il pulsante "LOAD" per caricare un training set precedentemente creato.
132
Inserire nuove forme
Dopo aver caricato un Training Set (2.4 A) premere il pulsante "Insert New
Shape"
Ora è possibile creare un nuovo capture set (2.1 B),
caricarne uno già creato (2.1 B3) oppure acquisire una
singola immagine da catturare (2.1 B4)
Visualizzare/Eliminare le forme inserite
Dopo aver caricato un training set(2.3 A), si avrà una
finestra come quella sulla destra
Per visualizzare le
forme precedenti e
successive a quelle
attuali.
Aumenta / Diminuisce
lo zoom.
Per elimanare una forma/immagine premere il
pulsante "Delete"
E' possibile modificare il punto osservato, indicato con una X sulla griglia, facendo
click col tasto sinistro sulla posizione corrette.
Cliccare poi sul bottone "Update point saw".
Visualizzare modello
Dopo aver caricato un training set(2.3 A), è possibile visualizzare il modello generato
cliccando sul pulsante "View Model"
Verrà visualizzato un modello dinamico che può
assumere tutte le forme di occhio/testa inserite durante il
picchettamento.
Per modificare il modello, spostare le diverse trackbar a
destra o a sinistra.
133
Gestione Database
Compattare Database
Quando si eliminano CaptureSet, Shape e TrainingSet le dimensioni su disco del database che li continene
non diminuiscono, ma rimangono occupate per rendere più veloci ulteriori inserimenti.
Se si vuole liberare questo spazio dal menù Archive avviare il comando COMPACT DB.
L'operazione può richiedere diversi minuti!!!
Esportare TrainingSet
Esportare un training set è una funzione utile quando si vuole trasferire da un computer ad
un'altro, o quando vi è un aggiornamento del programma, per evitare di perdere i modelli già
fatti.
Nella finestra principale "Choose Training set" cliccare su "Export"
Si deve selezionare la cartella in cui salvare
il trainingset, cliccare sul bottone, in figura
a destra.
Si può scegliere se salvare il training set in
formato Zip o in una cartella non
compressa.
Importare TrainingSet
Per importare un Training Set nella finestra principale "Choose Training set" cliccare
su "Import"
Si aprirà una finestra di dialogo simile a quella della
creazione di un nuovo training sey, per completare i
campi riferirisi a 2.1 A
Premere il bottone in figura a destra per selezionare il
file da importare.
Se si è decisono di non comprimero il training set, si
dovrà selezionare il file "info.txt".
Una volta selezionato il file, si aprirà una finestra di
informazione, simile a quella in figura a destra.
Cliccare sul bottone "import" per importare il training set selezionato.
134
APPENDICE C Guida al programma di gaze tracking
Considerazioni sulla webcam
Se la webcam non è connessa al computer all'avvio del programma, le funzioni di eye-tracking ed headtracking non saranno dispobili.
Dopo aver connesso la webcam , cliccare su "connect webcam now" per abilitare tutte le funzioni.
Assicurarsi che sia selezionata la modalità RGB, andando nel menù WebCam->Format.
Gestione utenti
Sandra memorizza le scelte di training set effettuate dagli
utenti , per evitare ogni volta la ripetizione dei passi 3.3.
Si può creare un nuovo profilo utente, selezionando la voce di
menù User->New Uset Profile...
Verrà aperta una finestra come quella in figura affianco in cui
inserire un nome identificativo del profilo
Per selezionare un profilo, selezionare la voce di menù
User->Choose user profile...
Delete
Serve per eliminare il profilo selezionato
Select
Seleziona il profilo e carica le impostazioni.
Non è necessario eseguire queste operazioni ogni volta, per default l'applicazione si avvierà caricando
l'ultimo profilo utilizzato in precedenza.
135
Scelta del Training e Modello
Per visualizzare la finestra di scelta dei training set, selezionare
la voce di menù User->Choose Model Matrix
Scelta del tipo Eye o
Head.
Scelta della matrice
associativa. Quando
viene generato il
modello, vengono
generate tre matrici
associativi che
contengono
informazioni per il
riconoscimento delle
forme.
Maggiore è il numero
della metrice minore
sarà la precisione, ma
si avrà più velocità di
elaborazione.
Scelta del modello,
utilizzare i bottoni >
< per visualizzare i
modelli disponibili.
Provare il modello
Premere il bottone Try per provare il modello.
Verranno visualizzate le immagini catturati dalla webcam, per posizionare il
modello clicclare col tasto sinistro
Χ nel caso di eye-tracking sull'occhio su cui si è fatto il trainingset
Χ nel caso di head-tracking il punto centrale della testa alla sommità
del naso
Cliccare sul bottone Stop try per interrompere la prova.
Per selezionare il modello, premere il bottone "Select"
136
Eye-tracking
Finestra "Touch Image"
Per avviare l'eye-tracking selezionare la voce del menù Eye->Start
Si aprirà una finestra nella cui parte sinistra vengono visualizzate le
immagini della webcam, mentre sulla destra un'immagine catturata durante
ill trainingset per fare in modo che il posizionamento della testa sia simile.
Click col tasto sinistro del mouse sull'occhio per posizionare il modello.
Ora si può chiudere o ridurre ad icona questa finestra, per visualizzarla di
nuovo, selezionare la voce di menù Eye->Touch Image
Come utilizzare le Applicazioni con l'eye-tracking
Una volta avviato l'eye-tracking si attiva la finestra
di selezione tra programmi e opzioni.
Per effetture una scelta guardare nel riquadro
Options o Programs, una barra di scorrimento
indica quanto manca per la selezione.
Quando una casella diviene di colore blu. E'
selezionata.
Per confermare la scelta guardare su OK.
Per deselezionare una casella guardare su Cancel.
Impostazioni - Options
Queste impostazioni sono selezionabili come
spiegato in 3.4 B.
Buffer Size
Aumentando tale valore si ha un miglioramento della
precisione, ma un rallentamento del riconoscimento.
Images for click
E' il numero di step necessarri per selezionare un
quadrande.
Mouse Movement
Il numero di pixel di cui si sposta il mouse
nell'applicazione mouse move.
Backward
Ritorna alla finestra precedente.
137
Applicazioni
Per illustrare il funzionamento dell'eye-tracking abbiamo realizzato due semplici applicazioni a puro scopo
dimostrativo.
Mouse Move
Selezionando questa applicazione, si ridurrà ad icona Sandra e
sarà possibile usare il mouse con lo sguardo.
Si deve immaginare lo schermo diviso come se ci fosse la griglia
e guardare nei riquadri come illustrato a destra
138
Sinistra
Alto
Click
Basso
Dest
ra
APPENDICE D Esempio di codice
Data la vastità del codice dell'applicazione risulta improponibile riportare integralmente il
codice. Lo scopo questa Appendice è mostrare una il codice di due classi che rappresentano
il classificatore per l'head tracking e l' eye tracking.
#ifndef _AdattamentoHead_h_
#define _AdattamentoHead_h_
#define STATO_INIZIO
001
#define STATO_UNLOOK
002
#define STATO_LOOK
003
const short MARGINE = 10;
const short FILTRO
= 4;
const short SELEZIONE = 4;
const short MARGINE_CLICK = 5;
#define IMACLICK 20
#define TOLLERANZA 10
class HeadAdattamento : public Nirvana
{
public:
inline
HeadAdattamento() {
puntiFUORI=0;
emiConta=0;
Attiva = DominioAttivo = false;
Stato = STATO_INIZIO;
bMouseMove=true;
imaClick=IMACLICK;
tipoClick=C_LEFTCLICK;
};
void
SetThreadAdattamentoHead(CWinThread *ThreadAdattamentoHead);
void SetMouseMove(bool bM){bMouseMove=bM;};
int GetImaClick(){return imaClick;};
void SetImaClick(int iMA){imaClick=iMA;};
void SetTipoClick(short tipo){tipoClick=tipo;};
short GetTipoClick(){return tipoClick;};
139
public:
PUNTO_DOUBLE
Centro,Previsione,Punto; // Punto è una specie di
accumulatore usato nei conti
UINT
Stato;
bool
Attiva;
bool
DominioAttivo;
RECT
Dominio;
short
Contatore,ContatoreClick;
PUNTO_DOUBLE
Sequenza[FILTRO],Click[SELEZIONE];
bool
OkClick;
short emiConta;
public:
void
Unlook();
void
Look();
short puntiFUORI;
PUNTO_DOUBLE
Shape[DIMENSIONE];
private:
PA_RICO
*parRico;
bool bMouseMove;
int imaClick;
short tipoClick;
friend UINT ThreadProcAdattamentoHead(VOID *AdattamentoHead);
};
void HeadAdattamento::SetThreadAdattamentoHead(CWinThread *ThreadAdattamentoHead)
{
this->ThreadAdattamentoHead = ThreadAdattamentoHead;
ThreadAdattamentoHead->m_bAutoDelete = false;
}
void HeadAdattamento::Unlook()
{
DominioAttivo = true;
Dominio.left
= Dominio.right
= (int)Centro.X;
Dominio.bottom
= Dominio.top
= (int)Centro.Y;
Stato = STATO_UNLOOK;
}
void HeadAdattamento::Look()
{
Stato = STATO_LOOK;
140
Contatore = ContatoreClick = 0;
ThreadSupervisore->PostThreadMessage(AG_MOSTRA_APPLICAZIONE,0,0);
threadMessaggi->PostThreadMessage(TM_INIT_HEAD,(long)
&Previsione,0);
}
static UINT ThreadProcAdattamentoHead(VOID *pAdattamentoHead)
{
HeadAdattamento *Merry = (HeadAdattamento *) pAdattamentoHead;
UINT Ret = 0;
int i;
MSG Msg;
while(GetMessage(&Msg,NULL,0,0))
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
switch(Msg.message)
{
case AG_INIT:
for (i=0;i<DIMENSIONE;i++)
{
Merry->Shape[i] = ((PUNTO_DOUBLE*) Msg.wParam)
[i];
}
Merry->Centro.X = (Merry->Shape[33].X+Merry->Shape[34].
X+
Merry->Shape[35].X+Merry>Shape[36].X)/4;
Merry->Centro.Y = (Merry->Shape[33].Y+Merry->Shape[34].
Y+
Merry->Shape[35].Y+Merry>Shape[36].Y)/4;
Merry->Attiva = true;
break;
case TM_FORMA_RICONOSCIUTA:
if(Merry->Attiva)
{
Merry->parRico = (PA_RICO*) Msg.wParam;
// trovo il punto medio fisso nella fronte
Merry->Centro.X = (Merry->parRico->Shape[33].
X+Merry->parRico->Shape[34].X+
141
Merry->parRico->Shape[35].X+Merry->parRico->Shape[36].X)/4;
Merry->Centro.Y = (Merry->parRico->Shape[33].
Y+Merry->parRico->Shape[34].Y+
Merry->parRico->Shape[35].Y+Merry->parRico->Shape[36].Y)/4;
switch(Merry->Stato)
{
case STATO_UNLOOK:
if(Merry->Centro.X < Merry->Dominio.left)
Merry->Dominio.left = (int)Merry>Centro.X;
if(Merry->Centro.X > Merry->Dominio.right)
Merry->Dominio.right = (int)Merry>Centro.X;
if(Merry->Centro.Y < Merry->Dominio.bottom)
Merry->Dominio.bottom = (int)Merry>Centro.Y;
if(Merry->Centro.Y > Merry->Dominio.top)
Merry->Dominio.top = (int)Merry->Centro.Y;
break;
case STATO_LOOK:
// Decisore
// Riduco il punto nel sistema di riferimento Dominio
Merry->Punto = Merry->Centro;
if((Merry->Punto.X > (Merry->Dominio.leftMARGINE)) &&
(Merry->Punto.X < Merry->Dominio.left))
Merry->Punto.X = Merry->Dominio.left;
if((Merry->Punto.X < (Merry>Dominio.right+MARGINE)) &&
(Merry->Punto.X > Merry->Dominio.right))
Merry->Punto.X = Merry->Dominio.right;
if((Merry->Punto.Y > (Merry->Dominio.bottom-MARGINE)) &&
(Merry->Punto.Y < Merry->Dominio.bottom))
142
Merry->Punto.X = Merry->Dominio.bottom;
if((Merry->Punto.Y < (Merry>Dominio.top+MARGINE)) &&
(Merry->Punto.Y > Merry>Dominio.top))
Merry->Punto.X = Merry->Dominio.top;
if((Merry->Punto.Y > Merry->Dominio.top+MARGINE)||
(Merry->Punto.Y < Merry->Dominio.bottom-MARGINE)||
(Merry->Punto.X > Merry->Dominio.right+MARGINE)||
(Merry->Punto.X < Merry->Dominio.left-MARGINE)){
Merry->puntiFUORI++;
if ( Merry->puntiFUORI>=TOLLERANZA){
PUNTO pCentroDom;
pCentroDom.Y= ( Merry->Dominio.top-Merry->Dominio.bottom)/2;
pCentroDom.X=(Merry->Dominio.right - Merry->Dominio.left)/2;
//Merry->Pipino->Tocco(pCentroDom.X+Merry->Dominio.left,pCentroDom.Y+Merry->Dominio.bottom);
Merry->puntiFUORI=0;
MessageBeep(900);
//Merry->Pipino->oldTocco();
SendMessage(Merry->GetFinestre(AG_HEAD),WM_CUR,0,0);
}
}else Merry->puntiFUORI=0;
Merry->Punto.X = Merry->Punto.X - Merry>Dominio.left;
Merry->Punto.Y = Merry->Punto.Y - Merry>Dominio.bottom;
// Filtro
if(!Merry->bMouseMove){
Merry->Sequenza[Merry->Contatore] = Merry->Punto;
Merry->Contatore++;
if(Merry->Contatore == FILTRO)
{
Merry->Punto.X = Merry->Punto.Y =
0;
143
for(i=0;i<FILTRO;i++)
{
Merry->Punto.X = Merry->Punto.X + Merry->Sequenza[i].X;
Merry->Punto.Y = Merry->Punto.Y + Merry->Sequenza[i].Y;
}
Merry->Punto.X = Merry->Punto.X/4;
Merry->Punto.Y = Merry->Punto.Y/4;
// Riduco il punto in percentuale a
specchio
Merry->Previsione.X = 1 - (Merry>Punto.X/(Merry->Dominio.right-Merry->Dominio.left));
Merry->Previsione.Y = Merry->Punto.Y/(Merry->Dominio.top-Merry->Dominio.bottom);
Merry->threadMessaggi->PostThreadMessage(TM_PUNTO_HEAD,0,0);
Merry->Contatore = 0;
// Click
Merry->Click[Merry->ContatoreClick]
= Merry->Punto;
Merry->ContatoreClick++;
if(Merry->ContatoreClick == SELEZIONE)
{
Merry->Punto.X = Merry->Punto.Y = 0;
for(i=0;i<SELEZIONE;i++)
{
Merry->Punto.X = Merry>Punto.X + Merry->Click[i].X;
Merry->Punto.Y = Merry>Punto.Y + Merry->Click[i].Y;
}
Merry->Punto.X = Merry->Punto.X/4;
Merry->Punto.Y = Merry->Punto.Y/4;
Merry->OkClick = true;
for(i=0;i<SELEZIONE;i++)
{
144
if((Merry->Click[i].X <
(Merry->Punto.X - MARGINE_CLICK)) ||
(Merry->Click[i].X >
(Merry->Punto.X + MARGINE_CLICK)) ||
(Merry->Click[i].Y <
(Merry->Punto.Y - MARGINE_CLICK)) ||
(Merry->Click[i].Y >
(Merry->Punto.Y + MARGINE_CLICK)))
Merry->OkClick =
false;
}
if(Merry->OkClick)
Merry->threadMessaggi>PostThreadMessage(TM_CLICK_HEAD,0,0);
Merry->ContatoreClick = 0;
}
}
}
else //
{
POINT puntoMouse;
GetCursorPos(&puntoMouse);
bool bMove=false;
PUNTO pCentroDom;
int iHoffset=(Merry->Dominio.top-Merry>Dominio.bottom )/20;
int iWoffset=(Merry->Dominio.right - Merry->Dominio.left)/20;
pCentroDom.Y= ( Merry->Dominio.top-Merry->Dominio.bottom)/2;
pCentroDom.X=(Merry->Dominio.right - Merry->Dominio.left)/2;
if(Merry->Punto.X> pCentroDom.X+3*iWoffset){
puntoMouse.x-=5;
bMove=true;
}
if(Merry->Punto.X> pCentroDom.X+6*iWoffset){
puntoMouse.x-=5;
145
}
if(Merry->Punto.X> pCentroDom.X+9*iWoffset){
puntoMouse.x-=5;
}
if(Merry->Punto.X< pCentroDom.X-3*iWoffset){
puntoMouse.x+=5;
bMove=true;
}
if(Merry->Punto.X< pCentroDom.X-6*iWoffset){
puntoMouse.x+=5;
}
if(Merry->Punto.X< pCentroDom.X-9*iWoffset){
puntoMouse.x+=5;
}
if(Merry->Punto.Y> pCentroDom.Y+3*iHoffset){
puntoMouse.y-=5;
bMove=true;
}
if(Merry->Punto.Y> pCentroDom.Y+6*iHoffset){
puntoMouse.y-=5;
}
if(Merry->Punto.Y> pCentroDom.Y+9*iHoffset){
puntoMouse.y-=5;
}
if(Merry->Punto.Y< pCentroDom.Y-3*iHoffset){
puntoMouse.y+=5;
bMove=true;
}
if(Merry->Punto.Y< pCentroDom.Y-6*iHoffset){
puntoMouse.y+=5;
}
if(Merry->Punto.Y< pCentroDom.Y-9*iHoffset){
puntoMouse.y+=5;
}
146
if (bMove) {
SetCursorPos(puntoMouse.x,puntoMouse.y);
Merry->emiConta=0;
}
else{
Merry->emiConta++;
int iTot=Merry->GetImaClick();
if (Merry->emiConta==iTot/10)
SendMessage(Merry->GetFinestre(AG_PRINCIPALE),
WM_CUR,IDC_CU1,0);
if (Merry->emiConta==iTot/6)
SendMessage(Merry->GetFinestre(AG_PRINCIPALE),
WM_CUR,IDC_CU2,0);
if(Merry->emiConta==iTot/3)
SendMessage(Merry->GetFinestre(AG_PRINCIPALE),
WM_CUR,IDC_CU3,0);
if(Merry->emiConta==iTot/2)
SendMessage(Merry->GetFinestre(AG_PRINCIPALE),
WM_CUR,IDC_CU4,0);
if(Merry->emiConta==(2*iTot/3))
SendMessage(Merry->GetFinestre(AG_PRINCIPALE),
WM_CUR,IDC_CU5,0);
if(Merry->emiConta==(iTot-iTot/10))
SendMessage(Merry->GetFinestre(AG_PRINCIPALE),
WM_CUR,IDC_CU6,0);
if(Merry->emiConta==iTot){
if(puntoMouse.x==0){
ShowWindow(Merry->GetFinestre(AG_MOUSEHEAD),SW_SHOW);
SetActiveWindow(Merry->GetFinestre(AG_MOUSEHEAD));
}
switch(Merry->GetTipoClick()){
case C_LEFTCLICK:{
INPUT mouseClick[2];
MOUSEINPUT mouseIn;
mouseIn.dx=puntoMouse.x;
mouseIn.dy=puntoMouse.y;
mouseIn.mouseData=0;
mouseIn.dwFlags=MOUSEEVENTF_LEFTDOWN;
mouseIn.time=0;
147
mouseIn.dwExtraInfo=NULL;
mouseClick[0].type=INPUT_MOUSE;
mouseClick[0].mi=mouseIn;
mouseIn.dwFlags=MOUSEEVENTF_LEFTUP;
mouseClick[1].type=INPUT_MOUSE;
mouseClick[1].mi=mouseIn;
SendInput(2,mouseClick,sizeof(INPUT));
}
break;
case C_RIGHTCLICK:
{
INPUT mouseClick[2];
MOUSEINPUT mouseIn;
mouseIn.dx=puntoMouse.x;
mouseIn.dy=puntoMouse.y;
mouseIn.mouseData=0;
mouseIn.dwFlags=MOUSEEVENTF_RIGHTDOWN;
mouseIn.time=0;
mouseIn.dwExtraInfo=NULL;
mouseClick[0].type=INPUT_MOUSE;
mouseClick[0].mi=mouseIn;
mouseIn.dwFlags=MOUSEEVENTF_RIGHTUP;
mouseClick[1].type=INPUT_MOUSE;
mouseClick[1].mi=mouseIn;
SendInput(2,mouseClick,sizeof(INPUT));
}
break;
case C_DOUBLECLICK:
{
INPUT mouseClick[2];
MOUSEINPUT mouseIn;
mouseIn.dx=puntoMouse.x;
mouseIn.dy=puntoMouse.y;
mouseIn.mouseData=0;
mouseIn.dwFlags=MOUSEEVENTF_LEFTDOWN;
mouseIn.time=0;
mouseIn.dwExtraInfo=NULL;
mouseClick[0].type=INPUT_MOUSE;
mouseClick[0].mi=mouseIn;
mouseIn.dwFlags=MOUSEEVENTF_LEFTUP;
mouseClick[1].type=INPUT_MOUSE;
148
mouseClick[1].mi=mouseIn;
SendInput(2,mouseClick,sizeof(INPUT));
Sleep(150);
SendInput(2,mouseClick,sizeof(INPUT));
}
break;
}
}
}
}
break;
}
}
break;
case AG_QUIT:
PostQuitMessage(0);
return 0;
break;
case AG_EMOUSE:
Merry->SetMouseMove((bool) Msg.wParam);
break;
}
}
Ret = Msg.wParam;
return Ret;
}
#endif
149
#ifndef Adatta_EMI_3
#define Adatta_EMI_3
#include "Dichiarazioni.h"
#define RIGHERET
2
// # righe in cui dividere lo
schermo
#define COLONNERET
3
// # colonne in cui dividere lo
schermo
#define QUADRATINI
5
//
#define IMMAGINIXPUNTO 1
// da cambiare in funzione della lunghezza del
GL;
#define DIMBUFFER 3
#define NUMIMA 5
#define WAITCLICK 300
#define MOUSEMOVE
//ms waited after click
10
//pixel
#define TUTTO_DIVERSO -1
#define NOT_INIT
-2
static short puntoBuffer(PUNTO *buffer,int dim){
int i,j,max=0,indice,uguali=0;
int *occorrenze=new int[dim];
for (i=0;i<dim;i++) occorrenze[i]=0;
for (i=0;i<dim;i++){
for(j=i+1;j<dim;j++){
if((buffer[i].X==buffer[j].X)&&(buffer[i].Y==buffer[j].Y)){
occorrenze[i]++;
}
}
if(occorrenze[i]>max){
max=occorrenze[i];
indice=i;
}
150
else if (occorrenze[i]==max) uguali++;
}
delete [] occorrenze;
if (uguali==dim) return TUTTO_DIVERSO;
if(buffer[indice].X==-1)return NOT_INIT;
return indice;
}
#define szNameAdattamento
TEXT("adaCLASS")
//nome classe adattamen-
to
//CLASSE ADATTAMENTO//
class Adattamento
{
public:
Adattamento();
//costruttore
~Adattamento();
public:
//metodi pubblici
int setAdattamento(S_PARAMETRI_GRIGLIA pG,Active *supervisor);
//non usato come costruttore per non modificare altri file
void setImpostazioni(int numFiltro);
//imposta numero imma-
gini del filtro
void stabilisciPUNTO(PA_RICO *pa_rico);
void enableMouse(BOOL bM);
public:
//accesso alla variabili private
int getBufferDim(); // restituisce dimensione del buffer
void setBufferDim(int numB); //imposta dimensione del buffer
int getNumFiltro(); //restituisce numero filtro
void setNumFiltro(int numF);
short getMouseMove();
void setMouseMove(short numM);
int getWaitClick();
void setWaitClick(int numW);
//cerca il massimo della matrice
private:
151
int numFiltro;
int numPuntiCorretti;
S_PARAMETRI_GRIGLIA parametriGriglia;
//contiene le informazioni
sulla griglia di Adattamento
// IMPOSTA_MAP impostazioneAlgo;
Active *supervisor;
int contaFiltro;
long contaTotale;
PUNTO puntoGuardato;
int icontaOccorrenze;
PUNTO
puPrecedente;
PUNTO puPPrecedente;
PUNTO pPallino;
BOOL bMoveMouse;
PUNTO *BufferPUNTI;
int iScorriBuffer,iDimBuffer;
short mouseMove;
int waitClick;
HANDLE Mutex;
};
//costruttore di classe
Adattamento::Adattamento(){
supervisor=NULL;
icontaOccorrenze=0;
puPrecedente.X=puPrecedente.Y=-1;
puPPrecedente.X=puPPrecedente.Y=-1;
bMoveMouse=false;
iScorriBuffer=0;
numFiltro=NUMIMA; contaFiltro=0;
//impostazioni iniziali filtro
iDimBuffer=DIMBUFFER;
mouseMove=MOUSEMOVE;
waitClick=WAITCLICK;
152
BufferPUNTI=new PUNTO[iDimBuffer];
Mutex=CreateMutex(NULL,false,"MAda");
for (int i=0;i<iDimBuffer;i++) BufferPUNTI[i].X=BufferPUNTI[i].Y=0;
}
//distruttore di classe
Adattamento::~Adattamento(){
//pulizia memoria
delete[] BufferPUNTI;
supervisor=NULL;
CloseHandle(Mutex);
}
/*============================================================*\
Author :E.Castellina
Date : 30/03/2005
version 1.0
============================================================
Function :
Adattamento::getBufferDim
Description :
Return :
int
-
dimensione Buffer
Parameters :
Note :
\*============================================================*/
int Adattamento::getBufferDim(){
return iDimBuffer;
}
/*============================================================*\
Author :E.Castellina
Date : 30/03/2005
version 1.0
============================================================
Function :
Adattamento::getNumFiltro
Description :
Return :
int
- numero immagini per click
Parameters :
Note :
\*============================================================*/
int Adattamento::getNumFiltro(){
153
return numFiltro;
}
/*============================================================*\
Author :E.Castellina
Date : 30/03/2005
version 1.0
============================================================
Function :
Adattamento::getMouseMove
Description :
Return :
short - offset di spostamento del mouse
Parameters :
Note :
\*============================================================*/
short Adattamento::getMouseMove(){
return mouseMove;
}
/*============================================================*\
Author :E.Castellina
Date : 30/03/2005
version 1.0
============================================================
Function :
Adattamento::getWaitClick
Description :
Return :
int
- ms di tempo da attendere dopo un
click
Parameters :
Note :
\*============================================================*/
int Adattamento::getWaitClick(){
return waitClick;
}
/*============================================================*\
Author :E.Castellina
Date : 30/03/2005
version 1.0
============================================================
Function :
Description :
Return :
Adattamento::setMouseMove
imposta lo spostamento del mouse
void
-
Parameters :
154
short numM
-offset mouse
Note :
\*============================================================*/
void Adattamento::setMouseMove(short numM) {
WaitForSingleObject(Mutex,INFINITE);
mouseMove=numM;
ReleaseMutex(Mutex);
}
/*============================================================*\
Author :E.Castellina
Date : 30/03/2005
version 1.0
============================================================
Function :
Adattamento::setWaitClick
Description :
Return :
void
-
-
tempo ms da attendere dopo il click
Parameters :
int numW
Note :
\*============================================================*/
void Adattamento::setWaitClick(int numW) {
WaitForSingleObject(Mutex,INFINITE);
waitClick=numW;
ReleaseMutex(Mutex);
}
/*============================================================*\
Author :E.Castellina
Date : 30/03/2005
version 1.0
============================================================
Function :
Adattamento::setBufferDim
Description :
Return :
imposta le nuove dimensioni del buffer
void
-
-
dimensione buffer
Parameters :
int numB
Note :
\*============================================================*/
void Adattamento::setBufferDim(int numB){
int dim,i;
155
WaitForSingleObject(Mutex,INFINITE);
PUNTO *bufferTmp=new PUNTO[numB];
dim=iDimBuffer<numB?iDimBuffer:numB;
for (i=0;i<dim;i++) bufferTmp[i]=BufferPUNTI[i];
if (iScorriBuffer>dim) iScorriBuffer=dim;
iDimBuffer=numB;
delete[] BufferPUNTI;
BufferPUNTI=bufferTmp;
bufferTmp=NULL;
ReleaseMutex(Mutex);
}
/*============================================================*\
Author :E.Castellina
Date : 30/03/2005
version 1.0
============================================================
Function :
Adattamento::setNumFiltro
Description :
Return :
void
- imposta il numero immagini per
-
numero immagini
click
Parameters :
int numF
Note :
\*============================================================*/
void Adattamento::setNumFiltro(int numF){
WaitForSingleObject(Mutex,INFINITE);
numFiltro=numF;
if(icontaOccorrenze>=numFiltro) icontaOccorrenze=numFiltro-1;
ReleaseMutex(Mutex);
}
void Adattamento::enableMouse(BOOL bM){
bMoveMouse=bM;
}
int Adattamento::setAdattamento(
S_PARAMETRI_GRIGLIA pG,
griglia
Active *supervisor
156
//parametri
)
{
parametriGriglia=pG;
this->supervisor=supervisor;
return TUTTO_OK;
}
void Adattamento::stabilisciPUNTO(PA_RICO *pa_rico)
{
int iPerc,indice;
WaitForSingleObject(Mutex,INFINITE);
BufferPUNTI[iScorriBuffer]=pa_rico->pPallino;
iScorriBuffer++;
if (iScorriBuffer>=iDimBuffer) iScorriBuffer=0;
indice=puntoBuffer(BufferPUNTI,iDimBuffer);
if (indice!=NOT_INIT && indice!=TUTTO_DIVERSO){
pPallino=BufferPUNTI[indice];
if (puPrecedente.X==-1) puPrecedente=pPallino;
else if ((puPrecedente.X==pPallino.X)&&(puPrecedente.Y==pPallino.Y)){
icontaOccorrenze++;
iPerc=100*icontaOccorrenze/numFiltro;
if (iPerc==100) icontaOccorrenze=0;
}
else {
icontaOccorrenze=0;
puPrecedente=pPallino;
iPerc=0;
}
if (!bMoveMouse){
supervisor->threadMessaggi->PostThreadMessage(TM_EYE_POS,(WPARAM)
&pPallino,iPerc);
}else {
157
POINT puntoMouse;
GetCursorPos(&puntoMouse);
//GRID 2x3
if(parametriGriglia.numeroRighe==2 && parametriGriglia.numeroColonne==3) {
if(pPallino.X==0 && pPallino.Y==0)
SetCursorPos(puntoMouse.x-mouseMove,puntoMouse.y);
else if(pPallino.X==0 && pPallino.Y==1)
SetCursorPos(puntoMouse.x,puntoMouse.y-mouseMove);
else if(pPallino.X==0 && pPallino.Y==2)
SetCursorPos(puntoMouse.x+mouseMove,puntoMouse.y);
else if(pPallino.X==1 && pPallino.Y==1)
SetCursorPos(puntoMouse.x,puntoMouse.y+mouseMove);
else if (pPallino.X==1 && pPallino.Y==0){
if(iPerc==100){
GetCursorPos(&puntoMouse);
INPUT mouseClick[2];
MOUSEINPUT mouseIn;
mouseIn.dx=puntoMouse.x;
mouseIn.dy=puntoMouse.y;
mouseIn.mouseData=0;
mouseIn.dwFlags=MOUSEEVENTF_LEFTDOWN;
mouseIn.time=0;
mouseIn.dwExtraInfo=NULL;
mouseClick[0].type=INPUT_MOUSE;
mouseClick[0].mi=mouseIn;
mouseIn.dwFlags=MOUSEEVENTF_LEFTUP;
mouseClick[1].type=INPUT_MOUSE;
mouseClick[1].mi=mouseIn;
SendInput(2,mouseClick,sizeof(INPUT));
}
158
}
}
// endif GRID 2x3
}
}
ReleaseMutex(Mutex);
}
#endif
159

Documenti analoghi