/** * @file FCGreyValues.cpp * @brief extract simple greyvalue features * @author Erik Rodner * @date 11/15/2007 */ #include #include "vislearning/features/simplefeatures/FCGreyValues.h" using namespace OBJREC; using namespace std; // refactor-nice.pl: check this substitution // old: using namespace ice; using namespace NICE; FCGreyValues::FCGreyValues( const Config * conf, int _xsize, int _ysize ) : FeatureFactory ( conf ), xsize(_xsize), ysize(_ysize) { xsize = conf->gI("FCGreyValues", "xsize", _xsize <= 0 ? 20 : _xsize ); ysize = conf->gI("FCGreyValues", "ysize", _ysize <= 0 ? 50 : _ysize ); // refactor-nice.pl: check this substitution // old: string normalization_s = conf->gS("FCGreyValues", "normalization", "n01"); std::string normalization_s = conf->gS("FCGreyValues", "normalization", "n01"); if ( normalization_s == "n01" ) normalization = NORMALIZE_N01; else if ( normalization_s == "stddev" ) normalization = NORMALIZE_STDDEV; else if ( normalization_s == "mean" ) normalization = NORMALIZE_MEAN; else if ( normalization_s == "none" ) normalization = NORMALIZE_NONE; else { fprintf (stderr, "FCGreyValues::FCGreyValues: unknown normalization method\n"); exit(-1); } // refactor-nice.pl: check this substitution // old: tmp = NewImg(xsize, ysize, 255); tmp.resize(xsize, ysize); } FCGreyValues::~FCGreyValues() { } // refactor-nice.pl: check this substitution // old: int FCGreyValues::convert ( const Image & img, Vector & vec ) int FCGreyValues::convert ( const NICE::Image & img, NICE::Vector & vec ) { tmp.set(0); NICE::scale ( img, &tmp ); vec.resize(xsize*ysize); double mean = 0.0; double stddev = 0.0; if ( normalization != NORMALIZE_NONE ) { // compute mean for ( int yi = 0 ; yi < ysize ; yi++ ) for ( int xi = 0 ; xi < xsize ; xi++ ) // refactor-nice.pl: check this substitution // old: mean += GetVal(tmp, xi, yi); mean += tmp.getPixel(xi,yi); mean /= (xsize*ysize); if ( normalization != NORMALIZE_MEAN ) { // compute stddev stddev = 0.0; for ( int yi = 0 ; yi < ysize ; yi++ ) for ( int xi = 0 ; xi < xsize ; xi++ ) { // refactor-nice.pl: check this substitution // old: double d = GetVal(tmp,xi,yi) - mean; double d = tmp.getPixel(xi,yi) - mean; stddev += d*d; } if ( stddev < 10e-5 ) return -1; stddev /= xsize*ysize; stddev = sqrt(stddev); } } if ( normalization == NORMALIZE_STDDEV ) { // normalize pixel values int k = 0; for ( int yi = 0; yi < ysize ; yi++ ) for ( int xi = 0; xi < xsize ; xi++,k++ ) // refactor-nice.pl: check this substitution // old: vec[k] = (GetVal(tmp,xi,yi) - mean) / stddev + mean; vec[k] = (tmp.getPixel(xi,yi) - mean) / stddev + mean; } else if ( normalization == NORMALIZE_N01 ) { // normalize pixel values int k = 0; for ( int yi = 0 ; yi < ysize ; yi++ ) for ( int xi = 0 ; xi < xsize ; xi++,k++ ) // refactor-nice.pl: check this substitution // old: vec[k] = (GetVal(tmp,xi,yi) - mean) / stddev; vec[k] = (tmp.getPixel(xi,yi) - mean) / stddev; } else if ( normalization == NORMALIZE_MEAN ) { // normalize pixel values int k = 0; for ( int yi = 0 ; yi < ysize ; yi++ ) for ( int xi = 0 ; xi < xsize ; xi++,k++ ) // refactor-nice.pl: check this substitution // old: vec[k] = (GetVal(tmp,xi,yi) - mean); vec[k] = (tmp.getPixel(xi,yi) - mean); } else { int k = 0; for ( int yi = 0 ; yi < ysize ; yi++ ) for ( int xi = 0 ; xi < xsize ; xi++,k++ ) // refactor-nice.pl: check this substitution // old: vec[k] = GetVal(tmp,xi,yi); vec[k] = tmp.getPixel(xi,yi); } return 0; }