Gesichtserkennung

Aus toolbox_interaktion
Wechseln zu: Navigation, Suche

Gesichtserkennung

Die folgende Gesichtserkennung basiert auf dem Vergleich gesichtsspezifischer Merkmale und wurde mittels EyesWeb realisiert.

Als Erkennungsmerkmale diente hier das Gesichtsfeld, die Augen und der Mund.

Abb.1: Erkennungsmerkmale

Die Vorgehensweise ist der folgenden schematischen Darstellung zu entnehmen:

Abb.2: Ablaufpan Gesichtserkennung

Aus dem oben gezeigten Ablauf ergab sich die nachstehende Realisierung in EyesWeb.

Abb.2: Testbench in EyesWeb


Zunächst wird das RGB-Bild in HSV-Farbraum konvertiert und dann der Kanal mit dem Farbwert (Hue) und der Kanal mit der Sättigung mittels des Blocks „Extract Channel“ extrahiert. Für den HUE-Wert werden zwei Schwellwerte definiert, die den Farbwert eingrenzen. Dies wird jeweils durch einen Schieberegler an den ein Block "Constant" angefügt ist, realisiert. Der untere Schwellwert ("größer als") läuft in einen Binarisierung- Block, sodass allen Bildpunkten, mit einem Farbwert größer als der Schwellwert, der Wert "1" zugewiesen wird. Der Binarisierung mit dem oberen Schwellwert ("kleiner als") ist eine Invertierung ("NOT") nachgeschaltet, wodurch alle Bildpunkte mit einem Farbwert kleiner dem Schwellwert den Wert "1" zugewiesen bekommen. Da der Wertebereich für den Farbwert rot sowohl am unteren Ende als auch am oberen Ende der Skala liegt, müssen die beiden Ergebnisse mit einem „ODER“- Block verknüpft werden. Beim Sättigungswert erfolgt ebenfalls eine Schwellwertoperation (wie gerade beschrieben), bei der alle Bildpunkte mit einer entsprechend hohen Sättigung den Wert "1" bekommen. Anschließend werden die beiden Ergebnisse mit einem logischen „UND“ verknüpft. Damit erhält man ein Bild, in dem ausschließlich Punkte mit dem gewünschten Farb- und Sättigungswert dargestellt werden (d.h. den Wert "1" haben). Außerdem werden auf das erhaltene Ergebnis zwei morphologische Operationen angewendet. Zum einen ein sogenanntes „Closing“(=Dilatation gefolgt von Erosion), um kleine Löcher und Zwischenräume im Vordergrund zu füllen und zum anderen eine zusätzliche „Erosion“, welche einzelne störende Pixel entfernt. Zur farblichen Darstellung wird dieses Ergebnis noch mit dem Eingangs-Farb-Bild „UNDverknüpft“, um die ausgewählten Punkte in ihrer Farbe sichtbar zu machen (Detektion des Mundes).


Dieser Ausschnitt aus der Farberkennung repräsentiert die Erkennung der Augen. Er besteht nur aus einem Ast, da hier nur die Sättigung von Bedeutung ist. Mit dem Schieberegler (Sättigung) wird der Schwellwert festgelegt. Daraufhin folgt eine Binarisierung aller Bildpunkte. Bildpunkte mit einem größeren Sättigungswert als der des Reglers werden auf den Wert „1“ gesetzt (weiß), kleinere auf den Wert „0“ (schwarz).

Hier besteht die Erkennung aus der oben erklärten Munderkennung verknüpft mit der Augenerkennung. Da sich die Beschreibung wiederholen würde, wird an dieser Stelle darauf verzichtet.

Um die Gesichtserkennung unanfälliger gegenüber Helligkeitsschwankungen zu machen, könnte in EyesWeb ein Aufbau hinzugefügt werden, der jedes aufgenommene Bild auf eine bestimmte Helligkeit normiert. Da die Ergebnisse der Relativwerte, die mit umschreibenden Rechtecken ermittelt wurden, noch etwas empfindlich sind, könnte die Erkennung durch die Verwendung von Schwerpunkten robuster gemacht werden. Dies funktioniert bei den Lippen einwandfrei, allerdings besteht bei den Augen das Problem, dass bei der Merkmalsextraktion durch die ROI ("Region of Interest") ein weißer Bildbereich außerhalb der ROI entstand. Diese weißen Pixel wurden bei der Schwerpunktberechnung miteinbezogen und verfälschten das Ergebnis.


Dateien zur Projektarbeit

Unter den folgenden Links sind der Projektbericht und saemtliche Daten zur Projektarbeit (Eyesweb-Testbenches, Programmcode und Testbilder) bereitgestellt:

Projektbericht

Projektdaten