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 
00048 
00049 virtual AnImage* greyFilter(AnImage* src, AnImage* dest=0);
00050 virtual AnImage* greySelectedFilter(AnImage* mask, AnImage* src, AnImage* dest=0);
00051 
00052 
00053 
00054 virtual Real3CImage* scolorFilter(Real3CImage* src, Real3CImage* dest=0);
00055 virtual Real3CImage* scolorSelectedFilter(AnImage* mask, Real3CImage* src, Real3CImage* dest=0);
00056 
00057 
00058 
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