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 // basic filter parameters 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 // single shot filtering 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