/** 
* @file PSSBackgroundModel.h
* @brief simple background models
* @author Erik Rodner
* @date 03/19/2009

*/
#ifndef PSSBACKGROUNDMODELINCLUDE
#define PSSBACKGROUNDMODELINCLUDE

#ifdef NOVISUAL
#include <objrec/nice_nonvis.h>
#else
#include <objrec/nice.h>
#endif
 
#include "PostSemSeg.h"


namespace OBJREC {

/** simple background models */
class PSSBackgroundModel : public PostSemSeg
{

    protected:
	int backgroundModelType;
	double threshold;
	int backgroundClass;

    public:
	enum {
	    BGM_FIXED_ENTROPY_THRESHOLD = 0,
	    BGM_ADAPTIVE_ENTROPY_THRESHOLD,
	    BGM_NONE
	};

	/** 
	    @param backgroundModelType select one method from the enum type of this class
	    @param threshold some methods need a threshold or parameter
	*/
	PSSBackgroundModel ( int backgroundModelType, double threshold, int backgroundClass );
      
	/** simple destructor */
	virtual ~PSSBackgroundModel();
	
	// refactor-nice.pl: check this substitution
	// old: virtual void postprocess ( Image & result, GenericImage<double> & probabilities );
	virtual void postprocess ( NICE::Image & result, GenericImage<double> & probabilities );
     
};


} // namespace

#endif