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
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
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