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 // Superfast Fast Marching inpainting 00042 AnImageOp* createFMMInpainting(); 00043 00044 // Fast Oliveira Inpainting 00045 AnImageOp* createOliveiraInpainting(int np); 00046 00047 // transport based 00048 AnImageOp* createBertalmioInpainting(int np); 00049 00050 // diffusive based 00051 AnImageOp* createTVInpainting(int np); 00052 AnImageOp* createCDDInpainting(int np); 00053 00054 // transport & diffusive based 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