Fast jeder von uns verwendet Anwendungen mit Bildverarbeitung täglich. Dabei ist es egal, ob wir sie direkt verwenden oder nur indirekt von ihr erfasst werden. Die Rede ist von der Bildverarbeitung.
Die Anzahl an möglichen Einsatzgebieten ist groß. Kaum eine Anwendung, bei der eine Kamera verwendet wird kommt ohne Bildverarbeitung aus. Oftmals laufen die Prozesse im Hintergrund, ohne dass der Nutzer es bemerkt. Die Anwendungsbereiche reichen von der Gesichtserkennung, die zum Entsperren von Smartphones und zum Anwenden von Filtern in Social-Media Applikationen verwendet werden kann, über Bilderkennungsalgorithmen, bis hin zur Objekterkennung für selbstfahrende Autos.
Allgemein versteht man unter dem Begriff „Bildverarbeitung“ die Verarbeitung von Signalen, die Bilder repräsentieren, wobei es sich bei dem Ergebnis entweder um ein Bild oder Merkmale des verarbeiteten Bildes handelt. Ist letzteres der Fall, dann reden wir von der sogenannten „Bilderkennung“.
Diapositiva 2
Wie funktioniert Bilderkennung?
Doch wie kann man sich nun, etwas vereinfacht, vorstellen, was ein Computer bei der Bildverarbeitung macht?
Es gibt mehrere mögliche Ansätze. Beim sogenannten Thresholding wird das Eingabebild über eine Funktion in Graustufen eingeteilt. Das dadurch errechenbare Histogramm kann nun verwendet werden, um Strukturen zu suchen. Alternativ kann mit Region-Growing gearbeitet werden. Dabei werden die Pixel analysiert. Von einem Startpixel aus werden die benachbarten Pixel auf Ähnlichkeiten zum Startpixel untersucht. Ähneln sich die Pixel, kann davon ausgegangen werden, dass sie zusammengehören. Die entstandenen Regionen können nun nach dem gewünschten Muster abgesucht werden. So können zum Beispiel Objekte identifiziert werden. Eine weitere Möglichkeit wäre die Suche nach einer vorgegebenen Farbe im Bild. Kombiniert mit Region-Growing könnte man so Objekte anhand ihrer Farbe und Form identifizieren.
Diapositiva 3
Welche Bilderkennung/Bildverarbeitungssoftware gibt es?
Da die Bildverarbeitung sowohl für Einzelpersonen als auch Unternehmen interessant ist, gibt es Software zur Bildverarbeitung kostenpflichtig oder als open-source. Kostenpflichtige Programme sind vor allem für Unternehmen gedacht. Diese sind oft auf einen speziellen Bereich beschränkt, wobei der Kunde innerhalb dieses Rahmens den Umfang des Produktes selbst bestimmen kann. Die open-source Lösungen sind eher für Privatpersonen gedacht und haben teilweise, verglichen mit den kostenpflichtigen Produkten, einen etwas geringeren Funktionsumfang. Diese Software kann im Regelfall universell eingesetzt und sogar modifiziert werden. Je nach geplanter Anwendung können verschiedene Programme verwendet werden, die von der noch relativ simplen Gesichtserkennung, bis hin zum Objekttracking reichen.
Im open-source Bereich spielen die folgenden Bibliotheken eine wichtige Rolle:
OpenCV
BoofCV
FastCV
Vision Something Library (VXL)
LTT
Für unsere Anwendung haben wir uns für OpenCV entschieden, da es den größten Funktionsumfang für Bildverarbeitung bietet, frei verfügbar ist und für Applikationen in verschiedenen Sprachen anwendbar ist.
Diapositiva 4
Was ist OpenCV?
OpenCV ist eine open-source Bibliothek mit Algorithmen für die Bildverarbeitung und maschinelles Sehen. Sie ist in den Programmiersprachen Java, C, C++ und Python geschrieben und anwendbar. Die Stärke von OpenCV liegt einerseits in der Geschwindigkeit, in welcher die Prozesse durchgeführt werden und der großen Anzahl an zur Verfügung stehenden Algorithmen. Mittlerweile hat sich OpenCV zum bedeutendsten Framework zur Bildverarbeitung entwickelt und wird für unzählige Projekte von Privatpersonen und Firmen verwendet.
OpenCV bietet eine Vielzahl von Anwendungsbereichen und ist modular aufgebaut. Unter anderem umfasst die Bibliothek Algorithmen für Gesichts und Objekterkennung, 3-D Funktionalität, Haar-Klassifikatoren, Funktionen zur Kamerakalibrierung und einige Filter wie zum Beispiel Canny und Gauß.
Außerdem kann OpenCV über eine Schnittstelle mit neuronalen Netzen arbeiten. Somit sind auch KI-Programme zur Bildverarbeitung möglich.