Present kinect4 windows

19
Paolo Chiantore, WIICOM (I3P) TreataBit, 22 maggio 2012

description

 

Transcript of Present kinect4 windows

Page 1: Present kinect4 windows

Paolo Chiantore, WIICOM (I3P)TreataBit, 22 maggio 2012

Page 2: Present kinect4 windows

KINECT cos'èIl Kinect è una periferica nata per la console Microsoft Xbox360.

● proiettore di raggi infrarossi● rgb camera● sensore di raggi infrarossi● array di microfoni

E' nato per permettere l'interazione con i videogiochi senza l'utilizzo di controller (= fare il c**o alla Nintendo WII)

X X X

Page 3: Present kinect4 windows

KINECT cosa faIl Kinect è un occhio e un orecchio elettronico:

● riconosce la silhouette di una persona (player)● riconosce lo scheletro di una persona (20 joints)● riconosce i comandi vocali

In tre parole: Natural User Interface (NUI)

Page 4: Present kinect4 windows

KINECT come funziona● camera RGB: filma la scena di fronte al Kinect● proiettore + sensore a infrarossi: fanno una scansione

3D della scena di fronte al Kinect

depth frame image frame

Page 5: Present kinect4 windows

KINECT il depthframeproiettore + sensore a infrarossi = scansione 3D dell'ambiente

IR dots

IR projector

IR sensor

Page 6: Present kinect4 windows

KINECT come funziona● i dati dell'image frame e del depth frame sono passati all'

Xbox tramite USB● Il driver del Kinect sull'Xbox tramite degli algoritmi è in grado

di elaborare i dati per riconoscere il corpo umano

skeleton tracking player tracking

Page 7: Present kinect4 windows

KINECT diffusione● dal suo lancio nel novembre 2010 a dicembre 2011 sono

stati venduti 18 milioni di Kinect● l'utilizzo del connettore USB per la trasmissione dei dati

dei sensori e il basso costo hanno stimolato la fantasia degli hacker che si sono cimentati nel reverse engineering per utilizzare il Kinect su PC (esempio: progetto “Open Kinect”)

● nel giugno 2011 la Microsoft ha deciso di rilasciare gratuitamente i driver per l'utilizzo del Kinect su PC con Windows7: KINECT for Windows SDK

Page 8: Present kinect4 windows

...e ora?Le applicazioni possibili del Kinect vanno da: “finalmente una spada laser come Luke!” a scanner 3D a basso costo...

augmentedreality

3D scan

multi-touchinterface

Page 9: Present kinect4 windows

...fino a, ovviamente:

Page 10: Present kinect4 windows

KINECT SDK: requisitiprima release: Kinect for Windows SDK Beta (2011)

compatibile con lo stesso HW dell'Xbox360non utilizzabile a fini commerciali

ultima release: Kinect for Windows SDK ver1 (2012)richiede HW dedicato (KINECT for Windows)miglioramenti (range sensore, skeletal tracking, riconoscimento audio, facilità installazione)utilizzabile a fini commerciali

Requisiti software:Windows7Microsoft Visual Studio 2010 Express (i.e. C#,C++) .NET framework 4.0

Page 11: Present kinect4 windows

KINECT SDK: come si usaKinect SDK (beta) si basa su due librerie: // Kinect libraries using Microsoft.Research.Kinect.Nui; // Natural User Interface using Microsoft.Research.Kinect.Audio; // Audio

La NUI dà acesso a tre informazioni fondamentali:1) nui.VideoFrameReady += new EventHandler<ImageFrameReadyEventArgs>(nui_VideoFrameReady);

2) nui.DepthFrameReady += new EventHandler<ImageFrameReadyEventArgs>(nui_DepthFrameReady);

3) nui.SkeletonFrameReady += new EventHandler<SkeletonFrameReadyEventArgs>(nui_SkeletonFrameReady);

estratti codice: Visual C#

Page 12: Present kinect4 windows

KINECT SDK: come si usaImage frame:void nui_VideoFrameReady(object sender, ImageFrameReadyEventArgs e){ PlanarImage image = e.ImageFrame.Image; image1.Source = BitmapSource.Create(image.Width, image.Height, … PixelFormats.Bgr32, … , image.Width * image.BytesPerPixel);}

estratti codice: Visual C#

Page 13: Present kinect4 windows

KINECT SDK: come si usaDepth and player frame:void nui_DepthFrameReady(object sender, ImageFrameReadyEventArgs e){ byte[] ColoredBytes = GenerateColoredBytes(e.ImageFrame); PlanarImage image = e.ImageFrame.Image; image2.Source = BitmapSource.Create(image.Width, image.Height, … PixelFormats.Bgr32, … , image.Width * PixelFormats.Bgr32.BitsPerPixel / 8);}

estratti codice: Visual C#

Page 14: Present kinect4 windows

KINECT SDK: come si usaSkeleton frame:void nui_SkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e){ SkeletonFrame allSkeletons = e.SkeletonFrame;

//get the first tracked skeleton SkeletonData skeleton = (from s in allSkeletons.Skeletons where s.TrackingState == SkeletonTrackingState.Tracked select s).FirstOrDefault();

// scale to screen pixel (code4fun extension) Joint HandRight = skeleton.Joints[JointID.HandRight].ScaleTo(640, 480);

}

estratti codice: Visual C#

Page 15: Present kinect4 windows

KINECT SDK: cosa non faKINECT SDK fornisce dati grezzi (ammesso che si possano definire tali il riconoscimento dello scheletro e dei player).

Quindi:non riconosce dettagli del corpo oltre i 20 joints dello skeleton framenon ricostruisce superfici 3D (il depth frame è una nuvola di punti nello spazio con coordinate x,y,z + indice di identificazione di un player)non riconosce i gesti (movimenti delle mani, etc.)

Tutte queste sono cose delegate al SW applicativo cioè alla bravura e fantasia degli sviluppatori.

Page 16: Present kinect4 windows

Applicativi: multitouchUn possibile utilizzo del KINECT è lo sviluppo di applicativi multitouch, con e senza “touch” !In questo caso bisogna sviluppare un tracker:“Tracker - program which takes images from a camera, puts them through several filters, and finally reports the position, size, and relative movement of blobs over some protocol”

ScreenshotCommunityCoreVision

source image tracked image

Page 17: Present kinect4 windows

Applicativi: Tangible User InterfacesLa “terza dimensione” del Kinect (depth frame) permette di andare oltre al multitouch: sembra lo strumento naturale per lo sviluppo di Tangible User InterfacesLo standard di fatto sia per applicazioni multitouch che TUI è il protocollo TUIO:“TUIO - A protocol used for communicating the position, size, and relative velocity of blobs”

Page 18: Present kinect4 windows

Applicativi: grafica interattivaRaccolti ed elaborati tutti i dati,cosa visualizzo sullo schermo?

Applicativi “standard”:● Visual Studio: WPF

Piattaforme per creative coding:● Open Frameworks● Processing● Cinder

Page 19: Present kinect4 windows

Riferimenti

KINECT for Windows SDK: http://www.microsoft.com/en-us/kinectforwindows/

NUI group: wiki.nuigroup.com/Main_PageTUIO protocol: http://www.tuio.org/Community Core Vision: http://ccv.nuigroup.com/

Cinder: http://libcinder.org/Processing: http://processing.org/Open Frameworks: http://www.openframeworks.cc/