00001 #ifndef __CombinedDericheFilter__
00002 #define __CombinedDericheFilter__
00003
00004
00005
00027 #include <stdio.h>
00028
00029 #include "AnImage.hpp"
00030 #include "RImage.hpp"
00031
00032 #include "ARColorImageFilter.hpp"
00033
00034 #include "ShockFlow.hpp"
00035
00036 class CombinedDericheFilter : public ARColorImageFilter
00037 {
00038 protected:
00039
00040 int niterations;
00041
00042 double alphaDiffusion;
00043 double sigma1;
00044
00045 double alphaEnhancement;
00046 double sigma2;
00047
00048 double lambda;
00049
00050 Real3CImage* I0;
00051 Real3CImage* I;
00052
00053 RImage* Nxy;
00054
00055 ShockFlow shock;
00056
00057 protected:
00058
00059 virtual double g(double indicator, double sigma);
00060
00061 virtual void computeIndicator(Real3CImage& image);
00062 virtual void computeIndicator(AnImage& mask, Real3CImage& image);
00063
00064 virtual double operation(RImage& channel, int c, int x, int y);
00065
00066 virtual void operations(Real3CImage& result, Real3CImage& image);
00067 virtual void operations(AnImage& mask, Real3CImage& result, Real3CImage& image);
00068
00069 public:
00070
00071 CombinedDericheFilter(int n=50, double dalpha=0.05, double atau1=0.1, double ealpha=0.05, double atau2=0.1);
00072 virtual ~CombinedDericheFilter(){}
00073
00074
00075
00076 virtual Real3CImage* filter(Real3CImage* src, Real3CImage* dest=0);
00077 virtual Real3CImage* selectedFilter(AnImage* mask, Real3CImage* src, Real3CImage* dest=0);
00078
00079
00080
00081 virtual void report(FILE* file){}
00082 };
00083
00084
00085 #endif