Test riconoscimento automatico espressioni del volto



Documenti analoghi
Librerie digitali. Video. Gestione di video. Caratteristiche dei video. Video. Metadati associati ai video. Metadati associati ai video

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

Guida all uso di Java Diagrammi ER

RICONOSCIMENTO DI TARGHE AUTOMOBILISTICHE

e-dva - eni-depth Velocity Analysis

Dimensione di uno Spazio vettoriale

Mon Ami 3000 Varianti articolo Gestione di varianti articoli

PORTALE CLIENTI Manuale utente

Sistema operativo: Gestione della memoria

Plate Locator Riconoscimento Automatico di Targhe

ECCO COME FUNZIONA. Ti mostriamo ora come acquistare un volantino.

Generazione Automatica di Asserzioni da Modelli di Specifica

Come creare il test di Yasso tramite l applicazione Training Center

CALCOLO COMBINATORIO

INSERIMENTO DATI BASILARI

PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0)

IoBirro. Birra fatta in casa con SIMATIC. Siemens AG All Rights Reserved. Industry Sector

Algoritmo per il rilevamento di targhe

Analisi e diagramma di Pareto

COSTER. Import/Export su SWC701. SwcImportExport

Seguiamo con un pennarello la strada del filo..ogni bambino sceglie il colore per evidenziare la strada del suo filo..

MODELLISTICA DI IMPIANTI E SISTEMI 2

Cominciamo dalla barra multifunzione, ossia la struttura a schede che ha sostituito la barra dei menu e la barra delle icone (Figura 1).

Università degli Studi di Catania Corso di Laurea Magistrale in Informatica Multimedia 2013/14. Cantarella Danilo. OpenCV Android

Guida Compilazione Piani di Studio on-line

ALLEGATO 14 PROBLEMATICHE APPLICATIVE PASSERELLA ESPORTAZIONE DATI E CAPRES

Aprire, preparare un documento da utilizzare come documento principale per una stampa unione.

ELABORAZIONE DI DATI TRIDIMENSIONALI - RELAZIONE HOMEWORK 2

Al termine del lavoro ad uno dei componenti del gruppo verrà affidato l incarico di relazionare a nome di tutto il gruppo.

Registratori di Cassa

Funzioni in C. Violetta Lonati

INDICE. Introduzione 2 Esempio accorpamento preventivo 3. Corso Accorpamento Preventivo Pag. 1

Dispensa di Informatica I.1

SVG Editor. Istituto Italiano Edizioni Atlas 1

GUIDA ALLA GESTIONE DEI TICKET REV. 1. guida_gestione_tck_rev1.doc - 1 di 9

PRIMI RISULTATI DELL INDAGINE SULLE TENDENZE PHOTO-IMAGING 2013 IN ITALIA REALIZZATA DA IPSOS PER AIF

PHOTOSHOP BREVE TUTORIAL

FIRESHOP.NET. Gestione del taglia e colore.

EDICOLA MANAGER EM Importer

lo PERSONALIZZARE LA FINESTRA DI WORD 2000

SOFTWARE PER LA RILEVAZIONE DEI TEMPI PER CENTRI DI COSTO

Sme.UP Qualità e Manutenzione

Costruzione del layout in gino cms

In questo manuale sono indicate le procedure per utilizzare correttamente la gestione delle offerte dei fornitori.

Eliminare il messaggio "Rete non identificata" da Windows 7

PROCEDURA PER LA GESTIONE ESAMI DI STATO AREA ALUNNI AXIOS

Software Gestionale per alberghi e strutture ricettive

10 - CURVE DI LIVELLO

Dalla geometria in 3D alla geometria in 2D dal cubo al quadrato

Corrispondenze e funzioni

ALLINEARSI: IL DRIVER PER UNA INNOVAZIONE DI SUCCESSO!

Parte I. Prima Parte

SIFORM MANUALE VOUCHER FORMATIVI A DOMANDA AZIENDALE

Manuale Gestore. Utilizzo Programma. Magazzino

Procedura Gestione Pratiche Sicurezza Cantiere

Barriere assorbenti nelle catene di Markov e una loro applicazione al web

Novità di Access 2010

2 - Stesura della Proposta di Aggiornamento partendo da un rilievo misto GPS.

Università degli Studi di Ferrara - A.A. 2014/15 Dott. Valerio Muzzioli ORDINAMENTO DEI DATI

Sistema operativo. Sommario. Sistema operativo...1 Browser...1. Convenzioni adottate

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

