/** 
* @file Preprocess.h
* @brief simple preprocessing operations
* @author Erik Rodner
* @date 02/20/2008

*/
#ifndef PREPROCESSINCLUDE
#define PREPROCESSINCLUDE



#include "core/basics/Config.h"
#include "core/image/ImageT.h"


namespace OBJREC {

/** @brief simple preprocessing operations */
class Preprocess
{

    protected:
	static int normalizeWidth;
	static int normalizeHeight;
	static bool init;
	static std::string substituteFilenameRegex;
	static std::string substituteFilenameSubs;
	static bool disableReadImg;
	static bool disableReadImgHeader;

    public:
	
	/** init preprocessing routines */
	static void Init ( const NICE::Config *conf );

	/** read an image and apply preprocessing 
	    @param filename input filename
	    @return resulting grayscale image
	*/
	static NICE::Image ReadImgAdv ( const std::string & filename  );
	
	/** read a color image and apply preprocessing 
	    @param filename input filename
	    @return resulting color image
	*/
	static NICE::ColorImage ReadImgAdvRGB ( const std::string & filename );

	/** get the size of an image 
	    @param filename filename of the image
	    @param xsize resulting width of the image
	    @param ysize resulting height of the image
	*/
	static void getImageSize ( const std::string & filename, int & xsize, int & ysize );
	
};


} // namespace

#endif