00001 #ifndef __IRecursiveBlurOp__ 00002 #define __IRecursiveBlurOp__ 00003 00037 #include <stdio.h> 00038 00039 #include "IMultiImageOp.hpp" 00040 00041 #include "Real3CImage.hpp" 00042 00043 00044 class IRecursiveBlurOp : public IMultiImageOp 00045 { 00046 private: 00047 00048 int order; 00049 double sigma; 00050 00051 protected: 00052 00053 // mono channel 00054 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 00060 virtual Real3CImage* scolorFilter(Real3CImage* src, Real3CImage* dest=0); 00061 virtual Real3CImage* scolorSelectedFilter(AnImage* mask, Real3CImage* src, Real3CImage* dest=0); 00062 00063 00064 // separate color channels 00065 00066 virtual Real3CImage* fcolorFilter(Real3CImage* src, Real3CImage* dest=0); 00067 virtual Real3CImage* fcolorSelectedFilter(AnImage* mask, Real3CImage* src, Real3CImage* dest=0); 00068 00069 public: 00070 00071 IRecursiveBlurOp(double asigma=1.0, int aorder=2, bool colorFlag= false):IMultiImageOp(1,colorFlag) 00072 {order= aorder; sigma= asigma;} 00073 virtual ~IRecursiveBlurOp(){} 00074 00075 virtual void setSigma(double asigma){ sigma= asigma;} 00076 00077 00078 virtual void report(FILE* file){} 00079 }; 00080 00081 00082 #endif