00001 #ifndef __IMZeroCrossingOp__ 00002 #define __IMZeroCrossingOp__ 00003 00004 00005 00032 #include <stdio.h> 00033 00034 #include "AnImageOp.hpp" 00035 00036 00037 #include "ILargeMLaplacianOp.hpp" 00038 #include "IEikonalFastSweepingOp.hpp" 00039 00040 class IMZeroCrossingOp : public AnImageOp 00041 { 00042 protected: 00043 00044 ILargeMLaplacianOp laplacianOp; // computes a morphological laplacian 00045 IEikonalFastSweepingOp distanceMapper; // compute fast distance maps to allocate laplacian zeroes 00046 00047 public: 00048 00049 IMZeroCrossingOp(){} 00050 virtual ~IMZeroCrossingOp(){} 00051 00052 virtual void setStructuredElement(StructuredElement* aStructuredElement) 00053 { laplacianOp.setStructuredElement(aStructuredElement); } 00054 00055 virtual void setLuminanceFlag(bool autoGrey=true) 00056 { 00057 AnImageOp::setLuminanceFlag(autoGrey); 00058 laplacianOp.setLuminanceFlag(autoGrey); 00059 } 00060 00061 virtual AnImage* filter(AnImage* src, AnImage* dest=0); 00062 00063 virtual void report(FILE* file){} 00064 }; 00065 00066 00067 #endif