00001 #ifndef __IMinMaxFlowOp__ 00002 #define __IMinMaxFlowOp__ 00003 00004 00005 00028 #include <stdio.h> 00029 00030 #include "IMultiImageOp.hpp" 00031 00032 #include "Real3CImage.hpp" 00033 00034 enum TypeMinMaxFlow { Binary=0, Grey=1, Texture=2 }; 00035 00036 class IMinMaxFlowOp : public IMultiImageOp 00037 { 00038 private: 00039 00040 TypeMinMaxFlow type; 00041 int variant; 00042 00043 double partitionThreshold; 00044 00045 protected: 00046 00047 // mono channel 00048 00049 virtual AnImage* greyFilter(AnImage* src, AnImage* dest=0); 00050 virtual AnImage* greySelectedFilter(AnImage* mask, AnImage* src, AnImage* dest=0); 00051 00052 // separate color channels 00053 00054 virtual Real3CImage* scolorFilter(Real3CImage* src, Real3CImage* dest=0); 00055 virtual Real3CImage* scolorSelectedFilter(AnImage* mask, Real3CImage* src, Real3CImage* dest=0); 00056 00057 00058 // separate color channels 00059 00060 virtual Real3CImage* fcolorFilter(Real3CImage* src, Real3CImage* dest=0); 00061 virtual Real3CImage* fcolorSelectedFilter(AnImage* mask, Real3CImage* src, Real3CImage* dest=0); 00062 00063 public: 00064 00065 00066 IMinMaxFlowOp(int iter, bool colorFlag, TypeMinMaxFlow atype, double thresh) 00067 :IMultiImageOp(iter, colorFlag) 00068 { type= atype; partitionThreshold= thresh;} 00069 IMinMaxFlowOp(int iter, bool colorFlag, TypeMinMaxFlow atype, int style, double thresh) 00070 :IMultiImageOp(iter, colorFlag) 00071 { type= atype; variant= style; partitionThreshold= thresh;} 00072 00073 virtual ~IMinMaxFlowOp(){} 00074 00075 00076 virtual void report(FILE* file){} 00077 }; 00078 00079 00080 #endif