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