Analisievalutazionedialgoritmi per eye tracking operanti in luce by wwq52447

VIEWS: 77 PAGES: 96

									            POLITECNICO DI TORINO


                          a
                III Facolt` di Ingegneria
            Corso di Laurea in Ingegneria Informatica




               Tesi di Laurea Magistrale



Analisi e valutazione di algoritmi
per eye tracking operanti in luce
              visibile




Relatore:
Prof. Fulvio Corno
                                               Candidato:
                                               Alessio Moscatello




                       Novembre 2007
Indice

1 Introduzione                                                                                                              1

2 Eye  tracking                                                                                                              6
  2.1  Storia . . . . . . . . . . . . . . . . . . . .           .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    6
  2.2  Utilizzi . . . . . . . . . . . . . . . . . . . .         .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    7
  2.3  Classificazione . . . . . . . . . . . . . . . .           .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    8
  2.4  Funzionamento . . . . . . . . . . . . . . .              .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   10
       2.4.1 Determinazione del punto osservato                 .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   13
       2.4.2 Calibrazione . . . . . . . . . . . . .             .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   15
   2.5 Sistemi commerciali . . . . . . . . . . . . .            .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   15
   2.6 Panoramica sugli algoritmi di eye tracking               .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   18
       2.6.1 Algoritmi in tempo reale . . . . . .               .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   18
       2.6.2 Algoritmi di analisi offline . . . . .               .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   20

3 Ambiente di test                                                                                                          23
  3.1 Introduzione . . . . . . . . . . . . .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   23
  3.2 Database dei filmati . . . . . . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   24
      3.2.1 Struttura XML . . . . . . .         .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   24
      3.2.2 DTD . . . . . . . . . . . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   27
  3.3 Tagger . . . . . . . . . . . . . . . .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   28
      3.3.1 Interfaccia dell’applicazione       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   29
  3.4 Benchmark . . . . . . . . . . . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   30
      3.4.1 Interfaccia dell’applicazione       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   30
      3.4.2 Struttura dell’applicazione .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   31
      3.4.3 Classe Algo . . . . . . . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   33
      3.4.4 Classe InfoFrame . . . . . .        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   37

                                           1
        3.4.5   Classe Starbust . . . . . . . . . . . . . . . . . . . . . . . . . . 39
        3.4.6   Classe Sandra . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

4 Algoritmi scelti e implementati                                                                                                         41
  4.1 Starbust . . . . . . . . . . . .            .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   42
      4.1.1 Adattamenti . . . . . .               .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   48
  4.2 Active Shape Model . . . . .                .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   51
      4.2.1 Adattamenti . . . . . .               .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   54

5 Test                                                                                                                                    57
  5.1 Introduzione . . . . . . . . . . . . . . . . . .                            .   .   .   .   .   .   .   .   .   .   .   .   .   .   57
       5.1.1 Parametri di riferimento . . . . . . .                               .   .   .   .   .   .   .   .   .   .   .   .   .   .   58
  5.2 Test effettuati su Starbust . . . . . . . . . .                              .   .   .   .   .   .   .   .   .   .   .   .   .   .   59
       5.2.1 Parametri ottimali . . . . . . . . . .                               .   .   .   .   .   .   .   .   .   .   .   .   .   .   59
       5.2.2 Prestazioni globali dell’algoritmo . .                               .   .   .   .   .   .   .   .   .   .   .   .   .   .   66
  5.3 Test effettuati su ASM . . . . . . . . . . . .                               .   .   .   .   .   .   .   .   .   .   .   .   .   .   68
       5.3.1 Effetti della variazione dei parametri                                .   .   .   .   .   .   .   .   .   .   .   .   .   .   68
       5.3.2 Effetti della variazione del modello .                                .   .   .   .   .   .   .   .   .   .   .   .   .   .   68
  5.4 Test comparativi . . . . . . . . . . . . . . .                              .   .   .   .   .   .   .   .   .   .   .   .   .   .   73
       5.4.1 Caso migliore . . . . . . . . . . . . .                              .   .   .   .   .   .   .   .   .   .   .   .   .   .   73
       5.4.2 Caso medio . . . . . . . . . . . . . .                               .   .   .   .   .   .   .   .   .   .   .   .   .   .   74

6 Conclusioni                                                                                                                             76
  6.1 Analisi dei risultati . . . . . . . . . . . . . . .                             .   .   .   .   .   .   .   .   .   .   .   .   .   76
  6.2 Miglioramenti relativi a Starbust . . . . . . .                                 .   .   .   .   .   .   .   .   .   .   .   .   .   77
  6.3 Miglioramenti relativi ad Active Shape Model                                    .   .   .   .   .   .   .   .   .   .   .   .   .   77
  6.4 Miglioramenti degli strumenti di cattura . . .                                  .   .   .   .   .   .   .   .   .   .   .   .   .   78
  6.5 Ulteriori analisi . . . . . . . . . . . . . . . . .                             .   .   .   .   .   .   .   .   .   .   .   .   .   79

A Appendici                                                                                                                               80
  A.1 Anatomia dell’occhio .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   80
      A.1.1 Termini medici        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   83
  A.2 Libreria Qt . . . . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   84
  A.3 Libreria OpenCV . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   84
  A.4 Classificatore Haar . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   84

                                                      2
A.5 Filtri per immagini . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
    A.5.1 Filtro smooth . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
    A.5.2 Filtro sharpening . . . . . . . . . . . . . . . . . . . . . . . . . 86




                                      3
Elenco delle tabelle

 5.1   Prestazioni globali di Starbust . . . . . . . . . . . . . . . .   .   .   .   .   .   .   66
 5.2   Effetti della variazione dei parametri di ASM . . . . . . . .      .   .   .   .   .   .   68
 5.3   Effetti della variazio del modello utilizzato da ASM . . . .       .   .   .   .   .   .   69
 5.4   Variazione della statistica al variare del modello utilizzato     .   .   .   .   .   .   69
 5.5   Prestazioni dei due algoritmi nel caso migliore . . . . . . .     .   .   .   .   .   .   74
 5.6   Prestazioni dei due algoritmi nel caso medio . . . . . . . .      .   .   .   .   .   .   74




                                         4
Elenco delle figure

                                                e
 2.1 Un esempio dell’utilizzo dell’eye tracking ` l’analisi delle fissazioni che
     l’occhio effettua durante la lettura . . . . . . . . . . . . . . . . . . . .   7
 2.2 Videooculografia con pupilla e riflesso corneale . . . . . . . . . . . . . 11
 2.3 Sistema completo che utilizza la pupilla e il riflesso corneale . . . . . 12
 2.4 Sistema indossabile e schema della tastiera visibile sullo schermo . . . 13
 2.5 Sistema che si basa solo sulla pupilla utilizzando videocamera a basso
     costo e software di elaborazione immagini . . . . . . . . . . . . . . . . 13
 2.6 Un sistema di elettrooculografia . . . . . . . . . . . . . . . . . . . . . 14
 2.7 Esempio di calibrazione statica con un numero crescente di punti . . . 16
 2.8 Esempio di calibrazione dinamica: il punto si muove sullo schermo
     con un percorso casuale . . . . . . . . . . . . . . . . . . . . . . . . . . 16
 2.9 Immagine che rappresenta le differenze tra due fotogrammi successivi,
     i cerchi bianchi indicano le differenze attribuite al movimento delle
     palpebre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
 2.10 Sequenza delle operazioni effettuate dall’algoritmo di Amarnag: (a)
      output dopo il pre-processamento (b) output dopo il classificatore
      Bayesiano (c) output dopo l’algoritmo di clustering (d) risultato finale 20
 2.11 Schema della rete neurale competitiva proposta da Marcone et al. . . 21
 2.12 Esempio di variazioni possibili di un modello deformabile dell’iride:
      1 traslazione, 2 scalamento, 3-5 combinazione di trasformazioni, 6-9
      trasformazioni complesse . . . . . . . . . . . . . . . . . . . . . . . . . 21
 2.13 Training set utilizzato per addestrare la rete neurale utilizzata nel-
      l’algoritmo descritto da Pedersen e Spivey . . . . . . . . . . . . . . . 22
 3.1 Il disegno raffigura la struttura dei tag che rappresentano occhi e pupille 26
 3.2 Un fotogramma in cui sono visibili i tag relativi a pupille, occhi e naso 29

                                        5
3.3 Anteprima dell’analisi di un filmato: si nota il riferimento della pupilla
    (cerchio verde) e il centro della pupilla rilevata (croce gialla) . . . . . 31
3.4 Finestra di configurazione dell’algoritmo Starbust . . . . . . . . . . . 32
4.1 Posizionamento della webcam nel sistema openEyes . . . . . . . . . . 43
4.2 Immagine dell’occhio prima dell’eliminazione del riflesso corneale . . . 44
4.3 La stessa immagine di figura 4.2 dopo l’eliminazione del riflesso corneale 44
4.4 Ricerca punti caratteristici della pupilla utilizzando l’algoritmo Starbust 46
4.5 La figura mostra l’ellisse risultante dopo aver applicato all’immagine
    l’algoritmo Starbust . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.6 Un’immagine del training set (8 picchetti) utilizzato per riconoscere
    l’occhio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.7 Modello dell’occhio con 16 picchetti . . . . . . . . . . . . . . . . . . . 55
                                      o
4.8 Modello con 16 picchetti: si pu` notare che il baricentro (in giallo)
                                                   e               e
    non corrisponde al centro della pupilla, perch` quest’ultima ` spostata
    verso sinistra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.9 Modello con 8 picchetti: in questo caso il baricentro dei picchetti (in
    giallo) corrisponde alla pupilla anche se non si trova al centro dell’occhio 56
5.1 Andamento della precisione e del tempo di elaborazione all’aumentare
    del numero di raggi utilizzati per analizzare un filmato che riprende
    l’intero volto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.2 Andamento della precisione e del tempo di elaborazione all’aumentare
    del numero di raggi utilizzati per analizzare un filmato che riprende
    solamente l’occhio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.3 Influenza della dimensione del riflesso corneale su un’immagine del
    volto intero . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
5.4 Influenza della dimensione del riflesso corneale su un’immagine del-
    l’occhio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
5.5 Influenza del numero di feature utilizzate per l’interpolazione dell’el-
    lisse nel caso di un filmato che riprende solamente l’occhio . . . . . . 62
5.6 Influenza del numero di feature utilizzate per l’interpolazione dell’el-
                                                                            a
    lisse nel caso di un filmato del volto, in condizioni di scarsa luminosit` 63
5.7 Influenza del numero di feature utilizzate per l’interpolazione dell’el-
                                                                            a
    lisse nel caso di un filmato del volto, in condizioni di ottima luminosit` 63

                                        6
                                                               a
5.8 In condizioni di buona illuminazione e alta qualit` del filmato, la
     variazione del livello di soglia causa una variazione dell’errore medio
     molto ridotta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .      . 64
5.9 Utilizzando un filmato con illuminazione ambientale pi` bassa, lau
     variazione della soglia influisce sull’errore . . . . . . . . . . . . . . .     . 65
                                                  a              a
5.10 Utilizzando un filmato di bassa qualit` e luminosit` (webcam) la
     variazione della soglia influisce molto sull’errore . . . . . . . . . . .       . 65
                             a
5.11 Funzione di probabilit` stimata nel caso di un modello poco accurato,
     sono separati i dati relativi all’errore in direzione orizzontale e l’errore
     in direzione verticale . . . . . . . . . . . . . . . . . . . . . . . . . .     . 70
                             a
