00001 #ifndef __IThomasHeatOp__ 00002 #define __IThomasHeatOp__ 00003 00040 #include <stdio.h> 00041 00042 #include "IMultiImageOp.hpp" 00043 00044 #include "Real3CImage.hpp" 00045 00046 00047 class IThomasHeatOp : public IMultiImageOp 00048 { 00049 private: 00050 00051 int iter; 00052 double tau; 00053 00054 protected: 00055 00056 // mono channel 00057 00058 virtual AnImage* greyFilter(AnImage* src, AnImage* dest=0); 00059 virtual AnImage* greySelectedFilter(AnImage* mask, AnImage* src, AnImage* dest=0); 00060 00061 // separate color channels 00062 00063 virtual Real3CImage* scolorFilter(Real3CImage* src, Real3CImage* dest=0); 00064 virtual Real3CImage* scolorSelectedFilter(AnImage* mask, Real3CImage* src, Real3CImage* dest=0); 00065 00066 00067 // separate color channels 00068 00069 virtual Real3CImage* fcolorFilter(Real3CImage* src, Real3CImage* dest=0); 00070 virtual Real3CImage* fcolorSelectedFilter(AnImage* mask, Real3CImage* src, Real3CImage* dest=0); 00071 00072 public: 00073 00075 IThomasHeatOp(int iterations=1, double t=0.5, bool colorFlag= false):IMultiImageOp(1,colorFlag) 00076 {iter= iterations; tau= t;} 00077 virtual ~IThomasHeatOp(){} 00078 00079 00080 virtual void report(FILE* file){} 00081 }; 00082 00083 00084 #endif