Gabor-Filter
# Gabor-Filter

Ein Gabor-Filter ist ein in der Bildverarbeitung und der Signalverarbeitung benutzter Filter. Er ist nach Dennis Gabor benannt, der ihn als 1D-Filter für die Signalverarbeitung vorschlug.
Das Gabor-Filter wurde von Gösta Granlund auf die Anwendung für 2D-Bilder verallgemeinert.
Das Gabor-Filter ist ein linearer Filter und wird vielfach in der Kantendetektion und Bildstrukturanalyse verwendet.
Hierbei werden wiederkehrende Strukturen um einen Punkt mittels Frequenzanalyse erkannt. Die Art und Weise, wie das visuelle System von Säugetieren arbeitet, ähnelt dem Gabor-Filter.
Es wird erforscht, ob der Visuelle Cortex von Säugetierhirnen mittels Gabor-Funktionen modelliert werden kann.
In der 2D-Anwendung ist der Gabor-Filter ein mit einer Sinus-Welle modulierter Gauß-Kernel (siehe Gabor-Transformation).

## Definition

Die Impulsantwort des Filters wird durch die Multiplikation eines Sinusoids und einer Gauß-Funktion bestimmt.
Der Filter hat einen realen und einen imaginären Anteil, welche orthogonal zueinander stehen. Dies erlaubt die Nutzung als komplexe Zahl oder in zerlegte reale und imaginäre Komponenten.
Komplex:
    $g(x,y;\lambda ,\theta ,\psi ,\sigma ,\gamma )=\exp \left(-{\frac {x'^{2}+\gamma ^{2}y'^{2}}{2\sigma ^{2}}}\right)\exp \left(i\left(2\pi {\frac {x'}{\lambda }}+\psi \right)\right)$
Real:
    $g(x,y;\lambda ,\theta ,\psi ,\sigma ,\gamma )=\exp \left(-{\frac {x'^{2}+\gamma ^{2}y'^{2}}{2\sigma ^{2}}}\right)\cos \left(2\pi {\frac {x'}{\lambda }}+\psi \right)$
Imaginär:
    $g(x,y;\lambda ,\theta ,\psi ,\sigma ,\gamma )=\exp \left(-{\frac {x'^{2}+\gamma ^{2}y'^{2}}{2\sigma ^{2}}}\right)\sin \left(2\pi {\frac {x'}{\lambda }}+\psi \right)$
mit $x'=x\cos \theta +y\sin \theta$ und $y'=-x\sin \theta +y\cos \theta$.
Hierbei ist $\lambda$ die Wellenlänge des Sinus, $\theta$ ist die Orientierung der Gabor-Funktion zur Normalen. $\psi$ ist die Phasenverschiebung, $\sigma$ ist die Standardabweichung der umhüllenden Gaussverteilung und $\gamma$ ist das Seitenverhältnis des Kernels und bestimmt die Exzentrizität der Kernel-Funktion.

## Feature Extraktion aus Bildern

Eine Filterbank aus mehreren Gabor-Filtern mit unterschiedlichen Frequenzen und Orientierungen kann benutzt werden, um verschiedene Merkmale (Features) in einem Bild zu erkennen.
In der Texterkennung sind Gabor-Filter geeignet, um Schriftzeichen in mehrsprachigen Dokumenten zu erkennen. Gabor-Filter mit verschiedenen Frequenzen und Orientierungen können benutzt werden, um Textfelder aus komplexen ein- und mehrfarbigen Dokumenten-Scans zu extrahieren, da Text im Vergleich zu Bildern oder Zeichnungen mehr hochfrequente Anteile besitzt. Weitere Anwendungen besitzt der Filter in der Emotionserkennung und der Mustererkennung in der Medizin. Weitere Anwendungsbereiche im Bereich Bilderkennung sind die Iris-Erkennung, die Erkennung von Fingerabdrücken und Landnutzungsklassifizierung von Satellitendaten.

## Beispiel Implementationen

Dies ist eine Beispiel-Implementierung in Python:
Für eine Anwendung in der Bildverarbeitung.
Ein MATLAB/Octave Beispiel:
Code für Gabor Feature Extraction aus Bildern in MATLAB:
Ein Beispiel in Haskell: