00001 #ifndef __IPeronaProximityFabOp__
00002 #define __IPeronaProximityFabOp__
00003
00004
00005
00028 #include <stdio.h>
00029
00030 #include "IMultiImageOp.hpp"
00031 #include "Real3CImage.hpp"
00032
00033
00034 class IPeronaProximityFabOp : public IMultiImageOp
00035 {
00036 private:
00037
00038 double gsigma;
00039
00040 int nf;
00041 double kf;
00042
00043
00044 int nb;
00045 double alpha;
00046 double kb;
00047 double wb;
00048
00049 double tau;
00050
00051 double limitDistance;
00052 RImage* distanceMapEdges;
00053
00054 protected:
00055
00056
00057 virtual AnImage* greyFilter(AnImage* src, AnImage* dest=0);
00058 virtual AnImage* greySelectedFilter(AnImage* mask, AnImage* src, AnImage* dest=0);
00059
00060
00061 virtual Real3CImage* scolorFilter(Real3CImage* src, Real3CImage* dest=0);
00062 virtual Real3CImage* scolorSelectedFilter(AnImage* mask, Real3CImage* src, Real3CImage* dest=0);
00063
00064 public:
00065 IPeronaProximityFabOp(int iter=16, double dt=0.1, RImage* dmap=0, double dlimit=5.0,
00066 int Nf=4, int Nb=2, double gSigma=3.0, double rkf=0.1, double rkb= 6.0, double rw=2.0,
00067 bool colorFlag= false):IMultiImageOp(iter,colorFlag)
00068 {
00069 limitDistance=dlimit;
00070 distanceMapEdges=dmap;
00071
00072 tau= dt;
00073
00074 nf= Nf;
00075 nb= Nb;
00076 gsigma=gSigma;
00077 kf= rkf;
00078 kb= rkb;
00079 wb= rw;
00080 }
00081 virtual ~IPeronaProximityFabOp(){}
00082
00083 void setEdgeDistance(RImage* distanceMap){ distanceMapEdges= distanceMap; }
00084
00085 virtual void report(FILE* file){}
00086 };
00087
00088
00089 #endif