00001 #ifndef __FastRestorationFactory__
00002 #define __FastRestorationFactory__
00003
00024 #include <stdio.h>
00025
00026 #include "IMultiImageOp.hpp"
00027
00028 #define NUMBER_FAST_RESTORATION_CONTEXT 5
00029 #define NUMBER_FAST_RESTORATION_MODELS 10
00030
00031 class FastRestorationFactory
00032 {
00033 public:
00034
00035 const static char context[NUMBER_FAST_RESTORATION_CONTEXT][64];
00036 const static char model[NUMBER_FAST_RESTORATION_MODELS][64];
00037 const static int modelContext[NUMBER_FAST_RESTORATION_MODELS];
00038
00039 protected:
00040
00041
00042 IMultiImageOp* createLodPeronaFlow(int iter=1, double timeStep=2.0, double rSigma=1.0, double contrast=4.0);
00043 IMultiImageOp* createStrangPeronaFlow(int iter=1, double timeStep=2.0, double rSigma=1.0, double contrast=4.0);
00044 IMultiImageOp* createAfiPeronaFlow(int iter=1, double timeStep=2.0, double rSigma=1.0, double contrast=4.0);
00045
00046
00047 IMultiImageOp* createAosPeronaFlow(int iter=1, double timeStep=2.0, double rSigma=1.0, double contrast=4.0);
00048 IMultiImageOp* createAosPerona1Flow(int iter=1, double timeStep=2.0, double rSigma=1.0, double contrast=4.0);
00049 IMultiImageOp* createAosPerona2Flow(int iter=1, double timeStep=2.0, double rSigma=1.0, double contrast=4.0);
00050
00051 IMultiImageOp* createAosRofFlow(int iter=1, double timeStep=2.0, double rSigma=1.0);
00052
00053 IMultiImageOp* createAosTvFlow(int iter=1, double timeStep=2.0, double rSigma=1.0, double lambda=0.1);
00054
00055
00056
00057 IMultiImageOp* createPyramidalAosPerona(int iter=1, double timeStep=2.0, double rSigma=1.0, double contrast=4.0);
00058
00059 IMultiImageOp* createImplicitAmosPeronaFlow(int iter=1, double timeStep=2.0, double rSigma=1.0, double contrast=4.0);
00060
00061 public:
00062 FastRestorationFactory(){}
00063 virtual ~FastRestorationFactory(){}
00064
00065 static int numberOfContexts(){ return NUMBER_FAST_RESTORATION_CONTEXT; }
00066 static int numberOfModels(){ return NUMBER_FAST_RESTORATION_MODELS; }
00067
00068 static const char* getContext(int i){ return FastRestorationFactory::context[getModelContext(i)]; }
00069 static const char* getModel(int i){ return FastRestorationFactory::model[i]; }
00070 static const int getModelContext(int i){ return FastRestorationFactory::modelContext[i]; }
00071
00072 IMultiImageOp* createModel(int indexModel, int iter=1, double timeStep=2.0, double rSigma=1.0, double contrast=4.0);
00073
00074 virtual void report(FILE* file){}
00075 };
00076
00077
00078
00079 #endif