00001 #ifndef __CoherenceEnhancementDiff55__
00002 #define __CoherenceEnhancementDiff55__
00003
00027 #include <stdio.h>
00028
00029 #include "AnImage.hpp"
00030 #include "AbsRImageFilter.hpp"
00031
00032 class CoherenceEnhancementDiff55 : public AbsRImageFilter
00033 {
00034 protected:
00035
00036 RImage* I0;
00037 RImage* I;
00038
00039
00040 int niterations;
00041 double tau;
00042
00043 AbsRImageFilter* opX;
00044 AbsRImageFilter* opY;
00045
00046 AbsRImageFilter* largeBlurrer;
00047
00048 RImage* ux;
00049 RImage* uy;
00050
00051
00052 double a;
00053 double b;
00054 double c;
00055
00056 double sigma;
00057 double c1;
00058 double c2;
00059
00060 double lambda1, lambda2;
00061 double cosAlpha, sinAlpha;
00062
00063
00064 double rho;
00065
00066 RImage* jtmp;
00067 RImage* j11;
00068 RImage* j12;
00069 RImage* j22;
00070
00071 double mu1, mu2;
00072
00073
00074 RImage* j1;
00075 RImage* j2;
00076 RImage* j1x;
00077 RImage* j2y;
00078
00079 protected:
00080
00081 virtual void precompute();
00082
00083
00084 virtual void operations(RImage& result);
00085 virtual void operations(AnImage& mask, RImage& result);
00086
00087 public:
00088
00089 CoherenceEnhancementDiff55(int n=100, double dt=0.2,
00090 double sig=0.5, double arho=5.0, double ac1=0.001, double ac2=1.0);
00091 virtual ~CoherenceEnhancementDiff55(){ delete largeBlurrer; }
00092
00093 virtual void prepare(RImage* src);
00094 virtual void clear(){ delete ux; delete uy; delete j1; delete j2; delete j1x; delete j2y; }
00095
00096 virtual RImage* filter(RImage* src, RImage* dest=0);
00097 virtual RImage* selectedFilter(AnImage* mask, RImage* src, RImage* dest=0);
00098
00099 virtual void report(FILE* file){}
00100 };
00101
00102
00103 #endif