Der Gaborisierer ist ein Bildverarbeitungs-Filter, der die Streifigkeit
eines Bildes extrahiert.
Dafür wird zunächst der Strukturtensor berechnet, der für jeden Bildpunkt
die Information über die in der Umgebung hauptsächlich vorkommenden Streifenrichtungen zusammenfasst. Dann wird jeder Bildpunkt durch ein
Gabor-Patch ersetzt. Ein Gabor-Patch sieht zum Beispiel so aus:
Es ist eine ebene Welle, die mit einer (gaußschen) Fensterfunktion multipliziert wurde, sodass sie nur in einem beschränkten Gebiet präsent ist. Das Gabor-Patch für jeden Pixel wird durch den Strukturtensor bestimmt: Die Streifenrichtung richtet sich nach der Haupt-Streifenrichtung des Eingabebildes (dem zweiten Eigenvektor des Strukturtensors), die Frequenz der Welle hängt von der Ausprägung der Streifigkeit ab (2·(zweiter Eigenwert)÷(Spur) - 1) und die Phase ist zufällig.
Warum ist die Phase zufällig gewählt? Nun, wenn man n Sinuswellen mit gleicher Frequenz, mit Amplitude 1 und mit zufälliger Phase überlagert, bekommt man eine einzige Sinuswelle der erwarteten Amplitude √n. Analog dazu sollten sich dann die Streifenmuster benachbarter Gabor-Patches, die aus einem ähnlichen Strukturtensor berechnet wurden, zu einem nahtlosen Muster überlagern.
Hier habe ich den Effekt mal auf ein Bild von einem Zebra angewendet:
Man erkennt deutlich, wo das Zebra war und in welche Richtung seine Streifen verliefen.
Man kann die Streifenrichtung der Gabor-Patches auch gegenüber der Originalrichtung verdrehen. Auf diese Weise ist folgendes Video entstanden:
Interessant finde ich, wie das dreizackige Sternmuster auf dem Hinterteil des Zebras eine Zweidrittel-Umdrehung macht in derselben Zeit, in der die Streifenrichtung eine volle Umdrehung macht.
In den Gebieten mit einheitlicher Ausrichtung rotiert die Streifenrichtung zwar, es kommt aber letztendlich nicht zu einer Bewegung des Musters. Das ist etwas merkwürdig, wenn man drüber nachdenkt. Hier ist der Effekt in Reinform:
Wenn man lange auf dieses Video gestarrt hat, hat man danach nicht den Eindruck, alles was man anschaut würde sich drehen, wie es ja bekanntlich sonst nach dem Betrachten rotierender Muster der Fall ist.
Ich habe den Gaborisier-Filter als Kommandozeilenprogramm in C++ geschrieben. Hier gibt es den Quellcode.