Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi...

80
Universit ` a degli Studi di Parma Facolt` a di Scienze Matematiche Fisiche e Naturali Corso di Laurea in Informatica Progettazione e realizzazione di un sistema di visione artificiale per il riconoscimento di movimenti residui Candidato: Relatore: Fabio Sozzi Chiar.mo Prof. Federico Bergenti Anno Accademico 2007/2008

Transcript of Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi...

Page 1: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

Universita degli Studi di Parma

Facolta di Scienze Matematiche Fisiche e Naturali

Corso di Laurea in Informatica

Progettazione e realizzazione di

un sistema di visione artificiale

per il riconoscimento di

movimenti residui

Candidato: Relatore:Fabio Sozzi Chiar.mo Prof. Federico Bergenti

Anno Accademico 2007/2008

Page 2: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

.

Page 3: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

.

Quando sei a un bivio e trovi

una strada che va in su e una che va in giu,

piglia quella che va in su.

E piu facile andare in discesa,

ma alla fine ti trovi in un buco.

A salire c’e piu speranza.

Tiziano Terzani

Page 4: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare
Page 5: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

Indice

1 Prefazione 7

2 Sindrome di Locked-In 11

2.1 Cenni generali . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2.2 Casistica e diagnosi . . . . . . . . . . . . . . . . . . . . . . . . 12

2.3 Gianpiero Steccato . . . . . . . . . . . . . . . . . . . . . . . . 13

2.4 Altri casi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

2.4.1 Manuel Longo . . . . . . . . . . . . . . . . . . . . . . . 15

2.4.2 Severino Mingroni . . . . . . . . . . . . . . . . . . . . . 16

2.4.3 Daniela Ferraro . . . . . . . . . . . . . . . . . . . . . . 17

3 Visione Artificiale 19

3.1 Intelligenza Artificiale . . . . . . . . . . . . . . . . . . . . . . 19

3.1.1 Le origini delle IA . . . . . . . . . . . . . . . . . . . . . 20

3.1.2 Precursori delle IA . . . . . . . . . . . . . . . . . . . . 21

3.1.3 Alan Turing . . . . . . . . . . . . . . . . . . . . . . . . 22

3.1.4 Applicazioni pratiche delle IA . . . . . . . . . . . . . . 22

3.2 Visione: dalla Biologia all’Elettronica . . . . . . . . . . . . . . 23

3.3 Il processo di formazione delle immagini . . . . . . . . . . . . 24

3.3.1 Aspetti geometrici . . . . . . . . . . . . . . . . . . . . 25

3.3.2 Aspetti radiometrici . . . . . . . . . . . . . . . . . . . 26

3.4 Il processo di digitalizzazione . . . . . . . . . . . . . . . . . . 28

3.4.1 Il campionamento . . . . . . . . . . . . . . . . . . . . . 28

3.4.2 La quantizzazione . . . . . . . . . . . . . . . . . . . . . 31

3.5 Elaborazione delle immagini . . . . . . . . . . . . . . . . . . . 32

3.5.1 Acquisizione delle immagini . . . . . . . . . . . . . . . 33

5

Page 6: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

6 INDICE

3.5.2 Preelaborazione . . . . . . . . . . . . . . . . . . . . . . 35

3.5.3 Estrazione delle caratteristiche . . . . . . . . . . . . . . 37

3.5.4 Segmentazione . . . . . . . . . . . . . . . . . . . . . . 39

3.5.5 Elaborazione ad alto livello . . . . . . . . . . . . . . . 40

3.6 Analisi delle scene . . . . . . . . . . . . . . . . . . . . . . . . . 40

4 Interprete di Movimenti Residui 41

4.1 Descrizione generale . . . . . . . . . . . . . . . . . . . . . . . 41

4.1.1 Esperimento 1: traccia del movimento . . . . . . . . . 43

4.1.2 Esperimento 2: conteggio dei pixel tramite

marcatore . . . . . . . . . . . . . . . . . . . . . . . . . 44

4.1.3 Esperimento 3: conteggio dei pixel significativi della

bocca . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

4.1.4 Elaborazione delle immagini in IMR . . . . . . . . . . 46

Acquisizione dell’immagine . . . . . . . . . . . . . . . . 46

Pre-elaborazione . . . . . . . . . . . . . . . . . . . . . 48

Estrazione delle proprieta . . . . . . . . . . . . . . . . 50

Segmentazione . . . . . . . . . . . . . . . . . . . . . . 54

Elaborazione ad alto livello . . . . . . . . . . . . . . . 56

4.2 Implementazione . . . . . . . . . . . . . . . . . . . . . . . . . 57

4.2.1 Main.cpp . . . . . . . . . . . . . . . . . . . . . . . . . 57

4.2.2 Buffer.cpp . . . . . . . . . . . . . . . . . . . . . . . . . 61

4.2.3 Avi.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . 62

4.2.4 Player.cpp . . . . . . . . . . . . . . . . . . . . . . . . . 63

4.2.5 Filter.cpp . . . . . . . . . . . . . . . . . . . . . . . . . 65

5 Risultati 69

5.1 Criteri di decisione delle soglie . . . . . . . . . . . . . . . . . . 69

5.1.1 Soglia del valore di “nero” . . . . . . . . . . . . . . . . 70

5.1.2 Soglia sulla variabile rapporto contatore . . . . . . . 70

5.2 Stima delle prestazioni . . . . . . . . . . . . . . . . . . . . . . 73

Bibliografia 77

Page 7: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

Capitolo 1

Prefazione

L’incontro con il signor Gianpiero Steccato e avvenuto per caso. Conoscen-

do uno dei volontari che gli presta settimanalmente assistenza, sono stato

sollecitato piu volte a studiare un modo per automatizzare il suo metodo di

comunicazione, permettendogli cosı di non dover dipendere da una perso-

na per potersi esprimere. Ho deciso quindi di incontrare Steccato per poter

capire se le mie conoscenze informatiche potessero offrigli un qualche tipo

di aiuto, conscio del fatto che entravo in un campo, quello degli ausili per

disabili, da me ancora poco conosciuto. Il rischio era che la mia limitata

esperienza in questo settore mi portasse a proporre la realizzazione di un

ausilio che si sarebbe potuto rivelare infattibile in termini pratici, deludendo

quindi le aspettative di Steccato.

Le perplessita sulla fattibilita di questo progetto si sommavano ad una

sorta di paura immotivata nei confronti di una disabilita fisica cosı seria, che

nemmeno la mia esperienza di volontario in una associazione per disabili 1

poteva in parte sostenere.

Tuttavia gia dal nostro primo incontro, tutti i miei timori sono state dis-

solti dalla spinta vitale che anima Gianpiero: in un anno di lavoro insieme

a lui non l’ho mai sentito lamentarsi della sua condizione, ne cercare com-

miserazione da parte dei volontari che lo circondano. Anzi, e sempre stato

lui a fare la battuta nei momenti giusti, a riportare il buonumore quando la

1Attivita di volontariato svolta presso l’associazione AS.SO.FA., una ONLUS che lavorasul territorio piacentino per offrire sostegno alle famiglie di persone affette da handicap

7

Page 8: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

8 CAPITOLO 1. PREFAZIONE

giornata sembrava davvero essere infruttuosa e a darmi preziosi consigli per

migliorare il mio lavoro.

In un periodo in cui si parlava tanto del diritto a morire (ancora oggi di

estrema attualita) delle persone affette da sindromi degenerative, mi trovavo

di fronte ad una persona che affermava con forza il suo diritto a vivere, quasi

una voce fuori dal coro rispetto al panorama mediatico proposto all’epoca.

Grazie a Gianpiero ho potuto entrare in contatto con una realta nuova, fatta

di persone che vivono giorno dopo giorno la loro disabilita con dignita, con-

sapevoli che la loro identita non non e data solo da quello che riescono o non

riescono a fare.

In una societa che tende a discriminare chi non e uguale ed omologato

agli altri, in cui si maschera spesso con la pieta un sentimento di paura

nei confronti dei diversi, la normalita e la semplicita con cui queste persone

vivono la vita di tutti i giorni rappresentano il miglior esempio di cio che

rende davvero la vita degna di essere vissuta. Non un lavoro appagante e

ben retribuito, non un fisico perfetto, ma piuttosto il fatto di essere amato,

di avere qualcuno che riconosce il tuo valore come uomo, come padre, come

fratello, e non nonostante la tua diversita ma piuttosto attraverso la tua

diversita.

E necessario rendersi conto che dipendere da qualcuno (come tra l’altro

siamo “costretti a fare” in almeno due periodi della nostra vita, l’infanzia e la

vecchiaia) non ci rende meno degni di essere al mondo, bisogna vedere le cure

e le attenzioni di chi ci circonda solo come un gesto d’amore. Questo e quello

che lentamente ho imparato condividendo con Gianpiero questa esperienza.

La sua schiettezza, la passione che ci accomuna per la tecnologia e una

certa convergenza di pensiero hanno spostato il nostro rapporto da un piano

prettamente lavorativo ad uno piu personale, piu di una volta abbiamo tra-

lasciato il nostro lavoro per parlare della vita di tutti i giorni, intervallando

i “discorsi seri” con una ricerca su Internet, un acquisto su eBay e un gossip

familiare. Abbiamo fatto cose normali, che potrei fare con un qualsiasi amico

normodotato e in perfetta salute.

Il valore aggiunto che questo lavoro ha acquisito nasce dal piacere di vivere

un rapporto umano vero, senza la necessita di indossare una maschera per

sembrare diversi e migliori di come si e realmente, consapevoli che la persona

Page 9: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

9

davanti a te sa capire e accettare le tue fragilita e i tuoi difetti.

Trovarsi di fronte ad una persona come Gianpiero, che nonostante le enor-

mi difficolta riesce a dare un senso alla sua vita e a renderla piena e degna di

essere vissuta, e un’esperienza davvero speciale, che spinge alla riflessione e

permette di vedere con piu chiarezza i doni che la vita ci regala ogni giorno

e che noi a volte non siamo capaci di riconoscere.

In questo lavoro di tesi verra presentato il progetto IMR, un interprete di

movimenti residui sviluppato per il signor Gianpiero Steccato, affetto dalla

Sindrome Locked-In. Nonostante per questa sindrome esistano gia comuni-

catori in commercio, il signor Steccato da circa tre anni ha perso l’uso della

vista, e quindi e stata necessaria l’ideazione di un comunicatore che fosse

adatto a persone non vendenti.

Ispirati dall’Articolo 21 della Costituzione Italiana:

Tutti hanno diritto di manifestare liberamente il proprio pensiero

con la parola, lo scritto e ogni altro mezzo di diffusione

abbiamo percio cercato, nel nostro piccolo, di garantire a Steccato una sorta

di “diritto alla comunicazione”, nella forma di un comunicatore software

adatto alle sue problematiche e costruito in base alle sue specifiche richieste

(per renderne piu pratico e immediato l’utilizzo).

Il nostro obiettivo e stato quello di automatizzare i due processi principali

che vengono messi in atto dai volontari che si occupano di far comunicare

Steccato: riconoscimento del movimento e scansione delle lettere. Il primo

processo consiste nel distinguere in maniera esatta i movimenti volontari della

bocca da quelli involontari; il secondo invece comporta la giusta temporiz-

zazione della scansione dell’alfabeto per non stancare troppo Steccato con

movimenti ripetuti troppo ravvicinati.

Quello che abbiamo ottenuto in un anno di lavoro e stata una tecnica per

riconoscere in maniera efficace i movimenti del labbro di Steccato, eliminando

tutti i falsi positivi che inizialmente si proponevano.

Questo prototipo puo essere la base per un comunicatore futuro, e se verra

ulteriormente sviluppato potra garantire all’utente finale un’interazione piu

articolata con l’ambiente domestico. Espandendo la parte del software che si

Page 10: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

10 CAPITOLO 1. PREFAZIONE

occupa di scandire l’alfabeto, si riuscirebbe facilmente a inserire nuove “ma-

crofunzioni” atte a controllare alcuni automatismi in una casa di nuova con-

cezione (con opportuni interventi di domotica), come regolare l’illuminazione

o la temperatura.

Affiancando inoltre un vocalizzatore come quelli attualmente in commer-

cio (ad esempio Loquendo2), sara anche possibile la comunicazione verbale

con i volontari, la rilettura del testo appena composto o di documenti di testo

di vario genere (ad esempio la posta elettronica ricevuta).

E necessario infine precisare che il software realizzato non si pone come

obiettivo quello di “snellire” il processo di comunicazione, ma ha lo scopo

di rendere non piu necessaria la presenza di un volontario ogni volta che

Steccato ha la necessita di scrivere un testo.

2http://www.loquendo.com/it

Page 11: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

Capitolo 2

Sindrome di Locked-In

Ho appena scoperto che a parte il mio occhio ho altre due cose che

non sono paralizzate: la mia immaginazione e la mia memoria

Jean Dominique Bauby, malato di LIS

In questo capitolo verra descritta in maniera accurata la Sindrome Locked-

In, una malattia molto rara che interessa il tronco encefalico e che rende le

persone “chiuse dentro il proprio corpo”, prigioniere di un involucro che non

riescono piu a controllare e impossibilitati a comunicare con l’esterno. Verra

in particolar modo affrontato il caso di Gianpiero Steccato, per cui ho rea-

lizzato l’ausilio software trattato in questa Tesi di Laurea, un piacentino che

da 9 anni e affetto da questa malattia.

2.1 Cenni generali

La sindrome locked-in (o sindrome del chiavistello, da ora LIS) viene definita

come “una condizione nella quale il paziente e cosciente e sveglio, ma non puo

muoversi oppure comunicare a causa della completa paralisi di tutti i muscoli

volontari del corpo” 1. Chi e affetto da questa sindrome sa esattamente

dove si trovano le braccia e le gambe e riesce ancora a percepire sensazioni

tattili e dolorifiche: questo se da un lato puo essere uno svantaggio visti i

1fonte: Wikipedia

11

Page 12: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

12 CAPITOLO 2. SINDROME DI LOCKED-IN

disagi fisici che l’immobilita prolungata puo causare, dall’altro puo fungere

da campanello d’allarme per evitare possibili piaghe da decubito.

Recenti ricerche si sono interessate anche alla condizione psicologica dei

pazienti affetti da LIS, in particolare alle sensazioni derivate dall’imprigiona-

mento forzato a cui sono costretti: quello che ne risulta e che la maggioranza

dei soggetti dicono di sentirsi piuttosto tranquilli, e questo sembra contrario

al panico e al terrore che si potrebbe supporre ovvio in persone coscienti che

non possono muoversi o parlare.

Questo indica, anche se non se ne ha la piu assoluta certezza scientifica,

che probabilmente le emozioni sono dovute a interpretazioni delle sensazio-

ni corporee, e quindi lo scarso senso della corporeita (propriocezione) eviti

fenomeni di crisi o panico nei pazienti affetti da LIS.

2.2 Casistica e diagnosi

La LIS e una patologia relativamente recente, conseguenza del miglioramen-

to tecnologico che ha interessato le tecniche di rianimazione. Per questo

motivo le statistiche sono ancora abbastanza approssimative e parziali, e la

classificazione della LIS come ’rare disease’ 2 (1 caso su 200.000 persone) po-

trebbe essere soggetta a successive modifiche; di fatto comunque, almeno

nella realta italiana, i casi di Locked-In dichiarati sono ancora relativamente

pochi, e interessano prevalentemente la popolazione maschile (rapporto 3:1).

La diagnosi di questa sindrome non e facile: la tetraplegia3 e l’anartria4

potrebbero in un primo momento far pensare ad uno stato di coma, e senza

la presenza di uno specialista che riconosca la presenza di movimenti residui

il paziente non verra sottoposto alla terapia riabilitativa che potrebbe por-

tare a risultati eccezionali nell’ambito della riacquisizione del controllo della

muscolatura.

2fonte: National Institute of Neurological Disorders and Stroke3La tetraplegia e un disturbo del movimento e della sensibilita a livello dei quattro arti

