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