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