FOXWave Gestione gare ARDF IZ1FAL Secco Marco Sezione ARI BIELLA

GUIDA ALLA PROGRAMMAZIONE GRAFICA IN C

Gestione Risorse Umane Web

OSSERVAZIONI TEORICHE Lezione n. 4

La distribuzione Normale. La distribuzione Normale

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

Capitolo 2. Operazione di limite

I E-recruitment Solutions I

Matematica generale CTF

Manuale Utente Albo Pretorio GA

Il modello veneto di Bilancio Sociale Avis

Approccio stratificato

Modelli di Programmazione Lineare e Programmazione Lineare Intera

INSTALLAZIONE NUOVO CLIENT TUTTOTEL (04 Novembre 2014)

Indice. Introduzione...6. Capitolo 1: Realtà virtuale e computer vision..10. Capitolo 2: Riconoscimento facciale..34

EasyPLAST. Siamo riusciti a trasferire in EasyPLAST tutte le informazioni e le procedure che prima erano gestite con fogli excel

Che cosa è un VIRUS?

2010 Ing. Punzenberger COPA-DATA Srl. Tutti i diritti riservati.

Pannello avanzato Gestione Produzione

Il gestionale completo e modulare per l azienda di trasporto

Office 2007 Lezione 08

Progettaz. e sviluppo Data Base

Project Planning. Politecnico di Milano. Progetto di Ingegneria del Software novembre Elisabetta Di Nitto Raffaela Mirandola

NAVIGAORA HOTSPOT. Manuale utente per la configurazione

business solutions Tutte le voci della procedura sono accessibili tramite un sotto menu aggiunto al Menu principale di SBO.

FASE 1 REGISTRAZIONE DEI DATI PERSONALI

Capitolo V : Il colore nelle immagini digitali

Analisi statistica di dati testuali: il software SPAD

MANUALE ESSE3 Gestione Registro delle lezioni

VETTOR DAL BITMAP AL VETTORIALE. Paolo Mantini TEORIA E PRATICA DELLA CONVERSIONE DELLE IMMAGINI DA RASTER A VETTORIALI

Come creare il test di Conconi tramite l applicazione Training Center

Mon Ami 3000 Multimagazzino Gestione di più magazzini fisici e/o logici

Che differenza c è tra una richiesta XML ed una domanda XML? (pag. 4)

MANUALE MOODLE STUDENTI. Accesso al Materiale Didattico

Transcript:

Università degli studi di Roma Tor Vergata Test riconoscimento automatico espressioni del volto Preparato per: Giovannella Carlo, Professore Preparato da: Tobia Giani e Alessandro Borelli, Studenti 10 Luglio 2011 Numero proposta: 123-4567 Società Via della Ricerca Scientifica 00049 Roma Italia gianitobia@gmail.com

Indice Premessa pag. 2 Progettazione test pag. 2 1. Ricerca in letteratura 2. Analisi del materiale 3. Creazione algoritmo 4. Implementazione Test e problematiche pag. 10 Risultati pag. 10 Test riconoscimento automatico espressioni del volto 1

Premessa Il programma che è stato fatto completa un primo step di ciò che si doveva realizzare. Il compito iniziale, consisteva nell utilizzare il programma creato dagli studenti del precedente anno ed automatizzarlo partendo dallo stesso. Utilizzando infatti le statistiche da loro fatte, ed automatizzando la cattura dei punti d interesse per la segmentazione del volto, si sarebbe dovuto avere lo stesso risultato da loro ottenuto manualmente, in modo del tutto automatico. Per far questo, si richiedeva di sviluppare un software che riconoscesse, tramite algoritmo, gli stessi punti fissati manualmente dall utente nel vecchio programma. Questo per poter utilizzare le statistiche da noi possedute e non rendere vano il lavoro precedentemente fatto. Quindi ci si è limitati ad individuare la conformazione del volto ricercando gli stessi punti fissati dagli studenti dall anno precedente. Progettazione test 1. Ricerca in letteratura Inizialmente si disponeva del materiale realizzato dal gruppo dell anno precedente: un software e una relazione che ne analizzava i risultati. Il materiale a disposizione non era sufficiente per il nostro test, quindi si è cominciata la ricerca in letteratura. Visti gli obiettivi prefissati, si sono cercati lavori analoghi già sviluppati o algoritmi che si sarebbero potuti utilizzare. La maggior parte dei risultati trovati erano o software a pagamento o tesi universitarie molto corpose e di difficile comprensione. Ad es. i risultati di un software a pagamento trovato sono questi: Come si può notare il riconoscimento dei punti del volto è molto efficiente, e soprattutto si avvicinava ai punti trovati dagli studenti dello scorso anno, ma non essendo pubblico l algoritmo, si è dovuto scartare questa opzione e anche gli altri software. Test riconoscimento automatico espressioni del volto 2

