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