Generate a Gabor filter.
gen_gabor generates a Gabor filter with a user-definable bandpass frequency range and sign for the Hilbert transformation. This is done by calculating a symmetrical filter in the frequency domain, which can be adapted by the parameters Angle, Frequency, Bandwidth und Orientation such that a certain frequency band and a certain direction range in the spatial domain is filtered out in the frequency domain.
The parameters Frequency (central frequency = distance from the DC term) and Orientation (direction) determine the center of the filter. Larger values of Frequency result in higher frequencies being passed. A value of 0 for Orientation generates a horizontally oriented ``crescent'' (the bulge of the crescent points upward). Higher values of Orientation result in the counterclockwise rotation of the crescent.
The parameters Angle and Bandwidth are used to determine the range of frequencies and angles being passed by the filter. The larger Angle is, the smaller the range of angles passed by the filter gets (because the ``crescent'' gets narrower). The larger Bandwidth is, the smaller the frequency band being passed gets (because the ``crescent'' gets thinner).
The resulting image is a byte-image, containing the Gabor filter in the upper half of the image (symmetry of the Gabor filter), and the corresponding sign values needed for the calculation of the Hilbert transform, which is needed to compute the local energy of the image, in the lower half of the image.
ImageFilter (output_object) |
image(-array) -> object : byte |
Gabor filter (and sign values). |
Angle (input_control) |
real -> real |
Angle range, inversely proportional to the range of orientations. | |
Default value: 1.4 | |
Suggested values: 1.0, 1.2, 1.4, 1.6, 2.0, 2.5, 3.0, 5.0, 6.0, 10.0, 20.0, 30.0, 50.0, 70.0, 100.0 | |
Range of values: 1.0 <= Angle <= 500.0 | |
Minimum increment: 0.001 | |
Recommended increment: 0.1 |
Frequency (input_control) |
real -> real |
Distance of the center of the filter to the DC term. | |
Default value: 0.4 | |
Suggested values: 0.0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.50, 0.55, 0.60, 0.65, 0.699 | |
Range of values: 0.0 <= Frequency <= 0.7 | |
Minimum increment: 0.00001 | |
Recommended increment: 0.005 |
Bandwidth (input_control) |
real -> real |
Bandwith range, inversely proportional to the range of frequencies being passed. | |
Default value: 1.0 | |
Suggested values: 0.1, 0.3, 0.7, 1.0, 1.5, 2.0, 3.0, 5.0, 7.0, 10.0, 15.0, 20.0, 30.0, 50.0 | |
Range of values: 0.05 <= Bandwidth <= 100.0 | |
Minimum increment: 0.001 | |
Recommended increment: 0.1 |
Orientation (input_control) |
real -> real |
Angle of the principal orientation being passed. | |
Default value: 1.5 | |
Suggested values: 0.0, 0.2, 0.4, 0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2, 2.4, 2.6, 2.8, 3.0, 3.14 | |
Range of values: 0.0 <= Orientation <= 3.1416 | |
Minimum increment: 0.0001 | |
Recommended increment: 0.05 |
Size (input_control) |
integer -> integer |
Size (dimension) of the image (filter). | |
Default value: 512 | |
List of values: 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192 |
fft__(Image,&FFT); gen_gabor(&Filter,1.4,0.4,1.0,1.5,512); convol_gabor__(FFT,Filter,&Gabor,&Hilbert); fft_inv__(Gabor,&GaborInv); fft_inv__(Hilbert,&HilbertInv); energy__(GaborInv,HilbertInv,&Energy);
gen_gabor returns TRUE if all parameters are correct. If necessary, an exception is raised.
gen_bandpass, gen_bandfilter, gen_highpass, gen_lowpass