Your SlideShare is downloading. ×
  • Like
Kinect V2: NUI for dummies!!
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Kinect V2: NUI for dummies!!

  • 1,170 views
Published

Sessione tenuta a Codemotion Roma 2014 l'11 Aprile 2014. …

Sessione tenuta a Codemotion Roma 2014 l'11 Aprile 2014.
La seconda versione del Kinect, nonostante sia ancora nella fase di beta, porta con se grandi novità sia dal punto di vista hardware che delle funzionalità. Una sessione per capire come è cambiato e cosa mette a disposizione per la realizzazione di interfacce NUI di nuova generazione.

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,170
On SlideShare
0
From Embeds
0
Number of Embeds
21

Actions

Shares
Downloads
15
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. ROME 11-12 april 2014ROME 11-12 april 2014 Kinect V2: NUI for dummies!! massimo.bonanni@tiscali.it @massimobonanni http://codetailor.blogspot.com Massimo Bonanni
  • 2. ROME 11-12 april 2014 - Speaker’s name Agenda • Prerequisiti • Hardware • Architettura • Kinect Source
  • 3. ROME 11-12 april 2014 Prerequisiti • Sistemi Operativi Supportati – Windows 8, Windows 8.1 • Configurazione Hardware – Processore 64 bit (x64) i7 2.5Ghz (o superiore) – Memoria 4 GB (o più) – Built-in USB 3.0 host controller (chipset Intel o Renesas); – Scheda grafica DirectX11: ATI Radeon (HD 5400 series, HD 6570, HD 7800), NVidia Quadro (600, K1000M), NVidia GeForce (GT 640, GTX 660), Intel HD 4000 – Sensore Kinect v2 (con alimentatore e USB hub) • Software Requirements – Visual Studio 2012 (2013)
  • 4. ROME 11-12 april 2014 Kinect for Windows v2 sensor Hardware Kinect for Windows v2 USB hub Kinect for Windows v2 power supply
  • 5. ROME 11-12 april 2014 Hardware • Color camera con risoluzione 1920x1080 pixel, 30 fps • Infrared camera con risoluzione 512x424 pixel, 30 fps • Range di profondità da 0.5 a 4.5 m • Utilizzo di camera ad infrarossi e a colori contemporaneamente • No motore per “brandeggiamento” verticale
  • 6. ROME 11-12 april 2014 Kinect V1 vs Kinect V2 Feature Kinect for Windows 1 Kinect for Windows 2 Color Camera 640 x 480 @ 30 fps 1920 x 1080 @ 30 fps Depth Camera 320 x 240 512 x 424 Max Depth Distance ~4.5 M ~4.5 M Min Depth Distance 40 cm in near mode 50 cm Horizontal Field of View 57 degrees 70 degrees Vertical Field of View 43 degrees 60 degrees Tilt Motor yes no Skeleton Joints Defined 20 joints 25 joints Full Skeletons Tracked 2 6 USB Standard 2.0 3.0 Supported OS Win 7, Win 8 Win 8-8.1 (WSA) Price $299 TBD
  • 7. ROME 11-12 april 2014 Architettura Kinect Sensor Kinect Drivers Kinect Runtime Native API .NET API WinRT API Native Apps .NET Apps WSA Maggior parte delle elaborazioni anche sfruttando la GPU Applicazioni COM/C++ Applicazioni Desktop Windows Store Apps
  • 8. ROME 11-12 april 2014 Architettura • L’architettura prevede delle sorgenti (source) e dei reader • Ogni stream fornito dal device è una sorgente dalla quale possiamo ricavare uno o più reader • Ogni reader fornisce degli eventi per recuperare dei reference ai singoli frame provenienti dal device • Dal singolo frame si possono recuperare i dati relativi al tipo di sorgente (ad esempio lo scheletro del giocatore) Sensor Source Reader Frame Ref Frame
  • 9. ROME 11-12 april 2014 Architettura: V1 vs V2 Stream ReaderSource Una sola applicazione alla volta Più applicazioni contemporanee
  • 10. ROME 11-12 april 2014 Sensor • Utilizzo del sensore – Recuperare un’istanza di KinectSensor – Aprire il sensore – Usare il sensore – Chiudere il sensore • In caso di sconnessione del device – L’istanza di KinectSensor rimane valida – Non vengono inviati più frame – La proprietà IsAvailable ci dice se il sensore è attaccato o meno. • Possono essere gestiti più sensori Sensor = KinectSensor.Default Sensor.Open() ' ' ' Sensor.Close() Dim kinectList = KinectSensor.KinectSensors _ .Where(Function(k) k.IsAvailable = True) Sensor Source Reader Frame Ref Frame
  • 11. ROME 11-12 april 2014 Source • Espone i metadati della sorgente e permette di accedere al reader • Il sensore espone una sorgente per ogni tipo di funzionalità Sensor Source Reader Frame Ref Frame
  • 12. ROME 11-12 april 2014 Reader • Permette di accedere ai frame – Polling – Eventi • Si possono avere più reader per una singola sorgente • Un reader può essere messo in pausa Sensor Source Reader Frame Ref Frame Dim infraredReader As InfraredFrameReader = Sensor.InfraredFrameSource.OpenReader() AddHandler infraredReader.FrameArrived, AddressOf InfraredFrameArrivedHandler ' ' ' infraredReader.Dispose()
  • 13. ROME 11-12 april 2014 Frame reference • Permette di accedere al frame corrente attraverso il metodo AcquireFrame() • Nell’intervallo di tempo in cui l’app richiama AcquireFrame() il frame stesso potrebbe essere scaduto • RelativeTime permette di mettere in correlazione frame differenti Sensor Source Reader Frame Ref Frame Using frame As ColorFrame = e.FrameReference.AcquireFrame() If frame IsNot Nothing Then ' ' ' End If End Using
  • 14. ROME 11-12 april 2014 Frame • Permette l’accesso ai dati effettivi del frame – Eseguire una copia locale dei dati – Accedere al buffer raw direttamente • Contiene i metadati del frame (ad esempio, per il colore formato, altezza, larghezza) • Va gestito rapidamente e rilasciato (se un frame non viene rilasciato si potrebbe non ricevere più alcun frame) Sensor Source Reader Frame Ref Frame
  • 15. ROME 11-12 april 2014 Demo
  • 16. ROME 11-12 april 2014 Funzionalità “di serie” • Color source • Depth source • Infrared source • Body Index source • Body source (scheletro, hand tracking, espressioni…) • Audio source
  • 17. ROME 11-12 april 2014 Infrared source • 512 x 424 pixel @ 30 fps • Due sorgenti: – Infrared: singolo frame infrarosso – LongExposureInfrared: sovrapposizione di 3 frame (miglior rapporto segnale/rumore ma immagini meno precise e con effetto sfocato) • Stesso sensore fisico della sorgente di profondità • Ogni pixel è formato da 2 byte (16-bit) e rappresenta l’intensità della riflessione infrarossa. • L’SDK recupera solo la riflessione della luce infrarossa proiettata dal device
  • 18. ROME 11-12 april 2014 Color source • 1920 x 1080 pixel @ 30 fps (15 fps in scarsa luminosità) • Formati multipli (RGBA, BGRA, YUY2, …), i frame arrivano dal device in formato raw (in questo momento YUY2) • I dati del frame possono: – essere utilizzati nel formato raw – convertiti in un altro formato (con un costo computativo leggermente maggiore) • Il buffer è un array di bytes. Il numero di byte per pixel dipende dal formato raw dell’imagine (in questo momento 4 byte per pixel).
  • 19. ROME 11-12 april 2014 Depth source • 512 x 424 pixel @ 30 fps • Ogni pixel del frame è composto da 2 byte (16-bit) e contiene la distanza, in mm, dal piano focale del device • Non c’è riferimento all’indice del player presente nel punto corrispondente • Distanze di lavoro: – DepthMinReliableDistance = 0,5 m – DepthMaxReliableDistance = 4,5 m
  • 20. ROME 11-12 april 2014 • 512 x 424 @ 30 fps • Ogni pixel del frame è composto da 1 byte: -1: nessun player in corrispondenza del punto 0 - 5: indice del player (tracciato con la sorgente Body) Body Index source
  • 21. ROME 11-12 april 2014 Body source • Ogni frame restituisce un array di oggetti di tipo Body • Ogni body espone: – 25 joint – Hand tracking (mano aperta, chiusa, “lasso”) – Activities (occhi chiusi, bocca aperta, ..) – Appearance (ad esempio indossare occhiali) – Espressioni del viso (neutral, sorridente) – Orientamento delle ossa del corpo – …. • Le API del body source sono ottimizzate per il consumo di memoria ed il riciclo degli oggetti
  • 22. ROME 11-12 april 2014 NUI Body - Joint • La classe Body : – Joints: tracciamento e posizione nello spazio del punto corrispondente; – Orientation: orientamento nello spazio dell’articolazione. • Un joint può essere: – Not Tracked – Tracked – Inferred • Migliorata affidabilità e accuratezza • Tracciati completamente fino a 6 player
  • 23. ROME 11-12 april 2014 • La classe Body espone lo stato delle mani attraverso le proprietà HandLeftState e HandRightState: – Unknown – Not Tracked – Open – Closed – Lasso • “Confidence” dello stato: – High – Low • Il tracking delle mani è attualmente limitato a 2 player ma è possibile decidere quali player tracciare. Il numero di player tracciati verrà aumentato in futuro. Body – Hand Tracking
  • 24. ROME 11-12 april 2014 Body – Activity, Appearance, Expression • Activity: – EyeLeftClosed – EyeRightClosed – MouthOpen – MouthMoved – LookingAway • Appearance – WearingGlasses • Expression: – Happy – Neutral • Tre dictionary – La chiave è l’ activity, l’appearance o l’expression da verificare (ad esempio EyeLeftClosed o WearingGlasses); – Il valore indica la probabilità che l’activity, l’appearance o l’expression sia in atto (Unknown, MayBe, Yes, No) • In futuro verranno aggiunte altre activity, appearance e expression.
  • 25. ROME 11-12 april 2014 Demo
  • 26. ROME 11-12 april 2014 Multi Frame • MultiSourceFrameReader è, di fatto, un reader che può agire su più sorgenti contemporaneamente sincronizzando i frame; • Viene generato un evento quando i frame delle sorgenti collegati sono disponibili MultiReader = Sensor.OpenMultiSourceFrameReader(FrameSourceTypes.Color Or FrameSourceTypes.BodyIndex Or FrameSourceTypes.Body)
  • 27. ROME 11-12 april 2014 Multi Frame • MultiSourceFrame contiene il riferimento ad ogni frame delle sorgenti • Il frame rate è il minore tra i frame rate delle sorgenti selezionate frame = frameReference.AcquireFrame() If frame IsNot Nothing Then Using colorFrame = frame.ColorFrameReference.AcquireFrame(), bodyFrame = frame.BodyFrameReference.AcquireFrame(), bodyIndexFrame = frame.BodyIndexFrameReference.AcquireFrame() ' ' ' End Using End If
  • 28. ROME 11-12 april 2014 Demo
  • 29. ROME 11-12 april 2014 Risorse • Kinect for Windows Dev Center http://www.microsoft.com/en-us/kinectforwindowsdev/default.aspx • Kinect for Windows Web Site http://www.microsoft.com/en-us/kinectforwindows/ • Kinect for Windows Blog http://blogs.msdn.com/b/kinectforwindows/ • Kinect V2 on Microsoft Curah! http://curah.microsoft.com/55200/kinect-v2-beta