00001 #ifndef __ILargeMorphologicalOp__
00002 #define __ILargeMorphologicalOp__
00003
00004
00005
00024 #include <stdio.h>
00025
00026 #include "IMorphologicalOp.hpp"
00027
00028 #include "StructuredElement.hpp"
00029
00030
00031 class ILargeMorphologicalOp : public IMorphologicalOp
00032 {
00033 protected:
00034
00035 int iterations;
00036
00037 StructuredElement* structuredElement;
00038
00039 int histo[65536];
00040 int minHisto, maxHisto;
00041
00042 protected:
00043
00044
00045 virtual void init(AnImage* src, int channel, int i, int j);
00046 virtual int operation(AnImage* src, int channel, int i, int j)=0;
00047 virtual void update(AnImage* src, int channel, int i, int j, int idir);
00048
00049 virtual AnImage* singleFilter(AnImage* src, AnImage* dest=0);
00050
00051 public:
00052
00053 ILargeMorphologicalOp(int iter=1)
00054 {structuredElement=0; iterations=iter; }
00055 ILargeMorphologicalOp(StructuredElement* aStructuredElement, int iter=1)
00056 {structuredElement= aStructuredElement; iterations=iter; }
00057
00058 virtual ~ILargeMorphologicalOp(){}
00059
00060 virtual void setIterations(int iter){iterations=iter;}
00061
00062 virtual void setStructuredElement(StructuredElement* aStructuredElement)
00063 {structuredElement= aStructuredElement;}
00064
00065 virtual int getMinimum(){ return minHisto; }
00066 virtual int getMaximum(){ return maxHisto; }
00067
00068 virtual AnImage* filter(AnImage* src, AnImage* dest=0);
00069
00070 virtual void report(FILE* file){}
00071 };
00072
00073
00074 #endif