(superiori e inferiori)4L’anartria consiste nell’assenza, nella diminuzione e/o alterazione dei movimenti

complessi e finalizzati all’espressione fono-articolatoria verbale

Page 13: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

2.3. GIANPIERO STECCATO 13

Uno dei segnali piu evidenti che permettono di distinguere questa sindro-

me dalle forme di coma e proprio la presenza di questi “movimenti residui”,

che sopravvivono al danno del tronco encefalo: spesso si tratta di movimenti

molto limitati, quali la possibilita di sbattere le palpebre, muovere i globi

oculari o qualche dito. Basta inserire questi movimenti in un sistema di co-

municazione booleano (ad esempio sbattere una volta l’occhio per dire di no,

due per dire di si) per aprire un canale di comunicazione con il paziente, par-

tendo da domande elementari (“Hai fame?”, “Hai sete”, “Hai freddo?”, “Hai

caldo?”) fino a costruire un dialogo piu ricco, che prende in considerazione

anche il pensiero e i sentimenti dell’individuo.

Questa che viene descritta non e una realta utopica, ma quello che accade

ogni giorno negli ospedali che effettuano riabilitazione ad alta intensita, grazie

a medici preparati che riescono a fare una breccia nel muro di silenzio che la

sindrome locked-in innalza intorno alle sue vittime.

E anche nei casi in cui alla trombosi non sopravvivono movimenti residui,

sono stati studiati ausili informatici per rendere possibile la comunicazione

mediante la lettura dell’encefalogramma del paziente, il quale riesce ad espri-

mersi attraverso alcuni tipi di pensieri particolarmente facili da “leggere”.

Si tratta sicuramente di metodi sperimentali che permettono una comuni-

cazione lenta e non priva di errori, ma che rappresentano il filo a cui sono

attaccate le speranze di molte persone.

2.3 Gianpiero Steccato

Quella che ora andiamo a presentare non e una descrizione “da manuale”

della Sindrome Locked-in, ma bensı gli effetti che quest’ultima ha avuto sul-

la persona specifica di Gianpiero Steccato. Questo perche gli effetti della LIS

variano da soggetto a soggetto, quindi i movimenti residui di un paziente

possono non essere gli stessi di un altro paziente. In particolare alcune per-

sone riescono a muovere la testa per azionare interruttori e pulsanti, mentre

altre possono sfruttare la vista per comporre parole grazie a tecnologie di

eye-tracking.

Steccato e stato colpito da un primo ictus mentre si trovava a Roma in

vacanza per festeggiare l’anniversario di matrimonio, il 7 Gennaio 1999, e

Page 14: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

14 CAPITOLO 2. SINDROME DI LOCKED-IN

dopo il ricovero in ospedale ha avuto un successivo ictus due giorni dopo.

Viene poi trasferito all’ospedale “Giuseppe Verdi” di Villanova d’Arda, noto

centro riabilitativo situato tra la provincia di Piacenza e quella di Parma. In

quel periodo grazie alle sedute di fisioterapia aveva ricominciato a vestirsi da

solo e a muovere qualche passo in maniera autonoma, ma il 10 Aprile viene

colpito dalla terza recidiva dell’ictus, che danneggia il tronco encefalico.

Rimasto “chiuso dentro” il proprio corpo, per circa 6 mesi Steccato sfrutto

la palpebra dell’occhio destro per rispondere in maniera affermativa alle do-

mande che gli venivano poste. Un metodo sicuramente semplice e immediato,

ma che obbligava Lucia, la moglie di Gianpiero, a passare in rassegna tutti

i possibili bisogni del marito per potergli porre la domanda giusta. La vera

rivoluzione fu utilizzare una scansione dell’alfabeto per permettere a Steccato

di selezionare, tramite il battito della palpebra, le lettere delle parole pensa-

te. Questo gli permise di esprimersi in maniera piu libera, non limitandosi

solo a comunicare a chi gli stava intorno i suoi bisogni primari.

Circa quattro anni fa pero la perdita della vista ha obbligato Steccato a

rivedere completamente il suo modo di comunicare: chi dialoga con lui deve

scandire le lettere dell’alfabeto 5 a voce e interrompere la scansione quando

Gianpiero inarca l’angolo destro della bocca: questo segnale indica che la

lettera appena pronunciata e quella che serve per comporre la parola, quindi

si ricomincia da capo per individuare la lettera successiva.

Questa suddivisione dell’alfabeto in gruppi e solo una delle tante che pos-

sono essere utilizzate per ottimizzare la comunicazione e aumentare il numero

di parole composte per unita di tempo. Altre suddivisioni attualmente in uso

nell’ambito della LIS ordinano l’alfabeto in base a studi sulla frequenza con

cui ogni lettera viene usata nella lingua del paziente, in modo da proporre

prima le lettere che statisticamente si usano piu spesso.

A causa di questa sopravvenuta cecita i comunicatori attualmente in com-

mercio non sono adatti all’uso, visto che la maggior parte di questi richiede

necessariamente l’interazione visiva del soggetto per poter essere utilizza-

ti. Proprio da questa necessita e nata l’idea del progetto IMR, che sfrutta

la Visione Artificiale per creare un interprete esperto che sa riconoscere i

movimenti del volto e che propone una scansione vocale dei gruppi di lettere.

5Suddivise in 4 gruppi: vocali, primo, secondo e terzo gruppo di consonanti

Page 15: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

2.4. ALTRI CASI 15

2.4 Altri casi

Come e stato precisato nella sezione precedente, il quadro clinico dei pazienti

colpiti da trombosi al tronco encefalico e variabile, e dipende strettamente

dall’estensione del danno neurologico e dalle aree che vengono colpite dal

trombo.

Di seguito verranno presentati alcuni casi di persone affette da Sindrome

Locked-In che hanno deciso di rendere note le loro condizioni di salute, per

sensibilizzare l’opinione pubblica sul problema e spesso (come nel caso del

signor Manuel Longo) per suggerire possibili soluzioni tecniche per affrontare

al meglio questa sindrome.

2.4.1 Manuel Longo

Il primo caso che affrontiamo e quello di Manuel Longo, nato nel 1962 da

madre italiana e padre maltese, che e stato colpito dalla trombosi del tronco

encefalo il 21 Settembre 2000. Sposato, due figli, Longo gestiva una piccola

impresa di impianti elettrici ed idraulici, ed e proprio durante un viaggio

di lavoro in Italia che e stato colpito dalla sindrome. Dopo essere stato

ricoverato per una settimana in terapia intensiva in Italia (quattro giorni dei

quali era in coma), le sue condizioni di salute hanno permesso il trasporto in

ospedale a Malta, dove e rimasto altri 30 giorni.

Mancando a Malta strutture per ospitare disabili di giovane eta, ha tra-

scorso 16 mesi alla San Vincent de Paule Residence, un ospizio per anziani.

Durante la degenza in questo ricovero e riuscito a riacquisire il movimento

della testa, che e diventato il fulcro su cui sono stati creati tutti gli ausili con

cui riesce a interagire con il mondo che lo circonda.

Dei momenti intercorsi tra la crisi e il coma Longo conserva ancora me-

moria, essendo rimasto cosciente fino all’ultimo, sebbene impossibilitato a

parlare e a muovere i muscoli del corpo.

Longo introduce un aspetto interessante legato alla Sindrome di Locked-

In, ovvero quello del controllo della temperatura corporea: quest’ultima e

difficilmente gestibile per chi e affetto da questa patologia, in quanto la rego-

lazione della temperatura avviene tramite la contrazione dei vasi sanguigni

delle braccia e delle gambe ad opera di appositi muscoli. Essendo lesa la

Page 16: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

16 CAPITOLO 2. SINDROME DI LOCKED-IN

comunicazione tra il cervello e i muscoli, questa regolazione difficilmente av-

viene, anche se comunque le sensazioni estreme di caldo e freddo vengono in

generale percepite.

Per spostarsi, Longo utilizza una sedia a rotelle studiata appositamente

per essere controllata tramite movimenti residui. Inizialmente i fisioterapisti

pensavano di utilizzare come controllo l’emissione di aria (in pratica si gesti-

va il movimento aspirando o soffiando aria in un apparecchio), ma visto che

Longo (come quasi tutte le persone affette da Locked-In) non riesce a con-

trollare la respirazione hanno deciso di optare per una barra da controllare

con la pressione del mento. Il metodo, sebbene efficace, puo in alcuni casi

creare problemi, poiche in caso di oscillazione della sedia a rotelle (causate

ad esempio da una buca), Longo rischia di premere inavveritamente la barra

di comando aumentando di conseguenza l’instabilita della carrozzina.

Per utilizzare il computer Longo ha inizialmente pensato ad un sistema

di controllo del movimento del mouse tramite interruttori al mercurio, ma il

problema principale era il click del mouse, che nel caso fosse stato affidato

ad un sensore a morso non permetteva comunque di simulare la pressione

del tasto destro. La soluzione definitiva e stata raggiunta con LUCY, una

tastiera utilizzabile insieme ad un normale PC i cui tasti vengono “premuti”

da un raggio laser applicabile alla testa o alla montatura degli occhiali del

soggetto. In questo modo Longo riesce ad usare facilmente il computer e a

comunicare tramite un vocalizzatore associato al programma.

2.4.2 Severino Mingroni

Severino Mingroni viene colpito il 23 Ottobre del 1995 da trombosi dell’arteria

basilare destra. Dopo 5 giorni di pre-coma, si risveglia all’ospedale di Chieti,

perfettamente immobile e muto, capace di muovere solo la palpebra destra.

Anche a lui, come a Steccato, fin da subito venne proposta la possibilita di

comunicare sbattendo due volte la palpebra per rispondere affermativamente

e una per rispondere negativamente.

Col tempo Mingroni ha pero riacquisito in parte la mobilita del collo, che

ora riesce a sorreggere la testa, e grazie a questa possibilita comunica tramite

Page 17: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

2.4. ALTRI CASI 17

un ausilio hardware denominato HeadMouse 6, che consiste in un rilevatore

di movimento e di una fascia da applicare intorno alla testa munita di un

catarinfrangente argentato. Muovendo la testa Mingroni riesce a muovere

il puntatore del mouse, e grazie ad un particolare software (Dragger) riesce

anche a cliccare sugli elementi presenti sul desktop.

In questo modo ha la possibilita di comunicare con il mondo esterno, di

scrivere e-mail e di aggiornare il blog su cui tratta argomenti di attualita

come le cellule staminali (che molti ricercatori ritengono fondamentali nella

cura di queste malattie).

Per quanto riguarda la nutrizione, Mingroni riesce a introdurre in bocca

(tramite una siringa) alimenti pressoche liquidi, e pur non controllando la

lingua riesce a inghiottire muovendo leggermente all’indietro la testa. Per

richiamare l’attenzione dei genitori ha a disposizione un bottone, posizionato

sul poggiatesta della sedia, che preme con la testa azionando un campanello.

2.4.3 Daniela Ferraro

La vicenda di Daniela Ferraro nasce da un evento speciale: insieme al ma-

rito Luigi era in ospedale per dare alla luce il secondo figlio. A poche ore

dal parto la signora Ferraro lamentava dolori alla testa, e successivamente

andava in coma, costrigendo i medici ad operarla d’ urgenza per rimuovere

i danni provocati dall’emorragia celebrale che l’aveva colpita. Le possibilita

di sopravvivenza erano poche, ma alla fine le condizioni di Daniela si so-

no stabilizzate ed e stata trasferita dal reparto di terapia intensiva ad altre

strutture.

Inizialmente la diagnosi era quella piu comune: coma. Ma il marito Luigi

si era accorto che in qualche modo sua moglie sembrava cosciente, e proprio

la sua insistenza ha permesso ai medici di cambiare la diagnosi da quella di

coma a quella di LIS. In questo modo e stato possibile aprire un canale di

comunicazione con Daniela, che ora puo esprimersi muovendo gli occhi in

alto e in basso.

Insieme al marito, Daniela ha creato l’associazione “Amici di Daniela”,

per dare sostegno e assistenza alle famiglie colpite da LIS.

6http://www.orin.com

Page 18: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

18 CAPITOLO 2. SINDROME DI LOCKED-IN

Page 19: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

Capitolo 3

Visione Artificiale

In questo capitolo verra introdotta la Visione Artificiale, una branca dell’In-

telligenza Artificiale che mira a creare un modello approssimato del mondo

reale (3D) partendo da immagini bidimensionali (2D).

3.1 Intelligenza Artificiale

Prima di addentrarci nel campo della Visione Artificiale, e necessario fornire

alcune nozioni di base del settore dell’informatica da cui essa nasce, ovvero

quello dell’Intelligenza Artificiale (da ora IA).

Bisogna fin da subito specificare che l’IA non si occupa di portare a ter-

mine compiti impossibili per l’uomo, quanto piuttosto di sfruttare la potenza

dei moderni calcolatori per eseguire gli algoritmi associati ad un particola-

re compito in maniera molto piu efficace di quanto potrebbe fare un essere

umano.

Un esempio particolarmente significativo di questo requisito dell’IA puo

essere l’applicazione delle IA alla Teoria dei giochi: sono state infatti rea-

lizzati programmi software che permettono di risolvere in poche decine di

secondi problemi altamente complessi come quello del riempimento delle ta-

belle del Sudoku, oppure che riescono a tenere testa nel gioco degli scacchi a

campioni mondiali1.

1si fa riferimento alla partita tra il campione mondiale di scacchi Kasparov e il softwareIBM Deep Blue

19

Page 20: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

20 CAPITOLO 3. VISIONE ARTIFICIALE

3.1.1 Le origini delle IA

Generalmente si tende a ritenere che questa materia sia relativamente giova-

ne, e strettamente legata alla nascita degli elaboratori moderni, ma in effetti

gia nell’antichita esisteva il concetto di “macchina intelligente”, da cui gli

studiosi del nostro secolo hanno tratto spunto nella progettazione delle IA.

Omero era a conoscenza del concetto di IA (800 anni prima di Cristo),

e lo storico antico Polibio credeva persino che Nabis, un dittatore di Sparta

vissuto intorno al 200 A.C., usasse un robot per costringere i cittadini ricchi

ma recalcitranti a pagare le tasse.

Sicuramente la fonte maggiore di innovazione nell’ambito tecnologico e

stata l’immaginazione, che ha gettato le basi (spesso parecchi secoli prima)

di alcune invenzioni che hanno rivoluzionato la nostra vita. La macchina

volante di Leonardo sarebbe sicuramente stata inutile nella Prima Guerra

Mondiale, ma ha sicuramente detto qualcosa di importante sul volo umano.

Analizzando i miti mediorientali e le principali religioni, si puo considerare

che furono le divinita stesse i primi a creare quelli che oggi chiameremmo

“robot”. Il Dio Giudeo-Cristiano creo l’uomo utilizzando l’argilla, mentre

nella tradizione Talmudica la polvere venne racchiusa in un masso (golem)

prima che da esso venissero formate le membra e gli venisse infusa un’anima.

Il mito greco di Prometeo racconta che, dopo aver rubato il fuoco agli Dei,

l’eroe lo utilizzo per dare la vita a due statue di argilla raffiguranti il primo

uomo e la prima donna.

La nascita del termine robot deriva invece dall’opera di Karel Capek2, che

nella sua commedia R.U.R. (Rossum’s Universal Robots) parla di un brillante

scienziato che crea una famiglia di robot per preservare l’uomo dalla fatica (il

termine robot deriva infatti dal vocabolo Cecoslovacco lavoratore). La com-

media, pubblicata poi nel 1921, si conclude con la distruzione dell’umanita

da parte dei robot, a cui un collega dello scienziato aveva fornito capacita

emotive.

2Karel Capek (Male Svatonovice, 9 gennaio 1890 – Praga, 26 dicembre 1938) e statoun giornalista e scrittore ceco.

Page 21: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

3.1. INTELLIGENZA ARTIFICIALE 21

3.1.2 Precursori delle IA

Cosı come abbiamo visto che nell’immaginazione si possono trovare numerosi

precursori delle moderne IA, anche nella storia possiamo trovare artefatti -

