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