void Ftr::toViz( vecFtr &ftrs, const char *dirname ) { char fname[1024]; Matrixu img; for( uint k=0; k<ftrs.size(); k++ ){ sprintf_s(fname,"%s/ftr%05d.png",dirname,k); img = ftrs[k]->toViz(); img.SaveImage(fname); } }
void Ftr::compute( SampleSet &samples, const vecFtr &ftrs) { int numftrs = ftrs.size(); int numsamples = samples.size(); if( numsamples==0 ) return; samples.resizeFtrs(numftrs); #pragma omp parallel for for( int ftr=0; ftr<numftrs; ftr++ ){ //#pragma omp parallel for for( int k=0; k<numsamples; k++ ){ samples.getFtrVal(k,ftr) = ftrs[ftr]->compute(samples[k]); } } }
/* * Compute filter values for all samples in SampleSet. * Directly modify _ftrVals in input SampleSet. */ void Ftr::computeAll(SampleSet &samples, const vecFtr &ftrs) { int numftrs = ftrs.size(); int numsamples = samples.size(); if (numsamples == 0) return; fprintf(stderr, "compute %d feature values for all %d samples \n", numftrs, numsamples); samples._ftrVals.zeros(numsamples, numftrs); // #pragma omp parallel for for (int j = 0; j < numftrs; j++) { for (int i = 0; i < numsamples; i++) { samples._ftrVals(i, j) = ftrs[j]->compute(samples[i]); ; } } }
void Ftr::deleteFtrs( vecFtr ftrs ) { for( uint k=0; k<ftrs.size(); k ++ ) delete ftrs[k]; }