giocattoli, automi - che, pur essendo privi di intelligenza, suggerirono tramite

metafore la possibilita di realizzare macchine intelligenti.

In quasi tutte le culture sono stati infatti realizzati modelli mobili per

emulare creature viventi. La storia Cinese dell ottavo secolo descrive un

monaco meccanico che diceva “Elemosina, elemosina” e metteva le monete

in un sacchetto. Sempre in Cina negli anni tra il 790 e l’890 d.C. vennero

realizzati una lontra in legno che si diceva fosse in grado di catturare i pesci

e un gatto capace di catturare i topi e danzare.

Lo stesso Leonardo da Vinci costruı un leone automatico in onore di Luigi

XII: il leone si avvicino al sovrano, aprı lo scrigno del re con un artiglio e

si chino davanti al fiordaliso dell’arma di Francia. Anche Rene Descartes

costruı un automa, battezzato “mia figlia Francine”, che era talmente simile

ad una bambina da venire gettato in mare da un capitano di una nave per

superstizione.

Arrivando ai giorni nostri, si puo citare Euphonia, una “Turca bardata”

esposta alla Egyptian Hall in Piccadilly che riusciva a fare o rispondere a dei

quesiti, ridere, sospirare e cantare; Elektro, prodotto dalla Westinghouse per

la Fiera di New York del 1939, che poteva eseguire ventisei movimenti diversi

e rispondere a comandi parlati.

La vera rivoluzione nella realizzazione di questi artefatti si e avuta pero

con l’avvento dell’elettronica, che ha permesso di passare da modelli non

intelligenti azionati secondo i normali principi della meccanica a esemplari

capaci di dimostrare un potenziale intellettivo. La capacita di calcolo fornita

dall’elettronica ha dato la possibilita agli scienziati di creare macchine capa-

ci di eseguire calcoli matematici complessi, elaborare informazione ottenute

tramite sensori e persino di conservare una base di conoscenza in continuo

aggiornamento per simulare i processi di apprendimento.

Page 22: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

22 CAPITOLO 3. VISIONE ARTIFICIALE

3.1.3 Alan Turing

Una delle figure di maggior rilievo nell’ambito dell’informatica e stata quella

di Alan Turing (Londra 1912 - Wilmslow 1954), che oltre a svolgere un im-

portante ruolo come crittografo durante la Seconda Guerra Mondiale per il

Department of Communications inglese, con la sua macchina universale

di Turing getto le basi teoriche su cui vennero descritti tutti i calcolatori

elettronici a venire.

Traendo spunto dal lavoro che svolse all’interno del progetto ACE (Au-

tomatic Computing Engine = Motore di Calcolo Automatico) al Laborato-

rio Fisico Nazionale di Teddington, Turing scrisse un articolo, profetico per

l’epoca, in cui teorizzava la capacita di una macchina elettronica di pensare

in modo simile a quello degli esseri umani.

Introdusse inoltre quello che egli definı gioco d’imitazione (oggi noto co-

me Test di Turing), in cui un inquisitore dialoga con una persona tramite un

terminale, e ad un certo punto della conversazione la persona viene sostitui-

ta da una macchina. Se l’inquisitore non si accorge del “cambio”, allora si

puo affermare che siamo di fronte ad una macchina intelligente (o che rie-

sce a svolgere con intelligenza quel paricolare compito almeno quanto una

persona).

Nonostante le molte obiezioni che le sue teorie sollevarono, la maggior

parte delle quali e stata smentita con l’avanzare della ricerca in questo settore,

Turing si dimostro lungimirante nel suo lavoro, infatti le sue teorie sulle

macchine intelligenti sono tutt’ora molto usate nell’informatica.

3.1.4 Applicazioni pratiche delle IA

Sebbene molti dei primi obiettivi che gli studiosi delle IA si erano posti sono

ancora irrealizzati (come ad esempio un traduttore universale di linguaggio),

molti progressi sono stati fatti in un certo numero di campi diversi; tra questi:

• giochi (scacchi, bridge, poker, sudoku, etc.)

• dimostrazione di teoremi

• lettura di caratteri manoscritti o stampati

Page 23: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

3.2. VISIONE: DALLA BIOLOGIA ALL’ELETTRONICA 23

• apprendimento di nozioni matematiche

• composizione di melodie musicali e armonizzazioni

• riconoscimento di facce umane all’interno di immagini

Tra questi il riconoscimento dei volti nelle immagini (tecnologia imple-

mentata di recente nelle macchine fotografiche compatte) e trattato dalla

branca dell’IA che si occupa della cosidetta Visione Artificiale.

E interessante notare che i compiti elencati sono tutti riconducibili (in

maniera piu o meno immediata) a particolari algoritmi di lavoro: questo per

la natura intrinseca dei calcolatori, che eseguono programmi sequenziali con

un numero finito (ma potenzialmente illimitato) di istruzioni.

3.2 Visione: dalla Biologia all’Elettronica

La Visione Artificiale si occupa di acquisire, registrare ed elaborare imma-

gini provenienti da un supporto elettronico (ad esempio una Webcam) allo

scopo di riconoscere determinate caratteristiche dell’immagine per varie fina-

lita di controllo, classificazione e selezione. Queste operazioni avvengono in

maniera quasi immediata in tutte le forme viventi altamente evolute, mentre

invece per i calcolatori e necessaria una complessa procedura preliminare di

rielaborazione e standardizzazione dei dati in ingresso. Per questo motivo e

molto difficile riuscire a ricreare un sistema visivo informatico che sia anche

in minima parte simile a quello di un essere umano.

Per poter avvicinare il mondo dell’informatica, fondato sull’elettronica, a

quello della visione animale, fondato sulla biologia e sulla chimica, dobbiamo

chiederci come i nostri occhi ricevono informazioni dall’esterno.

Se ci troviamo di fronte ad un oggetto rosso percepiamo subito una sensa-

zione visiva, sebbene ne l’oggetto ne un fascio di luce rossa abbiano investito

il nostro nervo ottico. Quello che accade e che l’oggetto ha riflesso luce di una

certa frequenza, causando sulla retina una serie di cambiamenti fotochimici,

che a loro volta sono stati tradotti in appropriati impulsi neuronali che il

nervo ottico ha trasportato ai centri visivi del cervello. Da un certo punto di

vista gli impulsi nervosi sono simboli che rappresentano l’oggetto rosso, che il

Page 24: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

24 CAPITOLO 3. VISIONE ARTIFICIALE

nostro cervello puo decodificare per avere una rappresentazione piu accurata

del mondo esterno.

Tralasciando la trattazione approfondita del funzionamento della vista

negli animali e comunque facile notare che ci sono fondamentali differenze

tra il sistema visivo biologico e quello sviluppato per le macchine. Innanzitut-

to le cellule nervose nella retina e nella corteccia celebrale trattano stimoli

sia chimici che elettrici, mentre i circuiti in silicone non hanno possibilita

di elaborazioni chimiche. Secondariamente le connessioni tra neuroni sono

molto numerose e distribuite in tre dimensioni, mentre invece i componen-

ti di un calcolatore digitale hanno molte meno connessioni e queste sono

principalmente sviluppate su due dimensioni.

Nel trattare l’argomento della visione non possiamo pero tralasciare altri

aspetti fondamentali come la questione algoritmica (ovvero trovare la sequen-

za corretta di passi per portare a compimento un atto visivo) e quella com-

putazionale (ovvero quale attivita di calcolo e richiesta agli algoritmi stessi),

che sono comunque interdipendenti dall’apparato hardware a disposizione.

Un algoritmo efficiente ed elegante e inutile se l’hardware (sia biologico che

elettronico) non e in grado di eseguirlo; d’altro canto e possibile che gli algo-

ritmi che compongono un particolare processo visivo - e sono singolarmente

efficaci - non possano poi coesistere nella medesima struttura hardware.

Questi tre aspetti della visione introducono molte variabili nell’ambito

della realizzazione di software che simula la visione biologica, e cio aumenta

di molto la complessita computazionale necessaria a svolgere anche la piu

semplice attivita percettiva.

3.3 Il processo di formazione delle immagini

Prima di approfondire le tecniche con cui andiamo ad elaborare le immagini

in input, ci dobbiamo occupare del problema di digitalizzazione, ovvero il

processo di conversione che porta da un’immagine analogica a un’immagine

digitale. L’analisi di questo processo richiede considerazioni di due tipi: di

ordine geometrico e di ordine radiometrico. Le prime riguardano le relazioni

che sussistono tra le dimensioni e la posizione degli oggetti nel mondo reale

e quelle delle loro rappresentazioni. Le seconde invece si riferiscono alle

Page 25: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

3.3. IL PROCESSO DI FORMAZIONE DELLE IMMAGINI 25

modalita con le quali il campo d’energia luminosa si traduce nell’intensita

luminosa osservata nella scena.

3.3.1 Aspetti geometrici

Le relazioni tra scena reale ed immagine sono studiate in base ai due principali

strumenti di formazione attualmente in uso: l’apparecchio fotografico e il

terminale video. Il primo e costituito da una camera oscura, dotata di un

apertura nella quale e posizionata una lente biconvessa.

Quest’ultima focalizza i raggi luminosi provenienti dall’esterno e li fissa

su una pellicola fotosensibile.

Figura 3.1: Geometria del processo di sintesi delle immagini in una macchinafotografica

Nella Figura 3.1 e rappresentata la geometria dell’apparecchio fotogra-

fico, nella quale il piano xy coincide con il fondo della camera oscura (in

cui e sistemata la pellicola) e il punto L rappresenta la lente biconvessa, di

distanza focale f.

Le relazioni tra il mondo reale e l’immagine fotografata sono fornite dalle

leggi dell’ottica geometrica, e consistono in un semplice processo di proiezione

Page 26: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

26 CAPITOLO 3. VISIONE ARTIFICIALE

attraverso il punto L. Un ipotetico punto P, di coordinate (x0, y0, z0) viene

proiettato in un punto P’ nel piano xy le cui coordinate sono date da:

xif

= − x0

z0−f , yif

= − y0z0−f , zi = 0

Si puo notare dalla Figura 3.1 che l’oggetto considerato si deve trovare

anteriormente alla macchina fotografica; risulta evidente inoltre che l’imma-

gine ottenuta e capovolta come messo in luce dal segno di (xi, yi), opposto

a quelli di (x0, y0). Un’altra caratteristica del processo di proiezione consi-

ste nel fatto che esso non e univoco: tutti i punti della retta PL vengono

proiettati sul punto P’.

Mentre tramite la fotografia si produce l’immagine di oggetti reali, nel ca-

so della grafica con l’elaboratore si realizzano sul video le immagini di oggetti

la cui descrizione geometrica e codificata nell’hardware. La costruzione del-

l’immagine, rappresentata in Figura 3.2, viene ottenuta tramite un processo

molto simile al precedente. Il punto L coincide con la posizione dell’occhio

dell’osservatore, mentre il piano xy su cui si forma l’immagine coincide con

lo schermo del terminale. Le formule del punto P’ ottenuto saranno:

xif

= x0

z0+f, yi

f= y0

z0+f, zi = 0

Le differenze di segno rispetto alle formule precedenti sottolineano che in

questo caso non sono presenti il capovolgimento e la specularita dell’imma-

gine prodotta rispetto alla scena reale inquadrata.

3.3.2 Aspetti radiometrici

Gli aspetti radiometrici si riferiscono a come il flusso di energia luminosa pro-

veniente dalla scena interagisce con il sistema di formazione delle immagini.

Come per ogni fenomeno di tipo ondulatorio, il campo di energia luminosa e

definito da due grandezze: intensita e fase. Nei sistemi di formazione usuali

viene registrata solo l’intensita, mentre viene perduta l’informazione di fase,

in cui sono contenute le informazioni riguardo la profondita della scena. La

relazione tra il campo di energia che agisce sul sistema di formazione (indica-

to con f(ξ, η)) e l’immagine registrata (indicata con g(x, y)) e definita dalla

seguente equazione:

Page 27: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

3.3. IL PROCESSO DI FORMAZIONE DELLE IMMAGINI 27

Figura 3.2: Geometria del processo di formazione delle immagini in terminalevideo

g(x, y) =∫∞−∞

∫∞−∞ h(x, y, ξ, η)f(ξ, η)dξdη

la quale esprime il concetto che un punto dell’immagine g(x,y) viene otte-

nuto tramite la sovrapposizione degli effetti dovuti ai singoli punti di f(ξ, η).

Il principale campo di applicazione di questo modello sta nelle tecniche di

restauro delle immagini, ovvero l’insieme di procedimenti per ovviare ai difet-

ti insiti nel sistema di formazione dell’immagine, o per problemi accidentali

nella ripresa.

Tuttavia l’equazione che abbiamo presentato non rappresenta in maniera

completa il processo di formazione delle immagini, in quanto non tiene conto

del rumore. Si supponga infatti di riprendere attraverso una telecamera una

scena rigorosamente statica, ossia tale che durante il periodo di osservazione

non presenta ne variazioni della struttura e della posizione degli oggetti, ne

fluttuazioni del valore dell’illuminazione. Supponendo di poter misurare il

valore di g in un determinato pixel, a questo punto sulla base dell’equazio-

ne precedente i valori del pixel nel tempo dovrebbero essere sempre uguali.

Sperimentalmente pero si osserva che questo non avviene, e il movimento

fluttuante del valore viene attribuito al rumore.

Page 28: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

28 CAPITOLO 3. VISIONE ARTIFICIALE

Le ragioni di questo fenomeno sono molto numerose e difficili da analizzare

separatamente. La normale variabilita del campo di energia luminosa puo

influire su questo fenomeno, come anche la natura del sistema di formazione,

i cui circuiti elettronici generano il segnale elettrico che misura l’intensita

luminosa. Il discorso e analogo per l’immagine raccolta su una pellicola

fotografica, la quale e affetta da rumore a causa del processo fotochimico

impiegato per fissare l immagine sul supporto.

3.4 Il processo di digitalizzazione

I sistemi di formazione presi in esame forniscono l’intensita luminosa dei vari

punti dell’immagine sotto forma di segnali analogici.

Sara necessario quindi provvedere a convertire questi segnali, tramite un

processo di digitalizzazione, per ottenere un’immagine elaborabile dal cal-

colatore. Questa operazione avviene attraverso due passi consecutivi: il

campionamento e la quantizzazione.

3.4.1 Il campionamento

La digitalizzazione di un segnale monodimensionale e schematizzata in Figura

3.3. Ovviamente non si potra rappresentare il segnale analogico nella sua

interezza, ma ci limiteremo a prendere un numero limitato di campioni e

procedere alla loro quantizzazione.

Almeno a livello teorico il procedimento consistera nel sovrapporre una

griglia all’immagine e misurare l’intensita luminosa in ogni singolo quadrati-

no. Ognuno di questi quadrati viene comunemente chiamato pixel.

Viene naturale quindi chiedersi come possa influire sul risultato finale la

scelta della griglia di campionamento. Una considerazione immediata porte-

rebbe a scegliere la dimensione del lato del pixel uguale alle dimensioni dei

piu piccoli dettagli degli oggetti che si vuole conservare, mentre le considera-

zioni quantitative3 e sperimentali hanno dimostrato che i passi di campiona-

mento dovranno necessariamente essere uguali alla meta delle corrispondenti

dimensioni dei piu piccoli oggetti presenti.

3considerazioni che derivano dal teorema di Shannon sul campionamento

Page 29: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

3.4. IL PROCESSO DI DIGITALIZZAZIONE 29

Figura 3.3: Schema della digitalizzazione. Campionamento e quantizzazioneper un segnale monodimensionale

Se non si segue infatti questa regola, il risultato che si ottiene e quello di

inserire nell’immagine il fenomeno dell’aliasing4, che porta a rappresentare

una funzione che oscilla a frequenza diversa della funzione originaria.

Il fenomeno si presenta quindi anche nelle immagini, come e visibile nella

Figura 3.4, dove al ridursi dei passi di campionamento si ottiene il tipico

