CVR-Lib last update 20 Sep 2009

cvr::fastHessianDetection::fastHessianDetection::parameters Class Reference

The parameters for the class fastHessianDetection. More...

#include <cvrFastHessianDetection.h>

Inheritance diagram for cvr::fastHessianDetection::fastHessianDetection::parameters:

Inheritance graph
[legend]
Collaboration diagram for cvr::fastHessianDetection::fastHessianDetection::parameters:

Collaboration graph
[legend]

List of all members.

Public Member Functions

 parameters ()
 parameters (const parameters &other)
 ~parameters ()
parameterscopy (const parameters &other)
parametersoperator= (const parameters &other)
virtual const std::string & name () const
virtual parametersclone () const
virtual parametersnewInstance () const
virtual bool write (ioHandler &handler, const bool complete=true) const
virtual bool read (ioHandler &handler, const bool complete=true)

Public Attributes

Parameters for the "scale-space" levels
int numberOfLevels
int initialKernelSize
eLevelSelectionMethod levelSelectionMethod
int initialKernelStep
int levelGroupSize
float normPower
Parameters for the location selection
eExtremaType extrema
eLocationSelectionMode locationSelectionMode
float threshold
bool subsampleLevels
int initialSamplingStep
Parameters for the estimation of the location orientation.
The algorithm in the SURF paper states that on a circular window around the detected location a set of samples is chosen for which some gradient related values (computed through Haar filters) are computed and used in a "weighted voting" approach.

Each sample votes in an orientation window (or windows) that covers the angle of the "gradient" and with a weight given by its magnitude. At the end, an orientation value is selected of the window with the largest accumulated magnitude and with the angle of the accumulated values.

bool computeOrientation
float orientationNeighborhoodFactor
float orientationSamplingStepFactor
float orientationWaveletSizeFactor
float orientationGaussianFactor
float orientationWindowWidth
int orientationNumberOfWindows


Detailed Description

The parameters for the class fastHessianDetection.

Constructor & Destructor Documentation

cvr::fastHessianDetection::fastHessianDetection::parameters::parameters (  ) 

Default constructor.

Reimplemented from cvr::locationDetection::locationDetection::parameters.

cvr::fastHessianDetection::fastHessianDetection::parameters::parameters ( const parameters other  ) 

Copy constructor.

Parameters:
other the parameters object to be copied

Reimplemented from cvr::locationDetection::locationDetection::parameters.

cvr::fastHessianDetection::fastHessianDetection::parameters::~parameters (  )  [virtual]


Member Function Documentation

virtual parameters* cvr::fastHessianDetection::fastHessianDetection::parameters::clone (  )  const [virtual]

Returns a pointer to a clone of the parameters.

Reimplemented from cvr::locationDetection::locationDetection::parameters.

parameters& cvr::fastHessianDetection::fastHessianDetection::parameters::copy ( const parameters other  ) 

Copy the contents of a parameters object.

Parameters:
other the parameters object to be copied
Returns:
a reference to this parameters object

Reimplemented from cvr::locationDetection::locationDetection::parameters.

virtual const std::string& cvr::fastHessianDetection::fastHessianDetection::parameters::name (  )  const [virtual]

Returns the complete name of the parameters class.

Reimplemented from cvr::locationDetection::locationDetection::parameters.

virtual parameters* cvr::fastHessianDetection::fastHessianDetection::parameters::newInstance (  )  const [virtual]

Returns a pointer to a new instance of the parameters.

Reimplemented from cvr::locationDetection::locationDetection::parameters.

parameters& cvr::fastHessianDetection::fastHessianDetection::parameters::operator= ( const parameters other  ) 

Copy the contents of a parameters object.

Parameters:
other the parameters object to be copied
Returns:
a reference to this parameters object

Reimplemented from cvr::locationDetection::locationDetection::parameters.

virtual bool cvr::fastHessianDetection::fastHessianDetection::parameters::read ( ioHandler handler,
const bool  complete = true 
) [virtual]

Read the parameters from the given ioHandler.

Parameters:
handler the ioHandler to be used
complete if true (the default) the enclosing begin/end will be also written, otherwise only the data block will be written.
Returns:
true if write was successful

