00001 #ifndef __RMultiScaleImage__
00002 #define __RMultiScaleImage__
00003
00004
00005
00029 class RImage;
00030 class AnImage;
00031
00032
00033 class RMultiScaleImage
00034 {
00035 private:
00036
00037 int channel;
00038
00039 int width0;
00040 int height0;
00041
00042 double scale;
00043 int maxLevels;
00044
00045 RImage** plane;
00046
00047
00048 public:
00049
00050 RMultiScaleImage( int w, int h , int levels=4, double scales=0.5, bool filled=true);
00051 RMultiScaleImage( RImage* source, int levels=4, double scales=0.5, bool filled=true);
00052 RMultiScaleImage( AnImage* source , int achannel=0, int levels=4, double scales=0.5, bool filled=true);
00053 RMultiScaleImage( RMultiScaleImage& im);
00054 ~RMultiScaleImage();
00055
00056 RMultiScaleImage* copy();
00057
00058 int getLevels(){return maxLevels;}
00059 double getScale(){return scale;}
00060
00061 RImage* get0(){return plane[0];}
00062 RImage* get(int level){return plane[level];}
00063
00064 void set0(RImage* src);
00065 void set(int level, RImage* aplane);
00066
00067 int getWidth(){ return width0; }
00068 int getHeight(){ return height0; }
00069
00070 int getWidth(int level);
00071 int getHeight(int level);
00072
00073
00074 inline double get(int x, int y, int level=0){ return plane[level]->get(x,y); }
00075 inline void set(int x,int y, int level, double value){ plane[level]->set(x,y, value); }
00076 };
00077
00078 #endif