00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef __itkSobelOperator_h
00019 #define __itkSobelOperator_h
00020
00021 #include "itkExceptionObject.h"
00022 #include "itkNeighborhoodOperator.h"
00023
00024 namespace itk {
00025
00056 template<class TPixel, unsigned int VDimension=2,
00057 class TAllocator = NeighborhoodAllocator<TPixel> >
00058 class ITK_EXPORT SobelOperator
00059 : public NeighborhoodOperator<TPixel, VDimension, TAllocator>
00060 {
00061
00062 public:
00066 typedef SobelOperator Self;
00067
00071 typedef NeighborhoodOperator<TPixel, VDimension, TAllocator> Superclass;
00072
00073
00078 SobelOperator() {}
00079
00084 SobelOperator(const Self& other)
00085 : NeighborhoodOperator<TPixel, VDimension, TAllocator>(other)
00086 { }
00087
00088
00092 void CreateOperator();
00093
00097 Self &operator=(const Self& other)
00098 {
00099 Superclass::operator=(other);
00100 return *this;
00101 }
00105 virtual void PrintSelf(std::ostream &os, Indent i) const
00106 {
00107 os << i << "SobelOperator { this=" << this
00108 << "}" << std::endl;
00109 Superclass::PrintSelf(os, i.GetNextIndent());
00110 }
00111
00112 protected:
00117 typedef typename Superclass::CoefficientVector CoefficientVector;
00118 typedef typename Superclass::PixelType PixelType;
00119
00123 CoefficientVector GenerateCoefficients();
00124
00128 void Fill(const CoefficientVector &);
00129
00130
00131
00132
00133
00134 private:
00135
00136 };
00137
00138 }
00139
00140 #ifndef ITK_MANUAL_INSTANTIATION
00141 #include "itkSobelOperator.txx"
00142 #endif
00143
00144 #endif
00145
00146