/**
* @file ColorHistogramFeature.h
* @brief simple color histograms
* @author Erik Rodner
* @date 26/08/2008

*/
#ifndef ColorHistogramFeatureINCLUDE
#define ColorHistogramFeatureINCLUDE

#include "core/vector/VectorT.h"
#include "core/vector/MatrixT.h"

#include "core/basics/Config.h"
#include "vislearning/cbaselib/Feature.h"


namespace OBJREC {

/** simple color histograms */
class ColorHistogramFeature : public Feature
{

  protected:

    /** @{ feature parameter */
    int window_size_x;
    int window_size_y;

    int bin;
    /** @} */

    /** @{ parameter for feature generation */
    int numScales;
    int numBins;
    double scaleStep;
    /** @} */

  public:

    /** simple constructor */
    ColorHistogramFeature ( const NICE::Config *conf );

    /** internally used by ColorHistogramFeature::explode */
    ColorHistogramFeature () {};

    /** simple destructor */
    virtual ~ColorHistogramFeature();

    double val ( const Example *example ) const;
    void explode ( FeaturePool & featurePool, bool variableWindow = true ) const;
    Feature *clone() const;
    Feature *generateFirstParameter () const;

    void restore ( std::istream & is, int format = 0 );
    void store ( std::ostream & os, int format = 0 ) const;
    void clear ();
};

} // namespace

#endif