Reimplemented from cvr::locationDetection::locationDetection::parameters.

virtual bool cvr::fastHessianDetection::fastHessianDetection::parameters::write ( ioHandler handler,
const bool  complete = true 
) const [virtual]

Write the parameters in the given ioHandler.

Parameters:
handler the ioHandler to be used
complete if true (the default) the enclosing begin/end will be also written, otherwise only the data block will be written.
Returns:
true if write was successful

Reimplemented from cvr::locationDetection::locationDetection::parameters.


Member Data Documentation

bool cvr::fastHessianDetection::fastHessianDetection::parameters::computeOrientation

Selection flag used to deactivate orientation computation.

In order to compute the so-called U-SURF descriptors, which lack of orientation, we can save some time by deactivating the orientation computation.

To deactivate the computation of the orientation just set this parameter to false.

Default value: true

eExtremaType cvr::fastHessianDetection::fastHessianDetection::parameters::extrema

Types of extrema to search for.

The locations are placed on local extrema of the scale-space representation of the image. Here you can indicate if they should be placed on Maxima, on Minima or on Both.

Default value: Both

int cvr::fastHessianDetection::fastHessianDetection::parameters::initialKernelSize

Kernel size for the highest spatian resolution.

This is the kernel side size, which means that, if you provide 9, then a kernel 9x9 will be built.

The kernel size is intrinsically tied to the sigma (standard deviation) of the kernel. A 9x9 kernel will always use a sigma=1.2 in accordance to the SURF paper. Any other kernel size will ajust the sigma linearly. A kernel of 27x27 will use a sigma of 3x1.2=3.6, since 27=3x9.

The size value has to be divisible by 3 and odd.

See parameters::initialKernelStep for an example.

Default value: 9

int cvr::fastHessianDetection::fastHessianDetection::parameters::initialKernelStep

Kernel step size change between levels.

This parameters is used only if you select the levelSelectionMethod as Blocks.

The multiresolutional representation of a channel contains several levels, each one computed with a kernel size to which this step value is iteratively added. Once the levelGroupSize has been reached, the kernel step is duplicated.

For example, with

  • initialKernelSize=9,
  • initialKernelStep=6,
  • levelGroupSize=4, and
  • numberOfLevels=12,

then the used kernel sizes will be

  1. 9x9, 15x15, 21x21, 27x27,
  2. 39x39, 51x51, 63x63, 75x75,
  3. 99x99, 123x123,147x147,171x171

The step value has to be even and divisible by three (and hence, divisible by 6). If not, then the closest number divisible by 6 will be used.

Default value: 6

int cvr::fastHessianDetection::fastHessianDetection::parameters::initialSamplingStep

Initial sampling step.

If subsampleLevels is set to true, this is the initial sampling step. If subsampleLevels is set to false then all levels use this value.

This value must be 1 or greater.

Default value: 2

int cvr::fastHessianDetection::fastHessianDetection::parameters::levelGroupSize

Number of levels in a group or octave.

If levelSelectionMethod is set to Blocks, a group of levels is the number of levels generated using the same kernel step. The "next" group will double the kernel size step.

See parameters::initialKernelStep for an example.

If levelSelectionMethod is set to Exponential, then this is the number of levels tried to be present in an octave. However, since the kernel sizes have to be divisible by three and have to be odd, then this might become true only for the higher levels.

Default value: 4

eLevelSelectionMethod cvr::fastHessianDetection::fastHessianDetection::parameters::levelSelectionMethod

Level selection method.

You can choose between two methods for the level selection:

  • The Blocks method resembles the one proposed in the SURF paper selecting blocks of levels separated by a fixed amount of "scale".
  • The Exponential method increases the scale exponentially, as is usual in scale-space pyramids. However, since the kernel sizes must be odd and divisible by three, the lower resolution will not exactly grow at exponential rates.

Default value: Blocks

eLocationSelectionMode cvr::fastHessianDetection::fastHessianDetection::parameters::locationSelectionMode

Mode for location selection.

You can select among different modes for selecting the locations according to their strength in the value of the hessian determinant.

This will affect the way in which the threshold value is interpreted. See parameters::threshold for more information.

Default value: Absolute

