00001 #ifndef __ShockFilter__
00002 #define __ShockFilter__
00003
00032 #include <stdio.h>
00033
00034 #include "AbsRImageFilter.hpp"
00035
00036 #include "ShockFlow.hpp"
00037
00038 class ShockFilter : public AbsRImageFilter
00039 {
00040 protected:
00041
00042 RImage* I0;
00043 RImage* I;
00044
00045 int niterations;
00046 double alpha;
00047
00048 ShockFlow shock;
00049
00050 protected:
00051
00052 virtual void operations(RImage& result);
00053 virtual void operations(AnImage& mask, RImage& result);
00054
00055 public:
00056
00057 ShockFilter(int n=30, double ralpha=0.2);
00058 virtual ~ShockFilter(){}
00059
00060 virtual void setLimiter(AbsLimiter* alimiter)
00061 {
00062 AbsRImageFilter::setLimiter(alimiter);
00063 shock.setLimiter(alimiter);
00064 }
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