00001 #ifndef __AbsFRestorationLS__
00002 #define __AbsFRestorationLS__
00003
00004
00025 #include <stdio.h>
00026
00027 #include "AbsFImageFilter.hpp"
00028
00029 #include "AFSpatialDiscretisation.hpp"
00030
00031
00032 class AbsFRestorationLS : public AbsFImageFilter
00033 {
00034 protected:
00035
00036 bool pixelNormalisation;
00037
00038 double epsilon;
00039
00040 int outerIterations;
00041 int innerIterations;
00042
00043 float tau;
00044
00045 AFSpatialDiscretisation* spatialModel;
00046
00047 bool nonLinear;
00048
00049
00050 protected:
00051
00052 virtual void init(FImage* im);
00053
00054
00055 virtual FImage* solveSingle(FImage* uk, FImage* uk1=0)=0;
00056
00057 public:
00058
00059 AbsFRestorationLS(int outerIter, double t, AFSpatialDiscretisation* smodel,
00060 bool normalized=true, bool nonLinearFlag=true);
00061 AbsFRestorationLS(int outerIter, int innerIter, double t, AFSpatialDiscretisation* smodel,
00062 bool normalized=true, bool nonLinearFlag=true);
00063 virtual ~AbsFRestorationLS(){}
00064
00065
00066 virtual FImage* filter(FImage* src, FImage* dest=0);
00067 virtual FImage* selectedFilter(AnImage* mask, FImage* src, FImage* dest=0)
00068 { return filter(src, dest); }
00069
00070 virtual void report(FILE* file){ fprintf(file,"Simple Anisotropic Operator\n"); }
00071 };
00072
00073
00074 #endif