00001 #ifndef __IFMultiImageOp__ 00002 #define __IFMultiImageOp__ 00003 00004 00023 #include <stdio.h> 00024 00025 #include "AnImageOp.hpp" 00026 #include "Float3CImage.hpp" 00027 00028 00029 class IFMultiImageOp : public AnImageOp 00030 { 00031 protected: 00032 00033 bool fullColor; // determine if full color is used 00034 00035 int iterations; // default is 50 00036 00037 float minPixelValue; 00038 float maxPixelValue; 00039 00040 protected: 00041 00042 // mono channel 00043 00044 virtual AnImage* greyFilter(AnImage* src, AnImage* dest=0); 00045 virtual AnImage* greySelectedFilter(AnImage* mask, AnImage* src, AnImage* dest=0) 00046 { return greyFilter(src,dest); } 00047 00048 // separate color channels 00049 00050 virtual Float3CImage* scolorFilter(Float3CImage* src, Float3CImage* dest=0); 00051 virtual Float3CImage* scolorSelectedFilter(AnImage* mask, Float3CImage* src, Float3CImage* dest=0) 00052 { return scolorFilter(src,dest); } 00053 00054 00055 // full color channels 00056 00057 virtual Float3CImage* fcolorFilter(Float3CImage* src, Float3CImage* dest=0); 00058 virtual Float3CImage* fcolorSelectedFilter(AnImage* mask, Float3CImage* src, Float3CImage* dest=0) 00059 { return fcolorFilter(src,dest); } 00060 00061 public: 00062 IFMultiImageOp(int iter=50, bool colorFlag= false):AnImageOp() 00063 {fullColor= colorFlag; iterations= iter; minPixelValue=0; maxPixelValue=255.0;} 00064 virtual ~IFMultiImageOp(){} 00065 00066 virtual void setIterations(int iter){iterations= iter;} 00067 00068 virtual AnImage* filter(AnImage* src, AnImage* dest=0); 00069 virtual AnImage* filter(AR3ChannelConverter* convertor, AnImage* src, AnImage* dest=0); 00070 00071 virtual AnImage* selectedFilter(AnImage* mask, AnImage* src, AnImage* dest=0); 00072 00073 virtual AnImage* selectedFilter(AR3ChannelConverter* convertor, AnImage* mask, 00074 AnImage* src, AnImage* dest=0); 00075 00076 virtual void report(FILE* file){} 00077 }; 00078 00079 00080 #endif