00001 #ifndef __IFDistanceLodHeatFlowOp__ 00002 #define __IFDistanceLodHeatFlowOp__ 00003 00040 #include <stdio.h> 00041 00042 #include "IFMultiImageOp.hpp" 00043 00044 #include "Float3CImage.hpp" 00045 00046 00047 class IFDistanceLodHeatFlowOp : public IFMultiImageOp 00048 { 00049 private: 00050 00051 int iter; 00052 double tmin, tmax; 00053 00054 FImage* 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 Float3CImage* scolorFilter(Float3CImage* src, Float3CImage* dest=0); 00066 virtual Float3CImage* scolorSelectedFilter(AnImage* mask, Float3CImage* src, Float3CImage* dest=0); 00067 00068 00069 // separate color channels 00070 00071 virtual Float3CImage* fcolorFilter(Float3CImage* src, Float3CImage* dest=0); 00072 virtual Float3CImage* fcolorSelectedFilter(AnImage* mask, Float3CImage* src, Float3CImage* dest=0); 00073 00074 public: 00075 00077 IFDistanceLodHeatFlowOp(FImage* edgeDistance=0, int iterations=1, double tMin=0.0, double tMax=20.0, bool colorFlag= false) 00078 :IFMultiImageOp(1,colorFlag) 00079 {iter= iterations; tmin= tMin; tmax= tMax; distanceMapEdges=edgeDistance;} 00080 virtual ~IFDistanceLodHeatFlowOp(){} 00081 00082 void setEdgeDistance(FImage* distanceMap){ distanceMapEdges= distanceMap; } 00083 00084 00085 virtual void report(FILE* file){} 00086 }; 00087 00088 00089 #endif