5.12 Funzione di probabilit` stimata nel caso di un modello accurato . .            . 71
                             a
5.13 Funzione di probabilit` stimata nel caso di un modello errato (il gra-
          e
     fico ` stato espanso per evidenziare i picchi secondari), in questo ca-
     so sono stati accorpati gli errori relativi all’asse delle ascisse e delle
     ordinate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .     .   71
                             a
5.14 Funzione di probabilit` stimata nel caso di un modello accurato . .            .   72
A.1 Anatomia dell’occhio . . . . . . . . . . . . . . . . . . . . . . . . . .        .   80
A.2 Sezione del bulbo oculare . . . . . . . . . . . . . . . . . . . . . . . .       .   81
A.3 Formazione dell’immagine sulla retina . . . . . . . . . . . . . . . . .         .   83




                                         7
Capitolo 1

Introduzione

                              e
Un sistema di eye tracking ` un dispositivo che permette di tracciare la posizione
                                                             e
della pupilla e di risalire al punto osservato dall’utente: ` un sistema complesso
che permette di utilizzare lo sguardo per interagire con strumenti elettronici. Gli
utilizzi di un eye tracker possono essere molteplici (cap. 2.2), ma per questa tesi ci
   e
si ` concentrati sui sistemi di eye tracking che si integrano con i normali personal
computer: lo sguardo viene utilizzato per spostare il cursore sullo schermo senza
dover utilizzare un mouse.
                                    o
    La nascita dell’eye tracking pu` essere fatta risalire ai primi studi sui movimenti
oculari dell’Ottocento (5), ma solamente negli ultimi vent’anni le tecnologie di eye
tracking si sono sviluppate al punto da rendere disponibili sistemi commerciali molto
precisi, anche se molto costosi. Con il progredire delle tecniche di Computer Vision
si sono sviluppati sistemi di eye tracking a basso costo; questi sistemi, a differenza
                                                           e
di quelli commerciali, utilizzano la luce visibile anzich´ l’infrarosso: utilizzando la
luce visibile per riprendere l’occhio i contorni della pupilla risultano meno definiti,
     o
perci` gli eye tracker in luce visibile sono meno precisi di quelli commerciali, ma,
dato il costo ridotto, sono accessibili ad un maggior numero di utenti.
                            e
    Lo scopo di questa tesi ` creare una piattaforma di benchmarking per effettuare
un’analisi oggettiva e dettagliata di algoritmi di eye tracking che utilizzino perife-
                                                          a
riche a basso costo. Il sistema di eye tracking che verr` analizzato in questa tesi
e
` costituito da una videocamera e un personal computer: la videocamera ripren-
de il volto dell’utente mentre il computer, analizzando i singoli fotogrammi, ricava
la posizione del punto osservato. Le videocamere utilizzate non verranno in alcun

                                          1
                                    1 – Introduzione


modo modificate e verranno posizionate in modo da non interferire con il normale
utilizzo del computer: in questo modo si vuole testare un sistema che sia facilmente
utilizzabile da qualsiasi utente.
    I motivi che hanno portato allo studio di questo sistema di valutazione sono
                                                                              e
molteplici. Innanzi tutto esistono numerosi algoritmi in letteratura, ma ` difficile
effettuarne un confronto utilizzando i dati presentati negli articoli che li descrivono.
Ogni ricercatore, infatti, utilizza parametri di valutazione diversi e diverse sono le
condizioni in cui gli algoritmi vengono testati: mancano, quindi, criteri oggettivi
per effettuare una comparazione. Inoltre si deve ricordare che non sempre sono
                                                     a                        e
disponibili i mezzi per effettuare studi di usabilit` e, qualora vi siano, ` difficile
trovare utenti disponibili ad effettuare lunghi e, talvolta, ripetitivi test.
                                 a                      e
    Il sistema di test non operer` in tempo reale, perch´ per stabilire la precisione di
               e
un algoritmo ` necessario disporre di una serie di riferimenti con cui confrontare le
misure che fornisce: tipicamente un algoritmo di eye tracking fornisce come output
la posizione della pupilla, ma per calcolarne l’errore devono essere disponibili le
coordinate della pupilla relative al fotogramma esaminato. Sfortunatamente non
esistono database pubblici che memorizzino anche solo la posizione delle pupille,
      o e
perci` si ` deciso di crearne uno ex novo.
                          e
    Il database di filmati ` stato costruito utilizzando tre tipologie di periferiche vi-
deo: una webcam, una fotocamera digitale e una telecamera per videoconferenza.
                                                   e
Sono state utilizzate queste tre tipologie, perch` possono essere considerate a bas-
                                               e
so costo: il prezzo di una normale webcam ` di circa 20 e mentre la telecamera
per videoconferenza ha un costo di circa 800 e. I filmati sono stati realizzati non
solo in condizioni di luce ottimale, ma anche in condizioni di scarsa illuminazione:
                                                       e
infatti in una prospettiva di utilizzo realistica non ` sempre possibile intervenire
sull’illuminazione ambientale.
                                             e
    La struttura del database (cap. 3.2) ` stata progettata per poter memorizzare
un numero variabile di dati relativi ai fotogrammi: per ogni fotogramma si possono
memorizzare dei riferimenti che permettono di stabilire l’esatta posizioni di pupille
e occhi, inoltre la struttura permette di inserire riferimenti non previsti inizialmen-
te come, ad esempio, la posizione delle sopracciglia. Nel caso specifico, oltre alla
                                 e
posizione di occhi e pupille, si ` scelto di memorizzare la posizione del naso, perch´e
alcuni algoritmi si basano sugli spostamenti del naso per tracciare il movimento del
viso dell’utente.

                                          2
                                    1 – Introduzione


    La gestione del database viene effettuata con un’applicazione dedicata (cap. 3.3)
che permette di posizionare i riferimenti (o tag) un fotogramma alla volta. L’appli-
         e
cazione ` stata progettata per velocizzare il posizionamento dei riferimenti: infatti
                                          o
il numero di fotogrammi da elaborare pu` essere molto elevato anche se si utilizzano
filmati con il modesto frame rate tipico delle fotocamere a basso costo (15 fotogram-
mi/s). I dati memorizzati dall’applicazione vengono descritti con il formalismo XML
che li rende indipendenti dall’ambiente in cui sono stati ricavati: il database, in que-
                a
sto modo, potr` essere facilmente riutilizzato anche con applicazioni completamente
diverse da quelle sviluppate per questa tesi.
    La realizzazione dell’ambiente di test (cap. 3.4) ha richiesto un notevole sforzo
progettuale volto alla creazione di un’applicazione facilmente espandibile, ma che
fosse abbastanza generica da poter implementare un qualunque tipo di algoritmo
                                   ´
per eye tracker a basso costo. E stato utilizzato un approccio ad oggetti per avere
un alto livello di astrazione che permetta di elaborare efficacemente i dati ricavati
dai test e per facilitare l’utilizzo dell’ambiente agli altri componenti del gruppo di
                   e
ricerca presso cui ` stata realizzata la tesi.
     La ricerca degli algoritmi da implementare e testare ha richiesto un’attenta ana-
lisi degli articoli riguardanti l’eye tracking a basso costo (cap. 2.6): gli approcci
                                                               o            e
possibili sono molti e spesso radicalmente differenti, perci` la scelta ` stata effet-
tuata analizzando dettagliatamente i punti di forza e le debolezze di ogni tipo di
                                                                       a
algoritmo. Le principali differenze rilevate riguardano la modalit` di ricerca della
                                 a                                               o
pupilla e il livello di generalit` dell’algoritmo. La ricerca della pupilla pu` essere
effettuata sull’intera immagine o su una porzione limitata di essa: in questo secondo
caso l’algoritmo deve essere strutturato per cercare, anche approssimativamente, la
                                                                     u
posizione dell’occhio e, successivamente, effettuare una ricerca pi` precisa della pu-
pilla. Alcuni algoritmi sono abbastanza generici da poter essere utilizzati in qualsiasi
situazione, altri hanno notevoli limitazioni e richiedono una fase di training. La fase
                                        o
di addestramento di un algoritmo pu` essere molto semplice, ad esempio la selezione
                                                 o
dell’area in cui effettuare la ricerca, oppure pu` essere molto complessa, ad esempio
nel caso in cui l’occhio venga rappresentato da un modello che deve essere ricavato
                       e
per ogni utente. Si ` ritenuto opportuno analizzare algoritmi di cui fosse disponi-
bile il codice sorgente: infatti implementare un algoritmo partendo solamente dallo
                   o
pseudocodice pu` essere causa di errori che portano a prestazioni molto differenti
                                                            e
da quelle dichiarate dall’autore dell’algoritmo. Inoltre si ` scelto di testare algoritmi

                                           3
                                    1 – Introduzione


il cui principio di funzionamento fosse radicalmente differente, per cercare di capire
quale fosse l’approccio migliore.
               e
    La scelta ` ricaduta sugli algoritmi Starbust e Active Shape Model (cap. 4).
Starbust utilizza tecniche peculiari di Computer Vision e non necessita di addestra-
mento: la posizione della pupilla viene rilevata partendo dalla ricerca del riflesso
corneale; successivamente, partendo dalla posizione del riflesso, vengono rilevati i
                          u
pixel che presentano il pi` alto contrasto ovvero i pixel che corrispondono al contor-
no della pupilla. ASM utilizza un modello dell’occhio e necessita di addestramento:
il modello dell’occhio, specifico per ogni utente, viene creato a mano e presenta al-
cuni parametri che consentono di deformarlo. La ricerca dell’occhio nell’immagine
       a
avverr` traslando e deformando il modello in relazione alle caratteristiche dell’im-
                                              e                  e e
magine. La struttura di questi due algoritmi ` differente, perch´ si ` scelto di testare
                                                                             u
due approcci completamente diversi per stabilire quale dei due fosse il pi` adatto
per tracciare i movimenti della pupilla.
                                                                     e
    I test effettuati sono stati divisi in due gruppi, in quanto si ` voluto dapprima
analizzare gli algoritmi singolarmente e, solo successivamente, confrontarli (cap. 5).
Il primo gruppo di test era volto a stabilire quali fossero le condizioni di utilizzo ot-
                                     o e
timale del singolo algoritmo: perci` si ` cercato di stabilire quali fossero i parametri
migliori con cui inizializzare l’algoritmo. Il numero di test effettuati in questa fase `e
differente per i due algoritmi: a differenza di Starbust, per cui sono stati effettuati
numerosi test, ASM ha un numero di parametri molto ridotto, in quanto il com-
             e
portamento ` quasi completamente influenzato dal modello utilizzato. Nel secondo
                   e
gruppo di test si ` cercato di stabilire quale dei due algoritmi avesse prestazioni
migliori rispetto ad alcuni indici di riferimento.
    Gli indici scelti per confrontare gli algoritmi sono: il tempo medio di elaborazione
di un fotogramma e l’errore medio di rilevamento della pupilla. Il tempo medio di
                                                            a
elaborazione permette di avere una stima della reattivit` del sistema; mentre l’errore
medio di rilevamento della pupilla permette di stimare la precisione del sistema, in
quanto incide direttamente sulla precisione con cui viene ricavato il punto osservato.
                                                  e
    Analizzando i risultati dei test effettuati si ` potuto concludere che Starbust ha
un tempo di elaborazione estremamente ridotto e un errore medio inferiore ad ASM,
                                           e                                 a
ma la misura della posizione della pupilla ` soggetta ad una certa rumorosit`; ASM,
               e u
d’altro canto, ` pi` lento, ma la posizione rilevata ha una variazione minore. La
          a               e
rumorosit` delle misure ` un parametro da analizzare attentamente, in quanto, se

                                           4
                                   1 – Introduzione


                     o
troppo elevato, pu` rendere difficile il rilevamento delle fissazioni, ovvero le aree
dello schermo in cui lo sguardo rimane fisso per un certo periodo di tempo.
    L’approfondita analisi dei due algoritmi ha permesso di accertare che entrambi
                                                         o
hanno spazio per alcuni miglioramenti. Starbust pu` essere migliorato riducen-
                    a                             o
done la rumorosit` (cap. 6.2), mentre ASM pu` essere migliorato riducendone la
            a
complessit` computazionale(cap. 6.3).
                                                                              a
    I test effettuati hanno permesso di stabilire una relazione tra la qualit` della
periferica di acquisizione e l’errore di rilevamento della pupilla: l’errore minimo
si ottiene utilizzando la telecamera per videoconferenza, che presenta un’elevata
       a
qualit` dell’immagine, mentre l’errore massimo si ottiene utilizzando la webcam che
presenta immagini molto degradate. Il compromesso migliore tra costo e precisione
               o
si ottiene per` con la fotocamera digitale: presenta un errore medio maggiore, ma
                  e            a
ha un costo che ` circa la met` rispetto alla telecamera per videoconferenza.
    I risultati ottenuti testando questi algoritmi confermano che la precisione ot-
                                    e
tenibile da sistemi a luce visibile ` inferiore a quella ottenibile da sistemi a luce
infrarossa, ma il miglioramento delle periferiche di acquisizione e il raffinamento de-
                 o
gli algoritmi pu` portare a sistemi a basso costo che potranno essere affiancati ai
normali canali di input.




                                         5
Capitolo 2

Eye tracking

Inizialmente l’utilizzo di sistemi di eye tracking era confinato agli studiosi di movi-
                                                o
menti oculari, col progresso della tecnica, per` l’utilizzo di eye tracker ha subito una
notevole diffusione: non solo come strumento per affiancare i normali canali di in-
                                                                                 o
put, ma anche come strumento sostitutivo ad essi. Infatti un’eye tracker pu` essere
utilizzato non solo per migliorare l’interazione uomo-macchina, ma anche per dare
                        a
una concreta possibilit` di utilizzo degli strumenti elettronici a persone diversamente
abili.



2.1      Storia
I primi studi sui movimenti oculari risalgono all’Ottocento ed erano eseguiti con
                                                 ı
osservazioni dirette. Nel 1898 Huey (5) costru` un rudimentale eye tracker composto
da una sorta di lente a contatto collegata ad un puntatore in alluminio, che si
spostava in risposta ai movimenti oculari; con questo rudimentale strumento riusc`ı
a dimostrare che leggendo una frase non ci si concentra su ogni parola, ma solo su
                                        u
quelle che il nostro cervello ritiene pi` “rilevanti“.
    Il primo eye tracker non intrusivo venne costruito da George Buswell: una fonte di
luce illuminava l’occhio e il riflesso veniva impressionato su pellicola; il movimento
dell’occhio provocava un corrispondente spostamento del tracciato impresso sulla
pellicola fotografica.
    Il progresso della tecnica ha permesso di sviluppare sistemi di eye tracking sempre
  u
pi` performanti sino ad utilizzare videocamere per filmare l’occhio e un computer

                                           6
                                      2 – Eye tracking


                                               e
per elaborare queste immagini: in questo modo ` possibile controllare un normale
                              e
computer con lo sguardo anzich` utilizzare mouse e tastiera.



2.2      Utilizzi
                             e
Inizialmente l’eye tracking ` stato utilizzato in ambito accademico per meglio com-
                                                                 e
prendere i meccanismi alla base della percezione visiva: si ` scoperto che durante
la lettura non ci si concentra sulle singole lettere di una parola, ma solo su alcuni
                                                                            u
gruppi di lettere e che, per il cervello, alcune parole di una frase sono pi` importanti
di altre: si noti ad esempio il tracciato seguito da un lettore in figura 2.1; i cerchi
                                   e                                  e
rappresentano i punti in cui si ` fissato lo sguardo, il diametro ` proporzionale al
tempo di fissazione.




                                                          e
   Figura 2.1. Un esempio dell’utilizzo dell’eye tracking ` l’analisi delle fissazioni che
   l’occhio effettua durante la lettura


                               e
     L’analisi delle fissazioni ` stata anche utilizzata dagli psicologi per mostrare come
uomini e donne si concentrino su caratteristiche diverse osservando immagini di altre
persone e viene utilizzata dall’industria per localizzare gli “attrattori attenzionali”
all’interno dello stimolo visivo: in questo modo si possono realizzare pubblicit`       a
                    u                     e
che attirino di pi` l’attenzione, perch´ si posizonano i messaggi da trasmettere nei
                             a
punti di massima visibilit`. Oppure si possono utilizzare queste informazioni per

                                            7
                                    2 – Eye tracking


migliorare la disposizione di avvisi, come ad esempio i cartelli stradali, o segnalazioni
importanti, come le vie di fuga.
                                             u
    In campo militare gli utilizzi sono i pi` disparati, in quanto gli studi sull’eye
tracking effettuati dall’esercito degli Stati Uniti risalgono addirittura agli anni ’50
                                                        u
(17): i primi utilizzi riguardarono studi sulle aree pi` osservate dai piloti durante
                             e
il volo; successivamente si ` cercato di costruire strumentazioni che permettessero
di selezionare alcuni comandi solamente osservando opportune icone, in modo dal
distrarre il pilota il meno possibile.
                                        e
    Solo ultimamente l’eye-tracking ` stato utilizzato come alternativa ai classici
strumenti di input (mouse e tastiera) per creare un sistema “handless” diretto ad
utenti professionali (campo biomedico) o diversamente abili. In futuro si prevede un
                   u
utilizzo sempre pi` massiccio di sistemi di eye tracking, se non per sostituire, almeno
per affiancare i normali canali di input e per migliorare l’interazione con gli strumenti
elettronici. Si stanno effettuando studi anche sulla sicurezza degli automobilisti:
infatti un eye tracker potrebbe essere utilizzato per monitorare costantemente il
livello di attenzione del guidatore e prendere provvedimenti nel caso non risulti in
condizioni adatte alla guida.
    Secondo recenti analisi (6) gli ambiti di maggior utilizzo degli eye tracker sono i
seguenti:

   • test sulle aree di interesse

   • scienze cognitive

              a
   • disabilit` motoria

   • misurazione livello di attenzione degli automobilisti

   • domotica

   • medicina


2.3      Classificazione
I sistemi di eye tracking possono essere classificati in base al metodo utilizzato per
rilevare i movimenti della pupilla (sensore ottico o elettrodi) e in base al fatto che
siano indossabili o meno.

                                           8
                                         2 – Eye tracking


                      u
    Gli eye tracker pi` diffusi utilizzano la tecnica della videooculografia (VOG): una
telecamera riprende l’occhio utilizzando un sensore sensibile all’infrarosso o alla luce
visibile.

    Infrarosso E’ una soluzione costosa1 , infatti, oltre ad un illuminatore infra-
rosso, si deve utilizzare un sensore sensibile alla radiazione infrarossa che fa levitare
il costo dell’apparato.

                              u                 e
    Visibile E’ la tecnica pi` semplice, perch´ permette di tracciare i movimenti
oculari con una semplice videocamera o, addirittura, con una webcam. Il costo `   e
       2
                                                            e
ridotto , ma la precisione di un eye tracker di questo tipo ` molto inferiore ad un
eye tracker infrarosso.

         e
     Vi ` anche un ulteriore gruppo di eye tracker, ovvero gli eye tracker basati sul-
l’elettrooculogramma (EOG). Questa tecnica permette di rilevare i movimenti della
pupilla misurando, con alcuni elettrodi, il potenziale elettrico in un’area vicina al-
                                       e
l’occhio; questo tipo di eye tracker ` stato inizialmente utilizzato per rilevare i mo-
                   3
vimenti saccadici durante la fase REM4 del sonno, ma attualmente viene utilizzato
anche da alcuni modelli commerciali.
     Un ulteriore distinzione dei sistemi di eye tracking si basa sul fatto che siano
indossabili o meno. I sistemi non indossabili non sono invasivi, hanno, per`, un  o
grande problema: l’utente deve mantenere l’occhio all’interno del campo visivo del
                               o                                          u
sensore. Naturalmente si pu` ovviare a questo problema utilizzando pi` telecamere
                                      ı,                  a
a raggi infrarossi permettendo, cos` una grande libert` di movimento, ma il costo
del sistema levita ulteriormente. Un’altra soluzione soluzione al problema consiste
nell’inquadrare interamente il viso dell’utente e compensare in qualche modo i mo-
                                  o
vimenti del capo: si deve perci` tracciare il movimento della testa dell’utente per
eliminare il movimento apparente dell’occhio.
     I sistemi indossabili non sono soggetti ad errori dovuti al movimento della testa,
infatti il sensore, essendo montato su occhiali, non cambia posizione rispetto all’oc-
                                    o                                e
chio; questi sistemi possono, per`, intralciare i movimenti, perch´ normalmente vi
  1
             e
    Il costo ` dell’ordine di 10.000 e
  2
    Al di sotto dei 1000 e
  3
    Vedere appendice A.1
  4
    Vedere appendice A.1.1

                                               9
                                    2 – Eye tracking


e
` un cavo di collegamento con il computer. Si deve anche notare che un utilizzo
prolungato potrebbe creare alcuni fastidi ad utenti che non hanno mai utilizzato
occhiali.


2.4      Funzionamento
                                        e
Il funzionamento di un eye tracker `, in linea di principio, molto semplice: viene
ripreso un soggetto e ne vengono tracciati i movimenti della pupilla. I movimenti
verranno registrati (nel caso di analisi off-line) oppure verranno tradotti in sposta-
menti del cursore sullo schermo (nel caso l’eye tracker venga utilizzato per controllare
un computer).
    Per spiegare il funzionamento di un eye tracker si deve innanzitutto suddividere
                              a
l’analisi in base alle modalit` di ricerca dello sguardo; di seguito viene riportata una
panoramica dei metodi di funzionamento tratta da una ricerca effettuata dalla rete
europea di eccellenza COGAIN (10):

   • videooculografia: utilizzando pupilla e riflesso corneale

   • videooculografia: utilizzando solamente la pupilla

   • videooculografia: utilizzando la doppia riflessione di Purkinje (se la fronte
                      e                                                  e
     di illuminazione ` frontale si hanno due riflessi da tracciare anzich` uno solo)

   • videooculografia: utilizzando il limbo (confine tra cornea e sclera)

   • elettrooculografia: utilizzando il potenziale elettrico generato dall’occhio

   • oculografia elettromagnetica: utilizzando una sonda posizionata sulla cor-
                                           e
     nea (utilizzata per ricerche mediche, ` una tecnica molto invasiva)

   • lenti a contatto: utilizzando lenti a contatto nell’occhio

     Analizzeremo in dettaglio le tecniche attualmente utilizzate dagli eye tracker
commerciali, ovvero la videooculografia e l’elettrooculografia. Sono le tecniche pi`   u
utilizzate in quanto danno i risultati migliori: la risoluzione media di questi siste-
     e
mi ` di circa 1◦ di campo visivo utilizzando la videooculografia e 2◦ utilizzando
l’elettrooculografia.

                                          10
                                     2 – Eye tracking


Videooculografia basata su pupilla e riflesso corneale Questo metodo de-
termina la direzione dello sguardo comparando le posizioni relative della pupilla e
del riflesso corneale determinato da una luce incidente. Normalmente il sistema con-
siste in un emettitore infrarosso e in una singola fotocamera sensibile alla radiazione
                            e
infrarossa; la fotocamera ` provvista di alcune lenti e di un sistema autofocus per
                                                             e
compensare i movimenti del capo. Se l’illuminatore non ` posto in direzione della
                              a
pupilla, quest’ultima apparir` completamente nera (metodo dark pupil). Nell’imma-
                                 a
gine risultante (fig. 2.2) si vedr` muoversi solo la pupilla, mentre il riflesso corneale
        a         e                a
rimarr` pressoch` costante e verr` utilizzato per compensare eventuali spostamenti
della testa. Un sistema completo di illuminatore e fotocamera sensibile all’infrarosso
e
` rappresentato in figura 2.3.




              Figura 2.2.   Videooculografia con pupilla e riflesso corneale



Videooculografia basata solo sulla pupilla La videooculografia che utilizza
                      e
solamente la pupilla ` molto simile a quella che utilizza le informazioni ricavabili
da pupilla e riflesso corneale; l’utilizzo della sola pupilla rende il sistema sensibile
ai movimenti della testa. Tipicamente si risolve questo inconveniente montando la
telecamera su occhiali (fig. 2.4), si crea quindi un sistema indossabile; il sistema

                                           11
                                     2 – Eye tracking




       Figura 2.3.   Sistema completo che utilizza la pupilla e il riflesso corneale


viene integrato con un piccolo schermo dedicato che visualizza una tastiera: l’utente
         a
comporr` parole e frasi semplicemente fissando i tasti “virtuali”.
    Un secondo approccio nell’utilizzo della sola pupilla consiste nel riprendere l’im-
                                                e
magine completa del volto (fig. 2.5): questa ` una variante semplificata della vi-
deooculografia che utilizza la pupilla e il riflesso corneale. Viene utilizzata una
videocamera a basso costo (una webcam o una videocamera USB) in concomitanza
con l’utilizzo di un software avanzato di elaborazione immagini: verranno tracciati
non solo i movimenti della pupilla, ma anche la posizione dell’occhio per compensare
gli spostamenti della testa.


Elettrooculografia L’elettrooculografia si basa sulla misurazione della differenza
di potenziale tra la cornea e la retina (circa 1 mV). Questo potenziale crea un campo
elettrico difronte alla testa; questo campo cambia orientamento seguendo la direzio-
                         o
ne dello sguardo e pu` essere rilevato ponendo degli elettrodi attorno all’occhio.
Tipicamente il sistema consiste in un apparato contenente strumenti per amplifica-
re i segnali rilevati, strumenti di controllo e un piccolo computer per convertire la

                                           12
                                     2 – Eye tracking




     Figura 2.4.   Sistema indossabile e schema della tastiera visibile sullo schermo




   Figura 2.5. Sistema che si basa solo sulla pupilla utilizzando videocamera a basso
   costo e software di elaborazione immagini


                                                                     e
posizione rilevata in un segnale digitale. Un sistema di questo tipo ` rappresentato
in figura 2.6.


2.4.1    Determinazione del punto osservato
La ricerca del punto osservato cambia a seconda del tipo di illuminazione e dalla
tipologia del sistema di eye tracking.
   Per determinare la direzione dello sguardo nei sistemi a luce infrarossa viene

                                           13
                                      2 – Eye tracking




                      Figura 2.6.   Un sistema di elettrooculografia


utilizzata la differenza di posizione tra il riflesso sulla cornea e il riflesso della pupilla.
                                            e
La rilevazione del riflesso della pupilla ` effettuato con due tecniche: Bright Pupil
and Dark Pupil. La differenza principale sta nella posizione della fonte di luce: se
                 e
la fonte di luce ` coassiale all’occhio, i raggi vengono riflessi dalla retina e la pupilla
rimane illuminata (Bright Pupil), altrimenti la pupilla rimane completamente scura
(Dark Pupil). La tecnica Bright Pupil crea un alto contrasto tra la pupilla e l’iride
permettendo un migliore tracciamento ed evitando l’interferenza causata dalle ciglia,
ma ha notevoli problemi di interferenza in un ambiente esterno in quanto il sole `         e
una sorgente IR molto potente.
    Nei sistemi che si basano sulla luce visibile si adottano varie tecniche di Computer
                                                e
Vision per analizzare l’immagine: lo scopo ` trovare la posizione della pupilla nello
spazio dell’immagine dell’occhio, per poi mapparla opportunamente nello spazio
dell’immagine osservata. In alcuni casi (ad esempio con webcam montata sugli
                o
occhiali) si pu` ricorrere alla stessa tecnica usata per l’IR (differenza tra riflesso
corneale e pupilla).
    La tecnica di mappatura dallo spazio immagine occhio allo spazio immagine
osservata sono molto varie e dipendono molto dal tipo di algoritmo utilizzato, ma
nella maggioranza dei casi si adotta una semplice mappatura polinomiale.

                                            14
                                   2 – Eye tracking


2.4.2    Calibrazione
                                               e
La calibrazione di un sistema di eye tracking ` importantissima, in quanto permette
di calcolare i coefficienti da utilizzare nella mappatura della posizione della pupilla
sullo spazio dello schermo; senza calibrazione il sistema potrebbe comunque funzio-
nare, ma il comportamento varierebbe moltissimo da utente ad utente e risentirebbe
                                                a
del cambiamento delle condizioni di luminosit` ambientale.
    Vi sono due metodi di calibrazione che sono gli standard di fatto dei sistemi
commerciali di eye tracking:

   • Calibrazione statica: vengono mostrati una serie di punti fissi sullo schermo
     del computer (fig. 2.7)

   • Calibrazione dinamica: viene mostrato un punto (o un bersaglio) che si
     muove apparendo e scomparendo sullo schermo (fig. 2.8)

    I punti (o il punto in movimento) sono disposti in modo tale da coprire un’ampia
area dello schermo per rendere molto efficiente la calibrazione; il numero di punti
   o
pu` anche essere aumentato per migliorare la precisione di calibrazione, natural-
                                                     a
mente all’aumentare del numero di punti aumenter` anche il tempo necessario alla
calibrazione.
                        e
    Normalmente non ` possibile scegliere la posizione dei punti sullo schermo: que-
       o
sta pu` essere una limitazione per gli utenti che non sono in grado di utilizzare
                              o
lo schermo completo, perci` alcuni sistemi commerciali prevedono la possibilit`    a
di scegliere manualmente non solo il numero, ma anche la posizione dei punti di
calibrazione.
    Dall’analisi effettuata da COGAIN la maggioranza dei sistemi commerciali uti-
lizza mediamente da 5 a 9 punti per la calibrazione (solo pochi utilizzano arrivano
sino a 17 punti) che vengono disposti ordinatamente per ottenere la massima co-
pertura dello schermo. Solo un sistema utilizza una calibrazione dinamica, ma gli
utenti sembrano trovare questo metodo piuttosto scomodo.


2.5     Sistemi commerciali
                                                                       o
In commercio si trovano molti sistemi di eye tracking, quasi tutti, per`, si basano
                                      o
su un solo illuminatore infrarosso: ci` riduce il costo dell’apparato, ma l’utilizzo

                                         15
                                     2 – Eye tracking




     Figura 2.7.   Esempio di calibrazione statica con un numero crescente di punti




      Figura 2.8. Esempio di calibrazione dinamica: il punto si muove sullo scher-
      mo con un percorso casuale



e
` limitato a persone che possono controllare pienamente i movimenti della testa.
                                              e
Infatti l’angolo visuale di questi apparati ` molto ridotto e il sensore infrarosso
deve essere centrato sull’occhio. Per l’utilizzo di eye tracker da parte di particolari
tipologie di utenti (ad es. affetti da spasmi muscolari) si deve passare a soluzioni
             u                 u
dotate di pi` illuminatori e pi` sensori infrarosso che permettono di compensare il
movimento del capo.

   Riportiamo alcuni esempi di apparati commerciali tratti da un’analisi del net-
work di eccellenza COGAIN (9):


                                           16
                                    2 – Eye tracking


    Modello             Funzionamento          Risoluzione spaziale         Costo
    VisionKey           Una serie di           La tastiera ha 49 posizio-   5.000 $
                        fotodiodi. Una               o
                                               ni, pu` esserne seleziona-
                        combinazione           ta una di un sottoinsieme
                        di        riflessio-    di 16
                        ne corneale e
                        retinale.
    ERICA               VOG                0.5◦ (0.5-1 cm sullo scher-      8.000 $
                                           mo)
    The    Eyegaze      Approccio basa- 0.45◦ (0.63 cm sullo                13.500 $
    Communication       to su luce visibi- schermo)
    System              le. Centro del-
                        la pupilla e ri-
                        flessione cornea-
                        le
    VISIOBOARD          VOG                risoluzione 0.1◦ , accura-       28.000 $
                                           tezza 0.30◦




                         e                                       ee
   Di questi eye tracker ` stato possibile testare ERICA, perch` ` utilizzato presso
                              e
i laboratori del Politecnico: ` molto funzionale in quanto si integra perfettamente
con Windows, permettendo di utilizzare questo sistema operativo come se si stesse
                            o
utilizzando un mouse (si pu` emulare anche il click fissando il punto desiderato sullo
                                                                            o
schermo, oppure battendo la palpebra). Prima di essere utilizzato, deve, per`, essere
tarato: si effettua la taratura fissando una serie di punti sullo schermo (da 4 a 24,
in base alla precisione desiderata); il sistema ha una certa tolleranza ai movimenti
del capo, ma se l’occhio esce dall’area inquadrata dalla telecamera il sistema pu`  o
perdere il tracciamento dell’occhio.

   Gli altri eye tracker presentati nella tabella sono molto simili a ERICA, ma il
                          e
prezzo di questi apparati ` superiore in quanto forniscono misurazioni con un errore
         u
medio pi` basso.

                                          17
                                    2 – Eye tracking


2.6      Panoramica sugli algoritmi di eye tracking
Sono numerosi gli algoritmi di eye tracking proposti per l’analisi di immagini in
spettro visibile o infrarosso, ma devono essere distinti sulla base del fatto che alcuni
permettono un’analisi delle immagini in tempo reale, mentre altri, di solito pi`       u
precisi, hanno un tempo di elaborazione molto elevato.


2.6.1     Algoritmi in tempo reale
Vi sono numerosi algoritmi per l’eye tracking in tempo reale, molti di questi, per
ridurre il tempo di elaborazione, si occupano di ricercare la posizione dell’occhio
piuttosto che la posizione della pupilla. Uno dei problemi fondamentali che deve
                                            e
essere risolto in questo tipo di algoritmi ` la compensazione dei movimenti della
testa, che, altrimenti, causerebbero errori grossolani.
    Kawato e Tetsutani (13) propongono di estrarre la posizione degli occhi e trac-
ciarla nei fotogrammi successivi utilizzando opportuni template. Il primo passo
                e
dell’algoritmo ` la ricerca degli occhi: per rilevare la posizione degli occhi vengono
                                                                  e
analizzate le differenze tra fotogrammi successivi, se la testa ` immobile le uniche
                                                                           o      e
differenze saranno quelle causate battito delle palpebre; se la testa, per`, non ` im-
mobile nasce il problema di distinguere le differenze causata dal movimento delle
palpebre da quelle causate dal movimento della testa. Per ovviare a questo proble-
ma Kawato e Tetsutani hanno effettuato alcune considerazioni: ad esempio nel caso
di movimento rotatorio della testa le aree con le differenze maggiori saranno sicu-
                                                     e
ramente vicine ai bordi del volto (se la rotazione ` verso sinistra l’orecchio sinistro
           a        o
scomparir`), perci` le aree che presentano grandi differenze e sono vicine ai bordi
del viso verranno eliminate (fig. 2.9). Dopo aver individuato gli occhi, l’algoritmo
si occupa di tracciarli: una semplice ricerca per aree corrispondenti non sarebbe ef-
ficace, visto che l’orientamento potrebbe essere diverso a causa dei movimenti della
             oe
testa. Perci` ` stata sviluppata una tecnica che utilizza un template fisso che viene
inizializzato ad ogni occlusione, e un template variabile che viene aggiornato sulla
base del posizione degli occhi nel frame precedente: in questo modo si ottiene un
metodo di tracciamento molto efficace.
                                  o
    Un approccio alternativo pu` essere un approccio basato sull’utilizzo di classifi-
catori binari: Amarnag et al. (15) propongono di utilizzare un classificatore binario
     e                                                                        e
che ` basato su di un training set dinamico e un stadio di clustering (che ` lasciato

                                          18
                                    2 – Eye tracking




   Figura 2.9. Immagine che rappresenta le differenze tra due fotogrammi successivi,
   i cerchi bianchi indicano le differenze attribuite al movimento delle palpebre


libero di evolversi per tracciare efficientemente la pupilla in tempo reale). L’utilizzo
di una strategia che si basa su un training set dinamico rende l’algoritmo insensibile
alla variazione delle condizioni di luce ed lo rende indipendente dall’utente che sta
effettivamente utilizzando il sistema. La prima fase di questo algoritmo consiste
nella selezione della regione di ricerca: vengono ricercate le aree dell’immagine con
                    e
alta saturazione (` noto che la regione dell’occhio ha colori con alta saturazione). I
pixel selezionati vengono analizzati con un classificatore Bayesiano che determina,
analizzando le componenti HSV, quali appartengano all’occhio e quali no. L’algorit-
                   e
mo di clustering ` utilizzato per trattare il problema dal punto di vista geometrico:
                               e            o
il classificatore Bayesiano no ` preciso e pu` classificare come appartenenti all’occhio
anche pixel appartenenti a regioni ad alta saturazione come i capelli dell’utente; con
l’algoritmo di clustering si raggruppano i pixel in macroaree e vengono scartati quelli
            e
isolati. Vi `, infine, una fase di post elaborazione per raggruppare i cluster erronea-
mente separati e per eliminare i cluster in cui la differenza tra altezza e larghezza
e
` troppo elevata (non possono sicuramente rappresentare un occhio). In figura 2.10
sono rappresentate le fasi dell’algoritmo proposto da Amarnag.
    Un esempio algoritmo per eye tracking che utilizza reti neurali si trova nell’arti-
                                           e
colo di Marcone et al. (16): nell’articolo ` proposto l’utilizzo di un filtro di Gabor
                                        a
per l’analisi locale, che ha la propriet` di determinare efficientemente la posizione

                                          19
                                    2 – Eye tracking




   Figura 2.10. Sequenza delle operazioni effettuate dall’algoritmo di Amarnag: (a)
   output dopo il pre-processamento (b) output dopo il classificatore Bayesiano (c)
   output dopo l’algoritmo di clustering (d) risultato finale


                                             e
degli occhi in un’immagine; questo filtro ` implementato utilizzando da una rete
neurale competitiva (fig. 2.11). Viene determinata grossolanamente l’area in cui si
trova l’occhio: successivamente quest’area viene divisa in 9 zone, ciascuna delle quali
e
` legata ad un neurone della rete neurale. Inizialmente le 9 regioni sono posizionate
                              e
al centro dell’area in cui si ` previsto essere l’occhio; la regione che vince la com-
                                                                     e
petizione diventa il nuovo centro: il processo viene iterato finch` il centro rimane
stabile.



2.6.2     Algoritmi di analisi offline
Un esempio di algoritmo per l’analisi offline si trova nell’articolo di Ivins e Porril
(12): descrive un modello deformabile dell’iride umana adatto a tracciare accurata-
mente i movimenti tridimensionali dell’occhio riprese con una telecamera sensibile
                            e
all’infrarosso. Il modello ` controllabile mediante 5 parametri che controllano la
traslazione (orizzontale e verticale), la rotazione, scalamento radiale e uniforme (per
modellare cambiamenti dell’ampiezza della pupilla). La misura di torsione effettuata
                                                                                e
con questo modello ha un’accuratezza di 0,1◦ , ma il carico computazionale ` molto

                                          20
                                    2 – Eye tracking




    Figura 2.11.   Schema della rete neurale competitiva proposta da Marcone et al.


                                                                           o
elevato. In figura 2.12 sono mostrati i primi nove modi di variazione che pu` avere
un modello dell’iride utilizzando una trasformazione cubica.




      Figura 2.12. Esempio di variazioni possibili di un modello deformabile
      dell’iride: 1 traslazione, 2 scalamento, 3-5 combinazione di trasformazioni,
      6-9 trasformazioni complesse


   Un’altra tecnica molto utilizzata in analisi offline consiste nel costruire un insieme

                                          21
                                    2 – Eye tracking


di addestramento (training set) per l’algoritmo: si selezionano numerose immagini
degli occhi dai primi fotogrammi del filmato da analizare (fig. 2.13); queste im-
                                                                       a
magini saranno utilizzate per addestrare una rete neurale, che avr` il compito di
ricercare la posizione degli occhi nei successivi fotogrammi. La fase di addestramen-
   e
to `, quindi, computazionalmente molto complessa, ma secondo le analisi effettuate
da Pedersen e Spivey (14) automatizzando la creazione del training set e avendo
computer con un’elevata potenza di calcolo questa tecnica potrebbe essere utilizzata
anche in tempo reale.




   Figura 2.13. Training set utilizzato per addestrare la rete neurale utilizzata nel-
   l’algoritmo descritto da Pedersen e Spivey




                                          22
Capitolo 3

Ambiente di test

3.1      Introduzione
L’ambiente di test che deve analizzare le prestazioni di algoritmi di eye tracking deve
essere composto da un database di filmati, un’applicazione per gestire il database e
un’applicazione che permetta di implementare e analizzare gli algoritmi.
                                             a
    Il database deve prevedere la possibilit` di memorizzare numerose informazioni
per ogni singolo frame, quindi deve essere strutturato per poter gestire adeguatamen-
                                           ı,
te una notevole mole di dati. Deve, altres` essere strutturato in modo tale da poter
                                     e                                e
essere facilmente riutilizzato, perch´ lo scopo secondario per cui ` stato costruito
                  e
questo database ` renderlo disponibile a chi ne ha bisogno: su Internet, infatti, sono
disponibili alcuni database di filmati come, ad esempio, il CUAVE. Questi database
sono formati da filmati che ritraggono persone che parlano e sono riprese su sfondi
neutri o in movimento; questi filmati vengono utilizzati per tracciare caratteristiche
del volto (sopracciglia, naso) oppure il movimento delle labbra, ma non contengono
                                                                                  o
informazioni relativamente alla posizione di queste caratteristiche, manca perci` un
sistema di riferimento con cui confrontare le misure ottenute dagli algoritmi.
                                                   e
    La prima applicazione sviluppata (Tagger ) ` stata strutturata per velocizzare
l’operazione di posizionamento dei riferimenti (tag) sui singoli frame, mentre la se-
                       e
conda (Benchmark ) ` stata progettata per essere facilmente espandibile. Entrambe
le applicazioni utilizzano le librerie Qt (cap. A.2) e OpenCV (cap. A.3) e sono state
scritte in linguaggio C++: pur essendo state scritte in ambiente Windows possono
essere facilmente adattate per sistemi Linux, in quanto sia Qt che OpenCV sono

                                          23
                                   3 – Ambiente di test


                                   e                   e
librerie portabili. La libreria Qt ` stata scelta perch` permette di realizzare comode
interfacce grafiche senza appesantire inutilmente l’applicazione, mentre OpenCV `     e
                    ee                                                          e
stata scelta perch´ ` una potente libreria per l’elaborazione di immagini ed ` molto
utilizzata da chi si occupa di Computer Vision.


3.2      Database dei filmati
                                                          e
Per memorizzare le informazioni relative ai filmati si ` scelto di utilizzare XML: `     e
un meta linguaggio che viene utilizzato per definire nuovi linguaggi, atti a descrivere
documenti strutturati. A differenza dell’HTML, non ha un insieme ben definito e
                     e
ristretto di tag, ma ` possibile definirne di nuovi a seconda delle proprie esigenze. Si
e                                            e
` scelto XML proprio per la sua potenza: ` infatti possibile descrivere una qualsiasi
                                                                              e
struttura dati; inoltre, se un file XML utilizza solo attributi di tipo testo, ` possibile
visualizzarlo ed editarlo con un semplice word processor.
                                                            a
    Un’ulteriore caratteristica che aumenta la portabilit` di un documento XML `        e
             a                                               e
la possibilit` di definire una grammatica (DTD) con cui ` possibile verificare che il
documento sia formalmente corretto e strutturato come previsto.
                                                             o e
    Il database deve essere facilmente riutilizzabile, perci` si ` scelto di non memo-
rizzare le informazioni in un unico documento, ma viene creato un file XML per ogni
                          o         a                                        a
filmato utilizzato: perci` chi vorr` analizzare uno specifico filmato dovr` semplice-
mente copiarsi il file video e il relativo file di dati, senza doversi procurare l’intero
database.


3.2.1     Struttura XML
                                                     e
Il file XML che contiene i dati relativi ad un filmato ` strutturato in questo modo:

   • elemento “Video”; attributi: File name,LastModifiedFrame

        – elemento “Frame” (pari al numero di fotogrammi); attributi: Number
             ∗ elemento “Tag”; attributi:width,x,y,rotation,height,ishidden,type

       e                                          e              a
   Vi ` un elemento radice chiamato Video che ` unico (l’unicit` dell’elemento
       e
radice ` richiesta per creare un documento Well Formed): questo elemento avr`    a
una serie di nodi figli (chiamati Frame) che contengono le informazioni relative al

                                           24
                                   3 – Ambiente di test


                                                                     u
singolo fotogramma. Ogni elemento Frame contiene uno o pi` elementi Tag che
rappresentano le informazioni relative ai riferimenti posizionati sul fotogramma.
                                 e
    Questo tipo di struttura ` indipendente dal numero di fotogrammi e permet-
te di aggiungere facilmente nuovi elementi di tipo Tag, permettendo di utilizzare
riferimenti non previsti inizialmente.
    Gli attributi fondamentali che un tag deve avere sono: larghezza, altezza, coor-
dinate cartesiane del centro, il tipo (che permette di specificare a quale elemento del
                                                                  e                     e
volto si riferisce il tag) e una variabile che specifica se il tag ` visibile o meno. Vi `
                                                               e
poi un attributo che specifica la rotazione, ma, per ora, ` utilizzato solamente per
                             e
il tag relativo al naso: si ` scelto di non utilizzare la rotazione per gli altri tag per
due semplici motivi:

   • le pupille sono sferiche e per adattare l’ellisse alla forma degli occhi si modifi-
     cano semplicemente gli assi principali

   • lavorando al computer l’utente mantiene la testa in verticali, non la inclina,
          o
     perci` gli occhi sono mantenuti orizzontali e non serve inclinare l’ellisse per
     adattarlo agli occhi

    Attualmente ogni fotogramma contiene cinque elementi di tipo “Tag”: infatti
vengono memorizzati i riferimenti per il naso, per le pupille e per gli occhi. Quindi
                                  a
la struttura di un singolo file sar` la seguente:

   • elemento “Video”

        – elemento “Frame” (pari al numero di fotogrammi)
             ∗ elemento “Tag”;contenente:width,x,y,rotation,height,ishidden,
               type=Nose
             ∗ elemento “Tag”; contenente:width,x,y,height,ishidden,type=EyeSX
             ∗ elemento “Tag”; contenente:width,x,y,height,ishidden,type=PupilSX
             ∗ elemento “Tag”; contenente:width,x,y,height,ishidden,type=EyeDX
             ∗ elemento “Tag”; contenente:width,x,y,height,ishidden,type=PupilDX

                a                                             o
    Il naso verr` rappresentato come una linea retta, perci` verranno utilizzate solo
le informazioni relative a posizione e rotazione; gli altri tag verranno rappresentati
da un’ellisse, come in figura 3.1.

                                           25
                                   3 – Ambiente di test




 Figura 3.1.   Il disegno raffigura la struttura dei tag che rappresentano occhi e pupille


    Di seguito viene riportato un esempio di come si presenta il file XML associato
al filmato visibile in figura 3.2:

<?xml version=” 1 . 0 ” ?>
< !DOCTYPE Video SYSTEM ” TagVideoEyeTracking . dtd ”>
<Video F ile na me=” C: / f i l m a t i /W Ale . a v i ” LastModifiedFrame=”
   528 ”>
          <Frame Number=” 0” >
                  <Tag width=”3 ” x=” 341 ” y=” 145 ” r o t a t i o n=” 90 ”
                       h e i g h t=” 201 ” i s h i d d e n=”No” type=” Nose ” />
                  <Tag width=” 47 ” x=” 261 ” y=” 148 ” h e i g h t=” 17 ”
                     i s h i d d e n=”No” type=”EyeSX” />
                  <Tag width=” 11 ” x=” 262 ” y=” 148 ” r o t a t i o n=”
                     524633 ” h e i g h t=” 11 ” i s h i d d e n=”No” type=”
                     PupilSX ” />
                  <Tag width=” 47 ” x=” 407 ” y=” 167 ” h e i g h t=” 17 ”
                     i s h i d d e n=”No” type=”EyeDX” />
                  <Tag width=” 11 ” x=” 407 ” y=” 167 ” h e i g h t=” 11 ”
                     i s h i d d e n=”No” type=”PupilDX” />

                                           26
                                 3 – Ambiente di test


         </Frame>
         <Frame Number=” 1” >
                 <Tag width=”3 ” x=” 340 ” y=” 145 ” r o t a t i o n=” 90 ”
                     h e i g h t=” 201 ” i s h i d d e n=”No” type=” Nose ” />
                 <Tag width=” 47 ” x=” 260 ” y=” 148 ” h e i g h t=” 21 ”
                   i s h i d d e n=”No” type=”EyeSX” />
                 <Tag width=” 11 ” x=” 262 ” y=” 148 ” r o t a t i o n=”
                   524761 ” h e i g h t=” 11 ” i s h i d d e n=”No” type=”
                   PupilSX ” />
                 <Tag width=” 47 ” x=” 407 ” y=” 168 ” h e i g h t=” 21 ”
                   i s h i d d e n=”No” type=”EyeDX” />
                 <Tag width=” 11 ” x=” 405 ” y=” 168 ” h e i g h t=” 11 ”
                   i s h i d d e n=”No” type=”PupilDX” />
         </Frame>
</ Video>


3.2.2    DTD
                                 e
Il DTD (Data Type Definition) ` un linguaggio che permette di specificare formal-
mente quali elementi e quali tipi di attributi devono essere contenuti in un determi-
                                             e
nato tipo di file XML; utilizzando il DTD ` possibile verificare che il file XML sia
un file ben formato, ovvero che sia scritto secondo le regole dello standard XML e
che segua le specifiche fornite dal DTD.
    I file XML utilizzati nel database saranno di tipo TagVideoEyeTracking e segui-
ranno la seguente grammatica DTD:


< !ELEMENT Video ( Frame+)>
< !ATTLIST Video F ile na me C   A REQUIRED
                              DAT #
LastModifiedFrame C      A REQUIRED
                     DAT #         >



< !ELEMENT Frame ( Tag+)>
< !ATTLIST Frame Number C    A REQUIRED
                          DAT #        >


                                         27
                                  3 – Ambiente di test




< !ELEMENT Tag E P Y    MT>
< !ATTLIST Tag width C            A REQUIRED
                               DAT #
x C  DAT #  A REQUIRED
y C  DAT #  A REQUIRED
height C           A REQUIRED
               DAT #
i s h i d d e n ( Yes | No) #REQUIRED
type C     DAT #A REQUIRED
rotation C           A IMPLIED
                 DAT #           >

                o
   Come si pu` notare tutti gli attributi sono semplice testo, infatti sono di tipo
                                     e                   e
CDATA; l’attributo rotazione non ` obbligatorio (infatti ` dichiarato IMPLIED), in
       e
quanto ` utilizzato solo per il tag relativo al naso.



3.3      Tagger
                      e
Questa applicazione ` stata sviluppata per posizionare i riferimenti su un filmato
                                       e
in modo molto semplice e veloce, ed ` stata pensata anche per utilizzi futuri: in-
      e
fatti ` possibile aggiungere nuovi tipi di tag, come,ad esempio, la posizione delle
sopracciglia.
                o
    Come si pu` vedere nella figura 3.2 i tag che rappresentano occhi e pupille sono
                                                        e
rappresentati da ellissi, mentre la posizione del naso ` rappresentata da una retta:
per migliorare l’individuazione dei tag sono stati utilizzati cinque colori con elevata
                                                  e
saturazione; l’origine del sistema di riferimento ` posta nell’angolo in alto a sinistra
del fotogramma.
    Per elaborare il file XML vengono utilizzate le funzioni della libreria Qt. Il docu-
mento viene caricato completamente in memoria e per la navigazione viene utilizzato
                            e
un modello dati DOM: si ` scelto di caricare tutto il documento DOM in memoria,
      e
perch`, altrimenti, si sarebbe dovuto leggere il file ad ogni richiesta dati per un frame
non ancora visualizzato. Le funzioni della libreria Qt si occupano, inoltre, di verifi-
care che il documento sia ben formato utilizzando la grammatica DTD specificata
nel file XML (o in un file esterno). Se il file XML viene generato da un’applicazio-
              o                                                     o
ne esterna pu` contenere elementi o attributi aggiuntivi, perci` il file XML dovr`      a

                                          28
                                    3 – Ambiente di test




  Figura 3.2.   Un fotogramma in cui sono visibili i tag relativi a pupille, occhi e naso


                                                                          o
fare riferimento ad una nuova grammatica DTD che li specifichi; se, per`, questo
            a
file manterr` gli elementi base del tipo di documento TagVideoEyeTracking potr`    a
ancora essere utilizzato dalle applicazioni Tagger e Benchmark: infatti utilizzando
la struttura DOM si naviga il documento come se fosse un albero e si estraggono
solamente gli attributi previsti.


3.3.1    Interfaccia dell’applicazione
                                e
L’interfaccia dell’applicazione ` molto semplice: un menu permette la gestione dei
file; un’area raggruppa i pulsanti dedicati alla navigazione tra i frame, mentre in
                                                                a
un’altra sono raggruppate le regolazioni relative alla luminosit` e al contrasto del-
              ´
l’immagine. E inoltre visibile una piccola guida che ha la funzione di promemoria
per i comandi da tastiera.
    I tag possono essere comodamente spostati utilizzando direttamente il mouse,

                                            29
                                  3 – Ambiente di test


     e
ma ` possibile muoverli con maggior precisione utilizzando le frecce direzionali: in
                                 o
questo caso il centro del tag pu` essere spostato di un pixel alla volta. Per nascondere
                     e
velocemente i tag ` possibile utilizzare i tasti numerici da 1 a 5; questa funzione `  e
                   e                     o
molto utile perch` in alcuni filmati pu` capitare che l’utente sbatta le palpebre pi`   u
volte in frame successivi. Sempre utilizzando la tastiera si possono muovere i tag
                                                               e
a coppie (ad esempio i due occhi): muovere i tag a coppie ` molto comodo quando
l’utente muove spesso la testa visto che la distanza tra gli occhi rimane costante.
                                  o
    In alcuni casi il filmato pu` risultare poco luminoso e con un contrasto molto
basso, il che rende difficile posizionare i tag relativi alle pupille: per ovviare a que-
                       e
sta situazione, che ` molto comune utilizzando una webcam in condizioni di luce
                e                              a                           a
non ottimale, ` stata aggiunta la possibilit` di regolare la luminosit` del filmato.
                         a           e
Regolare la luminosit` del filmato ` molto semplice utilizzando la libreria OpenCV,
        e
infatti ` possibile modificare ogni singolo pixel dell’immagine modificandone i va-
lori RGB: sommando un valore constante alle tre componenti di colore si ottiene
                               a
un’aumento della luminosit`. Per aumentare il contrasto dei piccoli dettagli (ad
                         e                                                         e
esempio le pupille) si ` utilizzato un filtro di tipo Sharpening (cap. A.5.2) che ` una
tecnica molto semplice che permette di modificare il contrasto senza dover passare
attraverso il calcolo dell’istogramma: si modificano i valori dei pixel in accordo con
una determinata matrice di pesi.


3.4      Benchmark
Questa seconda applicazione permette di selezionare i filmati da analizzare e gli
                                       e
algoritmi da utilizzare. L’interfaccia ` progettata per essere molto semplice, ma
nasconde una struttura complessa che permette di implementare algoritmi anche
molto diversi tra loro.


3.4.1     Interfaccia dell’applicazione
                                      e
L’interfaccia di questa applicazione ` stata progettata per essere chiara (in previ-
sione dell’utilizzo da parte di altri componenti del gruppo di ricerca) ed esporre
                                                        e
comodamente tutte le funzioni; la schermata principale ` suddivisa in schede:

                             e
   • Filmati selezionati: ` possibile selezionare i filmati da analizzare e gli algo-
     ritmi da utilizzare per l’elaborazione.

                                          30
                                   3 – Ambiente di test


                    e
   • Anteprima: ` possibile visualizzare l’anteprima del filmato che viene elabo-
                      o
     rato; come si pu` vedere in fig. 3.3 vengono visualizzati il riferimento della
     pupilla (cerchio verde) e una croce che rappresenta l’output dell’algoritmo

   • Statistiche: permette di visualizzare le statistiche relative al filmato elabo-
     rato

                         e
   • Configurazione: ` possibile accedere alle finestre di configurazione dei sin-
                                       e
     goli algoritmi (fig. 3.4); inoltre ` possibile selezionare il numero massimo di
     fotogrammi da analizzare




   Figura 3.3. Anteprima dell’analisi di un filmato: si nota il riferimento della pupilla
   (cerchio verde) e il centro della pupilla rilevata (croce gialla)




3.4.2     Struttura dell’applicazione
               e
Il programma ` strutturato in un thread principale e uno secondario: il thread prin-
cipale si occupa di reagire alle richieste dell’utente mentre il thread secondario viene

                                           31
                                  3 – Ambiente di test




            Figura 3.4.   Finestra di configurazione dell’algoritmo Starbust


                                                                              e
avviato quando viene eseguita una simulazione. Un approccio multi thread ` in que-
sto caso obbligatorio, in quanto se fosse stato utilizzato solo un thread l’interfaccia
grafica si sarebbe bloccata (o sarebbe diventata poco reattiva) nel momento in cui
fosse partita l’elaborazione.
    Il thread secondario si occupa di caricare i fotogrammi del filmato (utilizzando
le funzioni di OpenCV), estrarre le informazioni dal documento XML associato al
filmato in analisi e invocare il metodo che si occupa di elaborare il fotogramma:
questo metodo fa parte dalla classe astratta Algo, in questo modo per utilizzare
                 e
nuovi algoritmi ´ necessario implementare solamente una classe derivata da Algo
senza dover modificare la struttura dell’applicazione.
                                                  ee
    L’applicazione presenta numerose classi, perch´ ` basata su un approccio object
oriented: l’utilizzo di programmazione ad oggetti semplifica notevolmente la rea-
lizzazione di interfacce grafiche in quanto ogni elemento di una finestra (bottoni,
                          e
etichette di testo, ecc.) ` di per se un oggetto.
    Nelle sezioni successive verranno analizzate solamente le classi e le strutture dati
relative alla gestione degli algoritmi e dei dati, in quanto non si ritiene opportuno
focalizzare l’analisi sui paradigmi di realizzazione di interfacce grafiche che sono

                                          32
                                     3 – Ambiente di test


ormai consolidati.



3.4.3      Classe Algo

                                                      o
Questa classe rappresenta un algoritmo generico, perci` deve anch’essa essere ge-
nerica e flessibile in modo da potersi adattarsi ad algoritmi il cui principio di
               e
funzionamento ` molto diverso.
                             e
   La struttura della classe ` la seguente:




c l a s s Algo : public QObject {
            Q OBJECT

public :

            QString name ;
            QString d e s c r i p t i o n ;
            bool o u t p u t v i s i b l e ;




           void AnalizeFrame ( IplIma g e ∗Frame , InfoFrame ∗
             info out ) ;

            vir t ual void AnalizeFrameImpl ( IplIma g e ∗Frame ,
              InfoFrame ∗ i n f o o u t ) =0;




            vir t ual public void T r a i n i n g ( IplIma g e ∗Fotogramma ,
              InfoFrame ∗ i n f o i n , InfoFrame ∗ i n f o o u t ) =0;




                                               33
                                   3 – Ambiente di test


             vir t ual public void I n i t ( QString f i l e n a m e , const
               CvCapture ∗ , int x , int y ) =0;



             vir t ual public QString St r ing O f Pa r a met er ( ) =0;




             public s l o t s :
                      vir t ual void Co nf ig ( ) =0;




};


     • Init(QString file name,const CvCapture∗, int x, int y): questo meto-
       do viene invocato ad ogni nuovo filmato da analizzare, in modo da azzerare
                                                                     e
       eventuali variabili di “stato”. Il parametro CvCapture∗ ` una struttura dati
       che rappresenta un file video e contiene numerose informazioni relative ad esso
       (numero colori, dimensioni fotogramma,ecc.): queste informazioni possono es-
       sere utili per inizializzare opportune variabili dell’algoritmo. Vengono inoltre
       fornite le coordinate della posizione della pupilla nel primo fotogramma: que-
                              o
       sta informazione pu` essere utile per inizializzare la ricerca in un’area vicina
       all’occhio, per evitare che l’algoritmo si concentri su aree errate dell’immagine.

     • Training(IplImage Fotogramma,InfoFrame in,InfoFrame out): attual-
                   e                e
       mente non ` utilizzato, ma ` stato pensato per algoritmi che necessitano di una
       fase di addestramento prima di poter essere utilizzati. Ad esempio potrebbe
       essere utilizzato per creare automaticamente un training set se l’algoritmo ` e
       basato su una rete neurale (per un esempio vedere la figura 2.13): dai pri-
                                    e
       mi fotogrammi del filmato ` possibile ritagliare un’area dell’immagine attorno
       all’occhio (i dati relativi alla posizione sono contenuti nella struttura in) e

                                           34
                                 3 – Ambiente di test


                                                                 a
     utilizzarla per ricavare i pesi per la rete neurale che dovr` successivamente
     ricercare l’occhio.

   • AnalizeFrame(IplImage Frame,InfoFrame info out): ` il metodo chee
     viene invocato dal thread secondario per analizzare il fotogramma; il primo
                e
     parametro ` una struttura di OpenCV utilizzata per memorizzare immagini; il
                         e
     secondo parametro ` una classe (descritta nella sezione 3.4.4) che memorizza le
     informazioni rilevate dall’algoritmo. Questo metodo si occupa essenzialmente
     di invocare il metodo AnalizeFrameImpl(IplImage Frame,InfoFrame info out)

   • AnalizeFrameImpl(IplImage Frame,InfoFrame info out): ` il metodo
                                                          e
     in cui viene effettivamente implementato l’algoritmo

   • StringOfParameter(): restituisce una stringa che contiene il nome e i valori
     dei parametri utilizzati dall’algoritmo. Le informazioni relative ai parametri
     verranno poi visualizzate all’atto della creazione delle statistiche per poter
     associare i dati ricavati ad una determinata configurazione dell’algoritmo

   • Config(): se l’algoritmo presenta parametri configurabili, questo metodo si
             a
     occuper` di creare una finestra di dialogo per modificarli. Un esempio di
                                                  o
     dialogo per la configurazione dei parametri pu` essere visto in figura 3.4)

         o                                             a
    Perci` per implementare un nuovo algoritmo si dovr` creare una classe che derivi
Algo, re-implementare tutti i metodi presenti nella classe base e aggiungendo tutte
le variabili e i metodi necessari.
c l a s s NuovoAlgoritmo : public Algo              {

public :
           NuovoAlgoritmo ( ) ;
           ˜ NuovoAlgoritmo ( ) ;

           void I n i t ( QString f i l e n a m e , const CvCapture ∗ , int x ,
             int y ) ;

           void T r a i n i n g ( IplIma g e ∗Fotogramma , InfoFrame ∗
             i n f o i n , InfoFrame ∗ i n f o o u t ) ;

                                         35
                                         3 – Ambiente di test




private :



             void AnalizeFrameImpl ( IplIma g e ∗Frame , InfoFrame ∗
               info out ) ;

             public s l o t s :

                           void Co nf ig ( ) ;

// metodi e v a r i a b i l i u t i l i z z a t e d a l l ’ a l g o r i t m o i m p l e m e n ta to

             void f o o ( int ) ;

             int var ;




};




// i m p l e m e n t a z i o n e metodo AnalizeFrameImpl ( . . . )
void St a r Bust : : AnalizeFrameImpl ( IplIma g e ∗ frame , InfoFrame ∗
  info frame ){

             // c o d i c e d e l l ’ a l g o r i t m o i m p l e m e n ta to

             f o o ( var ) ;

}

                                                  36
                                      3 – Ambiente di test


3.4.4      Classe InfoFrame
               e
Questa classe ` stata strutturata per memorizzare i dati relativi ad un fotogramma,
                                                     e
ovvero le informazioni dei tag ad esso relativi, ma ` utilizzata anche per memorizzare
le informazioni ricavate dagli algoritmi di eye tracking.
    Per ora InfoFrame contiene solamente cinque tag, visto che nel programma Tag-
     e
ger ` previsto il posizionamento di riferimenti relativi agli occhi, alle pupille e al
         e
naso; vi ` inoltre una variabile di tipo intero che memorizza il tempo di elaborazione
del fotogramma (in millisecondi).
              e
    La classe ` strutturata in questo modo:


c l a s s InfoFrame {

public :

            Elemento e y e s x , eye dx , p u p i l s x , p u p i l d x , no se ;

            int e l a b o r a t i o n t i m e ;



};
   I dati relativi ai tag sono memorizzati in strutture di tipo Elemento definite in
questo modo:
typedef struct e l {

           // c o o r d i n a t e d e l c e n t r o
           int x ;
           int y ;

           // d i m e n s i o n i
           int width ;
           int h e i g h t ;

           // r o t a z i o n e

                                                  37
                                     3 – Ambiente di test


           int r o t a t i o n ;



             e                                                        e
           //` i m p o s t a t a a t r u e s e l ’ e l e m e n to non ` v i s i b i l e
           bool i s H i d d e n ;

           // d i s t a n z a d a l c e n t r o su a s c i s s e e o r d i n a t e
                      a
           // v e r r ` p o i n o r m a l i z z a t a p e r i l r a g g i o d e l l a p u p i l l a
           float x normalized distance ;
           float y normalized distance ;

           // d i s t a n z a e u c l i d e a d a l c e n t r o
           float euclidean distance ,
             euclidean distance normalized ;

           // i m p o s t a t a a t r u e s e l a d i s t a n z a t r a i l c e n t r o
                                                       e
             r e a l e e q u e l l o c a l c o l a t o ` minore d e l r a g g i o d e l l a
                pupilla
           bool h i t ;

}
Elemento ;
      Questa struttura ha il compito di memorizzare le informazioni relative ad un
tag: vengono memorizzate le coordinate e la posizone del riferimento, la rotazione,
la distanza dal centro, il fatto che il tag sia visibile o meno. La stessa struttura `e
utilizzata anche per memorizzare i dati ricavati dopo che un algoritmo ha elaborato
il fotogramma: in questo modo il calcolo delle statistiche risulta semplificato perch´ e
tutti i dati necessari sono memorizzati nello stesso oggetto. Per i test effettuati
    e                                                 o
si ` utilizzata solo la posizione della pupilla, perci` nella struttura Elemento verr`a
memorizzata la distanza tra la posizione effettiva della pupilla e quella calcolata: la
distanza viene calcolata separatamente per l’asse delle ascisse e quello delle ordinate
        a
e verr` normalizzata per il raggio della pupilla. L’ultima variabile (hit) avr` una
valore true se la distanza tra il centro della pupilla calcolato e quello effettivo `  e
minore del raggio.

                                              38
                                   3 – Ambiente di test


3.4.5     Classe Starbust
                                                                    e
L’algoritmo non ha necessitato di particolari modifiche, in quanto ´ scritto in codice
      e
C ed ` diviso in blocchi logici ben distinti, ma, naturalmente, si sono dovuti fare
degli adattamenti alla struttura di gestione dell’input: infatti il sistema openEyes
                            e
(che implementa Starbust) ` strutturato per catturare immagini da due telecamere
(una che riprende l’occhio, l’altra che riprende la scena osservata).
                           e
    La prima modifica ` stata l’eliminazione delle funzioni di cattura, in quanto
                        a                                                      e
all’algoritmo viene gi` fornita l’immagine da analizzare. Successivamente ` stata
                          a
introdotta la possibilit` di scegliere se lavorare sull’immagine intera o solo su una
                                                                  e
parte: in pratica il blocco che effettivamente elabora l’immagine ` unico, in quanto le
funzioni di openEyes sono strutturate per essere indipendenti dalla risoluzione delle
telecamere e, quindi, sono indipendenti dalla dimensione delle immagini fornitegli.
                                                                o
Secondo le esigenze a monte di questo blocco principale verr` fornita l’immagine
intera o quella ritagliata.
                                                   e
    Lo scopo di utilizzare l’immagine ritagliata ` quello di poter utilizzare Starbu-
st non solo con un’immagine centrata dell’occhio, ma anche con un’immagine che
riprende l’intero volto dell’utente: una classe si occupa di rilevare la posizione del
volto utilizzando l’algoritmo di face tracking di OpenCV e fornisce in uscita le coor-
dinate dell’ellisse inscritto sul volto stesso. Date le coordinate dell’ellisse si calcola
                                                       a
un’area centrata sull’occhio sinistro, quest’area verr` poi ritagliata copiandola pixel
                                                                            e
per pixel su una nuova struttura dati di tipo IplImage (che in OpenCV ` la struttura
atta a contenere immagini).
    Starbust fornisce come output i parametri che rappresentano un’ellisse centrata
                    o
sulla pupilla, perci`, per renderlo omogeneo alla struttura di test, ne viene calcolato
il baricentro, che rappresenta il centro della pupilla.



3.4.6     Classe Sandra
                                                    e                e
L’implementazione di Active Shape Model che ` stata scelta ` quella che l’ing.
Castellina ha utilizzato per creare un sistema di gaze tracking chiamato Sandra:
e
` un sistema abbastanza complesso, in quanto l’algoritmo si basa su un modello da
                                    e                                                   e
tracciare, ma per creare il modello ` necessario utilizzare un training set. Il sistema `
                                                                 e
composto da due applicazioni: la prima applicazione (Locim) ` utilizzata per creare

                                           39
                                   3 – Ambiente di test


il training set e il modello; la seconda utilizza il modello per tracciare la caratteristi-
ca voluta. Possono essere tracciati il naso, le sopracciglia, l’occhio o qualsiasi altra
                                   e
caratteristica del volto per cui ` stato creato un modello.
                                       e
     Naturalmente, per questa tesi, ` stato necessario utilizzare solo le funzioni che
implementano effettivamente ASM: sono state eliminate le funzioni che utilizzano la
libreria MFC per la creazione di interfacce grafiche, in quanto questa funzione viene
svolta dall’applicazione Benchmark.
                                        e
     Per la creazione dei modelli non ` stato ritenuto opportuno riscrivere una nuova
applicazione, in quanto Locim ha una struttura molto generica: oltre a creare nuovi
               e
training set ` possibile creare nuovi modelli, scegliendo il numero e la posizione
dei punti che costituiscono il modello. Il modello creato utilizzando un opportuno
                 o                                                    o
training set pu` quindi essere esportato sottoforma di file e pu` essere facilmente
utilizzato nella classe Sandra.
     L’algoritmo ha come output il modello deformato che meglio si adatta all’im-
                            o                              e
magine analizzata: perci`, anche in questo caso, si ` reso omogeneo l’algoritmo
all’ambiente di test calcolando il baricentro dei punti che costituiscono il modello.




                                           40
Capitolo 4

Algoritmi scelti e implementati

Gli algoritmi proposti per sistemi di eye tracking in luce visibile che utilizzano foto-
camere a basso costo sono numerosi, alcuni sono stati analizzati nel capitolo 2.6. La
                                                                     o
realizzazione dell’ambiente di test ha richiesto molto lavoro, perci`, per effettuare i
test, sono stati implementati solo due algoritmi: naturalmente l’obbiettivo di questa
         e                   u
tesi non ` testare quanti pi` algoritmi possibile, ma sviluppare un ambiente di test
per poterne testare anche in futuro.
    Starbust e Active Shape Model sono i due algoritmi scelti per effettuare i test
utilizzando l’ambiente sviluppato per questa tesi. La scelta degli algoritmi ha richie-
sto una prima analisi degli algoritmi presenti in letteratura; sfortunatamente molti
di questi articoli sono troppo generici, non contengono nemmeno lo pseudocodice
                     o
dell’algoritmo, perci` un’errata implementazione potrebbe portare a risultati molto
diversi da quelli previsti dall’autore dell’articolo.
              e
    La scelta ` ricaduta su Starbust e ASM principalmente per i seguenti motivi:

     e
   • ` disponibile il codice sorgente

                                                  u
   • da un’attenta analisi si sono dimostrati i pi` promettenti

                                                               e
   • il principio di funzionamento alla base dei due algoritmi ` molto diverso

         e                                 e
   Ci si ` concentrati su algoritmi di cui ` disponibile il codice sorgente per non
perdere tutte le piccole ottimizzazioni che l’autore dell’algoritmo ha sicuramente
effettuato durante i test dello stesso e per non incorrere in errori implementativi
che potrebbero portare a risultati molto diversi da quelli esposti nelle analisi degli
autori.

                                          41
                            4 – Algoritmi scelti e implementati


    Si sono scelti algoritmi il cui principio di funzionamento fosse molto diverso, per
                                                     u
cercare di capire quale dei due approcci fosse il pi` performante; infatti ASM utilizza
un modello dell’occhio, mentre Starbust utilizza tecniche peculiari della Computer
Vision per ricercare la pupilla.
                                                                            e
    Oltre a Starbust esiste un altro sistema di eye tracking open source: ` chiamato
               e                               e                              e
openGazer ed ` molto promettente, ma non ` stato possibile provarlo, perch´ utilizza
delle particolari librerie (VXL) che non sono supportate adeguatamente in ambiente
Windows.
                     a
    Di seguito verr` esposta un’approfondita analisi dei due algoritmi scelti: infatti
e                                                                           a
` di fondamentale importanza conoscere il funzionamento e le peculiarit` di questi
algoritmi per poter interpretare i risultati dei test che verranno esposti nel capitolo
5.


4.1      Starbust
                        e
L’algoritmo Startbust ` parte di un sistema di eye tracking low cost chiamato
openEyes e sviluppato alla Iowa State University (3). Questo sistema prevede una
webcam montata su occhiali a cui sono state tolte le lenti (fig. 4.1): in questo modo
l’occhio occupa tutta l’immagine catturata dalla webcam e il movimento della testa
non crea problemi in quanto la posizione relativa tra webcam e occhio non cambia.
    e
Vi ` poi una seconda videocamera che registra la scena osservata dall’utente. Na-
                                e                                             e
turalmente per testarlo non si ` usata questa “struttura”, ma l’algoritmo ` stato
leggermente modificato per funzionare anche con l’immagine completa della testa
(per i dettagli implementativi vedere il paragrafo 3.4.5).

L’algoritmo Starbust analizza un fotogramma per volta e ricerca la posizione
                                      e
della pupilla e il riflesso corneale: `, quindi, un algoritmo di tipo videooculografico
che utilizza il vettore differenza (tra la posizione della pupilla e la posizione riflesso)
per risalire al punto osservato.
    La webcam utilizzata per riprendere l’occhio ha un costo estremamente ridotto
    o                           a                      e            e
e ci` si ripercuote sulla qualit` dell’immagine, perch´ il sensore ` soggetto a rumore:
infatti, prima di elaborare l’immagine, deve essere applicato un filtro gaussiano
per ridurre il rumore di tipo impulsivo e viene applicata una normalizzazione per
                                                     e
eliminare il “rumore a linee” che, probabilmente, ` causato dal circuito di controllo

                                           42
                             4 – Algoritmi scelti e implementati




            Figura 4.1.   Posizionamento della webcam nel sistema openEyes


                e
del sensore che ` troppo lento nel momento in cui deve scandire le linee di pixel del
                                                                                     o
sensore stesso. L’algoritmo non utilizza informazioni sui colori dell’immagine, perci`
le immagini vengono catturate in scala di grigi, in questo modo l’elaborazione risulta
  u               e
pi` veloce, perch´ si ignorano completamente due delle tre componenti cromatiche
dell’immagine.


     Riconoscimento del riflesso corneale Il primo passo effettuato dall’algo-
       e
ritmo ` l’individuazione del riflesso corneale: viene utilizzata una soglia adattativa
                                                  a
basata che ricerca la zona di massima luminosit`. La soglia viene inizializzata con il
massimo valore possibile per produrre un’immagine binaria in cui vengono identifi-
                                                                          a u
cati come appartenenti al riflesso corneale solo i pixel con un’intensit` pi` superiore
alla soglia. Successivamente la soglia viene ridotta e viene calcolato il rapporto l’a-
                                u
rea della regione candidata pi` grande (che presumibilmente rappresenta il riflesso
                                                                                a
corneale) e l’area media delle altre regioni: inizialmente il rapporto crescer`, perch` e
                                    a                   e                         u
l’area del riflesso corneale tender` a crescere (perch` vengono selezionati pi` pixel)
   u
pi` velocemente delle altre aree. Una diminuzione del rapporto indica che l’area dei
                                        o     a
falsi candidati inizia a crescere, perci` verr` utilizzato il valore di soglia che genera
il rapporto ottimale.
                                       a
    Il centro del riflesso corneale verr` semplicemente calcolato come centro geome-
trico dell’area di estensione maggiore.
                                    a
    Il riflesso corneale trovato verr` successivamente rimosso per migliorare la ricerca
della pupilla. Per eliminare il riflesso viene utilizzata una sorta di “interpolazione

                                            43
                            4 – Algoritmi scelti e implementati


                                                    a
radiale”; per prima cosa viene calcolata l’intensit` del pixel che corrisponde al centro
                                        a                                          a
del riflesso: il nuovo valore di intensit` viene ricavato come media delle intensit` dei
                                                                              a
pixel che si trovano sul bordo della regione. Successivamente le intensit` di ogni
pixel dal centro al bordo della regione viene calcolata tramite interpolazione lineare.
               e
In figura 4.2 ` mostrato il risultato dell’eliminazione del riflesso corneale.




     Figura 4.2.   Immagine dell’occhio prima dell’eliminazione del riflesso corneale




 Figura 4.3.   La stessa immagine di figura 4.2 dopo l’eliminazione del riflesso corneale



                                                                e
   Localizzazione della pupilla Per localizzare la pupilla ` stata sviluppata una
tecnica basata sulla localizzazione di particolari caratteristiche (dette feature) che

                                           44
                            4 – Algoritmi scelti e implementati


permette di trovare il contorno della pupilla. La tecnica sviluppata da Dongheng
   e
Li ` molto diversa dall’approccio classico per la ricerca della pupilla. Normalmente
viene utilizzata una tecnica chiamata edge detection che viene applicata all’intera
                                                                        o    o
immagine o ad una zona centrata sulla pupilla: questo approccio, per`, pu` portare
                        a                        e
ad uno spreco di capacit` computazionale, perch´ la pupilla occupa, di solito, un’area
                                   e
molto ridotta dell’immagine e non ` detto che servano tutti i punti del contorno per
poterlo stimare accuratamente.
                       e
    L’approccio di Li ` diviso in due fasi: nella prima si rilevano i bordi (ovvero
le feature cercate) seguendo un limitato numero di raggi che si estendono da un
punto centrale stimato come centro della pupilla (fig. 4.4 a). Nella seconda fase si
aumenta l’accuratezza della stima cercando nuovamente le feature seguendo i raggi
che partono dai primi punti trovati e sono diretti verso il centro stimato (fig. 4.4 b
e c).
                                               e
    La stima iniziale del centro della pupilla ` il centro dell’immagine per il primo fo-
                    e
togramma, mentre ` il centro precedentemente calcolato per i fotogrammi successivi
al primo.
    Successivamente vengono calcolate indipendentemente le derivate lungo gli N
                                                     e
raggi che si estendono dal punto centrale, finch` non viene superata una soglia: sic-
come viene utilizzata la tecnica dark-pupil vengono considerate solamente le derivate
                                  a
positive, ovvero la cui intensit` cresce spostandosi lungo il raggio. Per ogni feature
candidata viene ripetuto il processo di feature-detection appena descritto: ma que-
sta volta si utilizza il raggio di ritorno e la ricerca viene limitata su un angolo di 50◦
                               a
per diminuire la complessit` computazionale e per evitare di aggiungere feature che
si trovino dalla parte esterna alla pupilla.
                                                                                    o
    Successivamente i punti trovati vengono interpolati per ricavare un’ellisse: per`
i piccoli errori compiuti nella rilevazione dei punti possono indurre un grossolano
                                 o
errore nell’interpolazione, perci` il processo a due stadi descritto precedentemente
viene ripetuto. Per ogni iterazione viene utilizzato come punto di partenza il ba-
ricentro di tutti i punti rilevati nel passo precedente e il processo viene ripetuto
     e                                          e
finch` la posizione del centro rimane pressoch` costante. Il risultato della seconda
                          e
iterazione dell’algoritmo ` visibile in figura 4.4 e; osservando la posizione dei punti
                                      o
di partenza ad ogni iterazione, si pu` notare come l’algoritmo converga velocemente
alla posizione finale (4.4 f).

                                           45
                             4 – Algoritmi scelti e implementati




 Figura 4.4.   Ricerca punti caratteristici della pupilla utilizzando l’algoritmo Starbust



    Ellisse interpolante Durante la localizzazione della pupilla, come si ` vi- e
sto nel paragrafo precedente, i punti caratteristici vengono interpolati per ricavare
un’ellisse. Per effettuare questa interpolazione si potrebbe utilizzare un metodo ai
minimi quadrati, ma un errore presente nello stadio di localizzazione delle feature
influenzerebbe pesantemente l’accuratezza dell’interpolazione.

                                    u
   Per ottenere un’interpolazione pi` precisa viene utilizzato il metodo denominato
Random Sample Consensus (RANSAC): questo metodo viene spesso utilizzato in

                                            46
                            4 – Algoritmi scelti e implementati


Computer Vision per adattare un modello ad una serie di dati ricavati sperimen-
talmente; questi dati sono rappresentati come punti e di questi punti alcuni sono
                      e
corretti, mentre vi ` una percentuale sconosciuta di punti errati.
    Nel caso in esame i punti corretti sono quelli appartenenti al contorno della pu-
pilla, quelli errati sono quelli esterni al bordo della pupilla. Il metodo dei minimi
quadrati utilizzerebbe tutti i punti disponibili, in quanto ipotizza che tutti i cam-
pioni siano corretti e siano soggetti solo ad un errore di misura. RANSAC, invece,
                        a                                 o
ammette la possibilit` che esistano punti errati, perci` utilizza un sottoinsieme dei
dati disponibili per adattare il modello.
                          e
    In pratica RANSAC ` una procedura iterativa che seleziona a caso molti piccoli
sottoinsiemi dei dati di partenza, utilizza questi sottoinsiemi per deformare il mo-
dello e, tra questi modelli, trova il modello che si adatta meglio all’intero insieme
                                        e
dei dati. Dai test effettuati da Li si ` ricavato che, mediamente, il 17% dei punti `e
              oe
errato; perci` ` stato introdotto un ulteriore passaggio dell’algoritmo che cerca mi-
gliorare la corrispondenza tra l’ellisse interpolata e l’immagine, in modo da ridurre
l’errore.
   Per migliorare la corrispondenza dell’ellisse interpolato con l’immagine analizzata
viene utilizzata una ricerca basata su un modello locale (fig. 4.5): in questo caso non
        u
viene pi` utilizzato una ricerca basata su feature, ma viene utilizzata una ricerca
non lineare chiamata Nelder-Mead. In pratica si cercano i parametri dell’ellisse
minimizzando

                                  I(a + δ,b + δ,α,x,y,θ),δθ
                             −
                                  I(a − δ,b − δ,α,x,y,θ),δθ
                            e           a
dove δ = 1 e I(a,b,α,x,y,θ) ` l’intensit` del pixel all’angolo θ sul contorno dell’ellisse
                                                e                      e
definito dai parametri a, b, x, y e α, dove a ` l’asse maggiore, b ` l’asse minore, il
            e               e
punto (x,y) ` il centro e α ` l’orientamento.


    Calibrazione Per risalire al punto osservato si deve effettuare una mappatura
tra la posizione dell’occhio in coordinate relative all’immagine dell’occhio e le coor-
                                                                              o
dinate relative all’immagine della scena. Per definire la mappatura si pu` cercare
la relazione tra le posizioni dell’occhio e le corrispondenti posizioni dell’immagine
osservata: per fare questo occorre una procedura di calibrazione.
   Durante la fase di calibrazione l’utente deve osservare una griglia di punti la cui

                                           47
                           4 – Algoritmi scelti e implementati




      Figura 4.5. La figura mostra l’ellisse risultante dopo aver applicato all’im-
      magine l’algoritmo Starbust


                                      e
posizione nell’immagine della scena ` nota: durante la fissazione di ogni punto del-
la griglia viene registrata la posizione dell’occhio. Viene successivamente stabilita
una corrispondenza tra i due insiemi usando una mappatura polinomiale: in que-
sto modo, durante l’utilizzo del sistema, la posizione della pupilla viene facilmente
trasformata in una posizione sullo spazio dell’immagine osservata.

    Risultati Secondo i test effettuati dal gruppo di ricerca di Li l’errore totale
              e                e
di openEyes ` di circa 1◦ , ed ` accettabile per applicazioni di eye tracking domesti-
che: questo errore aumenta di molto se il sistema non viene utilizzato nelle stesse
                  e                              e                      a
condizioni in cui ` stato calibrato (ad esempio ` variata la luminosit` ambientale).
                e
    Il problema ` dovuto al fatto che la seconda telecamera (che riprende la scena)
     e                                                          o
non ` nello stesso cammino ottico dell’occhio tracciato, perci` l’errore di parallasse
tra la webcam che riprende l’occhio e la videocamera che riprende la scena introduce
un errore di tracciamento.
    L’errore potrebbe essere ulteriormente ridotto semplicemente montando la tele-
camera di scena direttamente davanti all’occhio, ma in questo modo si avrebbe la
visuale completamente occlusa.


4.1.1    Adattamenti
                e
L’algoritmo non ` concepito per lavorare sull’immagine del volto, ma solo sull’im-
                                            e    o                    o e
magine ravvicinata dell’occhio. L’algoritmo ` per` molto veloce, perci` si ` pensato

                                          48
                              4 – Algoritmi scelti e implementati


di adattarlo per lavorare su con l’immagine completa del volto dell’utente. La libre-
ria openCV (app. A.3) ` corredata di una funzione (8) molto performante 1 per il
                          e
tracciamento del volto attraverso un classificatore Haar (vedi appendice A.4): per-
  o
ci` l’immagine catturata dalla webcam non viene passata direttamente all’algoritmo
Starbust, ma viene prima analizzata dalla funzione di face tracking.
    La funzione di face tracking ha come output un’ellisse inscritta sul volto del-
l’utente; le coordinate di questa ellisse vengono utilizzate per ritagliare un’area
dell’immagine centrata sull’occhio sinistro2 .
                    ı
    L’immagine cos` ritagliata viene poi analizzata utilizzando le funzioni scritte in
                                        e
linguaggio C del progetto openEyes: ` stato eliminato il filtro che si occupava di
ridurre il “rumore a linee” in quanto le webcam di recente fabbricazione non presen-
        u                   e
tano pi` questo problema; ` stata inoltre introdotta un’interfaccia di configurazione
che permette di modificare agevolmente i seguenti parametri:

   • canale utilizzato: le webcam forniscono in output un’immagine a colori;
                           o
     questa immagine pu` essere convertita in scala di grigi utilizzando uno dei tre
                                                          e
     canali RGB. Dalle prove effettuate il canale rosso ` risultato il migliore (i sen-
     sori CCD utilizzati dalle fotocamere, per come sono costruiti, risultano molto
       u
     pi` sensibili alle frequenze vicine all’infrarosso): utilizzando il canale rosso,
                                                        u
     infatti, l’immagine risultante ha un contrasto pi` elevato rispetto all’immagi-
                                                                     e
     ne ottenuta utilizzando il canale verde o blu. Il canale blu ` risultato il pi` u
                               o          a
     sensibile al rumore, perci` non verr` utilizzato per i test

                          e                                          e
   • numero di raggi: ` un parametro molto importante, perch` influenza la pre-
                             e
     cisione dell’algoritmo; ` utilizzato durante la ricerca della pupilla per stabilire
     quanti raggi seguire per calcolare la derivata e ricercare le feature volute

   • numero punti caratteristici: indica il numero di punti caratteristici, ovvero
     il numero di feature, da utilizzare per interpolare l’ellisse che rappresenta la
     pupilla cercata

   • dimensione massima del riflesso corneale: la dimensione del riflesso pre-
                        e                            a
     sente sulla cornea ` in relazione alla luminosit` ambientale e alla distanza
  1
    Qualche decina di millisecondi per elaborare un’immagine con risoluzione 640x480
  2
                                          e          e
    Viene ritagliato solo un occhio perch` Starbust ` pensato per lavorare sull’immagine di un
occhio solo

                                             49
                          4 – Algoritmi scelti e implementati


                               e
     dell’utente dalla webcam, ` quindi molto importante stabilire la dimensione
     massima per non incorrere in grossolani errori

                                                        e
   • livello della soglia: anche questo parametro ` molto importante, perch`        e
                                                 a
     permette di alterare il livello di luminosit` che deve avere un pixel per essere
     considerato parte del riflesso corneale

                                                 e
   • filtro smooth: utilizzato se l’immagine ` troppo rumorosa, appiattisce il
                                             a
     contrasto mediando il valore di intensit` dei pixel adiacenti (cap. A.5.1)

   • filtro sharpening: utilizzato quando l’immagine presenta un contrasto trop-
                                         u
     po basso, in questo modo si rende pi` visibile il riflesso corneale (cap. A.5.2)

                  o
   L’algoritmo pu` comunque essere utilizzato su tutta l’immagine (senza utiliz-
                                      e
zare il tracciamento del volto), perch` avendo a disposizione una telecamera per
                                       e
videoconferenza dotata di zoom 12x si ` ritenuto opportuno testare l’algoritmo an-
                                                                             e
che con un’immagine ravvicinata dell’occhio, ovvero nelle condizioni per cui ` stato
progettato.




                                         50
                           4 – Algoritmi scelti e implementati


4.2     Active Shape Model
                     e
Active Shape Model ` un generico algoritmo di ricerca forme descritto per la pri-
ma volta nel 1992 da Cootes et al. (2): pur non essendo un algoritmo pensato
                                         e
specificatamente per tracciare gli occhi, ` abbastanza generico da poter essere adat-
                                                            a
tato a questo utilizzo. Per testare questo algoritmo verr` utilizzata la versione
implementata dall’ing. Castellina (1).


                                     e
L’algoritmo L’obiettivo di ASM ` ricercare forme conosciute all’interno di un’im-
                                                        oe
magine: utilizza modelli flessibili e deformabili, perci` ` adatto a cercare oggetti il
               o                                                                 e
cui aspetto pu` variare, come, ad esempio, gli occhi. Infatti la forma degli non ` mai
                                                  ee
constante da un fotogramma al successivo, perch` ` influenzata da molti parametri:
l’apertura delle palpebre, la posizione della pupilla, la rotazione della testa; anche
le espressioni del volto possono influenzare molto la forma degli occhi.
    ASM si basa su un modello parametrico, che viene deformato e traslato sul
                                               u
fotogramma in esame in modo da renderlo pi` affine all’immagine in esame. Il
                  o                             o
modello deve per` essere costruito, viene perci` utilizzato un training set con il
       e
quale ` possibile ricavare i parametri del modello adatto al filmato che si vuole
analizzare. Per creare il modello di un oggetto si dispongono una serie di punti
                                                       a
sull’immagine dell’oggetto stesso: di questi punti verr` analizzata la statistica e
verranno determinati i parametri propri del modello.


                                                         e
Training set Per determinare i parametri del modello ` opportuno utilizzare una
serie di immagini: se si creasse il modello basandosi su un solo fotogramma non
si avrebbe un modello abbastanza generico per potersi adattare ai cambiamenti di
                         o
forma dell’oggetto. Perci` viene creato per prima cosa un training set composto
da alcune immagini catturate dal filmato in esame: su ognuna di queste immagini
verranno posizionati dei punti, chiamati picchetti, che sono in numero variabile e
dipendono dal modello che si sta utilizzando.
   I picchetti possono possono appartenere al contorno dell’oggetto (ad esempio le
palpebre) o a caratteristiche interne dell’oggetto (come la pupilla, vedere per un
esempio la figura 4.6); il posizionamento dei punti avviene manualmente e viene
effettuato allo stesso modo per ogni immagine.
   Successivamente si passa al calcolo della statistica dei punti, ma, prima, l’insieme

                                          51
                            4 – Algoritmi scelti e implementati


dei punti deve essere allineato per minimizzare la varianza della distanza tra i punti
corrispondenti di immagini diverse.
    L’allineamento del training set avviene analizzando le statistiche relative alle
coordinate dei picchetti: i picchetti vengono allineati rispetto ad un insieme di assi
attraverso scalamenti, rotazioni e traslazioni delle forme presenti nel training set che
hanno lo scopo di minimizzare la somma pesata dei quadrati delle distanze fra punti
equivalenti di forme differenti. Per allineare N forme si procede in questo modo:

   • Si ruota, trasla, scala ogni forma per allinearla con la prima

          e
   • Finch` il processo non converge:

        – Si calcola la forma media delle forme allineate
        – Si normalizza l’orientamento, la scala e l’origine della forma media cal-
          colata precedentemente per riportarla a caratteristiche predefinite e per
          garantire la convergenza dell’algoritmo
        – Si riallinea ogni forma dell’insieme con la forma media corrente




        Figura 4.6. Un’immagine del training set (8 picchetti) utilizzato per
        riconoscere l’occhio



Costruzione del modello Analizzando la statistica della posizione dei punti vie-
ne ricavato un modello della distribuzione dei punti che fornisce la posizione media
                                                                      a
dei punti e comprende alcuni parametri che controllano le modalit` di variazione
riscontrate nel training set.

                                           52
                             4 – Algoritmi scelti e implementati


    Se si sovrappongono le coordinate delle forme allineate alla forma media si pu`       o
                                                        a
notare che alcuni vertici hanno una bassa variabilit` nel training set, mentre altri
                                                                                 o
formano “nuvole” piuttosto diffuse. Per analizzare questa statistica si pu` rappre-
sentare ogni campione del training set (una volta allineato) come un singolo punto
                                       o
in uno spazio 2n dimensionale; perci` un’insieme di N punti forma una nuvola di
N punti in uno spazio 2n dimensionale. Supponiamo che questi punti si trovino
in una regione dello spazio denominata “dominio delle forme possibile” e che diano
un’indicazione sulla forma e dimensione di questa regione. Muovendosi nel “dominio
delle forme possibile” si possono generare sistematicamente nuove forme. Successi-
vamente si cerca di modellare la forma della nuvola di distribuzione dei punti in uno
                                              o
spazio ad elevata dimensione, si cerca, perci`, di stabilire la relazione tra le posizioni
dei singoli picchetti.
    Si assume che la nuvola sia di forma ellissoidale, se ne calcola il centro e i suoi assi
maggiori, che danno un modo per muoversi all’interno di essa. Ogni asse dell’elissoide
                       a                    e
controlla una modalit` di variazione, cio` un modo con cui i picchetti tendono a
muoversi assieme al variare della forma. Questo approccio permette di generare
nuove forme, ma molto simili a quelle del training set.

Analisi dell’immagine Dato il modello e l’immagine da analizzare vengono ri-
cercati i valori dei parametri tali da massimizzare la corrispondenza del modello
con l’oggetto presente nell’immagine. ASM, quindi, parte da un modello non molto
               o
preciso per ci` che riguarda posizione, orientamento, scala e forma; questo model-
lo viene poi raffinato iterativamente confrontandolo con l’immagine in cui si cerca
l’oggetto.
    Per ricercare la corrispondenza viene utilizzato un metodo iterativo che permette
di trovare una forma adeguata partendo da un’approssimazione iniziale molto poco
                                                                              e
accurata. In pratica si ripetono i seguenti passaggi di deformazione finch` non si
              u
ottengono pi` cambiamenti significativi nella disposizione dei punti:

   • calcolo dello spostamento indicato per ogni punto del modello: data
     una stima iniziale delle posizioni dei punti del modello che si sta cercando di
     adattare all’immagine, si vuole trovare un insieme di aggiustamenti che sposti-
     no ogni punto in una posizione migliore; se, per esempio, il modello rappresenta
                                                          a
     i contorni dell’oggetto, questa procedura comporter` lo spostamento dei punti
     lungo i bordi dell’immagine

                                            53
                            4 – Algoritmi scelti e implementati


   • calcolo dei cambiamenti nella posizione e nei parametri della forma:
     si modificano la posizione e i parametri della forma del modello per avvicinare,
              u
     quanto pi` possibile, i punti del modello alle nuove posizioni indicate

   • aggiornamento della posizione e dei parametri della forma: il modello
     viene modificando e deformato applicando le variazioni appena calcolate ai
     parametri che controllano il posizionamento e la forma dello stesso

    L’articolo di Cootes (2) non spiega come implementare lo spostamento e la de-
formazione della forma del modello, in quanto l’articolo tratta l’algoritmo dal punto
                                                  a
di vista generale e lascia libero chi implementer` l’algoritmo di adattarlo ad un caso
specifico.
    In questo caso si ha ha disposizione in ingresso un’immagine a colori, quindi `     e
                                                                       a
possibile utilizzare non solo le informazioni relative alla luminosit` e al contrasto,
ma anche le informazioni che si possono ricavare dall’analisi dei colori o di pattern
di colori presenti nell’immagine.
                                                 e
    La soluzione adottata dall’Ing. Castellina ` la seguente consiste proprio nell’as-
sociare al modello le informazioni sui colori: 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 alla
direzione del contorno dell’oggetto. Viene in seguito calcolata una “matrice asso-
ciativa” che contiene tutte le matrici dei gradienti di ogni picchetto di ogni forma
relazionata al valore dei pesi dei parametri che deformano il modello.
    L’aggiornamento dei parametri che determinano la posizione e la deformazione
avviene in questo modo: si considera l’intorno dei punti dell’immagine su cui `         e
applicato il modello e si cerca di minimizzare la differenza tra questi punti e le matrici
dei gradienti di colore (memorizzate all’interno della “matrice associativa”). Questa
                                               a              e          a
procedura di aggiornamento parametri verr` iterata finch` non verr` raggiunta la
soglia di precisione desiderata.


4.2.1     Adattamenti
Gli adattamente all’algoritmo sono stati minimi in quanto l’implementazione dell’al-
        e
goritmo ` abbastanza generica da poter essere utilizzata per tracciare qualsiasi tipo
di forma e non vi sono parametri configurabili direttamente, in quanto l’algoritmo ` e

                                           54
                            4 – Algoritmi scelti e implementati


controllato completamente dal modello utilizzato; naturalmente sono state effettua-
te delle modifiche per integrare il codice esistente con l’ambiente di test sviluppato
per questa tesi (cap. 3.4.6).
                                 e
    Il cambiamento principale ` stato l’utilizzo di un nuovo modello: infatti per
l’ambiente Sandra era stato creato un modello dell’occhio con 16 picchetti posizionati
come in figura 4.7. Questa disposizione permette di avere una grande accuratezza
nel tracciamento dell’occhio, ma l’elevato numero di punti causa un’elevato tempo di
elaborazione. Inoltre, essendo i punti disposti sul contorno dell’occhio, il modello non
                                                           o e
tiene conto dei movimenti della pupilla (fig. 4.8). Perci` si ` pensato di utilizzare
un modello (fig. 4.6) che abbia quattro punti sull’occhio, per facilitare la ricerca
nell’immagine, e quattro punti posizionati sul limbo, ovvero il bordo dell’iride (fig.
4.9); in questo modo si ha una certa accuratezza nel tracciare la pupilla, ma si
                           a
aumenta anche la velocit` di elaborazione utilizzando un modello con la met` dei   a
punti.
                          e
    L’algoritmo, di per s´, non fornisce come output una posizione relativa all’im-
magine, ma fornisce il modello deformato che meglio si adatta al fotogramma in
                         o e
analisi. Il modello, per`, ` formato da un insieme di punti che hanno coordinate
                             o                                               o
relative all’immagine, perci` calcolando il baricentro di questi punti si pu` avere una
posizione stimata della pupilla.




                   Figura 4.7.   Modello dell’occhio con 16 picchetti




                                           55
                          4 – Algoritmi scelti e implementati




                                            o
Figura 4.8. Modello con 16 picchetti: si pu` notare che il baricentro (in giallo) non
                                          e              e
corrisponde al centro della pupilla, perch` quest’ultima ` spostata verso sinistra




Figura 4.9. Modello con 8 picchetti: in questo caso il baricentro dei picchetti (in
giallo) corrisponde alla pupilla anche se non si trova al centro dell’occhio




                                         56
Capitolo 5

Test

5.1     Introduzione
Per effettuare i test sono stati realizzati numerosi filmati ripresi in condizioni di
luce ambientale differente. Le fotocamere utilizzate sono state posizionate sulla
parte inferiore del monitor per avere la miglior visuale possibile sull’occhio e non
interferire con il normale utilizzo del computer.
    I filmati sono stati realizzati sia riprendendo l’intero viso, sia riprendendo solo
                                                                           e
l’occhio: con la videocamera e la fotocamera, dotate di zoom, non c’` stato pro-
                            e
blema; mentre la webcam ` stata posizionata su un piedistallo: naturalmente non
   o
pu` corrispondere ad un reale utilizzo, in quanto occludeva parzialmente la vista
                 e
del monitor. Si ` comunque ritenuto opportuno realizzare filmati dell’occhio an-
che con la webcam, per valutare se eventuali miglioramenti potessero giustificare il
posizionamento della webcam sugli occhiali.
                                  e
    Il modello di webcam scelto ` un modello con caratteristiche medie e ha un
costo estremamente ridotto, circa 20 e; un’attenta analisi dei modelli sul mercato
ha permesso di stabilire che le prestazioni sono molto simili a modelli che costano
                                   e
sino a 80 e, ma la cui risoluzione ` sempre di 640x480 pixel ovvero 0.3 Mpixel.
    Anche la fotocamera ha una risoluzione massima (per i filmati) di 640x480 pixel,
               e           u
ma il sensore ` molto pi` raffinato (6 Mpixel) e, in combinazione all’utilizzo di
                                                                        a u
un’ottica superiore a quella di una webcam, permette di avere una qualit` pi` elevata
                        e
dell’immagine. Inoltre ` disponibile uno zoom ottico di 4x. Naturalmente il costo ` e
                                           e
maggiore rispetto alla webcam, in quanto ` di circa 300 e.

                                         57
                                       5 – Test


                                          e
    La telecamera per videoconferenza ` una telecamera analogica con zoom 12x, `      e
            o
stata perci` collegata ad una periferica di acquisizione video con risoluzione massima
                           a                e
di 640x480 pixel, la qualit` dell’immagine ` superiore alla fotocamera in quanto l’ob-
biettivo (di dimensioni maggiori rispetto alla fotocamera) permette di convogliare
                                      a                   e
sul sensore una maggiore di quantit` di luce. Il costo ` di circa 800 e.
    I test effettuati hanno lo scopo di testare gli algoritmi per poter valutarne ogget-
tivamente le prestazioni; entrambi gli algoritmi sono pensati per tracciare un solo
              o                              e
occhio, perci` per valutare la precisione si ` considerata solamente la posizione della
                       a e
pupilla (per semplicit` si ` utilizzata sempre la pupilla sinistra).


5.1.1     Parametri di riferimento
                                 e
Per effettuare dei test oggettivi ` necessario utilizzare due parametri di riferimento
definiti a priori; in questo caso verranno utilizzate come riferimento le seguenti
grandezze:

   • il tempo medio di elaborazione dei fotogrammi

   • la distanza media dal centro normalizzata

   • la percentuale di hit

                                      e
    Il tempo medio di elaborazione ` di notevole importanza, infatti influenza diret-
                      a
tamente la reattivit` di un sistema di eye tracking. Se il sistema di eye tracking
                                                         e
si basa sulla fissazione di alcune aree sullo schermo ` tollerabile anche un piccolo
ritardo di tracciamento, ma se il sistema viene utilizzato per controllare diretta-
                                           e
mente il cursore presente sullo schermo ` imporante che l’utente abbia un riscontro
immediato dal sistema.
                                    e                        o
    La distanza media dal centro ` una grandezza che pu` dare una stima della va-
rianza dell’errore di tracciamento della pupilla. Inoltre, considerando separatamente
                                                o
gli errori sull’asse orizzontale e verticale, pu` essere utilizzata per notare un’even-
tuale polarizzazione dell’algoritmo di eye tracking. La distanza viene normalizzata
per il raggio della pupilla, in modo da avere una grandezza confrontabile tra filmati
diversi: infatti l’apertura della pupilla (quindi la sua dimensione) varia al variare
                 a                          a
della luminosit` ambientale e dall’attivit` visiva svolta.

                                         58
                                          5 – Test


                                                                                 e
    La percentuale di hit rappresenta il numero di volte che il centro calcolato `
                        o
interno alla pupilla; ci` permette di avere un ulteriore metro di paragone tra gli
                                                   o
algoritmi, in quanto una distanza media alta pu` essere causata da alcuni errori
                                                             e u
grossolani, mentre nei restanti fotogrammi l’errore effettivo ` pi` basso.



5.2      Test effettuati su Starbust
                                                                o
Vi sono numerosi parametri configurabili in Starbust, perci` sono stati condotti
dapprima alcuni test per stabilire il valore ottimale dei parametri e, successivamente,
dei test per analizzare in generale l’algoritmo.



5.2.1     Parametri ottimali
                                                 e
La ricerca dei valori ottimali dei parametri non ` facile in quanto i parametri sono
correlati tra loro; inoltre alcuni parametri dipendono strettamente dal filmato in
              e                                a
esame, perch´ sono influenzati dalla luminosit` e dal contrasto dell’immagine.
   Nei paragrafi seguenti verranno analizzati in dettaglio i risultati dei test effettuati
per ogni parametro.


Numero di raggi Questo parametro controlla il numero di raggi da utilizzare per
                                                                             a
l’interpolazione radiale: in pratica pesa molto sulla precisione e la velocit` dell’al-
               e
goritmo, perch´ influisce direttamente sul numero di volte che deve essere calcolata
                                                a                        o
la derivata che esprime il gradiente di intensit` del colore. Come si pu` notare dai
grafici in figura 5.1 e 5.2 le prestazioni migliori si ottengo con un numero di raggi
                                      e
pari a 60, infatti la distanza media ` la minore e il tempo di elaborazione non `     e
troppo elevato.
          o
    Si pu` anche notare che all’aumentare del numero dei raggi, il tempo di elabora-
zione aumenta quasi esponenzialmente, ma la precisione rimane pressoch` costante:e
          e                                                     o
la causa ` da ricercarsi nel fatto che le direzioni in cui si pu` calcolare la derivata sono
                                          e
teoricamente infinite, ma l’immagine ` discreta, in quanto formata da pixel, perci`         o
                                                                               a
se si utilizza un numero troppo elevato di step, in molti di questi verr` calcolata la
                                                    a
derivata dello stesso pixel e, quindi, non si avr` un aumento dalle prestazioni.

                                            59
                                     5 – Test




Figura 5.1. Andamento della precisione e del tempo di elaborazione all’aumentare
del numero di raggi utilizzati per analizzare un filmato che riprende l’intero volto




    Figura 5.2. Andamento della precisione e del tempo di elaborazione al-
    l’aumentare del numero di raggi utilizzati per analizzare un filmato che
    riprende solamente l’occhio




                                       60
                                       5 – Test


Dimensione riflesso corneale Dai test effettuati risulta che la dimensione massi-
ma del riflesso corneale non influenza la ricerca della pupilla se la telecamera riprende
l’intero volto (fig. 5.3); se, invece, viene ripreso l’occhio la dimensione massima de-
ve essere adeguatamente calibrata sul filmato in esame: come si nota in fig. 5.4
                         e u
l’escursione dell’errore ` pi` marcata.




        Figura 5.3. Influenza della dimensione del riflesso corneale su un’imma-
        gine del volto intero



                                                                         e
Numero di punti caratteristici Questo parametro controlla qual’` il numero di
                                                                     e
punti da utilizzare per interpolare l’ellisse. Dai test effettuati si ` dedotto che per
la maggior parte dei filmati il numero di punti caratteristici che minimizza l’errore
e
` 5 (fig. 5.5 e 5.6), ma in alcuni casi (come in figura 5.7) le prestazioni migliori si
                                     o
raggiungono con 15 punti. Perci`, per avere buone prestazioni nella maggior parte
             e
dei casi, si ` scelto di utilizzare 10 punti caratteristici.




                                         61
                                        5 – Test




Figura 5.4.   Influenza della dimensione del riflesso corneale su un’immagine dell’occhio




  Figura 5.5. Influenza del numero di feature utilizzate per l’interpolazione dell’el-
  lisse nel caso di un filmato che riprende solamente l’occhio



                                          62
                                     5 – Test




Figura 5.6. Influenza del numero di feature utilizzate per l’interpolazione dell’el-
                                                                        a
lisse nel caso di un filmato del volto, in condizioni di scarsa luminosit`




Figura 5.7. Influenza del numero di feature utilizzate per l’interpolazione dell’el-
                                                                        a
lisse nel caso di un filmato del volto, in condizioni di ottima luminosit`



                                       63
                                         5 – Test


                                                             u
Livello della soglia Questo parametro presenta la pi` alta variazione tra tutti
                                       e
i parametri di Starbust, in quanto ` strettamente correlato al filmato analizzato:
                  a                                                 e
infatti l’intensit` dei pixel che fanno parte del riflesso corneale ` molto variabile, in
         e
quanto ` influenzata non solo dalla luce ambientale, ma anche dalla variazione della
posizione dell’utente rispetto alle fonti di luce.
                                          a
    Nel caso di un filmato di alta qualit` e con buona illuminazione (fig. 5.8) si pu`   o
notare come la variazione della soglia praticamente non influisca sull’errore. Mentre
                                          u
nel caso di filmati con illuminazione pi` scarsa (fig. 5.9 e 5.10) la variazione della
soglia causa una grande variazione all’errore.
       e       o
    Si ` perci` scelto di utilizzare un livello di soglia pari a 10, che corrisponde ad
                                                                  e
un errore minimo nella maggior parte dei casi, anche se non ` il valore ottimo per
tutti i filmati.




                                                                       a
   Figura 5.8. In condizioni di buona illuminazione e alta qualit` del filmato, la
   variazione del livello di soglia causa una variazione dell’errore medio molto ridotta




                                           64
                                  5 – Test




                                                                 u
Figura 5.9. Utilizzando un filmato con illuminazione ambientale pi` bassa, la
variazione della soglia influisce sull’errore




                                                   a           a
Figura 5.10. Utilizzando un filmato di bassa qualit` e luminosit` (webcam) la
variazione della soglia influisce molto sull’errore


                                    65
                                         5 – Test


                                       e                           e
Canale Dei tre canali RGB di cui ` composta un’immagine si ` subito scartato
il canale blu, in quanto presenta un rumore molto elevato, specialmente utilizzando
                                 a
una webcam: infatti le modalit` di costruzione dei sensori CCD portano il senso-
re ad avere una risposta migliore a frequenze vicine all’infrarosso e, visto il costo
                                                                        o
ridotto delle webcam, vengono utilizzati sensori molto rumorosi; perci` la risposta
del sensore a frequenze vicine al blu viene coperta dal disturbo.
                                                                              o
    Analizzando l’istogramma dei tre canali RGB della stessa immagine si pu` avere
                                                        u
una conferma quantitativa del fatto che il contrasto pi` elevato si ha utilizzando il
canale rosso.
       e
    Si ` misurata la risposta di Starbust al variare del canale: i dati sperimentali
hanno confermato l’ipotesi che l’algoritmo ha prestazioni migliori col canale rosso,
      e              e u
perch´ il contrasto ` pi` elevato; infatti analizzando filmati utilizzando il canale
rosso si ha un errore medio di 1,54 contro un errore medio di 1,79 che si ottiene
utilizzando il canale verde.


5.2.2     Prestazioni globali dell’algoritmo
Per misurare le prestazioni globali dell’algoritmo sono stati utilizzati numerosi fil-
          e                                       e
mati e si ` effettuata un’analisi separata per cio` che riguarda il tipo di telecamera
utilizzata.
    Un’analisi preliminare porta a concludere che i risultati migliori si ottengono con
                                                          a                  e
la telecamera per videoconferenza, in quanto la qualit` dell’immagine ` superiore
      e
perch` vengono utilizzate un’ottica e un sensore d’immagini migliori. L’ipotesi `     e
stata confermata dai risultati dei test che sono riassunti nella tabella 5.1.

      Tipologia           Distanza           Tempo medio         Percentuale di
      fotocamera          media              elaborazione        hit
                          normalizzata       (ms)
      webcam              1,83               22,43               34,75
      fotocamera          1,39               30,6                41,33
      videoconferenza     1,20               36                  43,5

                      Tabella 5.1.   Prestazioni globali di Starbust


                               o
   Analizzando la tabella si pu` notare come i risultati peggiori siano ottenuti utiliz-
zando la webcam, mentre utilizzando la telecamera per videconferenza si minimizza

                                           66
                                      5 – Test


l’errore medio e si massimizza la percentuale di hit. Utilizzando la fotocamera, in-
vece, si hanno risultati paragonabili alla telecamera per videoconferenza: infatti la
                 e
distanza media ` di poco superiore (rispetto alla distanza media ottenuta con la
                                 e                u
webcam) e la percentuale di hit ` solo del 2% pi` bassa; inoltre il tempo medio di
              e                     o
elaborazione ` inferiore di 6 ms, ci` permette di elaborare un filmato alla velocit` a
                                    e
(teorica) di 32 fotogrammi/s anzich` 27 fotogrammi/s.




                                        67
                                         5 – Test


5.3      Test effettuati su ASM
Gli unici parametri modificabili direttamente di ASM controllano la dimensione della
                                                          e
matrice dei colori relativa ad ogni picchetto: la matrice ` centrata sul picchetto e se
      o
ne pu` controllare la lunghezza della base, il limite superiore e quello inferiore.
                                   e
    L’influenza di questi parametri ` comunque limitata, in quanto il comportamento
                       e
globale dell’algoritmo ` influenzato pesantemente dal modello: un errore, anche
                                         o
minimo, nella creazione del modello pu` portare ad un errore molto elevato nel
rilevamento della pupilla.


5.3.1     Effetti della variazione dei parametri
                                                                             o
Aumentare la precisione di ASM modificando i parametri preimpostati pu` portare
                                                         a
ad un incremento della precisione a scapito della velocit` di elaborazione. Alcuni test
                                             o
hanno permesso di appurare che l’errore pu` essere ridotto di molto (sino a quattro
volte), ma il tempo di elaborazione aumenta notevolmente. Vedremo in seguito
                                     o
come la modifica dei parametri pu` essere evitata ricreando il modello utilizzato:
in questo modo si ottengo prestazioni migliori senza aumentare di molto il tempo
                                  e
di elaborazione. In tabella 5.2 ` stato effettuato il confronto tra le prestazioni
utilizzando i parametri di default e i parametri modificati (*).

        Tipologia             Distanza   media      Tempo medio elabora-
                              normalizzata          zione (ms)
        occhio                2,82                  53
        occhio (*)            0,86                  74
        occhio (*)            0,50                  98
        figura intera          2,06                  52
        figura intera (*)      0,95                  75

               Tabella 5.2.   Effetti della variazione dei parametri di ASM




5.3.2     Effetti della variazione del modello
Il modello utilizzato influenza pesantemente la precisione dell’algoritmo; per avere
un’idea di quanto ampia sia questa influenza si osservi la tabella 5.3 in cui vi sono

                                           68
                                          5 – Test


confrontati la distanza media e il tempo di elaborazione per un modello preciso e
uno impreciso (*).

       Tipologia            Distanza   media          Tempo medio elabora-
                            normalizzata              zione (ms)
       occhio               0,51                      49
       occhio (*)           2,66                      54
       figura intera         0,70                      50
       figura intera (*)     1,90                      50

           Tabella 5.3.   Effetti della variazio del modello utilizzato da ASM

    Nel caso di un filmato dell’occhio l’errore che si ottiene utilizzando un modello
       e                                                                             o
errato ` circa cinque volte l’errore di un modello corretto. Per modello errato, per`,
non si intende un modello completamente incompatibile con il filmato (in questo
caso si avrebbe anche un peggioramento del tempo medio di elaborazione), ma un
modello non molto accurato: se, ad esempio, i picchetti sono stati disposti male, il
                                                  a
baricentro degli 8 picchetti del modello non sar` mai vicino al centro della pupilla,
anche se l’algoritmo riconoscesse adeguatamente la posizione dell’occhio.
                                                  o                            o
    Una misura di quanto un modello errato pu` influire sulla precisione pu` essere
effettuata tenendo conto della varianza e del valor medio dell’errore. Nella tabella
5.4 si possono osservare le variazioni nelle statistiche tra il modello errato e quello
  u
pi` accurato.
         Distanza me-         Varianza Varianza Valor                   Valor
         dia normaliz-        X        Y        medio X                 medio Y
         zata
         2,8                  8,56          14,27         1,26          2,22
         0,86                 0,63          0,92          -0,7          0,48

        Tabella 5.4.   Variazione della statistica al variare del modello utilizzato

                        o                                         e
   In effetti ci si pu` rendere conto che il secondo modello ` migliore semplice-
mente osservando le figure 5.11 e 5.12 che rappresentano la stima della funzione di
           a
probabilit` dell’errore medio.
   I grafici in figura 5.13 e 5.14 mostrano la distribuzione dell’errore in uno spazio
                                                              a
bidimensionale: si nota come i valori di massima probabilit` siano centrati nell’ori-
                                                                o
gine degli assi; nel caso del modello poco accurato, vi sono per` dei picchi secondari:

                                            69
                                                       5 – Test


                             e
la presenza di questi picchi ` spiegata dal fatto che l’algoritmo tende a fissarsi su
zone esterne all’occhio che presentano un alto contrasto (come le sopracciglia).



          0.8                                                 1.0


                                                              0.9
          0.7

                                                              0.8
          0.6
                                                              0.7

          0.5
                                                              0.6


          0.4                                                 0.5


                                                              0.4
          0.3

                                                              0.3
          0.2
                                                              0.2

          0.1
                                                              0.1


          0.0                                                 0.0
            −20   −15   −10   −5     0   5   10   15            −20   −15   −10   −5     0   5   10   15
                              Errore X                                            Errore Y




                                            a
       Figura 5.11. Funzione di probabilit` stimata nel caso di un modello poco
       accurato, sono separati i dati relativi all’errore in direzione orizzontale e
       l’errore in direzione verticale




                                                         70
                                                                  5 – Test




        0.8                                                                      1.0


                                                                                 0.9
        0.7

                                                                                 0.8
        0.6
                                                                                 0.7

        0.5
                                                                                 0.6


        0.4                                                                      0.5


                                                                                 0.4
        0.3

                                                                                 0.3
        0.2
                                                                                 0.2

        0.1
                                                                                 0.1


        0.0                                                                      0.0
          −16 −14 −12 −10    −8 −6          −4       −2   0   2                    −16 −14 −12 −10   −8 −6      −4        −2     0         2
                             Errore X                                                                Errore Y




  Figura 5.12.                              a
                      Funzione di probabilit` stimata nel caso di un modello accurato




              0.08

              0.07

              0.06

              0.05

              0.04
        Z




              0.03

              0.02

              0.01
                                                                                                                                     −20
              0.00                                                                                                         −15
               −20                                                                                                  −10
                     −15                                                                                   −5
                           −10                                                                       0
                                   −5
                                                 0                                               5
                                                          5                                 10                  X
                                        Y                         10
                                                                            15         15




                                         a
Figura 5.13. Funzione di probabilit` stimata nel caso di un modello errato (il
       e
grafico ` stato espanso per evidenziare i picchi secondari), in questo caso sono stati
accorpati gli errori relativi all’asse delle ascisse e delle ordinate

                                                                       71
                                                      5 – Test




          0.8

          0.7

          0.6

          0.5

          0.4
      Z




          0.3

          0.2

          0.1

          0.0                                                                                                  −16
                                                                                                         −14
          −16                                                                                      −12
                −14                                                                          −10
                      −12                                                               −8
                            −10
                                  −8                                               −6
                                       −6                                     −4
                                            −4                           −2
                                                 −2                  0                   X
                                   Y                  0
                                                           2     2




