EyeTracking(2014)

Aus toolbox_interaktion
Wechseln zu: Navigation, Suche

Die Grundidee

Einen häufigen Unfallverursacher im Autoverkehr, den Sekundenschlaf, durch Software und mit möglichst wenig Technik detektieren.

Der Ansatz

Wie der Titel dieser Wikiseite schon sagt, es wurde versucht, diese Problematik mithilfe von Augenerkennung zu lösen. In anderen Worten: um zu detektieren, dass die Augen geschlossen sind, müssen erstmal die offenen Augen erkannt werden.

Verwendete Software

Für die Implementierung wurde die integrierte Entwicklungsumgebung "Visual Studio C++ 2010 Express" benutzt. Dazu wurde die Programmbibliothek "openCV" verwendet.

Implementierung

In diesem Abschnitt werden eher weniger die verwendeten Methoden und Algorithmen erklärt, sondern die Schritte und Stolpersteine erläutert, die dazu gebracht haben, weitere Methoden in die Implementierung einzubauen.

Augendetektion mithilfe von Hough-Algorithmus

Um die Augen zu detektieren, wurde der Hough-Algorithmus zur Kreiserkennung verwendet.

Die OpenCV-Bibliothek bietet dafür eine Funktion namens HoughCircles mit folgenden Aufrufparameter:

void HoughCircles(
   InputArray image, 
   OutputArray circles, 
   int method, 
   double dp, 
   double minDist, 
   doubleparam1=100, 
   double param2=100, 
   int minRadius=0, 
   int maxRadius=0 
)

Die wichtigsten Parameter, die die Kreiserkennung eingrenzen:

double minDist
die minimale Entfernung zwischen zwei Kreisen
int minRadius
der minimale Kreisradius
int maxRadius
der maximale Kreisradius

Bei der richtigen Bestimmung dieser Parameter, müssen nur die Kreise entsprechender Größe im Bild erkannt werden. Dabei entsteht das Problem, dass durch die fehlende Eingrenzung des Bildbereiches auf Gesicht/Augenpartie, mehrere Kreise im Bild erkannt werden, nicht nur die Augen.

Gesichtserkennung

Um die Problematik mit den störenden Kreisen zu lösen, wurde versucht den zu analysierenden Bildbereich auf Augenpartie zu begrenzen.

Dafür wurde der CascadeClassifier für Objekterkennung verwendet:

In jedem gelieferten Frame wurde nach dem größten Gesicht im Bild gesucht. Die Parameter für die Gesichtserkennung liegen in einer von openCV mitgelieferten Beschreibungsdatei. Wenn das Gesicht erkannt wird, wird nur 1/4 vom erkannten Objekt für die Analyse weitergegeben, um ungefähr auf die Augenpartie zu kommen.

Dabei tritt folgendes Problem auf:

Die Ausführung der Cascade-Funktion verschlechtert die Laufzeit des Programms. Eigentlich hätte man die Augenerkennung auch mithilfe einer solchen Cascade-Funktion realisieren können. Das hätte aber wahrscheinlich die Laufzeit des Programms noch mehr verschlechtert. Deswegen wurde der Hough-Algorithmus weiterhin verwendet.

Fazit

Leider konnte man im Rahmen des Praktikums dieses Projekt nicht zum sinnvollen Ergebnis durchführen.

Das größte Problem wurde schon im oberen Kapitel beschrieben. Denn die Methode, die wir für die Gesichtserkennung verwendet haben, verschlechtert die Laufzeit des Programms gewaltig. Zwar kann man die Zustände "Augen geschlossen"/"Augen offen" unterscheiden, aber durch die verschlechterte Laufzeit keine vernünftige Analyse durchführen. Es sollte also entweder eine andere Methode zur Eingrenzung des Bildbereiches gefunden werden oder die Verwendung der Methode optimiert werden

Quellen und nützliche Links