00001 #ifndef __F2DHeatFlowOp__ 00002 #define __F2DHeatFlowOp__ 00003 00004 00029 #include <stdio.h> 00030 00031 #include "AbsFImageFilter.hpp" 00032 00033 #include "AbsFLinearSolver.hpp" 00034 00035 class F2DHeatFlowOp : public AbsFImageFilter 00036 { 00037 protected: 00038 00039 int iterMax; 00040 int innerIterMax; 00041 float tau; 00042 float epsilon; 00043 00044 bool implicitFlag; // false= semi-implicit 00045 00046 AbsFLinearSolver* linearSolver; 00047 00048 public: 00049 00051 F2DHeatFlowOp(int typeSolver, bool implicit=false, int iter=1, int innerIter=8, float t=0.5, float eps=1.0e-4); 00052 virtual ~F2DHeatFlowOp(){delete linearSolver;} 00053 00054 // single shot filtering 00055 virtual FImage* filter(FImage* src, FImage* dest=0); 00056 virtual FImage* selectedFilter(AnImage* mask, FImage* src, FImage* dest=0) 00057 { return filter(src, dest); } 00058 00059 virtual void report(FILE* file){ fprintf(file,"HeatFlow: 2D Linear Solver\n"); } 00060 }; 00061 00062 00063 #endif