00001 #ifndef __RStrangPeronaOp__
00002 #define __RStrangPeronaOp__
00003
00004
00029 #include <stdio.h>
00030
00031 #include "AbsRImageFilter.hpp"
00032
00033 #include "ThomasLS.hpp"
00034
00035 class RStrangPeronaOp : public AbsRImageFilter
00036 {
00037 protected:
00038
00039
00040
00041 int w, h;
00042
00043 int iterMax;
00044 double tau;
00045 double K;
00046
00047 ThomasLS* h1ThomasLS;
00048
00049 ThomasLS* vThomasLS;
00050
00051 ThomasLS* h2ThomasLS;
00052
00053 protected:
00054
00055 double gDirGrad(double gvalue);
00056
00057 double gX(RImage* src, int i, int j);
00058 double gY(RImage* src, int i, int j);
00059
00060 public:
00061
00062 RStrangPeronaOp(int iterations=8, double t=0.5, double sigma=16.0);
00063 virtual ~RStrangPeronaOp(){}
00064
00065
00066 virtual RImage* filter(RImage* src, RImage* dest=0);
00067 virtual RImage* selectedFilter(AnImage* mask, RImage* src, RImage* dest=0);
00068
00069 virtual void report(FILE* file){ fprintf(file,"Real Recursive 2d Blur Operator\n"); }
00070 };
00071
00072
00073 #endif