00001 #ifndef __IF2DHeatFlowOp__
00002 #define __IF2DHeatFlowOp__
00003
00041 #include <stdio.h>
00042
00043 #include "IFMultiImageOp.hpp"
00044
00045 #include "Float3CImage.hpp"
00046 #include "SolverTimeScheme.hpp"
00047
00048 class IF2DHeatFlowOp : public IFMultiImageOp
00049 {
00050 private:
00051
00052 SolverTimeScheme family;
00053
00054 int iter;
00055 int innerIter;
00056 double tau;
00057
00058 int typeSolver;
00059 float epsilon;
00060
00061 protected:
00062
00063
00064
00065 virtual AnImage* greyFilter(AnImage* src, AnImage* dest=0);
00066 virtual AnImage* greySelectedFilter(AnImage* mask, AnImage* src, AnImage* dest=0);
00067
00068
00069
00070 virtual Float3CImage* scolorFilter(Float3CImage* src, Float3CImage* dest=0);
00071 virtual Float3CImage* scolorSelectedFilter(AnImage* mask, Float3CImage* src, Float3CImage* dest=0);
00072
00073
00074
00075
00076 virtual Float3CImage* fcolorFilter(Float3CImage* src, Float3CImage* dest=0);
00077 virtual Float3CImage* fcolorSelectedFilter(AnImage* mask, Float3CImage* src, Float3CImage* dest=0);
00078
00079 public:
00080
00082 IF2DHeatFlowOp(int atypeSolver, int iterMax=1, int insideIter=8, float t=0.5, float eps=1.0e-4, bool colorFlag= false)
00083 :IFMultiImageOp(1,colorFlag)
00084 {family= AOS; typeSolver=atypeSolver; iter= iterMax; innerIter= insideIter; tau= t; epsilon=eps;}
00085 IF2DHeatFlowOp(SolverTimeScheme afamily, int atypeSolver,
00086 int iterMax=1, int insideIter=8, float t=0.5, float eps=1.0e-4, bool colorFlag= false)
00087 :IFMultiImageOp(1,colorFlag)
00088 {family= afamily; typeSolver=atypeSolver; iter= iterMax; innerIter= insideIter; tau= t; epsilon=eps;}
00089 virtual ~IF2DHeatFlowOp(){}
00090
00091
00092 virtual void report(FILE* file){}
00093 };
00094
00095
00096 #endif