2. 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
3. KINECT cosa fa
Il 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)
4. 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
6. 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
7. 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
8. ...e ora?
Le applicazioni possibili del Kinect vanno da: “finalmente una
spada laser come Luke!” a scanner 3D a basso costo...
3D scan
augmented
reality
multi-touch
interface
10. KINECT SDK: requisiti
prima release: Kinect for Windows SDK Beta (2011)
compatibile con lo stesso HW dell'Xbox360
non 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:
Windows7
Microsoft Visual Studio 2010 Express (i.e. C#,C++)
.NET framework 4.0
11. KINECT SDK: come si usa
Kinect 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#
13. KINECT SDK: come si usa
Depth 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#
14. KINECT SDK: come si usa
Skeleton 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#
15. KINECT SDK: cosa non fa
KINECT 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 frame
non 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.
16. Applicativi: multitouch
Un 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”
source
tracked image
image
Screenshot
CommunityCoreVision
17. Applicativi: Tangible User Interfaces
La “terza dimensione” del Kinect (depth frame) permette di
andare oltre al multitouch: sembra lo strumento naturale
per lo sviluppo di Tangible User Interfaces
Lo 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”
18. Applicativi: grafica interattiva
Raccolti ed elaborati tutti i dati,
cosa visualizzo sullo schermo?
Applicativi “standard”:
● Visual Studio: WPF
Piattaforme per creative coding:
● Open Frameworks
● Processing
● Cinder
19. Riferimenti
KINECT for Windows SDK:
http://www.microsoft.com/en-us/kinectforwindows/
NUI group: wiki.nuigroup.com/Main_Page
TUIO 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/