Figura 5.14.                                a
                      Funzione di probabilit` stimata nel caso di un modello accurato




                                                          72
                                        5 – Test


                               o
    Osservando i grafici si pu` pensare che l’algoritmo sia “polarizzato” ad esempio
                                e
in figura 5.12 il valore medio ` spostato verso -2; si potrebbe pensare di migliorare
                                                              a
le prestazioni dell’algoritmo con un opportuno offset, in realt` se si analizzano i dati
medi di molti filmati si nota che, se il modello non presenta errori, il valor medio ` e
circa zero.



5.4      Test comparativi
I test comparativi hanno lo scopo di cercare di capire, se possibile, in quali occasioni
      u
sia pi` performante Starbust e in quali ASM e hanno lo scopo di definire quale dei
due sia in assoluto il “migliore”.
                        e                                                        e
    Eseguendo i test si ` notato, come era lecito aspettarsi, che l’errore medio ` molto
  u
pi` alto nella direzione orizzontale che in quella verticale, in effetti i movimenti
                                                                             u
dell’occhio, quando si osserva il monitor di un pc o si legge, sono molto pi` frequenti
    u
e pi` ampi in direzione orizzontale.
    I test sono stati suddivisi in due gruppi: nel primo si sono confrontati i due
algoritmi presi nelle condizioni migliori, ovvero, per ogni modello, si sono utilizzati
i parametri e il modello che minimizzano l’errore. Nel secondo gruppo si sono ef-
fettuati test utilizzando i parametri di default e senza ricercare il modello migliore,
per avere una stima delle prestazioni in condizioni realistiche.


5.4.1     Caso migliore
                                              u
Per capire quale dei due algoritmi fosse il pi` efficiente in condizioni ottimali sono
state effettuate numerose prove, utilizzando per ogni filmato i parametri e il modello
migliori.
                               e
    Starbust, in generale, si ` dimostrato il migliore, in quanto ha un tempo di ela-
borazione molto minore rispetto ad ASM e un errore medio quasi sempre minore
                                                                                 o
di ASM. I risultati ottenuti sono sintetizzati nella tabella 5.5. Osservando per` le
                                              e                        u
