The Gaborizer is an image processing filter that extracts the streakiness of an image. Do do this, first the structure tensor is computed that summarizes for each pixel the mainly occurring stripe directions in its vicinity. Then each point is replaced by a Gabor patch. A Gabor patch looks like this, for instance:

Gabor patch

It is a plane wave, multiplied by a (Gaussian) window function, so that it has significant presence only in a limited region. The Gabor patch that replaces the pixel is determined by the structure tensor: The stripe direction is according to the main stripe direction of the input image (given by the second eigenvector of the structure tensor), the wave's frequency depends on the specificity of the streakiness (2·(second eigenvalue)/(trace) - 1) and the phase is random.

Why is the phase chosen randomly? Well, if you superpose n sine waves with the same frequency, with amplitude 1 and with random phase, the result is a single sine wave with expected amplitude √n. Analogously, the stripe patterns of neighbouring Gabor patches that have been computed from a similar structure tensor should overlap to form a seamless pattern.

Here I have applied the effect to an image of a zebra:

Gaborized zebra

It is clearly discernible where the zebra was and in which directions its stripes ran.

You can also twist the stripe direction of the Gabor patches relative to the original direction. In this way the following Video was made:


(mp4, webm, YouTube)

I think it is interesting how the three-pointed star pattern on the zebra's butt makes two thirds of one revolution in the same time that the stripe direction makes a full turn.

In the areas with uniform orientation, the stripe direction rotates, however this does not lead to a motion of the whole pattern. This is a little strange if you think about it. Here is this effect in pure form:


(mp4, webm, YouTube)

After you've stared at this video for some time, you will not have the impression that everything you look at is rotating, although it is well-known that this is usually the case after watching a rotating pattern.

I've written the Gaborizer filter as a command line program in C++. Here you can get the source code.

Share:  E-Mail Twitter Facebook LinkedIn Reddit
Contact and legal info | © 2016-07-31 injamben.de

Discussion

No entries yet

Add your comment


:
-- Enter the preceding text: