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