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
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;
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
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