00001 #ifndef __IFAosBarashOp__ 00002 #define __IFAosBarashOp__ 00003 00044 #include <stdio.h> 00045 00046 #include "IFMultiImageOp.hpp" 00047 00048 #include "Float3CImage.hpp" 00049 00050 00051 class IFAosBarashOp : public IFMultiImageOp 00052 { 00053 private: 00054 00055 int iter; 00056 00057 bool perceptualFlag; // Barash simplification, enhance more details, no original bluring 00058 00059 int psfSize; 00060 double tau; 00061 00062 double alpha; 00063 00064 double sigmaBlur; 00065 double c1; 00066 00067 bool iir; 00068 00069 protected: 00070 00071 // mono channel 00072 00073 virtual AnImage* greyFilter(AnImage* src, AnImage* dest=0); 00074 virtual AnImage* greySelectedFilter(AnImage* mask, AnImage* src, AnImage* dest=0); 00075 00076 // separate color channels 00077 00078 virtual Float3CImage* scolorFilter(Float3CImage* src, Float3CImage* dest=0); 00079 virtual Float3CImage* scolorSelectedFilter(AnImage* mask, Float3CImage* src, Float3CImage* dest=0); 00080 00081 00082 // separate color channels 00083 00084 virtual Float3CImage* fcolorFilter(Float3CImage* src, Float3CImage* dest=0); 00085 virtual Float3CImage* fcolorSelectedFilter(AnImage* mask, Float3CImage* src, Float3CImage* dest=0); 00086 00087 public: 00088 00089 IFAosBarashOp(int iterations=1, int psfSz=5, double t=10.0, double aalpha=0.01, 00090 double sigma=0.25, double ac1=0.33, bool perceptual= true, bool colorFlag= false) 00091 :IFMultiImageOp(1,colorFlag) 00092 {iter= iterations; tau= t; alpha= aalpha; sigmaBlur=sigma; c1=ac1; psfSize= psfSz; perceptualFlag= perceptual;} 00093 virtual ~IFAosBarashOp(){} 00094 00095 00096 virtual void report(FILE* file){} 00097 }; 00098 00099 00100 #endif