Capitolo 1
Introduzione
La tesi in oggetto ha lo scopo di documentare il risultato della mia attivita`
di stage presso l’azienda Zucchetti S.p.A., una software-house la cui sede di
Padova si occupa prevalentamente dello sviluppo di gestionali e applicativi
web. La richiesta del committente ha riguardato un campo di ricerca a cui
l’azienda vorrebbe dedicare piu` spazio, ovvero la Computer Vision: e` una
branca dell’informatica che sta acquisendo sempre piu` importanza e i cui
possibili sviluppi sono molteplici.
Lo scopo del progetto e` stato quello di sviluppare un’applicazione dimostra-
tiva circa le potenzialita` della piu` importante libreria in circolazione intera-
mente dedicata alla Computer Vision, ovvero OpenCV, con l’ausilio di una
webcam: in particolare, la richiesta del committente e` stata quella di fornire
l’applicazione con integrato un sistema in grado di eseguire l’head detection
e l’hand detection (ovvero il riconoscimento di un viso e di una mano, ri-
spettivamente). Inoltre, ulteriore richiesta e` stata quella di poter realizzare
l’hand tracking, ovvero la capacita` di “seguire” il movimento della mano, e
ad essa associare il movimento del cursore del mouse. Come requisito facol-
tativo, e` stato richiesto di poter associare a degli specifici gesti della mano
un determinato evento del mouse.
1.1 Zucchetti S.p.A.
L’azienda presso la quale ho svolto la mia attivita` di stage e` la Zucchetti,
presso la sede di Padova. Essa fa parte di un gruppo che e` uno dei piu`
importanti protagonisti italiani del settore dell’IT (Information Technology)
affermatosi anche nel 2008 come leader in Italia e in Europa non solo per
fatturato e numero di clienti, ma anche secondo parametri quali propensione
alla crescita e ricerca dell’innovazione.
7
1.2. COMPUTER VISION
Zucchetti sviluppa soluzioni software, hardware e servizi innovativi realizzati
e studiati per soddisfare le specifiche esigenze di aziende di qualsiasi settore
e dimensione, di professionisti, di associazioni di categoria e CAF, di pubbli-
ca amministrazione locale e centrale; tutti questi servizi vengono sviluppati
rispettando elevati standard di sicurezza informatica, logica, applicativa e
fisica, attraverso un Server Farm di proprieta`.
1.2 Computer Vision
Prima di andare ad analizzare quali sono gli obiettivi dello stage e della si-
tuazione iniziale, mi sembra necessario introdurre il concetto di Computer
Vision, ovvero il tema principale trattato durante l’attivita` di stage.
Per Computer Vision (in italiano,visione artificiale) si intende quell’insie-
me di processi che mirano a creare un modello approssimato del mondo reale
(3D) partendo da immagini bidimensionali (2D). Lo scopo principale della
computer vision e` quello di riprodurre la vista umana. Il“vedere” e` inteso non
solo come l’acquisizione di una fotografia bidimensionale di un’area, ma so-
prattutto come l’interpretazione del contenuto di quell’area. L’informazione
e` intesa, in questo caso, come qualcosa che implica una decisione automatica.
Un generico sistema di computer vision e` costituito dall’integrazione di com-
ponenti ottiche, elettroniche e meccaniche che permettono di acquisire, re-
gistrare ed elaborare immagini sia nello spettro della luce visibile che al di
fuori di essa (infrarosso, ultravioletto, raggi X, ecc.). Il risultato dell’elabo-
razione e` il riconoscimento di determinate caratteristiche dell’immagine per
varie finalita` di controllo, classificazione, selezione, ecc.
Un Sistema di Visione e` costituito da diverse componenti:
- telecamere e ottiche;
- sistema di illuminazione;
- l’oggetto da esaminare;
- il sistema di acquisizione e di elaborazione dell’immagine;
- le interfacce uomo macchina;
- le interfacce con l’ambiente esterno.
Nel mio caso ho fatto uso di una singola webcam VGA senza particolari si-
stemi di illuminazione, adottando le funzionalita` della libreria OpenCV come
strumento di elaborazione delle immagini per il riconoscimento del viso e del-
la forma di una mano.
8
CAPITOLO 1.
In generale pero`, le parti da ispezionare vengono posizionate -spesso attraver-
so sistemi di movimentazione automatica- di fronte ad una o piu` telecamere
ed illuminate in modo appropriato, in modo cioe` da evidenziare il piu` possi-
bile i difetti da individuare. Il sistema ottico forma un’immagine sul sensore
della telecamera che produce un segnale elettrico in uscita. Questa segnale
verra` digitalizzato e memorizzato.
L’immagine, catturata e resa in questo modo “comprensibile” da un calcola-
tore, potra` quindi essere elaborata con un apposito software che comprende
particolari algoritmi di calcolo ed analisi, in grado di individuare le carat-
teristiche dell’immagine ed amplificarne alcuni aspetti (come per esempio
contorni, spigoli, forme, strutture) allo scopo di eseguire i controlli e le veri-
fiche per i quali il sistema e` stato concepito.
Un problema classico nella computer vision e` quello di determinare se l’im-
magine contiene o no determinati oggetti (Object Recognition) o attivita`. Il
problema puo` essere risolto efficacemente e senza difficolta` per oggetti speci-
fici in situazioni specifiche, per esempio il riconoscimento di specifici oggetti
geometrici come poliedri. Le cose si complicano nel caso di oggetti arbitrari
in situazioni arbitrarie.
1.3 Obiettivo Stage
L’obbiettivo iniziale dello stage mi e` apparso subito quantomeno ambizioso:
l’idea era quella di stupire il pubblico ad una convenction tenendo una pre-
sentazione e cambiando slide con dei semplici movimenti della mano in aria,
i quali venivano riconosciuti da una normalissima webcam, il tutto previa
identificazione della persona che avrebbe dovuto tenere la presentazione. Il
fatto che esistesse una libreria opensource, sviluppata dalla Intel, con molte
routine che avrebbero agevolato in modo importante il mio lavoro e l’ap-
profondita conoscienza del linguaggio di programmazione con il quale avrei
dovuto sviluppare il software, mi ha fatto accettare di buon grado la propo-
sta.
Nonostante il notevole supporto che offre la libreria OpenCV, ben presto mi
sono accorto che sarebbe stato necessario impiegare piu` tempo del previsto
per l’apprendimento delle principali tecniche di elaborazione delle immagini.
Dopo aver appreso i rudimenti necessari, ho fatto presente al tutor aziendale
che per colmare tutte le lacune riguardo le nozioni che mi sarebbero servite
per sviluppare l’idea del progetto iniziale, il tempo di due mesi non mi sareb-
be stato sufficiente. Pertanto abbiamo valutato insieme le varie possibilita`
ed infine mi e` stato chiesto di sviluppare un software demo che mostrasse le
potenzialita` della libreria OpenCV e i possibili impieghi che potrebbe avere.
9
1.4. SITUAZIONE DI PARTENZA
Questa demo implementa l’head detection e un rudimentale hand detection
ed hand tracking, associando alla mano il puntatore del mouse del computer
sul quale si sta lavorando.
Quindi, requisito fondamentale per poter utilizzare l’applicazione e` possede-
re una webcam. Il software, dotato di interfaccia grafica ridotta al minimo,
riconosce il viso della persona che sta di fronte al terminale (fino ad una
distanza di circa 3-4 metri, dipende molto dal tipo e dalla risoluzione della
webcam) basandosi sui classificatori haar-like (vedi sezione 3.4.2). Il pro-
gramma mostra in una finestra il video (per essere precisi, una sequenza di
frame) catturato dalla webcam e se viene riconosciuto un viso, esso viene
evidenziato da un quadrato che lo racchiude. Inoltre, solo quando vi e` la pre-
senza di un viso, viene disegnato al suo fianco un rettangolo, chiamato work
area (la cui grandezza e` proporzionale alla grandezza del viso e quindi alla
distanza dalla webcam): il programma ora si aspetta che all’interno di esso
compaia la sagoma di una mano e, una volta riconosciuta, viene interrotto il
processo di head-detection. Quando una mano viene riconosciuta all’interno
della work area, viene associata ad essa un pallino rosso e contemporaneamte
il processo di head detection si interrompe. Muovendo la mano, il pallino
si muovera` con essa. Al suo movimento, viene associato il movimento del
cursore del mouse, ovviamente rispettando le proporzioni dello schermo sul
quale si lavora. Quando si fa uscire il pallino dalla work area, il processo di
head detection riprende per iniziare una nuova sessione.
1.4 Situazione di Partenza
Lo stato dell’arte ad inizio stage era ai primordi, in quanto di concreto c’era
solamente l’idea del progetto. Nessuno all’interno dell’azienda, almeno nella
sede dove ho svolto lo stage, aveva conoscenze specifiche riguardo le OpenCV,
ovvero la libreria che avrebbe dovuto fornirmi gli strumenti necessari per lo
sviluppo del software.
Nel primo approccio con l’ambiente aziendale ho conosciuto le persone che
lavoravano nel mio stesso ufficio, e mi e` stato utile per capire a chi avrei
potuto chiedere aiuto in caso di bisogno: purtroppo le loro conoscenze in
ambito di elaborazione delle immagini era abbastanza scarso, considerando
anche il fatto che nella sede di Padova si sviluppano prettamente gestionali
e applicativi web. Ho trovato un valido appoggio invece, nel momento in cui
ho dovuto installare sul computer assegnatomi il software necessario per lo
sviluppo del codice, libreria OpenCV compresa.
I frequenti incontri con il committente, il quale mi ha anche fornito una copia
10
CAPITOLO 1.
del libro “Learning OpenCV” [3], hanno un po’ sopperito al fatto che nessuno
potesse darmi un’infarinatura generale sull’argomento.
1.5 Sinopsi
L’attivita` di stage da me svolta ha compreso l’analisi, la progettazione e la
realizzazione di tutto il sistema fin qui descritto. Il lavoro intrapreso verra`
presentato in questo documento di tesi: in particolare, nel secondo capitolo
verranno introdotti gli strumenti di lavoro utilizzati per lo svolgimento del
progetto di stage, dando particolare attenzione alla libreria OpenCV.
Il terzo capitolo contiene tutte le nozioni teoriche che sono necessarie per
poter capire le basi dell’Object Detection e dell’Object Tracking.
Nel quarto capitolo vengono invece illustrate le principali funzionalita` che
mette a disposizione la libreria OpenCV, dando maggior risalto a quelle che
poi sono state utili per la realizzazione del prodotto software.
Il quinto capitolo si occupa di descrivere l’attivita` di analisi che ha compor-
tato l’attivita` di stage, ed in particolare l’analisi dei requisiti attraverso l’uso
di Use Case Diagram.
Il sesto capitolo tratta in dettaglio la specifica tecnica del software realizza-
to.
Nel settimo capitolo vengono riassunte le modalita` di qualifica generali e
dell’applicazione finale, mentre nell’ultimo capitolo vengono tratte le conclu-
sioni finali, a partire dal consuntivo finale delle ore lavorate in relazione al
preventivo, fino ai possibili sviluppi futuri.
11