00001 #ifndef __ILargeTextureThresholdOp__ 00002 #define __ILargeTextureThresholdOp__ 00003 00004 00005 00039 #include <stdio.h> 00040 00041 #include "ILargeMorphologicalOp.hpp" 00042 00043 #include "ILargeOpeningOp.hpp" 00044 #include "ILargeClosingOp.hpp" 00045 00046 class ILargeTextureThresholdOp : public ILargeMorphologicalOp 00047 { 00048 protected: 00049 00050 bool applied; 00051 00052 int up; 00053 int low; 00054 00055 ILargeClosingOp closing; // up enveloppe 00056 ILargeOpeningOp opening; // low envelope 00057 00058 protected: 00059 00060 virtual int operation(AnImage* src, int channel, int i, int j){return 0;} 00061 00062 public: 00063 00064 ILargeTextureThresholdOp(bool used=false){low= 0; up= 255; applied= used;} 00065 ILargeTextureThresholdOp(int lowLabel, int upLabel, bool used=true) 00066 {low= lowLabel; up= upLabel; applied= used;} 00067 ILargeTextureThresholdOp(StructuredElement* aStructuredElement, int lowLabel=0, int upLabel=255, bool used=true); 00068 virtual ~ILargeTextureThresholdOp(){} 00069 00070 virtual void setUsage(bool use){ applied= use; } 00071 00072 virtual void setIterations(int iter){closing.setIterations(iter); opening.setIterations(iter);} 00073 00074 virtual void setStructuredElement(StructuredElement* aStructuredElement); 00075 00076 virtual AnImage* filter(AnImage* src, AnImage* dest=0); 00077 00078 virtual void report(FILE* file){} 00079 }; 00080 00081 00082 #endif