00001 #ifndef __IVariationalLabRetinexOp__ 00002 #define __IVariationalLabRetinexOp__ 00003 00025 #include <stdio.h> 00026 00027 #include "IMultiImageOp.hpp" 00028 #include "Real3CImage.hpp" 00029 00030 class IVariationalLabRetinexOp: public IMultiImageOp 00031 { 00032 private: 00033 00034 double gamma; 00035 double alpha; 00036 double beta; 00037 int maxLevels; 00038 00039 protected: 00040 00041 // separate color channels 00042 00043 virtual Real3CImage* scolorFilter(Real3CImage* src, Real3CImage* dest=0); 00044 virtual Real3CImage* scolorSelectedFilter(AnImage* mask, Real3CImage* src, Real3CImage* dest=0); 00045 00046 00047 // full color channels 00048 00049 virtual Real3CImage* fcolorFilter(Real3CImage* src, Real3CImage* dest=0); 00050 virtual Real3CImage* fcolorSelectedFilter(AnImage* mask, Real3CImage* src, Real3CImage* dest=0); 00051 00052 public: 00053 00054 IVariationalLabRetinexOp(double agamma=1.6, double aalpha=0.03, double abeta=0.25, int maxlevels=5, bool colorFlag= true) 00055 :IMultiImageOp(1,colorFlag) 00056 {gamma= agamma; alpha=aalpha; beta=abeta; maxLevels= maxlevels;} 00057 virtual ~IVariationalLabRetinexOp(){} 00058 00059 virtual void setAlpha(double aalpha){ alpha= aalpha;} 00060 virtual void setBeta(double abeta){ beta= abeta;} 00061 virtual void setGamma(double agamma){ gamma= agamma;} 00062 00063 virtual void report(FILE* file){} 00064 }; 00065 00066 00067 #endif