00001 #ifndef __F2DAdiHeatFlowOp__ 00002 #define __F2DAdiHeatFlowOp__ 00003 00004 00045 #include <stdio.h> 00046 00047 #include "AbsFImageFilter.hpp" 00048 00049 #include "AbsFLinearSolver.hpp" 00050 00051 class F2DAdiHeatFlowOp : public AbsFImageFilter 00052 { 00053 protected: 00054 00055 int iterMax; 00056 int innerIterMax; 00057 float tau; 00058 float epsilon; 00059 00060 bool implicitFlag; // false= semi-implicit 00061 00062 AbsFLinearSolver* linearSolver; 00063 00064 public: 00065 00067 F2DAdiHeatFlowOp(int typeSolver, bool implicit=false, int iter=1, int innerIter=8, float t=0.5, float eps=1.0e-4); 00068 virtual ~F2DAdiHeatFlowOp(){delete linearSolver;} 00069 00070 // single shot filtering 00071 virtual FImage* filter(FImage* src, FImage* dest=0); 00072 virtual FImage* selectedFilter(AnImage* mask, FImage* src, FImage* dest=0) 00073 { return filter(src, dest); } 00074 00075 virtual void report(FILE* file){ fprintf(file,"HeatFlow: 2D Linear Solver\n"); } 00076 }; 00077 00078 00079 #endif