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
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
00058 RComplex fd1x, fd2x, fd3x;
00059 RComplex bd1x, bd2x, bd3x;
00060
00061
00062 RComplex fd1y, fd2y, fd3y;
00063 RComplex bd1y, bd2y, bd3y;
00064
00065 protected:
00066
00067 virtual double computeQfromSigma(double asigma);
00068 virtual void computeBparameters();
00069 virtual void computeDirectionParameters();
00070
00071 public:
00072
00073 RVanVieltGaborIirOp(double asigma=1.0, double omega=0.0, double theta=0.0);
00074 virtual ~RVanVieltGaborIirOp(){}
00075
00076
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