00001 #ifndef __InpaintingFactory__
00002 #define __InpaintingFactory__
00003
00004
00005
00024 #include <stdio.h>
00025
00026 #include "AnImageOp.hpp"
00027
00028 #define NUMBER_INPAINTING_CONTEXT 4
00029 #define NUMBER_INPAINTING_MODELS 7
00030
00031 class InpaintingFactory
00032 {
00033 public:
00034
00035 const static char context[NUMBER_INPAINTING_CONTEXT][64];
00036 const static char model[NUMBER_INPAINTING_MODELS][64];
00037 const static int modelContext[NUMBER_INPAINTING_MODELS];
00038
00039 protected:
00040
00041
00042 AnImageOp* createFMMInpainting();
00043
00044
00045 AnImageOp* createOliveiraInpainting(int np);
00046
00047
00048 AnImageOp* createBertalmioInpainting(int np);
00049
00050
00051 AnImageOp* createTVInpainting(int np);
00052 AnImageOp* createCDDInpainting(int np);
00053
00054
00055 AnImageOp* createEulerElasticaInpainting(int np);
00056 AnImageOp* createMRinvariantInpainting(int np);
00057
00058 public:
00059 InpaintingFactory(){}
00060 virtual ~InpaintingFactory(){}
00061
00062 static int numberOfContexts(){ return NUMBER_INPAINTING_CONTEXT; }
00063 static int numberOfModels(){ return NUMBER_INPAINTING_MODELS; }
00064
00065 static const char* getContext(int i){ return InpaintingFactory::context[getModelContext(i)]; }
00066 static const char* getModel(int i){ return InpaintingFactory::model[i]; }
00067 static const int getModelContext(int i){ return InpaintingFactory::modelContext[i]; }
00068
00069 AnImageOp* createModel(int indexModel,int np=100);
00070
00071 virtual void report(FILE* file){}
00072 };
00073
00074
00075
00076 #endif