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