effetto a scacchiera dovuto alle dimensioni dei pixel.

4per aliasing si intende il fenomeno per il quale due segnali analogici diversi possonodiventare indistinguibili una volta campionati

Page 30: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

30 CAPITOLO 3. VISIONE ARTIFICIALE

Figura 3.4: Influenza del passo di campionamento. Le immagini sono sta-te digitalizzate rispettivamente su griglie 512x512, 256x256, 128x128, 64x64,32x32, 16x16

Page 31: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

3.4. IL PROCESSO DI DIGITALIZZAZIONE 31

3.4.2 La quantizzazione

Questa seconda fase del processo di digitalizzazione e dovuta alla necessita

di convertire i campioni dell’immagine dalla rappresentazione analogica (e

quindi continua) a quella discreta richiesta dall’elaboratore digitale.

L’operazione di quantizzazione, rappresentata nella Figura 3.3 per un

segnale monodimensionale, consiste nello stabilire dei livelli di decisione

d0, d1, ..., dk e rappresentare ciasciun campione mediante il livello piu vici-

no. L’insieme dei campioni ottenuto rappresenta a tutti gli effetti il segnale

digitalizzato.

L’unica differenza che si ha passando da un segnale monodimensionale

ad un’immagine sta nel fatto che l’intensita luminosa e una funzione di due

variabili spaziali. Nel caso delle immagini i livelli vengono rappresentati nel-

l’elaboratore mediante numeri interi compresi tra 0 e un’opportuna potenza

di 2. Pertanto il valore massimo dell’intensita dk e dato da:

dk = 2m

dove m rappresenta il numero di bit utilizzati per rappresentare i campioni.

Maggiore e il numero di bit, tanto piu e accurata la rappresentazione e tanto

minore e l’errore commesso, detto rumore di quantizzazione.

I risultati ottenuti variando il numero di bit utilizzati nella quantizzazione

sono riportati, nel caso di immagini in bianco e nero, in Figura 3.5.

Nella foto in alto a sinistra dell’Immagine (a) sono stati usati 256 livelli,

e questo numero e stato dimezzato procedendo da sinistra verso destra e

dall’alto verso il basso. Analogo procedimento e stato adottato nell’Immagine

(b) della Figura 3.5, partendo pero da 16 livelli nell’immagine in alto a

sinistra. Si osserva che al ridursi del numero dei livelli aumenta il fenomeno

dei falsi contorni, piu evidenti nelle zone in cui l’intensita luminosa varia

con gradualita. In queste aree infatti la quantizzazione produce dei salti nei

valori dell’intensita luminosa che l’occhio percepisce molto distintamente.

Nelle aree in cui sono presenti bordi questo fenomeno non si percepisce, in

quanto viene mascherato dalla presenza di marcate variazioni di intensita che

fanno parte della struttura dell’immagine.

Si puo notare facilmente che in termini qualitativi non c’e molta differenza

tra l’immagine quantizzata con 256 livelli e quella quantizzata con 64 livelli,

Page 32: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

32 CAPITOLO 3. VISIONE ARTIFICIALE

(a) Livelli iniziali = 256 (b) Livelli iniziali = 16

Figura 3.5: Quantizzazione di un’immagine. Procedendo da sinistra a destrae dall’alto verso il basso essi vengono dimessati per ciascuna immagine.

mentre invece si nota un drastico calo della qualita dell’immagine passando

da 16 a 2 livelli (come mostrato in Figura 3.5). Nella pratica corrente le

immagini vengono quantizzate con 256 livelli, soprattutto in vista del fatto

che le memorie degli elaboratori sono organizzate in gruppi da 8 bit. Piu

complessa risulta invece la scelta della risoluzione spaziale, che dipende dal

tipo di immagine trattata. Nel caso delle immagini televisive, ossia di me-

dia qualita, sono normalmente richiesti 700 campioni in orizzontale e 500 in

verticale.

Per le immagini a colori si procede invece digitalizzando separatamente

le tre bande (R,G,B), allo scopo di minimizzare la distorsione cromatica

dell’immagine ricostruita.

3.5 Elaborazione delle immagini

Come precedentemente specificato, questa fase riguarda la trasformazione

dell’immagine originale in una piu adatta alla fase di analisi della scena.

Questo avviene tramite varie operazioni di filtraggio orientate a ridurre il

rumore, ad evidenziare i contorni e ad identificare regioni dell’immagine.

In base al compito che dobbiamo far eseguire al nostro agente sceglieremo

Page 33: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

3.5. ELABORAZIONE DELLE IMMAGINI 33

attentamente le operazioni che renderanno piu semplice il calcolo delle azioni

da compiere ad ogni iterazione. Un generico sistema di visione artificiale

elabora le immagini tenendo conto di 5 fasi:

• Acquisizione delle immagini

• Preelaborazione

• Estrazione delle proprieta

• Segmentazione

• Elaborazione di alto livello

3.5.1 Acquisizione delle immagini

Un’immagine digitale e ottenuta tramite l’utilizzo di vari tipi di sensori come

squelli sensibili alla luce, sensori tomografici, radar, sensori ad ultrasuoni. In

base al tipo di sensore usato l’immagine puo assumere la rappresentazione di

un ordinaria immagine 2D, un volume in 3D o una sequenza di immagini.

All’interno dell’acquisizione delle immagini distingueremo una parte

hardware (piu inerente al supporto fisico di acquisizione) e una parte software

(che riguardera invece le librerie che si occupano di interpretare in segnale in

input dal sensore).

Il primo passo nella visione artificiale consiste nel creare l’immagine di

una scena su una matrice di dispositivi fotosensibili, come ad esempio le

fotocelle di una telecamera. Attraverso una proiezione prospettica della scena

si crea un immagine della scena inquadrata, che poi verra convertita dalle

fotocelle in una matrice bidimensionale tempo-variante dei valori di intensita

dell’immagine. Nel caso della visione a colori invece di una sola matrice se

ne formano tre, una per ognuno dei tre colori primari.

Pur riducendo il campo alle immagini monocromatiche statiche, ad un

ipotetico agente reattivo guidato dalla visione rimane comunque il compito

di elaborare la matrice di partenza per ottenere o un modello iconico della

scena attorno a se o un insieme di informazioni sull’ambiente con cui calcolare

un’azione.

Page 34: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

34 CAPITOLO 3. VISIONE ARTIFICIALE

Bisogna pero precisare che la proiezione prospettica e una trasformazione

di tipo “molti-a-uno”, e quindi molte scene differenti possono tradursi nella

medesima immagine. A complicare ulteriormente le cose puo esserci inoltre

un forte rumore dovuto a bassi livelli di luce ambientale, che rende piu difficile

identificare univocamente le entita che compongono la scena. Di conseguen-

za non sara possibile “invertire” l’immagine per ricostruire la scena, ma sara

necessario avere conoscenze aggiuntive degli oggetti presenti nella scena e del-

le proprieta delle loro superfici, in particolare di come l’illuminazione venga

riflessa da quest’ultime verso le telecamera.

L’immagine ottenuta tramite il sensore in uso e debitamente campionata

e quantizzata e il punto di partenza delle operazioni di elaborazione da effet-

tuare. Per lavorare con uno stream video (che non e altro che una sequenza

finita di immagini) sono disponibili vari pacchetti software, tra cui uno dei

piu famosi e sicuramente Video for Windows.

Video for Windows (da ora VfW) e stato introdotto da Microsoft nel

1992 come risposta alla tecnologia QuickTime di Apple Computer’s.

Rilasciato come add-on per Windows 3.1, venne poi integrato in maniera

definitiva a partire da Windows 95. L’introduzione di VfW comporto la

creazione di uno standard per memorizzare file video, ovvero l’Audio Video

Interleave (AVI) e la possibilita da parte degli sviluppatori di software di

includere nei loro prodotti funzioni di editing e riproduzione video.

Oltre a questo, VfW includeva anche una suite di applicazioni come:

• Media Player

• VidCap

• VidEdit

• BitEdit

• WavEdit

Page 35: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

3.5. ELABORAZIONE DELLE IMMAGINI 35

3.5.2 Preelaborazione

In questa fase l’immagine viene elaborata in modo da rendere piu facile

il successivo riconoscimento delle caratteristiche fondamentali della scena.

Operazioni standard che interessano questa fase sono:

• Ricampionamento (per assicurarsi che le informazioni non siano insuf-

ficienti o ridondanti)

• Rimozione del rumore

• Riduzione/aumento del contrasto (per assicurare la corretta individua-

zione delle informazioni rilevanti)

A questo scopo verranno di seguito illustrati alcuni filtri che si occupano di

normalizzare l’immagine in input.

• Media mobile. Supponiamo che l’immagine originale sia rappresen-

tata come una matrice m·n, I(x,y), di numeri, chiamata matrice di

intensita dell’immagine. I numeri rappresentano i valori dell’intensita

della luce nei singoli pixel) che compongono questa matrice.

Certe irregolarita riscontrabili nell’immagine possono essere ridotte tra-

mite un operazione di media che si avvale di una maschera di media

mobile. Questa operazione consiste nel centrare questa maschera su

ogni pixel, e calcolare successivamente la somma pesata di tutti i valori

dei pixel all’interno della maschera. Questa somma andra a sostituire il

valore originario di quel pixel. Se vogliamo poi che la matrice contenga

solo valori binari (generalmente 0 e 1), basta confrontare questo valore

di somma con una soglia prestabilita e settare il pixel a 0 se il valore e

inferiore alla soglia, a 1 altrimenti.

L’effetto che si ottiene da questa tecnica e quello di “smussare” gli an-

goli dell’immagine, eliminando granelli di rumore isolati ma allo stesso

tempo sacrificando parte della vividezza dell’immagine e alcuni piccoli

particolari. La funzione piu comunemente usata per svolgere questa

operazione e quella gaussiana a due dimensioni:

Page 36: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

36 CAPITOLO 3. VISIONE ARTIFICIALE

Figura 3.6: Operazione di media mobile tramite funzione rettangolare eoperazione di soglia

G(x, y) = 12πσ2 e

−x2+y2

2σ2

La superficie descritta da questa funzione e a forma di campana. La de-

viazione standard σ determina il grado di smussamento dell’immagine

originale.

• Filtro a massima frequenza. Consiste nel sostituire il pixel con quel-

lo che in un opportuno intorno presenta la massima frequenza. Questo

filtro viene usato per ridurre il rumore ottenuto dalle operazione di ac-

quisizione di immagini binarie, come quelle di testi. In tali immagini

il rumore produce solitamente contorni molto irregolari che il metodo

aiuta a regolarizzare.

• Filtro mediano. Consiste nel sostituire al valore del pixel in esame

quello mediano dell’intorno. Quest’ultimo e definito come quello tale

che meta dei pixel dell’intorno ha un valore maggiore di esso e l’altra

meta un valore minore. Il vantaggio di questo filtro e da trovarsi nella

capacita di conservare i bordi dell’immagine (producendo uno sfoca-

mento nettamente inferiore a quelli inerenti nelle operazioni di media)

Page 37: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

3.5. ELABORAZIONE DELLE IMMAGINI 37

al prezzo di un tempo di calcolo considerevole a causa delle ripetute

operazioni di ordinamento richieste.

• Filtro a massima omogeneita. In questo caso piuttosto che di un

singolo filtro si tratta di una classe molto ampia caratterizzata dal fatto

che il pixel in esame viene sostituito con la media dei pixel contenuti nel

suo intorno che soddisfano una condizione fissata a priori. Un esempio

consiste nello scegliere un certo numero di pixel per i quali e minima

la media o la deviazione standard.

• Filtro superspike. Fa uso dell’istogramma dell’immagine e sostitui-

sce al pixel in esame una media aritmetica dei pixel dell’intorno che

soddisfano contemporaneamente due condizioni. La prima e che la loro

frequenza globale nell’immagine sia superiore di quella del pixel preso

in considerazione. La seconda richiede invece che l’istogramma presen-

ti la stessa concavita in corrispondenza del livello di grigio nel pixel

in esame e in tutti quelli prescelti sulla base della prima condizione.

Questa condizione e stata introdotta per essere sicuri di includere nella

media solo pixel dello stesso tipo.

3.5.3 Estrazione delle caratteristiche

Questa fase si occupa di ricavare dall’immagine normalizzata le informa-

zioni che servono all’algoritmo durante la fase successiva di segmentazione.

Caratteristiche interessanti da estrarre in questa fase sono:

• Linee e bordi (compresi i contorni)

• Punti di interesse locali (ad esempio angoli)

Caratteristiche piu complesse sono il riconoscimento di movimento, forme

o particolari texture.

Dalla natura stessa di molti dei problemi di visione artificiale nasce la

tecnica di estrazione dei contorni. Qualora infatti un agente dovesse muoversi

in un ambiente o raccogliere alcuni oggetti al suo interno, dovrebbe conoscere

la forma degli ostacoli o degli oggetti da raccogliere.

Page 38: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

38 CAPITOLO 3. VISIONE ARTIFICIALE

Una volta estratti, i contorni vengono utilizzati per convertire l’immagine

in un insieme di linee, le quali a loro volta verranno confrontare con una base

di conoscenza fatta di prototipi di figure tipiche che la scena potrebbe conte-

nere. In questo modo l’agente e capace di rinoscere figure solide all’interno

della scena e compiere azioni specifiche in base allo scopo per cui e stato

realizzato.

Per definizione, un contorno e un qualsiasi confine tra parti dell’immagine

aventi valori differenti di una certa proprieta, come ad esempio l’intensita.

Figura 3.7: Tipi di profilo di livello di grigio in prossimita dei contorni. a)Caso ideale (a gradino); b) lo stesso in un caso reale (presenza di rumore);c-d) caso di contorni con variazione piu regolare della luminosita; e-f) striscedi separazione fra due regioni a luminosita costante; g-h) come c-d), ma convariazioni piu brusche della luminosita

Limitandoci al caso di immagini in bianco e nero, le tipologie di livelli di

grigio in prossimita dei contorni sono illustrate in Figura 3.7. La condizione

“ideale” di contorno e quella presentata nel caso a), che in una situazione

reale pero sara riconducibile al caso b) a causa del rumore. Questa situazione

si verifica in corrispondenza degli spigoli dei corpi presenti nella scena nel

momento in cui la sorgente luminosa e ad una notevole distanza dagli oggetti

stessi. Nel caso in cui la sorgente luminosa sia piu vicina agli oggetti si

verificano situazioni come quelle riportate in c) o in d), in cui il livello di

grigio subisce variazioni piu regolari.

I casi in cui le regioni adiacenti si trovano a livelli di grigio praticamente

uguali tra loro, ma sono separati da strice piu o meno larghe di pixel a livello

di grigio diverso, sono riportate nei casi e-h).

In Figura 3.8 e possibile vedere gli effetti dell’estrazione dei contorni su

una generica immagine.

Page 39: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

3.5. ELABORAZIONE DELLE IMMAGINI 39

(a) Immagine originale (b) Immagine elaborata tramite le tecnichedi estrazione dei contorni

Figura 3.8: Estrazione dei contorni.

3.5.4 Segmentazione

Questa fase di occupa di selezionare le aree dell’immagine in cui saranno

rilevate particolari caratteristiche d’interesse, eventualmente attraverso la

suddivisione dell’immagine in piu regioni. Questa tecnica, detta regiona-

lizzazione, risulta complementare all’estrazione dei contorni, in quanto tutte

e due queste tecniche sono caratterizzate da un’alta sensibilita al rumore.

Andiamo ora a definire cosa si intende per regione dell’immagine. Una

regione e un’insieme di pixel connessi che soddisfano due proprieta principali:

1. La regione e omogenea. Un esempio di omogeneita si ottiene imponendo

che la differenza tra i valori di intensita dei pixel nella regione non sia

maggiore di un determinato ε

2. Per nessuna coppia di regioni (omogenee) adiacenti l’unione di tutti i

pixel di queste due regioni soddisfa la proprieta di omegeneita.

Un esempio di algoritmo di regionalizzazione e il dividi-e-unisci. Si parte

