00001 #ifndef __TVFilter__
00002 #define __TVFilter__
00003
00004
00005
00024 #include <stdio.h>
00025
00026 #include "AbsRImageFilter.hpp"
00027
00028
00029 class TVFilter : public AbsRImageFilter
00030 {
00031 protected:
00032
00033 RImage* I0;
00034 RImage* I;
00035
00036 bool lambdaDynamic;
00037
00038 double lambda;
00039 double epsilon2;
00040
00041 double dt;
00042
00043 int niterations;
00044
00045 double sumI0_1;
00046 double sumI0_2;
00047
00048 double I0mean;
00049 double I0sigma;
00050
00051 protected:
00052
00053 virtual void channelConstrain();
00054 virtual void channelConstrain(AnImage& mask);
00055
00056 virtual double operation(RImage* im, int x, int y);
00057
00058 virtual void operations(RImage& result);
00059 virtual void operations(AnImage& mask, RImage& result);
00060
00061 public:
00062
00063 TVFilter(int n, double rdt, bool dynamic=false);
00064 virtual ~TVFilter(){}
00065
00066
00067 virtual RImage* filter(RImage* src, RImage* dest=0);
00068 virtual RImage* selectedFilter(AnImage* mask, RImage* src, RImage* dest=0);
00069
00070 virtual void report(FILE* file){}
00071 };
00072
00073
00074 #endif