percentuali di hit i risultati cambiano, perch` ASM ha percentuali pi` alte. Questo
permette di concludere che mentre Starbust ha un’escursione limita, ASM si allonta-
                                                           a              e u
na anche molto dal centro della pupilla, ma nella totalit` dei casi ASM ` pi` vicino
al centro della pupilla.

                                          73
                                           5 – Test


   Algoritmo        Tipologia       Distanza               Tempo medio           % hit
                                    media nor-             elaborazione
                                    malizzata              (ms)
   Starbust         webcam          1,83                   22                    34,7
                    fotocamera      1,39                   30                    41,3
                    videoconferenza 1,20                   36                    43,5
   ASM              webcam          2,12                   58                    55
                    fotocamera      1,48                   56                    59
                    videoconferenza 1,13                   50                    61,5

               Tabella 5.5.    Prestazioni dei due algoritmi nel caso migliore


5.4.2     Caso medio
I test effettuati nel caso migliore sono importanti per stimare l’apice delle prestazioni
di un algoritmo, ma in caso di utilizzo reale le prestazioni possono essere molto
diverse. In questo caso, quindi, per Starbust si sono mantenuti i parametri di default,
                                                          o
mentre per ASM si sono costruiti modelli, senza, per`, porre particolare cura nella
realizzazione.
    Nella tabella 5.6 vengono riportati i risultati medi per i due algoritmi: in questo
                                                                           e