da un unica regione (che coincide con l’immagine e che non soddisfa la pro-

prieta di omogeneita) e la si suddivide in quattro nuove regioni. Si verifichera

se ognuna di queste regioni candidate soddisfa la proprieta di omogeneita,

Page 40: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

40 CAPITOLO 3. VISIONE ARTIFICIALE

e nel caso non la soddisfi verra a sua volta divisa in altre quattro regioni.

Quando non e piu possibile effettuare divisioni sulla regione presa in conside-

razione, le regioni candidate adiacenti vengono unite se i loro pixel soddisfano

la proprieta di omogeneita.

3.5.5 Elaborazione ad alto livello

In quest’ultima fase l’input e ridotto ad un insieme di punti o regioni di im-

magine che si presuppone contenga un oggetto. Questi dati verranno sfruttati

per eseguire operazioni “ad alto livello”, tra cui:

• Verificare che il modello contenuto nell’input possieda le specifiche del

modello base o della classe.

• Stimare i parametri specifici tipo la posizione o la dimensione.

• Classificare oggetti in piu categorie

3.6 Analisi delle scene

Dopo che l’immagine e stata elaborata con le tecniche descritte nelle sezioni

precedenti, si puo cercare di estrarre da esse le informazioni necessarie ri-

guardanti la scena. Poiche, come abbiamo gia accennato, la trasformazione

della scena in immagine e un processo del tipo molti-a-uno, questa fase di

analisi richiede spesso o immagini addizionali (come nel caso della visione

stereoscopica) o informazioni generali sui tipi di scene che si puo incontrare.

In questo secondo caso la conoscenza richiesta puo essere di tipo molto

generale (ad esempio la proprieta di riflettivita delle superfici degli oggetti)

o specifica (ad esempio il fatto che la scena contiene un certo numero di

oggetti disposti in un particolar modo). Altri elementi di informazione pos-

sono essere la collocazione della telecamera, la disposizione delle sorgenti di

illuminazione, il fatto che la scena sia all’aperto o all’interno di un edificio.

La conoscenza delle caratteristiche di riflettivita delle superfici permette

ad esempio di determinare la forma di oggetti lisci presenti nelle scene.

Page 41: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

Capitolo 4

Interprete di Movimenti

Residui

In questo capitolo presenteremo le funzionalita principali del progetto IMR

(Interprete di Movimenti Residui).

4.1 Descrizione generale

Innanzitutto e necessario specificare che il software prodotto e a tutti gli effet-

ti un prototipo, in quanto la sua natura “artigianale” comporta la mancanza

delle certificazioni necessarie (ISO, CEE) per una diffusione del software in

ambito sanitario. Questo limite rappresenta un “collo di bottiglia” importan-

te nell’attivita di sviluppo di ausili per disabili, soprattutto se si considera che

un ausilio standard difficilmente si adatta al 100% alle necessita dell’utente

finale.

Basta infatti che alla patologia principale se ne affianchi anche una se-

condaria (come ad esempio la cecita) per rendere necessaria una modifica

hardware/software. Se questa modifica non e presente nella lista ufficiale di

personalizzazioni possibili relative al particolare ausilio allora gli specialisti

di settore non possono in alcun modo intervenire, in quanto si andrebbero

a violare le certificazioni originali del prodotto. Questo problema ha com-

portato una sorta di situazione di stallo all’interno del settore e spesso sono

41

Page 42: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

42 CAPITOLO 4. INTERPRETE DI MOVIMENTI RESIDUI

state accantonate idee potenzialmente efficaci proprio per l’impossibilita di

proporre al pubblico i manufatti che vengono realizzati.

Fatta questa premessa, lo scopo del progetto non e comunque lo svilup-

po di un software immediatamente utilizzabile da un ipotetico utente fina-

le, quanto piuttosto la ricerca di una metodologia efficace per riconoscere i

movimenti labiali di un soggetto impossibilitato a comunicare.

Prima di iniziare la creazione del software e stato necessario un periodo

di studio dei movimenti residui di Steccato, allo scopo di definire quello

piu adatto per creare un canale di comunicazione con il software. Fin da

subito abbiamo identificato i due movimenti candidati per la nostra ricerca:

il movimento labiale e lo spostamento laterale dell’indice della mano sinistra.

Il movimento labiale viene attualmente utilizzato per comunicare: se ad

esempio Steccato deve comporre la parola “Ciao”, fermera la scansione del-

l’alfabeto inarcando verso destra il labbro ogni volta che sentira una delle

lettere che compone la parola in questione.

Il movimento dell’indice invece serve (tramite un sensore a fibra ottica

collegato a un segnale acustico) per richiamare l’attenzione di chi lo assiste.

Il richiamo acustico e di vitale importanza per Steccato (serve infatti a co-

municare la necessita di venire broncoaspirato1 o di cambiare la posizione di

alcune parti del corpo dolenti), e se venisse integrato in un software com-

plesso e sperimentale si rischierebbe, in caso di bug o blocco del software,

di impedire a Steccato di avvisare i volontari circa un’ipotetica situazione di

disagio. Abbiamo quindi preferito concentrarci sul movimento del labbro sia

per evitare questa situazione che per non obbligare Steccato a sfruttare per

la comunicazione un movimento predisposto ad un altro compito.

Stabilito il nostro obiettivo, tramite una Webcam abbiamo registrato

una serie di movimenti del labbro per poterla analizzare e stabilire quale

caratteristica dovesse venire estratta per identificare il movimento.

1per broncoaspirazione si intende la rimozione meccanica delle secrezioni dall’alberotracheobronchiale per mezzo di una fonte aspirante e di un sondino inserito nelle vie aereetramite una via naturale (Bocca, Naso) o artificiale (Tracheotomia)

Page 43: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

4.1. DESCRIZIONE GENERALE 43

4.1.1 Esperimento 1: traccia del movimento

Senza addentrarci troppo nei particolari 2, possiamo dire che inizialmente

abbiamo cercato di misurare la “lunghezza” del movimento che l’angolo del

labbro copriva nel tempo.

Per fare questo abbiamo applicato un marcatore adesivo di colore verde

acceso sopra il labbro di Steccato, in modo da facilitarne il riconoscimento

da parte del software (si trattava infatti di un colore che non era presente in

altre parti dell’immagine). Dopo aver trovato il pixel che secondo la rappre-

sentazione RGB aveva la componente verde massima, abbiamo fissato una

maschera quadrata centrata in quel punto e all’interno di questa abbiamo

calcolato il baricentro tramite media pesata inserendo nel calcolo solo i punti

che avevano la componente verde superiore ad una soglia prestabilita. Le

coordinate del baricentro sono state memorizzate in una coda, e ogni volta

che veniva inserito un nuovo baricentro (uno per ogni frame delle immagini

provenienti dalla Webcam) si ricavava l’area del piu piccolo rettangolo che

conteneva tutti i baricentri inseriti nella coda.

In questo modo, supponendo di avere un frame rate di 25 frame per

secondo, con una coda di 25 elementi avevamo gli spostamenti del baricen-

tro nell’arco di un secondo. Se l’area del rettangolo era piccola significava

che il labbro era rimasto fermo, mentre invece in caso di forti differenze di

coordinate del baricentro si poteva supporre che il labbro si era inarcato.

Questo approccio era potenzialmente efficace, ma gia dai primi test ne

abbiamo verificato i limiti: a causa del rumore intrinseco dello stream video

la ricerca del baricentro non era mai precisa e anche in caso di un’immagine

statica il baricentro che veniva riconosciuto in un frame non era lo stesso

dell’immagine successiva. Il movimento del labbro causava quindi una varia-

zione dell’area del rettangolo in cui erano contenuti i baricentri molto simile

a quella prodotta dal rumore, per questo motivo i due tipi di movimenti non

erano distinguibili.

2Che verranno trattati in maniera piu completa nella sezione relativa alla segmentazione

Page 44: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

44 CAPITOLO 4. INTERPRETE DI MOVIMENTI RESIDUI

4.1.2 Esperimento 2: conteggio dei pixel tramite

marcatore

Abbiamo quindi deciso di cambiare approccio, contando i pixel dell’immagine

che si trovavano in un appropriato intorno dell baricentro e che avevano un

valore di verde superiore alla soglia introdotta precedentemente.

Sfruttando una limitazione tipica dei sistemi di acquisizione basati su

lenti (la caduta di luce verso i bordi3) abbiamo centrato la fotocamera sul

marcatore verde e osservato le variazioni del numero di pixel “verdi” 4 rico-

nosciuti in ogni frame dal programma. Visto che il movimento del labbro

spostava il baricentro verso una zona piu esterna del fotogramma, si riduce-

vano il numero di pixel verdi riconosciuti, e questo criterio e stato sfruttato

per stabilire una soglia al di sotto della quale si poteva ritenere avvenuto il

movimento.

Questa tecnica si e rivelata sicuramente piu efficace della precedente, ma

e stata comunque accantonata poiche il suo punto di forza (la caduta di

luce) costituiva anche il suo punto debole. Per poter infatti far spostare

il baricentro verso una zona esterna dell’immagine bisognava posizionare la

Webcam molto vicino al volto di Steccato, e questo riduceva notevolmente il

numero di pixel verdi riconosciuti dalla stessa (a causa della distanza minima

di messa a fuoco della Webcam che era superiore a quella necessaria per

sfruttare la caduta di luce ai bordi).

4.1.3 Esperimento 3: conteggio dei pixel significativi

della bocca

Partendo da questo approccio e stato sviluppato il metodo attuale di rico-

noscimento del movimento, che si svincola dalla necessita di applicare un

marcatore per concentrarsi sul conteggio dei pixel neri che compongono nel-

3questo fenomeno implica che la migliore resa dell’obiettivo si ha al centro del foto-gramma, con una perdita di qualita tanto maggiore quanto piu ci si allontana dal centrodell’immagine

4per stabilire se il pixel in questione e verde abbiamo convertito i suoi valori RGBnello spazio HSV e verificato se rispettavano determinate condizioni, come mostrato nellasezione di Segmentazione

Page 45: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

4.1. DESCRIZIONE GENERALE 45

l’immagine l’interno della bocca di Steccato. Si superano cosı i problemi di

posizionamento e di dimensionamento del marcatore, che sicuramente sareb-

bero stati di difficile gestione per un ipotetico utente finale, e il fastidio che

puo comportare una superficie adesiva sul volto dell’utente.

A causa della particolare conformazione della dentatura di Steccato, quan-

do la bocca rimane immobile l’area nera al suo interno e ben visibile, mentre

invece in caso di movimento essa si riduce notevolmente fino a scompari-

re. Invece di cercare il punto piu verde abbiamo cercato il punto piu nero

dell’immagine, costruito su di esso il baricentro e infine contato i pixel signi-

ficativi all’interno della maschera centrata nel baricentro 5, ovvero quelli che

rispondono alle condizioni di colore imposte.

Per ogni frame abbiamo cosı ottenuto il conteggio dei pixel effettivamente

neri, e questo valore viene a questo punto confrontato con quello del frame

precedente. Questo rapporto ci permette di identificare in maniera affidabile

il movimento, in quanto quando il suo valore scende sotto una determina-

ta soglia (fissata a 0.85, valore dimostrato sperimentalmente nel capitolo

Risultati) sappiamo che l’area nera si e ridotta.

Dopo aver verificato la correttezza del nostro approccio tramite un’accu-

rata serie di test, abbiamo integrato questo software con quello che si occupa

della scansione: quest’ultimo consiste in un player di file MP3 che riproduce

in maniera continua la serie di file audio che compongono la struttura di

comunicazione rappresentabile da un albero a due livelli, come mostrato in

Figura 4.1) utilizzata da Steccato.

Quando prototipo di visione riconosce il movimento, provvede a fermare

la scansione sul gruppo o sulla lettera appena pronunciata: nel primo caso il

passo successivo sara quello di “scendere di un livello” ed elencare le lettere

che compongono quel gruppo, mentre nel secondo caso la lettera verra giu-

stapposta alle altre presenti nel box di testo presente nella GUI e la scansione

verra ricominciata partendo dal livello superiore.

5la definizione di “pixel nero” e analoga a quella fatta per i pixel verdi, con la differenzache in questo caso abbiamo effettuato i controlli sui valori relativi allo spazio RGB

Page 46: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

46 CAPITOLO 4. INTERPRETE DI MOVIMENTI RESIDUI

Figura 4.1: Riorganizzazione dell’alfabeto su due livelli per velocizzare lacomposizione

4.1.4 Elaborazione delle immagini in IMR

Il progetto IMR e stato modellizzato basandoci sulla struttura standard dei

progetti di Visione Artificiale presentata nel capitolo precedente. Analizze-

remo ora ognuna delle 5 fasi del modello, illustrando e motivando adeguata-

mente le scelte che abbiamo fatto in ognuna di queste fasi.

Acquisizione dell’immagine

Per l’acquisizione delle immagini ci siamo appoggiati a Video for Windows,

che fin dal rilascio di Windows 95 si e imposto come framework per l’editing di

stream video. Ogni singolo frame proveniente dalla Webcam viene scomposto

in pixel, e le componenti RGB (R = rosso, G = verde, B = blu) dei pixel

vengono inserite in un array monodimensionale di dimensione pari a 38400

(ovvero 240*160). Per ogni pixel oltre alle componenti RGB viene anche

assegnato un byte ‘extra’ che non da alcuna informazione di colore.

... R G B S ...︸︷︷︸n−esimopixel

Page 47: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

4.1. DESCRIZIONE GENERALE 47

Supponendo quindi che il numero naturale i rappresenti la componen-

te R dell’i-esimo pixel, per accedere alle informazioni di colore del pixel

utilizzeremo il seguente frammento di codice:

1 BYTE r = imageData [ i + 0 ] ;

2

3 BYTE g = imageData [ i + 1 ] ;

4

5 BYTE b = imageData [ i + 2 ] ;

In pratica rispetto alla posizione i dell’array, che rappresenta la compo-

nente R, troveremo in posizione i+1 la componente G e a i+2 la componente

B. L’incremento da applicare alla variabile i per ottenere il pixel successivo

sara pari a 4, in quanto composto da 3 posizioni per le informazioni sul colore

e una posizione per il pixel “extra”.

L’utilizzo di Video for Windows permette di sfruttare funzioni particolar-

mente utili all’elaborazione degli stream video, come ad esempio la funzione

capGetVideoFormatSize():

1 DWORD capGetVideoFormatSize ( hwnd ) ;

che come parametro prende hwnd6, ovvero un handler associato alla fine-

stra di cattura delle immagini, e ritorna la dimensione (in byte) del video in

acquisizione; oppure la funzione capCreateCaptureWindow() che viene

utilizzata per creare una finestra di acquisizione video:

1 HWND VFWAPI capCreateCaptureWindow (

2 LPCTSTR lpszWindowName ,

3 DWORD dwStyle ,

4 int x ,

5 int y ,

6 int nWidth ,

7 int nHeight ,

8 HWND hWnd ,

9 int nID

10 ) ;

6hwnd e l’abbreviazione di handleOnWindow

Page 48: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

48 CAPITOLO 4. INTERPRETE DI MOVIMENTI RESIDUI

che prende come parametri:

• lpszWindowName, che contiene il nome della finestra di acquisizione.

• dwStyle, che rappresenta lo stile della finestra.

• x e y, le coordinate dell’angolo superiore sinistro della finestra.

• nWidth e nHeight, le dimensioni della finestra.

• HWnd, l’handler della finestra “padre” di riferimento

• nID, l’identificatore

e restituisce, in caso di successo, un handler alla finestra appena definita.

Pre-elaborazione

Ottenuta una rappresentazione interna all’elaboratore delle immagini in in-

put, di norma e necessario effettuare alcune operazioni fondamentali sui frame

prima di procedere alla fase di estrazione delle caratteristiche.

Bisogna innanzitutto, qualora non lo fosse, portare la dimensione del

frame in ingresso ad una risoluzione nota, per facilitare le operazioni aritme-

tiche effettuate sull’array che rappresenta l’immagine. Se infatti quest’ultima