Inoltre si è trovata una libreria di funzioni in C++ chiamata FaceApi anche essa molto prestante ma con algoritmo sconosciuto. Volendo realizzare un algoritmo proprio si è cercato qualche sistema già utilizzato da altri come per esempio: - Snakes (contorni attivi): consiste nell inizializzare una curva ( snake ) e nel deformarla sotto l azione di forze che minimizzano una particolare funzione obiettivo che rappresenta l energia dello snake. La principale applicazione sfrutta questa convergenza verso i minimi locali per far tendere lo snake ai contorni dell immagine, da qui la denominazione di contorni attivi. Test riconoscimento automatico espressioni del volto 3

- Template matching e modello Candide : questo algoritmo si basa sulla creazione di un modello del volto a priori, semplice e strutturato con linee e forme, da associare ai punti trovati tramite un sistema sviluppato con FaceApi. Grazie al modello del volto Candide si aggancia letteralmente il template ai punti del volto trovati e successivamente lo si collega ad un modello di volto 3D. - Segmentazione dell immagine: è il processo di partizionare un'immagine in regioni significative. Per fare ciò si possono utilizzare vari metodi: 1. Metodi basati sul Pixel (Pixel-based) si utilizzano i valori di luminosità dei singoli pixel. 2. Metodi basati sulla Regione (Region-based) si analizzano i valori di luminosità di aree dell'immagine. 3. Metodi basati sul Contorno (Edge-based) si estraggono i contorni per delimitare gli oggetti. 4. Metodi basati su un modello (Model-based) si parte dalla conoscenza a priori del modello dell'oggetto. - Spazio di Colore YCbCr: convertire un immagine in uno spazio di colore che permetta la separazione tra crominanza e luminanza, quindi agire sul colore indipendentemente dalla luminosità dell immagine. - Altre Tecniche: filtro di Gabor e Wavelet, algoritmo ICA, algoritmo SIFT. Test riconoscimento automatico espressioni del volto 4

2. Analisi e Creazione dell algoritmo Appurato che bisognava inventare un proprio algoritmo efficiente e semplice da utilizzare, si sono analizzate le varie tecniche trovate in letteratura ed estratto le migliori. Una prima versione dell algoritmo prevedeva di utilizzare principalmente il template matching e la rete Candide, di seguito l agoritmo: ALG 1. - Acquisizione img da webcam o da file - Analizzarla ed automaticamente adattare sopra ai particolari del volto(sopracciglia, occhi, naso, bocca), dei vettori o una rete 'Candide' - Analizzare la variazione della rete 'Candide' adattata con una rete standard -Dare risposta del tipo di emozione associata alla variazione della rete assegnata al volto ALG 2. - Acquisizione img da webcam o da file - Conversione RGB => YCbCr - Calcolo EyeMap (EyeMapC AND EyeMapL) - Calcolo MouthMap - Creazione Bounding Box intorno blob rilevati - Statistiche in base a distanze dai bounding box - Dare risposta del tipo di emozione associata alla variazione della rete assegnata al volto EyeMap --> Test riconoscimento automatico espressioni del volto 5

MouthMap --> Alla fine si è deciso quella della conversione in YCbCr perché permetteva una maggiore facilità di implementazione e velocità di esecuzione. 3. Implementazione Una prima implementazione è stata realizzata in Processing, in cui si cercava di calcolare la conversione in YCbCr e poi le EyeMap e MouthMap. Test riconoscimento automatico espressioni del volto 6

Siccome l EyeMap non dava i risultati voluti si è dovuto cambiare procedimento e cercare degli spazi di colore personalizzati. Per far ciò è stato realizzato un programma in Java che permettesse, attraverso degli slider, di far variare le costanti della conversione in YCbCr, e attraverso dei combobox, di scegliere il tipo di immagine da visualizzare ( Y, CB, CR, CB2, CR2, EyeMapC, EyeMapL ). A questo punto con questo programma si è potuto studiare, in base alla variazione degli slider, il cambiamento dei vari blob di colore (nel nostro caso ci si è concentrati inizialmente sugli occhi), trovando quindi degli spazi di colore adatti per fare AND ed operazioni morfologiche tra immagini. Durante questa operazione si è pensato ad un nuovo algoritmo per arrivare all immagine con i blob degli occhi più marcati. ALG 3. - Sezione dell img altezza occhi - Creazione di EyeMapC con valori fissati - Dilatazione EyeMapC - Erosione CB2 - EyeMapC / CB2 Img ottenuta con ALG 3 Test riconoscimento automatico espressioni del volto 7