caso non si sono distinti i dati in base alla tipologia della fotocamera, n´ in base alla
tipologia di filmato (viso intero oppure occhio).

              Algoritmo         Distanza          Tempo medio         % hit
                                media nor-        elaborazione
                                malizzata         (ms)
              Starbust          1,51              29                  39,3
              ASM               1,96              56                  58

                Tabella 5.6.    Prestazioni dei due algoritmi nel caso medio

                o
    Come si pu` facilmente notare i risultati sono abbastanza scadenti rispetto ai
risultati ottenuti nel caso migliore.
                                e                                                  e
    Per quanto riguarda ASM ` facile capire che la causa dell’elevato errore medio `
da ricercarsi nella scarsa accuratezza dei modelli utilizzati.
    Per quello che riguarda Starbust si deve notare che l’elevato errore medio (ri-
                         e
spetto ai casi migliori) ` causato soprattutto dalle prove effettuate con la webcam,

                                             74
                                       5 – Test


                                                 u
piuttosto che ad un errore sistematicamente pi` elevato; infatti la scelta di para-
                                                                a
metri giusti influenza molto l’analisi di filmati di scarsa qualit` piuttosto che quelli
ottenuti con fotocamera e telecamera per videoconferenza.




                                         75
Capitolo 6

Conclusioni

