00001 #ifndef __IPeronaFabOp__ 00002 #define __IPeronaFabOp__ 00003 00004 00005 00028 #include <stdio.h> 00029 00030 #include "IMultiImageOp.hpp" 00031 #include "Real3CImage.hpp" 00032 00033 00034 class IPeronaFabOp : public IMultiImageOp 00035 { 00036 private: 00037 00038 double gsigma; // blurring of the gradient 00039 00040 int nf; // order of (s/kf)^n 00041 double kf; // old lambda, used for linear constrains around the origin 00042 00043 00044 int nb; 00045 double alpha; // credit of backward diffusion 00046 double kb; // backward component 00047 double wb; // backward window 00048 00049 double tau; 00050 00051 00052 protected: 00053 00054 // mono channel 00055 virtual AnImage* greyFilter(AnImage* src, AnImage* dest=0); 00056 virtual AnImage* greySelectedFilter(AnImage* mask, AnImage* src, AnImage* dest=0); 00057 00058 // separate color channels 00059 virtual Real3CImage* scolorFilter(Real3CImage* src, Real3CImage* dest=0); 00060 virtual Real3CImage* scolorSelectedFilter(AnImage* mask, Real3CImage* src, Real3CImage* dest=0); 00061 00062 public: 00063 IPeronaFabOp(int iter=16, 00064 double dt=0.1,int Nf=4, int Nb=2, double gSigma=3.0, double rkf=0.1, double rkb= 6.0, double rw=2.0, 00065 bool colorFlag= false):IMultiImageOp(iter,colorFlag) 00066 { 00067 tau= dt; 00068 00069 nf= Nf; 00070 nb= Nb; 00071 gsigma=gSigma; 00072 kf= rkf; 00073 kb= rkb; 00074 wb= rw; 00075 } 00076 virtual ~IPeronaFabOp(){} 00077 00078 00079 virtual void report(FILE* file){} 00080 }; 00081 00082 00083 #endif