Skip to content

gen_gaborGenGaborGenGaborgen_gaborgen_gaborπŸ”—

Short descriptionπŸ”—

gen_gaborGenGaborGenGaborgen_gaborgen_gabor β€” Generate a Gabor filter.

SignatureπŸ”—

gen_gabor( out image ImageFilter, real Angle, real Frequency, real Bandwidth, real Orientation, string Norm, string Mode, integer Width, integer Height )void GenGabor( HObject* ImageFilter, const HTuple& Angle, const HTuple& Frequency, const HTuple& Bandwidth, const HTuple& Orientation, const HTuple& Norm, const HTuple& Mode, const HTuple& Width, const HTuple& Height )static void HOperatorSet.GenGabor( out HObject imageFilter, HTuple angle, HTuple frequency, HTuple bandwidth, HTuple orientation, HTuple norm, HTuple mode, HTuple width, HTuple height )def gen_gabor( angle: float, frequency: float, bandwidth: float, orientation: float, norm: str, mode: str, width: int, height: int ) -> HObject

Herror gen_gabor( Hobject* ImageFilter, double Angle, double Frequency, double Bandwidth, double Orientation, const char* Norm, const char* Mode, const Hlong Width, const Hlong Height )

Herror T_gen_gabor( Hobject* ImageFilter, const Htuple Angle, const Htuple Frequency, const Htuple Bandwidth, const Htuple Orientation, const Htuple Norm, const Htuple Mode, const Htuple Width, const Htuple Height )

void HImage::GenGabor( double Angle, double Frequency, double Bandwidth, double Orientation, const HString& Norm, const HString& Mode, Hlong Width, Hlong Height )

void HImage::GenGabor( double Angle, double Frequency, double Bandwidth, double Orientation, const char* Norm, const char* Mode, Hlong Width, Hlong Height )

void HImage::GenGabor( double Angle, double Frequency, double Bandwidth, double Orientation, const wchar_t* Norm, const wchar_t* Mode, Hlong Width, Hlong Height ) (Windows only)

void HImage.GenGabor( double angle, double frequency, double bandwidth, double orientation, string norm, string mode, int width, int height )

DescriptionπŸ”—

gen_gaborGenGabor generates a Gabor filter with a user-definable bandpass frequency range and sign for the Hilbert transform. This is done by calculating a symmetrical filter in the frequency domain, which can be adapted by the parameters Angleangleangle, Frequencyfrequencyfrequency, Bandwidthbandwidthbandwidth and Orientationorientationorientation such that a certain frequency band and a certain direction range in the spatial domain is filtered out in the frequency domain.

The parameters Frequencyfrequencyfrequency (central frequency = distance from the DC term) and Orientationorientationorientation (direction) determine the center of the filter. Larger values of Frequencyfrequencyfrequency result in higher frequencies being passed. A value of 0 for Orientationorientationorientation generates a horizontally oriented β€œcrescent” (the bulge of the crescent points upward). Higher values of Orientationorientationorientation result in the counterclockwise rotation of the crescent.

The parameters Angleangleangle and Bandwidthbandwidthbandwidth are used to determine the range of frequencies and angles being passed by the filter. The larger Angleangleangle is, the smaller the range of angles passed by the filter gets (because the β€œcrescent” gets narrower). The larger Bandwidthbandwidthbandwidth is, the smaller the frequency band being passed gets (because the β€œcrescent” gets thinner).

To achieve a maximum overall efficiency of the filtering operation, the parameter Normnormnorm can be used to specify the normalization factor of the filter. If fft_genericFftGeneric and Normnormnorm \(=\) 'n'"n" is used the normalization in the FFT can be avoided. Modemodemode can be used to determine where the DC term of the filter lies. If fft_genericFftGeneric is used, 'dc_edge'"dc_edge" can be used to gain efficiency. If fft_imageFftImage and fft_image_invFftImageInv are used for filtering, Normnormnorm \(=\) 'none'"none" and Modemodemode \(=\) 'dc_center'"dc_center" must be used. Note that gen_gaborGenGabor cannot create a filter that can be used with rft_genericRftGeneric.

The resulting image is a two-channel real-image, containing the Gabor filter in the first channel and the corresponding Hilbert filter in the second channel.

