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