Kantendetektion

Der erste Schritt in der Bildverarbeitung besteht bei diesem Projekt in der Erkennung der Kanten des Fingerabdrucks. Dies ist notwendig, da es extrem schwierig ist, ein Graustufen-Bild zu analysieren. Deshalb muß versucht werden, zuerst ein reines schwarz/weiß-Bild zu erzeugen, auf dem die Linien des Fingerabdrucks möglichst scharf abgegrenzt als schwarze Linien auf weißem Grund erscheinen.

Wir testeten für diese Aufgabe drei verschiedene Kantendetektionsverfahren:

Sobel

Der Sobel-Operator arbeitet mit einer Faltungsmaske. Dies ist eine Matrix (hier 5*5), die pixelweise über das Eingabebild geschoben wird. Durch die Matrix wird die Umgebung des Pixels, der sich unter dem Mittelpunkt der Matrix befindet, betrachtet. Dabei wird der jeweilige Pixel des Eingabebildes mit dem Wert in der entsprechenden Matrix-Zelle multipliziert und die Produkte aufaddiert. Diese Summe stellt den Grauwert des Pixels (wiederum in der Mitte der Matrix) des Ausgabebildes dar.

Die Berechnung dieser Faltungsmaske findet in der Funktion FilterMatrix statt.

Durch die richtige Wahl der Matrixelemente können somit entweder vertikale, horizontale oder diagonale Kanten erkannt werden. Für dieses Projekt entschieden wir uns für die Erkennung von vertikalen Kanten, was zu einem recht vernünftigen Ergebnis führte.

Da diese Summe u.U. größer oder kleiner wird als der maximale bzw. minimale Grauwert, wird sie am Ende der Funktion FilterMatrix noch auf den richtigen Bereich "zugeschnitten" und invertiert, da es sonst weiße Linien auf schwarzem Grund wären.

Der Sobel-Operator hat den Vorteil, daß er auch bei kontrastarmen Bildern sehr gute Ergebnisse liefert. Allerdings erkennt er jeweils nur eine Richtung der Linien, so daß ein Großteil der Merkmale verloren gehen. Außerdem dauert die Berechnung relativ lange.

Logarithmus

Eine weitere Möglichkeit der Bildverarbeitung besteht in einer einfachen logarithmischen Berechnung des Grauwertes des Eingabepixels. Dieses Verfahren erkennt alle Richtungen der Linien gleichermaßen und läuft relativ schnell ab. Leider hat es Probleme bei kontrastarmen Bildern, so daß mehrere Linienzüge oft miteinander verschmelzen.

Schwellwertanalyse

Das dritte getestete Verfahren ist eine mehrstufige Schwellwertanalyse, die in der Funktion EdgeTest berechnet wird. Hierbei werden zuerst Pixel aussortiert, die eindeutig weiß oder schwarz sind, da sie über bzw. unter einem gewissen Schwellwert der Graustufe liegen. Bei Pixeln, die nicht eindeutig zuordenbar sind, kommt wiederum die logarithmische Berechnung zum Einsatz und anschließend wird noch die Umgebung des getesteten Pixels betrachtet, um entscheiden zu können, ob der jeweilige Pixel auf einer Kante liegt, oder nicht. Die einzelnen Schritte dieses Verfahrens wurden mehr oder weniger willkürlich gewählt und deshalb läßt sich auch kaum ein System darin erkennen. Vermutlich gäbe es -zig andere Wege, die Kanten besser zu erkennen.

Das Schwellwert-Verfahren liefert akzeptable Ergebnisse bei einer sehr geringen Laufzeit (da die meisten Pixel mit einem einfachen Vergleich bearbeitet werden können).

Verwendetes Verfahren

Welches dieser drei Verfahren zum Einsatz kommen soll, wird dem Benutzer überlassen. Über das Applet kann dies ausgewählt werden. Somit können auch die unterschiedlichen Ergebnisse verglichen werden.

Die gesamte Kantendetektion findet in der Klasse Filter statt. Der Einsprungspunkt für die Kantendetektion ist die Funktion doFilter. Ihr wird als Parameter angegeben, welches der drei Verfahren benutzt werden soll.

Home