Execution informationπŸ”—

Execution information
  • Multithreading type: reentrant (runs in parallel with non-exclusive operators).

  • Multithreading scope: global (may be called from any thread).

  • Processed without parallelization.

ParametersπŸ”—

ImageFilterimageFilterimage_filter (output_object) multichannel-image β†’ object (real)HObject (real)HImage (real)HObject (real)Hobject * (real)

Gabor and Hilbert filter.

Angleangleangle (input_control) real β†’ (real)HTuple (double)HTuple (double)floatHtuple (double)

Angle range, inversely proportional to the range of orientations.

Default: 1.41.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.01.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
Value range: 1.0 ≀ Angle ≀ 500.0
Minimum increment: 0.001
Recommended increment: 0.1

Frequencyfrequencyfrequency (input_control) real β†’ (real)HTuple (double)HTuple (double)floatHtuple (double)

Distance of the center of the filter to the DC term.

Default: 0.40.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.6990.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
Value range: 0.0 ≀ Frequency ≀ 0.7
Minimum increment: 0.00001
Recommended increment: 0.005

Bandwidthbandwidthbandwidth (input_control) real β†’ (real)HTuple (double)HTuple (double)floatHtuple (double)

Bandwidth range, inversely proportional to the range of frequencies being passed.

Default: 1.01.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.00.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
Value range: 0.05 ≀ Bandwidth ≀ 100.0
Minimum increment: 0.001
Recommended increment: 0.1

Orientationorientationorientation (input_control) real β†’ (real)HTuple (double)HTuple (double)floatHtuple (double)

Angle of the principal orientation.

Default: 1.51.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.140.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
Value range: 0.0 ≀ Orientation ≀ 3.1416
Minimum increment: 0.0001
Recommended increment: 0.05

Normnormnorm (input_control) string β†’ (string)HTuple (HString)HTuple (string)strHtuple (char*)

Normalizing factor of the filter.

Default: 'none'"none"
List of values: 'n', 'none'"n", "none"

Modemodemode (input_control) string β†’ (string)HTuple (HString)HTuple (string)strHtuple (char*)

Location of the DC term in the frequency domain.

Default: 'dc_center'"dc_center"
List of values: 'dc_center', 'dc_edge'"dc_center", "dc_edge"

Widthwidthwidth (input_control) integer β†’ (integer)HTuple (Hlong)HTuple (int / long)intHtuple (Hlong)

Width of the image (filter).

Default: 512512
Suggested values: 128, 160, 192, 256, 320, 384, 512, 640, 768, 1024, 2048, 4096, 8192128, 160, 192, 256, 320, 384, 512, 640, 768, 1024, 2048, 4096, 8192

Heightheightheight (input_control) integer β†’ (integer)HTuple (Hlong)HTuple (int / long)intHtuple (Hlong)

Height of the image (filter).

Default: 512512
Suggested values: 120, 128, 144, 240, 256, 288, 480, 512, 576, 1024, 2048, 4096, 8192120, 128, 144, 240, 256, 288, 480, 512, 576, 1024, 2048, 4096, 8192

ExampleπŸ”—

(HDevelop)

gen_gabor(Filter,1.4,0.4,1.0,1.5,'n','dc_edge',512,512)
fft_generic(Image,ImageFFT,'to_freq',-1,'none','dc_edge','complex')
convol_gabor(ImageFFT,Filter,Gabor,Hilbert)
fft_generic(Gabor,GaborInv,'from_freq',1,'none','dc_edge','byte')
fft_generic(Hilbert,HilbertInv,'from_freq',1,'none','dc_edge','byte')
energy_gabor(GaborInv,HilbertInv,Energy)

ResultπŸ”—

gen_gaborGenGabor returns 2 (H_MSG_TRUE) if all parameters are correct. If necessary, an exception is raised.

Combinations with other operatorsπŸ”—

Combinations

Possible predecessors

fft_imageFftImage, fft_genericFftGeneric

Possible successors

convol_gaborConvolGabor

Alternatives

gen_bandpassGenBandpass, gen_bandfilterGenBandfilter, gen_highpassGenHighpass, gen_lowpassGenLowpass

See also

fft_image_invFftImageInv, energy_gaborEnergyGabor

ModuleπŸ”—

Foundation