00001 #ifndef __IFClassicAnisotropicOp__
00002 #define __IFClassicAnisotropicOp__
00003
00026 #include <stdio.h>
00027
00028 #include "IFMultiImageOp.hpp"
00029
00030 #include "Float3CImage.hpp"
00031
00032 #include "SolverTimeScheme.hpp"
00033 #include "Diffusivity.hpp"
00034
00035 class IFClassicAnisotropicOp : public IFMultiImageOp
00036 {
00037 private:
00038
00039 SolverTimeScheme family;
00040
00041 int iter;
00042 int innerIter;
00043 double tau;
00044 double sigma;
00045 double contrast;
00046
00047 int typeSolver;
00048 float epsilon;
00049
00050 bool cfl;
00051 Diffusivity diffusivity;
00052 int typeGradient;
00053
00054 protected:
00055
00056
00057
00058 virtual AnImage* greyFilter(AnImage* src, AnImage* dest=0);
00059 virtual AnImage* greySelectedFilter(AnImage* mask, AnImage* src, AnImage* dest=0);
00060
00061
00062
00063 virtual Float3CImage* scolorFilter(Float3CImage* src, Float3CImage* dest=0);
00064 virtual Float3CImage* scolorSelectedFilter(AnImage* mask, Float3CImage* src, Float3CImage* dest=0);
00065
00066
00067
00068
00069 virtual Float3CImage* fcolorFilter(Float3CImage* src, Float3CImage* dest=0);
00070 virtual Float3CImage* fcolorSelectedFilter(AnImage* mask, Float3CImage* src, Float3CImage* dest=0);
00071
00072 public:
00073
00074 IFClassicAnisotropicOp(int atypeSolver, int outIter=1, int iterMax=8,
00075 float t=5.0, float asigma=2.0, float acontrast=1.0, float eps=1.0e-4, bool colorFlag= false)
00076 :IFMultiImageOp(1,colorFlag)
00077 {family= AFI; typeSolver=atypeSolver; iter= outIter; innerIter= iterMax; tau= t; epsilon=eps;
00078 sigma=asigma; contrast=acontrast; cfl=true; diffusivity= PmDiff; typeGradient=0;}
00079 IFClassicAnisotropicOp(SolverTimeScheme afamily, int atypeSolver, int outIter=1, int iterMax=8,
00080 float t=5.0, float asigma=2.0, float acontrast=1.0,
00081 Diffusivity diff=PmDiff, int typeGrad=0, bool cflTest=true,
00082 float eps=1.0e-4, bool colorFlag= false)
00083 :IFMultiImageOp(1,colorFlag)
00084 {family= afamily; typeSolver=atypeSolver; iter= outIter; innerIter= iterMax; tau= t; epsilon=eps;
00085 sigma=asigma; contrast=acontrast; cfl= cflTest; diffusivity= diff; typeGradient=typeGrad;}
00086 virtual ~IFClassicAnisotropicOp(){}
00087
00088
00089 virtual void report(FILE* file){}
00090 };
00091
00092
00093 #endif