00001 #ifndef __IDistanceLodHeatFlowOp__ 00002 #define __IDistanceLodHeatFlowOp__ 00003 00040 #include <stdio.h> 00041 00042 #include "IMultiImageOp.hpp" 00043 00044 #include "Real3CImage.hpp" 00045 00046 00047 class IDistanceLodHeatFlowOp : public IMultiImageOp 00048 { 00049 private: 00050 00051 int iter; 00052 double tmin, tmax; 00053 00054 RImage* distanceMapEdges; 00055 00056 protected: 00057 00058 // mono channel 00059 00060 virtual AnImage* greyFilter(AnImage* src, AnImage* dest=0); 00061 virtual AnImage* greySelectedFilter(AnImage* mask, AnImage* src, AnImage* dest=0); 00062 00063 // separate color channels 00064 00065 virtual Real3CImage* scolorFilter(Real3CImage* src, Real3CImage* dest=0); 00066 virtual Real3CImage* scolorSelectedFilter(AnImage* mask, Real3CImage* src, Real3CImage* dest=0); 00067 00068 00069 // separate color channels 00070 00071 virtual Real3CImage* fcolorFilter(Real3CImage* src, Real3CImage* dest=0); 00072 virtual Real3CImage* fcolorSelectedFilter(AnImage* mask, Real3CImage* src, Real3CImage* dest=0); 00073 00074 public: 00075 00077 IDistanceLodHeatFlowOp(RImage* edgeDistance=0, int iterations=1, double tMin=0.0, double tMax=20.0, bool colorFlag= false) 00078 :IMultiImageOp(1,colorFlag) 00079 {iter= iterations; tmin= tMin; tmax= tMax; distanceMapEdges=edgeDistance;} 00080 virtual ~IDistanceLodHeatFlowOp(){} 00081 00082 void setEdgeDistance(RImage* distanceMap){ distanceMapEdges= distanceMap; } 00083 00084 00085 virtual void report(FILE* file){} 00086 }; 00087 00088 00089 #endif