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