370 likes | 481 Views
Kinect and brave new applications – Kinect SDK v.1.7 UPDATE. Igor Antonacci http://blog.technothink.net/ Twitter : @bitbreaker Igor.antonacci@dotdotnet.org. User Group .NET Emilia-Romagna.
E N D
Kinect and brave new applications – Kinect SDK v.1.7 UPDATE Igor Antonacci http://blog.technothink.net/Twitter: @bitbreaker Igor.antonacci@dotdotnet.org
User Group .NET Emilia-Romagna • 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
Agenda • NUI – Natural User Interfaces • Kinect Overview • Kinect SDK • Demo
NUI – Natural User Interfaces • HCI – Human Computer Interaction è un argomento “HOT” in questomomento; sononatinuovi tipi di interazioniUomo-Macchinacheinteressanoilgrandepubblico E glisviluppatori • Sono state vendutepiùchitarrevirtualicherealinel 2009
Kinect – Overview • Com’èfatta / Sensori e Componenti • Architettura HW • Come funziona
Kinect – dall’esterno 3D DEPTH SENSORS RGB CAMERA • Camera VGA 640x480 (CMOS). • Infrared Camera 640x840 (CMOS). • ProiettoreInfrarossi • TiltMotorizzato. • Batteria di 4 Microfoni MOTORIZED TILT MULTI-ARRAY MIC
Kinect: SDK & Toolkit • Download:http://www.microsoft.com/en-us/kinectforwindows/ • L’SDK Include • Driver per l’utilizzosu PC (Windows 8, Windows 7, ) • API per l’accessoaisensori, documentazione • Toolkit • Esempi con codicesorgente (in C# , C++ … ) • Face Tracking SDK • Miscellanea
Kinect: Architettura SW • Kinect SDK – Layer tra HW e Software • Flusso di dati “grezzo” e “raffinato”
Kinect: Skeletal Tracking • Massimo due “player” riconosciuticontemporaneamente • “Joints” <x, y, z> per ognigiocatore / utente • Ogni “Joint” ha deglistati • Tracked – Il riconoscimento è “accurato” • Not Tracked – Non si è giunti al riconoscimento di quel joint • Inferred – L’accuratezza è minima, l’elemento è coperto e non facilmentericonoscibile interpolato
Kinect SDK: Primipassi • NuovoProgetto WPF o WinForms • Referenziare la DLL: Microsoft.Kinect • Scriverecodice • nui = Runtime.Kinects[0]; • nui.Initialize(RuntimeOptions.UseSkeletalTracking); • nui.SkeletonFrameReady += new EventHandler<SkeletonFrameReadyEventArgs>(nui_SkeletonFrameReady);
Kinect SDK: Skeletal Frame • Rappresentailsingolo frame con riconoscimentoscheletrico
Kinect SDK: Video 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 – 2 • Ogni frame dellascena è rappresentato da un oggetto di tipoPlanarImage • I pixel dellascenasonorappresentati, ognuno, con 4 byte • NONutilizzabile come Source di una Image (nè in WPF, nè in WinForms) • Coding4Fun.Kinect.Wpf – ToBitmapSource() extension method • image1.Source = e.ImageFrame.ToBitmapSource();
Kinect SDK: Depth Frame – 1 • “Fotogramma” di profondità • Ognicoppia di byte rappresenta la distanza per il pixel corrispondente (per ognigiocatorenellascena) • 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 – 2 • Ogni pixel dellascena è rappresentato da DUE byte • I due byte possonocontenere due informazioniprincipali • ID del Player (in caso di piùutentisullascena) • La distanzadell’oggetto (in mm) • L’ID dell’utente/giocatore è presente se: • nui.Initialize(RuntimeOptions.UseDepthAndPlayerIndex); • … assentenelcaso in cui • nui.Initialize(RuntimeOptions.UseDepth);
What’s new – Kinect SDK 1.7 • Nuovaversionedell’SDKrilasciata 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’interazioneattraversoKinect Interaction • Hand grip gesture • Push to Press control
Kinect Interaction – Architettura • Layer “on-top” della NUI • Gestione di gesture “comuni” in Applicazioni / Giochi WPF Native Managed Native
Kinect Interaction – Toolkit • Kinect Toolkit – Open Source (Codeplex) • Controlli “aggiuntivi” – “on top” Kinect Interaction Libraries • Astraggonodallagestionedelle “gesture” • Eventi “Click” come in un controllo WPF / WinForm • Nessunagestionedeimovimenti e dei “sensori” • What’s NEW (principaliControlli) • 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 (riducecodice di inizializzazione)
Kinect SDK 1.7 – Fusion • Scansione TRIDIMENSIONALE dellascena • Identificazionedeglioggettinellascena…3D . • Utilizzo “real-time” (Realtàaumentata) SOLO con GPU Desktop-level • GPU Mobile Static scene render DEMO
Kinect SDK 1.7 – Matlab / OpenCV • Utilizzo / Integrazione con OpenCV – Computer Vision • Gestione del flusso “depth” con Matlab
Kinect: Audio API • Gestione “managed” dell’Audio • Start – Capture – Stop dell’audio con riconoscimentodelladirezione • Kinect Audio Demo tragliesempidell’SDK • Riconoscimentovocale se utilizzatoinsiemealle Speech API
Possibilisviluppicommerciali (€€€) • Visualizzazioniscientifiche • Healthcare • Games
Risorse Online • 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