/** 
* @file ImagePyramid.h
* @brief gauss image pyramid
* @author Erik Rodner
* @date 02/06/2008

*/
#ifndef IMAGEPYRAMIDINCLUDE
#define IMAGEPYRAMIDINCLUDE

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

#include "core/imagedisplay/ImageDisplay.h"
  

namespace OBJREC {

/** gauss image pyramid */
class ImagePyramid
{

  protected:
	  std::vector<NICE::Image> pyramid;
	  double scaleSpacing;

    public:
  
      /** simple constructor */
      ImagePyramid ( const NICE::Image & img, 
               int maxLevels = 10,
               double scaleSpacing = 1.18921,
               int max_xsize = 11,
               int max_ysize = 11 );
          
      /** simple destructor */
      virtual ~ImagePyramid();

      const NICE::Image & getLevel ( int i ) const;
      int getNumLevels () const;
      void show() const;
      void getOriginalCoordinates ( int x, int y, int level, double & xo, double & yo ) const;
      void getLevelCoordinates ( double xo, double yo, int level, double & xl, double & yl ) const;
     
};


} // namespace

#endif
