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 // mono channel 00064 00065 virtual AnImage* greyFilter(AnImage* src, AnImage* dest=0); 00066 virtual AnImage* greySelectedFilter(AnImage* mask, AnImage* src, AnImage* dest=0); 00067 00068 // separate color channels 00069 00070 virtual Float3CImage* scolorFilter(Float3CImage* src, Float3CImage* dest=0); 00071 virtual Float3CImage* scolorSelectedFilter(AnImage* mask, Float3CImage* src, Float3CImage* dest=0); 00072 00073 00074 // separate color channels 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