Studio e sviluppo di uno Scanner 3D con Kinect Università politecnica delle marche Facoltà di ingegneria Corso di laurea magistrale in ingegneria informatica Tesi di laurea di: Luca Pignati Relatore: Prof. Aldo Franco Dragoni Correlatore: Ing. Gianluca Dolcini Introduzione ● ● ● Sopperire alla mancanza di un adeguato strumento di misurazione Esportare la tecnologia del Kinect da un contesto videoludico ad un contesto biomedico. ● Sviluppare un prototipo software capace di effettuare una scansione del corpo umano a tre dimensioni Testare le capacità del Kinect per verificare se è possibile utilizzarlo per misurazioni antropometriche del corpo umano Tesi sviluppata nell'ambito di una collaborazione tra AIRTlab del DII e la facoltà di medicina dell'UNIVPM Il Kinect Il Kinect è un sensore della Microsoft sviluppato dall'israeliana Primesense per la consolle di gioco Xbox 360, è costituito da: ● Una fotocamera RGB 640x480 ● Un emettitore di infrarossi ● Una telecamera sensibile agli infrarossi ● Un array di microfoni ● Una Base motorizzata Il Kinect effettua il riconoscimento del corpo e dei gesti tramite il processore posto al suo interno per non appesantire la CPU della consolle. Il sensore di profondità Questo progetto si basa sull'analisi e l'utilizzo del sensore di profondità del Kinect. Per calcolare la profondità il processore utilizza 3 tecniche applicate alle informazioni che riceve dalla telecamera sensibile agli infrarossi: ● Pattern di luce ● Depth from focus ● Depth from stereo Strumenti utilizzati Per sviluppare questo progetto sono stati utilizzati i seguenti strumenti software. ● Sistema Operativo Ubuntu 12.04 ● Librerie OpenNI ● Librerie Java3D ● Ambiente di sviluppo Eclipse 3.7.2 Misure Antropometriche: Attuale stato dell'arte ● Attualmente le misure antropometriche vengono prese manualmente da parte di medici o infermieri. ● Lo strumento utilizzato è il metro a nastro ● Le misure vengono riportate per lo più in centimetri. Questo strumento solitamente ha una Portata di 1,5 m e una sensibilità di 1mm Tipicamente si riportano i valori di torace, addome e collo. La nostra proposta ● ● Verificare l'effettiva funzionalità del Kinect Effettuare una serie di test per misurarne l'accuratezza V1=[a1, a2, a3, … an] Vdiff= |V1 – V2| V2=[b1, b2, b3, … bn] Vdiff= [|a1­b1|,|a2­b2|, … |an­bn|] ● ● ● Migliorare le misurazioni attuali Fornire una base per eventuali sviluppi futuri Allargare l'utilizzo dello strumento ad altri settori Calcolo del volume: S=[a , b]×[c , d ] ∬ g ( x , y )dV S Oppure b d ∫∫ g ( x , y) dx , dy a c Nel caso di insiemi discreti l'integrale è una sommatoria di m sottoregioni Pi aventi volume ΔVi m ∑ g (Pi) ΔVi i=1 Test sul Kinect ● La procedura di calcolo è stata ripetuta 50 volte per ogni tipo di sperimentazione Media Err. max Err. min ● I risultati ottenuti sono stati inseriti in un foglio di calcolo Media 1 Media 2 0 mm <2 mm ● Tramite il foglio di calcolo si è potuta fare un'indagine statistica dell'errore <5 mm <10 mm %0 %2 %5 %10 Test sulla distanza Sono stati effettuati 3 nuovi test a 3 distanze significative, 1m: Media Err. Max Err. Min Media 1 Media 2 0 mm <2 mm <5 mm <10 mm %0 %2 %5 %10 0 15 0 1005 1005 254411 258849 306130 307169 82,82 84,26 99,65 99,99 Media Err. Max Err. Min Media 1 Media 2 0 mm <2 mm <5 mm <10 mm %0 %2 %5 %10 1 30 0 1550 1550 252366 252366 252366 306107 82,15 82,15 82,15 99,64 Media Err. Max Err. Min Media 1 Media 2 0 mm <2 mm <5 mm <10 mm %0 %2 %5 %10 2 173 0 2015 2015 249565 249565 249565 250603 81,24 81,24 81,24 81,58 1,5m: 2m: Aumento dell'errore 120 100 80 Err. Max 1m Err. Max 1,5m Err. Max 2m 60 40 20 0 1 2 3 4 5 6 7 8 9 1011121314151617181920212223242526272829303132333435363738394041424344454647484950 Prove di posizione In questi test abbiamo osservato come il Kinect si comporta con la base inclinata e con lo schermo di osservazione ridotto. Piano inclinato: Media Err. Max Err. Min Media 1 Media 2 0 mm <2 mm <5 mm <10 mm %0 %2 %5 %10 0 244 0 1224 1224 252822 254521 290652 306710 82,3 82,85 94,61 99,84 Schermo ridotto: Media Err. Max Err. Min Media 1 Media 2 0 mm <2 mm <5 mm <10 mm %0 %2 %5 %10 0 20 0 1080 1080 185512 185512 224925 225656 82,11 82,11 99,56 99,88 Immagini di errore ● Immagine intera ● Punti con errore > 3mm ● ● Punti esatti Punti con errore >5mm Test sul corpo ● ● E' stato utilizzato lo stesso principio dei normali Test L'algoritmo di calcolo è stato leggermente modificato per eliminare l'interferenza del punto cieco al contorno Test sul corpo ● Valori Medi Media Err. Max Err. Min Media 1 Media 2 0 mm <2 mm <5 mm <10 mm %0 %2 %5 %10 1,42 94 0 32 34 248170 254300 273144 291514 80,78 82,78 88,91 94,89 ● Deviazione Standard Media Err. Max Err. Min Media 1 Media 2 0 mm <2 mm <5 mm <10 mm %0 %2 %5 %10 2,08 95 0 8 8 51354 48329 43024 29052 16,72 15,75 14,01 9,46 Immagini di errore sul corpo Errore >5 Errore >7 Errore >10 Errore >20 Ultimo Test ● Effettuato utilizzando il primo software sperimentato ● Tabella ridotta, interessano solo le percentuali 0 mm <2 mm <5 mm <10 mm %0 %2 %5 %10 212680 212892 290893 301114 69,23 69,3 94,69 98,02 Lo Scanner 3D: primo prototipo ● ● ● ● Selezionare i punti di interesse Determinare i livelli di profondità Disporre i punti nel giusto ordine Java 3D disposizione cartesiana dei punti Lo Scanner 3D 360° ● ● ● Stesso principio del primo prototipo Effettuare più scatti a seconda della precisione desiderata Utilizzo di formule di traslazione per disporre i punti nella maniera opportuna x '= xcos (∂)− ysin(∂) y '= xsin(∂)+ ycos(∂) Conclusioni Risultati ottenuti ● ● ● ● ● Conferma dell'utilità del sensore nel rilevamento di misure antropometriche Sviluppi Futuri ● ● Buoni risultati in fase di testing Buoni risultati nella realizzazione dei prototipi Basse percentuali di errore oltre i 2 mm con oggetti inanimati Basse percentuale di errore oltre i 5 mm con persone ● ● Utilizzo di opportuni filtri per eliminare eventuali errori Ottimizzare strumenti di interpolazione e correzione software per abbassare il margine di errore Utilizzo del riconoscimento dei movimenti per integrare allo scanner la mappatura del corpo Applicare il prodotto ad altri campi (fisioterapia, medicina sportiva, cinema) Le librerie di sviluppo Il Kinect può essere utilizzato sfruttando le librerie ufficiali oppure utilizzando delle librerie non ufficiali create da differenti gruppi di ricerca. Il pattern di luce La Primesense ha sviluppato un particolare pattern di luce che permette di sfruttare appieno i tre principi precedentemente illustrati. Xtion Asus