1 / 28

Statische Gestenerkennung auf einem Smartphone

Statische Gestenerkennung auf einem Smartphone. Sebastian Linder, Jan Menges, Markus Jeckle. Inhalt. Projektübersicht Gestenerkennung OpenCV Android OpenCV auf Android Rock, Paper, Scissor (App) Lessons learned. 1. Projektübersicht.

kirima
Download Presentation

Statische Gestenerkennung auf einem Smartphone

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Statische Gestenerkennung auf einem Smartphone Sebastian Linder, Jan Menges, Markus Jeckle

  2. Inhalt • Projektübersicht • Gestenerkennung • OpenCV • Android • OpenCV auf Android • Rock, Paper, Scissor (App) • Lessonslearned

  3. 1. Projektübersicht • Anwendung auf Smartphone, die statische Gesten (z. B. "Daumen hoch" für OK) erkennt • Teil der Arbeit ist die Auswahl einer passenden Plattform (Android, Windows Mobile, Symbian, iPhone OS) • Verwendung passender Bildverarbeitungsalgorithmen (OpenCV)

  4. 1.1 Welche Anwendung?

  5. 1.2 Welche Plattform?

  6. 2. Gestenerkennung

  7. 2.1 Methoden I • Stereoskopie • Wiedergabe von Bildern mit räumlichem Eindruck der Tiefe („3D“) • Bewegungsmessung: 3D-Position + 3D-Veränderung = 6D-Vision=> dyn. Gesten

  8. 2.1 Methoden II • Histogramm • Allgemein: Säulendiagramm gibt die Häufigkeit der skalierter Merkmale wieder • Im Bildbereich: Darstellung Tonwerte, z.B. Helligkeitsverteilung • Gestenerkennungmittels Histogram of Oriented Gradients (HOG) möglich: Häufigkeitsverteilung von Steigungen

  9. 2.1 Methoden III • Template-Matching / Bildvergleich • Suche nach den Positionen, an denen das Template zu finden ist • einfacher Algorithmus • Links oben beginnend Pixel für Pixel nach rechts/unten und den Wert (zwischen 0 & 1: 0 = identisch, 1 = keine Ähnlichkeit) in eine Matrix schreiben • Problem: Rotation / Helligkeitsänderung

  10. 3. OpenCV • freie Bibliothek („Open“) mit Algorithmen für Bildverarbeitung und maschinelles Sehen („Computer Vision") • geschrieben in C/C++ • läuft auf Androd, FreeBSD, iOS, Linux, MacOS, Windows & OpenBSD

  11. 3.1 Anwendungen von OpenCV • Segmentierung • Gesichtserkennung • Gestenerkennung • Bewegungserkennung • Objekterkennung

  12. 4. Android • von Google entwickeltes OS für Smartphones und Tablets • SW-Entwicklung sehr gut dokumentiert (http://developer.android.com) • C++ Programmierung mittels NDK (NativeDK) • CPU-intensive Anwendungen • Grafik-Anwendungen • Spiele (OpenGL ES 2.0) • Java-Programmierung mittels SDK (SoftwareDK) • ausführbar in Dalvik Virtual Machine • Integration in Eclipse mittels ADT-Plugin (Android Development Tools) • Visual Layout Editor: GUI-Builder • XML-Editoren • DDMS (DalvikDebug Monitor Server)

  13. 4.1 Visual Layout Editor

  14. 4.2 DDMS

  15. 5. OpenCV auf Android I “Android is awesome, and so is OpenCV, so wouldn't it be awesome if they could work together? Well they can, and its now officially supported in OpenCV.” • eigener Trunk imOpenCV-Repository • mittels JNI (Java Native Interface) umgesetzt • UnsereErfahrung: Kompilieren & Cross-Kompilierenerfolgslos • ImmerwiederneueKompilier- & Linkerfehler • VorgehennachdiversenAnleitungenführtenichtzumErfolg (statische Shared Objects)

  16. 5. OpenCVauf Android II

  17. 5.1 JavaCV • Wrapper für häufig genutzte CV-Bibliotheken, darunter OpenCV • geschrieben von Samuel Audet, der auch Support leistet • bietet vorkompiliertes OpenCV2.2 für Android 2.2 und ARM5/7 an • Dokumentation sehr dünn (Quick Start Guide) • teilweise undokumentierte Unterschiede im Funktionsaufruf (z.B. Parameterzahl)

  18. 6. Rock, Paper, Scissor • Rock, Paper, Scissor (Stein, Papier, Schere) als Proof-of-Concept der Gestenerkennung auf Smartphone

  19. 6.1 Verlauf der Entwicklung Gestenerkennung

  20. 6.1 Ablauf der Gestenerkennung I

  21. 6.1 Ablauf der Gestenerkennung II • Bild kommt als YUV NV21 von der Kamera • Konvertierung in RGB, um in OpenCV weiter zu verarbeiten • Konvertierung in den HSV-Farbraum, um die zu segmentieren ohne auf Lichtverhältnisse Rücksicht nehmen zu müssen

  22. 6.1 Ablauf der Gestenerkennung III • „Smoothing“ (Verwischen) des Bildes, Dilatation (expandieren) & Erosion (schrumpfen) • Farbmessung von 5 Punkten im mittleren Bereich des Kamerabildes • Ist die gemessene Durchschnittsfarbe Hautfarben? • Wenn ja: Segmentierung im HS(V)-Farbraum mit Durchschnittsfarbe (+- delta), Dilatation & Erosion

  23. 6.1 Ablauf der Gestenerkennung IV • Alle Konturen werden erkannt • Größte Fläche/Kontur (Hand) im Bild wird gesucht

  24. 6.1 Ablauf der Gestenerkennung V • Die größte Kontur wird ausgeschnitten („Region ofinterest“), und dem Template-Matching übergeben • Auswahl der in Frage kommenden Geste(n) (Stein  Papier/Schere) aufgrund des Seitenverhältnisses • Zuschneiden des Templates, so dass es mindestens einmal komplett in das Bild passt

  25. 6.1 Ablauf der Gestenerkennung VI • Template-Matchingfüllt Matrizen (für jede untersuchte Geste eine) mit den Matching-Werten, daraus suchen wir uns jeweils das Minimum (= höchste Identität) • Das kleinste Minimum ist die erkannte Geste, sofern sie einen Schwellwert nicht überschreitet

  26. 7. Lessonslearned I • Eine sinnvolle Anwendung der Gestenerkennung auf Smartphones ist kaum zu finden • Bedienung mittels großer Touchscreens oft komfortabler • hoher Akkuverbrauch durch Kamera schließt Dauernutzung aus • OpenCV sehr mächtige Bibliothek, welche gut dokumentiert ist und viel Anwendung im „Augmented Reality“-Bereich findet • Android Trunk jedoch noch in den Kinderschuhen, jedoch wird daran weiter gearbeitet • Android-Entwicklung einfach zu erlernen • sehr gute Dokumentation • viele Communities & Tutorials • Design mittels Layout Editor anfangs kompliziert, nach Eingewöhnungszeit aber nutzbar

  27. 7. Lessonslearned II • Gestenerkennung an sich gut erforscht, jedoch stark von Lichtverhältnissen abhängig • Template-MatchingMethode nicht zuverlässig genug • Gesten sehen nie gleich aus (keine Muster) • Rotation nicht berücksichtigt (implementierbar, aber teuer) • HOGs vermutlich besserer Ansatz, jedoch höherer Aufwand • Sinnvolles Themengebiet für weitere Projektarbeiten • Netzwerkkomponente würde RPS mehr Sinn verleihen • unter Android aufgrund der Performance eventuell mittels NDK

  28. Statischen Gestenerkennung auf einem Smartphone Vielen Dank für die Aufmerksamkeit!

More Related