123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- /**
- * @file FCGreyValues.cpp
- * @brief extract simple greyvalue features
- * @author Erik Rodner
- * @date 11/15/2007
- */
- #include <iostream>
- #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;
- }
|