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 // Semi-Imlicit sequential LOD restorations 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 // Semi-Implicit parallel AOS restorations 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 // Semi-Implicit parallel Pyramidal AOS restorations 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