Post on 23-Feb-2016
description
transcript
Kinect and brave new applications – Kinect SDK v.1.7 UPDATE
Igor Antonacci http://blog.technothink.net/
Twitter: @bitbreakerIgor.antonacci@dotdotnet.org
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
User Group .NET Emilia-Romagna
NUI – Natural User Interfaces Kinect Overview Kinect SDK Demo
Agenda
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
NUI – Natural User Interfaces
Interfacce Uomo-Macchine: Storia – CLI
Interfacce Uomo-Macchine: Storia – GUI
TouchTouch
Object Recognition
Gestures
Voice
Augmented Reality
Touchless
Com’è fatta / Sensori e Componenti Architettura HW Come funziona
Kinect – Overview
Camera VGA 640x480 (CMOS). Infrared Camera 640x840 (CMOS). Proiettore Infrarossi Tilt Motorizzato. Batteria di 4 Microfoni
Kinect – dall’esterno
RGB CAMERA
MULTI-ARRAY MIC MOTORIZED TILT
3D DEPTH SENSORS
Kinect – Come funziona – 1
Kinect – Come funziona – 2
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 & Toolkit
Kinect SDK – Layer tra HW e Software Flusso di dati “grezzo” e “raffinato”
Kinect: Architettura SW
Kinect: Skeletal Tracking
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
Kinect: Skeletal Tracking
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_SkeletonFrameReady);
Kinect SDK: Primi passi
Rappresenta il singolo frame con riconoscimento scheletrico
Kinect SDK: Skeletal Frame
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);
Kinect SDK: Video Frame
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();
Kinect SDK: Video Frame – 2
“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);
Kinect SDK: Depth Frame – 1
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);
Kinect SDK: Depth Frame – 2
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
What’s new – Kinect SDK 1.7
Layer “on-top” della NUI Gestione di gesture “comuni” in Applicazioni / Giochi
Kinect Interaction – Architettura
Native
Managed
Nati
ve WPF
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)
Kinect Interaction – Toolkit
Kinect: DEMO – Let’s play…with code!
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
Kinect SDK 1.7 – Fusion
Utilizzo / Integrazione con OpenCV – Computer Vision Gestione del flusso “depth” con Matlab
Kinect SDK 1.7 – Matlab / OpenCV
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
Kinect: Audio API
Visualizzazioni scientifiche Healthcare Games
Possibili sviluppi commerciali (€€€)
Kinect SDKhttp://www.microsoft.com/en-us/kinectforwindows/
Coding4Fun – Kinecthttp://channel9.msdn.com/coding4fun/kinect
Coding4Fun – Kinect for Windows SDK Quickstarthttp://channel9.msdn.com/Series/KinectSDKQuickstarts
How does it works – Kinecthttp://gilotopia.blogspot.com/2010/11/how-does-kinect-really-work.html
Risorse Online
Q&A