[ VIGRA Homepage | Class Index | Function Index | File Index | Main Page ]

details Gabor Filter VIGRA


Classes

class  GaborFilterFamily
 Family of gabor filters of different scale and direction. More...


Functions

template<...> void createGaborFilter (DestImageIterator destUpperLeft, DestImageIterator destLowerRight, DestAccessor da, double orientation, double centerFrequency, double angularSigma, double radialSigma)
 Create a gabor filter in frequency space.

double radialGaborSigma (double centerFrequency)
 Calculate sensible radial sigma for given parameters.

double angularGaborSigma (int directionCount, double centerFrequency)
 Calculate sensible angular sigma for given parameters.



Detailed Description


Functions to create or apply gabor filter (latter based on FFTW).


Function Documentation


  double angularGaborSigma (...)
 
 

Calculate sensible angular sigma for given parameters.

"Sensible" means: If you use a range of gabor filters for feature detection, you are interested in minimal redundance. This is hard to define but one possible try is to arrange the filters in frequency space, so that the half-peak-magnitude ellipses touch each other.

To do so, you must know the number of directions (first parameter for the angular sigma function) and the center frequency of the filter you want to calculate the sigmas for.

The exact formulas are:

    sigma_radial= 1/sqrt(ln(4)) * centerFrequency/3

    sigma_angular= 1/sqrt(ln(4)) * tan(pi/(directions*2))
 sqrt(8/9) * centerFrequency

Declaration:

    namespace vigra {
        inline
        double angularGaborSigma(int directionCount, double centerFrequency)
    }


  void createGaborFilter (...)
 
 

Create a gabor filter in frequency space.

The orientation is given in radians, the other parameters are the center frequency (for example 0.375 or smaller) and the two angular and radial sigmas of the gabor filter. (See angularGaborSigma() for an explanation of possible values.)

The energy of the filter is explicitely normalized to 1.0.

Declarations:

pass arguments explicitly:

    namespace vigra {
        template <class DestImageIterator, class DestAccessor>
        void createGaborFilter(DestImageIterator destUpperLeft,
                               DestImageIterator destLowerRight,
                               DestAccessor da,
                               double orientation, double centerFrequency,
                               double angularSigma, double radialSigma)
    }

use argument objects in conjunction with Argument Object Factories:

    namespace vigra {
        template <class DestImageIterator, class DestAccessor>
        inline
        void createGaborFilter(triple<DestImageIterator,
                                      DestImageIterator,
                                      DestAccessor> dest,
                               double orientation, double centerFrequency,
                               double angularSigma, double radialSigma)
    }

Usage:

#include "vigra/gaborfilter.hxx"

Namespace: vigra

    vigra::FImage gabor(w,h);

    vigra::createGaborFilter(destImageRange(gabor), orient, freq,
                             angularGaborSigma(directionCount, freq)
                             radialGaborSigma(freq));


  double radialGaborSigma (...)
 
 

Calculate sensible radial sigma for given parameters.

For a brief introduction what is meant with "sensible" sigmas, see angularGaborSigma().

Declaration:

    namespace vigra {
        inline
        double radialGaborSigma(double centerFrequency)
    }

© Ullrich Köthe (koethe@informatik.uni-hamburg.de)
Cognitive Systems Group, University of Hamburg, Germany

html generated using doxygen and Python
VIGRA 1.3.2 (27 Jan 2005)