Gestenerkennung (2004)

Aus toolbox_interaktion
Wechseln zu: Navigation, Suche

Gestenerkennung

Geste2004 Titel.jpg


(aus einer Arbeit von Anna Grützner, Daniel Seemann und Markus Eckstein im WS2004/2005)


Grundidee

Eine Kamera nimmt frontal von oben Gesten bzw. Gebärden auf einem dunklen Hintergrund auf, die an den Rechner übertragen werden. Die Daten werden vom Rechner ausgewertet.

Jede Geste hat eine bestimmte Bedeutung, die vom Rechner differenziert akustisch wiedergegeben wird (1. Stufe).

Geste2004 Struktur1.jpg


Neben der akustischen Wiedergabe hätte optional eine 2. Stufe eingebaut werden können, in der elektische Geräte gesteuert werden können (z.B. Kaffeemaschine, Toaster), ein Fernseher bzw. eine Software bedient werden kann.

Geste2004 Struktur2.jpg


Die Gesten sollen zunächst sehr leicht erkennbar sein und in einer geringen Anzahl implementiert werden.


Bereits vorhandene Systeme

  • Erkennung koreanischer Gebärdensprache und Umwandlung in Text über 6000 darstellbare Wörter, die sich aus einer kleinen Menge von Basisgesten zusammensetzen Gesten setzen sich aus einem statischen (Handposition und Fingerstellung: 31 Möglichkeiten) und einem dynamischen Teil (Bewegungen mit beiden Händen) zusammen Implementierung über zwei Datenhandschuhe ca. 85 Prozent der Gesten werden erkannt
  • Erkennung amerikanischer Zeichensprache mit Hidden-Markov-Modellen Erkennung von Sätzen der Zeichensprache (zwei Hände ohne Mimik) durch eine Kamera Es wird nicht versucht, eine genaue Beschreibung der Handform zu erlangen à nur ungefähre Informationen über Form der Hand, die Orientierung und die Trajektorie Handverfolgung geschieht auf Grundlage von Farbinformationen (verschiedenfarbige Handschuhe, dann Hautfarbe) Suchalgorithmus überprüft alle Pixel, wenn richtige Farbe, dann wird Nachbarschaft untersucht Probleme bei Überlagerung der Hände Testperson muss auf Stuhl sitzen und sich möglichst nicht bewegen und darf keine bedeutungslosen Gesten machen Erkennungsrate mit Handschuhen von 91,3 Prozent (ohne Handschuhe: 74,5) / mit Grammatik: 99,2 Prozent (ohne Handschuhe: 84,7)
  • Am Körper tragbarer Computer, der über Gebärdensprache gesteuert wird Gebärden sollen als gesprochene Sprache ausgegeben werden optische Aufnahme der Gebärden über Kamera im Schirm der Mütze des Benutzers


Ziel

Unser Ziel war die automatische Erkennung von ca. 5 unterschiedlichen Handzeichen mit Hilfe einer Webcam und dazu eine akustische Ausgabe abhängig von der erkannten Geste.

Beispiele für Handgesten:

Gesten2004 Geste02.jpgGesten2004 Geste03.jpgGesten2004 Geste04.jpgGesten2004 Geste05.jpgGesten2004 Geste06.jpgGesten2004 Geste07.jpg


Vorgehensweise Um die Kameradaten in analysierbare Form umzuwandeln und diverse Merkmale der erhaltenen Bilder zu extrahieren verwendeten wir EyesWeb 3.3, um die Merkmale miteinander zu vergleichen und Unterschiede festzustellen entwickelten wir eine eigene Software. EyesWeb und unsere eigene Software kommunizieren über das MIDI-Protokoll miteinander.


EyesWeb Patch

Der in EyesWeb geschriebene Patch "kriterienauswertung.eyw" erhält als Eingangssignal das Bild der angeschlossenen Kamera. Das Farbbild wird zunächst in ein Graustufenbild gewandelt und anschließend erfolgt eine Binarisierung, deren Schwellwert über einen Regler steuerbar ist.

Auf dem Eingangsbild wird eine Hintergrundsubtraktion durchgeführt, um die Gesten unabhängig vom Hintergrund erkennen zu können. Außerdem wird das Rauschen über einen Median-Filter unterdrückt.

In dem Eingangsbild wird die Quantity of motion gemessen. Wenn die Bewegung einen gewissen Schwellwert, der über einen Regler steuerbar ist, übersteigt, wird ein Screenshot erzeugt. Dieser Screenshot wird dann als Geste betrachtet und ausgewertet. So lange also viel Bewegung stattfindet, wird keine Geste erkannt. Das Programm nimmt also eine Geste nur war, wenn die Hand einige Zeit still gehalten wird.

Der Screenshot wird anschließend über verschiedene Kriterien ausgewertet. Die Kriterienauswahl stellte sich als der eigentliche Knackpunkt der Aufgabe heraus. Hier haben wir sehr viel herumexperimentiert und versucht, Kriterien zu finden, die möglichst unabhängig von der Handgröße und der Handposition sind. Hierbei stellten sich die HU-Momente als halbwegs zufrieden stellend heraus. An der Kriterienauswahl könnte jedoch noch beliebig weiter experimentiert werden, da EyesWeb hier nur ein sehr unzufriedenstellendes Angebot hat.

Die Kriterien werden anschließend auf den Bereich 0 bis 127 skaliert und an unsere Software „MidiCapture“ versandt.


MidiCapture (eigene Software)

Bei jeder Bildänderung empfängt dieses in JAVA geschriebene Programm über MIDI die neuen Merkmalsdaten und vergleicht diese mit vordefinierten Daten (diese stehen in der Datei gestureDescriptors.txt). Stimmen diese Daten mit einem Datensatz aus den vordefinierten Gesten überein, wird diese Geste ausgegeben und der zugehörige Sound abgespielt. Da die von der Kamera aufgenommenen Gesten nie 100% mit den gespeicherten Referenzgesten übereinstimmen, gibt es einen Schieberegler, mit dem die erlaubte Abweichung der Geste von der Referenz eingestellt werden kann. Das Java-Programm befindet sich im internen Bereich zum Download (zip).


Fazit

Das Bearbeiten der Aufgabe hat uns viel Spaß gemacht und uns der Praxis auch etwas näher gebracht. Unser Ziel haben wir weitgehend erreicht. Wir hätten noch eine Steuerung eines Gerätes einbauen können oder den angedachten Lernmodus in Java fertig entwickeln können.

Wir mussten jedoch während der Bearbeitung auch feststellen, dass es sehr viel Aufwand bedarf, ein richtiges ausgeklügeltes System zu entwerfen, da wir bei einigen Fragen an unsere Grenzen oder an die Grenzen der Software gestoßen sind. Es war unsere erste Arbeit in EyesWeb und daher war uns manchmal nicht klar, ob wir nun die Systemgrenzen erreicht haben oder nur den richtigen Block nicht gefunden haben. Dennoch sind wir der Meinung, in der kurzen Zeit die Möglichkeiten ganz gut ausgeschöpft zu haben.

Gesten2004 Endgeste01.jpg