6.1      Analisi dei risultati
                      e
Dai test effettuati si ` dedotto che l’algoritmo Starbust ha una carico computazionale
ridotto, il che permette di elaborare un fotogramma molto velocemente, ed ` pi` e u
                              e                                  a
preciso rispetto a ASM, ma ` soggetto ad una certa rumorosit` nelle misure.
                                                              u
    Active Shape Model ha un tempo di elaborazione molto pi` elevato rispetto a
Starbust, in quanto ha un carico computazionale molto elevato, le misure hanno un
               u
errore medio pi` elevato, ma sono meno soggette a rumore.
    Si potrebbe pensare, da questi risultati, che Starbust sia migliore di ASM sotto
                           a
tutti gli aspetti, in realt` il fatto di avere misure che presentano un’elevata rumoro-
   a                                                                          u
sit` potrebbe portare ad alcuni problemi: ad esempio potrebbe essere pi` difficile,
                                                                     e
rispetto ad ASM, la rilevazione di una fissazione, proprio perch´ la misura relati-
                                        e
va alla posizione della pupilla non ` stabile. ASM, d’altro canto, ha un errore pi`   u
elevato, ma questo errore potrebbe essere limitato da un’opportuna calibrazione nei
primi minuti di utilizzo del sistema, infatti non si deve dimenticare che lo scopo di
                                    e
