00001 #ifndef __ICAosPeronaOp__
00002 #define __ICAosPeronaOp__
00003
00037 #include <stdio.h>
00038
00039 #include "ICMultiImageOp.hpp"
00040
00041 #include "C3CImage.hpp"
00042
00043
00044 class ICAosPeronaOp : public ICMultiImageOp
00045 {
00046 private:
00047
00048 int type;
00049
00050 int iter;
00051 double tau;
00052 double sigmaDelta;
00053 double sigmaBlur;
00054
00055 double theta;
00056
00057 bool iir;
00058 bool nonLinear;
00059
00060 protected:
00061
00062
00063
00064 virtual AnImage* greyFilter(AnImage* src, AnImage* dest=0);
00065 virtual AnImage* greySelectedFilter(AnImage* mask, AnImage* src, AnImage* dest=0);
00066
00067
00068
00069 virtual C3CImage* scolorFilter(C3CImage* src, C3CImage* dest=0);
00070 virtual C3CImage* scolorSelectedFilter(AnImage* mask, C3CImage* src, C3CImage* dest=0);
00071
00072
00073
00074
00075 virtual C3CImage* fcolorFilter(C3CImage* src, C3CImage* dest=0);
00076 virtual C3CImage* fcolorSelectedFilter(AnImage* mask, C3CImage* src, C3CImage* dest=0);
00077
00078 public:
00079
00080 ICAosPeronaOp(int atype=0, int iterations=1, double t=0.5, double ctheta=0.001,
00081 double K=1.0, double sigma=3.0,
00082 bool iirF=false, bool colorFlag= false, bool nonLinearF=true)
00083 :ICMultiImageOp(1,colorFlag)
00084 {type= atype; iter= iterations; tau= t; theta= ctheta; sigmaDelta= K; sigmaBlur=sigma;
00085 iir= iirF; nonLinear=nonLinearF; }
00086 virtual ~ICAosPeronaOp(){}
00087
00088 virtual AnImage* filter(AnImage* src, AnImage* dest=0);
00089 virtual AnImage* selectedFilter(AnImage* mask, AnImage* src, AnImage* dest=0);
00090
00091 virtual void report(FILE* file){}
00092 };
00093
00094
00095 #endif