fosse piu piccola della risoluzione standard di 240*160, durante l’esecuzione

dell’algoritmo di Visione Artificiale andremmo ad indicizzare l’array su valori

non significativi; al contrario, se l’immagine di partenza avesse dimensioni

maggiori di quelle standard il programma andrebbe a considerare solo una

porzione dell’immagine, ovvero quella di 240*160 pixel indicizzata partendo

dal pixel in alto a sinistra.

C’e poi, come anticipato parlando degli aspetti radiometrici della for-

mazione delle immagini, il problema del rumore. Appositi filtri sono sta-

ti studiati per ridurre questo problema e il loro corretto utilizzo permette

di aumentare in maniera sensibile le prestazioni dell’algoritmo di Visione

Artificiale.

Infine si potra provvedere alla ricolorazione dell’immagine per renderla

indipendente dall’illuminazione della scena e per aumentarne il contrasto. In

Page 49: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

4.1. DESCRIZIONE GENERALE 49

(a) Immagine originale (b) Immagine normalizzata

Figura 4.2: Procedimento di normalizzazione

questo modo riusciremo a garantire il funzionamento del software anche in

presenza di fonti di luce artificiale o particolarmente intense (ad esempio la

luce che filtra dalle finestre in pieno giorno).

Questi procedimenti comportano la “normalizzazione” delle immagini in

input, come mostrato in Figura 4.2.

La nostra scelta di non effettuare queste operazioni in fase di pre-elaborazione

e stata dettata dai seguenti motivi:

• Le immagini in input sono gia in formato standard.

• Il rumore e presente, ma la sua riduzione non fornisce un sensibile mi-

glioramento di prestazioni se relazionato all’aumento della complessita

del codice.

• Dopo rilevamenti effettuati durante vari momenti della giornata, ab-

biamo riscontrato che l’illuminazione non influisce in maniera determi-

nante. Questo e dovuto anche al fatto che l’interno della bocca rimane

sempre in ombra, essendo la fonte di luce principale posizionata alle

spalle di Steccato.

Page 50: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

50 CAPITOLO 4. INTERPRETE DI MOVIMENTI RESIDUI

(a) Immagine originale (b) Immagine risultante

Figura 4.3: Procedimento di estrazione dei contorni

Estrazione delle proprieta

Ottenuta un’immagine utile all’elaborazione, provvederemo ora a estrarre le

proprieta necessarie all’algoritmo per riconoscere i movimenti labiali. Gli

approcci possibili in questo ambito sono principalmente due: estrazione dei

contorni ed estrazione della luminanza.

L’estrazione dei contorni e stata descritta ampiamente nel capitolo pre-

cedente, e i risultati di questo metodo sono visibili sulla nostra immagine di

riferimento in Figura 4.3.

Le informazioni ottenute dai bordi dell’immagine possono essere combina-

te con quelle relative alla luminanza (Figura 4.4) per identificare con certezza

la zona della bocca, assicurando una parziale indipendenza dall’illuminazione

e dalla posizione della telecamera.

Una volta identificata all’interno dell’immagine la bocca, dobbiamo sce-

gliere i criteri con cui decidere se un determinato pixel e candidato ad essere

contato come valido dall’algoritmo. Per fare questo, nell’Esperimento 3 si e

sfruttato il sistema standard RGB mentre nell’Esperimento 1 e 2 del progetto

si era preferito usare lo spazio colorimetrico HSV.

Lo spazio colorimetrico RGB si basa sulla sintesi additiva dei tre colori

primari, ovvero rosso, verde e blu. E stato studiato per la prima volta da J.

Guild e W.D. Wright, che facendo sovrapporre le tre sorgenti luminose colo-

Page 51: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

4.1. DESCRIZIONE GENERALE 51

(a) Immagine originale (b) Immagine risultante

Figura 4.4: Procedimento di estrazione della luminanza

rate (con proporzioni 1: 4.6 : 0.006) riuscirono ad ottenere il colore bianco.

Partendo da questa scoperta fecero variare i rapporti fra le tre sorgenti per

ottenere un’equivalenza con i vari colori presi in esame, che di volta in volta

venivano proiettati su una zona adiacente dello schermo.

Preso un ipotetico colore C, questo verra ottenuto miscelando i 3 colori

primari secondo la seguente formula:

C ≡ aR(C)R + aG(C)G+ aB(C)B

dove i simboli adoperati vanno intesi nel senso proprio del contesto in cui ci

stiamo muovendo; per esempio il simbolo ≡ rappresenta l’equivalenza per-

cettiva, come il segno + va inteso nel senso di miscela e non di ordinaria ad-

dizione aritmetica; con i simboli aR(C),aG(C) e aB(C) si intende le frazioni

delle tre componenti da utilizzare per ottenere il colore C.

La proprieta piu importante di questo modello e quella dell’additivita la

quale esprime il concetto che ogni colore puo essere ottenuto sommando le

relative frazioni di ciascun colore primario che servono per ottenerlo. Una

rappresentazione geometrica dei colori nel sistema RGB e visibile in Figura

4.5.

La scelta del sistema RGB e dovuta al fatto che la ricerca del colore nero

e risultata piu semplice da effettuare in questo spazio colorimetrico, mentre

la ricerca del colore verde ha richiesto il passaggio al sistema HSV.

Page 52: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

52 CAPITOLO 4. INTERPRETE DI MOVIMENTI RESIDUI

Figura 4.5: Rappresentazione geometrica dei colori nello spazio RGB

Il sistema HSV si basa invece sulle proprieta dei colori legate alla loro

percezione da parte dell’uomo.

In questo sistema i colori sono tutti contenuti in una piramide (vedere

Figura 4.6) a base esagonale, il cui vertice si trova nell’origine e rappresenta

il nero. Sulla base della piramide troviamo i colori a valore di intensita

massimo (con valore V = 1), disposti secondo il “cerchio di Goethe”. La

saturazione S e la tonalita H sono coordinate polari nei piani ortogonali a V.

I livelli di grigio, che hanno saturazione nulla, sono disposti lungo l’altezza

della piramide, il nero occupa il vertice e il bianco il centro della base. I

colori a saturazione intermedia si troveranno lungo le congiungenti il bianco

con i colori a saturazione massima.

Attraverso le seguenti definizioni:

M = max(R,G,B)

m = min(R,G,B)

rd = (M −R)/(M −m)

gd = (M −G)/(M −m)

bd = (M −B)/(M −m)

si ottiene la trasformazione dallo spazio RGB a quello HSV:

Page 53: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

4.1. DESCRIZIONE GENERALE 53

H = (π/6) ×

bd− gd se M = R

2 + rd− bd se M = G

4 + gd− rd se M = B

V = M

S = (M−m)M

Analizzando queste equazioni, risulta evidente che la saturazione e nulla

quando M = m, il che si verifica quando R = G = B ossia nel caso acromatico.

La scelta del sistema HSV e stata motivata dal fatto che esso rappresenta

i colori in un modo molto simile a quello con cui l’uomo li percepisce. Questo

ci ha permesso di definire con maggiore precisione il concetto di “pixel verde”

su cui andare a discriminare per calcolare il numero di pixel da utilizzare per

rilevare il movimento labiale.

Figura 4.6: Rappresentazione geometrica dei colori nello spazio HSV

Page 54: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

54 CAPITOLO 4. INTERPRETE DI MOVIMENTI RESIDUI

Segmentazione

Fissato lo spazio colorimetrico da utilizzare, sara necessario decidere quale

set di punti di interesse andare ad analizzare tramite il nostro algoritmo di

visione. Tralasciando momentaneamente le differenze di approccio tra l’E-

sperimento 1 e i successivi, possiamo comunque trovare dei punti di contatto

tra i due metodi utilizzati:

• Ricerca del punto di “massimo” del colore da tracciare

• Costruzione del baricentro

La ricerca del punto che risulta piu verde (o in maniera analoga piu nero)

avviene confrontando la componente G del sistema RGB di ogni pixel con

quella del pixel che fino a quel momento ha la componente G massima. 7

Il pixel attuale diventera il nuovo pixel massimo se:

• la componente verde del pixel attuale e maggiore di quella del pixel di

massimo

• le altre due componenti del pixel attuali sono minori delle rispettive

componenti del pixel di massimo.

In tutte le versioni del progetto in questa fase non e stata sfruttata la

conversione da RGB a HSV, in quanto avrebbe implicato un numero molto

maggiore di operazioni da eseguire per ogni frame senza apportare effettivi

vantaggi.

Per la costruzione del baricentro si utilizza il pixel ottenuto nella fase

precedente, e si fissa intorno ad esso una maschera quadrata di lato 40 pixel.

Tutti gli elementi dell’array presenti in questa maschera vengono esaminati

e, se vengono ritenuti significativi (in base alle condizioni imposte sul colore)

vengono utilizzati dalla funzione per il calcolo del baricentro. Quest’ultimo

viene ricavato tramite una media pesata, ovvero una funzione che prima di

sommare tra di loro i valori li moltiplica per il peso a loro assegnato. Il peso

7In maniera analoga, nel caso della ricerca del colore nero per poter dichiarare il pi-xel attuale come pixel massimo si e imposto che le tre componenti R, G e B fosserocontemporeamente minori di quelle del pixel di massimo.

Page 55: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

4.1. DESCRIZIONE GENERALE 55

puo essere inteso come l’importanza (oggettiva o soggettiva) che il singolo

valore riveste nella distribuzione, e nel nostro caso e rappresentato dal valore

della componente G del pixel.

La formula generale che restituisce le coordinate del baricentro nel caso

di una matrice bidimensionale e:

xb =Pi xi · fiPi fi

, yb =Pi yi · fiPi fi

dove il valore di i e preso tra tutti i pixel della maschera che rispettano le

condizioni imposte sul colore.

A questo punto pero possiamo trovare la differenza fondamentale tra il

primo Esperimento e i successivi: nel primo caso i dati del baricentro vengono

memorizzati in una struttura dati per tracciarne il movimento nel tempo,

mentre nelle altre due versioni il baricentro viene sfruttato per andare a

contare i pixel di un determinato colore in una nuova maschera centrata su

di esso.

Tracciamento del movimento

Nell’Esperimento 1 sono state introdotte funzioni specifiche che permettono

di costruire, partendo dall’array fornito da Video for Windows, una matrice

di dimensioni 240*160 pixel che rappresenta geometricamente l’immagine.

In particolare sono state implementate funzioni che, fissata la dimensione

della finestra di acquisizione, ricavano le coordinate matriciali di ogni pixel

partendo dall indice che esso aveva nell’array.

In questo modo, dopo aver memorizzato in una coda 25 valori di bari-

centro (che corrispondono all’incirca a 1 secondo di stream video), abbiamo

confrontato le coordinate di questi 25 punti e abbiamo calcolato la minima

area che li conteneva tutti. Valutando come essa variava nel tempo ab-

biamo cercato di ottenere una stima attendibile del movimento, che veniva

aggiornata ad ogni frame preso in esame.

Conteggio dei pixel

Dato che tracciare il movimento del baricentro non ha dato buoni risultati,

abbiamo pensato di limitarci a sfruttare il baricentro per riapplicare una

Page 56: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

56 CAPITOLO 4. INTERPRETE DI MOVIMENTI RESIDUI

maschera su di esso e contare quali pixel potessero essere definiti “verdi”

(o “neri”) all’interno di essa. Abbiamo ridotto drasticamente il numero di

calcoli necessari per ogni frame da elaborare, utilizzando solo una variabile

contatore da confrontare con un’altra che tiene traccia del contatore del frame

precedente. Qualora questo rapporto scenda sotto la soglia sperimentalmente

determinata, allora potremo dire con buona approssimazione che il labbro si

e mosso.

Elaborazione ad alto livello

Quest’ultima fase e la piu semplice all’interno del progetto, e si occupa di

interagire con la parte di software che scandisce vocalmente le lettere del-

l’alfabeto. Il riconoscimento del movimento effettuato durante la fase di

segmentazione e sostanzialmente un segnale booleano utilizzato nell’elabora-

zione di alto livello per fermare il player sulla lettera o sul gruppo appena

pronunciato. A questo punto, se l’elemento selezionato e una lettera la si

aggiunge alla sequenza di lettere gia composte e si fa ripartire da capo la

scansione, mentre se si tratta di un gruppo si passa a scandire le lettere che

lo compongono.

Page 57: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

4.2. IMPLEMENTAZIONE 57

4.2 Implementazione

Andremo ora ad analizzare la struttura del progetto IMR, esaminando il co-

dice prodotto per realizzare le sue funzioni principali. Il progetto e composto

dai seguenti file sorgenti:

• Main.cpp

• Buffer.cpp

• Avi.cpp

• Player.cpp

• Filter.cpp

In particolare, i file Buffer.cpp, Grabber.cpp e Avi.cpp si occupano della

parte di Visione Artificiale, Filter.cpp realizza l’algoritmo per riconoscere il

movimento mentre Player.cpp si occupa della scansione vocale delle lettere

dell’alfabeto.

4.2.1 Main.cpp

Questo file, come e facile intuire dal nome, e il file principale del progetto, e

si occupa di gestire tutte le funzioni dell’IMR. Prima di commentare le sue

funzioni, vediamo qualche costante particolarmente interessante:

1 #define PREVIEW WIDTH (320)

2 #define PREVIEW HEIGHT (240)

3

4 #define OUTPUT WIDTH (320)

5 #define OUTPUT HEIGHT (240)

Queste costanti definiscono le dimensioni dell’input e dell’output del proget-

to.

Page 58: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

58 CAPITOLO 4. INTERPRETE DI MOVIMENTI RESIDUI

Introduciamo ora le funzioni, a partire da OnInit(HWND hWndDlg):

1 LRESULT OnInit ( HWND hWndDlg ) {2 hWndDialog = hWndDlg ;

3 aviFirstFrameTime = 0 ;

4

5 InitPlayer ( ) ;

6

7 imageWidth = PREVIEW_WIDTH ;

8 imageHeight = PREVIEW_HEIGHT ;

9

10 [ . . . ]

11

12 usingFrameGrabber = FALSE ;

13

14 if ( InitFrameGrabber ( ) ) {15 RECT rect ;

16

17 rect . left = PREVIEW_LEFT ;

18 rect . right = PREVIEW_RIGHT ;

19 rect . top = PREVIEW_TOP ;

20 rect . bottom = PREVIEW_BOTTOM ;

21

22 if ( MapDialogRect ( hWndDlg , &rect ) ) {23 usingFrameGrabber = CreatePreviewWindow ( rect . left , rect . top , rect .

right − rect . left , rect . bottom − rect . top , hWndDlg , IDC_PREVIEW ) ;

24 }25 }26

27 return TRUE ;

28 }

che tramite la funzione InitPlayer() fa partire la scansione vocale, e nel

caso in cui sia collegata la Webcam 8 crea una struttura dati di tipo RECT

delle dimensioni dell’input per poterla utilizzare per il riconoscimento del

movimento.

8il programma per motivi di testing funziona anche senza la Webcam, riproducendo unfile apposito chiamato test.avi

Page 59: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

4.2. IMPLEMENTAZIONE 59

La funzione OnPaint(HWND hWndDlg) invece gestisce le operazioni

grafiche sulla finestra di output:

