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