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

IFSimpleTVInpaintingOp.hpp

00001 #ifndef __IFSimpleTVInpaintingOp__
00002 #define __IFSimpleTVInpaintingOp__
00003 
00027 #include <stdio.h>
00028 
00029 #include "IFMultiImageOp.hpp"
00030 
00031 #include "Float3CImage.hpp"
00032 
00033 #include "SolverTimeScheme.hpp"
00034 #include "Diffusivity.hpp"
00035 
00036 class IFSimpleTVInpaintingOp : public IFMultiImageOp 
00037 {
00038 private:
00039 
00040 SolverTimeScheme        family;
00041 
00042 int                     iter;
00043 int                     innerIter;
00044 double          tau;
00045 double          sigma;
00046 double          contrast;
00047 double          beta;
00048 
00049 int                     typeSolver;
00050 float                   epsilon;
00051 
00052 bool                    cfl;
00053 Diffusivity             diffusivity;
00054 int                     typeGradient;
00055 
00056 AnImage*                inpaintingDomain;
00057 AnImage*                extensionDomain;
00058 
00059 protected:
00060 
00061 // mono channel
00062 
00063 virtual AnImage* greyFilter(AnImage* src, AnImage* dest=0);
00064 virtual AnImage* greySelectedFilter(AnImage* mask, AnImage* src, AnImage* dest=0);
00065 
00066 // separate color channels
00067 
00068 virtual Float3CImage* scolorFilter(Float3CImage* src, Float3CImage* dest=0);
00069 virtual Float3CImage* scolorSelectedFilter(AnImage* mask, Float3CImage* src, Float3CImage* dest=0);
00070 
00071 
00072 // separate color channels
00073 
00074 virtual Float3CImage* fcolorFilter(Float3CImage* src, Float3CImage* dest=0);
00075 virtual Float3CImage* fcolorSelectedFilter(AnImage* mask, Float3CImage* src, Float3CImage* dest=0);
00076 
00077 public:
00078         
00079 IFSimpleTVInpaintingOp(int atypeSolver, int outIter=1, int iterMax=8, 
00080                 float t=5.0, float asigma=2.0, float acontrast=1.0, float abeta=0.0, float eps=1.0e-4, bool colorFlag= false)
00081                 :IFMultiImageOp(1,colorFlag)
00082         {family= AFI; typeSolver=atypeSolver; iter= outIter; innerIter= iterMax; tau= t; epsilon=eps;
00083         sigma=asigma; contrast=acontrast; beta= abeta; cfl=true; diffusivity= VarDiff; typeGradient=0;
00084         inpaintingDomain=0; extensionDomain=0; }
00085 IFSimpleTVInpaintingOp(SolverTimeScheme afamily, int atypeSolver, int outIter=1, int iterMax=8, 
00086                         float t=5.0, float asigma=2.0, float acontrast=1.0, float abeta=0.0, 
00087                         Diffusivity diff=VarDiff, int typeGrad=0,
00088                         bool cflTest=true, float eps=1.0e-4, bool colorFlag= false)
00089                 :IFMultiImageOp(1,colorFlag)
00090         {family= afamily; typeSolver=atypeSolver; iter= outIter; innerIter= iterMax; tau= t; epsilon=eps;       
00091         sigma=asigma; contrast=acontrast; beta= abeta; cfl= cflTest; diffusivity= diff; typeGradient=typeGrad;
00092         inpaintingDomain=0; extensionDomain=0; }
00093 virtual ~IFSimpleTVInpaintingOp(){}
00094 
00095 virtual void setInpaintingDomain(AnImage* area, int largeSize=0, int extendSize=0);
00096 virtual AnImage* getInpaintingDomain(){return inpaintingDomain;}
00097 virtual AnImage* getExtensionDomain(){return extensionDomain;}
00098 
00099 virtual void report(FILE* file){}
00100 };
00101 
00102 
00103 #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