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