Viola-Jones-Methode
# Viola-Jones-Methode

Die Viola-Jones-Methode ist ein mathematisches Verfahren zur Mustererkennung in digitalen Bildern. Es wurde 2001 von Paul Viola und Michael Jones in einem Paper vorgeschlagen und erlangte weltweite Popularität wegen seiner Effizienz. Die Viola-Jones-Methode erkennt in Echtzeit markante Objekte wie Gesichter in einem Bild.

## Hintergrund

Anfang der 2000er Jahre kamen digitale Foto- und Videokameras in Mode und verdrängten langsam die analogen Kameras. Die zunehmende digitale Bilderflut erzeugte eine Nachfrage nach der mit analogen Medien nur umständlich möglichen technischen Gesichtererkennung. Dafür gab es zwei Schlüsselanwendungen:
* Gesichtererkennung, um die Schärfe automatisch einzustellen;
* Datenanalyse, um bestimmte Gesichter in Datenbanken anderen Daten zuordnen zu können.
Paul Viola und Michael Jones haben ihre Methode mit der freien Programmbibliothek OpenCV entwickelt, die Algorithmen für die Bildverarbeitung und Computer Vision bereitstellt. Ihre Methode findet sich in OpenCV unter CascadeClassifier::detectMultiScale. Das zuvor gängigste (und in Teilen auch bei Viola-Jones genutzte) Verfahren sind die 1909 von Alfréd Haar entwickelten Haar-Wavelets.
Viola-Jones besteht nicht aus einem klassischen Algorithmus, sondern basiert auf kontrolliertem Lernen, so genanntem maschinellem Lernen: Das Programm sieht sich mehrere Bilder an und trainiert sich selbst, um Ähnlichkeiten herauszufinden. Die Lernkaskaden folgen dem Meta-Algorithmus AdaBoost von 2003.
Die Vorteile der Methode gegenüber anderen Verfahren besteht vor allem in der Schnelligkeit und Robustheit; nicht nur Gesichter lassen sich sehr effizient erkennen. Auch die Bildgröße spielt kaum eine Rolle; das Verfahren skaliert nicht das ganze Bild, sondern nur den relevanten Inhalt. Der größte Nachteil besteht darin, dass die Gesichter frontal zu sehen und gut beleuchtet sein müssen. Zum Auswerten von Halbprofilen wird Viola-Jones meist mit dem Kanade-Lucas-Tomasi Feature Tracker gekoppelt.

## Programmbeispiel in Python

Das folgende kurze Programmbeispiel in der Programmiersprache Python erfordert die Installation von opencv-python. Dieser Programmcode und die zwei benötigten Dateien müssen im selben Verzeichnis liegen. Das Beispielprogramm erkennt im Bild Gesichter und kennzeichnet diese mit bunten Rahmen. Die durch Training erzeugte Datei „haarcascade_frontalface_default.xml“ stammt aus dem Quellcode von OpenCV, das zu untersuchende Bild „Jimmy_answering_questions.jpg“ liegt auf Commons.
Durch Benutzung anderer Haar-Cascades-Dateien lassen sich in Bildern und Filmen andere Objekte finden. Ein Anwendungsfall ist das Erkennen von fahrenden Automobilen. Funktionsfähige Programmbeispiele sind auf GitHub verfügbar.