|
Wavelet and Image class library
1.3.2
|
00001 /* 00002 * class Image 00003 * 00004 * $Date$ 00005 * $Revision$ 00006 * 00007 */ 00008 00009 #ifndef IMAGE_HH__ 00010 #define IMAGE_HH__ 00011 00012 #include "WImage/ColumnVector.hh" 00013 #include "WImage/RowVector.hh" 00014 #include "WImage/FullVector.hh" 00015 #ifndef _WIN32_WCE 00016 #include "WImage/GreymapReader.hh" 00017 #include "WImage/GreymapWriter.hh" 00018 #endif 00019 #include "WImage/FileName.hh" 00020 00025 class Image; 00026 00030 /* abstract */ 00031 class ResizeFillFunc { 00032 public: 00036 virtual ~ResizeFillFunc (void) {} 00056 virtual coeff operator() (const Image &scaled, double factor, int y, int x, 00057 int newY, int newX, int yOffset, int xOffset) = 0; 00058 }; 00059 00064 enum ExtendFunc { ef_mirror, ef_outerBorder }; 00065 00069 /*abstract*/ 00070 class 00071 Image 00072 { 00073 public: 00074 00076 Image (void); 00078 virtual ~Image (void) {} 00079 00083 inline int rows (void) const { return m_ysize; } 00087 inline int cols (void) const { return m_xsize; } 00091 inline int size (void) const { return m_xysize; } 00092 00099 inline ColumnVector &col (int x = 0) { m_acol->go (x); return *m_acol; } 00106 inline RowVector &row (int y = 0) { m_arow->go (y); return *m_arow; } 00107 00114 inline FullVector &full (int xy = 0) { m_afull->go (xy); return *m_afull; } 00115 00123 virtual coeff at (int y, int x) const = 0; 00129 virtual coeff at (int abs) const = 0; 00139 virtual void to (int y, int x, coeff val) = 0; 00145 virtual void to (int abs, coeff val) = 0; 00146 00154 virtual int abs (int y, int x) const = 0; 00155 00164 virtual bool epsilons (Image &img, coeff epsilon) const = 0; 00177 bool epsilonsAt (int y, int x, coeff value, coeff epsilon) const; 00188 bool epsilonsAt (int abs, coeff value, coeff epsilon) const; 00194 virtual bool equals (Image &img) const = 0; 00195 00204 virtual double iproduct (Image &img) const; 00205 00209 virtual void normalize (coeff factor); 00210 00214 virtual void unnormalize (coeff factor); 00215 00235 virtual void gammaCorrection (double factor, int yoffs = 0, int xoffs = 0, 00236 int ysize = -1, int xsize = -1, 00237 int norm = 255); 00238 00262 double gammaCorrectionAuto (int rows, int columns, int yoffs = 0, 00263 int xoffs = 0, int ysize = -1,int xsize = -1, 00264 int norm = 255); 00265 00288 virtual void histEqualization (int yoffs = 0, int xoffs = 0, 00289 int ysize = -1, int xsize = -1, 00290 int startH = 0, int endH = 255); 00291 00307 virtual void beautify (int yoffs = 0, int xoffs = 0, 00308 int ysize = 0, int xsize = 0); 00309 00318 virtual void truncate (coeff min = 0, coeff max = 255); 00319 00322 virtual void pixelize (void); 00323 00325 void valadjust (void); 00326 00327 #ifndef _WIN32_WCE 00328 00336 virtual void read (char const *fname, int rawy = 0, int rawx = 0) = 0; 00347 virtual void read (char const *fname, filetype ftype, 00348 int rawy = 0, int rawx = 0) = 0; 00349 00356 virtual void write (char const *fname, bool beautify = false) = 0; 00365 virtual void write (char const *fname, filetype ftype, 00366 bool beautify = false) = 0; 00367 #endif 00368 00374 virtual void importCoeffs (int rows, int cols, coeff *buf); 00375 00379 virtual coeff * exportCoeffs (void); 00380 00386 virtual void importPixels (int rows, int cols, pixel *buf); 00387 00392 virtual pixel * exportPixels (void) const; 00393 00398 virtual Image *clone (void) const = 0; 00402 virtual void copy (Image &img); 00403 00415 Image *crop (int yoffs, int xoffs, int ysize, int xsize) const; 00423 virtual void paste (int yoffs, int xoffs, Image &img); 00429 virtual void shift (int yoffs, int xoffs); 00430 00434 int anasteps (void) const { return m_asteps; } 00438 int synsteps (void) const { return m_ssteps; } 00442 void anasteps (int steps) { m_asteps = steps; } 00446 void synsteps (int steps) { m_ssteps = steps; } 00447 00455 void fill (coeff value, int fromY = 0, int fromX = 0, 00456 int toY = -1, int toX = -1); 00457 00465 virtual coeff smax (int fromY = 0, int fromX = 0, 00466 int toY = -1, int toX = -1) const = 0; 00474 virtual coeff smin (int fromY = 0, int fromX = 0, 00475 int toY = -1, int toX = -1) const = 0; 00483 virtual coeff amax (int fromY = 0, int fromX = 0, 00484 int toY = -1, int toX = -1) const = 0; 00492 virtual coeff amin (int fromY = 0, int fromX = 0, 00493 int toY = -1, int toX = -1) const = 0; 00502 virtual coeff saverage (int fromY = 0, int fromX = 0, 00503 int toY = -1, int toX = -1) const = 0; 00504 00513 virtual coeff aaverage (int fromY = 0, int fromX = 0, 00514 int toY = -1, int toX = -1) const = 0; 00515 00526 virtual coeff sqvariance (int fromY = 0, int fromX = 0, 00527 int toY = -1, int toX = -1) const; 00528 00542 virtual coeff variance (int fromY, int fromX, int toY, int toX, 00543 coeff avg, bool abs) const; 00544 00555 virtual coeff variance (int fromY = 0, int fromX = 0, int toY = -1, 00556 int toX = -1, bool abs = false) const; 00557 00569 virtual coeff sdeviation (int fromY = 0, int fromX = 0, int toY = -1, 00570 int toX = -1, bool abs = false) const; 00571 00581 virtual void resize (int rows, int cols) = 0; 00582 00598 virtual Image *fitInto (int rows, int cols, 00599 int fill = -1, int function = 0) const; 00600 00619 virtual Image *fitInto (int rows, int cols, bool mirrorExtend, 00620 int function = 0) const; 00621 00638 virtual Image *fitInto (int rows, int cols, ExtendFunc extend, 00639 int function = 0) const; 00640 00656 virtual Image *fitInto (int rows, int cols, ResizeFillFunc *fillFunc, 00657 int function = 0) const; 00658 00668 virtual Image *scale (double factor, int function = 0) const; 00669 00681 virtual Image *scale (double yFactor, double xFactor, int function = 0) const; 00682 00683 #ifdef USE_DEPRECATED_API 00684 00692 inline bool epsilons (Image *img, coeff epsilon) const 00693 { return this->epsilons (*img, epsilon); } 00699 inline bool equals (Image *img) const { return this->equals (*img); } 00700 #endif 00701 protected: 00704 ColumnVector *m_acol; 00707 RowVector *m_arow; 00710 FullVector *m_afull; 00712 int m_ysize; 00714 int m_xsize; 00716 int m_xysize; 00718 int m_asteps; 00720 int m_ssteps; 00726 void dimcheck (const Image &img) const; 00734 virtual Image *mkImage (int rows = 0, int cols = 0) const = 0; 00735 00736 }; /* class Image */ 00737 00740 #endif /* IMAGE_HH__ */ 00741
1.7.6.1