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