POLITECNICO DI TORINO Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica Dipartimento di Automatica e Informatica Studio e realizzazione di un sistema di puntamento oculare per l'accesso al computer da parte di disabili motori gravi Relatore: Ing. Fulvio CORNO Tesi di Laurea di: Isabella SIGNORILE Anno Accademico 2001/2002 Sommario Molte persone danno per scontato azioni come il parlare e il comunicare. Capacità molto importanti nella vita di ogni giorno e in molti aspetti della vita di relazione, che particolari tipi di disabilità possono influenzare, comportando graduali cambiamenti: pertanto è importante essere consapevoli di come si possa mantenere una comunicazione efficace. A questo proposito il computer è una preziosa risorsa per creare ausili di comunicazione potentissimi e personalizzati alle esigenze individuali, soprattutto per le persone disabili, per le quali esso offre spazi di integrazione scolastica, lavorativa e sociale. Sembra doveroso prima di proseguire dare una definizione del termine ausilio informatico: per ausilio informatico si intende un ambiente informatico utilizzato da una persona disabile per prevenire, alleviare o eliminare una menomazione, disabilità o handicap. Un adeguato ausilio di comunicazione è la porta d'accesso all'integrazione e offre la possibilità di instaurare con chiunque un'interazione comunicativa. Le difficoltà che una persona disabile si trova a dover affrontare variano in relazione alle sue esigenze di vita e alle sue capacità residue. Ad esempio la persona può sentirsi esclusa ed incompresa a causa della sua impossibilità ad instaurare delle relazioni con il mondo esterno (la famiglia, gli amici, i colleghi, i compagni di scuola, etc.) , tale condizione è, nella maggior parte dei casi, causata da una comunicazione carente o assente. Il computer è uno strumento di comunicazione, non solo per la persona disabile. Le tecnologie nell'ambito dei supporti per disabili stanno assumendo sempre maggiore importanza. All'interno di questo settore, la presente tesi si colloca nella sottoarea specifica dei supporti informatici per disabili motori gravi. A questo proposito si accenna ad una particolare categoria di disabili : le persone affette da Sclerosi Laterale Amiotrofica (SLA). La SLA è una malattia neurologica, la più grave tra quelle che colpiscono i motoneuroni, ovvero le cellule nervose del cervello e del midollo spinale che controllano i muscoli. La malattia è caratterizzata dal fatto che i motoneuroni vanno incontro a degenerazione e muoiono, la morte di queste cellule avviene gradualmente, nel giro di mesi o anche di anni ed ha come conseguenza un progressivo indebolimento muscolare ed infine la paralisi. Con il progredire della malattia vengono a mancare capacità come il movimento ed il parlare, che conducono il malato all'immobilità e all'impossibilità di comunicare. La SLA colpisce solamente il sistema motorio e risparmia tutte le altre funzioni neurologiche, inoltre sono raramente toccati i muscoli che controllano i movimenti oculari. Un malato di SLA, giunto ad un certo stadio della malattia, potrebbe quindi essere in grado di esprimersi solamente più attraverso il movimento degli occhi. Da qui nasce l'idea di utilizzare un ausilio di comunicazione che utilizzi il movimento oculare. Un sistema di puntamento oculare è appunto un ausilio di questo genere. I dispositivi standard di puntamento, come ad esempio il mouse o il joystick, sono spesso difficilmente accessibili ad un disabile motorio per la difficoltà nel compiere e coordinare i propri movimenti. Una possibile soluzione a questo problema è rappresentata da un dispositivo che utilizzi lo sguardo come canale di comunicazione. I primi sistemi basati sull'uso congiunto dell'elaboratore e dello sguardo come "fonte di decisione" sono nati negli Stati Uniti. La categoria di sistemi, di questo tipo, su cui si è concentrata la propria attenzione nell'ambito dello sviluppo della tesi sono stati i sistemi ottici. I sistemi ottici si basano sull'elaborazione dell'immagine dell'occhio dell'utente ripresa da una telecamera posta sopra oppure sotto il monitor. Come funziona un sistema ad inseguimento dell'occhio? Scopo del sistema è quello di individuare su quale punto del video, del computer, è fissato lo sguardo dell'utente. Il click del mouse è realizzato tramite una pausa di fissazione dell'occhio sul punto desiderato. Dietro questo sistema di predizione dello sguardo dell'utente sta ovviamente un software apposito che si occupa dell'acquisizione, dell'elaborazione delle immagini e del calcolo della direzione dello sguardo. Il lavoro di tesi svolto ha avuto infatti lo scopo di realizzare un software che fosse in grado di predire la direzione dello sguardo dell'utente, limitatamente ad una tabella di sei celle. La tabella in questione, che rimane visualizzata sullo schermo durante tutto il tempo d'utilizzo del sistema, ha come unica finalità quella di mostrare come funziona il sistema progettato, infatti ogni cella su cui l'utente fissa il proprio sguardo si colora di rosso. Viene presentato uno schema che mostra la struttura pensata e successivamente ideata per il progetto: Il punto di partenza è ovviamente l'acquisizione delle immagini con una webcam, per realizzare questa operazione si sono utilizzate le funzioni di VFW (Video For Windows). Ogni immagine acquisita viene trasformata in un'immagine binaria (dove compaiono cioè solo i colori bianco e nero), dopodiché viene scandita e la concentrazione di pixel neri viene analizzata in modo da individuare delle aree specifiche all'interno dell'immagine. Le due aree più importanti individuate dagli algoritmi sono quella contenente l'occhio destro (si lavora solo sul movimento di un occhio) e quella contenente l'iride dell'occhio. Il centro dell'iride coincide col centro della pupilla. Gli algoritmi di rilevazione dell'occhio destro e del centro pupilla forniscono le coordinate che identificano la posizione dell'occhio e del centro pupilla nell'immagine catturata. L'algoritmo di rilevazione del riferimento fornisce invece le coordinate di un punto di riferimento posto sulla fronte dell'utente (uno stampino nero) che rappresenta l'origine di un sistema di riferimento comune a tutti i punti man mano calcolati che vengono espressi in questo sistema di riferimento solidale col viso dell'utente. Ad ogni immagine acquisita corrisponderà quindi un punto indicante la direzione dello sguardo (gaze) e ad una sequenza di immagini corrisponderà una sequenza di punti (campioni) da cui l'algoritmo di calcolo della fissazione estrarrà le coordinate del punto fissato. Tali coordinate vengono restituite dall'algoritmo solamente quando la fissazione in questione risulta terminata e ne ha avuto inizio una nuova. A questo punto l'algoritmo di predizione individuerà la cella della tabella da colorare di rosso, cioè la cella fissata dall'utente, in base alle coordinate del punto di fissazione calcolato dall'algoritmo precedente e in base anche ai risultati ottenuti da una procedura di calibrazione. Infatti ogni volta che l'utente intende utilizzare il sistema deve prima inizializzarlo eseguendo questa procedura, in cui gli è richiesto di fissare il proprio sguardo su sei differenti punti, ognuno dei quali corrispondente ad una cella della tabella. Al termine della procedura il sistema è riuscito a memorizzare le coordinate dei sei punti fissati dall'utente, che rappresentano una sorta di "mappa" del video a cui l'algoritmo di predizione si riferisce per riuscire ad determinare su quale delle sei celle fosse indirizzato lo sguardo dell'utente. La durata della pausa di fissazione richiesta, affinché gli algoritmi riescano a calcolare il punto fissato, è paria a 2 - 3 secondi, quindi se l'utente sceglie di "far colorare" una cella della tabella deve mantenere il suo sguardo fisso su di essa per almeno 2 - 3 secondi. Il numero di campioni elaborati al secondo dal sistema è 2,67 campioni al secondo. Sicuramente le modifiche e i miglioramenti da apportare al lavoro sono ancora molti e questo al fine di renderlo un sistema realmente ed utilmente utilizzabile da un disabile motorio grave, come può essere un malato di SLA. Lo sviluppo di questo progetto mi ha permesso di avvicinarmi ad un mondo che spesso, per distrazione o superficialità, si è portati a trascurare. Senza conoscerlo è difficile capire quali siano gli ostacoli che un disabile motorio grave incontra. Più ci si addentra in questo mondo è più nascono idee su come poter in futuro ampliare il sistema per fornire un controllo dell'elaboratore, e non solo, sempre maggiore. La speranza è quella di poter integrare il software realizzato con un software di comunicazione che permetta di creare le condizioni affinché il disabile abbia l'opportunità di comunicare in modo efficace ovvero di tradurre il proprio pensiero in una serie di segni intelligibili per l'interlocutore. Molto è stato fatto nel campo della disabilità motoria, ma purtroppo i risultati maggiori si sono avuti prevalentemente all'estero. Non sempre è immediata la possibilità di utilizzare materiale proveniente da altri paesi, questo a causa di incompatibilità di simboli, lingua e abitudini. E' per questo motivo che si rende sempre più urgente la necessità di sviluppare materiale accessibile anche in Italia dove purtroppo le realizzazioni proposte sono ancora insufficienti. Questa tesi ha la speranza di porre delle basi su cui sviluppare ampliamenti futuri in questo senso. Ringraziamenti Devo un doveroso ringraziamento a tutti coloro che hanno reso possibile la realizzazione di questo progetto. In primo luogo ai miei genitori per il sostegno e l'incoraggiamento che hanno saputo darmi in questi cinque anni di studio. Ringrazio Lorenzo DeFilippis per avermi aiutato nel reperimento della necessaria bibliografia e per avermi permesso di addentrarmi in questo particolare ambito sociale, al fine del completamento dei miei studi. Ringrazio inoltre Luca Federzoni (tecnico informatico) per la sua disponibilità e l'assistenza tecnica fornitami durante la progettazione del software. Ringrazio il mio relatore, il professor Fulvio Corno per la disponibilità e la pazienza con cui mi ha seguito durante lo svolgimento di questa tesi. Infine un grazie a tutte le persone che mi hanno dimostrato la loro fiducia e il loro appoggio. Indice SOMMARIO 3 RINGRAZIAMENTI 9 INDICE 11 1. INTRODUZIONE 16 2. STATO DELL'ARTE 22 2.1 INTRODUZIONE 22 2.2 BREVE STORIA DEL SOFTWARE ACCESSIBILE 23 2.3 SOFTWARE ACCESSIBILE 30 2.3.1 AUSILI INFORMATICI 30 2.3.2 CONVEGNI 34 3.INTRODUZIONE AI SISTEMI EYE-TRACKING 36 3.1 INTRODUZIONE 36 3.2 COMUNICAZIONE AUMENTATIVA ED ALTERNATIVA 37 3.3 SCELTA DELLO SGUARDO COME CANALE DI COMUNICAZIONE 40 Indice 3.4 CONDIZIONI D'USO DI UN SISTEMA A PUNTAMENTO OCULARE DA PARTE 43 DI PERSONE AFFETTE DA DISABILITA' FISICHE 3.5 SOMMARIO 46 4. DESCRIZIONE DELLA STRUTTURA DEL SISTEMA PROGETTATO 48 4.1 INTRODUZIONE 48 4.2 ANALISI E SPECIFICA DEI REQUISITI 49 4.3 SOLUZIONE DEL PROBLEMA 50 4.4 PROGETTO LOGICO 51 4.4.1 ACQUISIZIONE PERIODICA DELLE IMMAGINI DALLA WEBCAM 54 4.4.2 RILEVZIONE POSIZIONE DELL'OCCHIO E DELLA PUPILLA 58 4.4.3 INDIVIDUAZIONE DEL RIFERIMENTO E DETERMINAZIONE DELLA DIREZIONE DELLO SGUARDO 65 4.4.4 CALCOLO PUNTO DI FISSAZIONE 70 4.4.5 INDIVIDUAZIONE DELL'AREA FISSATA 73 4.5 LA PROCEDURA DI INIZIALIZZAZIONE DEL SISTEMA: 74 LA CALIBRAZIONE 5. REALIZZAZIONE SPERIMENTALE DEI SINGOLI MODULI DEL SISTEMA 80 5.1 INTRODUZIONE 80 5.2 LINGUAGGIO DI PROGRAMMAZIONE E LIBRERIE 81 5.3 REALIZZAZIONE DEL SOFTWARE 82 5.3.1 SUPPORTI ALL'IMPLEMENTAZIONE APPLICAZIONE DIMOSTRATIVA DI UNA 83 Indice 5.3.2 IMPLEMENTAZIONE DEL SOFTWARE 85 5.3.2.1 RAPPRESENTAZIONE SCHEMATICA DEI MODULI DEL PROGETTO 87 5.3.2.2 DESCRIZIONE DEI DIVERSI MODULI DEL PROGETTO 89 5.3.2.3 BREVE DESCRIZIONE DEI FILE D'INTESTAZIONE DEL SISTEMA 6. VALUTAZIONI 99 103 6.1 INTRODUZIONE 103 6.2 INDIVIDUAZIONE DI CATEGORIE DI DISABILITA' 104 6.3 UTILIZZO DEL SISTEMA 106 6.3.1 PRESENTAZIONE DEL SISTEMA 106 6.3.2 ANALISI DEI DATI OTTENUTI DA UNA PROVA DI UTILIZZO DEL SISTEMA 6.4 VALUTAZIONI TECNICHE: FATTORI DI QUALITA' 7. DIREZIONI FUTURE DI RICERCA 110 113 118 7.1 INTRODUZIONE 118 7.2 POSSIBILITA' DI APPLICAZIONE PER NORMODOTATI 119 7.3 MIGLIORAMENTI FUTURI PREVISTI 121 7.4 POSSIBILITA' DI APPLICAZIONE DA PARTE DI MALATI DI SLA 123 8. CONCLUSIONI 126 Indice 9. BIBLIOGRAFIA 128 APPENDICI APPENDICE A. AUSILI INFORMATICI E TECNOLOGIE PER DISABILI 132 APPENDICE B. SISTEMI DI PUNTAMENTO OCULARE 139 APPENDICE C. ANATOMIA E FISIOLOGIA DELL'OCCHIO UMANO, MOVIMENTI OCULARI 147 APPENDICE D. ELABORAZIONE ED ANALISI DELL'IMMAGINE 153 APPENDICE E. CODICE SORGENTE DEI MODULI DEL SISTEMA 159 1 Introduzione Il problema dell’integrazione dei disabili e dei portatori di handicap in generale, è oggi di grande attualità. Spesso una persona disabile soffre per la sua impossibilità ad instaurare delle relazioni con il mondo esterno (la famiglia, gli amici, i colleghi, i compagni di scuola, etc.) , tale condizione è, nella maggior parte dei casi, causata da una comunicazione carente o assente. Infatti comunicare è sinonimo di relazione, una relazione è sempre comunicativa. Il computer è uno strumento di comunicazione, non solo per la persona disabile. Oggigiorno l'utilizzo dell'elaboratore è molto diffuso nei centri di assistenza per disabili di ogni genere, mentali e motori. Le tecnologie nell'ambito dei supporti per disabili stanno assumendo sempre maggiore importanza. All'interno di questo settore, la presente tesi si colloca nella sottoarea specifica dei supporti informatici per disabili motori gravi. Lo scopo della presente tesi è quello di fornire un sistema software che funzioni da emulatore di mouse, (la parte hardware non richiede nient'altro che una webcam e ovviamente un computer) e che permetta all'utente disabile di controllare con il proprio sguardo ciò che avviene sul video. L'utilizzo di tale sistema andrà poi affiancato a quello di un software di comunicazione appropriato. Si fa infatti riferimento alla comunicazione alternativa, cioè a quell'insieme di strategie di comunicazione alternative alla comunicazione verbale e grafica. Per quando riguarda le informazioni raccolte nel campo dei supporti informatici per disabili motori gravi e in particolare sui sistemi di puntamento oculare, si è fatto per la maggior parte ricorso a documenti reperiti in Internet. 16 Capitolo 1: Introduzione Testi scritti, riguardanti ausili informatici e tecnologie per disabili e trattanti il problema di disabilita' ed accessibilità, sono invece stati forniti dall'EasyLabs di Torino. Come già spiegato sopra, lo scopo della tesi è quello di fornire il prototipo di un sistema a puntamento oculare, che permetta ad un disabile motore grave l'accesso all'elaboratore senza utilizzare i dispositivi standard di selezione (mouse e tastiera), che spesso richiedono una fermezza nei movimenti non presente nel disabile. Per raggiungere questo obiettivo è stato realizzato un sistema capace di individuare, quale, tra diverse aree, sia quella fissata dall'utente sul video. La scelta dello sguardo come canale di comunicazione non è casuale: in passato e anche tuttora uno dei sistemi utilizzati per comunicare con persone che non sono in grado, a causa delle loro disabilità, di usufruire di altri strumenti comunicativi (la parola, la scrittura, sistemi di accesso all computer che prevedono l'uso degli arti, sia inferiori che superiori), è l'écran. Questo è un sistema che si basa appunto sull'utilizzo di una lastra di plexiglass trasparente su cui sono riportate le lettere dell'alfabeto. La lastra viene posta tra il disabile e l'interlocutore, il quale deve capire su quale lettere si posa lo sguardo dell'altra persona. Con l'esperienza si raggiunge una buona velocità di composizione delle parole: sfruttando la rapidità dell'occhio si possono scambiare notevoli quantità di informazioni. Un tale sistema ha però molti limiti, fra cui quello di poter comunicare soltanto con interlocutori esperti ed "allenati" ed inoltre l'impossibilità di poter parlare a più di una persona per volta. I sistemi ad inseguimenti dell'occhio che si basano sull'elaborazione delle immagini sono di gran lunga più accurati ed affidabili. Esistono in commercio due categorie di prodotti: dispositivi da fissare al capo dell'utente oppure dispositivi "remoti", come ad esempio telecamere montate sopra o sotto il monitor del computer. 17 Capitolo 1: Introduzione Quest'ultima possibilità è forse preferibile, in quanto nulla è fisicamente collegato all'utente, che, in questo modo, si sente più a suo agio. Il sistema sviluppato durante la tesi funziona da emulatore di mouse, dove il "clik" (selezione di una determinata area) è realizzato tramite una pausa di fissazione dello sguardo sul punto dello schermo che l'utente desidera attivare. Il prototipo realizzato come progetto di tesi prevede la possibilità di distinguere in quale zona del video sia indirizzato lo sguardo della persona. E' previsto che sul video venga mostrata, all'utente del sistema, una tabella composta da sei elementi (zone), questo significa che l'algoritmo di rilevazione delle fissazioni individuerà non il punto fissato dall'utente, ma l'area entro cui cade il suo sguardo . Tutti gli algoritmi realizzati per il progetto del sistema sono stati scritti in linguaggio C. Avendo finora illustrato come è realizzato il sistema e quale sia il suo scopo, c'è da aggiungere che esso è destinato ad una particolare categoria di disabili: le persone affette da Sclerosi Laterale Amiotrofica (SLA). La SLA è una malattia fatale, degenerativa, che colpisce i motoneuroni, cioè le cellule nervose del cervello e del midollo spinale che controllano i muscoli. Questa malattia comporta l'indurimento (Sclerosi) della porzione laterale (Laterale) del midollo spinale e dimagrimento (Amiotrofica) muscolare. In Francia è detta Malattia di Charcot, dal nome del neurologo che la identificò per primo nel 1869. Nei paesi i lingua inglese si chiama ALS (Amyotrophic Lateral Sclerosis) oppure MND (Moto Neuron Disease). Negli USA è anche nota come malattia di Lou Gehring, famoso giocatore di baseball che contrasse la malattia nel 1939, all'apice della sua carriera agonistica. In Italia è una malattia neurologica poco conosciuta. A causa della SLA i motoneuroni muoiono prima del tempo, provocando alla persona colpita un progressivo indebolimento muscolare e conducendola alla paralisi, ma i 18 Capitolo 1: Introduzione primi segni della malattia compaiono solo quando la perdita progressiva dei motoneuroni supera la capacità di compenso dei motoneuroni superstiti. Generalmente la SLA colpisce persone adulte di entrambi i sessi, in un'età compresa fra i 40 e i 70 anni. Le cause della malattia sono ancora sconosciute, sicuramente è determinata da più circostanze: si ipotizza che una certa predisposizione genetica e più fattori ambientali debbano interagire. In ogni caso non può essere considerata ereditaria. Il primo sintomo della SLA è una progressiva perdita di forza, che può riguardare tutti i movimenti dei muscoli volontari. Oltre alla debolezza si possono avvertire rigidità (spasticità), contrazioni muscolari involontarie, a volte anche dolorose (crampi). La SLA può alterare il controllo muscolare delle strutture che intervengono nella parola, comportando varie difficoltà nella comunicazione. La malattia colpisce solo il sistema nervoso e risparmia tutte le altre funzioni neurologiche: le funzioni mentali, sensoriali, sessuali, il controllo di vescica ed intestino sono preservati. Quando la mobilità agli arti superiori , l'abilità di scrittura e la parole vengono gravemente compromesse, è necessario utilizzare strumenti alternativi di comunicazione. In genere le persone colpite da SLA sono comunque in grado di controllare il movimento degli occhi, che, ad un certo stadio della malattia, può rappresentare l'unica modalità che permette al paziente di interagire ancora con gli altri e con il computer. Il computer può rappresentare maggiore libertà di espressione, tramite esso si possono esprimere opinioni, domande, risposte, richieste, affermazioni e sentimenti. E' necessario tenere presente che qualora si usi un metodo di comunicazione alternativa, questo sarà lento. Tuttavia non vi sono limiti a ciò che si può comunicare: Stephen Hawking, un noto fisico affetto da SLA, grazie ad uno strumento di comunicazione 19 Capitolo 1: Introduzione alternativa è in grado di tenere conferenze ed ha inoltre scritto molti testi diffusamente letti. La tesi è strutturata nel modo seguente. Nel capitolo due si mostra lo stato dell'arte evidenziando quale sia stato il punto di partenza di questo lavoro e quali siano state le motivazioni che hanno portato allo sviluppo di tale sistema. Nel capitolo tre si illustra come è stato impostato il problema di ricerca, aprendo anche una finestra sul mondo della disabilità fisica e sulle difficoltà che un disabile motore grave incontra nell'utilizzo di un elaboratore. Nel capitolo quattro si mostra come è stato affrontato concettualmente il problema, giungendo, mediante una scomposizione in sottoinsiemi più semplici, alla rappresentazione dell'architettura del sistema. Nel capitolo cinque si illustra il progetto sotto un punto di vista tecnicamente più specifico, discutendo su ciò che si è realizzato materialmente. Nella sezione sei si descrivono le attività sperimentali svolte che hanno permesso una valutazione critica del sistema. Nella sezione sette vengono approfondite le prospettive future di ricerca. Nelle conclusioni si riassumono gli scopi, le valutazioni di questi e le prospettive future. 20 2 Stato dell'arte 2.1 INTRODUZIONE Fare la storia della legislazione in favore dei disabili significa anche fare la storia della condizione delle persone handicappate e capire meglio come, quando e quanto sono cambiate nel nostro Paese la concezione dell’handicap e soprattutto la condizione di quanti ne sono portatori. In questo sguardo retrospettivo non occorre tornare molto indietro: basta fermarsi alla fine del secolo scorso e agli inizi del ‘900. E’ soltanto a partire da questo periodo che si comincia a delineare un quadro evolutivo della normativa in questo settore. Come si vedrà in seguito si tratta di un’evoluzione lenta, complessa, frammentaria, a volte contraddittoria e che soltanto con adeguate forzature possiamo completamente considerare a favore dei portatori di handicap. 22 Capitolo 2: Stato dell'arte 2.2 BREVE STORIA DEL SOFTWARE ACCESSIBILE Nel 1984 l'Ufficio del Servizio di Educazione Speciale e Riabilitazione del dipartimento dell'Educazione Statunitense insieme alla Casa Bianca prese l'iniziativa di condurre un processo che portasse i produttori degli elaboratori e del software e gli utilizzatori a riflettere sulla questione riguardante l'accesso e l'uso dell'elaboratore e del software da parte di persone con disabilità. Il primo incontro di tale iniziativa si tenne nel Febbraio del 1984 presso la Casa Bianca. Il risultato ottenuto fu il riconoscimento del problema dell'accessibilità ad un ambiente informatico di comune utilizzo e la richiesta, da parte dei produttori, di ulteriori informazioni inerenti ai tipi di disabilità, alle limitazioni che incontra una persona disabile nell'utilizzare un elaboratore tradizionale, alle strategie che avrebbero potuto incrementare l'usabilità dell'elaboratore stesso. L'accesso al computer e ai programmi software deve garantire a chiunque, incluse le persone disabili, la possibilità di usare vantaggiosamente la tecnologia in ambito lavorativo, educativo e ricreativo. In seguito all'incontro di febbraio, fu stesa la prima versione della White Paper che venne distribuita come preparazione per un secondo incontro tenutosi il 24-25 ottobre 1985. Risultato di questo secondo incontro fu la formazione di un gruppo di lavoro volto ad identificare e documentare idee e considerazioni aventi lo scopo di incrementare l'accessibilità degli elaboratori standard da parte sia di persone disabili, che normodotate. A grandi linee il problema generale può essere suddiviso in una serie di questioni più semplici: Una porzione importante della popolazione presenta delle disabilità (acquisite alla nascita, o in seguito ad un incidente, a causa di una malattia o semplicemente dovute alla vecchiaia) che impediscono loro di utilizzare i computer standard e i software tradizionali. 23 Capitolo 2: Stato dell'arte I costi per le modifiche necessarie da apportare agli elaboratori, per venire incontro alle esigenze delle persone disabili, sarebbero non eccessivi o addirittura irrisori ed incrementerebbero il numero di possibili utenti. La caratteristica di accessibilità di un prodotto ne rende anche più semplice l'utilizzo da parte delle persone non disabili, in quanto queste possono usufruire di benefici quali minor fatica, maggiore velocità e minor probabilità d'errore. La maggior parte delle modifiche al design dovrebbero realizzarsi gratuitamente oppure ad un prezzo contenuto, per ottenere un beneficio diretto sul mercato di massa. La maggior parte dei cambiamenti necessari a rendere un prodotto accessibile dovrebbero già essere inclusi direttamente nel prodotto stesso. La White Paper rappresenta il primo passo compiuto dalle industrie del software per andare incontro alle esigenze dei disabili. Lo scopo di questo documento è triplice. In primo luogo si propone di informare le persone che operano nel campo della riabilitazione. In secondo luogo di documentare l'importanza e le ragioni del software accessibile. Infine di riuscire a sensibilizzare i produttori stimolandoli a lavorare, al fine di garantire alle persone disabili la possibilità di usufruire di tutte le prestazioni in condizioni di adeguata affidabilità ed autonomia. Ma che cosa si intende per accessibilità? L'accessibilità si riferisce alla progettazione dell'ambiente costruito, dei prodotti e dei servizi di uso generale in modo che questi possano essere utilizzati agevolmente dalla più ampia percentuale di popolazione, incluse le persone disabili od anziane. Più specificatamente per accessibilità informatica si intende la possibilità, anche da parte di persone con impedita capacità motoria, di accedere ad un ambiente 24 Capitolo 2: Stato dell'arte informatico di comune utilizzo e di fruire di tutte le prestazioni in condizioni di adeguata affidabilità ed autonomia. Il 26 luglio 1990 di fronte a tremila persone il Presidente Bush firmò la legge ADA (the Americans with Disabilities Act), la prima legge al mondo riguardante i diritti civili delle persone disabili. La frase pronunciata dal Presidente in quell'occasione - "Let the shamful walls of exclusion finally come tumbling down" - sintetizza il messaggio della legge ADA: milioni di Americani disabili avevano trovato una protezione legale che assicurava loro uguali opportunità ed accesso alla vita pubblica americana. Oggi in Europa 37 milioni di cittadini soffrono varie forme di handicap. L'Italia, in base ad una stima della Divisione della popolazione dell'ONU, è fra i paesi a elevato tasso di invecchiamento per la più alta percentuale di ultrasessantenni (24%) e per la più bassa percentuale (14%) di giovani di età inferiore ai 15 anni. In base alle previsioni dell'Istituto di ricerche sulla popolazione del CNR in futuro nel nostro paese ci saranno 17 milioni di anziani e 8-9 milioni di giovani. E' evidente l'importanza crescente del tema della disabilità negli anni a venire. Il progressivo invecchiamento della popolazione italiana, infatti, rende necessari interventi, anche attraverso tecnologie innovative, per migliorare le condizioni di vita delle persone che, a causa dell'età, soffrono di disabilità di varia natura. La continua innovazione tecnologica è riuscita a raggiungere risultati di rilievo, garantendo a molti disabili una vita uguale a quella delle persone normodotate: studiano, lavorano, viaggiano e praticano sport perfino a livello agonistico. In futuro la società si dovrà porre l'obiettivo di ricercare una sempre migliore integrazione dei disabili. 25 Capitolo 2: Stato dell'arte CLASSIFICAZIONE DELLE DISABILITA' Finora si è parlato di disabilità senza specificare cosa si intendesse con questo termine. Disabilita' è la limitazione, più o meno grave, della capacità di assolvere compiti e soddisfare bisogni in modo adeguato, a causa di menomazioni (qualsiasi perdita o anomalia a carico di strutture o funzioni psicologiche, fisiologiche o anatomiche) o danni, singoli e multipli. Si riporta di seguito una suddivisione per tipo di handicap, al fine di chiarire il conteso specifico. Disabilità fisica: un individuo che presenta tale disabilità incontra diverse limitazioni nell'uso dei dispositivi standard di input dell'elaboratore. La causa di tali problemi è dovuta ad un basso controllo muscolare, alla debolezza e alla fatica, alla difficoltà a provare sensazioni tattili, ad afferrare oggetti ed in genere a compiere operazioni complesse (ad esempio premere e ruotare). Per una persona affetta ad esempio da paralisi celebrale o sclerosi multipla o distrofia muscolare, i movimenti rotatori possono risultare molto difficili od impossibili. Queste persone devono quindi poter utilizzare ausili che sfruttino le loro abilità residue. La possibilità di collegare dispositivi di input alternativi permette l'accesso ad un elaboratore anche a persone con disabilita' motorie più gravi. Le cause più comuni di questo tipo di disabilità sono: danni alla spina dorsale (paraplegia, tetraplegia), traumi celebrali, ictus celebrali, mancanza di arti o dita (per amputazioni o difetti di nascita), morbo di Parkinson, sclerosi multipla, sclerosi laterale amiotrofica (SLA), distrofia muscolare. Disabilità visiva: in questa categoria di disabilità rientrano persone aventi una vista molto debole, quelle colpite da istagmo ed infine quelle cieche. I problemi più comuni sono: vista offuscata, presbiopia, miopia, mancanza di visione periferica, sensibilità anormale alla luce, diminuzione di vista notturna, etc. 26 Capitolo 2: Stato dell'arte Secondo il trend demografico, che indica un aumento della popolazione anziana, i problemi legati a questo tipo di disabilita' aumenteranno certamente nei prossimi anni. I problemi principali che questa categoria di disabili presenta, nell'utilizzo di un elaboratore, sono legati alla loro difficoltà nel visualizzare testi ed immagini sullo schermo o nell'utilizzare strumenti in cui le operazioni da compiere sono dipendenti dalla capacità visiva dell'utente (ad esempio il mouse) oppure il cui sistema di input sia basto sul video (ad esempio touschscreen). Per le persone che presentano ancora capacità visive residue, un aiuto può essere rappresentato da caratteri molto grandi e elevati contrasti di colore. Se invece i problemi di vista sono più seri si può ricorrere all'utilizzo del braille oppure agli screen reader , che sono programmi aventi la funzione di lettore vocale. Questi programmi utilizzano cioè un sintetizzatore vocale che legge il testo scritto sul video ed emette una serie di messaggi vocali interattivi, che facilitano l'organizzazione dei percorsi e permettono all'utente non vedente di muoversi con sicurezza all'interno dei dati contenuti nel computer. Disabilità uditiva: in questa categoria di disabilita' sono compresi ogni tipo e grado di disturbo uditivo. Problemi di udito si riscontrano in persone di ogni età, ma sono comunque una delle principali conseguenze del processo 'invecchiamento. L'individuo colpito da tale disabilita' incontra poche difficoltà nell'utilizzo di un elaboratore, in quanto gli output sonori possono essere sostituiti con immagini grafiche, ovviamente c'è da tenere in considerazione i problemi di linguaggio che una persona sordomuta può dover affrontare. Disabilità cognitiva: la persona colpita da tale disabilità può presentate diversi problemi: incapacità a ricordare, assenza o danneggiamento di specifiche funzioni cognitive (soprattutto il linguaggio). I problemi cognitivi possono interessare la memoria, la percezione, la capacità a risolvere problemi di vario genere e difficoltà concettuali. Le cause di tale disabilita' possono essere: ritardi mentali (nella maggior parte dei casi la causa è sconosciuta, sebbene infezioni, sindrome di Down nascita prematura, trauma alla nascita o mancanza di ossigeno possono 27 Capitolo 2: Stato dell'arte provocare un ritardo mentale) , amnesie di breve o lungo termine, processo di invecchiamento. La persona disabile che presenta problemi cognitivi incontra le difficoltà maggiori nell'uso dei software standard. Strategie di soluzione in quest'area sono molto generali e possono rivolgersi a problemi di linguaggio, di astrazione o altro. Disabilità multiple: spesso si verifica che la causa di un danno singolo ne induca anche altri. In particolare ciò può succedere quando il danno o il trauma è molto grave o se la persona è in età avanzata. Alcune persone possono presentare sia disabilità mentali che fisiche, con la conseguente limitazione funzionale in più aree della loro attività quotidiana. La paralisi celebrale spesso è accompagnata da problemi visivi, uditivi e disordini linguistici o problemi cognitivi. IL PASSAGGIO IN EUROPA Le ripercussioni dell'avvenimento del luglio 1990 si sono fatte sentire anche in Europa. Nel marzo del 1992 iniziò un progetto di elaborazione delle "Nordic Guidelines for Computer Accessibility" da parte della NNH (Nordic Committee on Disability). La NNH è una cooperazione, sotto il Nordic Council of Ministers, comprendente i governi danese, finlandese, norvegese e svedese. Lo scopo della NNH è la realizzazione di obbiettivi nazionali di piena partecipazione nella società e di uguaglianza per le persone disabili. Il Nordic Guidelines for Computer Accessibility è il risultato di un progetto riguardante l'informazione tecnologica (IT). L'IT è una parte delle infrastrutture della società moderna. Gli elaboratori sono ormai parte integrante nell'educazione e nel lavoro. E' stato stimato che il 70% del lavoro d'ufficio in Europa è svolto in posti di lavoro informatizzati (stima della IDC Svezia). 28 Capitolo 2: Stato dell'arte La Cooperazione Internordica di Standardizzazione delle informazioni Tecnologiche (INSTAT/IT) ha supportato questo progetto con la seguente dichiarazione: "ISTAT/IT crede che si debba provvedere affinché le persone disabili abbiano la possibilità di usare attrezzature IT. INSTAT/IT accoglie favorevolmente il progetto e lo considera un buon inizio in questo settore. Stiamo attendendo i risultati, sotto forma di guida, e ci aspettiamo di poterli usare per un lavoro di standardizzazione regionale, nazionale ed internazionale". Alla base di questa pubblicazione ci sono due documenti: il primo è la White Paper citata in precedenza, mentre l'altro è una specifica di requisiti prodotta in collaborazione dall'Agenzia Svedese per lo Sviluppo Amministrativo e dall'Istituto Svedese di Handicap. L'Organizzazione Mondiale della Sanità stima la percentuale di popolazione disabile almeno nel 10%. Queste persone non costituiscono un gruppo omogeneo e statico, anche il tipo di disabilità può essere temporaneo o permanente e variare d'intensità. Nei paesi industrializzati si vive di più, ma le nascite diminuiscono. Le persone hanno acquisito le abitudini introdotte dalle attuali tecnologie, ma per alcuni l'accesso ad esse può essere progressivamente ridotto a causa di limitazioni dovute all'età avanzata. Queste riflessioni devono sicuramente aiutare a riflettere sull'importanza della questione dell'accessibilità all'elaboratore. Con l'avvento e la diffusione della telematica, nuove possibilità di integrazione economica e sociale si aprono per la popolazione disabile ed anziana. Tuttavia a quest'interessante prospettiva si contrappongono problematiche che, se non opportunamente considerate, possono aumentare l'isolamento di queste categorie di persone. Rendere un terminale/servizio di facile uso per una persona disabile è garanzia di alta usabilità per ogni utente. 29 Capitolo 2: Stato dell'arte Per fare ciò è però necessario lo sviluppo di nuove aree di conoscenza, che includano i tipi e il grado di disabilità, le conseguenze e le limitazioni che deve affrontare una persona disabile, gli aspetti psicologici ed economici ed infine le strategie per incrementare l'usabilità del prodotto. 2.3 SOFTWARE ACCESSIBILE 2.3.1 AUSILI INFORMATICI Viene proposta una descrizione di alcuni ausili informatici suddivisi per tipo di disabilità. Particolare importanza sarà data ai supporti informatici per disabili motori. Cerchiamo prima di tutto di dare una definizione del termine ausilio. L'ausilio è un oggetto che permette a chi lo utilizza di instaurare delle relazioni con le persone che lo circondano. In questo sta la vera utilità dell'ausilio: dare alla persona disabile la possibilità di entrare in relazione con gli altri, a casa, a scuola, al lavoro, etc. Questa possibilità fa sì che la persona disabile abbia un'immagine di sé migliore, perché si sente parte attiva nei suoi rapporti con gli altri e non un emarginato o un diverso. Anche l'ausilio informatico è un oggetto, che serve a creare relazioni comunicative, che determinano apprendimenti cognitivi che possono aumentare e facilitare contesti relazionali e sociali: tutto ciò contribuisce al rafforzamento dell'identità della persona. Volendo dare una definizione più tecnica, l'ausilio è uno strumento che consente al disabile di fare ciò che altrimenti non riuscirebbe a fare, oppure di farlo in maniera più sicura, veloce, meno faticosa, più accettabile psicologicamente, o infine per prevenire l'instaurarsi o l'aggravarsi di una disabilità. 30 Capitolo 2: Stato dell'arte Disabilità visiva Negli Atti della IV Conferenza Internazionale del Computer per Persone portatrici di Handicap (1994) viene esposto un metodo che permette agli utenti ciechi di "vedere", attraverso le proprie mani, il funzionamento di Windows: le finestre vengono percepite tramite una simulazione fisica di oggetti che si sovrappongono. Un altro metodo sfrutta invece l'udito, senso che generalmente una persona cieca possiede ben sviluppato. Si parte dal presupposto che si possa determinare se un suono proveniente da un'orchestra sia generato da uno strumento in prima, seconda o terza fila. Con un ragionamento analogo i suoni prodotti dalle singole finestre di Windows avranno una tonalità diversa in modo che l'utente cieco possa percepire le disposizioni delle finestre sul video. Disabilità uditiva Dal momento che tale disturbo non comporta un grave disagio nell'utilizzo dell'elaboratore, pochi sono gli sviluppi. Del resto è sufficiente, per facilitare l'utente affetto da questa disabilità, l'introduzione di immagini che sostituiscano i messaggi sonori. Disabilità cognitiva Per quanto riguarda questo campo della disabilità viene particolarmente sviluppato il discorso inerente ad informatica e didattica. A tal fine in Italia si tiene regolarmente un Convegno Nazionale dal titolo Informatica, Didattica e Disabilità. L'elaboratore può essere sfruttato per stimolare, tramite immagini e suoni, i ragazzi sia normodotati che afflitti da disabilità mentali. Per quanto riguarda la disabilità verbale grave si ricordano i metodi per la comunicazione aumentativa ed alternativa, tra cui ad esempio il linguaggio Bliss: si tratta di un linguaggio simbolico in cui ad ogni simbolo è associato un termine, sia 31 Capitolo 2: Stato dell'arte questo un sostantivo, un verbo o un aggettivo. Ogni categoria di simboli è rappresentata da un colore diverso in modo da facilitare l'individuazione delle parole. La storia di questo linguaggio è singolare: fu ideato per facilitare la comunicazione tra i vari paesi della Cina dal momento che il grande numero dei dialetti impediva alle persone di comunicare tra loro. Il termine Comunicazione Aumentativa ed Alternativa (AAC) si riferisce a tutte le strategie di comunicazione che sono alternative o incrementano la comunicazione verbale e grafica. Esistono sia prodotti hardware che software per la AAC. I prodotti software godono delle potenzialità sempre crescenti dell'informatica e della enorme capacità di memorizzazione ed elaborazione dei dati del computer, e al tempo stesso permettono l'uso del computer anche per attività diverse dalla AAC. Disabilità fisica Non esiste una separazione netta tra i supporti rivolti a questo tipo di disabilita' e quelli analizzati precedentemente per disabilità cognitive, in quanto spesso i due problemi sono strettamente collegati. La società EasyLabs di Torino ha permesso di inquadrare il problema dell'accessibilità all'elaboratore grazie all'elevato numero di ausili informatici di cui dispone. Si ricordano: tastiere speciali, riprogrammabili (in cui è possibile ridefinire a piacere il significato dei tasti), tastiere a video, mouse speciali, sistemi per il controllo del computer e per la comunicazione attivabili attraverso sensori esterni, accessibili anche con ridottissime capacità motorie. L'utilizzo di una comune tastiera può essere critico a causa di problemi nel controllo degli arti superiori. Per superare tale difficoltà è, a volte, sufficiente adottare delle modifiche alle impostazioni software del computer che si sta utilizzando, in altri casi è possibile identificare delle soluzioni alternative. Ad esempio si può utilizzare una 32 Capitolo 2: Stato dell'arte tastiera ridotta (caratterizzata da dimensioni ridotte e tasti piccoli, ravvicinati e molto sensibili), oppure una tastiera espansa (tastiera di grandi dimensioni, con tasti ingranditi). Esistono inoltre tastiere a video con cui l'iterazione avviene tramite un dispositivo di puntamento oppure tastiere con display indipendenti dal computer. I mouse speciali sono una valida alternativa al mouse standard per coloro che presentano difficoltà nel controllare il movimento del puntatore e le funzioni dei tasti. In questa categoria rientrano gli emulatori di mouse: dispositivi che permettono di controllare, attraverso sistemi diversi, il movimenti del puntatore e di svolgere tutte le funzioni, o quasi, del mouse. Ad esempio il progetto sviluppato nell'ambito delle presente tesi è relativo proprio ad un emulatore di mouse, che sfrutta il movimento oculare. In alcuni casi è possibile utilizzare per il movimento del puntatore un mouse standard e per la selezione fare ricorso a sistemi che consentano di realizzare il clik con l'ausilio di uno o più sensori esterni tramite dispositivi d'interfaccia. In altri casi è invece possibile ricorrere a soluzioni software per l'esecuzione del comandi del mouse. Vi sono comunque vari aspetti da considerare riguardo all'utilizzo di un ausilio che favorisca l'utente nell'accesso all'elaboratore: L'ausilio deve garantire la massima autonomia all'utente L'uso dell'ausilio dev'essere il più semplice possibile Dev'essere garantito il comfort dell'utente nell'utilizzo dell'ausilio Va considerato anche l'aspetto economico, inteso non solo come costo d'acquisto dell'ausilio, ma anche come costo dell'apprendimento all'uso dell'ausilio Caratteristiche fondamentali dell'ausilio devono essere: semplicità e praticità d'uso 33 Capitolo 2: Stato dell'arte Dovrebbe essere garantita un certa durata d'uso dell'ausilio L'ausilio si deve adattare alle esigenze dell'utente Particolare importanza dev'essere infine data alla valutazione, cioè l'insieme delle attività necessarie per individuare le risorse tecnologiche appropriate per il superamento di difficoltà fisiche che inibiscono la possibilità di comunicare ed agire in modo autonomo. Per questo è necessario sia un esame delle capacità residue della persona disabile, sia delle esigenze a cui si vuole dare risposta, per definire quale sia l'ausilio più indicato. Alcuni ausili e software di particolare interesse vengono recensiti nell'appendice A. 2.3.2 CONVEGNI Nell'ambito degli sviluppi di ausili informatici per disabili si è avuta una progressiva crescita d'interesse che ha portato negli ultimi anni ad organizzare convegni nazionali ed internazionali. A livello nazionale si ricorda il già citato Informatica, Didattica e Disabilità che lo scorso anno si è tenuto a Roma, e anche HANDIMatica, convegno nazionale per l'integrazione del disabile che si occupa di tecnologie avanzate, informatiche e telematica per favorire l'integrazione delle persone disabili. A livello internazionale citiamo Closing in the Gap, convegno che si tiene a Minneapolis. Quella dell'ottobre del 2001 è stata la diciannovesima edizione. Il titolo del convegno è "Microcomputer Technologies in Rehabilitation and Special Education". 34 3 Introduzione ai sistemi eye-tracking 3.1 INTRODUZIONE Il problema affrontato in questo capitolo punta allo studio del superamento di quelle "barriere" che il disabile motorio grave (come ad esempio un malato di sclerosi laterale amiotrofica ad un certo stadio della malattia) incontra nell'utilizzo di un elaboratore. Aprendo una piccola finestra sul mondo della disabilità fisica, è immediato riconoscere quanti problemi completamente diversi si propongono all'osservatore. Risulta quindi difficile un tentativo di generalizzazione. Il problema dell'impostazione della ricerca è stato svolto seguendo sostanzialmente un'unica strada, rivolta a persone che hanno difficoltà di tipo meccanico relative all'utilizzo dei dispositivi standard di input. Queste persone possono essere affette da sclerosi multipla, distrofia muscolare, paralisi celebrale. Le conseguenze di tali malattie e quindi le cause delle difficoltà accennate sopra sono: debolezza, intorpidimento, paralisi, tremori. Un riguardo particolare si è avuto nei confronti dei malati di sclerosi laterale amiotrofica (SLA). Il progredire della malattia provoca un progressivo indebolimento muscolare ed infine conduce alla paralisi, ma la persona colpita da questa malattia resta comunque in grado di controllare il movimento oculare. Nel capitolo seguente si accenna inoltre ai linguaggi simbolici utilizzati in campi diversi: la comunicazione aumentativa ed alternativa (AAC) si occupa di tutte le strategie di comunicazione che sono alternative o che incrementano la comunicazione verbale e grafica. Queste strategie hanno lo scopo di fornire un ausilio di comunicazione che incoraggi la comunicazione e favorisca l'integrazione del disabile. Il riferimento alla AAC, nell'ambito dello sviluppo della presente tesi, è legato alla potenzialità che un sistema di accesso all'elaboratore, quale può essere un 36 Capitolo 3: Introduzione ai sistemi eye-tracking sistema di puntamento oculare, unito ad un software di comunicazione, può offrire ad un disabile motore. 3.2 COMUNICAZIONE AUMENTATIVA ED ALTERNATIVA Non è facile scavalcare il muro che si erge tra le persone che non sono capaci di esprimersi verbalmente e il mondo, che le circonda, in cui la parola costituisce il mezzo di comunicazione per eccellenza. Le difficoltà aumentano quando la patologia risulta complessa e comporta, oltre all'assenza della parola, deficit fisici e psichici. In queste situazioni diventa difficile stabilire un canale di comunicazione, o per lo meno una comunicazione che vada oltre lo stretto necessario. Esiste il rischio reale di scambiare l'impossibilità di esprimersi con l'incapacità di comprendere e di apprendere, con la conseguenza che il soggetto disabile viene di fatto privato della possibilità di gestire, anche in minima parte, la propria vita. Dietro le apparenze ci sono spesso abilità nascoste e potenzialità inimmaginabili. Scoprirle, rinforzarle e sfruttarle nella vita quotidiana è una sfida difficile che richiede talvolta strumenti particolari. La Comunicazione Aumentativa Alternativa è uno di essi. Conosciuta e applicata in Canada e negli Stati Uniti da quasi 40 anni, diffusa in molti paesi europei, in Italia comincia ora timidamente a farsi la strada tra dubbi, incertezze e ostilità. Come già detto in precedenza l'espressione Comunicazione Aumentativa ed Alternativa (Augmentative and Alternative Communication, AAC) si riferisce a tutte le strategie di comunicazione che sono alternative o incrementano (augmentative in inglese) la comunicazione verbale e grafica. Attualmente interventi di AAC vengono effettuati nelle seguenti condizioni di disabilità: condizioni congenite (sindromi genetiche, ecc.); condizioni acquisite (esiti di trauma cranico, ictus, ecc.); 37 Capitolo 3: Introduzione ai sistemi eye-tracking condizioni neurologiche evolutive (Sclerosi Laterale Amiotrofica, AIDS cerebrale, Sclerosi Multipla, Morbo di Parkinson, ecc.); condizioni temporanee. La AAC si pone come obiettivo la compensazione di una disabilità (temporanea o permanente) del linguaggio espressivo; vengono infatti create le condizioni affinché il disabile abbia l’opportunità di comunicare in modo efficace, ovvero di tradurre il proprio pensiero in una serie di segni intelligibili per l’interlocutore. Esistono sia prodotti software che hardware per la AAC, essi mirano a fornire al disabile strumenti di comunicazione, alternativi al linguaggio verbale, che possono essere suddivisi nelle seguenti categorie: le tabelle di comunicazione VOCA (Voice Output Communication Aids) software di comunicazione I prodotti hardware normalmente sono dedicati alla funzione di comunicatori, rientrano in questa categoria i sistemi AAC con uscita in voce (Voice Output Communication Aid, VOCA) o senza uscita in voce. I VOCA sono sistemi dedicati alla comunicazione, che non necessitano di essere collegati ad un PC . Tramite questi strumenti il disabile ha la possibilità di comunicare non solo indicando un simbolo, ma anche associando ad esso un messaggio verbale che viene udito dagli altri. I VOCA si differenziano fra loro per numero di messaggi, tempo totale di registrazione, modalità d'accesso (selezione diretta dal dispositivo o tramite sensori esterni, selezione indiretta con scansione manuale o automatica con sensori esterni). Esistono prodotti pensati e studiati per la AAC sia a tecnologia povera che sistemi ad alta tecnologia. 38 Capitolo 3: Introduzione ai sistemi eye-tracking Di norma per ogni singola persona è necessaria un'integrazione di prodotti a tecnologia sia povera e che ricca. Spesso un software pensato per la AAC va ad affiancarsi a sistemi poveri quali tabelle cartacee (con selezione diretta per mezzo dell'indicazione attraverso l'uso di un arto o similari - ad esempio un caschetto con un bastoncino - o selezione indiretta per mezzo di una doppia codifica, spesso indispensabile per coloro che non riescono ad usare né gli arti, né lo sguardo per indicare) o écran per la selezione di simboli codificati attraverso lo sguardo. I prodotti software godono delle potenzialità sempre crescenti dell'informatica e della enorme capacità di memorizzazione ed elaborazione dei dati di un computer. Essi permettono di riprodurre sullo schermo le tabelle di comunicazione, ad ogni cella della tabella è possibile associare un simbolo e l’uscita in voce. I prodotti software con uscita in voce sono quindi in tutto assimilabili alla famiglia dei comunicatori, ma non hanno di norma limitazioni nel numero di simboli/messaggi utilizzabili, né limitazioni per quanto riguarda il tempo di registrazione a disposizione, possono consentire l'accesso attraverso modalità diverse (tastiere, dispositivi di puntamento, sensori esterni sia in selezione diretta che indiretta), sono molto flessibili nella creazione e personalizzazione delle tabelle di comunicazione che spesso sono collegabili e richiamabili fra loro aumentando così il numero di simboli a disposizione dell'utente. L'idea del comunicatore propone un meccanismo che, funzionando per associazione di idee oppure dal generale al particolare, permetta ad un disabile motore, non in grado di parlare (la SLA ad esempio porta alla paralisi anche dei muscoli deputati alla parola) , di indicare quello che vuole e farsi capire. Questo vuol dire che la prima tabella conterrà delle immagini. Ad un'immagine possono essere associate altre immagini a cui si potrà accedere nel caso venga selezionata la prima immagine. Questo sistema può essere raffigurato come un albero. 39 Capitolo 3: Introduzione ai sistemi eye-tracking I diversi messaggi contenuti nella tabella possono essere rappresentati in modi diversi: oggetti concreti, miniature di oggetti, simboli grafici (foto, disegni), lettere o parole. Il contenuto delle immagini è strettamente personale ed il compito della loro compilazione va lasciato all'educatore insieme all'interessato. Le tabelle di comunicazione infatti vanno costruite valutando un insieme di aspetti contemporaneamente: selezione del vocabolario (in funzione dei bisogni dell'utente e del contesto in cui verrà utilizzata), gli aspetti fisici e sensoriali del disabile (mobilità, postura, vista, etc.), il fattore intellettivo. Un software di comunicazione aumentativa ed un sistema di accesso che sfrutta il movimento oculare rappresentano sicuramente un utile strumento di comunicazione per una persona affetta da SLA, che la malattia ha privato della possibilità di movimento e di parola. Alcuni prodotti hardware e software di Comunicazione Aumentativa ad Alternativa sono presentati nell'appendice A. 3.3 SCELTA DELLO SGUARDO COME CANALE DI COMUNICAZIONE Il problema dell’integrazione dei disabili e dei portatori di handicap in generale è oggi di grande attualità, anche se rispetto ad alcuni decenni fa sono stati compiuti notevoli passi avanti: si ricordi ad esempio negli anni ’60 la nascita delle “scuole speciali” per disabili, in cui di fatto queste persone erano relegate per buona parte della loro vita. Tra le funzioni che più spesso sono precluse a una persona disabile, la più importante è senz’altro quella della comunicazione: chi non può parlare o utilizzare le mani per esprimersi ben difficilmente potrà scambiare le proprie idee con il mondo esterno. 40 Capitolo 3: Introduzione ai sistemi eye-tracking Il sistema sviluppato nell’ambito di questa tesi permette di impartire comandi ad un elaboratore tramite lo sguardo. La scelta dello sguardo come canale di comunicazione non è casuale: in passato e anche tuttora uno dei sistemi più usati per comunicare con i disabili è l’écran, un sistema che si basa sull’utilizzo di una lastra di plexiglass trasparente su cui sono disegnate le lettere dell’alfabeto. Tale lastra viene posta tra il disabile e l’interlocutore. Quest’ultimo deve capire su quale lettera si posa lo sguardo dell’altro. Con l’esperienza si raggiunge una buona velocità di composizione delle parole: sfruttando la rapidità dell’occhio si possono scambiare notevoli quantità di informazioni. Tale sistema ha molti limiti, fra cui il poter comunicare soltanto con interlocutori esperti ed “allenati” e l’impossibilità di parlare a più di una persona per volta. Il limite più evidente è comunque quello di richiedere la presenza costante di un’altra persona, precludendo di fatto la possibilità di produrre in modo indipendente documenti scritti. Per ovviare a questo limite si possono utilizzare i cosiddetti sistemi a scansione. Tali sistemi si basano sulla capacità del disabile di riuscire a coordinare almeno un arto del proprio corpo. Spesso questa capacità può essere limitata, è necessario un certo tempo per il training e lo scambio di informazioni è piuttosto lento. Tali sistemi si basano sull’uso del calcolatore: un cursore scandisce automaticamente il video (scansione elemento per elemento oppure riga-colonna, quest'ultima è più veloce) su cui sono visualizzate le lettere dell'alfabeto, il disabile sceglie la lettera che desidera scrivere e la conferma con un impulso sul sensore (ad esempio premendo un pulsante di dimensioni più o meno grandi, con una qualunque parte del corpo: la mano, il gomito, la testa, ecc.). Per scrivere una parola sono necessari diversi minuti, per scrivere una pagina occorre una giornata intera, non considerando gli errori di battitura. Sono nati pochi anni fa negli Stati Uniti i primi sistemi basati sull’uso congiunto del calcolatore e dello sguardo come “fonte di decisione”. 41 Capitolo 3: Introduzione ai sistemi eye-tracking Possiamo suddividere tali sistemi in due categorie: sistemi ottici: i quali tipicamente utilizzano la riflessione infrarossa sistemi elettrici: i quali sfruttano la registrazione elettrooculografica EOG Per quanto riguarda i sistemi del primo tipo, questi hanno normalmente costi molto elevati, ma sono sicuramente migliori per precisione ed affidabilità. Il secondi non hanno l'ergonomicità sufficiente a renderli sistemi commerciali alla portata di tutti, a causa della presenza dei fili elettrici che devono essere collegati all'utente e che ne limitano la libertà di movimento. I sistemi ottici si basano per la maggior parte sul metodo PCCR (Pupil Center Corneal Reflection) che sfrutta la riflessione della cornea per determinare il movimento dello sguardo. Un diodo (LED) emette raggi infrarossi a bassa potenza ed illumina l’occhio. Il raggio di luce infrarossa genera una riflessione luminosa sulla superficie della cornea dell'occhio e provoca il cosiddetto effetto "occhi rossi", quest'effetto migliora l'immagine della pupilla alla telecamera e rende più facile alle funzioni di elaborazione dell'immagine localizzare il centro pupilla. L'elaboratore calcola il punto fissato dall'occhio, interpolando le coordinate del punto sullo schermo, basandosi sulla posizione relativa del centro pupilla e sulla riflessione della cornea nell'immagine dell'occhio. Ma non tutti i sistemi ottici si basano su questo metodo, vi sono anche sistemi ottici che sfruttando algoritmi di elaborazione dell'immagine, riescono a determinare le coordinate del centro pupilla e in seguito a opportune considerazioni geometriche a determinare il punto fissato sullo schermo dall'utente. Il progetto argomento della presente tesi utilizza proprio questa modalità, come verrà ampiamente descritto in seguito. 42 Capitolo 3: Introduzione ai sistemi eye-tracking Una panoramica su alcuni dei sistemi di puntamento oculare attualmente in commercio, che fanno riferimento ai diversi metodi descritti sopra viene illustrata nell'appendice B. 3.4 CONIDIZIONI D'USO DI UN SISTEMA A PUNTAMENTO OCULARE DA PARTE DI PERSONE AFFETTE DA DISABILITA' FISICHE Viene presentata una breve panoramica su alcune delle malattie più frequenti a cui un sistema di input alternativo, com'è appunto il progetto sviluppato nell'ambito di questa tesi, può essere rivolto: SCLEROSI MULTIPLA: la sclerosi multipla implica un processo autoimmunitario, cioè una risposta immunitaria anomala diretta contro il sistema nervoso centrale dell’individuo stesso. I sintomi iniziali sono difficoltà nei movimenti e sensazioni d'intorpidimento. Raramente i sintomi iniziali comprendono incoordinazione dei movimenti, alterazioni dell'articolazione della parola e difficoltà nel movimento di uno o più arti. Dolore o perdita della vista dovuta ad un'infiammazione del nervo ottico è un altro dei sintomi più comuni, che però spesso è reversibile. DISTROFIA MUSCOLARE: è una malattia muscolare, le forme più comuni sono quella di Duchenne e quella di Becker. La prima evolve verso una paralisi totale dei muscoli, mentre la seconda ha un andamento più lieve e meno debilitante. Non in tutte le forme di distrofia il livello intellettivo rimane del tutto normale, ad esempio la distrofia miotonica di Steinert colpisce anche il sistema nervoso centrale, oltre alla muscolatura scheletrica e gli occhi (cataratta). SCLEROSI LATERALE AMIOTROFICA: come già spiegato in precedenza, la SLA è una malattia fatale degenerativa che porta ad una paralisi progressiva dei quattro arti e dei muscoli deputati alla deglutizione e alla parola. Le persone colpite da questa patologia sono comunque ancora in grado, anche nella fase finale 43 Capitolo 3: Introduzione ai sistemi eye-tracking della malattia, di controllare il movimento degli occhi, inoltre le capacità cognitive non vengono assolutamente intaccate. Affinché un utente disabile sia effettivamente in grado di utilizzare un sistema a puntamento oculare, deve soddisfare una serie di condizioni, necessarie al corretto utilizzo del sistema stesso. Le condizioni d'uso richieste vengono di seguito elencate: Buon controllo di almeno un occhio: l'utente dev'essere in grado di spostare lo sguardo in alto, in basso, a destra e a sinistra entro l'area dello schermo. Deve essere inoltre in grado di focalizzare lo sguardo su un punto per il tempo richiesto dal sistema. Diversi problemi relativi al movimento oculare possono interferire con il buon uso di un sistema eye-tracking: istagmo (costante ed involontario movimento dell'occhio), strabismo alternato, ecc. Visione adeguata: l'utente deve poter vedere chiaramente ciò che è visualizzato sullo schermo. I sistemi di inseguimento in genere lavorano anche in presenza di lenti a contatto e occhiali. In particolare il progetto sviluppato nell'ambito di questa tesi è stato testato su persone che portavano occhiali da vista con lenti antiriflesso. Anche la diblopia (visione doppia) e problemi di visione offuscata possono rendere difficile all'utente fissare il proprio sguardo su di un punto. In caso di cecità il sistema non potrà essere utilizzato. Buon controllo del capo: l'utente deve essere capace di mantenere una posizione di fronte allo schermo dell'elaboratore. In particolare il viso dell'utente deve restare entro l'inquadratura della telecamera. Movimenti incontrollati del capo rendono impossibile l'uso di un sistema di questo tipo. Una soluzione potrebbe essere quella di utilizzare un opportuno sistema di supporto del capo. Effetti collaterali delle medicine: gli anticonvulsioni possono causare istagmo, visione offuscata, diblopia, mal di testa e confusione. Alcuni antidepressivi possono provocare visione offuscata e dilatazione anormale della pupilla. Il Baclofen, un comune farmaco per ridurre gli spasmi muscolari, può causare 44 Capitolo 3: Introduzione ai sistemi eye-tracking disorientamento, mal di testa, visione offuscata e dilatazione della pupilla. L'utilizzo contemporaneo di alcuni tipi di medicine e di un sistema a puntamento oculare resta quindi piuttosto difficile. In base alle considerazioni appena fatte, possiamo quindi valutare se una persona affetta da una delle patologie descritte sopra possa essere in grado o meno di utilizzare un sistema a puntamento oculare. Per quanto riguarda le condizioni cognitive dell'utente di un sistema di questo tipo è chiaro che dev'essere in grado di comprendere il funzionamento del sistema di input al fine di poter operare, tramite questo, le scelte che il software di comunicazione gli propone (ad esempio un software di comunicazione aumentativa). Altre considerazioni, sempre inerenti alle condizioni d'uso di un sistema eyetracking (ad inseguimento dell'occhio), si riferiscono questa volta all'ambiente in cui il dispositivo viene utilizzato. Un fattore molto importante da tenere in conto è infatti l'illuminazione dell'ambiente di lavoro. Nell'ambito dello sviluppo della presente tesi si è condotto uno studio su quali fossero le condizioni di luce migliori affinché il sistema potesse operare correttamente. Si è potuto appurare che questo lavora bene al buio con una o due sorgenti luminose (semplici lampade) che illuminino il viso dell'utente. Questa problematica è comunque stata ampiamente affrontata nei capitoli successivi. 45 Capitolo 3: Introduzione ai sistemi eye-tracking 3.5 SOMMARIO E' difficile mostrare le proprie potenzialità ed abilità in mancanza di un canale comunicativo. Chi non può parlare o utilizzare le mani per esprimersi ben difficilmente potrà scambiare le proprie idee con il mondo esterno. La funzione comunicativa aumenta e facilita contesti relazionali e sociali, che contribuiscono a loro volta a rafforzare l'identità di una persona. Il progetto sviluppato nella presente tesi vuole fornire un sistema di input alternativo per disabili motori gravi, in modo che essi possano accedere all'elaboratore e ai programmi software, che garantiscono loro la possibilità di usare vantaggiosamente la tecnologia per instaurare delle relazioni comunicative col mondo esterno. 46 4 Descrizione della struttura del sistema progettato 4.1 INTRODUZIONE Questo capitolo spiega com'è stato affrontato concettualmente il problema e la soluzione logica che ne è seguita. Punto di partenza sono le conclusioni della sezione precedente che costituiscono le specifiche informali preliminari. Verrà in principio affrontato il problema dell'Analisi e Specifica dei Requisiti, che permette di definire gli obbiettivi che ci si è posti. Seguirà una descrizione concettuale della strategia utilizzata cercando di dare il più possibile delle risposte ai requisiti sopra esposti ed infine verrà posta particolare attenzione alla struttura del progetto che porterà ad una suddivisione modulare del sistema. 48 Capitolo 4: Descrizione della struttura del sistema progettato 4.2 ANALISI E SPECIFICA DEI REQUISITI Viene fornita in questo contesto una prima descrizione di tipo informale. Analisi dei requisiti: Scopo del sistema è fornire uno strumento capace di consentire l'utilizzo dell'elaboratore da parte di disabili motori gravi che non sono in grado di adoperare mouse e tastiera. L'accesso al computer è importante in quanto esso rappresenta uno strumento comunicativo potente e personalizzabile che può aiutare il disabile ad instaurare delle relazioni con il mondo esterno (famiglia, amici, colleghi, etc.). Figura 1 Il progetto di un tale sistema interessa solamente il livello software e riguarda l'ideazione di una serie di algoritmi, che permettono di tradurre il movimento dello sguardo in un comando per l'elaboratore. L'hardware necessario è rappresentato unicamente da una webcam collegata alla porta USB dell'elaboratore. L'uso di tastiera e del mouse non è interdetto, anzi concorre allo stesso risultato. 49 Capitolo 4: Descrizione della struttura del sistema progettato Il sistema deve permettere all'utente il controllo dell'elaboratore utilizzando esclusivamente lo sguardo come mezzo di interazione. Il sistema non deve essere chiuso, ma deve permettere ampliamenti futuri e forti personalizzazioni. 4.3 SOLUZIONE DEL PROBLEMA Come prima cosa si cercherà di dare delle risposte ad ognuno dei requisiti presentati nel paragrafo precedente. Quale soluzione alternativa all'utilizzo del mouse e della tastiera si è scelto di usare lo sguardo come canale di comunicazione tra l'utente e il proprio elaboratore. Pensando al tipo di patologie a cui un sistema del genere può essere rivolto, si è inoltre pensato di poter associare l'uso del sistema di puntamento oculare realizzato, con quello di un software di comunicazione aumentativa ed alternativa. Questa potrebbe rivelarsi un'ottima combinazione per un malato di SLA . Gli algoritmi realizzati si basano su elementi geometrici e di elaborazione delle immagini. Essendo questo progetto un primo prototipo l'accuratezza del sistema è tale da poter individuare non il punto esatto, ma l'area sul video in cui cade lo sguardo dell'utente. Il movimento degli occhi è rilevato da una webcam, posta sotto il monitor del PC. Le immagini catturate dalla webcam vengono elaborate da diversi algoritmi e sulla base di un certo numero di campioni acquisiti il sistema riesce a determinare dove sia diretto lo sguardo dell'utente. Non sono richiesti alla webcam requisiti particolari, in quanto le condizioni su cui si basa il buon funzionamento del sistema sono legate soprattutto alle condizioni di luce dell'ambiente in cui questo si trova ad operare. 50 Capitolo 4: Descrizione della struttura del sistema progettato Anche se l'utente del sistema non è in grado di adoperare mouse e tastiera, deve essere comunque data la possibilità ad altre persone, che possono assisterlo nell'uso del sistema stesso, di interagire con l'elaboratore tramite i sistemi di input standard (mouse e tastiera). E' fondamentale che l'utente possa in ogni momento comunicare, tramite il proprio elaboratore. Durante il tempo di utilizzo del sistema la webcam è connessa al computer e le immagini acquisite vengono di volta in volta elaborate al fine di tradurre lo spostamento dello sguardo dell'utente in un determinato comando. Questo comando dipenderà dal tipo di software di comunicazione che si sta utilizzando insieme al sistema di puntamento oculare. Vi saranno una serie di parametri che dovranno essere modificati in funzione dell'utente che utilizza il sistema. Questo significa che, prima di poter essere utilizzato, il sistema dovrà essere sottoposto ad una procedura di calibrazione. 4.4 PROGETTO LOGICO Si descrive come il progetto è stato suddiviso dal punto di vista logico, fino ad arrivare ad un'architettura del sistema. Il cuore del sistema è rappresentato da una serie di algoritmi che provvedono alla gestione della webcam, all'elaborazione delle immagini acquisite e alla rilevazione di una serie di campioni da cui è poi possibile ricavare le coordinate di un unico punto di fissazione, in base al quale si riesce a prevedere quale sia l'area che l'utente stava fissando. Si parte dall'ipotesi che sul video dell'elaboratore sia visualizzata una tabella suddivisa in celle. Data l'accuratezza attuale del sistema progettato, si assume che le celle siano in tutto sei e che individuino quindi altrettante posizioni sul video (altodestra, alto-centro, alto-sinistra, basso-sinistra, basso-centro, basso-destra). 51 Capitolo 4: Descrizione della struttura del sistema progettato Durante la procedura di calibrazione si chiede all'utente di fissare sei punti sullo schermo: da ogni fissazione si ottiene un punto di coordinate x,y, che verranno di volta in volta memorizzate. La procedura di calibrazione ha lo scopo di inizializzare il sistema. Si riporta nella figura a fianco la tabella utilizzata per la calibrazione. Figura 2 La figura 2 mostra la suddivisone dello schermo dell'elaboratore in sei aree rettangolari. I punti segnati in ognuna di esse rappresentano i punti fissati dall'utente durante la procedura di calibrazione. Ogni volta che il sistema calcola un punto di fissazione, questo viene confrontato con i punti della calibrazione e da tale confronto si può determinare su quale, tra le sei aree, sia diretto lo sguardo dell'utente. Un punto di fissazione viene calcolato sulla base di un numero minimo di campioni, operando su di essi una media, escludendo però quei punti che, non rispettando una determinata soglia, non possono essere considerati parte della fissazione in corso. Le coordinate di ogni punto-campione vengono calcolate in base ad una serie di considerazioni geometriche. Le coordinate del centro pupilla, delle immagini analizzate, vengono riportate nello stesso riferimento, per poterne valutare le variazioni. Il riferimento comune viene individuato da un segno nero posto sulla fronte dell'utente. Per alcuni cenni relativi all'anatomia e fisiologia dell'occhio umano e ai movimenti oculari, si rimanda all'appendice C. 52 Capitolo 4: Descrizione della struttura del sistema progettato Schematicamente le fasi che fanno parte dell'architettura del sistema in esame sono: Acquisizione periodica delle immagine dalla webcam Rilevazione posizione dell'occhio, della pupilla e del riferimento sul viso Determinazione della direzione dello sguardo (calcolo gaze, in inglese gaze significa sguardo) Calcolo punto di fissazione Individuazione area fissata dall'utente Le fasi elencate sopra sono riportate nel diagramma di figura 3. Figura 3 53 Capitolo 4: Descrizione della struttura del sistema progettato Vengono di seguito descritti, dettagliatamente, i singoli blocchi che compongono il diagramma. 4.4.1 ACQUISIONE PERIODICA DELLE IMMAGINI DALLA WEBCAM La procedura di acquisizione delle immagini riguarda la cattura delle immagini tramite webcam. La gestione delle webcam è stata realizzata tramite le funzioni della AviCap window class, facente parte delle funzioni VFW (Video For Window) e che permette di incorporare procedure di cattura video in una qualunque applicazione. Lo studio delle condizioni migliori che permettessero di ottenere delle immagini su cui i vari algoritmi potessero poi essere applicati con successo ha riguardato principalmente tre fattori: posizione della webcam, posizione dell'utente rispetto al video e alla webcam e condizioni d'illuminazione dell'ambiente. Prima di tutto la webcam viene posta sotto e non sopra il monitor del PC. Il motivo di questa scelta è dovuto al problema che si verifica quando l'utente rivolge lo sguardo in basso. Con la webcam sopra il monitor, si ottiene infatti un'immagine in cui l'iride dell'occhio é in parte coperto dalle palpebre, risulta quindi difficile, in alcuni casi impossibile, rilevare l'iride e quindi il centro pupilla. L'utente non deve essere troppo distante dal video e dalla webcam. L'importante è che l'immagine riporti una buona inquadratura del viso. A questo proposito non è solo da considerare la distanza utente-webcam, ma anche l'inclinazione della webcam rispetto al viso dell'utente. 54 Capitolo 4: Descrizione della struttura del sistema progettato Osserviamo la figura 4. Figura 4 I problemi affrontati nella valutazione delle due grandezze indicate in figura, distanza dal video e angolo di inclinazione, vengono di seguito analizzati. L'utente non deve essere troppo distante dalla webcam e quindi dal video, essendo quest'ultima posizionata sotto di esso. Se la distanza utente-video è eccessiva l'immagine catturata conterrà molti altri particolari, oltre al viso della persona, e questo renderà più difficile agli algoritmi del sistema rilevare l'occhio. Inoltre la risoluzione utile dell'immagine sarà inferiore. Una serie di prove ha permesso di stabilire mediamente quale sia la distanza massima che l'utente deve mantenere rispetto alla webcam, questo valore si aggira intorno ai 30 cm. Gli algoritmi di rilevazione (del viso, dell'occhio, dell'iride) del sistema si basano su una procedura di scansione di un'immagine binaria, che permette di valutare la concentrazione di pixel neri. Anche l'algoritmo che dall'immagine originale rileva l'area in cui è contenuto il viso opera seguendo questo metodo. E facile intuire che quanti più particolari, oltre al viso, conterrà l'immagine, tanto più l'algoritmo sarà lento. 55 Capitolo 4: Descrizione della struttura del sistema progettato Si osservino la figure 5 e 6. Figura 6 Figura 5 Mentre la distanza utente-video sembra essere corretta, l'inclinazione della webcam va assolutamente modificata. Infatti da queste immagini è impossibile per gli algoritmi riuscire a distinguere l'iride dell'occhio. Figura 7 L'inquadratura dell'immagine di figura 7 offre agli algoritmi condizioni di lavoro adeguate, in quanto i particolari al di fuori del viso della persona sono pochi. In questo caso si è riusciti a posizionare la webcam più vicino al viso, rispetto a quanto fosse stato fatto per le immagini precedenti. 56 Capitolo 4: Descrizione della struttura del sistema progettato E' sufficiente correggere l'inclinazione della webcam e la sua distanza dal viso dell'utente per ottenere delle immagini su cui gli algoritmi possano operare più facilmente. Non è stato determinato, in seguito alle differenti prove, una misura dell'angolo di d'inclinazione della webcam, ma questo verrà definito in base alla posizione che l'utente adotterà di fronte al proprio elaboratore. Una volta stabilita tale posizione si potrà poi fissare la webcam seconda l'esatta angolazione. L'altro problema da affrontare in questo contesto è l'illuminazione dell'ambiente. E' possibile intuire che un ambiente scuro comporta meno problemi rispetto ad uno ben illuminato. Come già spiegato precedentemente, gli algoritmi di rilevazione lavorano su immagini binarie, dove gli occhi possono essere definiti delle "macchie scure" sul viso (bianco). Ma anche un'eventuale ombra può essere definita nello stesso modo e venire erroneamente interpretata, dall'algoritmo di rilevazione, come un occhio! E' quindi molto importante che il viso dell'utente sia ben illuminato, al fine di eliminare le ombre. Dopo una serie di prove la soluzione adottata è stata quella di porre due semplici lampade ai lati dello schermo dell'elaboratore, in modo che entrambi i lati del viso dell'utente fossero adeguatamente illuminati. Il termine "adeguatamente" lascia intendere che bisogna trovare un giusto compromesso, infatti se la presenza di ombre crea problemi nella rilevazione degli occhi, un'eccessiva illuminazione può causarne altri, in questo caso l'immagine dell'iride perde di consistenza e l'algoritmo fatica ad individuarla. Quindi ciò di cui si ha bisogno è una sorgente di luce diffusa. 57 Capitolo 4: Descrizione della struttura del sistema progettato Si riportano di seguito due immagini. Figura 8 Figura 9 Si possono facilmente individuare, nelle immagini presentate, i problemi sopra descritti. Nella prima, l'illuminazione del viso era troppo scarsa e ha causato la presenza di molte ombre, nella seconda, l'illuminazione era troppo forte e ha causato una perdita di consistenza dell'iride, che diventa quindi più difficile da individuare. E' necessario, prima di poter utilizzare il sistema, trovare delle buone condizioni di illuminazione. Tali condizioni sono la base per un suo corretto funzionamento. In conclusione, una volta stabilita la posizione più corretta e anche la più comoda per l'utente, la giusta inclinazione della webcam e un'illuminazione soddisfacente, può avere inizio l'acquisizione delle immagini, su cui verranno applicati gli algoritmi a cui si accenna in seguito. 4.4.2 RILEVAZIONE POSIZIONE DELL'OCCHIO E DELLA PUPILLA Gli algoritmi realizzati a tale scopo, lavorano tutti su di un'immagine binaria. Questo significa che ogni pixel dell'immagine potrà assumere solo due valori: bianco (255) oppure nero (0). Le procedure di rilevazione del viso, dell'occhio e dell'iride si basano tutte sullo studio della concentrazione di pixel neri nell'immagine binaria. 58 Capitolo 4: Descrizione della struttura del sistema progettato Per velocizzare i tempi di esecuzione del sistema, si adottano due procedure differenti per la prima immagini acquisita e per quelle successive. Alla prima immagine catturata viene applicato un algoritmo di rilevazione del viso, questo perché, non potendo disporre di una webcam munita di uno zoom, sarà compito dell'algoritmo "ritagliare" dall'immagine il viso della persona ripresa (il risultato ottenuto è lo stesso che si sarebbe ottenuto se fosse stato possibile fare un zoom sul viso dell'utente). A questo punto, sarà compito di un secondo algoritmo individuare la posizione dell'occhio destro. E' infatti sufficiente lavorare sul movimento di un solo occhio, tuttavia se l'utente presentasse problemi di strabismo, il sistema non funzionerebbe più correttamente. Dall'immagine del viso viene estratta una nuova immagine (sempre binaria) contenente l'occhio destro, da essa un terzo algoritmo rileva le coordinate del centro pupilla. Vediamo nel dettaglio tutti gli algoritmi interessati in questa seconda fase. ALGORITMO CHE INDIVIDUA, ALL'INTERNO DELL'IMMAGINE, L'AREA DEL VISO Algoritmo trasforma l'immagine in una binaria e ne realizza uno zoom del viso: l'immagine catturata dalla webcam viene sottoposta a due elaborazioni, la prima la trasforma in un'immagine in scala di grigi, la seconda in un'immagine posterizzata. Un'immagine in scala di grigi è un'immagine a 8 bit la cui tavolozza contiene 256 sfumature di grigio. La trasformazione in scala di grigi rimuove i colori da un'immagine e sostituisce ciascun colore con un grigio che corrisponde al relativo valore di luminosità. L'effetto è simile a quello di una fotografica in bianco e nero. La posterizzazione riduce il numero di colori e i livelli di luminosità nell'immagine, generando un'immagine più piatta, con bande di colore anziché con gradienti sfumati. Si deve definire il livello di posterizzazione, che rappresenta il numero di livelli di tonalità per ogni canale di un'immagine. Con la posterizzazione i pixel vengono mappati al livello corrispondente più vicino. Ad esempio scegliendo tre livelli di 59 Capitolo 4: Descrizione della struttura del sistema progettato tonalità in RGB, otterremo nove colori: tre per il rosso, tre per il verde e tre per il blu. Posterizzando un'immagine in scala di grigi, su due livelli, il risultato sarà proprio un'immagine binaria. Alcune semplici nozioni di elaborazione dell'immagine sono esposte nell'appendice D, insieme ad una breve descrizione delle funzioni utilizzate per realizzare le operazioni appena descritte. Tali funzioni fanno parte di una libreria di funzioni appositamente create dalla Catenary Inc. per l'elaborazione e l'analisi delle immagini. Non disponendo di una webcam munita di zoom, o comunque di uno zoom sufficientemente potente, l'algoritmo di rilevazione del viso, permette di ottenere un risultato analogo, "ritagliando" dall'immagine originale una seconda immagine, contenente solo il viso della persona. Si mostra di seguito un possibile risultato ottenibile applicando l'algoritmo su di un'immagine. Figura 10 L'algoritmo esegue una scansione dell'immagine, prima per righe e poi per colonne, e rileva gli estremi superiore, sinistro e destro del viso. Usa poi questi valori per "ritagliare" l'area interessata dall'immagine analizzata. Se lo sfondo dell'immagine è completamente nero (a questo scopo è sufficiente porre dietro l'utente una tenda scura) il viso può essere interpretato come una "macchia 60 Capitolo 4: Descrizione della struttura del sistema progettato bianca". Gli estremi del viso vengono rilevati quindi in corrispondenza di una diminuzione dei pixel neri. Si osservi, per comprendere meglio, il grafico sottostante, che riporta la concentrazione dei pixel neri nell'immagine mostrata sopra. 461 415 369 323 277 231 185 93 139 1 120 100 80 60 40 20 0 47 num pixel neri Andamento pixel neri per colonne colonna Figura 11 E' facile rilevare in questo modo gli estremi sinistro e destro del viso. ALGORITMO DI RILEVAZIONE DELL'OCCHIO DESTRO Data l'immagine fornita dal precedente algoritmo, questo secondo algoritmo è in grado di rilevare la posizione dell'occhio destro al suo interno e di restituire una nuova immagine che lo contiene. I passi compiuti durante questa procedura sono due: prima l'immagine è scandita per righe e viene individuata una fascia orizzontale in cui sono contenuti entrambi gli occhi, poi la fascia viene scandita per colonne e finalmente viene individuato l'occhio. Per comprendere meglio si osservino i grafici e le figure riportati di seguito. 61 Capitolo 4: Descrizione della struttura del sistema progettato 97 89 81 73 65 57 49 41 33 25 9 17 250 200 150 100 50 0 1 num pixel neri Andamento pixel neri viso riga Figura 12 Si nota chiaramente nel grafico una zona in cui è presente una maggiore concentrazione di pixel neri, tale zona corrisponde proprio alla fascia del viso in cui sono contenuti gli occhi. L'algoritmo analizza il grafico e determina gli estremi inferiore e superiore della fascia, che verrà quindi estratta dall'immagine. Figura 13 La nuova immagine, cioè la fascia degli occhi, viene nuovamente analizzata per individuare l'occhio destro. An d am en to p ixel n eri - fascia 20 15 10 5 73 67 61 55 49 43 37 31 25 19 13 7 0 1 num pixel neri 25 c o lo n n e Figura 14 62 Capitolo 4: Descrizione della struttura del sistema progettato E' facile notare che l'area in cui sarà posizionato l'occhio destro è quella caratterizzata da una maggiore concentrazione di pixel neri. L'algoritmo individua quindi, dall'analisi del grafico, gli estremi sinistro e destro dell'occhio e ne estrae l'immagine. Figura 15 A questo punto sarà compito del successivo algoritmo, di rilevazione della pupilla, individuare il centro della pupilla. Va fatta ancora una considerazione riguardo la parte di rilevazione della fascia degli occhi. Se l'utente presenta delle sopracciglia molto folte, questo può causare un problema in quanto l'algoritmo può erroneamente interpretare le sopracciglia come occhi. In seguito ad una serie di modifiche ed accorgimenti, aggiunti all 'algoritmo, il rischio del verificarsi di questo errore è stato molto ridotto, anche se si è potuto appurare che, a volte, la rilevazione della fascia può fallire. La procedura fin qui descritta viene utilizzata solamente per la prima immagine della sequenza di immagini catturate. I dati relativi alla posizione dell'occhio vengono memorizzati in un buffer ed utilizzati per individuare la posizione dell'occhio destro nelle immagini successive, ammesso che l'utente non compia movimenti eccessivi del capo. In ogni caso viene applicato un certo margine, per avere maggiore sicurezza di racchiudere, completamente, all'interno dell'area definita, l'immagine dell'occhio. All'immagine così ottenuta, che risulta di dimensioni molto minori rispetto all'intera immagine catturata (640 x 480), viene applicato un primo algoritmo che permette di racchiudere l'occhio in un'area di dimensioni ancora minori, successivamente si applica l'algoritmo di rilevazione del centro pupilla descritto di seguito. 63 Capitolo 4: Descrizione della struttura del sistema progettato Il motivo dell'esistenza di due procedure di rilevazione dell'occhio diverse per la prima immagine acquisita e per quelle successive sta nel voler rendere più veloce il sistema. Infatti i tempi di elaborazione dell'immagine intera sono maggiori rispetto a quelli richiesti per l'elaborazione solamente di una parte dell'immagine. ALGORITMO DI RILEVAZIONE DEL CENTRO PUPILLA Scopo dell'algoritmo è rilevare l'iride all'interno dell'occhio e calcolarne poi il centro. Infatti, trovandosi la pupilla al centro dell'iride, il centro iride coincide col centro pupilla. La procedura di individuazione dell'iride adotta lo stesso metodo utilizzato dall'algoritmo precedente per individuare la fascia e poi l'occhio. In realtà questa operazione permette di ottenere solo gli estremi sinistro e destro dell'iride. E' facile intuire che l'individuazione degli estremi superiore ed inferiore risulta più complicata a causa della presenza delle palpebre. Noti gli estremi sinistro e destro, possiamo individuare una fascia, questa volta verticale, entro cui è posizionata l'iride. Figura 16 Assumendo che l'iride abbia la forma di un cerchio (in realtà la sua immagine è ellittica), possiamo pensare di inscrivere questo cerchio in un quadrato. Per iscrivere perfettamente un cerchio in un quadrato, il quadrato deve avere il lato di lunghezza pari al diametro del cerchio. Il diametro dell'iride si può facilmente calcolare, avendo a disposizione l'estremo sinistro e destro. A questo punto si costruisce il quadrato, che verrà fatto scorrere lungo la fascia verticale precedentemente individuata. Scopo di tale operazione è individuare l'area della fascia a maggiore concentrazione di pixel neri, cioè individuare l'iride. Tra tutte le aree analizzate, si sceglie quindi quella in cui il numero di pixel neri contati è maggiore. L'area scelta ha la forma di un quadrato, che, secondo i ragionamenti finora fatti, iscrive l'iride. Il centro del quadrato corrisponderà quindi anche al centro dell'iride. 64 Capitolo 4: Descrizione della struttura del sistema progettato In questo modo l'algoritmo riesce ad individuare il centro della pupilla dell'occhio destro e a produrre, come risultato, le coordinate del punto. Prima di dare inizio alla procedura di rilevazione, gli algoritmi di rilevazione occhio e centro pupilla, eseguono ancora un'operazione di "smussamento" sui grafici, di cui si è parlato finora. Eventuali zone d'ombra presenti sul viso, potrebbero costituire un problema per il corretto funzionamento degli algoritmi. Queste ombre infatti compaiono nel grafico come dei "picchi", che possono ingannare o comunque mettere in difficoltà, gli algoritmi di rilevazione. La soluzione è stata quella di costruire un filtro per "smussare" il grafico ed eliminare questi "picchi". L'operazione di "smussamento" non consiste nient'altro che in una media e produce il seguente risultato. Figura 17 4.4.3 INDIVIDUAZIONE DEL RIFERIMENTO E DETERMINAZIONE DELLA DIREZIONE DELLO SGUARDO Per poter determinare la direzione dello sguardo, gaze in inglese, della persona, ci si è basati su una serie di considerazioni geometriche. Per poter capire cosa stia fissando l'utente, sul video, è necessario raccogliere un certo numero di punti (campioni). Al fine di confrontare questi punti e individuare il punto di fissazione è necessario che essi siano rappresentati nel medesimo riferimento. 65 Capitolo 4: Descrizione della struttura del sistema progettato Questo sistema di riferimento comune è individuato da un segno nero, rettangolare che si pone sulla fronte dell'utente. Quindi le operazioni da eseguire in questa fase sono: rilevazione del segno sul viso, rappresentazione delle coordinate del centro pupilla rispetto a tale riferimento e quindi calcolo del gaze finale. Ognuna delle operazioni elencate è eseguita da un algoritmo specifico. ALGORITMO DI RILEVAZIONE DEL RIFERIMENTO Questo algoritmo rileva un punto particolare, nell'immagine, che corrisponde all'origine di un sistema di riferimento, che viene indicato con R. Il punto in questione corrisponde all'angolo alto sinistro del segno rettangolare nero posto sulla fronte dell'utente. La procedura di rilevazione del riferimento è molto semplice, l'algoritmo scandisce l'immagine alla ricerca di un punto nero. L'immagine oggetto della scansione in realtà è solo una piccola area dell'immagine originale, che rappresenta una porzione della fronte entro cui è posizionato il segno. Per le immagini successive alla prima, questa "porzione" è determinata in base alle coordinate del riferimento della prima immagine, costruendo intorno a questo punto un'area a cui viene applicato l'algoritmo di rilevazione del riferimento. Bisogna comunque tenere conto, che a causa delle variazioni delle condizioni di luce, tra un'immagine e l'altra, la posizione di R non sarà sempre esattamente la stessa. In conclusione, all'utente che usa il sistema, dev'essere applicato un segno sul viso che permette di individuare un riferimento, rispetto a cui vengono rappresentati tutti i punti calcolati, necessari per determinare il punto di fissazione. 66 Capitolo 4: Descrizione della struttura del sistema progettato Si osservi la figura seguente. R Figura 18 Il sistema di riferimento R è un sistema di riferimento solidale col viso, il centro pupilla calcolato dev'essere espresso in questo sistema di riferimento. ALGORITMO PER LA RAPPRESENTZIONE DEL PUNTO CENTRO PUPILLA NEL SISTEMA DI RIFERIMENTO R Avendo a disposizione le coordinate del centro pupilla, la posizione dell'occhio e le coordinate dell'origine del sistema di riferimento, è sufficiente applicare una serie di considerazioni geometriche per disporre delle coordinate del centro pupilla nel sistema di riferimento-viso (R). Si osservi la figura 18. Figura 19 67 Capitolo 4: Descrizione della struttura del sistema progettato Il sistema di riferimento di un'immagine è un sistema di riferimento x,y, la cui origine coincide con l'angolo in alto a sinistra dell'immagine stessa, ad esempio l'origine del riferimento dell'immagine originale è il punto indicato con la lettera O in figura 18. Le coordinate del centro pupilla fornite dall'algoritmo di rilevazione, sono espresse nel sistema di riferimento dell'occhio, ma a sua volta la posizione dell'occhio è espressa nel sistema di riferimento della fascia, i cui estremi sono espressi nel sistema di riferimento del viso. Gli unici dati espressi nel sistema di riferimento dell'immagine originale sono: le coordinate del riferimento R e gli estremi superiore, sinistro e destro del viso. Tutte le informazioni fin qui elencate sono contenute in un buffer in cui sono state via via memorizzate. Come prima cosa riportiamo la posizione dell'occhio nel sistema di riferimento dell'immagine originale. In particolare solo le coordinate (x1,y1) dell'angolo alto, sinistro del rettangolo vengono modificate, nel modo seguente: x1O = x1 + estremo sinistro viso y1O = y1 + estremo superiore viso Le variabile x1 e y1 sono espresse nel sistema di riferimento dell'immagine fascia, mentre le variabili estremo sinistro viso e estremo superiore viso sono espresse nel sistema di riferimento dell'immagine originale. Come secondo passo calcoliamo anche le coordinate del centro pupilla (x_centro_p,y_centro_p) nello stesso sistema di riferimento (immagine originale): x_centro_pO = x_centro_p + x1 y_centro_pO = y_centro_p + y1 68 Capitolo 4: Descrizione della struttura del sistema progettato A questo punto si hanno a disposizione i seguenti dati: coordinate del centro pupilla espresse nel sistema di riferimento dell'immagine originale, origine di un secondo sistema di riferimento (R) espressa anch'essa nel sistema di riferimento dell'immagine originale. Ciò che si vuole ottenere sono le coordinate del centro pupilla, espresse nel secondo sistema di riferimento (R). La situazione descritta è rappresentata in figura 20. Figura 20 Da qui è possibile intuire che le trasformazioni finali da applicare alle coordinate del centro pupilla, per poterle esprimere nel sistema R, sono: x_centro_pR = x_rif - x_centro_pO y_centro_pR = y_centro_pO - y_rif Le coordinate così calcolate rappresentano proprio il gaze finale ed esprimono la posizione del centro pupilla rispetto al segno di riferimento posto sul viso. 69 Capitolo 4: Descrizione della struttura del sistema progettato L'algoritmo appena descritto permette quindi di raccogliere una serie di punticampione, che verranno passati di volta in volta all'algoritmo successivo che li utilizzerà per calcolare il punto di fissazione. 4.4.4 CALCOLO PUNTO DI FISSAZIONE Di questa fase si occupa un algoritmo che, sulla base di un dato numero di campioni (un numero minimo necessario per individuare una fissazione), calcola le coordinate del punto di fissazione. Tale punto permetterà di individuare quale fosse l'area del video che l'utente stava fissando. L'algoritmo di rilevazione delle fissazioni si basa sullo studio della concentrazione dei gaze campionati. Si osservi il grafico di figura 21, che riporta la posizione di una serie di campioni rilevati da immagini successive. (y) Spostamenti verticali S p o s t a m e n t o g a z e ( 1 0 c a m p io n i) 85 84 83 82 81 80 79 78 82 84 86 88 90 92 S p o s ta m e n ti o riz z o n ta li (x ) Figura 21 I campioni esaminati in questo caso sono solamente 10, si nota facilmente che i punti sono concentrati, per la maggior parte, nella medesima zona (quella cerchiata). Le coordinate del punto di fissazione sono determinate in base ad una semplice media fra i punti contenuti nella stessa area. Man mano che viene esaminato un nuovo gaze, l'algoritmo verifica che il punto sia incluso nella stessa area dei punti precedentemente considerati e a questo punto calcola un nuovo punto di fissazione. 70 Capitolo 4: Descrizione della struttura del sistema progettato La logica di funzionamento dell'algoritmo è la seguente: si assume che l'utente stia fissando il suo sguardo su un particolare punto dello schermo, si può quindi facilmente intuire che tutti i punti di fissazione, rilevati entro l'intervallo di tempo in cui l'utente mantiene lo sguardo fisso su quel punto, cadranno più o meno nella stessa area. I punti che cadono nella stessa regione (definita da una soglia) si considerano facenti parte della medesima fissazione. Può accadere, ad un certo punto, che un campione risulti esterno alla regione fino a quel momento considerata, questo può voler dire due cose: l'utente ha rivolto il suo sguardo altrove perché si è distratto oppure perché ha modificato la sua scelta e ha deciso di fissare un altro punto, un'altra possibile spiegazione va ricercata in eventuali errori di misurazione delle coordinate dei punti, a carico degli algoritmi precedentemente descritti. I campioni che "cadono" al di fuori della regione saranno comunque riammessi a far parte della fissazione se i punti successivi ritornano a stare in tale regione. Questo per tenere in considerazione i momenti di distrazione o di indecisione in cui può incappare l'utente e per compensare gli errori a cui si accennava prima. I punti che rientrano nella stessa regione si considerano appartenenti ad una medesima fissazione: la fissazione presente. Appena si rileva un campione estraneo a questa fissazione, si fa l'ipotesi di una nuova fissazione. Una fissazione si considera terminata quando le è stato attribuito un numero di campioni sufficiente per poter calcolare, con buona approssimazione, le coordinate del punto di fissazione. Per poter comprendere meglio e più facilmente la logica con cui opera l'algoritmo di calcolo delle fissazioni viene riportato di seguito il suo pseudo codice. 71 Capitolo 4: Descrizione della struttura del sistema progettato PSEUDO CODICE DELL'ALGORITMO PER IL CALCOLO DELLE FISSAZIONI L'algoritmo riceve come dati di input le seguenti variabili: Coordinate x_gaze, y_gaze del punto calcolato Soglia che definisce le dimensioni dell'area a cui i punti devono appartenere per essere considerati parte della fissazione Numero minimo di campioni necessario a calcolare una fissazione (N) Se c'è una fissazione in corso Calcolare la deviazione del punto (x_gaze,y_gaze) dalla fissazione presente Se la deviazione è inferiore alla soglia (punto appartenente alla fissazione presente) I punti scartati in precedenza vengono riammessi nella fissazione La fissazione presente viene aggiornata Altrimenti (punto non appartenente alla fissazione presente) Incrementa il numero di punti scartati dalla fissazione presente Se la fissazione presente è terminata Si dichiara terminata la fissazione presente La fissazione presente diventa la precedente La fissazione nuova diventa la presente Calcolare la deviazione del punto (x_gaze,y_gaze) dalla fissazione presente Se la deviazione è inferiore alla soglia La fissazione presente viene aggiornata Altrimenti: Inizia una nuova fissazione Altrimenti (fissazione presente non ancora terminata): Se esiste l'ipotesi di una nuova fissazione Calcolare la deviazione del punto (x_gaze,y_gaze) dalla nuova fissazione 72 Capitolo 4: Descrizione della struttura del sistema progettato Se la deviazione è inferiore alla soglia (punto appartenente alla nuova fissazione) La fissazione nuova viene aggiornata Se alla nuova fissazione appartengono N punti La nuova fissazione diventa quella presente Altrimenti (punto non appartenente alla nuova fissazione): Inizia una nuova fissazione Altrimenti (non esiste una nuova fissazione): Inizia una nuova fissazione Altrimenti (non esiste una fissazione presente): Inizia un fissazione presente 4.4.5 INDIVIDUAZIONE DELL'AREA FISSATA Gli unici dati che sono rimasti a disposizione, per riuscire a capire quale area l'utente stava fissando, sono: le coordinate del punto di fissazione, fornite dall'algoritmo precedentemente descritto, e ovviamente i risultati della procedura di calibrazione. Vediamo nel dettaglio in cosa consiste e quali risultati produce questa procedura: lo scopo della calibrazione è quella di ottenere una sorta di "mappa" del video contenente le coordinate dei punti che si è chiesto all'utente di fissare, durante l'esecuzione della procedura di calibrazione. Ogni punto di fissazione calcolato verrà confrontato con questa "mappa" ed in base ad essa un algoritmo determinerà in quale area cade il punto considerato. 73 Capitolo 4: Descrizione della struttura del sistema progettato Proviamo a osservare l'esempio seguente per comprendere meglio il procedimento descritto. Figura 22 Il punto scuro è il punto di fissazione calcolato, i punti chiari sono i risultati della calibrazione e rappresentano la "mappa" a cui si accennava prima. Si osserva chiaramente dalla figura che il punto di fissazione appartiene all'intorno del punto chiaro che individua l'area centrale in basso e che quindi l'area fissata dall'utente è quella evidenziata. Questo semplice algoritmo ha il compito di eseguire un confronto tra le coordinate del punto calcolato e i punti appartenenti alla calibrazione, calcolare la distanza del punto in esame dai diversi punti memorizzati, individuare il punto la cui distanza è minore e produrre come output l'informazione su quale sia l'area fissata dall'utente. 4.5 LA PROCEDURA DI INIZIALIZZAZIONE DEL SISTEMA: LA CALIBRAZIONE Prima di poter utilizzare il sistema l'utente deve inizializzarlo eseguendo una procedura di calibrazione. Sul video viene mostrata all'utente una tabella composta da sei celle, ognuna di esse contrassegnata da un punto rosso, che è il punto da fissare. 74 Capitolo 4: Descrizione della struttura del sistema progettato In tutto l'utente deve fissare sei punti diversi, partendo dall'angolo in alto a destra e procedendo in senso antiorario fino ad arrivare all'angolo in basso a destra. Durante l'esecuzione della procedura si ottiene una sequenza di punti che viene utilizzata dall'algoritmo per il calcolo delle fissazioni per calcolare appunto le coordinate dei diversi punti fissati. I sei punti calcolati vengono memorizzati in un buffer, dopodiché un altro algoritmo provvede a verificare la correttezza dell'esecuzione della procedura appena terminata. I sei punti calcolati e memorizzati dovranno grosso modo formare un rettangolo e dovranno soddisfare determinati vincoli sulle coordinate. In caso contrario l'algoritmo produce un messaggio di output in cui avverte l'utente che la procedura di calibrazione deve essere ripetuta. Vengono mostrate una serie di immagini che possono aiutare a comprendere meglio quanto appena descritto. L'utente deve fissare i sei punti segnalati sullo schermo, seguendo l'ordine delle frecce. Figura 23 75 Capitolo 4: Descrizione della struttura del sistema progettato Ad ogni punto corrisponderà un punto (x,y) nel sistema di riferimento comune, solidale col viso dell'utente. P1 P6 P2 P3 P5 P4 Figura 24 L'algoritmo che verifica la correttezza dei risultati della calibrazione controlla che le coordinate dei sei punti rispettino determinate condizioni, facilmente intuibili: per i punti P1, P2, P3 la coordinata dell'ascissa deve rispettare il vincolo seguente: x3 < x2 < x1 per i punti P4, P5, P6 la coordinata dell'ascissa deve rispettare il vincolo seguente: x4 < x5 < x6 infine la coordinata dell'ordinata dev'essere tale da distinguere i punti inferiori da quelli superiori, in questo modo: y1 < y4, y1 < y5, y1 < y6 y2 < y4, y2 < y5, y2 < y6 y3 < y4, y2 < y5, y2 < y6 76 Capitolo 4: Descrizione della struttura del sistema progettato Se le condizioni appena descritte sono soddisfatte dai punti calcolati con la procedura di calibrazione, la procedura termina, in caso contrario dev'essere ripetuta fino a quando non si ottiene il soddisfacimento di tutti i vincoli. Si mostrano alcuni esempi di risultati ottenuti da diverse procedure di calibrazione. CALIBRAZIONE 120 100 Y 80 60 40 20 0 0 50 100 150 X Figura 25 CALIBRAZIONE 100 80 Y 60 40 20 0 0 50 100 150 X Figura 26 77 Capitolo 4: Descrizione della struttura del sistema progettato Come si può facilmente notare dai grafici mostrati la calibrazione dà origine ad una sorta di "mappa" pseudo rettangolare in cui sono memorizzate le coordinate dei punti di fissazione calcolati durante la procedura. Tale "mappa" viene utilizzata dall'algoritmo di predizione dell'area fissata per determinare quale tra le sei celle della tabella mostrata all'utente è quella fissata. 78 5 Realizzazione sperimentale dei singoli moduli del sistema 5.1 INTRODUZIONE Nel presente capitolo viene esposto ciò che si è realizzato a partire dalle decisioni operative di progetto. Nella prima parte verrà svolta un'analisi sul linguaggio di programmazione utilizzato e sulle librerie che si è deciso di includere per sviluppare il software. Nella seconda parte viene presentata la realizzazione software con le relative strategie utilizzate. 80 Capitolo 5: Realizzazione sperimentale dei singoli moduli del sistema 5.2 LINGUAGGIO DI PROGRAMMAZIONE E LIBRERIE Il codice di tutti gli algoritmi è stato implementato utilizzando il linguaggio C. La scelta del linguaggio C, come linguaggio di programmazione, per la scrittura degli algoritmi facenti parte del progetto di tesi non ha alcun fondamento particolare. Il motivo principale per cui si è optato per il linguaggio C, piuttosto che per un altro tipo di linguaggio, è legato unicamente al fatto che le conoscenze di programmazione in C, di cui si disponeva, erano maggiori rispetto a quelle su tecniche di programmazione con altri linguaggi. La stesura del codice scritto in linguaggio C è stata realizzata utilizzando il Visual C++ 6.0, in quanto in alcuni casi si è fatto ricorso alle potenzialità offerte dalla programmazione C++, in particolare per la creazione di finestre di dialogo. L'ideazione dei vari algoritmi, che verranno presentati di seguito, è stata affiancata anche dall'utilizzo di alcune librerie particolari. La prima libreria è quella che ha permesso di utilizzare tutta una serie di funzioni di elaborazione ed analisi dell'immagine. Questa libreria è parte di un prodotto software, Victor image processing, realizzato dalla Catenary Systems. Victor è una collezione di funzioni che permette alla propria applicazione di manipolare delle immagini, tramite operazioni di elaborazione, modifica dei colori, settaggio di alcuni parametri, etc. La libreria Victor è una DLL che può essere utilizzata con diversi linguaggi di programmazione, tra cui C e C++, Visual Basic e Java. Il secondo gruppo di funzioni utilizzate sono quelle della AviCap Window Class, definite nel file d'intestazione di Windows VFW.h, che sta appunto per Video For Windows. Queste funzioni permettono di utilizzare, all'interno della propria applicazione, delle funzionalità di cattura video. AviCap fa sì che l'applicazione possa accedere, con un semplice sistema di interfaccia basato su messaggi, ad un sistema hardware di acquisizione video o audio e possa controllare il processo di cattura. 81 Capitolo 5: Realizzazione sperimentale dei singoli moduli del sistema Con AviCap è possibile sia acquisire un frame per volta sia operare un'acquisizione in tempo reale. Inoltre permette di controllare la risorsa video, è infatti possibile dare inizio alla procedura di cattura, interromperla per un periodo oppure terminarla. Usando AviCap Windows Class è possibile eseguire le seguenti operazioni: - catturare audio e video; - connettere e disconnettere il dispositivo di input (ad esempio una webcam); - specificare il file in cui si vuole andare a salvare l'immagine catturata; - settare la frequenza di cattura; - visualizzare una finestra di dialogo da cui controllare la risorsa video o audio - creare, salvare e caricare tabelle (tavolozze) dei colori; - catturare e salvare un singolo frame come bmp 5.3 REALIZZAZIONE DEL SOFTWARE La finalità primaria per lo sviluppo del software è la capacità di far fronte a modifiche che per vari motivi devono essere effettuate senza che per questo l'intera struttura dell'applicazione già costruita debba essere messa nuovamente in discussione ed elaborata. A tal fine è stata utile la suddivisione del sistema in più sottoinsiemi non correlati, in modo da poterne dominare la complessità più facilmente e, nel caso in cui debba essere apportato un cambiamento, questo sia il più locale possibile e interessi il minor numero di sottoinsiemi e delle loro interrelazioni. Col termine "modulo" viene designato ciascuno dei sottoinsiemi in cui il sistema complessivo è stato suddiviso. Al fine di chiarire l'architettura del sistema, è necessario fornire, oltre alla definizione dei moduli, la definizione dei loro collegamenti. Questa verrà riportata in seguito. 82 Capitolo 5: Realizzazione sperimentale dei singoli moduli del sistema 5.3.1 SUPPORTI ALL'IMPLEMENTAZIONE DI UN'APPLICAZIONE DIMOSTRATIVA Nell'architettura presentata nella sezione precedente non si è accennato all'ipotesi di utilizzare delle librerie, come elemento di supporto. L'utilizzo di tali librerie è legato esclusivamente alla necessità di voler creare un'applicazione del sistema che mostri come opera quest'ultimo. Si era infatti inizialmente pensato di realizzare una libreria di immagini che racchiudesse immagini in formato "bitmap" (estensione .bmp) che, opportunamente richiamate, venivano visualizzate sullo schermo dell'elaboratore. Ognuna di queste immagini avrebbe dovuto rappresentare una tabella suddivisa in sei elementi, tanti quante sono le scelte possibili che l'utente del sistema ha la possibilità di selezionare sul video con lo sguardo. Una delle tabelle della libreria sarebbe stata utilizzata solamente durante la fase della calibrazione del sistema e avrebbe dovuto mostrare una tabella di sei elementi, in cui erano segnalati con dei punti rossi, i punti che l'utente doveva fissare al fine di fornire al sistema i dati necessari per poter poi predire la direzione dello sguardo. L'algoritmo per la calibrazione avrebbe dovuto occuparsi di richiamare questa particolare tabella. Una seconda immagine avrebbe dovuto rappresentare invece la tabella che viene visualizzata all'utente quando utilizza il sistema. L'utente ha la possibilità di selezionare uno dei sei elementi della tabella semplicemente fissandolo per un determinato periodo. Quando il sistema fosse riuscito ad interpretare la scelta dell'utente e avesse quindi individuato quale tra i sei elementi fosse quello scelto da lui, avrebbe dovuto richiamare una fra le sei restanti immagini. Si era pensato di associare ad ognuna di esse una tabella in cui un elemento fosse evidenziato (colorato) rispetto agli altri. A seconda dell'area predetta, il sistema avrebbe dovuto richiamare la tabella appropriata. 83 Capitolo 5: Realizzazione sperimentale dei singoli moduli del sistema La difficoltà nella realizzazione di questa ipotesi stava nell'implementare la possibilità di richiamare e visualizzare a video delle bitmap, man mano che si verificavano determinate condizioni durante l'esecuzione dell'applicazione. Lo studio fatto, al fine di risolvere questo problema, ha portato ad accantonare l'idea di creare una libreria di immagini a favore invece dell'utilizzo di un particolare tipo di controllo messo a disposizione dal Visual C++: il controllo Microsoft FlexGrid (MSFlexGrid). Questo controllo permette di visualizzare ed eseguire operazioni su di una tabella, inoltre fornisce una completa flessibilità per unire, dividere e formattare tabelle, che possono anche contenere immagini o testo. E' possibile accedere ad ogni singola cella della tabella creata sia facendo riferimento ad essa all'interno del proprio codice, utilizzando gli indici di riga e colonna, oppure col mouse, mentre l'applicazione è in fase d'esecuzione. Per quando concerne l'applicazione sviluppata per il progetto di tesi, le uniche operazioni eseguite sulla tabella sono state il dimensionamento delle celle (altezza delle righe e larghezza delle colonne), in modo che la tabella visualizzata occupasse tutto lo schermo, l'accesso alle singole celle tramite gli indice di riga e colonna e l'attribuzione ad una singola cella di un colore (ad esempio il rosso). Grazie a queste semplici operazioni è stato possibile far sì che, durante tutto il tempo dell'esecuzione dell'applicazione, un tabella fosse visualizzata sullo schermo e che la cella fissata dall'utente venisse di volta in volta illuminata (colorata di rosso). Sicuramente una gestione del genere è molto meno pesante rispetto al dover ogni volta caricare una bitmap per visualizzarla. E' comunque da ricordare che prima di poter utilizzare MSFlexGrid bisogna includere nel proprio progetto in Visual C++ il file MsFlexGrid.ocx, quest'ultimo è un particolare tipo di file che contiene il codice eseguibile per implementare un controllo ActiveX. Un controllo ActiveX è un oggetto che è possibile inserire in una finestra di dialogo, al fine di permettere o aumentare l'iterazione dell'utente con l'applicazione. 84 Capitolo 5: Realizzazione sperimentale dei singoli moduli del sistema Il termine ActiveX è un termine nuovo, precedentemente conosciuto come OLE (Object Linking Embedding), che veniva in origine utilizzato per descrivere la capacità di inserire oggetti di vario tipo in documenti di un altro, come l'inserimento di fogli di Excel in un documento Word. Oggi quest'espressione ha un significato più ampio. 5.3.2 IMPLEMENTAZIONE DEL SOFTWARE L'applicazione sviluppata è un'applicazione con finestra di dialogo (dialog based), all'avvio quindi viene mostrata all'utente una finestra all'interno della quale è visualizzata una tabella di sei celle (due righe e tre colonne). Sono anche disponibili tre tasti: - un tasto Inizio per avviare l'esecuzione delle funzioni di inseguimento oculare e di predizione dello sguardo; - un tasto Fine per interrompere momentaneamente l'esecuzione; - un tasto Chiudi per terminare l'applicazione. Il progetto del sistema è basato su una serie di funzioni, appartenenti a categorie diverse, dichiarate e definite all'interno di file d'intestazione (.h). Le diverse funzioni vengono richiamate all'interno di una funzione Esecuzione() che viene automaticamente richiamata nel momento in cui viene premuto il tasto Inizio. Il corpo base di Esecuzione() è strutturato nel modo seguente e rappresenta l'implementazione dell'intero sistema di puntamento oculare: Esecuzione: INIZIALIZZAZIONI VARIE 1) Definizione del numero minimo di campioni necessari per definire una fissazione e della distanza massima di un punto dal punto di fissazione (soglia, in pixel). 85 Capitolo 5: Realizzazione sperimentale dei singoli moduli del sistema 2) Finché i risultati della procedura di calibrazione non sono corretti ripetere la procedura di calibrazione. 3) Inizializzare il buffer per la memorizzazione dei campioni per il calcolo delle fissazioni. CORPO PRINCIPALE DELLA FUNZIONE Finché il bottone Fine non viene premuto: 1) Cattura e salvataggio di un'immagine. 2) Definizione delle due aree contenenti il segno di riferimento e l'occhio destro a partire dall'immagine catturata. 3) Calcolo delle coordinate x,y del punto origine del sistema di riferimento comune a tutti i campioni raccolti. 4) Calcolo coordinate del centro pupilla a partire dall'immagine (binaria) dell'occhio destro. 5) Determinazione direzione dello sguardo, cioè espressione delle coordinate calcolate al punto 4) nel sistema di riferimento comune. 6) Calcolo punto di fissazione. Nel caso la fissazione risulti terminata allora viene fatta una predizione per determinare quale fosse l'area fissata dall'utente e la corrispondente cella della tabella viene colorata di rosso. 86 Capitolo 5: Realizzazione sperimentale dei singoli moduli del sistema 5.3.2.1 RAPPRESENTAZIONE SCHEMATICA DEI MODULI DEL PROGETTO L'ordine con cui sono stati presentati i vari file d'intestazione che contengono il codice degli algoritmi su cui è basato il funzionamento del sistema e il loro contenuto fa esattamente riferimento alla struttura del progetto. Ogni file .h è associato ad un particolare modulo e l'ordine è quello che è stato definito per i vari moduli in cui il progetto è suddiviso. Per meglio comprendere questa suddivisione si riporta di seguito uno schema, che rappresenta la disposizione dei moduli e i collegamenti tra essi, all'interno del progetto. 87 Capitolo 5: Realizzazione sperimentale dei singoli moduli del sistema Inizializzazioni VERO fine Fine? FALSO cattura area occhio area riferimento (x_centrop, y_centrop) (x_rif,y_rif) direzione sguardo calcolo fissazione VERO fissazione terminata? predizione FALSO tabella a video 88 Capitolo 5: Realizzazione sperimentale dei singoli moduli del sistema 5.3.2.2 DESCRIZIONE DEI DIVERSI MODULI DEL PROGETTO Inizializzazioni La prima parte di inizializzazione consiste nel settare alcuni parametri che saranno utilizzati nella parte di calcolo delle fissazioni. Questi parametri sono il numero minimo di campioni necessario a definire una fissazione e la distanza minima che un punto deve avere dal punto di fissazione per poter essere considerato parte della fissazione in corso. E' facile comprendere che, nell'intervallo di tempo in cui l'utente sta fissando un certo punto sul video, tutti i campioni raccolti in tale intervallo cadranno grosso modo nella stessa regione. Non resta quindi che stabilire di quanti campioni è necessario disporre perché il calcolo del punto di fissazione sia abbastanza affidabile e la misura della dimensione della regione in cui i punti di una stessa fissazione si addensano. La determinazione del numero minimo di campioni sarà influenzata anche dalla velocità con cui opera il sistema, se il sistema è lento meno campioni sono necessari e più veloce sarà la predizione dell'area fissata. Attualmente questo parametro è stato settato a tre campioni. La misura della regione a cui si accennava sopra non è nient'altro che la definizione del raggio di un'area circolare con centro proprio il punto di fissazione calcolato. Se un punto sta ad una distanza dal centro maggiore del raggio allora non appartiene a quella fissazione perché cade al di fuori della regione, in caso contrario significa che fa parte della fissazione. non appartiene alla fissazione appartiene alla fissazione Figura 1 89 Capitolo 5: Realizzazione sperimentale dei singoli moduli del sistema Attualmente il valore attribuito a questo parametro è di cinque pixel. Infatti l'unità di misura per il calcolo della distanza tra due punti è il pixel. Sempre all'interno della fase di inizializzazione troviamo la procedura di calibrazione che ha appunto lo scopo di inizializzare il sistema prima che l'utente lo possa utilizzare. L'utente deve fissare sei differenti punti sul video che verranno memorizzati in un buffer in modo da avere una sorta di mappa a cui riferirsi durante lo studio dello spostamento dello sguardo dell'utente, nella fase di utilizzo del sistema. Fin tanto che la procedura di calibrazione non risulta essere conclusa correttamente è richiesto all'utente di ripeterla. La funzione definizione_area_sguardo (calibrazione_sistema.h) controlla che l'ordine dei punti memorizzati sia corretto, cioè identifichi grosso modo un rettangolo e che quindi lo spostamento dello sguardo dell'utente (dall'angolo in alto a destra all'angolo in basso a destra, in senso antiorario) sia stato registrato correttamente. L'ultima operazione di inizializzazione da fare è sul buffer che raccoglie di volta in volta i punti-campione utilizzati dalla funzione calcola_fissazione (rileva_fissazione.h) per fornire le coordinate del punto di fissazione. Tutti i campi del buffer vengono settati a zero. A questo punto può avere inizio l'utilizzo vero e proprio del sistema da parte dell'utente. Cattura e salvataggio Non c'è una vera e propria procedura che si occupa di questa parte, ma si richiamano direttamente due funzioni appartenenti all'AVICap window class: una per la cattura di un singolo frame (capGrabFrame) ed una per il salvataggio su disco dell'immagine catturata (capSaveFileDIB). 90 Capitolo 5: Realizzazione sperimentale dei singoli moduli del sistema Ogni immagine catturata viene salvata su I: col nome di viso.bmp. La lettera I identifica un driver virtuale che è stato creato con un software apposito, RAMDisk della Cenatek. La scelta dell'utilizzo di un software del genere è legata all'esigenza di dare maggiore velocità all'applicazione, in quanto una RAM è più veloce rispetto al disco fisso nelle operazioni di salvataggio e recupero dei dati. In questo caso i dati di cui si parla sono le immagini su cui operano i vari algoritmi. definizione area occhio e area riferimento Bisogna a questo punto precisare che questa fase è gestita in maniera differente a seconda che si tratti della prima immagine acquisita oppure delle immagini successive. La prima immagine catturata dalla webcam, durante la procedura di calibrazione, serve unicamente per rilevare la posizione dell'occhio destro e del segno di riferimento all'interno dell'immagine 640 x 480. Le coordinate che identificano queste due posizioni sono salvate in un buffer ed utilizzate per identificare, nelle immagini successive, la posizione dell'occhio e del riferimento. In questo modo si guadagna in velocità perché non è più necessaria la scansione dell'immagine intera, per ricercare l'occhio e il riferimento, ma si determina automaticamente dove sono posizionati l'occhio e il riferimento all'interno delle immagini successivamente acquisite. E' chiaro che questo discorso funziona solo se i movimenti della testa dell'utente sono lievi. 91 Capitolo 5: Realizzazione sperimentale dei singoli moduli del sistema Prima immagine: le operazioni eseguite sulla prima immagine catturata sono: identificazione della zona del viso all'interno dell'immagine intera individuazione del segno di riferimento e calcolo delle coordinate rilevamento posizione dell'occhio Con la prima operazione si ricavano le coordinate degli estremi del viso, quindi margine superiore, sinistro e destro. Con la seconda operazione si delimita una zona della fronte, in base ai risultati dell'operazione precedente, in cui andare ad applicare l'algoritmo di ricerca del segno di riferimento. Con la terza operazione si va a ricercare prima la fascia contenente gli occhi e poi in questa la posizione dell'occhio destro. Una volta che si hanno a disposizione tutti questi dati è semplice calcolare, nel sistema di riferimento dell'immagine stessa (l'origine coincide con l'angolo in alto a sinistra), la posizione dell'occhio e del riferimento. Posizione riferimento posizione occhio Figura 2 La posizione dell'occhio e del riferimento così ottenute vengono memorizzate in un buffer. 92 Capitolo 5: Realizzazione sperimentale dei singoli moduli del sistema Immagini successive: utilizzando la funzione taglia_aree (definisce_aree.h) si isolano dall'immagine catturata due sezioni: una che dovrebbe contenere l'occhio destro e l'altra che dovrebbe contenere il segno di riferimento. L'identificazione di queste due aree è fatta sulla base dei dati ottenuti dalla prima immagine, andandoli a leggere dal buffer in cui sono stati precedentemente memorizzati. Rispetto a questi dati vengono però utilizzati in più dei margini di sicurezza, per avere la certezza che le due aree selezionate contengano effettivamente gli elementi che interessano, tenendo quindi conto di eventuali movimenti del capo dell'utente. immagine i-esima: area occhio area riferimento Figura 3 Con questo sistema gli algoritmi si trovano a dover operare su immagini di dimensioni di gran lunga inferiori rispetto a quelle dell'immagine originale (640 x 480). In media l'immagine contenente l'occhio destro (area occhio) presenta dimensione 100 x 100 pixel, mentre l'immagine contenente il riferimento (area riferimento) presenta dimensione 40 x 80 pixel. 93 Capitolo 5: Realizzazione sperimentale dei singoli moduli del sistema calcolo coordinate del riferimento Una volta che, con la fase precedente, è stata definita un'area in cui si presume debba trovarsi il segno di riferimento, posto sulla fronte dell'utente, si applica un algoritmo per identificare esattamente la posizione del riferimento. In particolare si cerca di individuare l'angolo alto sinistro del segno rettangolare: questo punto rappresenta l'origine del sistema di riferimento comune ed avrà coordinate (x_rif,y_rif). L'algoritmo in questione non opera nient'altro che una scansione dell'area del riferimento con lo scopo di individuare un punto le cui componenti di colore sono proprie del segno scuro ricercato. calcolo coordinate del centro pupilla In questa fase si dispone di un'immagine contenente solamente l'occhio destro. Per prima cosa l'immagine è trasformata in un'immagine binaria, in modo da potervi effettuare sopra una serie di analisi che permettono di circoscrivere maggiormente l'area entro cui è posizionato l'occhio, eliminando ad esempio eventuali sopracciglia. L'immagine è scandita per righe, la fascia a maggiore concentrazione di pixel neri sarà ovviamente scelta come nuova area su cui andare ad applicare l'algoritmo per la rilevazione del centro pupilla. Questo algoritmo individua prima l'iride dell'occhio e in un secondo tempo calcola il centro pupilla (che coincide col centro dell'iride), che avrà coordinate (x_centrop,y_centrop). 94 Capitolo 5: Realizzazione sperimentale dei singoli moduli del sistema calcolo direzione dello sguardo (gaze) In base alla posizione dell'occhio all'interno dell'immagine originale e alla posizione del centro pupilla all'interno dell'immagine dell'occhio, si procede al calcolo delle coordinate x_centrop e y_centrop nel sistema di riferimento dell'immagine 640 x 480. Anche le coordinate del riferimento sono espresse nel medesimo sistema. A questo punto l'algoritmo per il calcolo del gaze (sguardo in inglese) procede ad una trasformazione di coordinate da un riferimento all'altro, cioè dal sistema di riferimento dell'immagine a quello individuato dal segno sul viso. Con questo procedimento tutti i punti raccolti sono rappresentati nel medesimo sistema di riferimento ed è quindi possibile operare dei confronti fra essi. calcolo fissazioni Durante questa fase i diversi punti calcolati vengono memorizzati in un buffer apposito, quando il numero di punti memorizzati è pari al numero minimo di campioni necessario per calcolare una fissazione, viene eseguita una media sulle coordinate dei punti a disposizione per un primo calcolo del punto di fissazione. Se i punti successivamente raccolti misurano una distanza, dal punto così calcolato, inferiore alla distanza minima richiesta allora vengono considerati parte della fissazione in corso, che verrà aggiornata di conseguenza, in caso contrario viene dato inizio ad una nuova fissazione. Nel momento in cui alla nuova fissazione viene attribuito un numero di elementi pari al numero minimo di campioni richiesto per calcolare una fissazione, la fissazione precedente si può considerare conclusa. 95 Capitolo 5: Realizzazione sperimentale dei singoli moduli del sistema A questo punto può avere inizio la fase di predizione. predizione Nella parte di predizione viene fatto nient'altro che un confronto fra i punti ottenuti dalla procedura di calibrazione e il punto di fissazione calcolato nella parte precedente, sulla base dei punti raccolti in un certo periodo di tempo. La procedura di predizione calcola la distanza del punto di fissazione da ognuno dei sei punti memorizzati durante la calibrazione, utilizzando semplicemente la solita formula di Pitagora. Tra i sei punti, viene scelto quello da cui il punto di fissazione ha una distanza inferiore, presumendo che l'utente abbia di nuovo fissato il suo sguardo proprio in quella direzione. Ognuno dei sei punti individua una cella della tabella visualizzata a video per l'utente. Ad esempio il primo punto (x1,y1) individua la cella in alto a destra, il secondo punto (x2,y2) individua la cella in alto ma in centro e così via. A seconda della cella che la procedura ha predetto l'utente stesse fissando, la funzione predizione_area6 (predizione.h) restituisce un valore intero, che va da uno a sei, cioè tante quante sono le celle della tabella. Così se la funzione restituisce uno significa che l'utente ha fissato la cella in alto a destra, mentre se restituisce quattro significa che l'utente ha fissato la cella in basso a sinistra e via di seguito. Figura 4 96 Capitolo 5: Realizzazione sperimentale dei singoli moduli del sistema Perché l'utente possa avere un riscontro visivo della scelta operata, la cella fissata si colora di rosso, non appena il sistema è riuscito a portare a termine la predizione. Per colorare una delle sei celle della tabella è stata creata una funzione apposita SetColor. E' sufficiente passare alla funzione in questione il numero della cella che si vuole venga colorata (da 1 a 6 ovviamente). La possibilità di accedere ad una qualunque delle celle della tabella è una delle caratteristiche del controllo MSFlexGrid: basta indicare gli indici di riga e di colonna e il colore che si vuole attribuire alla cella perché l'operazione venga eseguita. Tutti i vari moduli appena presentati vengono eseguiti all'interno di un ciclo, come si può vedere dallo schema del paragrafo 3.3.2.1. Il ciclo viene interrotto nel momento in cui si preme il tasto Fine che compare nella finestra di dialogo, insieme agli altri due tasti Inizio e Chiudi. Per riprendere il ciclo è necessario invece premere nuovamente il tasto Inizio, in questo caso l'utente dovrà rifare una nuova procedura di calibrazione. Infatti ogni volta che l'utente desidera utilizzare il sistema, quest'ultimo deve essere prima inizializzato, anche se il suo uso era stato interrotto solo temporaneamente (premendo il tasto Fine). Come già specificato la pressione del tasto Chiudi comporta la chiusura dell'intera applicazione, per un nuovo utilizzo del sistema l'applicazione deve essere riavviata (bisogna lanciare quindi il file .exe). 97 Capitolo 5: Realizzazione sperimentale dei singoli moduli del sistema Viene di seguito presentata la videata che è visualizzata a video per l'utente, durante il tempo di utilizzo sistema di puntamento oculare progettato. Inizio Fine Chiudi Figura 5 98 Capitolo 5: Realizzazione sperimentale dei singoli moduli del sistema 5.3.2.3 BREVE DESCRIZIONE DEI FILE D'INTESTAZIONE DEL SISTEMA La divisione delle diverse funzioni sviluppate nei diversi file d'intestazione rispecchia la suddivisione del sistema in moduli. calibrazione_sistema.h Contiene la definizione delle funzioni necessarie per lo sviluppo della procedura di calibrazione: la funzione calibrazione provvede alla raccolta dei punti durante la fase di inizializzazione del sistema e alla memorizzazione in un buffer dei sei punti corrispondenti alle fissazioni delle sei celle della tabella; la funzione definizione_area_sguardo verifica la correttezza dei risultati ottenuti con la precedente procedura. Restituisce 0 se la procedura è andata a buon fine, 1 in caso contrario. trova_riferimenti.h Contiene la definizione di tre funzioni che permettono di ricavare una serie di coordinate importanti per l'applicazione degli algoritmi successivi: la funzione zoom_viso "ritaglia" dalla prima immagine catturata un'area contenente solamente il viso della persona, cioè fornisce lo stesso risultato che si otterrebbe se la webcam utilizzata fosse munita di uno zoom; la funzione rileva_riferimento definisce un'area, all'interno della prima immagine catturata, che si presume debba contenere il segno di riferimento; la funzione cerca_segno cerca invece, all'interno di una piccola area (circa 80 x 60, in pixel) definita nell'immagine originale (quella catturata dalla webcam), il segno di riferimento e ne memorizza in un buffer apposito le coordinate x,y. 99 Capitolo 5: Realizzazione sperimentale dei singoli moduli del sistema definisce_aree.h Contiene la definizione di un'unica funzione taglia_aree che, dall'immagine acquisita avente dimensione 640 x 480, "ritaglia" due immagini di dimensioni molto ridotte, che dovrebbero contenere, in base alle considerazioni derivanti dalla prima immagine catturata, una l'occhio destro e l'altra il segno di riferimento. Questo modo di procedere velocizza l'esecuzione dell'intera procedura per la ricerca dell'occhio e del riferimento, in quando gli algoritmi si trovano a dover lavorare con immagini di dimensioni fino a 10 volte inferiori a quelle dell'immagine acquisita dalla webcam. rilevazioni_occhio.h Contiene la definizione di quelle funzioni necessarie per la fase di rilevazione dell'occhio destro, della zona dell'iride e del calcolo del centro pupilla: la funzione rileva_occhio ricava la posizione dell'occhio destro all'interno della prima immagine acquisita. Le coordinate che identificano tale posizione vengono memorizzate in un buffer ed utilizzate per individuare l'area dell'occhio destro nelle immagini successive alla prima; la funzione rileva_centro_pupilla ricerca prima la posizione dell'iride all'interno dell'immagine dell'occhio destro e poi calcola le coordinate del centro pupilla salvandole in un buffer; la funzione rileva_centro_pupilla_img_successive viene applicata solamente a quell'area ritagliata dalla funzione taglia_aree dall'immagine originale e che dovrebbe contenere l'occhio destro della persona. La funzione prima riduce ulteriormente l'area interessata e poi richiama su questa la funzione precedente rileva_centro_pupilla. 100 Capitolo 5: Realizzazione sperimentale dei singoli moduli del sistema rileva_sguardo.h Contiene la definizione di una funzione calcolo_gaze che, in base alle coordinate indicanti la posizione dell'occhio, del centro pupilla e l'origine del sistema di riferimento comune, ricalcola le coordinate del centro pupilla rispetto proprio a questo sistema di riferimento. rileva_fissazione.h Contiene la definizione di due funzioni, una di inizializzazione ed una per il calcolo delle fissazioni in base ai campioni raccolti: la funzione inizializza_fix esegue l'inizializzazione del buffer, che contiene tutta una serie di dati sui punti via via memorizzati durante l'esecuzione dell'applicazione. Tutti questi dati vengono posti uguali a zero; la funzione calcola_fissazione opera tutta una serie di considerazioni che portano a ipotizzare quale sia lo stato dell'occhio: in movimento, in fissazione, fissazione terminata. Raggiunto il numero minimo di campioni necessari calcola le coordinate del punto di fissazione. predizione.h Contiene la definizione della funzione predizione_area6 che, in base alle coordinate del punto di fissazione e ai risultati della calibrazione, determina quale cella della tabella sia individuata da quelle coordinate, cioè sia stata fissata dall'utente. Restituisce un valore intero da 1 a 6, che è un indice identificativo di una determinata cella. Il codice sorgente di tutti i moduli descritti è presentano nell'appendice E. 101 6 Valutazioni 6.1 INTRODUZIONE In questo capitolo si mostrano le attività sperimentali svolte, facendo particolare riferimento al funzionamento del sistema per arrivare ad una valutazione critica dei risultati ottenuti. Innanzitutto, dal momento che una valutazione del sistema non può essere condotta escludendo l'effettivo beneficio che un disabile motore grave ne può trarre, vengono identificate patologie che, sebbene di natura diversa (traumatica o progressiva), presentano una matrice comune che può essere sfruttata con questo supporto informatizzato. 103 Capitolo 6: Valutazioni 6.2 INIDIVIDUAZIONE DI CATEGORIE DI DISABILITA' Viene proposto un quadro generale sulle disabilità che, non consentendo il totale controllo del movimento delle mani, impediscono l'accesso all'elaboratore tramite tastiera e mouse. A questo proposito si ricorda che il tipo di disabilità considerato è di natura fisica, così come è stato descritto nel capitolo 2 della presente tesi. In questa categoria vi è una grande varietà di disabilità che include la paralisi (completa o parziale), estrema debolezza, disturbi neurovegetativi, perdita di arti. Tra le cause è inclusa la paralisi cerebrale, lesioni alla colonna vertebrale, lesioni traumatiche alla testa (compreso l'ictus), traumi o malattie che portano ad amputazioni o disturbi quali l'artrite, la SLA, la sclerosi multipla o la distrofia muscolare. Paralisi cerebrale: è definita come un danno alle aree motrici del cervello che si verifica prima che questo raggiunga la sua maturità (in molti casi ciò avviene prima, durante o immediatamente dopo la nascita). La paralisi può essere di tipo spastico, in questo caso i muscoli sono tesi e contratti e i movimenti volontari risultano molto difficoltosi o sconnessi ed involontari, ma costanti. Lesioni alla colonna vertebrale: possono portare alla paralisi. L'estensione della paralisi e le parti del corpo colpite sono determinate dall'altezza del danno sulla spina dorsale e dal tipo di lesione subita. La tetraplegia colpisce tutti e quattro gli arti ed è causata da una lesione alla zona cervicale della colonna vertebrale; la paraplegia colpisce solamente le estremità inferiori. Lesioni cerebrali e ictus: il termine lesione cerebrale è usato per descrivere un esteso insieme di traumi, incluse la commozione celebrale, lesioni al cervelletto, emorragie celebrali, fratture del cranio, infezioni post-operatorie e occlusioni 104 Capitolo 6: Valutazioni celebrali. Le lesioni spinali, così come quelle cerebrali e gli ictus portano spesso a paralisi, ma può esserci una grande varietà nel loro modo di manifestarsi. Artrite: è definita come dolore alla giunture, di solito porta ad una riduzione della possibilità di movimento e causa rigidità. L'artrite reumatica è una sindrome cronica. L'osteo-artrite è una malattia degenerativa delle giunture. SLA (Sclerosi Laterale Amiotrofica): è una malattia degenerativa e fatale del sistema nervoso centrale caratterizzata da una lenta paralisi progressiva dei muscoli volontari. Il sintomo più evidente è una progressiva rigidità dei muscoli degli arti, di quelli del tronco e della respirazione, della gola e della lingua, portando ad una paralisi parziale e a gravi difficoltà di parola. In Italia si contano sei ammalati ogni 100.000 abitanti. La malattia colpisce maggiormente le persone comprese in una fascia di età che va dai 40 ai 70 anni, mentre il rapporto uomini-donne è di 2 a 1. Sclerosi multipla: è definita come una malattia progressiva del sistema nervoso centrale caratterizzata dalla distruzione del materiale isolante che ricopre le fibre nervose. Il problema delle persone colpite da questa malattia è legato al basso controllo muscolare, rigidità e affaticamento, difficoltà a camminare, a parlare, ad afferrare oggetti. Distrofia muscolare: è una malattia ereditaria e progressiva. Si manifesta con rigidità dei muscoli e perdita del loro controllo, con contrazioni e difficoltà a camminare e a respirare. 105 Capitolo 6: Valutazioni 6.3 UTILIZZO DEL SISTEMA Al momento l'utilizzo del sistema è stato proposto solamente a persone normodotate, al fine di eseguire una serie di test che portassero alla determinazione dei principali fattori di qualità che vengono descritti nei paragrafi successivi. 6.3.1 PRESENTAZIONE DEL SISTEMA Si riporta di seguito la videata che viene mostrata all'utente al momento dell'avvio dell'applicazione. Figura 1 La finestra contiene una tabella in cui sono indicati sei punti rossi (uno per ogni cella della tabella), a cui l'utente dovrà fare riferimento durante la fase di calibrazione. Perché il sistema di predizione dello sguardo inizi a lavorare dev'essere premuto il tasto Inizio, solo a questo punto viene effettuato il collegamento con la webcam. Se il collegamento è avvenuto senza problemi compare a video una finestra contenente un messaggio: "Connessione OK", in caso contrario il messaggio 106 Capitolo 6: Valutazioni visualizzato sarà "Problemi con la connessione", a questo punto l'utente deve riprovare a far partire il sistema, premendo nuovamente il bottone Inizio. Figura 2 Figura 3 Se l'operazione di connessione con la webcam è riuscita, può avere inizio la procedura di calibrazione e all'utente verrà visualizzato il seguente messaggio: "Inizio calibrazione - fissare il punto in alto a destra". Figura 4 L'utente inizia quindi a spostare il suo sguardo sui punti indicati (2 - 3 secondi per ognuno), partendo dal primo in alto a destra e procedendo in senso antiorario. Se la procedura di calibrazione si è conclusa correttamente allora compariranno a video due messaggi: prima "Calibrazione terminata" e poi "Sistema pronto per l'uso" e la finestra mostrerà una nuova tabella. In caso contrario un altro messaggio avvertirà l'utente che la calibrazione dev'essere ripetuta. 107 Capitolo 6: Valutazioni Calibrazione terminata con successo: Figura 6 Figura 7 Calibrazione da rifare: Figura 8 Nel momento in cui la calibrazione termina con successo, l'utente viene avvertito del fatto che il sistema è pronto per essere utilizzato. A questo punto l'utente decide quale tra le sei celle a disposizione scegliere, fissa su di essa il suo sguardo (per 2 - 3 secondi) e la cella dovrebbe colorarsi di rosso. Figura 9 108 Capitolo 6: Valutazioni L'utente può continuare ad utilizzare il sistema fintanto che preme il bottone Fine oppure il bottone Chiudi, in quest'ultima ipotesi si esce dall'applicazione. Per quanto riguarda la predizione dello sguardo dell'utente e "l'illuminazione" della cella corrispondente, va detto che il sistema opera con un certo ritardo e che quindi "l'illuminazione" della cella fissata non è immediata. Il ritardo in questione è pari al tempo utilizzato dal sistema per memorizzare un numero di campioni uguale al numero minimo di campioni necessario per determinare una fissazione. Se il numero di campioni necessario al calcolo di una fissazione è tre, significa che, dopo aver memorizzato tre differenti punti, il sistema è in grado di calcolare le coordinate del punto di fissazione. Se i punti successivamente memorizzati continuano a rientrare nella stessa area relativa alla fissazione in corso, quest'ultima non può essere dichiarata terminata. Nel momento in cui viene ipotizzata una nuova fissazione e vengono ad essa attribuita tre punti, significa che la precedente fissazione è terminata e quindi si può illuminare la cella della tabella corrispondente. 109 Capitolo 6: Valutazioni 6.3.2 ANALISI DEI DATI OTTENUTI DA UNA PROVA DI UTILIZZO DEL SISTEMA E' stato richiesto ad un utente di eseguire la procedura di calibrazione del sistema. Tutti i punti memorizzati durante tale procedura sono stati salvati in un file con lo scopo di analizzarli successivamente. Viene riportato di seguito il contenuto del file. In ogni colonna sono riportate due coordinate x e y, espresse nel sistema di riferimento la cui origine corrisponde all'angolo alto, sinistro del segno nero, rettangolare posto sulla fronte dell'utente. Ogni coppia di coordinate rappresenta un punto che individua la direzione dello sguardo dell'utente. Dalla procedura di calibrazione si devono ottenere sei diversi punti di fissazione. Nel file sopra sono stati separati, con una linea, i punti appartenenti a fissazioni differenti, in tutto ne sono state individuate esattamente sei. 110 Capitolo 6: Valutazioni Poiché l'algoritmo per il calcolo delle fissazioni determina il punto di fissazione operando una semplice media, i sei punti risultanti dalla calibrazione eseguita saranno: in alto a destra: 101.2 82.2 in alto al centro: 93.6 81.8 in alto a sinistra: 84.5 81.3 in basso a sinistra: 86.0 91.2 in basso al centro: 93.5 94.0 in basso a destra: 110.2 92.9 Figura 10 111 Capitolo 6: Valutazioni Terminata la calibrazione l'utente ha provato a spostare il suo sguardo indirizzandolo sulle diverse celle della tabella, che si coloravano di rosso di volta in volta. I diversi punti di fissazione calcolati dal sistema, durante questa prova, vengono riportati sullo stesso grafico mostrato nella pagina precedente. Figura 11 Dalla figura possiamo capire che l'utente ha fissato due volte la cella in alto a sinistra (fissazioni 4 e 8), due volte la cella in alto al centro (fissazioni 5 e 9), una volta la cella in alto a destra (fissazione 2), due volte la cella in basso a destra (fissazioni 6 e 10), una volta la cella in basso al centro (fissazione 1) e due volte la cella in basso a sinistra (fissazioni 3 e 7). 112 Capitolo 6: Valutazioni 6.4 VALUTAZIONI TECNICHE: FATTORI DI QUALITA' In questo paragrafo viene valutato il software prodotto da un punto di vista tecnico, osservando come i principali fattori di qualità vengono soddisfatti. Per ogni fattore di qualità verrà prima analizzato il significato che gli viene attribuito in questo contesto. Affidabilità: è una caratteristica del software del quale è "possibile fidarsi", nel senso che le funzionalità offerte corrispondono ai requisiti o portano in ogni caso a disturbi tollerabili. Per quanto riguarda l'affidabilità del sistema progettato bisogna precisare che questa fattore è influenzato soprattutto dalla qualità delle immagini catturate, nel senso che ad una cattiva illuminazione del viso dell'utente corrisponde un'immagine binaria su cui gli algoritmi di rilevazione dell'occhio non operano correttamente. Questo problema è stato affrontano e descritto nel capitolo 4 "Progetto logico e soluzione del problema". Se i requisiti di base, richiesti per utilizzare il sistema (buon controllo del capo, illuminazione adeguata dell'ambiente, capacità di fissare lo sguardo su di un punto), vengono rispettati il sistema risponde in maniera abbastanza soddisfacente durante l'utilizzo da parte dell'utente. Robustezza: è una caratteristica del software che si comporta in maniera accettabile anche in corrispondenza di situazioni non specificate nei requisiti. Questo fattore è purtroppo un punto critico del sistema, in quanto, se i requisiti richiesti per poter utilizzare efficacemente il sistema (buon controllo del capo, illuminazione adeguata dell'ambiente, capacità di fissare lo sguardo su di un punto) non sono rispettati, il sistema non funziona correttamente o peggio l'applicazione viene interrotta. 113 Capitolo 6: Valutazioni Prestazioni: indica il modo in cui si utilizzano importanti risorse come il tempo di esecuzione. 1. tempo di esecuzione: non si può affermare che il sistema progettato sia un'applicazione real-time, in quanto, come spiegato nel paragrafo precedente, la predizione dell'area fissata avviene con un certo ritardo, pari al tempo necessario perché sia memorizzato un numero di punti pari al numero minimo di campioni necessario a determinare una fissazione. Al momento questo numero di campioni è fissato a tre, cioè il calcolo della fissazione può essere eseguito solamente quando si hanno a disposizione almeno tre campioni. Per poter quantificare questo ritardo, bisogna prima determinare quanto tempo serve al sistema per elaborare i dati di input (immagine catturata dalla webcam) e fornire le coordinate finali x, y che determinano la direzione dello sguardo. I valori che abbiamo a disposizione per effettuare questo calcolo sono i seguenti: • per permettere al sistema di calcolare una fissazione l'utente fissa l'area desiderata per un tempo che va dai 2 ai 3 secondi (questo è il tempo che si è utilizzato finora nelle prove eseguite); • durante questa pausa di fissazione in media i punti attribuiti ad una singola fissazione sono 8. A questo punto per calcolare il numero di campioni elaborati al secondo dal sistema è sufficiente calcolare n. campioni per una fissazione/tempo di fissazione che nel nostro caso fornisce il risultato di 2,67 campioni al secondo. Ritornando al problema sopra, cioè come quantificare il ritardo di predizione, si intuisce facilmente che, per poter elaborare tre campioni, il sistema necessita di poco più di un secondo. Ciò significa che, una volta che l'utente sposta il suo sguardo su una nuova cella, quella fissata precedentemente si "illumina" con circa un secondo di ritardo. Questa modo di procedere dipende da come è struttura la funzione per il calcolo delle fissazioni. La funzione infatti considerata terminata 114 Capitolo 6: Valutazioni una fissazione solamente quando si ne è ipotizzata una nuova. Solo quando si ha la sicurezza che la fissazione sia terminata può avere inizio la predizione dell'area e la cella corrispondente può essere illuminata. In realtà questo è risultato un metodo non molto intuitivo per l'utente che utilizza il sistema. Infatti è più semplice che la cella fissata si illumini non appena è stato memorizzato il numero minimo di campioni necessario a calcolare una fissazione (in questo caso 3) e non dopo che si è spostato lo sguardo su di un'altra cella. Sempre facendo riferimento ai valori appena utilizzati si può anche calcolare il tempo necessario per concludere la procedura di calibrazione. Poiché è richiesto all'utente di fissare sei differenti punti, soffermandosi su ognuno circa 3 secondi, il tempo totale richiesto dalla procedura è di 18 secondi, più un secondo circa perché il sistema consideri terminata l'ultima fissazione (quella sul punto in basso a destra), per il problema del ritardo appena discusso. Riassumendo quanto appena descritto, si riporta la seguente tabella. pausa di fissazione di cui il sistema ha per poter effettuare la predizione num. minimo di campioni necessario per calcolare una fissazione num. di campioni che si registra in media per fissazione num. campioni elaborati al secondo tempo di ritardo nella predizione tempo per la calibrazione 2 - 3 secondi 3 campioni 8 campioni 2,67 campioni al secondo 1,12 secondi 19,12 secondi 115 Capitolo 6: Valutazioni Usabilità: qualità esterna (cioè percepibile da un osservatore esterno al sistema) indicante quanto l'utente si trovi a suo agio nell'utilizzare il software. Avendo proposto l'uso del sistema solamente a persone normodotate, non è facile verificare se questo fattore sia soddisfatto o meno, in quanto il sistema è stato pensato per utenti disabili motori gravi. Il problema sta' principalmente nell'acquisire una certa dimestichezza nell'utilizzo dello sguardo come canale di input per l'elaboratore. Una volta superato questo primo ostacolo e dopo aver studiato un buon supporto per il capo, che permetta all'utente di mantenere una posizione comoda mentre utilizza il software in questione, il fattore di usabilità dovrebbe essere soddisfatto in maniera accettabile. Comprensibilità: è fondamentale che il software prodotto sia comprensibile ai fini di poterne garantire la correttezza, di potervi apportare facilmente modifiche e di poterlo riusare. Al fine di rendere questo software comprensibile sono stati utilizzati degli accorgimenti atti a favorirne la modularità. Il primo è stato quello di inserire un'elevata quantità di commenti nel codice, il secondo è stato quello di suddividere il sistema in diversi moduli ad ognuno dei quali è stata attribuita una funzionalità specifica, come descritto nel capitolo 5 "Realizzazione sperimentale dei singoli moduli del sistema". 116 7 Direzioni future di ricerca 7.1 INTRODUZIONE In questa sezione vengono presentati possibili ampliamenti e miglioramenti futuri del sistema, nonché applicazioni di carattere generale in un ambito che rimane quello considerato in questo studio: quello della disabilità motoria grave. Si cerca principalmente di identificare alcune tra le applicazioni che mi sono sembrate più interessanti in modo da fornire una visuale completa di una possibile evoluzione del sistema. In particolare ci si soffermerà sui contenuti implementativi o realizzativi delle applicazioni proposte. 118 Capitolo 7: Direzioni future di ricerca 7.2 POSSIBILITA' DI APPLICAZIONE PER NORMODATATI In pratica si può utilizzare il sistema per normodotati permettendo una più rapida esecuzione delle operazioni normalmente eseguite con altri strumenti (ad esempio il mouse). La selezione di un oggetto con il mouse è di solito eseguita tramite un'operazione di puntamento sull'oggetto desiderato e un'operazione di pressione su di un bottone. La selezione può essere fatta operando una scelta tra le diverse icone che sono visualizzate sul desktop del computer. Confrontiamo due diverse possibilità di operare una selezione: da una parte con il mouse l'utente individua l'oggetto che lo interessa, sposta il puntatore su di esso e preme il bottone del mouse per selezionarlo; dall'altra l'utente fissa il proprio sguardo sull'oggetto per un certo tempo (pausa di fissazione). L'approccio che utilizza la pausa di fissazione, come metodo di selezione, potrebbe essere molto più conveniente se si riuscisse a rendere sufficientemente breve il tempo richiesto per la selezione. C'è comunque da considerare che una pausa di fissazione più lunga garantisce che l'utente non abbia operato inavvertitamente una selezione semplicemente muovendo il suo sguardo sul video. Sempre per porre in evidenza il fatto che l'uso dello sguardo come metodo di selezione, rispetto ai metodi tradizionali, può comportare una maggiore velocità, viene proposta una breve e semplice dimostrazione. Indichiamo con Tesecuzione il tempo necessario per selezionare un oggetto e individuiamo cinque differenti operatori: - S: spostamento della mano per posizionarla sul mouse; - P: movimento per posizionare il puntatore sull'oggetto desiderato; - K: pressione del tasto del mouse; - M: operatore mentale, l'utente prima pensa all'operazione da compiere; - R: risposta del sistema 119 Capitolo 7: Direzioni future di ricerca L'ultimo operatore, R, dipende dal sistema che si utilizza, mentre gli altri operatori dipendono dall'utente e dalle caratteristiche del dispositivo di input. A questo punto si può scrivere: Tesecuzione = T(S) + T(P) + T(K) + T(M) + T(R) L'operatore P descrive l'operazione di movimento del puntatore del mouse nella posizione corretta, sembra quindi ragionevole suddividere questo operatore in un operatore che descrive il movimento dell'occhio per cercare l'oggetto desiderato, Pocchio, e un operatore che descrive invece il movimento del puntatore sull'oggetto desiderato, Pmovimento, quindi: P = Pocchio + Pmovimento Nel caso di un sistema a puntamento oculare il tempo di esecuzione può essere calcolato nel modo seguente: Tesecuzione = T(M) + T(Pocchio) + T(Reye-tracking) Confrontiamolo col tempo richiesto per effettuare la medesima operazione di selezione col mouse: Tesecuzione = T(M) + T(Pocchio) + T(Pmovimento) + T(S) + T(K) + T(Rclick-mouse) E' chiaro che il primo metodo conviene quando T(Reye-tracking) < T(Pmovimento) + T(S) + T(K) + T(Rclick-mouse) cioè quando occorre più tempo per muovere il mouse e premere il tasto piuttosto che fissare semplicemente l'oggetto da selezionare. Normalmente una persona prima fissa l'oggetto e poi muove il mouse nella posizione desiderata, quindi il ragionamento appena esposto ha un suo fondamento. Il problema sta nel fatto che una pausa di fissazione non è un movimento naturale, cioè una persona di solito non fissa un oggetto o un punto per lungo tempo. E' chiaro che se l'utente presenta problemi di movimento e ha difficoltà nell'utilizzare i dispositivi standard di input avrà come unica possibilità quella di usare un sistema di puntamento oculare, ma se l'utente non presenta disabilità di questo tipo opterà per un sistema del genere solamente se esso comporta dei 120 Capitolo 7: Direzioni future di ricerca vantaggi rispetto all'utilizzo dei dispositivi standard. Questi vantaggi potrebbero essere tutti concentrati in una maggiore velocità e semplicità di esecuzione. Bisogna comunque considerare anche gli svantaggi derivanti dall'utilizzo di un tale sistema. Come già accennato sopra, una pausa di fissazione non è un movimento naturale dell'occhio e quindi utilizzare lo sguardo come canale di input può richiedere una maggiore attenzione e concentrazione, almeno le prime volte. 7.3 MIGLIORAMENTI FUTURI PREVISTI Al termine del lavoro svolto rimane sicuramente la speranza di poter ampliare ulteriormente il sistema progettato, con lo scopo di fornire una possibilità concreta di utilizzo da parte di utenti disabili motori gravi. I due punti principali su cui sicuramente c'è ancora da lavorare sono: 1. il tempo di esecuzione: al momento è richiesta una pausa di fissazione pari a 2 - 3 secondi per selezionare una cella della tabella. Sarebbe un miglioramento notevole si riuscisse a ridurre questo tempo fino a 0,5 - 1 secondi, in quanto non solo la risposta del sistema sarebbe più veloce, ma il sistema stesso sarebbe più semplice da utilizzare. Infatti come è stato detto nel paragrafo precedente una pausa di fissazione non è un movimento naturale dell'occhio e quindi più tempo l'utente deve mantenere lo sguardo fisso su di un punto e maggiori difficoltà incontrerà nell'utilizzare il sistema. 2. numero di scelte a disposizione dell'utente: al momento l'utente ha la possibilità di selezionare una fra le sei celle della tabella che gli viene proposta a video, quindi il numero di scelte che ha a disposizione è piuttosto limitato. Questo è dovuto principalmente ad un problema di risoluzione della telecamera. Al momento l'area di variazione dello sguardo di un utente ha dimensioni di 25 x 17 pixel. Proprio le dimensioni limitate di quest'area rendono difficile riuscire e distinguere più di sei zone differenti. Il miglioramento futuro su cui si vorrebbe lavorare è quello di cercare di aumentare questo numero almeno fino a nove o meglio dodici scelte diverse. A questo punto si potrebbe anche seriamente 121 Capitolo 7: Direzioni future di ricerca pensare di utilizzare il sistema insieme ad un software di comunicazione aumentativa ed alternativa. Durante i mesi di lavoro per lo sviluppo della tesi si è lavorato soprattutto sul primo punto. Infatti, inizialmente, perché l'area selezionata venisse illuminata era necessaria una pausa di fissazione di circa 10 secondi, dopo aver apportato alcune modifiche ed accorgimenti agli algoritmi la pausa di fissazione è stata ridotta a 2 - 3 secondi, cinque volte di meno. Continuando nello studio di nuove modifiche da apportare agli algoritmi scritti, per velocizzarne le operazioni, si spera di ridurre questo tempo ulteriormente. Per quanto riguarda invece il secondo punto, il problema è rappresentato dal fatto che l'area di variazione dello sguardo dell'utente non è molto ampia e risulta difficile distinguere più di sei zone diverse. Probabilmente la situazione migliorerebbe se le immagini catturate avessero una risoluzione maggiore, in quanto più è grande la risoluzione e più è grande il numero di punti che compone l'immagine. Di conseguenza anche l'area di variazione dello sguardo risulterebbe ingrandita. La soluzione a questo problema potrebbe essere rappresentata dall'utilizzo di una webcam a prestazioni migliori di quella finora utilizzata durante lo svolgimento di questo lavoro. La qualità delle fotocamere digitali si sta avvicinando velocemente alla qualità ottenuta da quelle di tipo tradizionale. Si pensa che questa crescita porterà quanto prima ad una eguale qualità degli apparati, ed annullerà le differenze che tuttavia al momento sono evidenti. Poiché la webcam è un componente hardware indispensabile al sistema progettato sembra logico pensare di impegnare parte del lavoro futuro nella ricerca di un dispositivo che sappia offrire prestazioni migliori, ovviamente sempre tenendo in considerazione il fattore economico. 122 Capitolo 7: Direzioni future di ricerca Riassumendo i punti su cui si intende continuare a lavorare allo scopo di migliorare il software realizzato finora sono: • raggiungimento di una velocità di risposta dell'applicazione maggiore • aumento del numero di possibili scelte a disposizione dell'utente Sicuramente uno dei mezzi da utilizzare per raggiungere questi obbiettivi è lo studio delle prestazioni di diverse webcam al fine di scegliere la più adatta ad essere utilizzata in base alle esigenze degli algoritmi del sistema. 7.4 POSSIBILITA' DI APPLICAZIONE DA PARTE DI MALATI DI SLA Molte persone danno per scontato capacità come mangiare o parlare. Capacità molto importanti nella vita di ogni giorno e in molti aspetti della vita di relazione, che la SLA (Sclerosi Laterale Amiotrofica) può influenzare, comportando graduali cambiamenti: pertanto è importante essere consapevoli di come si possa mantenere una comunicazione efficace. Oggi i personal computer offrono grandi possibilità per la comunicazione. Se, insieme al computer, viene fornito un opportuno software di comunicazione e un dispositivo di input che anche l'utente con problemi motori possa usare, i bisogni di espressione e di comunicazione della persona disabile possono essere soddisfatti. Una possibile direzione futura di ricerca è orientata all'integrazione del sistema di puntamento oculare realizzato con un software di comunicazione aumentativa ed alternativa. Questa combinazione potrebbe rappresentare per un malato di SLA ridotto alla completa immobilità, ad eccezione del movimento oculare, un metodo efficace per aumentare e soprattutto per mantenere una relazione comunicativa col mondo che lo circonda. Una volta realizzato questo primo obbiettivo, cioè fornire un valido strumento di comunicazione per una persona disabile, sarebbe bello cercare di sviluppare il sistema 123 Capitolo 7: Direzioni future di ricerca in modo da trasformarlo in uno strumento di supporto per la gestione di un casa integrata con servizi e sistemi telematici. Questo progetto prevederebbe quindi l'utilizzo dello sguardo per impartire all'elaboratore comandi che vanno ad agire sullo spegnimento/accensione delle luci, apertura/chiusura delle tapparelle, aumento/diminuzione della temperatura, etc. Tutto questo lavoro permetterebbe ad un malato di SLA di mantenere una buona qualità di vita e di vivere in maniera accettabile nonostante la malattia. 124 8 Conclusioni Giunti al termine di questo lavoro, ci si rende conto facilmente come le questioni trattate non siano pronte per essere archiviate e dimenticate, ma possano essere ulteriormente approfondite per giungere a soluzioni sempre migliori. Questo lavoro mi ha permesso di avvicinarmi ad un mondo che spesso, per distrazione o superficialità, si è portati a trascurare. Senza conoscerlo è dunque difficile poter capire le vere difficoltà che vengono incontrate quotidianamente da un disabile motorio grave. Più ci si addentra in questo mondo, più scaturiscono idee su come ampliare il sistema per fornire all'utente un controllo dell'elaboratore, e non solo, sempre maggiore. Da quanto è stato esposto nella presente tesi e in particolare nel capitolo 2, Stato dell'arte, è immediato riconoscere che molto è stato fatto nel campo della disabilità motoria, ma purtroppo i risultati maggiori si sono avuti prevalentemente all'estero. Non sempre è immediata la possibilità di utilizzare materiale proveniente da altri paesi, questo proprio a causa di incompatibilità di simboli, lingua e abitudini. E' per questo motivo che si rende sempre più urgente la necessità di sviluppare materiale accessibile anche in Italia dove purtroppo le realizzazioni proposte sono ancora insufficienti. E' auspicabile che in futuro possa essere sviluppata anche nel nostro Paese un rapporto di collaborazione delle case produttrici di software in modo da giungere a delle linee guida di comportamento come è avvenuto nella maggior parte dei paesi industrializzati. Questo lavoro ha la speranza di porre delle basi solide su cui sviluppare ampliamenti futuri, come è stato descritto nel capitolo 7, Direzioni future di ricerca. 126 9 Bibliografia "White Paper on the Design of Software Application Programs to Increase Their Accessibility for People with Disabilities" - Trace R&D Center, Novembre 1991 "Assistive technologies for Persons with disabilities" - Mann e William C. - American Occupational Therapy Association (Bethesda), 1995 "Electronic Devices for Rehabilitation" - Webster J., Cook A., Tompkins W., Vanderheiden G. - Chapman & Hall Medical (London), 1985 "Ausili per l'autonomia" - Renzo Andrich - Pro Juventute (Milano), 1998 "Augmentative and Alternative Communication: An Introduction" - Blackstone S. American Speech Language Hearing Association (Rockville), 1986 "Eye Tracking in Advanced Interface Design" - Robert J. K. Jacob - HumanComputer Interaction Lab, Naval Research Laboratory (Washington) "Eye tracking" - Tesi di Laurea di Tamara Miller - University of Wisnconsin (Madison), 2000Tamara "Vision-Based Eye-Gaze Tracking" - Kyung-Nam Kim e R.S. Ramakrishna Dipartimento di Informatica e Comunicazione dell'Istituto di Scienza e Tecnologia di Kwangju (Corea) 128 Capitolo 9: Bibliografia Dalla collana Vivere con la SLA: "Volume 1, LA MALATTIA - Cause, sintomi, diagnosi e possibili cure" a cura di AISLA "Volume 4, L'ALIMENTAZIONE E LA COMUNICAZIOE" a cura di AISLA "A BRIEF INTRODUCTION TO DISABILITIES - A brief introduction to the major disability groups and some specific barriers to accessibility they encounter" - Trace R&D Center, 1991 "Visual C++ 6" - Jon Bates e Tim Tompkins - McGrawHill, 1998 129 Appendice A Ausili informatici e tecnologie per disabili Viene presentata nelle seguente appendice, una panoramica su alcuni ausili informatici e software di comunicazione di particolare interesse. I vari prodotti vengono descritti divisi per categorie. Le categorie a cui si fa riferimento sono: tastiere, dispositivi di puntamento, prodotti hardware e software di comunicazione aumentativa ed alternativa (AAC) e sensori. TASTIERE L'utilizzo della comune tastiera può essere complicato a causa di problemi nel controllo degli arti superiori. A volte è sufficiente adottare delle modifiche alle impostazioni software dell'elaboratore che si sta utilizzando, altre volte è possibile identificare delle soluzioni alternative. A tale scopo esistono tastiere ridotte o espanse, tastiere a membrana e/o tastiere riconfigurabili, tastiere a video su cui l'interazione avviene tramite un dispositivo di puntamento, o tastiere con display, indipendenti dal computer. Un'altra soluzione consiste nel ricorrere ai sistemi di controllo del computer a scansione, tramite l'uso di sensori esterni. Tastiere ridotte ed espanse: le prime sono tastiere speciali caratterizzate da dimensioni ridotte e tasti piccoli, ravvicinati e molto sensibili, le seconde sono tastiere di grandi dimensioni, con tasti ingranditi. Un esempio di tastiera espansa è la Big Keys Colour Plus della Greystone Inc., in cui i tasti sono grandi il quadruplo di quelli di una tastiera normale. 132 Appendice A: Ausili informatici e tecnologie per disabili Un esempio di tastiera ridotta è la WinMini della Tash Inc., in cui i tasti hanno un'area di 1.3 cm quadrati e sono molto ravvicinati tra loro. Tastiere a membrana e/o riconfigurabili: la tastiera Discover Board della Don Johnston Inc. è una tastiera espansa riconfigurabile. Si presenta come una tavoletta su cui è possibile inserire delle membrane plastificate e delle membrane cartacee personalizzate. Anche la tastiera espansa dell'IntelliKeys, avente un'area maggiore rispetto a quella delle tastiere standard, è riprogrammabile. Tastiere video: SoftType è una tastiera a video, che permette alle persone con difficoltà motorie, di inviare comandi a qualsiasi applicazione di Windows. SoftType contiene un sistema di predizione di parola che permette di ridurre il numero di tasti da premere. I click del mouse possono essere ottenuti usando la tecnica dell'AutoClick: il click del tasto sinistro del mouse è "realizzato" dopo che il puntatore è rimasto immobile, per un intervallo di tempo programmabile, sul punto desiderato. Si può avere accesso a qualsiasi applicazione o utilità Windows con l'uso esclusivo di un sensore, di SoftType e di un sistema di puntamento col capo (HeadMouse). Tastiere con display: l'AlphaSmart è una tastiera, indipendente dal computer, con un display a quattro righe, facilmente trasportabile ed ideale per chi ha problemi di scrittura. Sistemi a scansione: Discover Switch della Don Johnston Inc. è un sistema integrato hardware e software per PC per l'utilizzo ed il pieno controllo del computer attraverso la scansione. E possibile dare qualsiasi comando all'elaboratore azionando un sensore (scansione automatica - selezione indiretta) o due (scansione manuale - selezione diretta). Discover Switch consiste in un grosso sensore e in un software di gestione. Una volta installato, il software riproduce, sul monitor, delle tabelle su cui verrà attivata la scansione. Le tabelle sono personalizzabili. 133 Appendice A: Ausili informatici e tecnologie per disabili DISPOSITIVI DI PUNTAMENTO Esistono mouse speciali in alternativa al mouse standard per coloro che hanno difficoltà nel controllare il movimento del puntatore e le funzioni dei tasti. Gli emulatori di mouse sono dispositivi che permettono di controllare, attraverso sistemi diversi, il movimento del puntatore e di svolgere tutte le funzioni del mouse. In alcuni casi si utilizza, per il movimento del puntatore, un mouse standard e per la selezione si fa ricorso a sistemi che consentano di realizzare il click con l'ausilio di uno o più sensori esterni, tramite dispositivi d'interfaccia. In altri casi ancora è possibile ricorrere a soluzioni software per l'esecuzione dei comandi del mouse. Emulatore di mouse: Dragger per Windows permette l'emulazione con un singolo click delle funzioni del mouse. Dragger può essere utilizzato insieme alla tecnica descritta precedentemente definita AutoClick. Chi presenta disabilità motorie può avere facilmente accesso al mouse e alla maggior parte delle applicazioni Windows grazie a Dragger e un qualsiasi dispositivo di puntamento. L'Accesso Facilitato per Windows consente l'attivazione di un'opzione che permette di utilizzare il tastierino numerico come emulatore di mouse. Magic Touch è un pannello sensibile e trasparente che viene montato sullo schermo dell'elaboratore. Per spostare il puntatore del mouse è sufficiente toccare la superficie sensibile del pannello, in corrispondenza della posizione desiderata. Altri mouse speciali: viene presentata una breve descrizione di alcuni prodotti rientranti in questa categoria. Il Palm Mouse della Fujitsu è un mouse molto piccolo, che consente di spostare il puntatore sul monitor utilizzando un minimo movimento delle dita. E' indicato soprattutto per distrofici e persone con sclerosi. I mouse della Kensington, Expert Mouse e Orbit Mouse, sono mouse di tipo trackball, in cui ruotando la sfera posta sulla base è possibile spostare il 134 Appendice A: Ausili informatici e tecnologie per disabili puntatore sul monitor. Ai tasti funzione (quattro nel primo e due nel secondo) è permesso associare funzioni specifiche. I mouse speciali della Penny&Giles sono sia mouse a leva, sia Joystick, che Trackball. Sono muniti di uno scudo che consente di appoggiare il polso e la mano sul piano del mouse, impedendo di premere inavvertitamente i pulsanti abbinati alle funzioni del mouse. NoHandsMouse della Hunter Digital consente di spostare il puntatore del mouse sul monitor utilizzando il movimento dei piedi. Con un piede si controlla il movimento del puntatore, con l'altro si esegue il click. HeadMouse della Origin Instruments consente di effettuare tutte le operazioni di un normale mouse attraverso i movimenti del capo. È il mouse standard per persone che non possono usare le mani, è infatti indicato per persone tetraplegiche e per chiunque sia in grado di usare solo i movimenti del capo. AUSILI PER LA COMUNICAZIONE AUMENTATIVA ED ALTERNATIVA Esistono sia prodotti hardware che software per la comunicazione aumentativa. Si parla si sistemi per la AAC con uscita in voce oppure senza uscita in voce. Prodotti hardware (comunicatori): Big Mack è un ausilio per la AAC con uscita in voce, molto semplice. Attraverso la pressione di un grosso tasto si ottiene la riproduzione di un messaggio precedentemente registrato. Al messaggio può essere associata un'immagine o un simbolo. SpeakEasy è di nuovo un ausilio per la AAC con uscita in voce, che permette di registrare e riprodurre dodici messaggi di durata variabile. Ad ogni messaggio corrisponde un'area della tastiera sulla quale viene fissato il disegno associato al messaggio registrato. Prodotti software: Comunica è un software di comunicazione con uscita in voce, ideato e sviluppato dalla EasyLabs. Con Comunica è possibile costruire tabelle con celle di testo e/o di immagine, cui è possibile associare file audio personalizzati e 135 Appendice A: Ausili informatici e tecnologie per disabili l'integrazione nel programma della libreria completa dei simboli PCS (Picture Communication Symbols). Comunica è un valido programma di comunicazione per persone che necessitano dell'uscita in voce. I metodi d'accesso vanno da quelli standard, quali mouse e tastiera, a quelli speciali come dispositivi di puntamento col capo, tastiere alternative, trackball, sensori insieme alle modalità di scansione previste, touschscreen. L'uso combinato di Comunica e di un dispositivo di puntamento con lo sguardo fornirebbe un efficiente strumento di comunicazione per malati di SLA in stadio avanzato. Un rapido accenno ai simboli PCS, prodotti dalla Mayer-Johnson. Sono simboli pensati e disegnati per creare un ausilio dall'aspetto professionale, economico e veloce. Sono semplici immagini, estremamente utili per svariate tipologie di tabelle. SENSORI Un sensore (o pulsante, o switch) è un dispositivo che serve per trasformare una grandezza fisica (pressione, spostamento, suono, soffio …) in una grandezza elettrica che viene utilizzata per comandare dei dispositivi (giocattoli, computer …). In sostanza un sensore è un dispositivo capace di inviare un comando (acceso/spento) ad un altro strumento. E' di grande utilità nei casi in cui l'utente non sia in grado di azionare un dispositivo utilizzando i normali interruttori. I sensori si dividono in due grandi categorie: i sensori singoli e i sensori multipli. Sensori singoli: sono sensori con un'unica funzione: acceso/spento. Esistono sensori con modalità di attivazione a testa, a tocco, pneumatici. Ci sono sensori per chi è in grado di muovere un solo dito, sensori che richiedono solo un movimento di pochi millimetri o sensori che richiedono invece movimenti più ampi. 136 Appendice A: Ausili informatici e tecnologie per disabili I sensori singoli della AbleNet sono dei pulsanti di diverse dimensioni azionabili premendo la superficie superiore. Il Big Red è un pulsante di grandi dimensioni, attivabile tramite gli arti superiori ed inferiori, il Jelly Bean di media dimensione, attivabile anche col capo, ed infine lo Specs è un pulsante di piccole dimensioni, attivabile anche col movimento delle labbra o del mento. Il sensore Joggle della Penny&Giles è caratterizzato dal fatto che la sua superficie può ruotare in senso orario/antiorario facendo variare la resistenza del dispositivo (da un massimo di 1,5 Kg fino ad un minimo di 200g) con quindici diverse posizioni. Altri sensori singoli sono quelli della Tash: Micro Light è un piccolo sensore molto sensibile e facilmente posizionabile. Left è un sensore a stelo costituito da un'asta metallica ed un'estremità rigida ricoperta con un disco in spugna. Quando si esercita la forza, per l'attivazione del sensore, l'estremità si flette leggermente. E' indicato per essere utilizzato con il capo da parte di chi abbia un buon controllo fine del movimento del capo. Sensori multipli: sono sensori con più funzioni raggruppate in un unico strumento. Si rilevano spesso ottime soluzioni perché in poco spazio racchiudono molte funzioni. Vediamo per primi i sensori multipli 2/1 (2 sensori in 1): Pneumatic Switch è un sensore a pressione attiva/passiva (inspirazione/espirazione). Per attivare uno switch si soffia, per attivare l'altro si inspira. Rocker Switch sono due sensori, uno per ogni lato, che vengono attivati premendo ora sull'una ora sull'altra parte. Passiamo ora ai sensori 5/1 (5 sensori in 1): Wafer è costituito da cinque sensori a membrana disposti in sequenza. Penta è formato da cinque piccoli sensori disposti a croce, per persone con un buon controllo motorio fine. Mini Joystick with Push : quattro sensori vengono attivati col movimento della leva nelle quattro direzioni, il quinto è attivato premendo la leva del Joystick. 137 Appendice A: Ausili informatici e tecnologie per disabili Tutte le informazioni presentate nella seguente appendice relative agli ausili informatici e alle tecnologie per disabili sono state fornite dalla EasyLabs di Torino. 138 Appendice B Sistemi di puntamento oculare I dispositivi di puntamento rappresentano diversi modi di controllare il puntatore sul monitor al fine di eseguire le azioni che desideriamo; i più noti sono il mouse e il joystick. Spesso il mouse è difficilmente accessibile a disabili motori per la difficoltà di coordinare e compiere due azioni distinte: lo spostamento sul piano e la pressione del tasto di selezione. Una tipologia di dispositivi è basata sui movimenti dello sguardo per direzionare il puntatore sullo schermo. Questi dispositivi possono essere costituiti da una fascia o un caschetto che l'utente deve indossare, oppure possono essere dispositivi da fissare sulla montatura di un paio di occhiali. La soluzione migliore è però rappresenta da quei sistemi che non necessitano di alcun dispositivo collegato all'utente, che quindi rimane più libero nei movimenti. Nella seguente appendice sarà rivolta particolare attenzione proprio a quest'ultima categoria di sistemi di puntamento oculare. Il loro funzionamento si basa sulla presenza di una telecamera e in alcuni casi di un LED (emettitore di luce infrarossa), a seconda del metodo utilizzato nella predizione del punto di fissazione. 139 Appendice B: Sistemi di puntamento oculare Prima di presentare alcuni dei dispositivi esistenti in commercio oppure dispositivi che sono stati e sono oggetto di studio da parte di ricercatori od Università straniere, si descrive brevemente uno dei metodi più frequenti su cui si basa il loro funzionamento. Metodo centro pupilla/riflessione della cornea (PCCR) Il "cuore" di un sistema ad inseguimento dell'occhio è un monitor, sotto cui (oppure sopra cui) è montata una telecamera ed un LED ad infrarossi. Il LED emette dei raggi infrarossi a bassa potenza, che illuminano l'occhio. La superficie della cornea riflette questi raggi. La riflessione genera il cosiddetto effetto "occhi rossi" (lo stesso che si ha quando si fa una fotografia e la lampadina del flash è troppo vicina alla lente dell'obbiettivo). Questo effetto migliora l'immagine della pupilla alla telecamera e rende più facile alle funzioni di elaborazione delle immagini localizzare il centro pupilla. Il sistema calcola il punto fissato dall'occhio basandosi sulla posizione relativa del centro pupilla e sulla riflessione della cornea nell'immagine dell'occhio. Vediamo, per primi, sistemi di puntamento oculare che sfruttano il metodo appena descritto. EyeGaze System della LC Technologies Inc. è un sistema progettato per individuare su quale punto dello schermo è fissato lo sguardo dell'utente. Il click del mouse è realizzato tramite una pausa di fissazione dell'occhio sul punto desiderato. Le operazioni di elaborazione delle immagini e di calcolo del punto fissato vengono eseguite da un software apposito che viene installato nell'elaboratore dell'utente. Le rilevazioni vengono effettuate ad una velocità di campionamento di 60 Hertz. 140 Appendice B: Sistemi di puntamento oculare Ad ogni campione di immagine prelevato dalla telecamera, EyeGaze produce una serie di informazioni: le coordinate del punto fissato, un flag che indica se l'operazione di rilevazione dell'occhio ha avuto successo o meno, il diametro della pupilla, la posizione del bulbo oculare e un'analisi delle saccadi e fissazioni. Gli errori di inseguimento sono dell'ordine di 0,25 pollici (0,63 cm circa). La testa è libera di muoversi entro un range di 1,5 pollici (3,8 cm circa). L'algoritmo per il processamento delle immagini si occupa anche della compensazione di diverse fonti d'errore: movimenti del capo, variazione del diametro della pupilla, riflessione che cade proprio sul bordo della pupilla. L'utilizzo di questo sistema richiede un buon controllo del capo, l'utente deve essere in grado di mantenere lo sguardo fisso su di un punto per almeno mezzo secondo, deve avere una buona vista e possedere adeguate capacità mentali (cognizione, memoria, capacità di lettura). EyeGaze dev'essere utilizzato lontano dalle finestre e in presenza di un numero limitato di sorgenti di luce infrarossa. In base ad una serie di calcoli trigonometrici EyeGaze definisce il punto in cui è indirizzato lo sguardo della persona e rileva un certo numero di dati "grezzi", che vengono posti in un'opportuna struttura dati. Tale struttura verrà utilizzare dalla funzione per la rilevazione delle fissazioni, che ne determina non solo la posizione, ma anche la durata. Prima di utilizzare il sistema, è necessario conoscere alcune caratteristiche dell'occhio dell'utente, in modo che la predizione dello sguardo sia sufficientemente accurata. Ciò si ottiene con una procedura di calibrazione, in cui, per 15 secondi circa, l'utente è invitato a fissare una serie di punti sullo schermo. Sembra sia stato testato che EyeGaze System riesca ad inseguire il movimento dell'occhio nel 90-95% dei casi. 141 Appendice B: Sistemi di puntamento oculare Quick Glance Eye-tracking System della EyeTech Digital Sistems è un dispositivo che emula il comportamento del mouse utilizzando il movimento degli occhi. Una telecamera montata sotto il monitor del PC si focalizza sull'occhio dell'utente. Due LED a bassa potenza sono montati ai lati del monitor. Quick Glance (Glance significa occhiata) determina dove l'utente stia guardando sul video, cioè il punto fissato, analizzando la posizione della riflessione della cornea e il centro della pupilla. Il cursore viene posizionato proprio sul punto calcolato in questo modo. Il click del mouse è realizzato o con un battito di ciglia oppure con una pausa dell'occhio o ancora tramite un sensore esterno. L'inseguimento dell'occhio avviene ad una velocità di 30 campioni al secondo. QuickGlance determina sia la posizione che la durata della fissazione. ERIKA System della ERICA Inc. permette di inseguire e memorizzare il movimento degli occhi e la dilatazione della pupilla di una persona, sullo schermo di un computer. ERIKA sta infatti per Eyegaze Response Interface Computer Aid System. Inseguendo il movimento degli occhi di una persona il sistema permette alla persona stessa di controllare il proprio elaboratore utilizzando lo sguardo. Come i due prodotti descritti sopra, anche ERIKA non è un dispositivo intrusivo per l'utente, infatti abbiamo di nuovo una telecamera e un LED, questa volta posti in una "scatola" sotto il monitor. La tecnica utilizzata è ancora quella descritta inizialmente (metodo PCCR), che si basa sulla posizione del centro della pupilla e della riflessione della cornea. 142 Appendice B: Sistemi di puntamento oculare Durante la procedura di calibrazione l'utente deve fissare sei diversi punti sullo schermo. Il sistema lavora ad una velocità di 60 Hertz. Sistema d'interfaccia al PC che utilizza il movimento oculare, progetto di un ricercatore dell'Istituto di Scienza e Tecnologia di Kwangju - Corea, Kyungnam Kim. Il sistema si compone di quattro moduli: il primo riguarda l'inizializzazione del sistema, tramite una procedura di calibrazione, il secondo l'individuazione degli occhi all'interno del viso, il terzo la rilevazione della pupilla e infine l'ultimo riguarda il calcolo del punto fissato sullo schermo. Il concetto su cui si basa il suo funzionamento è la consapevolezza che, se si registrano diverse fissazioni, vicine tra loro, collegate da brevi saccadi, allora esse individuano un unico punto (gaze point). L'operazione di elaborazione dei dati sul movimento degli occhi è composta, da una parte dal filtraggio del rumore introdotto, dal riconoscimento del punto di 143 Appendice B: Sistemi di puntamento oculare fissazione e dalla compensazione di errori introdotti ad esempio durante la fase di calibrazione, dall'altra dalla gestione dell'iterazione col PC. La calibrazione dà origine ad una sorta di "mappa" dello schermo, che verrà utilizzata per individuare il punto fissato dall'utente. Le immagini ottenute dalla telecamera possono introdurre degli errori, dovuti sia a cause naturali (movimento della testa) oppure artificiali (immagine video non adeguata). Il sistema cerca di rilevare il centro dell'iride e quindi della pupilla. A tal fine si utilizzano due diversi tipi di algoritmi: il primo, meno affidabile e preciso, si chiama LLS (Longest Line Scanning), il secondo, più affidabile, OCEM (Occluded Circular Edge Matching). Il primo passo per la loro applicazione è la rilevazione dei bordi dell'iride. Il metodo LLS si basa sul fatto che l'immagine dell'iride, circolare, in realtà risulta essere un'ellisse. Esiste un teorema che afferma che il centro di un ellisse si trova a metà della linea orizzontale, di lunghezza maggiore, compresa tra i due estremi dell'ellisse. L'algoritmo opera una scansione dell'immagine dell'occhio, proprio alla ricerca di questa linea. Il metodo OCEM si basa sulla definizione di tre punti, candidati ad essere il centro dell'iride: uno corrisponde al punto centrale dei pixel che fanno parte del bordo dell'iride, uno corrisponde al punto centrale della proiezione orizzontale e uno è il punto calcolato col metodo LLS. Ad ognuno dei punti è associato un cerchio, le cui dimensioni vengono calcolate in base ad un particolare formula. Il contorno di tutti e tre i cerchi viene confrontato con quello dell'iride rilevato dall'immagine, il cerchio che meglio combacia viene scelto e il punto candidato ad esso associato diventa il centro dell'iride. Per la direzione dello sguardo vengono proposti due metodi: uno prevede di fissare sulla fronte dell'utente un segno, che fornisce informazioni sulla posizione del viso della persona e sul sistema di riferimento del centro dell'iride. Il secondo metodo utilizza una serie di informazioni geometriche (posizione viso, 144 Appendice B: Sistemi di puntamento oculare raggio dell'iride, distanza riferimento-centro dell'iride) e le proiezioni ortogonali: lo spostamento del centro dell'iride, nella proiezione rappresenta lo spostamento dello sguardo. Il punto fissato sul monitor viene individuato tramite interpolazione lineare in base ai punti ottenuti dalla calibrazione. Sistema eye-tracking progettato da una studentessa dell'Università del Wisconsin - Madison, Tamara Miller. Il sistema insegue lo spostamento della pupilla di una persona e interpreta in quale direzione sia rivolto lo sguardo di quest'ultima. Una delle applicazioni principali di tutto questo è l'iterazione con un elaboratore, in quanto il sistema può essere utilizzato come un emulatore di mouse, in modo da liberare dall'uso delle mani le persone disabili che vogliono utilizzare un computer. Caratteristica importante del sistema è quella di non essere un dispositivo intrusivo per l'utente. I passi principali dell'algoritmo ideato sono: uno zoom del viso dell'utente, a questo punto si tenta di individuare gli occhi, cercando le due regioni più estese interamente circondate dalla pelle (applicando un filtro speciale). Può capitare che vengano incluse anche le sopracciglia, allora viene applicata una procedura per eliminare le sopracciglia dalla regione contenente gli occhi. Si rilevano i bordi dell'occhio (con un filtro apposito) e si cerca di determinarne approssimativamente la dimensione, che si confronta con la dimensione degli occhi facenti parte di una sorta di libreria di immagini di riferimento (circa 3 immagini). Da questo confronto si può ricavare la misura del raggio della pupilla dell'occhio, seppure con una data incertezza. Il passo successivo consiste nel rilevare i pixel bianchi e quelli neri nell'immagine dell'occhio. Una volta che quest'informazione è disponibile, è sufficiente cercare l'area in cui il numero di pixel neri è massimizzato: l'area individuata è la pupilla. I problemi riscontrati durante l'applicazione dell'algoritmo sono rappresentati principalmente da condizioni di luce inadeguate o dal fatto che, se le sopracciglia 145 Appendice B: Sistemi di puntamento oculare sono molto vicine all'occhio, l'immagine dell'occhio rilevata contiene anche le sopracciglia. Tutte le informazioni raccolte nelle seguente appendice sono state reperite in Internet e sono servite sia come spunto che come base nell'ideazione del progetto presentato. 146 Appendice C Anatomia e fisiologia dell'occhio umano, movimenti oculari CENNI DI ANATOMIA E FISIOLOGIA DELL'OCCHIO UMANO Il bulbo oculare è approssimativamente una sfera del diametro di 25 mm. L'occhio è costituito essenzialmente da tre rivestimenti o membrane, che racchiudono mezzi gelatinosi, rifrangenti e trasparenti. La membrana più esterna è formata dalla sclera nella parte posteriore dell'occhio, e dalla cornea nella parte anteriore. La cornea, a differenza della sclera è completamente trasparente. La parte intermedia è formata dalla coroide, dal corpo ciliare e dall'iride. Il rivestimento più interno è la retina, che contiene gli elementi nervosi responsabili della trasformazione della luce in impulsi elettrici, ovvero i coni e i bastoncelli. La coroide è una struttura prevalentemente vascolare, deputata al nutrimento di alcuni degli strati retinici. La sclera è l'involucro bianco che costituisce i 5/6 del globo oculare, ha funzioni di sostegno, protezione, mantenimento della forma. L'apparato diottrico è formato da: la cornea la camera anteriore contenente l'umore acqueo l'iride col foro centrale della pupilla il cristallino, che è una lente biconvessa la cavità principale contenente il corpo vitreo la retina 147 Appendice C: Anatomia e fisiologia dell'occhio umano, movimenti oculari La cornea e il cristallino sono lenti naturali, in mezzo alle quali si trova l’iride, colorata diversamente a seconda del soggetto. La cornea è una membrana trasparente priva di vasi ma ricchissima di fibre nervose. Il cristallino è una lente convergente di forma biconvessa che focalizza i raggi luminosi sulla retina. Quando l’occhio guarda un oggetto in lontananza il cristallino si appiattisce e diminuisce la sua curvatura, al contrario quando guarda un oggetto vicino diventa più convesso ed aumenta la sua curvatura. Al centro dell’iride la pupilla si comporta come un diaframma che, chiudendosi e aprendosi, regola la quantità di luce che entra nell’occhio. La funzione del cristallino è quella di far convergere i raggi luminosi sulla retina, una sottile membrana posta nella parte posteriore dell’occhio: si generano così gli stimoli visivi che, trasformati in impulsi elettrici, giungono al cervello attraverso il nervo ottico. La retina è una struttura complessa formata da milioni di cellule (fotoricettori) sensibili alla luce che trasformano gli stimoli luminosi in impulsi elettrici. Queste cellule sono di due tipi: i coni e i bastoncelli. I coni (6 milioni) si trovano al centro della retina e sono specializzati per la visione diurna (permettono di adattarsi 148 Appendice C: Anatomia e fisiologia dell'occhio umano, movimenti oculari alla luce, percepire i colori, distinguere i dettagli fini), mentre i bastoncelli sono alla periferia della retina e sono specializzati per la visone notturna (sono molto più sensibili alla luce rispetto ai coni, ma non permettono di distinguere bene i colori e i particolari). La parte centrale (macula) della retina permette di distinguere i particolari più fini delle immagini e di riconoscere i colori. Al centro della macula la fovea è responsabile dell’acutezza visiva, cioè della percezione dei dettagli più piccoli, questo è dovuto all’altissima concentrazione di coni. Le parti esterne della retina sono invece caratterizzate da un’alta concentrazione di bastoncelli e sono responsabili della visione laterale, permettono cioè di vedere tutto ciò che si trova attorno al punto che si sta fissando. L’umore acqueo è prodotto dal corpo ciliare, una struttura posta dietro l’iride. Circola continuamente all’interno dell’occhio dando consistenza al bulbo oculare. Sia l’umore acqueo che il corpo vitreo sono fluidi trasparenti che permettono una buona propagazione della luce. MOVIMENTI OCULARI L’occhio generalmente non compie movimenti “lisci”, ma si muove con una serie di “salti” improvvisi. La funzione visiva consiste nel fissare gli occhi su di un oggetto, nell’inseguire con gli occhi un oggetto che si muove, nel muovere liberamente gli occhi per cercare un oggetto. Il movimento saccadico è utilizzato per orientare l’occhio in modo che la parte del campo visivo che interessa alla persona cada esattamente sulla fovea. Questo è un rapido ed improvviso movimento (ha una velocità intorno agli 800 gradi al secondo), 149 Appendice C: Anatomia e fisiologia dell'occhio umano, movimenti oculari caratterizzato da un’alta accelerazione e decelerazione. Una volta che una saccade ha inizio, non è più possibile cambiare la sua destinazione o il suo percorso. La definizione moderna di saccade è: movimento a scatti (saccadico significa appunto a scatti) dello sguardo, caratterizzato da alta velocità, che compare durante i cambiamenti di fissazione visiva da un oggetto all’altro. I movimenti saccadici sono movimenti coniugati (di entrambi gli occhi). Durante il movimento saccadico il sistema visivo è praticamente non funzionante, l’assenza di visione durante il moto ad alta velocità consente di alterare la posizione della mira oculare senza che la persona “se ne accorga”. Poiché la qualità della visione risulta degradata da uno slittamento dell’immagine retinica superiore ad appena qualche grado al secondo, il sistema oculomotore deve intervenire affinché il movimento saccadico, che viene eseguito ad altissima velocità, termini bruscamente evitando derive verso la posizione finale e quindi lunghi periodi di visione incerta. Durante la fase rapida del moto la visione è quindi soppressa. Le saccadi sono caratterizzate da un basso tempo di latenza (da quando un oggetto appare nella visione periferica a quando inizia la saccade passano dai 150 ai 200 millisecondi). Il tempo tra la fine di una saccade e l'inizio di un'altra varia tra i 100 e 200 millisecondi. Più frequentemente una saccade è seguita da una fissazione, un periodo di relativa stabilità durante il quale un oggetto può essere guardato, in tale periodo infatti si cerca di mantenere la fovea sull’oggetto interessato. Durante la fissazione l’occhio non rimane mai completamente fermo, ma compie dei piccoli movimenti. Questi ultimi sono corretti da un altro minuscolo movimento simile alla saccade (microsaccade). Sempre durante la fissazione ci sono delle vibrazioni ad alta frequenza che impediscono all’occhio di mantenere una posizione fissa. 150 Appendice C: Anatomia e fisiologia dell'occhio umano, movimenti oculari Tipicamente la fissazione dura dai 200 ai 600 millisecondi, dopodiché inizia un’altra saccade. Movimenti lisci dell’occhio avvengono solo in risposta al movimento di un oggetto nel campo visivo. Il loro scopo è far sì che la proiezione dell’immagine del bersaglio reale venga mantenuta nella fovea e che lo scivolamento dell’immagine sulla retina risulti inferiore ad un certo parametro; lo scivolamento rappresenta l’errore di velocità tra il movimento degli occhi e la mira. Va sottolineato che il movimento liscio è un movimento volontario e di conseguenza esso risulta fortemente influenzato da fattori quali: l’attenzione, l’età, l’allenamento, la prevedibilità e l’apprendimento del moto del bersaglio. La latenza del movimento è di circa 100-150 millisecondi, mentre la velocità può arrivare fino a 100°/s , quindi è un movimento lento. I movimenti lisci non compaiono quando la persona ha di fronte una scena statica (ad esempio lo schermo di un computer): per essere attivati necessitano sempre di uno stimolo di movimento. Un altro, più specializzato, movimento dell’occhio è il nistagmo. Si attiva in risposta al movimento della testa (soprattutto di rotazione), ha lo scopo di mantenere “agganciato” il movimento degli occhi a quello del mondo relativo della testa. L’ingresso sensoriale che stimola tale movimento è la differenza fra la velocità degli occhi e della scena visiva (rispetto ad un riferimento comune). Ovviamente al buio tali movimenti non si verificano. I movimenti finora descritti sono compiuti da tutti e due gli occhi insieme, ma gli occhi possono anche muoversi ognuno in direzioni diverse, compiendo quelli che si chiamano movimenti di vergenza, che portano poi comunque i due occhi a convergere su di uno stesso oggetto. 151 Appendice C: Anatomia e fisiologia dell'occhio umano, movimenti oculari Lo scopo di tali movimenti è di estrarre informazioni sulla profondità degli oggetti dalla composizione delle immagini. Il sistema di vergenza può entrare in funzione anche in seguito a problemi di accomodazione (messa a fuoco). I tempi di latenza dei movimenti di vergenza si aggirano intorno ai 160 millisecondi, anche se talvolta si possono ridurre a 85 millisecondi. Infine vi sono dei movimenti rotatori di torsione attorno ad un asse, che parte dalla fovea e arriva fino alla pupilla. Sembra che dipendano dall’angolo del collo e da altri fattori. Fanno parte di quei movimenti preposti alla stabilizzazione dell’immagine del mondo esterno sulla retina durante i movimenti della testa. La velocità di tali movimenti può arrivare a 100°/s. Avendo la testa tre gradi di libertà, nel movimento degli occhi, è pure presente una componente torsionale. L’occhio raramente è stazionario, ma si muove frequentemente fissando differenti porzioni del campo visivo; anche durante una fissazione compie piccoli movimenti e raramente rimane fermo su un punto per lungo tempo. Il caso di una persona seduta davanti allo schermo di un computer è simile a quello di una persona che fissa una scena statica: possiamo aspettarci di avere pause costanti di fissazioni (in cui comunque l’occhio compie piccolissimi movimenti), collegate tra loro da rapide saccadi. Non dobbiamo generalmente aspettarci periodi stazionari più lunghi di 600 millisecondi, nemmeno movimenti lisci, a meno che un oggetto in movimento appaia sullo schermo. Sarà anche improbabile osservare nistagmo, vergenza o movimenti torsionali. 152 Appendice D Elaborazione ed analisi dell'immagine INTRODUZIONE Da un punto di vista matematico un'immagine può essere vista come una funzione f(x,y), dove f rappresenta il livello di luminosità associato al punto di coordinate x,y. Generalmente per indicare un punto dell'immagine si usa il termine pixel, quindi un'immagine è formata da pixel, ad ognuno di essi è associato un livello di luminosità. In un'immagine in bianco e nero f rappresenta il livello di grigio associato al punto. In un'immagine a colori f rappresenta invece i livelli di rosso, verde e blu che costituiscono il colore associato al punto. La versione digitalizzata di un'immagine, ad esempio quella acquisita da uno scanner o da una webcam, cioè quella che effettivamente vediamo sul monitor del PC, interpretata nello stesso modo, appare come una funzione f a gradini, dove l'altezza di ogni gradino corrisponde all'intensità di grigio o di verde, rosso e blu, a seconda che l'immagine sia in bianco e nero oppure a colori. L'immagine originale viene suddivisa in tanti "quadratini" e si individua il livello di luminosità nel punto centrale di ogni quadratino. 153 Appendice D: Elaborazione ed analisi dell'immagine L'immagine digitalizzata corrisponde quindi ad una matrice nxm, se l'immagine ha dimensione nxm, dove i coefficienti corrispondono ai livelli di luminosità rilevati nei rispettivi quadratini dell'immagine originale. m f(x,y) n Quando l'immagine viene mostrata sullo schermo, essa viene ricostruita appunto come funzione a gradini dando ad ogni quadratino il corrispondente livello di luminosità. Appare evidente che molte informazioni sull'immagine andranno perse. Tanto più è fine la "quadrettatura " dell'immagine, tante più informazioni si acquisiscono, il problema sta nel scegliere il numero di campioni della funzione da acquisire, in modo da ottenere una buona rappresentazione. Indichiamo con L il numero di differenti livelli di luminosità che si possono attribuire ai punti di un'immagine, mentre indichiamo con B il numero di bit necessari per avere questa rappresentazione, si ha che: L=2B In un immagine binaria (0/1, cioè bianco/nero) si usa solamente un bit per rappresentare l'informazione, quindi L sarà pari a 2. 154 Appendice D: Elaborazione ed analisi dell'immagine In un'immagine a colori invece si usano 8 bit per rappresentare il livello di luminosità, per cui L=256. ELABORAZIONE ED ANALISI DELLE IMMAGINI Una volta che si ha a disposizione l'immagine digitalizzata, è possibile accedere ad essa per testare o settare i valori di luminosità dei suoi pixel, tramite funzioni di elaborazione ed analisi dell'immagine. Le funzioni di elaborazione possono alterare i livelli di luminosità in un'immagine o in una parte di essa. Un esempio potrebbe essere una funzione che trasforma un'immagine a colori in un'immagine in bianco e nero. Le funzioni di analisi servono invece per verificare i valori di luminosità nell'immagine, ad esempio per cercare un'area dell'immagine i cui pixel hanno un livello di luminosità inferiore o superiore ad una certa soglia. Nello svolgimento della seguente tesi si sono utilizzate sia funzioni di elaborazione che di analisi dell'immagine. Le funzioni utilizzate fanno parte di una libreria chiamata Victor Image Processing Library, un prodotto della Catenary Systems. La struttura dati principale, in Victor, è il descrittore di immagine. Tutte le informazioni necessarie alle funzioni della libreria, per operare su di un'immagine, sono contenute in questa struttura. Il descrittore di immagine è definito nel file d'intestazione VICDEFS.H col nome imgdes ed è uno degli argomenti richiesti dalle funzioni di Victor. 155 Appendice D: Elaborazione ed analisi dell'immagine Il descrittore di immagine è definito nel modo seguente: typedef struct { unsigned char huge *ibuff; //Image buffer address unsigned stx, sty, endx, endy; //Image area of interest unsigned buffwidth; //Image buffer width in bytes RGBQUAD far *palette; //Palette address int colors; //Number of palette colors int imgtype; //Image type: bit 0 = 1 if image is grayscale BITMAPINFOHEADER far *bmh; // BITMAPINFOHEADER address HBITMAP hBitmap; //Device Independent Bitmap handle } imgdes; Si descrivono ora i singoli elementi della struttura: ibuff: è l'indirizzo dell'immagine in memoria. L'immagine è organizzata in righe e colonne, il pixel di coordinate (0,0) coincide con l'angolo in alto a sinistra. Il formato dell'immagine dipende dal numero di bits per pixel, informazione che si trova nel campo biBitCount della struttura BITMAPINFOHEADER, associata ad ogni immagine bitmap. Il numero di bits per pixel indica quanti bits sono necessari a rappresentare il valore di un singolo elemento dell'immagine. Le funzioni di Victor supportano i formati a 1, 8 e 24 bits per pixel. Un'immagine ad 1 bit contiene due colori, tipicamente bianco e nero. Un'immagine a 8 bit contiene fino a 256 colori. Ogni pixel è rappresentato da un byte e il cui valore può variare da 0 a 255. Questo valore ha la funzione di indice alla tabella dei colori (palette). Per accedere ad esempio alle componenti (rosso, blu, verde) di un determinato colore: rosso = image.palette[colore].rgbRed; verde = image.palette[colore].rgbGreen; blu = image.palette[colore].rgbBlue; 156 Appendice D: Elaborazione ed analisi dell'immagine Un'immagine a 24 bit contiene fino a 16 milioni di colori. Ogni pixel è rappresentato con tre byte, uno per il rosso, uno per il verde ed uno per il blu. Questo tipo di immagine non ha bisogno di una tabella dei colori. stx, sty, endx, endy: rappresentano rispettivamente l'angolo in alto a sinistra (stx,sty) e l'angolo in basso a destra (endx,endy) dell'immagine. Da qui si possono facilmente ricavare le dimensioni dell'immagine: larghezza = endx - stx + 1 altezza = endy - sty + 1 buffwidth: larghezza del buffer contenente l'immagine, in bytes. palette: contiene l'indirizzo della tabella dei colori, che è una vettore di elementi di tipo RGBQUAD. Il tipo RGBQUAD è descritto nel file WINDOWS.H: typedef struct tagRGBQUAD { BYTE rgbBlue; BYTE rgbGreen; BYTE rgbRed; BYTE rgbReserved; } RGBQUAD; colors: numero di colori nella tabella dei colori, dipende dal numero di bits per pixel: Bits per pixel 1 8 24 Colori della tabella 2 256 0 imgtype: se l'immagine è in bianco e nero allora questo bit è settato a 1, 0 nel caso contrario. 157 Appendice D: Elaborazione ed analisi dell'immagine bmh: indirizzo delle strutture BITMAPINFO e BITMAPINFOHEADER definite in WINDOWS.H. Queste due strutture insieme definiscono le dimensioni, i colori e i pixel di un'immagine bitmap. hBitmap: contiene l'handle alla bitmap. Si elencano ora le funzioni di Victor utilizzate negli algoritmi ideati, divise per categorie. FUNZIONI DI GESTIONE DELLA MEMORIA allocimage permette di allocare lo spazio necessario per un'immagine freeimage libera la memoria allocata FUNZIONE DI MANIPOLAZIONE DEI FILE Riguardano le operazioni di salvataggio e di caricamento dei dati di un'immagine su disco. loadbmp per il caricamento di un'immagine bmp nell'area allocata precedentemente savebmp salva un'immagine come bmp FUNZIONI DI ELABORAZIONE DELL'IMMAGINE Permettono di alterare i livelli di luminosità in un'immagine a 8 e 24 bits. usetable setta il valore dei pixels in base ad una tabella precedentemente costruita. Questa particolare funzione viene utilizzata per eseguire la posterizzazione dell'immagine. FUNZIONI DI RIDUZIONE DEL COLORE E DI CONVERSIONE DELL'IMMAGINE Le immagini e le tabelle dei colori possono essere convertite da un formato all'altro. colortogray trasforma un'immagine a colori in un'immagine in bianco e nero (da 24 bit a 8 bit) FUNZIONI DI ANALISI DELL'IMMAGINE getpixelcolor legge il valore del pixel dell'immagine di coordinate (x,y) 158