00001 #ifndef __ICShockOp__ 00002 #define __ICShockOp__ 00003 00004 00005 00027 #include <stdio.h> 00028 00029 #include "ICMultiImageOp.hpp" 00030 00031 #include "C3CImage.hpp" 00032 00033 00034 class ICShockOp : public ICMultiImageOp 00035 { 00036 private: 00037 00038 int type; 00039 00040 double alpha; 00041 00042 double lambda; // tangent diff 00043 double theta; 00044 00045 double lambdaT; // tangent diff 00046 double a; // atan smooth shock param 00047 00048 00049 protected: 00050 00051 // mono channel 00052 00053 virtual AnImage* greyFilter(AnImage* src, AnImage* dest=0); 00054 virtual AnImage* greySelectedFilter(AnImage* mask, AnImage* src, AnImage* dest=0); 00055 00056 // separate color channels 00057 00058 virtual C3CImage* scolorFilter(C3CImage* src, C3CImage* dest=0); 00059 virtual C3CImage* scolorSelectedFilter(AnImage* mask, C3CImage* src, C3CImage* dest=0); 00060 00061 00062 // separate color channels 00063 00064 virtual C3CImage* fcolorFilter(C3CImage* src, C3CImage* dest=0); 00065 virtual C3CImage* fcolorSelectedFilter(AnImage* mask, C3CImage* src, C3CImage* dest=0); 00066 00067 public: 00068 00069 ICShockOp(int iter, double anAlpha=0.03, int atype=0, 00070 double rlambda=0.2, double atheta=0.001, double ax=1.0, double lambdaTg=1.0, bool colorFlag= false) 00071 :ICMultiImageOp(iter,colorFlag) 00072 {type=atype; alpha=anAlpha; theta= atheta; lambda=rlambda; lambdaT= lambdaTg; a=ax;} 00073 virtual ~ICShockOp(){} 00074 00075 virtual AnImage* filter(AnImage* src, AnImage* dest=0); 00076 virtual AnImage* selectedFilter(AnImage* mask, AnImage* src, AnImage* dest=0); 00077 00078 virtual void report(FILE* file){} 00079 }; 00080 00081 00082 #endif