00001 #ifndef __ICThomasHeatOp__ 00002 #define __ICThomasHeatOp__ 00003 00044 #include <stdio.h> 00045 00046 #include "ICMultiImageOp.hpp" 00047 00048 #include "C3CImage.hpp" 00049 00050 00051 class ICThomasHeatOp : public ICMultiImageOp 00052 { 00053 private: 00054 00055 int iter; 00056 double tau; 00057 00058 double theta; 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 00081 ICThomasHeatOp(int iterations=1, double t=0.5, double ctheta=0.001, bool colorFlag= false):ICMultiImageOp(1,colorFlag) 00082 {iter= iterations; tau= t; theta= ctheta;} 00083 virtual ~ICThomasHeatOp(){} 00084 00085 virtual AnImage* filter(AnImage* src, AnImage* dest=0); 00086 virtual AnImage* selectedFilter(AnImage* mask, AnImage* src, AnImage* dest=0); 00087 00088 virtual void report(FILE* file){} 00089 }; 00090 00091 00092 #endif