00001 #ifndef __FVanVieltGradientIirOp__
00002 #define __FVanVieltGradientIirOp__
00003
00004
00026 #include <stdio.h>
00027
00028 #include "AbsFImageFilter.hpp"
00029
00030 class FVanVieltGradientIirOp: public AbsFImageFilter
00031 {
00032 protected:
00033
00034 bool scalingCorrection;
00035 int direction;
00036
00037
00038 double sigma;
00039 double q;
00040
00041 double b0;
00042 double b1;
00043 double b2;
00044 double b3;
00045 float B;
00046 float B_2;
00047
00048 float b1_b0;
00049 float b2_b0;
00050 float b3_b0;
00051
00052 protected:
00053
00054 virtual double computeQfromSigma(double asigma);
00055 virtual void computeBparameters();
00056
00057 public:
00058
00059 FVanVieltGradientIirOp(int dir=0, double asigma=1.0, bool scalingCorrect=true);
00060 virtual ~FVanVieltGradientIirOp(){}
00061
00062
00063 virtual FImage* filter(FImage* src, int dir, FImage* dest);
00064
00065 virtual FImage* filter(FImage* src, FImage* dest=0);
00066 virtual FImage* selectedFilter(AnImage* mask, FImage* src, FImage* dest=0)
00067 { return filter(src, dest); }
00068
00069 virtual void report(FILE* file){ fprintf(file,"Float Recursive 2d Blur Operator\n"); }
00070 };
00071
00072
00073 #endif