Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   Related Pages  

IFVariationalRestorationOp.hpp

00001 #ifndef __IFVariationalRestorationOp__
00002 #define __IFVariationalRestorationOp__
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 IFVariationalRestorationOp : 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 double          beta;
00047 
00048 int                     typeSolver;
00049 float                   epsilon;
00050 
00051 bool                    cfl;
00052 Diffusivity             diffusivity;
00053 int                     typeGradient;
00054 
00055 protected:
00056 
00057 // mono channel
00058 
00059 virtual AnImage* greyFilter(AnImage* src, AnImage* dest=0);
00060 virtual AnImage* greySelectedFilter(AnImage* mask, AnImage* src, AnImage* dest=0);
00061 
00062 // separate color channels
00063 
00064 virtual Float3CImage* scolorFilter(Float3CImage* src, Float3CImage* dest=0);
00065 virtual Float3CImage* scolorSelectedFilter(AnImage* mask, Float3CImage* src, Float3CImage* dest=0);
00066 
00067 
00068 // separate color channels
00069 
00070 virtual Float3CImage* fcolorFilter(Float3CImage* src, Float3CImage* dest=0);
00071 virtual Float3CImage* fcolorSelectedFilter(AnImage* mask, Float3CImage* src, Float3CImage* dest=0);
00072 
00073 public:
00074         
00075 IFVariationalRestorationOp(int atypeSolver, int outIter=1, int iterMax=8, 
00076                 float t=5.0, float asigma=2.0, float acontrast=1.0, float abeta=0.0, float eps=1.0e-4, bool colorFlag= false)
00077                 :IFMultiImageOp(1,colorFlag)
00078         {family= AFI; typeSolver=atypeSolver; iter= outIter; innerIter= iterMax; tau= t; epsilon=eps;
00079         sigma=asigma; contrast=acontrast; beta= abeta; cfl=true; diffusivity= VarDiff; typeGradient=0; }
00080 IFVariationalRestorationOp(SolverTimeScheme afamily, int atypeSolver, int outIter=1, int iterMax=8, 
00081                         float t=5.0, float asigma=2.0, float acontrast=1.0, float abeta=0.0, 
00082                         Diffusivity diff=VarDiff, int typeGrad=0,
00083                         bool cflTest=true, float eps=1.0e-4, bool colorFlag= false)
00084                 :IFMultiImageOp(1,colorFlag)
00085         {family= afamily; typeSolver=atypeSolver; iter= outIter; innerIter= iterMax; tau= t; epsilon=eps;       
00086         sigma=asigma; contrast=acontrast; beta= abeta; cfl= cflTest; diffusivity= diff; typeGradient=typeGrad; }
00087 virtual ~IFVariationalRestorationOp(){}
00088 
00089 
00090 virtual void report(FILE* file){}
00091 };
00092 
00093 
00094 #endif
SourceForge.net Logo
Restoreinpaint sourceforge project `C++/Java Image Processing, Restoration, Inpainting Project'.

Bernard De Cuyper: Open Project Leader: Concept, design and development.
Bernard De Cuyper & Eddy Fraiha 2002, 2003. Bernard De Cuyper 2004. Open and free, for friendly usage only.
Modifications on Belgium ground of this piece of artistic work, by governement institutions or companies, must be notified to Bernard De Cuyper.
bern_bdc@hotmail.com