00001 #ifndef __FDistanceLodHeatFlowOp__ 00002 #define __FDistanceLodHeatFlowOp__ 00003 00004 00044 #include <stdio.h> 00045 00046 #include "AbsFImageFilter.hpp" 00047 00048 #include "FThomasLS.hpp" 00049 00050 class FDistanceLodHeatFlowOp : public AbsFImageFilter 00051 { 00052 protected: 00053 00054 // basic filter parameters 00055 00056 int w, h; 00057 00058 int iterMax; 00059 00060 float tmin, tmax; 00061 00062 FThomasLS* hThomasLS; 00063 FThomasLS* vThomasLS; 00064 00065 FImage* distanceMapEdges; 00066 00067 protected: 00068 00069 virtual float getTau(int x, int y); 00070 00071 public: 00072 00074 FDistanceLodHeatFlowOp(FImage* edgeDistance=0, int iterations=1, float t0= 0.0, float tMax=20.0); 00075 virtual ~FDistanceLodHeatFlowOp(){} 00076 00077 void setEdgeDistance(FImage* distanceMap){ distanceMapEdges= distanceMap; } 00078 00079 // single shot filtering 00080 virtual FImage* filter(FImage* src, FImage* dest=0); 00081 virtual FImage* selectedFilter(AnImage* mask, FImage* src, FImage* dest=0); 00082 00083 virtual void report(FILE* file){ fprintf(file,"Real Recursive 2d Blur Operator\n"); } 00084 }; 00085 00086 00087 #endif