00001 #ifndef __IRedBlackWvltOp__ 00002 #define __IRedBlackWvltOp__ 00003 00030 #include <stdio.h> 00031 00032 #include "IMultiImageOp.hpp" 00033 00034 #include "Real3CImage.hpp" 00035 00036 00037 class IRedBlackWvltOp : public IMultiImageOp 00038 { 00039 private: 00040 00041 bool forwardOnly; 00042 int userStages; 00043 00044 // denoising 00045 bool denoisingFlag; 00046 bool hardThreshold; 00047 double threshold; 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 Real3CImage* scolorFilter(Real3CImage* src, Real3CImage* dest=0); 00059 virtual Real3CImage* scolorSelectedFilter(AnImage* mask, Real3CImage* src, Real3CImage* dest=0); 00060 00061 00062 // separate color channels 00063 00064 virtual Real3CImage* fcolorFilter(Real3CImage* src, Real3CImage* dest=0); 00065 virtual Real3CImage* fcolorSelectedFilter(AnImage* mask, Real3CImage* src, Real3CImage* dest=0); 00066 00067 public: 00068 00069 IRedBlackWvltOp(int steps=1, bool forwardF=false, bool colorFlag= false):IMultiImageOp(1,colorFlag) 00070 {forwardOnly=forwardF; userStages= steps; denoisingFlag= false;} 00071 IRedBlackWvltOp(int steps, bool forwardF, bool ahardThreshold, double athreshold, bool colorFlag= false):IMultiImageOp(1,colorFlag) 00072 {forwardOnly=forwardF; userStages= steps; denoisingFlag= true; 00073 hardThreshold= ahardThreshold; threshold= athreshold;} 00074 virtual ~IRedBlackWvltOp(){} 00075 00076 00077 virtual void report(FILE* file){} 00078 }; 00079 00080 00081 #endif