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
00084
template<
class TPixel,
unsigned int VDimension=2,
00085
class TAllocator = NeighborhoodAllocator<TPixel> >
00086
class ITK_EXPORT SobelOperator
00087 :
public NeighborhoodOperator<TPixel, VDimension, TAllocator>
00088 {
00089
public:
00091
typedef SobelOperator
Self;
00092
typedef NeighborhoodOperator<TPixel, VDimension, TAllocator>
Superclass;
00093
00094
itkTypeMacro(SobelOperator, NeighborhoodOperator);
00095
00096 SobelOperator() {}
00097 SobelOperator(
const Self& other)
00098 : NeighborhoodOperator<TPixel, VDimension, TAllocator>(other)
00099 { }
00100
00106
virtual void CreateDirectional()
00107 {
00108 this->CreateToRadius(1);
00109 }
00110
00115
00119
Self &operator=(
const Self& other)
00120 {
00121 Superclass::operator=(other);
00122
return *
this;
00123 }
00127
virtual void PrintSelf(std::ostream &os, Indent i)
const
00128
{
00129 os << i <<
"SobelOperator { this=" <<
this <<
"}" << std::endl;
00130
Superclass::PrintSelf(os, i.GetNextIndent());
00131 }
00132
00133
protected:
00138
typedef typename Superclass::CoefficientVector CoefficientVector;
00139
typedef typename Superclass::PixelType PixelType;
00140
00144 CoefficientVector GenerateCoefficients();
00145
00149
void Fill(
const CoefficientVector &c);
00150
00151 };
00152
00153 }
00154
00155
#ifndef ITK_MANUAL_INSTANTIATION
00156
#include "itkSobelOperator.txx"
00157
#endif
00158
00159
#endif
00160
00161