& Presentano: BUILD live – Torino Introduzione a Microsoft Kinect Gianni Rosa Gallina Marina Sabetta
Agenda Cosè Microsoft Kinect? Cosa si può fare con Kinect? Lhardware La tecnologia Video Body tracking Audio Microsoft Kinect SDK Architettura Come si usa 2 / 21
Cosè Microsoft Kinect? E un dispositivo embedded, costituito da: un insieme di sensori audio/video: Videocamera RGB Sensori di profondità 3D Microfoni software proprietario per: Computer Vision Tracciatura del corpo Riconoscimento facciale Riconoscimento vocale Pensato per la console Microsoft Xbox 360, in modo da permettere una modalità di gioco senza controller e coinvolgente Ha fatto la sua prima apparizione ufficiale nel 2009, prima era noto con il nome in codice Project Natal. 3 / 21
Cosa si può fare con Kinect? 4 / 21 Fonte:
Lhardware VIDEOCAMERA RGB SENSORI PROFONDITA 3D MICROFONI MOTORINO INCLINAZIONE 5 / 21
Lhardware 6 / 21
Cavo USB e alimentazione Il motorino di inclinazione richiede più corrente di quanta le sole porte USB possano fornire Si ha un connettore proprietario che combina USB standard e maggiore potenza di alimentazione La versione di Kinect acquistabile stand- alone fornisce questo alimentatore esterno, che è NECESSARIO per poterla collegare anche ad un PC di sviluppo. 7 / 21
La tecnologia Frutto di decenni di ricerche accademiche, dellindustria, di Microsoft Research e del gruppo Xbox nel campo della Computer Vision Basata sulle soluzioni tecnologiche dellisraeliana PrimeSense I problemi che Kinect risolve: Trova una o più persone in una scena, ignorando lo sfondo Riconosce gli arti e i giunti, associandoli alla persona corretta Trova e traccia i gesti delle persone Mappa i gesti su significati e comandi Inoltre: Riconosce le facce Riconosce la voce (Permette anche di giocare!) 8 / 21
La tecnologia 9 / 21
Sembra magia ma… è Computer Vision + Data Analysis + Intelligenza Artificiale Machine Learning Valuta miliardi di possibili posture del corpo umano sulla base di 32 segmenti connessi (scheletro) Ogni fotogramma A 30 fotogrammi al secondo Consumando meno del 10% di CPU La tecnologia 10 / 21
La tecnologia Algoritmo di visione Real-Time Human Pose Recognition in Parts from a Single Depth Image Jamie Shotton, Andrew Fitzgibbon, Mat Cook, Toby Sharp, Mark Finocchio, Richard Moore, Alex Kipman, Andrew Blake 11 / 21
La tecnologia Non dimentichiamo laudio! I problemi che Kinect risolve: Isola la voce dal rumore di fondo Riduce/elimina riverberi ed echi dovuti allambiente circostante Rileva direzionalmente la sorgente audio Riconosce il parlato Sembra magia ma… è Batteria di microfoni + DSP + Data Analysis + Intelligenza Artificiale 12 / 21
La tecnologia Algoritmi audio Presentazione al MIX 2011 di Ivan Tashev E larchitect della maggior parte del processing audio di Kinect Ha introdotto notevoli avanzamenti nel campo del processing audio in real-time e attualmente sta lavorando al problema dellidentificazione del parlatore 13 / 21
14 / 21
Windows Kinect SDK Microsoft Research ha rilasciato una versione beta del Kinect SDK per Windows il 16 giugno: LSDK installa: i driver per i sensori Kinect API di programmazione C++ e.NET (C# / VB.NET) documentazione applicativi di esempio + codice sorgente Attenzione! SOLO Windows 7 (x86 / x64), NON in macchina virtuale Per poter usare le librerie Kinect su una macchina NON di sviluppo, occorre comunque installare lSDK e tutte le sue dipendenze In questo momento lSDK si può utilizzare solo per scopi personali o di ricerca. NON si possono realizzare prodotti commerciali. 15 / 21
Architettura I sensori di Kinect inviano al sistema tre flussi di dati: Flusso video Può essere visualizzato come una normale webcam. Sono disponibili due risoluzioni: 30fps e 15fps Flusso di profondità E una matrice di interi i cui valori indicano la profondità spaziale (in mm) di ogni pixel di un flusso video a 320x240. Può essere interpretato come video B/N oppure, con qualche elaborazione aggiuntiva, si può rendere colorato Flusso audio E laudio proveniente dalla batteria di microfoni, combinato in un unico flusso di dati 16 / 21
Tracciatura del corpo Quando Kinect sta tracciando una persona, vengono frequentemente forniti allo sviluppatore informazioni sullo scheletro riconosciuto. Lo scheletro consiste nei seguenti 20 punti chiave, i giunti: 17 / 21
Come si usa? Per usare le librerie Kinect in unapplicazione.NET, è necessario includere solo una reference alla DLL Microsoft.Research.Kinect.dll Sono disponibili due namespace: Microsoft.Research.Kinect.Nui per accedere ai flussi video, profondità e body tracking Microsoft.Research.Kinect.Audio per accedere ai dati audio Successivamente, bisogna aprire i flussi audio/video prima di poterli utilizzare nel proprio applicativo, specificandone tipologia, risoluzione e altri parametri specifici di ogni flusso Prima di poter utilizzare la libreria NUI, bisogna instanziare un oggetto della classe Runtime, specificando i flussi a cui si vuole accedere 18 / 21
Come si usa? La libreria NUI funziona ad eventi: ogni qualvolta i sensori hanno dei dati disponibili, vengono notificati degli eventi a cui bisogna registrarsi per poter ricevere ed utilizzare le informazioni: DepthFrameReady Rende disponibile la matrice dei dati di profondità acquisiti dai sensori IR SkeletonFrameReady Rende disponibili i dati dei giunti di uno o due corpi completamente tracciati. I dati sui giunti possono essere validi o meno, è necessario verificarne lo stato prima di utilizzarli in elaborazioni successive. VideoFrameReady Rende disponibile il fotogramma acquisito dalla webcam 19 / 21
Come si usa? Per gestire laudio, invece, è sufficiente instanziare un oggetto di tipo KinectAudioSource: Con questo oggetto si possono avere: i dati audio veri e propri (16KHz, 16bit PCM) – da un singolo microfono o dalla battaria completa – con opzionale cancellazione del rumore e delleco (AEC) informazioni sulla direzione della sorgente (beamforming) – se attivato, i dati vengono recuperati registrandosi allevento BeamChanged – linformazione è espressa in gradi radianti: 0 nella posizione frontale rispetto al sensore Kinect; 0 a destra. – È disponibile, come per i giunti, un parametro per stabilire la qualità dellinformazione integrazione con le Speech API di Windows per fare riconoscimento vocale 20 / 21
Risorse aggiuntive 21 / 21
DEMO
Domande & Risposte Gianni Rosa Gallina Marina Sabetta