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 // mono channel 00063 00064 virtual AnImage* greyFilter(AnImage* src, AnImage* dest=0); 00065 virtual AnImage* greySelectedFilter(AnImage* mask, AnImage* src, AnImage* dest=0); 00066 00067 // separate color channels 00068 00069 virtual C3CImage* scolorFilter(C3CImage* src, C3CImage* dest=0); 00070 virtual C3CImage* scolorSelectedFilter(AnImage* mask, C3CImage* src, C3CImage* dest=0); 00071 00072 00073 // separate color channels 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