un sistema di eye tracking non ` rilevare la pupilla, ma utilizzare questa misura per
ricavare, anche in modo grossolano, la posizione osservata sullo schermo.
                                o
   Entrambi gli algoritmi, perci`, hanno ancora spazi di miglioramento: per miglio-
                                                                         a
rare Starbust ci si dovrebbe concentrare nella riduzione della rumorosit`, mentre
per ASM ci si dovrebbe concentrare sulla riduzione del tempo di elaboraazione e
modificare l’algoritmo in modo tale da evitare di fissarsi su zone ad alto contrasto
come le sopracciglia.

                                          76
                                     6 – Conclusioni


                                                e
    Una precisazione molto importante da fare ` che mentre Starbust, in pratica, non
necessita di essere calibrato, ASM deve essere calibrato per ogni utente e, alcune
volte, deve essere ricalibrato (utilizzando un nuovo training set) al solo variare delle
condizioni di luce ambientale.



6.2      Miglioramenti relativi a Starbust
         e                                 a
Starbust ` soggetto ad una certa rumorosit`, dovuta alla struttura stessa dell’algo-
ritmo, ma causata anche dall’errore introdotto dalla funzione di face tracking.
    La funzione di face tracking, infatti, si basa su un classificatore e applicando
                                                                         a
