/** 
* @file FeatureFactory.h
* @brief Abstract class for image classification
* @author Erik Rodner
* @date 07.09.2007
*/
#ifndef FeatureFactoryINCLUDE
#define FeatureFactoryINCLUDE

#include "core/vector/VectorT.h"
#include "core/vector/MatrixT.h"
#include "core/image/ImageT.h"
#include "core/imagedisplay/ImageDisplay.h"

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


namespace OBJREC {

/** Abstract class for feature extraction */
class FeatureFactory
{
    protected:

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

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

	/** convert image img into feature vector vec */
	virtual int convert ( const NICE::Image & img, NICE::Vector & vec );
        
    virtual int convertRGB ( const NICE::ColorImage & img, NICE::Vector & vec );


	/** convert multiple files to feature vectors */
	virtual int convertSet ( const LabeledSet *filelist, 
				 LabeledSetVector & storage );
	
	/** convert multiple files to feature vectors (rgb) */
	virtual int convertSetRGB ( const LabeledSet *filelist, 
				 LabeledSetVector & storage );

};


} // namespace

#endif
