00001 #ifndef __FPyramidalAosOp__ 00002 #define __FPyramidalAosOp__ 00003 00004 00042 #include <stdio.h> 00043 00044 #include "AbsFImageFilter.hpp" 00045 00046 #include "FRegularizedAosOp.hpp" 00047 00048 #include "FBlurrOp.hpp" 00049 #include "FFastRestorationFactory.hpp" 00050 00051 class FPyramidalAosOp : public AbsFImageFilter 00052 { 00053 protected: 00054 00055 // basic filter parameters 00056 00057 00058 int maxLevels; 00059 int w, h; 00060 00061 float alpha0; 00062 float K0; 00063 00064 float* alpha; 00065 float* K; 00066 FImage** f; 00067 00068 FBlurrOp blurr; 00069 00070 int model; 00071 float tau; 00072 float lambda; 00073 float sigma; 00074 00075 FFastRestorationFactory factory; 00076 00077 int iterations; 00078 00079 FRegularizedAosOp* op; // basic regularized operator 00080 00081 protected: 00082 00083 void init(FImage* src); 00084 void clear(); 00085 00086 FImage* linearInterpolation(FImage* coarseSolution, FImage* I0level); 00087 00088 public: 00089 00090 FPyramidalAosOp(int model, int iter, float t=0.5, float alambda=0.1, float asigma=5.0); 00091 virtual ~FPyramidalAosOp(){} 00092 00093 // single shot filtering 00094 virtual FImage* filter(FImage* src, FImage* dest=0); 00095 virtual FImage* selectedFilter(AnImage* mask, FImage* src, FImage* dest=0); 00096 00097 virtual void report(FILE* file){ fprintf(file,"Float Pyramidal Aos Operator\n"); } 00098 }; 00099 00100 00101 #endif