Successivamente si è passati allo studio dei blob. Per prima cosa si è cercato di trovare un singolo blob di colore in una immagine e tracciarne il bounding box, poi si è passato al multi blob detection. L algoritmo seguito non è facile da comprendere e spiegare, si allegano alcune immagini che descrivono la sua logica. (A B C D X) Matrice di convoluzione fatta passare sopra l immagine di partenza. Ad ogni blob viene associato un diverso byte ed un diverso colore, i blob con byte diversi ma vicini, vengono accorpati insieme in un solo blob. Prova su multiblob Test riconoscimento automatico espressioni del volto 8

Si è pensato poi, di associare ad ogni blob trovato, una distanza dal centro dell immagine, una area, una massa (n. pixel del blob), un rapporto tra width ed height, un bounding box (xmin, ymin, xmax, ymax). Blob trovati su un volto Quindi gli occhi sono stati classificati come blob aventi: - distanza dal centro minore - area < 1000 - rapporto tra width - height compreso tra 1.3 e 2.5 Inoltre si è modificata la dimensione della matrice del filtro morfologico, portandola da 11x11 ad una dimensione di 9x17, rendendola rettangolare; si sono uniti i blob di piccola dimensione e si è reso più semplice il detection. Dopo aver filtrato i blob il risultato è il seguente: Test riconoscimento automatico espressioni del volto 9

Problematiche Le problematiche principali sono state le mancate competenze per il compito richiesto. Prima di poter creare un algoritmo ed ancor prima di poter giudicare le tesi trovate in letteratura, si è dovuto studiare argomenti complessi come: segmentazione di immagini, spazi di colore YCbCr, filtri morfologici, operazioni logiche tra immagini, filtri e matrici di convoluzione. Per la conversione da RGB in YCbCr, avendo trovato pareri diversi e delle volte discordanti riguardo i valori delle costanti di conversione, si sono dovuti provati quali tra quelli trovati fossero i migliori. Questa ricerca ha prodotto dei problemi, poichè i valori ottenuti si trovano fuori dal range 0-255 dell RGB, risolvibili effettuando uno shift ed una normalizzazione su tutte le componenti dell immagine per farle rientrare nel range. In questo modo si è potuto ottenere un range di valori molto più ampio e si sono evitate eccezioni runtime del programma. Problemi nell implementazioni in processing, sia per la lentezza di calcolo e sia per la mancanza di buone librerie per le componenti grafiche. Per questo poi si è scelto di passare a Java, dove si è potuto sviluppare il tutto graficamente grazie ai componenti Swing. Problema attualmente non risolto nell implementazione dell ultimo programma per la gestione dei blob: all interno del suddetto infatti, viene fatta una conversione dell immagine in byte per poter lavorare meglio con il riconoscimento dei blob e poi riconvertita in immagine rgb. Se l immagine in ingresso è una rgb e non una in scala di grigi, allora si hanno problemi con il cast tra DataBufferByte a DataBufferInt. Risultati I risultati ottenuti sono stati in parte già spiegati in precedenza nella relazione. Allo stato attuale si possiedono 4 diverse versioni del programma. Le prime due scritte in processing possono convertire molto bene le immagini nello spazio di colore YCbCr e le immagini con l EyeMapC e l EyeMapL ed un immagine per l individuazione della pelle. La terza versione del programma scritta in Java, permette di fare tutto ciò che si faceva nelle precedenti versioni, ma con un interfaccia grafica migliore e rendendo l uso dell utente indipendente dal codice del programma. Inoltre si hanno dei valori più corretti e non tagliati nel range come quelli ottenuti in processing. L ultima versione scritta in java permette di rilevare i blob ed i rispettivi bounding box di tutta l immagine in entrata e selezionare i due più simili ad un occhio. I risultati sono molto prestanti sia in velocità di calcolo, forse portabile in real time, e in precisione nel riconoscimento. Test riconoscimento automatico espressioni del volto 10

I risultati sono più che soddisfacenti. DI seguito immagini di prova: Test riconoscimento automatico espressioni del volto 11

Test riconoscimento automatico espressioni del volto 12