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 // basic filter parameters 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; // b1/b0 avoid divisions 00049 float b2_b0; 00050 float b3_b0; 00051 00052 protected: 00053 00054 virtual double computeQfromSigma(double asigma); 00055 virtual void computeBparameters(); // b0,..., B 00056 00057 public: 00058 00059 FVanVieltGradientIirOp(int dir=0, double asigma=1.0, bool scalingCorrect=true); 00060 virtual ~FVanVieltGradientIirOp(){} 00061 00062 // single shot filtering 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