Handgestenerkennung: Unterschied zwischen den Versionen

Aus toolbox_interaktion
Wechseln zu: Navigation, Suche
(Link zum Projekt)
Zeile 64: Zeile 64:
 
  -ofxCV: eine Bibliothek in openframeworks zur Erkennung des Contour (in diesem Projekt)
 
  -ofxCV: eine Bibliothek in openframeworks zur Erkennung des Contour (in diesem Projekt)
  
= [http://zuse1.efi.fh-nuernberg.de:8050/interaktion/weiterleiten.php?link=anwendungen/Gestenerkennung Link zum Projekt] =
+
= Projektdaten =
 +
 
 +
[http://zuse1.efi.fh-nuernberg.de:8050/interaktion/weiterleiten.php?link=anwendungen/Gestenerkennung Programmcode]
  
 
[[Category:Anwendungen]]
 
[[Category:Anwendungen]]

Version vom 11. Juli 2021, 15:50 Uhr

Ziel des Projekts

Unser Ziel ist es, verschiedene Gesten in einem Livebild zu erkennen. Da viele Gesten sehr ähnlich sind, beschränken wir uns zunächst auf wenige, dafür sehr verschiedene Gesten.

Die Software soll folgende Gesten unterscheiden können:

  • Okay Symbol
  • Flache Hand
  • Daumen Hoch
  • Daumen Runter
  • "Peace" Zeichen
  • Geschlossene Faust
  • Mittelfinger

Zur Erkennung der Hand wird dabei eine normale Webcam verwendet, die die Hand abfilmt. Die Software soll dann die erkannte Handgeste an der Position im Bild der erkannten Hand in Textform ausgeben.

Umsetzung

Da dieses Projekt nur von 2 Personen umgesetzt wurde, sind noch nicht alle Funktionen implementiert, jedoch wurde ein solider Grundbausatz zur Erkennung gelegt.

Eingabe & Verarbeitung

Als Eingabe dient lediglich das Livebild der Webcam. Damit keine unnötigen Fehler bei der Erkennung der Hand auftreten, muss der sichtabre Bildbereich etwas vorbereitet werden.

Vorbereitung des Videos

Um einen möglichst hohen Kontrast zwischen zu erkennender Hand und dem Hintergrund zu erreichen, wurde ein komplett schwarzer Hintergrund gewählt. Zusätzlich dazu wird der Bildbreich mit anpassbaren Slidern im Bild auf den nötigen Bildausschnitt angepasst, sodass die Hand möglichst groß, aber auf jeden Fall noch vollständig im Bildausschnitt zu erkennen ist. Um nun noch eventuelle Schatten und Farbirritationen zu minimieren wird das zuvor zugeschnittene Bild noch binarisiert. Das erleichtert zudem die erforderliche Kantenerkennung des Frameworks ofxCv.

Handerkennung

Um nun die Hand im Livebild erkennn zu können, wird der ofxCv::ContourFinder auf das bearbeitete Bild angewandt.

Handerkennung.png

Erkennen der Gesten

Zur Unterscheidung der festgelegten Gesten mussten zu Beginn des Projekts verschiedene Kriterien der Bilderkennung festgelegt werden, um die Gesten sicher auseinanderhalten zu können.

Löcher

Ein wichtes Kriterium ist, ob eine Kontur eine weitere Kontur komplett umschließt, also ein Loch hat. Wie es zum Beispiel beim Okay-Zeichen der Fall ist, bei der flachen Hand aber offensichtlich nicht.

Handerkennung-Okay-Zeichen.PNGHanderkennung-mitLoch2.png

Spitzen

Die Spitzenerkennung kümmert sich darum, zu Erkennen, wie viele "primäre" Spitzen eine Kontur hat. So können recht gut einzelne abgespreizte Finger gezählt werden.

Dieses Kriterium konnte noch nicht implementiert werden.

Fläche

Mit der Fläche kann man sehr gut zwischen der Faust und der flachen Hand unterscheiden. Beide Konturen haben im allgemeinen keine Spitzen und auch kein Loch. Aber ihre Größe, also Fläche, ist anders.

Rundheit

Dieses Kriterium beschreibt, wie groß die Abweichung einer Kontur im Vergleich zu einem Kreis ist. So weist die geschlossene Faust eine deutlich höhere Rundheit als die Mittelfinger-Geste auf.

Schwerpunkt

Der Schwerpunkt wird verwendet, um das Label mit der erkannten Kontur an die richtige Stelle innerhalb der erkannten Hand zu schreiben. Außerdem ist es ein zusätzlicher Faktor, um relativ ähnliche Gesten unterscheiden zu können. Bsp.: Daumen Hoch und Daumen Runter haben identische Konturen und eigenschaften. Lediglich ihr Schwerpunkt ist umgekehrt. So kann die Orientierung dieser Geste(n) festgestellt werden.


Benötigte Hardware & Software

Hardware

In diesem Projekt wird eine Kamera unbedingt benötigt, damit Livebilder (oder Video) aufgenommen werden können mit denen die Software weiterarbeiten kann.

Die Qualität der Kamera ist dabei nicht so wichtig, da das Livebild zur schnelleren Verarbeitung auf eine niedrige Auflösung reduziert wird.

Software

-Microsoft Visual Studio 2017: eine IDE von Microsoft. Für diese IDE wurden schon sehr viele add-ons entwickelt 
-openframeworks: open source C++ für coding
-ofxCV: eine Bibliothek in openframeworks zur Erkennung des Contour (in diesem Projekt)

Projektdaten

Programmcode