00001 #ifndef __GShockFilter__
00002 #define __GShockFilter__
00003
00031 #include <stdio.h>
00032
00033 #include "AbsRImageFilter.hpp"
00034
00035 #include "AbsRImageFlow.hpp"
00036
00037 class GShockFilter : public AbsRImageFilter
00038 {
00039 protected:
00040
00041 RImage* I0;
00042 RImage* I;
00043
00044 int niterations;
00045 double alpha;
00046
00047 AbsRImageFlow* shock;
00048
00049 protected:
00050
00051 virtual void operations(RImage& result);
00052 virtual void operations(AnImage& mask, RImage& result);
00053
00054 public:
00055 GShockFilter(AbsRImageFlow* ashock, int n=30, double ralpha=0.05);
00056 virtual ~GShockFilter(){}
00057
00058 virtual void setLimiter(AbsLimiter* alimiter=0)
00059 {
00060 AbsRImageFilter::setLimiter(alimiter);
00061 if( shock != 0 ) shock->setLimiter(alimiter);
00062 }
00063
00064
00065 virtual RImage* filter(RImage* src, RImage* dest=0);
00066 virtual RImage* selectedFilter(AnImage* mask, RImage* src, RImage* dest=0);
00067
00068 virtual void report(FILE* file){}
00069 };
00070
00071
00072 #endif