float cvr::fastHessianDetection::fastHessianDetection::parameters::normPower

Norm power.

Theoretically this value has to be 4.0f in order to keep the same information weight of all levels. You can modify this value to slightly smaller values (e.g. 3.9f) if you want to give more weight to larger locations, or larger values (4.1f) if you need to obtain locations of small details.

The outputs of the filters approximating the second order derivatives have to be normalized by the filter mask sizes (and hence, the norm will be proportional to the square of the scale). Additionally, the determinant of the hessian matrix is computed by products of two filter outputs, and hence, the total norm is proportional to the scale to the power of four.

Default value: 4

int cvr::fastHessianDetection::fastHessianDetection::parameters::numberOfLevels

Number of levels of the multi-scale representation used to detect interest points.

You need at least 3 levels.

See parameters::initialKernelStep for an example.

Default value: 12

float cvr::fastHessianDetection::fastHessianDetection::parameters::orientationGaussianFactor

Gaussian weights for the orientation.

The wavelet responses on the samples in the neighborhood used to compute the orientation are weighted with a gaussian that has an standard deviation of this factor multiplied by the scale on which the location has been found.

Default value: 2.5

float cvr::fastHessianDetection::fastHessianDetection::parameters::orientationNeighborhoodFactor

Factor used to compute radius of the circular neighborhood employed to compute the orientation of a location.

The real neighborhood radius will be computed multiplying the scale on which a location was found by this factor.

Default value: 6

int cvr::fastHessianDetection::fastHessianDetection::parameters::orientationNumberOfWindows

Number of angular windows.

Each window will contain angles in an interval of orientationWindowWidth distributed homogeneously on the 2*Pi radians.

Default value: 6

float cvr::fastHessianDetection::fastHessianDetection::parameters::orientationSamplingStepFactor

Factor used to compute the samples within the orientation neighborhood considered.

The real sampling step is computed multiplying this factor with the scale on which a location has been found.

The value orientationNeighborhoodFactor has to be divisible by this number.

Default value: 1

float cvr::fastHessianDetection::fastHessianDetection::parameters::orientationWaveletSizeFactor

Factor to compute the Haar wavelet side.

The real wavelet size is computed multiplying this factor with the scale on which the location has been found (always rounded to the next odd size, to be centered on the location)

Default value: 4

float cvr::fastHessianDetection::fastHessianDetection::parameters::orientationWindowWidth

Angular width for the orientation window.

This is used as follows. When a sample produces an angular value to vote for, over that angular value a slice is placed with an angular span of the value given here. All windows that fall beneath that slice will count the vote. This means, a value of zero forces just one window to be taken into consideration, as the original SURF paper states.

If this angular value is less than 2*Pi, then it is assumed to be given in radians. Otherwise is interpreted in degrees.

The value must be positive or zero.

In the original paper a value of zero is used, however, a value of 60 has proven (with orientationNumberOfWindows=6) to be much more reliable.

Default value: 60

bool cvr::fastHessianDetection::fastHessianDetection::parameters::subsampleLevels

Subsample levels.

The search for conspicuous locations can be made using all pixels in all levels (value set to false) or just some selected samples depending on the scale of a level (value set to true).

Default value: true

float cvr::fastHessianDetection::fastHessianDetection::parameters::threshold

Threshold value.

The meaning of this threshold value depends on the settings of the locationSelectionMode.

  • If locationSelectionMode is set to All, then this value is ignored and all detected locations will be returned.
  • If locationSelectionMode is set to Absolute, then this value means the weakest strength a location can exhibit in order to be returned in the results.
  • If locationSelectionMode is set to Relative, then this value means the fraction of the maximal location strengh that will be allowed. This value has to be between 0 and 1.
  • If locationSelectionMode is set to Conspicuous, then this value means the number of times the standard deviation will be multiplied with when added to the strengths mean value to compute the threshold.

  • If locationSelectionMode is set to Number, then this value means the maximal number of locations that will be returned, where only the strongest locations will be returned. This is the slowest method of all, since it requires to sort the values.

Default value: 0.1f


The documentation for this class was generated from the following file:

Generated on Sun Sep 20 22:08:45 2009 for CVR-Lib by Doxygen 1.5.8