23 ScaleSpace::ScaleSpace()
25 _width = _height = _levels = 0;
32 ScaleSpace::~ScaleSpace()
37 bool ScaleSpace::AllocateResources(
int lines,
int cols,
int levels,
double *scales)
53 _scales = (
double*)malloc(_levels*
sizeof(
double));
54 if(scales == 0)
return false;
55 _scalespace = (
float**)malloc(_levels*
sizeof(
float*));
56 if(_scalespace == 0)
return false;
57 _filters =
new FastGauss[levels];
58 if(_filters == 0)
return false;
59 for(i=0; i < levels; i++)
61 _scales[i] = scales[i];
62 _filters[i].AllocateResources(lines, cols, _scales[i]);
63 _scalespace[i] = (
float*)malloc(_width*_height*
sizeof(
float));
64 if(_scalespace[i] == 0)
return false;
70 bool ScaleSpace::FreeResources()
77 for(i=0; i < _levels; i++)
85 bool ScaleSpace::BuildLevel(
int level,
float *in)
89 if( level < 0 || level >= _levels )
91 return _filters[level].GaussFilt(in, _scalespace[level]);
95 bool ScaleSpace::BuildAll(
float *in)
101 for(i = 0; i < _levels; i++)
102 retval = (retval && _filters[i].GaussFilt(in, _scalespace[i]));
106 float* ScaleSpace::GetLevel(
int level)
110 if( level < 0 || level >= _levels )
112 return _scalespace[level];
Implements a Gaussian Scale Space for floating point images.