00001 #ifndef __AbsFEikonalFastSweepingOp__ 00002 #define __AbsFEikonalFastSweepingOp__ 00003 00004 00005 00034 #include <stdio.h> 00035 #include <math.h> 00036 00037 #include "AbsFImageFilter.hpp" 00038 00039 00040 class AbsFEikonalFastSweepingOp : public AbsFImageFilter 00041 { 00042 protected: 00043 00044 int maxIter; 00045 00046 float h; 00047 int width, height; 00048 00049 protected: 00050 00051 virtual float getPotential_h(int i, int j)=0; // to define later, P=1.0 is a distance map 00052 virtual void updatePsi(FImage* psi, int i, int j); 00053 00054 public: 00055 00056 AbsFEikonalFastSweepingOp(int iter=1, float hx=1.0){ h=hx; maxIter=iter;} 00057 virtual ~AbsFEikonalFastSweepingOp(){} 00058 00059 virtual void setPotential(FImage* imageMap){} // to define later, P=1.0 is a distance map 00060 00061 // single shot filtering 00062 virtual FImage* filter(FImage* src, FImage* dest=0); 00063 virtual FImage* selectedFilter(AnImage* mask, FImage* src, FImage* dest=0); 00064 00065 virtual void report(FILE* file){ fprintf(file,"Eikonal Fast Sweeping Operator\n"); } 00066 }; 00067 00068 00069 #endif