Image Component Library (ICL)
|
Applies Gabor filter operation on images. More...
#include <GaborOp.h>
Public Member Functions | |
GaborOp () | |
creates an empty GaborOp More... | |
GaborOp (const utils::Size &kernelSize, std::vector< icl32f > lambdas, std::vector< icl32f > thetas, std::vector< icl32f > psis, std::vector< icl32f > sigmas, std::vector< icl32f > gammas) | |
creates a new gabor op with given kernel size and parameters More... | |
~GaborOp () | |
void | setKernelSize (const utils::Size &size) |
sets the current kernel size More... | |
void | addLambda (float lambda) |
add a new lambda value More... | |
void | addTheta (float theta) |
add a new theta value More... | |
void | addPsi (float psi) |
add a new psi value More... | |
void | addSigma (float sigma) |
add a new sigma value More... | |
void | addGamma (float gamma) |
add a new gamma value More... | |
void | updateKernels () |
update the current kernels by currently possible value combinations More... | |
virtual void | apply (const core::ImgBase *poSrc, core::ImgBase **ppoDst) |
apply all filters to an image More... | |
std::vector< icl32f > | apply (const core::ImgBase *poSrc, const utils::Point &p) |
apply all filters to an image at a specific position More... | |
const std::vector< core::Img32f > & | getKernels () const |
returns all currently created kernels More... | |
virtual void | apply (const core::ImgBase *operand1, core::ImgBase **dst)=0 |
Import unaryOps apply function without destination image. More... | |
virtual const core::ImgBase * | apply (const core::ImgBase *src) |
Import unaryOps apply function without destination image. More... | |
Public Member Functions inherited from icl::filter::UnaryOp | |
UnaryOp () | |
Explicit empty constructor. More... | |
UnaryOp (const UnaryOp &other) | |
Explicit copy constructor. More... | |
UnaryOp & | operator= (const UnaryOp &other) |
Explicit declaration of the assignment operator. More... | |
virtual | ~UnaryOp () |
Destructor. More... | |
virtual ICL_DEPRECATED void | applyMT (const core::ImgBase *operand1, core::ImgBase **dst, unsigned int nThreads) |
apply function for multithreaded filtering (currently even slower than using one thread) More... | |
virtual const core::ImgBase * | apply (const core::ImgBase *src) |
applys the filter usign an internal buffer as output image More... | |
void | operator() (const core::ImgBase *src, core::ImgBase **dst) |
function operator (alternative for apply(src,dst) More... | |
const core::ImgBase * | operator() (const core::ImgBase *src) |
function operator for the implicit destination apply(src) call More... | |
const core::ImgBase & | operator() (const core::ImgBase &src) |
reference based function operator More... | |
void | setClipToROI (bool bClipToROI) |
sets if the image should be clip to ROI or not More... | |
void | setCheckOnly (bool bCheckOnly) |
sets if the destination image should be adapted to the source, or if it is only checked if it can be adapted. More... | |
bool | getClipToROI () const |
returns the ClipToROI status More... | |
bool | getCheckOnly () const |
returns the CheckOnly status More... | |
virtual void | setPropertyValue (const std::string &propertyName, const utils::Any &value) |
sets value of a property (always call call_callbacks(propertyName) or Configurable::setPropertyValue) More... | |
Public Member Functions inherited from icl::utils::Configurable | |
virtual | ~Configurable () |
virtual destructor More... | |
Configurable (const Configurable &other) | |
Copy constructor. More... | |
Configurable & | operator= (const Configurable &other) |
Assignment operator. More... | |
void | setConfigurableID (const std::string &ID) |
sets the ID of this configurable More... | |
const std::string & | getConfigurableID () const |
returns the configurables static ID More... | |
bool | isOrderedFlagSet () const |
returns whether the ordered flag is set More... | |
void | deactivateProperty (const std::string &pattern) |
adds an additional deativation pattern More... | |
void | deleteDeactivationPattern (const std::string &pattern) |
removed a formerly added deactivation pattern More... | |
std::vector< std::string > | getPropertyListWithoutDeactivated () const |
this returns a filtered list of properties (using all filters added by deactivateProperty) More... | |
virtual void | adaptProperty (const std::string &name, const std::string &newType, const std::string &newInfo, const std::string &newToolTip) |
this function can be used to adapt a specific property afterwards More... | |
void | registerCallback (const Callback &cb) |
add a callback for changed properties More... | |
void | removedCallback (const Callback &cb) |
removes a callback that was registered before More... | |
void | syncChangesTo (Configurable *others, int num=1) |
this can be used to let this instance also apply property changes to others More... | |
virtual std::vector< std::string > | getPropertyList () const |
returns a list of All properties, that can be set using setProperty More... | |
virtual bool | supportsProperty (const std::string &propertyName) const |
base implementation for property check (seaches in the property list) More... | |
virtual void | saveProperties (const std::string &filename, const std::vector< std::string > &propertiesToSkip=EMPTY_VEC) const |
writes all available properties into a file More... | |
virtual void | loadProperties (const std::string &filename, const std::vector< std::string > &propertiesToSkip=EMPTY_VEC) |
reads a camera config file from disc More... | |
virtual std::string | getPropertyType (const std::string &propertyName) const |
get type of property More... | |
virtual std::string | getPropertyInfo (const std::string &propertyName) const |
get information of a properties valid values More... | |
virtual Any | getPropertyValue (const std::string &propertyName) const |
returns the current value of a property or a parameter More... | |
virtual std::string | getPropertyToolTip (const std::string &propertyName) const |
returns the tooltip description for a given property More... | |
virtual int | getPropertyVolatileness (const std::string &propertyName) const |
Returns whether this property may be changed internally. More... | |
Static Public Member Functions | |
static core::Img32f * | createKernel (const utils::Size &size, float lambda, float theta, float psi, float sigma, float gamma) |
static function to create a gabor kernel by given gabor parameters More... | |
Static Public Member Functions inherited from icl::filter::UnaryOp | |
static UnaryOp * | fromString (const std::string &definition) |
Creates a UnaryOp instance from given string definition. More... | |
static std::string | getFromStringSyntax (const std::string &opSpecifier) |
gives a string syntax description for given opSpecifier More... | |
static std::vector< std::string > | listFromStringOps () |
returns a list of all supported OP_SPEC values for the fromString function More... | |
static void | applyFromString (const std::string &definition, const core::ImgBase *src, core::ImgBase **dst) |
creates, applies and releases a UnaryOp defined by given definition string More... | |
Static Public Member Functions inherited from icl::utils::Configurable | |
static std::string | create_default_ID (const std::string &prefix) |
this function can be used in subclasses to create a default ID More... | |
static Configurable * | get (const std::string &id) |
returns configurable by given ID More... | |
static void | register_configurable_type (const std::string &classname, Function< Configurable * > creator) |
registers a configurable type More... | |
static std::vector< std::string > | get_registered_configurables () |
returns a list of all registered configurable classnames More... | |
static Configurable * | create_configurable (const std::string &classname) |
creates a configurable by given name More... | |
Private Attributes | |
std::vector< icl32f > | m_vecLambdas |
std::vector< icl32f > | m_vecThetas |
std::vector< icl32f > | m_vecPsis |
std::vector< icl32f > | m_vecSigmas |
std::vector< icl32f > | m_vecGammas |
std::vector< core::Img32f > | m_vecKernels |
std::vector< core::ImgBase * > | m_vecResults |
utils::Size | m_oKernelSize |
Additional Inherited Members | |
Public Types inherited from icl::utils::Configurable | |
typedef Function< void, const Property & > | Callback |
Function type for changed properties. More... | |
Static Public Attributes inherited from icl::utils::Configurable | |
static const std::vector< std::string > | EMPTY_VEC |
used as shortcut – just an empty vector of std::strings More... | |
Protected Member Functions inherited from icl::filter::UnaryOp | |
bool | prepare (core::ImgBase **ppoDst, core::depth eDepth, const utils::Size &imgSize, core::format eFormat, int nChannels, const utils::Rect &roi, utils::Time timestamp=utils::Time::null) |
virtual bool | prepare (core::ImgBase **ppoDst, const core::ImgBase *poSrc) |
check+adapt destination image to properties of given source image More... | |
virtual bool | prepare (core::ImgBase **ppoDst, const core::ImgBase *poSrc, core::depth eDepth) |
Protected Member Functions inherited from icl::utils::Configurable | |
void | addProperty (const std::string &name, const std::string &type, const std::string &info, const Any &value=Any(), const int volatileness=0, const std::string &tooltip=std::string()) |
This can be used by derived classes to store supported properties in the internal list. More... | |
void | addChildConfigurable (Configurable *configurable, const std::string &childPrefix="") |
This adds another configurable as child. More... | |
void | removeChildConfigurable (Configurable *configurable) |
removes the given child configurable More... | |
Property & | prop (const std::string &propertyName) |
this CAN be used e.g. to store a property value in internal property-list More... | |
const Property & | prop (const std::string &propertyName) const |
this CAN be used e.g. to store a property value in internal property-list More... | |
Configurable (const std::string &ID="", bool ordered=true) | |
create this configurable with given ID More... | |
void | call_callbacks (const std::string &propertyName, const Configurable *caller) const |
calls all registered callbacks More... | |
Protected Member Functions inherited from icl::utils::Uncopyable | |
Uncopyable () | |
Empty base constructor. More... | |
Protected Attributes inherited from icl::filter::UnaryOp | |
utils::MultiThreader * | m_poMT |
Protected Attributes inherited from icl::utils::Configurable | |
std::vector< Callback > | callbacks |
internally managed list of callbacks More... | |
Applies Gabor filter operation on images.
A short introduction to Gabor filters can be found at Wikipedia: A Gabor filter is a linear filter whose impulse response is defined by a harmonic function multiplied by a Gaussian function. Because of the multiplication-convolution property, the Fourier transform of a Gabor filter's impulse response is the convolution of the Fourier transform of the harmonic function and the Fourier transform of the Gaussian function.
where
and
In this equation, represents the wavelength of the cosine factor, represents the orientation of the normal to the parallel stripes of a Gabor function in degrees, is the phase offset in degrees, and is the spatial aspect ratio, and specifies the ellipticity of the support of the Gabor function.
Gabor filters are directly related to Gabor wavelets, since they can be designed for number of dilations and rotations. However, in general, expansion is not applied for Gabor wavelets, since this requires computation of biorthogonal wavelets, which may be very time-consuming. Therefore, usually, a filter bank consisting of Gabor filters with various scales and rotations is created. The filters are convolved with the signal, resulting in a so-called Gabor space. This process is closely related to processes in the primary visual cortex. The Gabor space is very useful in e.g., image processing applications such as iris recognition. Relations between activations for a specific spatial location are very distinctive between objects in an image. Furthermore, important activations can be extracted from the Gabor space in order to create a sparse object representation (cite http://en.wikipedia.org/wiki/Gabor_filter).
The GaborOp class provides basic functionalities for applying Gabor filters on Images. To achieve optimal performance, it wraps the ConvolutionOp class to realize the internal image convolution operations. Determined by a set op input parameters, it internally creates a filter bank that caches all gabor masks. In contrast to other filters, it knows two modes:
The GaborOp class provides functionalities for the creation of Gabor-Filter kernels, as well as for applying gabor filter operation on images. As mentioned above, in contrast to other convolution operations, Gabor filters are often applied as so called Gabor-Jets at some specified image locations only. A Gabor-Jet complies a stack of gabor kernels that are created by some methodical variation of one, some or all gabor mask parameters.
Each GaborOp object provide function to create a gabor jet internally, whereas in the easiest case, there is only one value for each parameter, an consequently, only a single gabor mask is created.
In addition to the parameters mentioned in the formula above, the size of the created gabor kernels must be set, and the parameter values must be adapted to to it. In the following, each parameter is explained again, but this time with respect to its underlying effect for a kernel size of KWxKH.
icl::filter::GaborOp::GaborOp | ( | ) |
creates an empty GaborOp
icl::filter::GaborOp::GaborOp | ( | const utils::Size & | kernelSize, |
std::vector< icl32f > | lambdas, | ||
std::vector< icl32f > | thetas, | ||
std::vector< icl32f > | psis, | ||
std::vector< icl32f > | sigmas, | ||
std::vector< icl32f > | gammas | ||
) |
creates a new gabor op with given kernel size and parameters
The Gabor-Jet internally created consist of one convolution kernel for each possible combination of the parameter values. E.g. if the parameters are:
the gabor jet consist of 4 convolution kernels with fixed params , , and variable params
icl::filter::GaborOp::~GaborOp | ( | ) |
void icl::filter::GaborOp::addGamma | ( | float | gamma | ) |
add a new gamma value
void icl::filter::GaborOp::addLambda | ( | float | lambda | ) |
add a new lambda value
void icl::filter::GaborOp::addPsi | ( | float | psi | ) |
add a new psi value
void icl::filter::GaborOp::addSigma | ( | float | sigma | ) |
add a new sigma value
void icl::filter::GaborOp::addTheta | ( | float | theta | ) |
add a new theta value
|
virtual |
apply all filters to an image
The output image gets as many channels as kernels could be created by combining given parameters. Channels c of ppoDst is complies the convolution result of the c-th kernel.
Implements icl::filter::UnaryOp.
virtual void icl::filter::UnaryOp::apply |
Import unaryOps apply function without destination image.
virtual const core::ImgBase* icl::filter::UnaryOp::apply |
Import unaryOps apply function without destination image.
std::vector<icl32f> icl::filter::GaborOp::apply | ( | const core::ImgBase * | poSrc, |
const utils::Point & | p | ||
) |
apply all filters to an image at a specific position
The result vector contains the filter-response for all kernels
|
static |
static function to create a gabor kernel by given gabor parameters
As reminder:
where
and
|
inline |
returns all currently created kernels
void icl::filter::GaborOp::setKernelSize | ( | const utils::Size & | size | ) |
sets the current kernel size
if the kernels have already been created, they are updated to this new size value
void icl::filter::GaborOp::updateKernels | ( | ) |
update the current kernels by currently possible value combinations
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |