/**
 * @file FeatureLearningRegionBased.h
 * @brief compute new histogram entries by extracting features from (moderately large) regions which have high novelty scores
 * @author Alexander Freytag
 * @date 17-04-2013 (dd-mm-yyyy)
*/
#ifndef _INCLUDEFEATURELEARNINGREGIONBASED
#define _INCLUDEFEATURELEARNINGREGIONBASED

#include "FeatureLearningPrototypes.h"

#include "segmentation/RegionSegmentationMethod.h"


namespace OBJREC
{

  /**
   * @class FeatureLearningRegionBased
   * @briefcompute new histogram entries by extracting features from (moderately large) regions which have high novelty scores
   * @author Alexander Freytag
   * @date 17-04-2013 (dd-mm-yyyy)
  */  
  
  class FeatureLearningRegionBased : public FeatureLearningPrototypes
  {

    protected:

      /************************
       * 
       *   protected variables
       * 
       **************************/  
      
      //! low level Segmentation method
      RegionSegmentationMethod *segmentationAlgo;      
      
      //! boolean whether to reuse segmentation results for single images in different runs
      bool reuseSegmentation;      
      
      //! determine a grid on which we extract local features
      int i_gridSize;

      /************************
       * 
       *   protected methods
       * 
       **************************/      


    public:

      /** constructor
        *  @param _conf needs a configfile
        *  @param _md and a MultiDataset (contains images and other things)
        */
      FeatureLearningRegionBased ( const NICE::Config *_conf, const OBJREC::MultiDataset *_md , const std::string & _section = "featureLearning");

      /** simple destructor */
      virtual ~FeatureLearningRegionBased();
      
      /** this function has to be overloaded by all subclasses
          @param imgWithNovelContent 
      */
      virtual void learnNewFeatures ( const std::string & filename );
      
  };


} // namespace

#endif
