Die Blogs der ATE-Experten

Gestenerkennung für Messestand

25. Januar 2012 von Jens Peter Kleinau

Für einen Messestand erstellen wir eine Gestenerkennung. Gestenerkennung ist eigentlich kein Hexenwerk und bei der Verwendung der entsprechenden Verfahren auch mit akzeptablem Umfang umzusetzen. Einige Verfahren basieren auf der Messung von Bewegungen.  Diese Bewegungen im 3 Dimensionalen Raum kann ich mit Hilfe von Geräten wie der Microsoft Kinect 360 oder dem Asus Wavi Xtion messen. Da Gesten in die Tiefe eher für den Sport denn auf einem Messestand interessant sind, kann ich mich auf zwei Dimensionen reduzieren. Nun müssen also nur die vertikalen und horziontalen Veränderungen gemessen werden.

Die meisten Verfahren beruhen auf der Messung von Beschleunigung. Hält mein Arm still, oder bewegt sich mein Arm mit gleichbleibender Geschwindigkeit beim Durchqueren eines Raums, so entsteht bei einer linearem Messung über die Zeit eine gleichförmige Linie. Wird er beschleunigt oder gebremst, so entstehen Ausschläge, Höchstwerte, auf der Achse. Die Anzahl der Höchstwerte sind Kennzeichen dieser Bewegung. Die dabei entstehenden Kurven lassen sich nun mit bekannten, vom System erlernten Gesten vergleichen. Hierbei sind verschiedene Verfahren möglich. Es wird in den einfacherenVerfahren (LTW,DTW) mit Hilfe der quadratischen Euklidischen Distanz eine Auswahl getroffen, welche bekannte Geste nun der vorgeführten ähnelt. Komplexer ist das Hidden Markov Model (HMM) aus der Spracherkennung, bei dem ein Wahrscheinlichkeitsmodell die trainierten Gesten verarbeitet. Während die klassischen Verfahren auf eine Erkennung von 40-70% der Gesten kommen, ist man beim HMM schon teilweise bei 90% der Wiedererkennung. Sehr erfolgsversprechend sind Methoden mit Hierarchischen Klassifikatoren, die aktuell eine Erkennung von 70-100% der Gesten schaffen (je nach Studie).

Insgesamt also ein erfolgsversprechendes Unternehmen. Jedoch nur bis zu dem Moment, wo ein Dutzend verschiedene Personen vor dem Computer stehen und mit den Händen winken. Und auch der Aufwand fällt ins Gewicht, denn wie jeder Messe-Effekt soll er viel bringen und wenig kosten. Das Trainieren des Computers mit Gesten fällt zum großen Teil weg. Da die Personen sehr unterschiedlich winken, ist es kaum möglich dem Computer jede personifizierte Geste anzutrainieren. Auch muss die Erkennung so robust sein, dass sie auch funktioniert wenn ein paar Personen gleichzeitig vor dem PC stehen und gestikulieren.  Eine Implementierung eines komplexen Verfahrens ist vom Aufwand ausgeschlossen und die vorhandenen Umsetzungen sind nur bedingt verwendbar, teilweise in der Erkennung eher schwach oder teuer. Die Anforderungen lauten also:

  1. geringer Aufwand,
  2. nur Gesten erkennen, wenn man die Erkennung durch eine Geste gestartet hat,
  3. nur die Person nehmen, die in der geringsten Entfernung zu dem Gerät steht,
  4. kein Training des Geräts notwendig.

Was wir von der XBOX 360 kennen, ist die Übertragung von Skelettdaten auf Bildschirmkoordinaten. Wir können vor dem Gerät stehen und virtuelle Knöpfe drücken. Dies ist ein leicht zu lernender Vorgang, in dem beispiesweie Punkte für die Hände verwendet werden, die in die Bildschirmauflösung übertragen werden. Und dieses Verfahren wende ich auch an. Zu meinem Glück liefert mir die XBOX Api die Skelettdaten und erkennt Personen und liefert mir auch die Tiefendaten. Für die Gestenerkennung akzeptiert mein Programm jeweils die Person, die am nächsten steht.

Ich erstelle eine Matrix aus Feldern über den Bildschirm, denen ich Koordinaten bestehend aus Buchstaben gebe. Diese werden durchlaufen, wenn eine Hand sich über den Bildschirm bewegt. Damit erhalte ich eine andauernde Zeichenfolge der Handbewegungen. Sobald die Hand still hält, erhalte ich eine Reihe von gleich bleibenden Zeichentupeln. Dieses „Stillhalten“ ist für den Messestand die ideale Geste für den Start der Gestenerkennung. Durch das Festlegen der Anzahl der notwendigen Wiederholungen der Zeichentupel kann ich sehr einfach feintunen, wann eine Gestenerkennung gestartet wird. Die Geste selber ist relativ unabhängig von der Zeit. Sie muss zwar in einem Zeitraum einen Weg zurücklegen, damit die Gestenerkennung auch neu gestartet werden kann, doch dieser ist großzügig bemessen. Bei der Messung werden nur die Veränderungen gesammelt. Verbleibt also ein langsamer Winker lange in einem Feld der Matrix, so wird dies Feld nicht als Zeichentupel wiederholt, sondern bleibt einzig. Bei Veränderungen wird das Zeichentupel des neuen Feldes an das des anderen angehängt. Somit entsteht beim Durchlaufen mehrer Felder ein „Wort“. Dieses Wort wird in dem Dictionary der Gesten gesucht und schnell gefunden. Ist eines gefunden worden, so ist für diese Hand die Geste erkannt und es wird eine geringe Zeitspanne gewartet, ob die zweite Hand auch eine erkennbare Geste vollbringt.

Die Implementierung dieses Verfahrens dauerte genau einen Tag. Das Feintunen auf Messesimulation hin noch einen. Das Hinzufügen der Powerpoint Steuerung einen halben Tag, genauso wie die Aufhübschung des Programms. Der Aufwand war minimal. Diese Gestenerkennung funktioniert mit einer sehr hohen Rate, denn sie reduziert sich auf sehr wenige Gesten. Sie bedingt allerdings, dass die Winkenden trainieren. Dank der Punktdarstellung funktioniert das aber sehr einfach.

Natürlich funktiniert das Verfahren nicht bei komplexen Gesten. Doch das war niemals das Ziel. Das Ziel war bei minimalen Aufwand die Anforderungen umzusetzen. Das wurde erreicht. Der weitere Nutzen dieser Methode ist das Ansteuern von Inhalten auf den Folien als interaktiver Kiosk. Der dafür geschätzte Aufwand dürfte nicht viel größer als ein-zwei Tage sein.

Share it:

Weitere Einträge zu den Themen:

Einen Kommentar abgeben (Sie müssen dazu registriert und angemeldet sein!)

Bitte beachte: Die Kommentare werden moderiert. Dies kann zu Verzögerungen bei Deinem Kommentar führen. Es besteht kein Grund den Kommentar erneut abzuschicken.