Igor Antonacci
http://blog.technothink.net/
Twitter: @bitbreaker
[email protected]


La DotDotNet è un'associazione culturale con il compito di
promuovere la più ampia diffusione dell'informatica, della
telematica, della multimedialità e dei collaborative tools, con
particolare attenzione allo sviluppo di software su piattaforma
Microsoft .NET. (dall’art. 1 dello statuto DotDotNet)
Associazione no-profit
◦ Opera in tutta la regione



Gruppo di professionisti, studenti e appassionati.
Modulo di adesione
Feedback




NUI – Natural User Interfaces
Kinect Overview
Kinect SDK
Demo


HCI – Human Computer Interaction è un argomento
“HOT” in questo momento; sono nati nuovi tipi di
interazioni Uomo-Macchina che interessano il grande
pubblico E gli sviluppatori
Sono state vendute più chitarre virtuali che reali nel
2009
TouchTouch
Object Recognition
Gestures
Voice
Augmented Reality
Touchless



Com’è fatta / Sensori e Componenti
Architettura HW
Come funziona





Camera VGA 640x480 (CMOS).
Infrared Camera 640x840 (CMOS).
Proiettore Infrarossi
Tilt Motorizzato.
3D DEPTH SENSORS
Batteria di 4 Microfoni
RGB CAMERA
MULTI-ARRAY MIC
MOTORIZED TILT


Download:
http://www.microsoft.com/en-us/kinectforwindows/
L’SDK Include
◦ Driver per l’utilizzo su PC (Windows 8, Windows 7, )
◦ API per l’accesso ai sensori, documentazione

Toolkit
◦ Esempi con codice sorgente (in C# , C++ … )
◦ Face Tracking SDK
◦ Miscellanea


Kinect SDK – Layer tra HW e Software
Flusso di dati “grezzo” e “raffinato”



Massimo due “player” riconosciuti
contemporaneamente
“Joints” <x, y, z> per ogni giocatore / utente
Ogni “Joint” ha degli stati
◦ Tracked – Il riconoscimento è “accurato”
◦ Not Tracked – Non si è giunti al riconoscimento di quel joint
◦ Inferred – L’accuratezza è minima, l’elemento è coperto e non
facilmente riconoscibile  interpolato



Nuovo Progetto WPF o WinForms
Referenziare la DLL: Microsoft.Kinect
Scrivere codice 
◦ nui = Runtime.Kinects[0];
◦ nui.Initialize(RuntimeOptions.UseSkeletalTracking);
◦ nui.SkeletonFrameReady += new
EventHandler<SkeletonFrameReadyEventArgs>(nui_Skeleto
nFrameReady);

Rappresenta il singolo frame con riconoscimento
scheletrico


Stream Video dal sensore video a colori del Kinect
E’ necessario “aprirlo” (inizializzarlo) prima di ricevere I
frame
◦ nui = Runtime.Kinects[0];
◦ nui.Initialize(RuntimeOptions.UseColor);
◦ nui.VideoFrameReady += nui_VideoFrameReady;
◦ nui.VideoStream.Open(ImageStreamType.Video, 2,
ImageResolution.Resolution640x480,
ImageType.Color);




Ogni frame della scena è rappresentato da un oggetto
di tipo PlanarImage
I pixel della scena sono rappresentati, ognuno, con 4
byte
NON utilizzabile come Source di una Image (nè in WPF,
nè in WinForms)
Coding4Fun.Kinect.Wpf – ToBitmapSource() extension
method
◦ image1.Source = e.ImageFrame.ToBitmapSource();


“Fotogramma” di profondità
Ogni coppia di byte rappresenta la distanza per il pixel
corrispondente (per ogni giocatore nella scena)
◦ nui = Runtime.Kinects[0];
◦ nui.Initialize(RuntimeOptions.UseDepth);
◦ nui.DepthFrameReady += nui_DepthFrameReady
◦ nui.DepthStream.Open(ImageStreamType.Depth, 2,
ImageResolution.Resolution640x480,
ImageType.Depth);


Ogni pixel della scena è rappresentato da DUE byte
I due byte possono contenere due informazioni
principali
◦ ID del Player (in caso di più utenti sulla scena)
◦ La distanza dell’oggetto (in mm)

L’ID dell’utente/giocatore è presente se:
◦ nui.Initialize(RuntimeOptions.UseDepthAndPlayerIndex);

… assente nel caso in cui
◦ nui.Initialize(RuntimeOptions.UseDepth);


Nuova versione dell’SDK rilasciata ad Aprile 2013
Introduzione di un (più) layer allo stack precedente
◦ Kinect Interaction
◦ Kinect Fusion
◦ Matlab / OpenCV Integration

Nuovo Kinect Toolkit
◦ Controlli WPF / Nativi per l’interazione attraverso
Kinect Interaction
 Hand grip gesture
 Push to Press control

Layer “on-top” della NUI
Gestione di gesture “comuni” in Applicazioni / Giochi
Native

WPF
Managed
Native



Kinect Toolkit – Open Source (Codeplex)
Controlli “aggiuntivi” – “on top” Kinect Interaction Libraries
Astraggono dalla gestione delle “gesture”
◦ Eventi “Click” come in un controllo WPF / WinForm 
◦ Nessuna gestione dei movimenti e dei “sensori”

What’s NEW (principali Controlli)
◦
◦
◦
◦
KinectRegion – contenitore per controlli “Interaction”
KinectTileButton – Bottone “Kinect” – Push to press
KinectScrollViewer – Scrollview con gestione “Hand Grip”
KinectUserViewer – Piccolo “monitor” per debug del sensore di
profondità
◦ KinectSensorChooserUI – Gestione (multi) sensore (riduce codice di
inizializzazione)




Scansione TRIDIMENSIONALE della scena
Identificazione degli oggetti nella scena…3D .
Utilizzo “real-time” (Realtà aumentata) SOLO con GPU
Desktop-level
GPU Mobile  Static scene render
DEMO


Utilizzo / Integrazione con OpenCV – Computer Vision
Gestione del flusso “depth” con Matlab




Gestione “managed” dell’Audio
Start – Capture – Stop dell’audio con
riconoscimento della direzione
Kinect Audio Demo tra gli esempi dell’SDK
Riconoscimento vocale se utilizzato insieme
alle Speech API



Visualizzazioni scientifiche
Healthcare
Games



Kinect SDK
http://www.microsoft.com/en-us/kinectforwindows/
Coding4Fun – Kinect
http://channel9.msdn.com/coding4fun/kinect
Coding4Fun – Kinect for Windows SDK Quickstart
http://channel9.msdn.com/Series/KinectSDKQuickstarts

How does it works – Kinect
http://gilotopia.blogspot.com/2010/11/how-doeskinect-really-work.html
Scarica

Kinect SDK - Intel® Developer Zone