kinect_handout

2
Kinect mit SimpleOpenNI & Processing Installation Website: http://code.google.com/p/simple-openni/ Installations Anleitung: http://code.google.com/p/simple-openni/wiki/Installation Mac OS: Abschnitt “Install OpenNI the short way” In der .zip Datei für Processing sind viele Beispiele enthalten (Hand Tracking, Skeleton Tracking und vieles mehr). Hand Tracking Ausgangsbasis für eigene Experimente kann das SimpleOpenNI_NITE_Hands Beispiel sein. Auf diesem Beispiel beruht auch das Beispiel zum Wischen der Musik. Für das eigentliche Tracken der Hand wird eine Klasse verwendet (leitet von XnVPointControl ab) - hier gibt es weitere Methoden: OnPointCreate(XnVHandPointContext Ctx) - Wird aufgerufen wenn eine Hand getrackt wird. Im Kontext (Ctx) bekommt man eine Id (Ctx.getNID()) - diese bleibt für eine Erfassung der Hand konstant. OnPointUpdate(XnVHandPointContext Ctx) - Wird kontinuierlich aufgerufen und gibt aktualisierte Daten für die Hand (Ctx.getPtPosition()). OnPointDestroy(XnVHandPointContext Ctx) - Wird aufgerufen wenn eine Hand nicht mehr getrackt wird. Achtung: Die Position die getPtPosition() zurück gibt ist in echten 3D Koordinaten - oft braucht man allerdings eine 2D Bildschirmkoordinate um den Trackingpunkt darzustellen oder sonstige Dinge in Processing zu zeichnen. Diese Bildschirmkoordinaten bekommt mithilfe des Befehls: context.convertRealWorldToProjective(Punkt aus einer der Funktionen, Speicher für gewandelten Punkt); Mit diesen Daten kann man nun die unterschiedlichsten Dinge anstellen - Bilder ausmalen, Gesten erkennen etc. Für die Gestenerkennung muss man eine mathematische Beschreibung der Geste finden. Generell geht man zum Erkennen einer Geste von den letzten X Punkten aus die man getrackt hat. Dies können eine fixe Anzahl sein oder in einem Zeitrahmen liegen. (Die Wisch Erkennung verwendet vor allem den Zeitrahmen als Limit welche Punkte beachtet werden) Für das Musik Wischen habe ich gesagt das ich eine horizontale Handbewegung habe = eine mindest Bewegung in X und wenig Abweichung in Y. Aufwändigere Gesten (Kreis malen, ..) sind möglich aber um einiges komplizierter.

description

http://ifdblog.org/toolbox/wp-content/uploads/2011/05/kinect_handout.pdf

Transcript of kinect_handout

Kinect mit SimpleOpenNI & ProcessingInstallation

Website: http://code.google.com/p/simple-openni/Installations Anleitung: http://code.google.com/p/simple-openni/wiki/Installation! Mac OS: Abschnitt “Install OpenNI the short way”

In der .zip Datei für Processing sind viele Beispiele enthalten (Hand Tracking, Skeleton Tracking und vieles mehr).

Hand Tracking

Ausgangsbasis für eigene Experimente kann das SimpleOpenNI_NITE_Hands Beispiel sein. Auf diesem Beispiel beruht auch das Beispiel zum Wischen der Musik.

Für das eigentliche Tracken der Hand wird eine Klasse verwendet (leitet von XnVPointControl ab) - hier gibt es weitere Methoden:

! OnPointCreate(XnVHandPointContext Ctx) - Wird aufgerufen wenn eine Hand ! getrackt wird. Im Kontext (Ctx) bekommt man eine Id (Ctx.getNID()) - diese bleibt ! für eine Erfassung der Hand konstant.

! OnPointUpdate(XnVHandPointContext Ctx) - Wird kontinuierlich aufgerufen und ! gibt aktualisierte Daten für die Hand (Ctx.getPtPosition()).

! OnPointDestroy(XnVHandPointContext Ctx) - Wird aufgerufen wenn eine Hand ! nicht mehr getrackt wird.

! Achtung: Die Position die getPtPosition() zurück gibt ist in echten 3D Koordinaten - ! oft braucht man allerdings eine 2D Bildschirmkoordinate um den Trackingpunkt ! darzustellen oder sonstige Dinge in Processing zu zeichnen. Diese ! Bildschirmkoordinaten bekommt mithilfe des Befehls:

! context.convertRealWorldToProjective(Punkt aus einer der Funktionen, Speicher für gewandelten Punkt);

Mit diesen Daten kann man nun die unterschiedlichsten Dinge anstellen - Bilder ausmalen, Gesten erkennen etc. Für die Gestenerkennung muss man eine mathematische Beschreibung der Geste finden.

Generell geht man zum Erkennen einer Geste von den letzten X Punkten aus die man getrackt hat. Dies können eine fixe Anzahl sein oder in einem Zeitrahmen liegen. (Die Wisch Erkennung verwendet vor allem den Zeitrahmen als Limit welche Punkte beachtet werden)

Für das Musik Wischen habe ich gesagt das ich eine horizontale Handbewegung habe = eine mindest Bewegung in X und wenig Abweichung in Y.

Aufwändigere Gesten (Kreis malen, ..) sind möglich aber um einiges komplizierter.