la funzione ad uno stesso fotogramma la posizione rilevata non sar` costante, ma
    a                             a
sar` soggetta ad una rumorosit` di alcuni pixel: la causa di questa variabilit`,       a
                 e
probabilmente, ` da ricercarsi nella struttura stessa del classificatore, infatti un buon
classificatore non parte mai dalle stesse condizioni iniziali (ad esempio sceglie a caso
                                                                             o
il punto di partenza da cui iniziare l’analisi dell’immagine) e, questo, pu` portare a
risultati leggermente differenti anche se si sta analizzando lo stesso fotogramma.
                                                                       u
    Si potrebbe quindi utilizzare un altro tipo di classificatore, pi` stabile, oppure
cambiare radicalmente struttura: una soluzione potrebbe essere l’utilizzo di una
rete neurale, che sia strutturata per essere molto veloce e che venga addestrata per
seguire l’occhio; la posizione dell’occhio rilevata verrebbe poi utilizzata come punto
di partenza per applicare Starbust.



6.3      Miglioramenti relativi ad Active Shape Model
                                           ı      e
Analizzando il funzionamento di ASM, cos` com’` stato implementato, si sono evi-
                       a
denziate due possibilit` di miglioramento: evitare le “fissazioni” in punti sbagliati e
ridurre il carico computazionale.
                                           e
    Le fissazioni errate avvengono perch` l’algoritmo si concentra su zone ad alto
contrasto (come le sopracciglia): per evitare il problema si potrebbe aggiungere un
controllo basato su una soglia relativa al colore in modo da evitare di focalizzarsi su
zone molto scure concentrandosi su zone chiare, oppure si potrebbe semplicemente
                      a                                          a
calcolare la luminosit` media dell’area rilevata: se la luminosit` risulta troppo bassa,
                    e                                         e
sicuramente non si ` centrata l’area attorno all’occhio che ` molto luminosa.

                                          77
                                    6 – Conclusioni


    Per ridurre il carico computazionale si potrebbe adottare la soluzione utilizzata
con Starbust: ricavare la posizione dell’occhio utilizzando una funzione di traccia-
mento del volto e modificando ASM per lavorare solo sull’immagine ritagliata; in
questo modo si avrebbe certamente una diminuzione del tempo di elaborazione,
                                                         u
in quanto, l’immagine ritagliata sarebbe sicuramente pi` piccola di 640x480 pixel,
ovvero la dimensione dell’immagine utilizzata attualmente da ASM.


6.4     Miglioramenti degli strumenti di cattura
                                                o
Oltre a migliorare i singoli algoritmi, ci si pu` concentrare sul miglioramento di
aspetti generali come:

   • l’aumento della risoluzione di cattura

   • miglioramento delle ottiche e del sensore video

   • miglioramento dello zoom

                                                                 o
     L’aumento della risoluzione delle immagini utilizzate pu` sicuramente portare
                                                                                e
ad un miglioramento delle prestazioni di entrambi gli algoritmi, in quanto ` facile
                                                     a
capire che, se la risoluzione aumenta, la pupilla sar` descritta da un maggior numero
                   a
di pixel: occuper` quindi un’area maggiore e le informazioni che si potranno estrarre
dall’immagine saranno maggiori.
                                                         e
     Il miglioramento delle ottiche e del sensore video ` un fattore certo, in quanto
e
` confermato dai test effettuati: infatti le prestazioni che si ottengono utilizzando
                                    a
una webcam sono inferiori (a parit` di risoluzione) agli altri due tipi di fotocamere,
        e                                    e
perch´ le ottiche sono peggiori e il sensore ` soggetto ad un rumore molto elevato.
     Per miglioramento dello zoom si intende non solo un aumento degli ingrandimen-
ti, ma anche un’integrazione di zoom nelle webcam e, possibilmente, l’utilizzo di un
obiettivo macro: utilizzando la fotocamera e la videocamera per videoconferenza ci si
e
` resi conto che non si poteva sfruttarne tutti gli ingrandimenti, infatti aumentando
                                                                   o
il fattore di zoom viene variata anche la distanza focale, perci` un soggetto troppo
vicino alla fotocamera risulta sfocato (eliminando i vantaggi offerti dall’immagine
ingrandita dallo zoom).
                               a
     Un aumento delle capacit` di elaborazione potrebbe portare ad un miglioramento
degli algoritmi, nel senso che si potrebbe ridurre il tempo di elaborazione oppure si

                                         78
                                     6 – Conclusioni


potrebbe aumentare la precisione (aumentando il carico computazionale) senza dover
                                                           e
aumentare il tempo di elaborazione: naturalmente questa ` un’analisi puramente
teorica, che dovrebbe essere confermata da dati sperimentali.


6.5      Ulteriori analisi
I test effettuati per questa tesi si sono concentrati sull’analisi delle prestazioni degli
algoritmi nella fase di riconoscimento della posizione della pupilla, ma un sistema
                 e
di eye tracking ` composto anche di una fase che calcola il punto osservato: una
                                                                       a
estensione ai test fin qui effettuati, quindi, sarebbe la possibilit` di misurare la
precisione con cui gli algoritmi calcolano il punto osservato.
                                                          e
    Dovendo sviluppare anche l’ambiente di test ci si ` fermati all’analisi di due soli
                                                                             u
algoritmi, naturalmente lo scopo di questa tesi non era testare quanti pi` algoritmi
possibile, ma costruire un ambiente di test e dimostrare che questo ambiente pu`       o
essere utilizzato per analizzare le prestazioni di algoritmi di eye tracking.
                             a
    Questo ambiente rimarr` a disposizione del gruppo di ricerca e-lite, per permet-
tere in futuro di testare e, migliorare, altri algoritmi.




                                          79
Appendice A

Appendici

A.1    Anatomia dell’occhio




                       Figura A.1.   Anatomia dell’occhio


                e
 L’occhio umano ` costituito da:

 • il bulbo oculare o occhio propriamente detto

 • una serie di organi accessori

      – gli annessi
      – l’apparato muscolare estrinseco

                                       80
                                     A – Appendici


  L’apparato muscolare estrinseco ha il compito principale di coordinare il movi-
mento dei due bulbi oculari, che deve essere sincrono nei due occhi.
                                                                              a
   Collegato all’occhio si riconosce un apparato lacrimale, che svolge attivit` mec-
                 a
caniche e attivit` protettive.


                                                   a
Occhio esterno Rovesciando le palpebre, si potr` vedere uno spazio delimitato
dalla congiuntiva, al punto di riflessione di questa membrana si trova il fornice
congiuntivale. A livello della commessura mediale si potranno rilevare i condotti
lacrimali.




                       Figura A.2.   Sezione del bulbo oculare




Il bulbo oculare Il bulbo o globo oculare (visibilie in figura A.1) ha una forma
sferoidale, nella quale si riconosce un polo anteriore ed uno posteriore. A livello
del polo posteriore si diparte il nervo ottico da un’area molto limitata da una fitta

                                         81
                                     A – Appendici


                                                                   u
corona di altre emergenze nervose, che costituiscono i fasci pi` esterni di questo
nervo.
                                                                       a
    Sezionando il bulbo lungo l’asse antero posteriore (A.2), si potr` vedere come
esso sia suddiviso in due camere, una anteriore e una posteriore, seguite dal corpo
vitreo e nel fondo da una serie di membrane, presenti anche ai lati. La camera
          e
anteriore ` delimitata verso l’esterno dalla cornea, caratteristicamente trasparente,
                        e
mentre posteriormente ` limitata dal cristallino (lente biconvessa) e dalle estrofles-
                                                   e                  u
sioni della corona ciliare. La camera posteriore ` di dimensioni pi` piccole, ed `   e
compresa tra l’iride e le formazioni che vincolano il cristallino alla corona ciliare.
Posteriormente si trova il corpo vitreo (o umor vitreo) del bulbo, che costituisce
     u
il pi` vasto mezzo diottrico del bulbo, senza alcuna importanza in relazione alla
convergenza. Le membrane che avvolgono il bulbo sono:

   • la retina o superficie altamente differenziata, che contiene le cellule primarie
                     a
     della sensibilit` alla luce, i coni (responsabili della visione diurna e sensibili ai
     colori) e i bastoncelli (responsabili della visione notturna)

   • la coroide o uvea, superficie devoluta essenzialmente all’irrigazione vasale del
     bulbo

   • la sclera o sclerotica, che compare anche all’esame esterno dell’occhio, di colore
     biancastro costante su tutta la superficie dell’occhio, nei suoi 5/6 di superficie
                   e
     disponibile; ` di natura fibrosa.

Fisiologia Ciascuna parte dell’occhio ha una sua caratteristica fisiologica. Nello
svolgere la sua funzione, l’occhio si comporta come la camera di una macchina
fotografica, originando la formazione dell’immagine posteriormente (fig. A.3), a
                                             a
livello della retina, eccitando la sensibilit` delle cellule presenti che, attraverso il
nervo ottico, raggiungono i centri gnistici e mnemonici a livello corticale: mediante
associazione diretta si giunge a dare un nome a quanto si vede.
    Prendendo in esame un bastoncello e la sua peculiare struttura, cerchiamo di
spiegare il funzionamento fisiologico dell’occhio. In una situazione di oscurit` (ala
buio) troviamo la rodopsina (pigmento visivo del bastoncello) collegata ad una pro-
teina, la trasducina, collegata a sua volta ad un enzima; all’interno della cellula i
canali per il Na sono aperti grazie alla presenza del GMP c, e il potenziale di mem-
brana si aggira intorno ai -50mv, determinando a livello del terminale sinapsico,

                                          82
                                     A – Appendici




                  Figura A.3.   Formazione dell’immagine sulla retina


data la presenza di un potenziale elettrotonico, il rilascio del neurotrasmettitore.
            o
Quando per` la rodopsina si collega con un fotone (alla luce), si generano dei feno-
meni a cascata: si attiva la trasdudina che attiva l’enzima, che scinde il GMP, la cui
diminuzione massimale chiude i canali del Na. Con la chiusura dei canali del Na e
con l’iperpolarizzazione della cellulla cessa anche il rilascio del neurotrasmettitore.
    Nell’occhio, l’iperpolarizzazione della cellula corrisponde alla creazione di poten-
ziale d’azione che viene propagato nelle cellule accessorie bipolari e gangliari i cui
assoni costituiscono il nervo ottico




A.1.1      Termini medici

                                        e
Movimenti saccadici La saccade ` un movimento brusco dell’occhio, che per-
                                                                      a
mette di spostare la fissazione da un punto all’altro (19). La velocit` dei movimenti
          e                                                             e        a
saccadici ` molto elevata, sino a 400◦ /s con latenza di 0,2s; maggiore ` l’entit` della
                 e
saccade, minore ` la precisione nel movimento.



Fase REM del sonno La sigla REM (Rapid Eye Movement) si riferisce al “mo-
                                                                            e
vimento rapido degli occhi” che avviene durante una fase delle fasi in cui ` diviso il
                          e
sonno (18); la fase REM ` accompagnata da altre alterazioni corporali fisiologiche
                a
come irregolarit` cardiaca, respiratoria e variazioni della pressione arteriosa. Du-
                                                                  e
rante lo studio di questa caratteristica fisiologica del sonno, si ` notato che la fase
                 e
REM del sonno ` accompagnata dai sogni.

                                          83
                                    A – Appendici


A.2      Libreria Qt
                 e
La libreria Qt ` un toolkit C++, ovvero un’insieme di classi per velocizzare la
                               `
scrittura di un applicativo. E nata per creare interfacce grafiche che fossero flessibili,
      o
perci` implementa anche un meccanismo basato su segnali e su slot (funzioni che i
segnali possono attivare).
                e                                 u                   u
    Nel tempo ` stata sviluppata sempre di pi` accorpando le pi` svariate funzio-
ni: gestione della rete, elaborazione di immagini, gestione database SQL e XML,
gestione thread.
    `                            o
    E multipiattaforma, perci` un’applicazione sviluppata utilizzando funzioni stan-
                               o
dard (quindi portabili), pu` essere utilizzata senza problemi su sistemi Windows,
Linux, Mac (e molti altri).
                                                            e
    Per lo sviluppo dei programmi descritti nel capitolo 3 ` stata utilizzata la versione
                                                    e
con licenza GPL del toolkit Qt: questa versione ` completamente gratuita se viene
utilizzata per creare applicazioni a loro volta rilasciate con licenza GPL.
    `
    E disponibile presso il sito Internet: http://trolltech.com/developer/downloads/
qt/index


A.3      Libreria OpenCV
                      e
La libreria OpenCV ` una libreria molto utilizzata in Computer Vision in quanto
                                                                                  a
permette di elaborare le immagini a livello dei singoli pixel con estrema facilit` ed
e
` provvista di moltissime funzioni che aiutano nell’elaborazione di immagini.
     `                    e                                   e
     E molto potente, ma ` anche molto performante, infatti ` stata ottimizzata per
la piattaforma Intel.
                           e                                      e
     Anche questa libreria ` stata rilasciata con licenza GPL, ed ` disponibile presso
il sito internet: http://sourceforge.net/projects/opencvlibrary/


A.4      Classificatore Haar
Per il riconoscimento di oggetti presenti in un immagine l’approccio classico uti-
                             e
lizzato in Computer Vision ` l’elaborazione a livello pixel dell’immagine; in una
pubblicazione Papageorgiou (et al.) ha proposto di lavorare a livello di caratteristi-
che distintive. L’immagine viene divisa in regioni rettangolari, per ognuna di queste

                                         84
                                     A – Appendici


                                                                         e
regioni si somma il valore dei pixel e l’insieme di tutte queste regioni ` utilizzato per
classificare l’immagine. Un classificatore Haar deve poi essere addestrato, per poter
associare un’immagine che presenta determinate caratteristiche ad una determinata
categoria.
    Nel caso della libreria OpenCV la funzione che si occupa di face tracking utilizza
una sequenza di classificatori di tipo Haar che sono stati addestrati con un set di
un centinaio di esempi positivi (volti) e un centinaio di esempi negativi (immagini
                                                           ı            o
arbitrarie della stessa dimensione). Il classificatore cos` ottenuto pu` essere anche
riscalato (per riconoscere volti che hanno una dimensione diversa da quelli del set di
addestramento) e viene applicato ad una finestra di ricerca che viene fatta scorrere
                            o
su tutta l’immagine, perci` per ricercare un oggetto di dimensioni arbitrarie la pro-
cedura deve essere ripetuta varie volte. Per evitare di rallentare troppo la ricerca,
i classificatori in cascata sono stati progettati per essere molto efficaci: una regione
di ricerca, prima di essere accettata, deve passare tutti i classificatori, ma al primo
esito negativo viene abbandonata. Questi classificatori sono a loro volta divisi in
                                            u
altri classificatori (alberi di decisione) pi` semplici che ne aumentano l’efficienza.



A.5       Filtri per immagini
Filtrare un’immagine significa applicare alla stessa un filtro spaziale: l’operazione
consiste nella modifica del valore di ogni pixel in accordo al valore dei pixel vicini. In
alcuni casi i pixel vengono pesati in accordo ad una determinata maschera, ovvero
si effettua la correlazione tra l’immagine di partenza e la maschera, ovvero:

                              g(m,n) = f (m,n) ∗ h(m,n)

    dove f(m,n) rappresenta l’immagine di partenza, h(m,n) la maschera e g(m,n)
l’immagine di filtrata (11).


A.5.1      Filtro smooth
                                                      e
Per rimuovere disturbi impulsivi da un’immagine ` possibile effettuare semplice-
mente la media tra gruppi di pixel adiacenti; i pesi utilizzati nella maschera saranno

                                          85
                                       A – Appendici


quindi del tipo:
                                          1 1 1
                                        1
                                          1 1 1
                                        9
                                          1 1 1
                          e
    Se, invece, il rumore ` di tipo gaussiano si ottengono risultati migliori con un
                        a
filtro gaussiano che avr` una matrice dei pesi di questo tipo:

                                          1 2 1
                                        1
                                          2 4 2
                                       16
                                          1 2 1

A.5.2     Filtro sharpening
                            e
Un filtro di tipo sharpening ` utilizzato per evidenziare piccoli dettagli o evidenziare
                                                      o
dettagli che sono confusi, sfocati; un’immagine pu` risultare sfocata sia per un
                                          e                                e
movimento della fotocamera, sia perch` il sensore della fotocamera ` di qualit`       a
                   o
scadente (come pu` essere il CCD di una webcam). In questo caso la matrice dei
        a
pesi sar` di questo tipo:

                                     −1 −1 −1
                                   1
                                     −1 8 −1
                                   9
                                     −1 −1 −1




                                            86
Bibliografia

[1] Emiliano Castellina, Tesi di Laurea Magistrale: Progetto e ottimizzazione di al-
    goritmi di riconoscimento di forme per il gaze tracking, http://elite.polito.
    it/tesi/castellina.pdf,(Luglio 2005)

[2] T.F. Cootes , C. J. Taylor , D.H. Cooper, J, Graham: Active Shape Models -
    Their training and application,(1992)

[3] Dongheng Li, Jason Babcock, and Derrick J. Parkhurst: openEyes: a low-cost
    head-mounted eye-tracking solution, http://hcvl.hci.iastate.edu/files/
    li_etal06.pdf,(2005)

[4] Dongheng Li: Low-cost eye-tracking for human computer interaction, http:
    //thirtysixthspan.com/openEyes/MS-Dongheng-Li-2006.pdf,(2006)

[5] Wikipedia:   Eye tracking, http://en.wikipedia.org/wiki/Eye_tracking,
    (2007)

[6] Srlabs: La tecnologia eye-tracking, i prodotti, i campi applicativi, http://www.
    srlabs.it, (2007)

[7] Chabane Djeraba: State of art of Eye tracking, (2005)

[8] Opencv library: Face Detection, http://opencvlibrary.sourceforge.net/
    FaceDetection, (2007)

[9] COGAIN: Catalogue of currently available eye trackers for interactive
    applications within AAC, http://www.cogain.org/eyetrackers/, (2007)

[10] COGAIN: Survey of De-Facto Standards in Eye Tracking, http://www.
     cogain.org, (2007)

                                        87
                                 BIBLIOGRAFIA


[11] Aldo Laurentini:Digital image processing and Computer vision, Lecture 11 -
     Spatial Filtering, (2004)

[12] James P. Ivins, John Porrill: A deformable model of the human iris for
     measuring small three-dimensional eye movements, (1998)

[13] Shinjiro Kawato and Nobuji Tetsutani: Detection and Tracking of Eyes for
     Gaze-camera Control, (2002)

[14] Bo Pedersen, Michael Spivey: Offline tracking of eyes and more with a simple
     webcam, (2006)

[15] Subramanya Amarnag, Raghunandan S. Kumaran and John N. Gowdy: Real
     time eye tracking for human computer interfaces, (2003)

[16] Giuseppe Marcone, Giuseppe Martinelli, Lamberto Lancetti: Eye Tracking in
     Image Sequences by Competitive Neural Networks, (1998)

[17] Robert J.K. Jacob, Keith S. Karn: Eye tracking in human-computer interaction
     and usability research: Ready to deliver the promises., (2003)

[18] Wikipedia: Rapid eye movement, http://it.wikipedia.org/wiki/Rapid_
     Eye_Movement, (2007)

[19] Wikipedia: Saccade, http://it.wikipedia.org/wiki/Saccade, (2007)




                                       88

								
To top