00001 #ifndef __RVanVieltGaborIirOp__ 00002 #define __RVanVieltGaborIirOp__ 00003 00004 00029 #include <stdio.h> 00030 00031 #include "RComplex.hpp" 00032 00033 #include "AbsRImageFilter.hpp" 00034 00035 class RVanVieltGaborIirOp: public AbsRImageFilter 00036 { 00037 protected: 00038 00039 // basic filter parameters 00040 double sigma; 00041 double omega0; 00042 double theta; 00043 00044 double m0, m1, m2; 00045 00046 double omegax, omegay; 00047 00048 double q; 00049 00050 double scale; 00051 double b0; 00052 double b1; 00053 double b2; 00054 double b3; 00055 double B; 00056 00057 // X direction 00058 RComplex fd1x, fd2x, fd3x; 00059 RComplex bd1x, bd2x, bd3x; 00060 00061 // Y direction 00062 RComplex fd1y, fd2y, fd3y; 00063 RComplex bd1y, bd2y, bd3y; 00064 00065 protected: 00066 00067 virtual double computeQfromSigma(double asigma); 00068 virtual void computeBparameters(); // b0,..., B 00069 virtual void computeDirectionParameters(); // fdnx, ... 00070 00071 public: 00072 00073 RVanVieltGaborIirOp(double asigma=1.0, double omega=0.0, double theta=0.0); 00074 virtual ~RVanVieltGaborIirOp(){} 00075 00076 // single shot filtering 00077 virtual RImage* filter(RImage* src, RImage* dest=0); 00078 virtual RImage* selectedFilter(AnImage* mask, RImage* src, RImage* dest=0) 00079 { return filter(src, dest); } 00080 00081 virtual void report(FILE* file){ fprintf(file,"Real Recursive 2d Blur Operator\n"); } 00082 }; 00083 00084 00085 #endif