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