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 1 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 soatoria 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 max min I risultati ottenuti sono stati inseriti in un foglio di calcolo 1 2 0 <2 Tramite il foglio di calcolo si è potuta fare un'indagine statistica dell'errore <5 <10 %0 %2 %5 %10
Test sulla distanza Sono stati effettuati 3 nuovi test a 3 distanze significative, 1m: Max Min 1 2 0 <2 <5 <10 %0 %2 %5 %10 0 15 0 1005 1005 254411 258849 306130 307169 82,82 84,26 99,65 99,99 Max Min 1 2 0 <2 <5 <10 %0 %2 %5 %10 1 30 0 1550 1550 252366 252366 252366 306107 82,15 82,15 82,15 99,64 Max Min 1 2 0 <2 <5 <10 %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 Max 1m Max 1,5m 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: Max Min 1 2 0 <2 <5 <10 %0 %2 %5 %10 0 244 0 1224 1224 252822 254521 290652 306710 82,3 82,85 94,61 99,84 Schermo ridotto: Max Min 1 2 0 <2 <5 <10 %0 %2 %5 %10 0 20 0 1080 1080 185512 185512 224925 225656 82,11 82,11 99,56 99,88
Iagini di errore Iagine intera Punti con errore > 3 Punti esatti Punti con errore >5
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 Max Min 1 2 0 <2 <5 <10 %0 %2 %5 %10 1,42 94 0 32 34 248170 254300 273144 291514 80,78 82,78 88,91 94,89 Deviazione Standard Max Min 1 2 0 <2 <5 <10 %0 %2 %5 %10 2,08 95 0 8 8 51354 48329 43024 29052 16,72 15,75 14,01 9,46
Iagini 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 <2 <5 <10 %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 con oggetti inanimati Basse percentuale di errore oltre i 5 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