Wavelet and Image class library  1.3.2
ImageResizer.hh
Go to the documentation of this file.
00001 /*
00002  * class ImageResizer
00003  *
00004  * $Date$
00005  * $Revision$
00006  *
00007  */
00008 
00009 #ifndef IMAGE_RESIZER_HH__
00010 #define IMAGE_RESIZER_HH__
00011 
00012 #include "WImage/ColorImage.hh"
00013 #include "Wave/WaveletTransform.hh"
00014 
00026 class ImageResizer
00027 {
00028 public:
00029 
00046   ImageResizer (const ColorImage &img, FilterSet &flt, int *fill = NULL,
00047                 coeff threshold = 0.001, bool optimizeImage = false,
00048                 int scalingStrategy = 0);
00049 
00053   ~ImageResizer (void);
00054 
00071   ColorImage* resize (int rows, int cols, int steps = 1);
00072 
00089   ColorImage* redimension (int rows, int cols, int steps = 1);
00090 
00095   inline double getInnerAvgPerSize (void) const { return m_innerAvgPerSize; }
00100   inline double getInnerSDeviation (void) const { return m_innerSDeviation; }
00105   inline int getInnerRegionSize (void) const { return m_innerRegionSize; }
00106 
00111   inline double threshold (void) const { return m_threshold; }
00116   inline void threshold (double threshold) { m_threshold = threshold; }
00117 
00122   inline void optimizeImage (bool optimizeImage) { m_optimizeImage = optimizeImage; }
00127   inline bool optimizeImage (void) { return m_optimizeImage; }
00128 
00129 protected:
00135   void calcDimensions (int rows, int cols);
00136 
00146   int fixDimensions (int rows, int cols);
00147 
00154   void calcOptimization (void);
00155 
00171   void calcOuterStats (coeff &avg, coeff &variance, int firstTop, int firstLeft,
00172                        int firstBottom, int firstRight, int secondTop, int secondLeft,
00173                        int secondBottom, int secondRight);
00174 
00186   void calcInnerStats (coeff &avg, coeff &sDev,
00187                        int top, int left, int bottom, int right);
00188 
00205   void calcStats (int nRows, int nCols, coeff &outerAvg,
00206                   coeff &outerSDev, coeff &innerAvg, coeff &innerSDev);
00207 
00212   void genMaxDetail (int steps);
00213 
00227   ColorImage* getUnscaledImage (int rows, int cols, int discardRows, int discardCols);
00228 
00242   ColorImage* getScaledImage (int rows, int cols, int discardRows, int discardCols);
00243 
00255   ColorImage* getCroppedImage (int discardRows, int discardCols);
00256 
00276   ColorImage* doResize (int rows, int cols, int steps, bool redimensionOnly);
00277 
00278   const ColorImage &m_image;
00279   Image *m_maxDetail;
00280   FilterSet &m_filter;
00281   float m_qRows;
00282   float m_qCols;
00283   int *m_fill;
00284   int m_scalingStrategy;
00285   double m_innerAvgPerSize;
00286   double m_innerSDeviation;
00287   int m_innerRegionSize;
00288   coeff m_threshold;
00289   bool m_optimizeImage;
00290   bool m_optimizationCalculated;
00291   int m_cropMaxRows;
00292   int m_cropMaxCols;
00293   double m_rowsMapping;
00294   double m_colsMapping;
00295   int m_steps;
00296   enum {
00297     CROP_COLS, CROP_ROWS, CROP_BOTH_OR_NONE, CROP_AUTOMATICALLY
00298   } m_cropWhat;
00299 };
00300 
00303 #endif // IMAGE_RESIZER_HH__
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines