ITK
4.9.0
Insight Segmentation and Registration Toolkit
|
#include <itkNeighborhoodOperator.h>
Virtual class that defines a common interface to all neighborhood operator subtypes.
A NeighborhoodOperator is a set of pixel values that can be applied to a Neighborhood to perform a user-defined operation (i.e. convolution kernel, morphological structuring element). A NeighborhoodOperator is itself a specialized Neighborhood, with functionality to generate its coefficients according to user-defined parameters. Because the operator is a subclass of Neighborhood, it is a valid operand in any of the operations defined on the Neighborhood object (convolution, inner product, etc.).
NeighborhoodOperator is a pure virtual object that must be subclassed to be used. A user's subclass must implement two methods:
(1) GenerateCoefficients – the algorithm that computes the scalar coefficients of the operator.
(2) Fill – the algorithm that places the scalar coefficients into the memory buffer of the operator (arranges them spatially in the neighborhood).
NeighborhoodOperator supports the concept of a "directional operator." A directional operator is defined in this context to be an operator that is applied along a single dimension. Examples of this type of operator are directional derivatives and the individual, directional components of separable processes such as Gaussian smoothing.
How a NeighborhoodOperator is applied to data is up to the user who defines it. One possible use of an operator would be to take its inner product with a neighborhood of values to produce a scalar result. This process effects convolution when applied to successive neighborhoods across a region of interest in an image.
Definition at line 66 of file itkNeighborhoodOperator.h.
Public Types | |
typedef NumericTraits< TPixel > ::RealType | PixelRealType |
typedef TPixel | PixelType |
typedef NeighborhoodOperator | Self |
typedef Superclass::SizeType | SizeType |
typedef SliceIterator< TPixel, Self > | SliceIteratorType |
typedef Neighborhood< TPixel, VDimension, TAllocator > | Superclass |
Public Types inherited from itk::Neighborhood< TPixel, VDimension, TAllocator > | |
typedef TAllocator | AllocatorType |
typedef AllocatorType::const_iterator | ConstIterator |
typedef unsigned int | DimensionValueType |
typedef AllocatorType::iterator | Iterator |
typedef SizeValueType | NeighborIndexType |
typedef Offset< VDimension > | OffsetType |
typedef TPixel | PixelType |
typedef Neighborhood | Self |
typedef SizeType::SizeValueType | SizeValueType |
typedef SliceIterator< TPixel, Self > | SliceIteratorType |
Protected Types | |
typedef std::vector < PixelRealType > | CoefficientVector |
Protected Member Functions | |
virtual void | Fill (const CoefficientVector &)=0 |
virtual void | FillCenteredDirectional (const CoefficientVector &) |
virtual CoefficientVector | GenerateCoefficients ()=0 |
void | InitializeToZero () |
Protected Member Functions inherited from itk::Neighborhood< TPixel, VDimension, TAllocator > | |
virtual void | Allocate (NeighborIndexType i) |
virtual void | ComputeNeighborhoodOffsetTable () |
virtual void | ComputeNeighborhoodStrideTable () |
void | SetSize () |
Private Attributes | |
unsigned long | m_Direction |
Additional Inherited Members | |
Public Attributes inherited from itk::Neighborhood< TPixel, VDimension, TAllocator > | |
typedef::itk::Size< VDimension > | RadiusType |
typedef::itk::Size< VDimension > | SizeType |
Static Public Attributes inherited from itk::Neighborhood< TPixel, VDimension, TAllocator > | |
static const unsigned int | NeighborhoodDimension = VDimension |
|
protected |
Typedef support for coefficient vector type. Necessary to fix bug in the microsoft VC++ compiler.
Definition at line 151 of file itkNeighborhoodOperator.h.
typedef NumericTraits< TPixel >::RealType itk::NeighborhoodOperator< TPixel, VDimension, TAllocator >::PixelRealType |
Definition at line 142 of file itkNeighborhoodOperator.h.
typedef TPixel itk::NeighborhoodOperator< TPixel, VDimension, TAllocator >::PixelType |
External support for pixel type
Definition at line 80 of file itkNeighborhoodOperator.h.
typedef NeighborhoodOperator itk::NeighborhoodOperator< TPixel, VDimension, TAllocator >::Self |
Standard class typedefs.
Definition at line 71 of file itkNeighborhoodOperator.h.
typedef Superclass::SizeType itk::NeighborhoodOperator< TPixel, VDimension, TAllocator >::SizeType |
Size object typedef support
Definition at line 74 of file itkNeighborhoodOperator.h.
typedef SliceIterator< TPixel, Self > itk::NeighborhoodOperator< TPixel, VDimension, TAllocator >::SliceIteratorType |
Slice iterator typedef support
Definition at line 83 of file itkNeighborhoodOperator.h.
typedef Neighborhood< TPixel, VDimension, TAllocator > itk::NeighborhoodOperator< TPixel, VDimension, TAllocator >::Superclass |
Definition at line 72 of file itkNeighborhoodOperator.h.
|
inline |
Constructor.
Definition at line 86 of file itkNeighborhoodOperator.h.
|
inline |
Copy constructor
Definition at line 90 of file itkNeighborhoodOperator.h.
|
virtual |
Creates the operator with length only in the specified direction. The radius of the operator will be 0 except along the axis on which the operator will work.
Reimplemented in itk::SobelOperator< TPixel, VDimension, TAllocator >, itk::SobelOperator< FixedGradientPixelType, itkGetStaticConstMacro(FixedImageDimension) >, and itk::SobelOperator< MovedGradientPixelType, itkGetStaticConstMacro(MovedImageDimension) >.
|
virtual |
Creates the operator with a specified radius. The spatial location of the coefficients within the operator is defined by the subclass implementation of the Fill method.
Referenced by itk::SobelOperator< MovedGradientPixelType, itkGetStaticConstMacro(MovedImageDimension) >::CreateDirectional().
|
virtual |
Creates the operator with a specified radius ("square", same length on each side). The spatial location of the coefficients within the operator is defined by the subclass implementation of the Fill method.
|
protectedpure virtual |
A subclass-specific algorithm that positions the coefficients spatially in the operator.
Implemented in itk::GaussianOperator< TPixel, VDimension, TAllocator >, itk::GaussianOperator< ScalarType, NDimensions >, itk::GaussianOperator< ScalarType, Superclass::Dimension >, itk::GaussianDerivativeOperator< TPixel, VDimension, TAllocator >, itk::SobelOperator< TPixel, VDimension, TAllocator >, itk::SobelOperator< FixedGradientPixelType, itkGetStaticConstMacro(FixedImageDimension) >, itk::SobelOperator< MovedGradientPixelType, itkGetStaticConstMacro(MovedImageDimension) >, itk::HigherOrderAccurateDerivativeOperator< TPixel, VDimension, TAllocator >, itk::LaplacianOperator< TPixel, VDimension, TAllocator >, itk::DerivativeOperator< TPixel, VDimension, TAllocator >, itk::DerivativeOperator< ScalarValueType, itkGetStaticConstMacro(ImageDimension) >, itk::DerivativeOperator< OutputImagePixelType, itkGetStaticConstMacro(ImageDimension) >, itk::DerivativeOperator< PixelType, itkGetStaticConstMacro(ImageDimension) >, itk::DerivativeOperator< OutputImagePixelType, itkGetStaticConstMacro(ImageDimension)>, itk::ImageKernelOperator< TPixel, VDimension, TAllocator >, itk::ForwardDifferenceOperator< TPixel, VDimension, TAllocator >, and itk::BackwardDifferenceOperator< TPixel, TDimension, TAllocator >.
|
protectedvirtual |
A pre-defined Fill function that can be called by a subclass Fill function to center coefficients along the axis specified by the SetDirection method. Useful for creating directional operators, or centering coefficients in an N-dimensional neighborhood.
Referenced by itk::ForwardDifferenceOperator< TPixel, VDimension, TAllocator >::Fill(), itk::DerivativeOperator< OutputImagePixelType, itkGetStaticConstMacro(ImageDimension)>::Fill(), itk::HigherOrderAccurateDerivativeOperator< TPixel, VDimension, TAllocator >::Fill(), itk::GaussianDerivativeOperator< TPixel, VDimension, TAllocator >::Fill(), and itk::GaussianOperator< ScalarType, Superclass::Dimension >::Fill().
|
virtual |
Reverses the direction of all axes of the operator by reversing the order of the coefficients.
|
protectedpure virtual |
A subclass-specific algorithm that computes the coefficients of the operator.
Implemented in itk::GaussianOperator< TPixel, VDimension, TAllocator >, itk::GaussianOperator< ScalarType, NDimensions >, itk::GaussianOperator< ScalarType, Superclass::Dimension >, itk::GaussianDerivativeOperator< TPixel, VDimension, TAllocator >, itk::SobelOperator< TPixel, VDimension, TAllocator >, itk::SobelOperator< FixedGradientPixelType, itkGetStaticConstMacro(FixedImageDimension) >, itk::SobelOperator< MovedGradientPixelType, itkGetStaticConstMacro(MovedImageDimension) >, itk::HigherOrderAccurateDerivativeOperator< TPixel, VDimension, TAllocator >, itk::LaplacianOperator< TPixel, VDimension, TAllocator >, itk::DerivativeOperator< TPixel, VDimension, TAllocator >, itk::DerivativeOperator< ScalarValueType, itkGetStaticConstMacro(ImageDimension) >, itk::DerivativeOperator< OutputImagePixelType, itkGetStaticConstMacro(ImageDimension) >, itk::DerivativeOperator< PixelType, itkGetStaticConstMacro(ImageDimension) >, itk::DerivativeOperator< OutputImagePixelType, itkGetStaticConstMacro(ImageDimension)>, itk::ImageKernelOperator< TPixel, VDimension, TAllocator >, itk::ForwardDifferenceOperator< TPixel, VDimension, TAllocator >, and itk::BackwardDifferenceOperator< TPixel, TDimension, TAllocator >.
|
inline |
Returns the direction (dimension number) of a directional operator.
Definition at line 108 of file itkNeighborhoodOperator.h.
|
virtual |
Reimplemented in itk::GaussianDerivativeOperator< TPixel, VDimension, TAllocator >, itk::SobelOperator< TPixel, VDimension, TAllocator >, itk::SobelOperator< FixedGradientPixelType, itkGetStaticConstMacro(FixedImageDimension) >, itk::SobelOperator< MovedGradientPixelType, itkGetStaticConstMacro(MovedImageDimension) >, itk::GaussianOperator< TPixel, VDimension, TAllocator >, itk::HigherOrderAccurateDerivativeOperator< TPixel, VDimension, TAllocator >, itk::GaussianOperator< ScalarType, NDimensions >, itk::GaussianOperator< ScalarType, Superclass::Dimension >, and itk::ImageKernelOperator< TPixel, VDimension, TAllocator >.
|
inlineprotected |
Initializes all the coefficients in the neighborhood to zero values
Definition at line 169 of file itkNeighborhoodOperator.h.
|
inline |
Assignment operator.
Definition at line 95 of file itkNeighborhoodOperator.h.
Referenced by itk::ForwardDifferenceOperator< TPixel, VDimension, TAllocator >::operator=(), itk::ImageKernelOperator< TPixel, VDimension, TAllocator >::operator=(), itk::DerivativeOperator< OutputImagePixelType, itkGetStaticConstMacro(ImageDimension)>::operator=(), itk::HigherOrderAccurateDerivativeOperator< TPixel, VDimension, TAllocator >::operator=(), itk::GaussianOperator< ScalarType, Superclass::Dimension >::operator=(), itk::LaplacianOperator< TPixel, VDimension, TAllocator >::operator=(), and itk::SobelOperator< MovedGradientPixelType, itkGetStaticConstMacro(MovedImageDimension) >::operator=().
|
inlineoverridevirtual |
Prints some debugging information.
Reimplemented from itk::Neighborhood< TPixel, VDimension, TAllocator >.
Reimplemented in itk::GaussianDerivativeOperator< TPixel, VDimension, TAllocator >, itk::GaussianOperator< TPixel, VDimension, TAllocator >, itk::GaussianOperator< ScalarType, NDimensions >, itk::GaussianOperator< ScalarType, Superclass::Dimension >, itk::SobelOperator< TPixel, VDimension, TAllocator >, itk::SobelOperator< FixedGradientPixelType, itkGetStaticConstMacro(FixedImageDimension) >, itk::SobelOperator< MovedGradientPixelType, itkGetStaticConstMacro(MovedImageDimension) >, itk::HigherOrderAccurateDerivativeOperator< TPixel, VDimension, TAllocator >, itk::LaplacianOperator< TPixel, VDimension, TAllocator >, itk::DerivativeOperator< TPixel, VDimension, TAllocator >, itk::DerivativeOperator< ScalarValueType, itkGetStaticConstMacro(ImageDimension) >, itk::DerivativeOperator< OutputImagePixelType, itkGetStaticConstMacro(ImageDimension) >, itk::DerivativeOperator< PixelType, itkGetStaticConstMacro(ImageDimension) >, itk::DerivativeOperator< OutputImagePixelType, itkGetStaticConstMacro(ImageDimension)>, and itk::ImageKernelOperator< TPixel, VDimension, TAllocator >.
Definition at line 134 of file itkNeighborhoodOperator.h.
Referenced by itk::ImageKernelOperator< TPixel, VDimension, TAllocator >::PrintSelf(), itk::DerivativeOperator< OutputImagePixelType, itkGetStaticConstMacro(ImageDimension)>::PrintSelf(), itk::LaplacianOperator< TPixel, VDimension, TAllocator >::PrintSelf(), itk::HigherOrderAccurateDerivativeOperator< TPixel, VDimension, TAllocator >::PrintSelf(), itk::SobelOperator< MovedGradientPixelType, itkGetStaticConstMacro(MovedImageDimension) >::PrintSelf(), and itk::GaussianOperator< ScalarType, Superclass::Dimension >::PrintSelf().
void itk::NeighborhoodOperator< TPixel, VDimension, TAllocator >::ScaleCoefficients | ( | PixelRealType | ) |
Multiplies all of the coefficients of the kernel by a single scalar value.
|
inline |
Sets the dimensional direction of a directional operator.
Definition at line 104 of file itkNeighborhoodOperator.h.
|
private |
Direction (dimension number) of the derivative.
Definition at line 180 of file itkNeighborhoodOperator.h.
Referenced by itk::NeighborhoodOperator< TPixel, TDimension, TAllocator >::GetDirection(), itk::NeighborhoodOperator< TPixel, TDimension, TAllocator >::NeighborhoodOperator(), itk::NeighborhoodOperator< TPixel, TDimension, TAllocator >::operator=(), itk::NeighborhoodOperator< TPixel, TDimension, TAllocator >::PrintSelf(), and itk::NeighborhoodOperator< TPixel, TDimension, TAllocator >::SetDirection().