#include <SpaceVariant/ScaleSpaceOps.H>
Public Types | |
typedef std::vector< std::pair < float, float > > | EdgeTemplate |
Public Member Functions | |
LocalEdge (const Dims &inp_dims, const float &std_center, const float &smult, const float &orientation, const uint &length, const uint density) | |
Public Attributes | |
EdgeTemplate | onReg |
EdgeTemplate | offReg |
A class to represent a template of a local edge at a specific orientaton and length and with a specific dinsity of sub regions. The spaceing is set for difference of gaussians responses where the centers are allowed to be offset if smult < 1.0 else the spacing is set suitable for sub regions which are made of center-surround LGN type resonses. Orientation should be in radians, and all other values in pixels. Its best, but not reqired if length is odd.
The optimal offset for a given std_center and smult was determined by fitting difference of Gaussians (with different offsets) to 1 period of a sin function for different frequencies. A function offset=c*std_center fit this function quite nicely
For the edge made of two DoG's things are a little more complicated and the best parameters to a sin function form a surface in 3D (std_center, smult, offset). First for each surround_multiplier we fit a linear function to find the best offset as above. Then fit a function of surround_multiplier over 'c' variable as the sum of two exponentials. Once some initial paramters were estimated we fit the whole surface to obtain :offset=(a*exp(surround_mult*b) + c*exp(surround_mult*d) + e * std_center) where a-e are constants
Definition at line 69 of file ScaleSpaceOps.H.