1 LRESULT OnPaint ( HWND hWndDlg ) {2 PAINTSTRUCT ps ;

3

4 HDC hdc = BeginPaint ( hWndDlg , &ps ) ;

5 HDC hdcBitmap = CreateCompatibleDC ( hdc ) ;

6 [ . . ]

in questo modo viene preparata la finestra di output per essere disegnata e

viene creata una struttura PAINTSTRUCT con le informazioni sul di-

segno. Se la Webcam non e collegata, viene eseguito questo frammento di

codice:

1 if ( ! usingFrameGrabber ) {2 RECT rect ;

3

4 rect . left = PREVIEW_LEFT ;

5 rect . right = PREVIEW_RIGHT ;

6 rect . top = PREVIEW_TOP ;

7 rect . bottom = PREVIEW_BOTTOM ;

8

9 [ . . . ]

10

11 HDC hdcOutputBitmap = CreateCompatibleDC ( hdc ) ;

12

13 HBITMAP hOldOutputBitmap = ( HBITMAP ) SelectObject ( hdcOutputBitmap ,

GetOutputBufferBitmap ( ) ) ;

14

15 rect . left = OUTPUT_LEFT ;

16 rect . right = OUTPUT_RIGHT ;

17 rect . top = OUTPUT_TOP ;

18 rect . bottom = OUTPUT_BOTTOM ;

19

20 [ . . . ]

che copia l’immagine dal RECT di origine al RECT di destinazione, ef-

fettuando eventualmente un ridimensionamento nel caso le dimensioni non

siano le stesse. Dato che non c’e nessuna sorgente di input, il programma si

occupera di creare tutte e due le immagini su cui lavorare (sia quella originale

che quella filtrata).

Page 60: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

60 CAPITOLO 4. INTERPRETE DI MOVIMENTI RESIDUI

Nel caso in cui invece la Webcam sia collegata, verra eseguito questo

frammento di codice:

1 else {2 RECT rect ;

3

4 [ . . . ]

5 StretchDIBits ( hdcBitmap , 0 , 0 , OUTPUT_WIDTH , OUTPUT_HEIGHT , 0 , 0 ,

OUTPUT_WIDTH , OUTPUT_HEIGHT , lpData , lpbi , DIB_RGB_COLORS , SRCCOPY ) ;

6 FilterImage ( ) ;

7

8 rect . left = OUTPUT_LEFT ;

9 rect . right = OUTPUT_RIGHT ;

10 rect . top = OUTPUT_TOP ;

11 rect . bottom = OUTPUT_BOTTOM ;

12

13 [ . . . ]

14 }

in cui l’immagine originale da elaborare viene fornita dalla Webcam e il

programma creera soltanto l’immagine filtrata.

La funzione StretchDIBits(...) copiera le informazioni sul colore di un

rettangolo dell’immagine (in caso sia stato scelto di considerare solo parte

dell’immagine) in un altro rettangolo, mentre la funzione FilterImage()

eseguira sull’input l’algoritmo di Visione Artificiale.

La funzione OnFrameAvaiable() permette invece di effettuare dei

refresh parziali dell’immagine, specificando la parte dell’immagine di cui fare

l’update:

1 void OnFrameAvailable ( ) {2 InvalidateRect ( GetPreviewWindow ( ) , NULL , FALSE ) ;

3

4 RECT rect ;

5

6 rect . left = OUTPUT_LEFT ;

7 rect . right = OUTPUT_RIGHT ;

8 rect . top = OUTPUT_TOP ;

9 rect . bottom = OUTPUT_BOTTOM ;

10

11 if ( MapDialogRect ( hWndDialog , &rect ) ) InvalidateRect ( hWndDialog , &rect ,

FALSE ) ;

12 }

Page 61: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

4.2. IMPLEMENTAZIONE 61

in questo caso, passando a InvalidateRect(...) il parametro NULL si spe-

cifica che l’update deve essere fatto sull’intera immagine, mentre con FALSE

indichiamo che il background dell’immagine rimane invariato.

4.2.2 Buffer.cpp

Questo file viene utilizzato per gestire l’input e trasformarlo in un forma-

to standard per essere elaborato dall’algoritmo. In particolare la funzione

CreateImageBuffer(...) crea una bitmap dalla fonte di input e la salva nel

puntatore imageBufferData:

1 BOOL CreateImageBuffer ( HWND hWnd , int imageWidth , int imageHeight ) {2 HDC hdc = GetDC ( hWnd ) ;

3

4 imageBufferData = ( BYTE ∗) malloc (4 ∗ imageWidth ∗ imageHeight ) ;

5

6 memset ( imageBufferData , imageWidth ∗ imageHeight ∗ 4 , 255) ;

7

8 int size = sizeof ( BITMAPINFO ) + 2 ∗ sizeof ( RGBQUAD ) ;

9

10 BITMAPINFO∗ pBMI = ( BITMAPINFO ∗) malloc ( size ) ;

11

12 memset ( pBMI , 0 , size ) ;

13

14 pBMI−>bmiHeader . biSize = sizeof ( BITMAPINFOHEADER ) ;

15 pBMI−>bmiHeader . biWidth = imageWidth ;

16 pBMI−>bmiHeader . biHeight = imageHeight ;

17 pBMI−>bmiHeader . biPlanes = 1 ;

18 pBMI−>bmiHeader . biBitCount = 32 ;

19 pBMI−>bmiHeader . biCompression = BI_BITFIELDS ;

20

21 pBMI−>bmiColors [ 0 ] . rgbBlue = 0xff ;

22 pBMI−>bmiColors [ 1 ] . rgbGreen = 0xff ;

23 pBMI−>bmiColors [ 2 ] . rgbRed = 0xff ;

24

25 imageBufferBitmap = CreateDIBSection ( hdc , ( BITMAPINFO ∗) pBMI ,

DIB_RGB_COLORS , ( LPVOID ∗)&imageBufferData , NULL , 0) ;

26

27 [ . . . ]

28 }

Per poter utilizzare questa bitmap e stata utilizzata la funzione

GetOutputBufferData(), che ha come valore di ritorno il puntatore di

tipo BYTE* all’immagine ottenuta tramite CreateOutputBuffer(...):

Page 62: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

62 CAPITOLO 4. INTERPRETE DI MOVIMENTI RESIDUI

1 BOOL CreateOutputBuffer ( HWND hWnd , int imageWidth , int imageHeight ) {2 outputBufferWidth = imageWidth ;

3

4 outputBufferHeight = imageHeight ;

5

6 HDC hdc = GetDC ( hWnd ) ;

7

8 outputBufferData = ( BYTE ∗) malloc (4 ∗ imageWidth ∗ imageHeight ) ;

9

10 memset ( outputBufferData , imageWidth ∗ imageHeight ∗ 4 , 255) ;

11

12 int size = sizeof ( BITMAPINFO ) + 2 ∗ sizeof ( RGBQUAD ) ;

13

14 BITMAPINFO∗ pBMI = ( BITMAPINFO ∗) malloc ( size ) ;

15

16 pBMI−>bmiHeader . biSize = sizeof ( BITMAPINFOHEADER ) ;

17 pBMI−>bmiHeader . biWidth = imageWidth ;

18 pBMI−>bmiHeader . biHeight = imageHeight ;

19 pBMI−>bmiColors [ 0 ] . rgbBlue = 0xff ;

20 pBMI−>bmiColors [ 1 ] . rgbGreen = 0xff ;

21 pBMI−>bmiColors [ 2 ] . rgbRed = 0xff ;

22

23 outputBufferBitmap = CreateDIBSection ( hdc , ( BITMAPINFO ∗) pBMI ,

DIB_RGB_COLORS , ( LPVOID ∗)&outputBufferData , NULL , 0) ;

24

25 ReleaseDC ( hWnd , hdc ) ;

26

27 return TRUE ;

28 }

4.2.3 Avi.cpp

Questo file sorgente serve a gestire lo stream video da file, ed e stato svi-

luppato principalmente per effettuare test a posteriori su filmati AVI. Le

operazioni possibili sul file sono definite tramite le seguenti costanti:

1 #define CROP X (10)

2 #define CROP Y (20)

3

4 #define CROP WIDTH (240)

5 #define CROP HEIGHT (192)

6

7 #define INITIAL DELAY (2750)

Page 63: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

4.2. IMPLEMENTAZIONE 63

In particolare le parti relative a CROP X, CROP Y, CROP WIDTH

e CROP HEIGHT, definiscono l’inizio delle coordinate dell’immagine da

catturare e l’eventuale ridimensionamento del filmato, mentre la costante

INITIAL DELAY definisce il ritardo nella riproduzione del video (per

poter sincronizzare il filmato alla scansione vocale in fase di test).

Questo ritardo iniziale influisce nella funzione GetFrameAtMillis(...),

che si occupa di estrarre, fornita la posizione temporale in millisecondi, il

frame interessato:

1 BOOL GetFrameAtMillis ( int millis , HDC hdc , int width , int height ) {2 long frame = AVIStreamTimeToSample ( aviStream , millis + INITIAL_DELAY ) ;

3 if ( frame < aviFirstFrame | | frame > aviLastFrame )

4 return FALSE ;

5 [ . . . ]

assicurandosi che il frame da cercare sia all’interno dei frame di input.

4.2.4 Player.cpp

Il file Player.cpp controlla tutti i parametri della scansione vocale, dalla strut-

tura dell’alfabeto alla durata delle pause tra una lettere e l’altra e tra un grup-

po e l’altro. La temporizzazione dell’alfabeto e definita tramite le seguenti

costanti:

1 #define TIMEOUT MENU 1600

2 #define TIMEOUT GROUP 1000

3

4 #define TIMEOUT DELAY 100

5 #define DELAY COUNTER 12

le prime due costanti stabiliscono il tempo espresso in millisecondi che passa

rispettivamente tra due lettere di uno stesso gruppo e la successiva e tra due

gruppi; TIME DELAY e DELAY COUNTER invece determinano la

pausa che intercorre tra la scelta di un gruppo e la pronuncia della prima

lettera dello stesso o tra la selezione di una lettera e la pronuncia del primo

gruppo.

Page 64: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

64 CAPITOLO 4. INTERPRETE DI MOVIMENTI RESIDUI

La struttura dell’alfabeto utilizzato da Steccato e ricostruita utilizzan-

do un array monodimensionale per rappresentare i gruppi e un altro array

bidimensionale per le lettere che li compongono:

1 char∗ menu [ MENU_COUNTER ] = { ” v o c a l i ” , ”pr imo” , ” secondo ” , ” t e r z o ” } ;2

3 char∗ group [ ] [ GROUP_COUNTER ] = {4 { ”a” , ”e” , ” i ” , ”o” , ”u” , ”” } ,

5 { ”b” , ”c” , ”d” , ” f ” , ”g” , ”” } ,

6 { ”h” , ” l ” , ”m” , ”n” , ”p” , ”” } ,

7 { ”q” , ” r ” , ” s ” , ” t ” , ”v” , ”z” }8 } ;

Infine la funzione piu interessante e sicuramente OnPlayerStop(), che an-

dremo ad utilizzare per bloccare la scansione una volta che il movimen-

to e stato riconosciuto. Nel corpo della funzione sono specificati due casi

fondamentali in base al livello in cui ci si trova:

1 INT OnPlayerStop ( ) {2 switch ( level ) {3 case 1 :

4 delay = DELAY_COUNTER ;

5

6 SetDlgItemText ( hWndDialog , IDC_SYMBOL , ”∗” ) ;

7

8 if ( groupCounter >= 0) {9 if ( strlen ( string ) < STRING_LENGTH − 1)

10 sprintf ( string , ”%s%s ” , string , group [ menuCounter ] [ groupCounter ] ) ;

11 else

12 sprintf ( string , ”%s%s ” , &(string [ 1 ] ) , group [ menuCounter ] [

groupCounter ] ) ;

13

14 SetDlgItemText ( hWndDialog , IDC_STRING , string ) ;

15

16 groupCounter = −1;

17 }18

19 SetTimer ( hWndDialog , IDT_PLAYER_TIMER , TIMEOUT_DELAY , ( TIMERPROC ) 0) ;

20

21 menuCounter = 0 ;

22 level = 0 ;

23 groupCounter = −1;

24

25 break ;

Page 65: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

4.2. IMPLEMENTAZIONE 65

in questo caso la selezione e avvenuta su un elemento di livello 1 (ovvero una

lettera di un gruppo), quindi il programma aggiunge la lettera nel box di

testo presente nella GUI e riprende a scandire il livello 0.

1 case 0 :

2 level = 1 ;

3 groupCounter = 0 ;

4 delay = DELAY_COUNTER ;

5

6 SetDlgItemText ( hWndDialog , IDC_SYMBOL , ”∗” ) ;

7

8 SetTimer ( hWndDialog , IDT_PLAYER_TIMER , TIMEOUT_DELAY , ( TIMERPROC ) 0) ;

9

10 break ;

11 }12

13 return TRUE ;

14 }

in questo caso invece la selezione e avvenuta su un elemento di livello 0

(ovvero un gruppo), quindi il programma passera al livello 1 e iniziera a

scandire le lettere che compongono il gruppo precedentemente selezionato.

4.2.5 Filter.cpp

Per ultimo andiamo ad esaminare il file sorgente Filter.cpp, che implementa

l’algoritmo di visione sviluppato per il progetto IMR. Per quanto riguarda le

costanti e le variabili introdotte, possiamo trovare:

1 #define MAX ALTEZZA 160

2 #define MAX LARGHEZZA 240

3

4 int posnero = 1 ;

5 int vecchiocontatore = 0 ;

Le prime due costanti determinano la dimensione della finestra di input; la

variabile posnero dichiarata pari a 1 specifica che inizialmente il pixel piu

nero e il primo elemento dell’array, mentre la variabile vecchiocontatore

inizializza la coda da utilizzare per ottenere il rapporto tra il numero di pixel

presente in un frame e quello dei pixel del frame precedente.

Page 66: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

66 CAPITOLO 4. INTERPRETE DI MOVIMENTI RESIDUI

La funzione principale di questo sorgente e FilterImage(), che viene lan-

ciata per ogni frame dello stream video. Nella prima parte, FilterImage()

effettua una ricerca del pixel piu nero all’interno dell’immagine:

1 void FilterImage ( ) {2 [ . . . ]

3

4 for ( int i = 0 ; i < 4∗ imageWidth∗imageHeight −4; i += 4) {5 BYTE r = imageData [ i + 0 ] ;

6

7 BYTE g = imageData [ i + 1 ] ;

8

9 BYTE b = imageData [ i + 2 ] ;

10

11 int pixel = ( int ) ( i /4) ;

12

13 if ( e_nero ( pixel ) && r <= valrosso && g <= valverde && b <= valblu )

{14 posnero = i + 1 ;

15 valrosso = r ;

16 valverde = g ;

17 valblu = b ;

18 }19 }20 [ . . . ]

Per decidere se un pixel e significativo, abbiamo utilizzato la funzione

booleana e nero(int pixel):

1 inline bool e_nero ( int pixel ) {2 BYTE∗ imageData = GetOutputBufferData ( ) ;

3 float r = ( float ) imageData [ ( pixel ∗4) ] ;

4 float g = ( float ) imageData [ ( pixel ∗4) +1] ;

5 float b = ( float ) imageData [ ( pixel ∗4) +2] ;

6

7 if ( r < 25 && g < 25 && b < 25) return true ;

8 else return false ;

9

10 }

che considera come significativo ogni colore che ha tutte e tre le componenti

R,G e B in valore numerico inferiori a 23.

Una volta ottenuto il pixel piu nero, su di esso viene centrata una ma-

schera quadrata di lato 40 pixel per costruire il baricentro:

Page 67: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

4.2. IMPLEMENTAZIONE 67

1 int calcola_baricentro ( int coor_x , int coor_y ) {2 [ . . . ]

3 for ( int j = coor_y − 20 ; j < coor_y + 20 ; j++) {4 for ( int i = coor_x − 20 ; i < coor_x + 20 ; i++) {5 [ . . . ]

6 if ( e_nero ( pixel ) ) {7 sum_xb = sum_xb + i ∗( int ) ( imageData [ ( pixel ∗4) +1]) ;

8 sum_yb = sum_yb + j ∗( int ) ( imageData [ ( pixel ∗4) +1]) ;

9 sum_val_verde = sum_val_verde + ( int ) ( imageData [ ( pixel ∗4) +1]) ;

10 }11 }12 }13 }14 if ( sum_val_verde != 1) {15 xb = ( int ) ( sum_xb / sum_val_nero ) ;

16 yb = ( int ) ( sum_yb / sum_val_nero ) ;

17 pixattuale = yb ∗ MAX_LARGHEZZA + xb ;

18 return pixattuale ;

19 }20 }21 else return 0 ;

22 }

tramite la funzione di media pesata descritta precedentemente.

Le coordinate di questo baricentro saranno poi sfruttate dalla funzione

colora area(...), che riapplichera al baricentro una maschera quadrata di

lato 60 pixel per andare a contare all’interno di essa tutti i pixel che rispettano

i criteri fissati nella funzione e nero():

1 int colora_area ( int coor_x , int coor_y ) {2 BYTE∗ imageData = GetOutputBufferData ( ) ;

3 for ( int j = coor_y − 30 ; j < coor_y + 30 ; j++) {4 for ( int i = coor_x − 30 ; i < coor_x + 30 ; i++) {5 [ . . . ]

6 if ( pixel > ( MAX_LARGHEZZA−1)∗( MAX_ALTEZZA−1) | | coor_x >

MAX_LARGHEZZA | | coor_y > MAX_ALTEZZA ) break ;

7 else {8 if ( e_nero ( pixel ) ) {9 imageData [ ( pixel ∗4)+1] = 255 ;

10 imageData [ ( pixel ∗4) ] = 0 ;

11 imageData [ ( pixel ∗4)+2] = 0 ;

12 contatore++;

13 }14 [ . . . ]

15 return contatore ;

16 }

Page 68: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

68 CAPITOLO 4. INTERPRETE DI MOVIMENTI RESIDUI

Il valore di ritorno di questa funzione e il numero di pixel che sono da

considerarsi effettivamente neri. Per ogni nuovo valore della variabile con-

tatore si procede ad effettuare il rapporto tra quest’ultimo e il valore del

contatore del frame precedente (salvato in vecchiocontatore), per otte-

nere un valore su cui discriminare i movimenti labiali (tramite la variabile

rapporto contatore).

Se il rapporto scende sotto il valore 0.85 (memorizzato nella variabile

val soglia), vuol dire che tra il frame precedente e quello attuale c’e stato

un calo sensibile di pixel neri, e quindi un conseguente movimento della bocca.

1 double rapporto_contatore = double ( contatore ) /double ( vecchiocontatore ) ;

2

3 if ( rapporto_contatore < val_soglia && appena_detto == 0) {4 OnPlayerStop ( ) ;

5 cout << rapporto_contatore << endl ;

6 appena_detto = 15 ;

7 }8 else if ( rapporto_contatore < val_soglia && appena_detto > 0) {9 cout << ” Sca r to movimento” << endl ;

10 appena_detto−−;

11 }12 else if ( rapporto_contatore > val_soglia && appena_detto > 0)

13 appena_detto−−;

Allo scopo di impedire che un movimento venisse letto piu volte dal pro-

gramma, che in questo caso oltre a selezionare un gruppo selezionerebbe

automaticamente anche la sua prima lettera, abbiamo introdotto la variabile

appena detto, settata a 15 appena dopo ogni movimento rilevato. Come si

vede dagli ultimi due else if, per i 15 movimenti frame il programma non fer-

mera il player in caso di movimento, limitandosi a decrementare la variabile

appena detto.

Questa scelta e motivata dal fatto che normalmente i movimenti labiali di

Steccato sono separati tra di loro da qualche secondo, tempo sufficiente per

permettere al programma di azzerare la variabile appena detto e assorbire

tutte le fluttazioni del valore di rapporto contatore.

Nel caso in cui il movimento sia stato rilevato e la variabile appena detto

sia pari a 0, il programma potra lanciare la funzione OnPlayerStop() per

fermare la scansione vocale.

Page 69: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

Capitolo 5

Risultati

In questo breve capitolo verranno illustrati i risultati sperimentali dei test

effettuati durante la tesi di laurea, e verranno motivate adeguatamente le

scelte fatte circa il valore delle soglie fissate per rilevare i movimenti.

5.1 Criteri di decisione delle soglie

Come gia ampiamente descritto nei capitoli precedenti, per poter determinare

se il labbro di Gianpiero si e mosso sono state introdotte principalmente due

valori di soglia:

• una e stata fissata sulle componenti RGB utilizzate nella funzione

e nero(), per determinare se i singoli pixel devono essere inclusi nel

calcolo del baricentro.

• l’altra soglia sulla variabile rapporto contatore, al di sotto della

quale possiamo essere abbastanza sicuri che il labbro si e mosso.

I valori che abbiamo scelto sono: RGB(25,25,25) per la prima e 0.85 per

la seconda. Questi valori sono frutto di accurate ricerche volte a ottimizzare

il piu possibile il riconoscimento dell’area nera della bocca e il suo relativo

movimento.

69

Page 70: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

70 CAPITOLO 5. RISULTATI

5.1.1 Soglia del valore di “nero”

Per poter discriminare tra pixel “neri” e pixel “non neri”, siamo stati obbli-

gati a fissare una soglia nell’ambito della colorazione RGB. Il primo valore

RGB(20,20,20) e stato fissato osservando in maniera macroscopica a video

il colore dell’interno della bocca, ed e stato utilizzato per comodita nelle fasi

preliminari del progetto.

Una volta ottenuti buoni risultati nei test effettuati, ci si e posta la que-

stione di come massimizzare il rendimento di questa variabile al fine di rile-

vare il numero maggiore di pixel dell’interno della bocca senza produrre falsi

positivi.

A questo scopo abbiamo fatto variare le componenti tra RGB(10,10,10)

e RGB(30,30,30) e abbiamo verificato che nel primo caso i pixel rilevati

erano in numero troppo ridotto per essere utilizzate dall’algoritmo, mentre

invece nel secondo caso lo spettro di tonalita di nero era troppo ampio e

rischiava di considerare neri anche pixel che non facevano parte dell’interno

della bocca.

Per questo motivo abbiamo provato a fissare un valore intermedio tra

RGB(30,30,30) e RGB(20,20,20), e dopo qualche ora di test abbiamo

notato che scegliere come soglia di colore RGB(25,25,25) ci dava il numero

massimo di pixel riconosciuti minimizzando il numero di falsi positivi.

I risultati del rilevamento dei pixel della bocca in base alla scelta della

soglia sulle 3 componenti RGB esaminate sono visibili in Figura 5.1.

5.1.2 Soglia sulla variabile rapporto contatore

Una volta che il programma ottiene il rapporto tra il numero di pixel neri

del frame precedente e quello del frame successivo, viene spontaneo chiedersi

con che criterio andare a fissare una soglia su questo rapporto.

Inizialmente per scegliere la soglia e stata realizzata una versione partico-

lare del software che stampava in un’apposita finestra del terminale i valori di

rapporto contatore, e in questo modo abbiamo potuto fissare una prima

soglia pari a 0.75.

Page 71: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

5.1. CRITERI DI DECISIONE DELLE SOGLIE 71

(a) Pixel neri con R < 20, G < 20, B < 20

(b) Pixel neri con R < 10, G < 10, B < 10

(c) Pixel neri con R < 25, G < 25, B < 25

Figura 5.1: Variazione dei pixel neri riconosciuti in base al cambiamento deiparametri RGB

Page 72: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

72 CAPITOLO 5. RISULTATI

Come nel caso della soglia sulle componenti RGB, una volta ottenuti

risultati soddisfacenti durante il test dell’algoritmo abbiamo proceduto ad

ottimizzare anche questa soglia, apportando un’ulteriore modifica al software.

Invece che stampare i valori di rapporto contatore a video, li abbia-

mo salvati in un file di testo opportunamente formattato, per andarli poi a

graficare con un normale foglio di calcolo. Questi i risultati grafici di una

porzione di 500 valori:

Figura 5.2: Grafico temporale della variabile rapporto contatore

Abbiamo quindi suddiviso i circa 65000 valori contenuti nel file in gruppi

di 1000 elementi, per andare a calcolare in ognuno di essi la media e il minimo.

La media si e attestata intorno al valore 1, ed e quello che ci aspettavamo

visto che il labbro rimane fermo per la maggior parte del tempo. Per quanto

riguarda invece il minimo valore di rapporto contatore, quest’ultimo si

aggirava intorno a 0.70. Dato che fissare la soglia a 0.70 sarebbe stato

sconsigliabile, visto che si rischiava di perdere tutti i movimenti che avevano

un valore leggermente superiore alla soglia, abbiamo deciso di utilizzare come

soglia 0.85, ottenuta tramite:

valore medio + valore minimo2

Page 73: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

5.2. STIMA DELLE PRESTAZIONI 73

5.2 Stima delle prestazioni

Andremo ora ad analizzare i risultati ottenuti con il progetto IMR, non limi-

tandoci a valutare solo l’ultimo Esperimento ma comparandola anche con le

due precedenti, giustificando cosı la scelta dell’algoritmo di Visione Artificiale

introdotto con l’Esperimento 3.

Come metodo di valutazione abbiamo sfruttato la possibilita del software

di eseguire l’algoritmo su un file AVI di test: dopo aver registrato una serie di

filmati in cui Steccato scandiva alcune parole di media lunghezza, abbiamo

sottoposto questi filmati alle tre versioni di IMR, contando il numero di

rilevamenti corretti di ognuna delle versioni.

Figura 5.3: Risultati percentuali delle tre versioni di IMR

Il risultato finale, visibile in Figura 5.3, e stato che sebbene i primi due

algoritmi hanno ottenuto un numero di successi inferiori al 20%, l’Esperi-

mento 3 e riuscito a identificare il 90% (con picchi del 95%) dei movimenti

labiali, raggiungendo quindi un livello di funzionalita superiore alle nostre

aspettative. Questo risultato ha confermato ulteriormente le potenzialita del

nostro algoritmo, che con ulteriori modifiche potrebbe diventare a tutti gli

effetti un vero interprete esperto per questa patologia.

Page 74: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

74 CAPITOLO 5. RISULTATI

Page 75: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

Conclusioni

In questo lavoro di tesi abbiamo presentato il progetto IMR, un interprete

di movimenti residui specifico per Gianpiero Steccato, affetto da 9 anni dalla

sindrome Locked-In.

Abbiamo mostrato le soluzioni implementate per automatizzare il rico-

noscimento del movimento e la scansione delle lettere, le basi teoriche che

ci hanno permesso di realizzare il sistema di Visione Artificiale e i risultati

empirici del software in base al numero di movimenti riconosciuti.

In una prima fase del lavoro ci siamo dedicati all’osservazione del proto-

collo di comunicazione di Steccato, identificando cosı nel movimento labiale il

target del nostro progetto di Visione Artificiale; successivamente tramite tre

esperimenti abbiamo provveduto a sviluppare differenti approcci per identi-

ficare il movimento, come la misurazione della lunghezza dello spostamento

di un marcatore applicato al labbro e il conteggio dei pixel significativi della

bocca.

Dopo varie fasi di test abbiamo scelto come approccio definitivo que-

st’ultimo, in quanto garantiva il corretto riconoscimento di piu del 90% dei

movimenti del labbro. Questo risultato, di molto superiore alle previsioni

iniziali, ci ha assicurato che la tecnica utilizzata e al momento la migliore

soluzione per questo progetto di Visione Artificiale.

Questo prototipo e ovviamente solo un punto di partenza, ma sebbene

non possa ancora essere fruibile da un utente finale sara messo a disposi-

zione tramite licenza open source a tutti quelli che volessero ulteriormente

ampliarlo, ad esempio tramite una tesi di laurea in Intelligenza Artificiale, o

integrarlo in un sistema gia esistente che si occupa di far comunicare persone

affette da patologie simili alla sindrome Locked-In.

75

Page 76: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare
Page 77: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

Bibliografia

[1] Nilsson, Nils J. (2002). Intelligenza artificiale.

[2] Fink, Donald. Mente umana e cervelli elettronici: introduzione

all’intelligenza artificiale.

[3] Ballard, Dana H. - Brown, Christopher M. (1982). Computer Vision.

http://homepages.inf.ed.ac.uk/rbf/BOOKS/BANDB/bandb.htm

[4] Melli, Pietro (1990). L’elaborazione digitale delle immagini.

[5] Simons, G.L. (1985). Intelligenza artificiale: la nuova frontiera

dell’informatica.

[6] Manuel Longo. Blog personale.

http://www.mlongo.net/

[7] Severino Mingroni. Blog personale.

http://xoomer.virgilio.it/severinomingroni/

[8] Amici di Daniela ONLUS.

http://www.amicididaniela.it/

[9] Free Homepage for locked-in patients.

http://www.lockedin.eu/

[10] Wikipedia (2009b). Wikipedia. The free enciclopedia.

http://en.wikipedia.org/wiki/Computer vision

[11] Wikipedia (2009b). Wikipedia. The free enciclopedia.

http://en.wikipedia.org/wiki/Segmentation (image processing)

77

Page 78: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

78 BIBLIOGRAFIA

Page 79: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

Ringraziamenti

Innanzitutto e obbligatorio un grandissimo GRAZIE al mio “secondo pilota”

Gianpiero: ogni singolo risultato ottenuto in questa tesi e stato raggiunto

anche grazie a lui, alla sua pazienza nel prestarsi ai miei esperimenti e ai suoi

preziosi consigli. Penso che poche persone avrebbero potuto garantirmi la

completa disponibilita che Gianpiero mi ha concesso, e questo mi ha permesso

di far convivere questa esperienza con gli altri mille impegni che affollano le

mie giornate.

Spero di riuscire a portare avanti questo progetto per garantire a Gianpie-

ro tutti i diritti che una persona meravigliosa come lui si merita, anche come

ringraziamento per l’affetto che mi ha dimostrato fidandosi di uno studente

un po folle che sembrava voler combattere contro i mulini a vento.

E ora bisogna ringraziare “l’uomo dietro le quinte”, colui che ha avuto

l’idea da cui e partito il progetto: Fabrizio (e sua mamma). Senza di lui

probabilmente avrei scritto tutta un’altra tesi, e mi sarei perso una delle

esperienze piu belle della mia vita. Non riusciro mai a ringraziarlo abbastanza

per avermi dato questa “spinta” che mi ha aperto gli occhi su tante cose.

Se poi questa tesi ha avuto successo anche dal punto di vista dei risultati,

questo lo devo al Professor Bergenti che mi ha seguito nel mio lavoro sapendo

sempre consigliarmi la strada migliore da percorrere. Lo devo ringraziare

soprattutto per il grande lavoro che ha fatto per “mettere insieme” tutto il

codice prodotto, cosa che forse era al di sopra delle mie possibilita, e per

avermi in parte “rinconciliato” con la programmazione in C++.

Un ringraziamento speciale va anche ai miei genitori, che oltre ad aver

“sopportato” un iter universitario leggermente piu lungo del previsto stanno

riuscendo nell’immane compito di rendermi un uomo. Grazie, se sono quello

che sono lo devo anche al vostro aiuto.

79

Page 80: Progettazione e realizzazione di un sistema di …2009/04/22  · esperienza in questo settore mi portasse a proporre la realizzazione di un ausilio che si sarebbe potuto rivelare

80 BIBLIOGRAFIA

Grazie alla “nonna Gianna”, che e stata e sara sempre per me una “se-

conda mamma” (anche se part-time), e alla zia “Tatia”, che mi ha regalato

una grossa fetta della fantasia di cui oggi vado cosı fiero.

Un grazie che viene dal profondo del cuore anche a Sara, che mi e stata

vicino in questa strana avventura e spero che mi rimarra accanto per il resto

della mia vita. A lei devo davvero tanto, e spero di poterle restituire tutto

l’amore che mi sta dando.

Passando alla parte meno seria, voglio dedicare un “Sara pur bella l’In-

formatica, ma anche...” a Ciclo, Tino, Kusu e Ale: grazie a voi ho affrontato

imprese da gigante (come resistere al sonno in tarda primavera durante le ore

di Biologia) sempre col sorriso sulla faccia. In questi anni (non dico quanti,

per non sentirmi in colpa) ci siamo divertiti, e mi dispiace separarmi da voi...

Infine l’ultimo ringraziamento va ad Ale, Luciana e Simonetta (i magici

componenti della Casa Famiglia AS.SO.FA di Verano), che tra alti e bassi

hanno animato e spero che animeranno ancora per tanto tempo le cene di

questi miei tre anni di volontariato.