ITK
6.0.0
Insight 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 72 of file itkNeighborhoodOperator.h.
Public Types | |
using | PixelRealType = typename NumericTraits< TPixel >::RealType |
using | PixelType = TPixel |
using | Self = NeighborhoodOperator |
using | SizeType = itk::Size< VDimension > |
using | SliceIteratorType = SliceIterator< TPixel, Self > |
using | Superclass = Neighborhood< TPixel, VDimension, TAllocator > |
Public Types inherited from itk::Neighborhood< TPixel, VDimension, NeighborhoodAllocator< TPixel > > | |
using | AllocatorType = NeighborhoodAllocator< TPixel > |
using | ConstIterator = typename AllocatorType::const_iterator |
using | DimensionValueType = unsigned int |
using | Iterator = typename AllocatorType::iterator |
using | NeighborIndexType = SizeValueType |
using | OffsetType = Offset< VDimension > |
using | PixelType = TPixel |
using | RadiusType = itk::Size< VDimension > |
using | Self = Neighborhood |
using | SizeType = itk::Size< VDimension > |
using | SizeValueType = typename SizeType::SizeValueType |
using | SliceIteratorType = SliceIterator< TPixel, Self > |
Protected Types | |
using | CoefficientVector = typename std::vector< PixelRealType > |
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, NeighborhoodAllocator< TPixel > > | |
virtual void | Allocate (NeighborIndexType i) |
virtual void | ComputeNeighborhoodOffsetTable () |
virtual void | ComputeNeighborhoodStrideTable () |
virtual void | PrintSelf (std::ostream &, Indent) const |
void | SetSize () |
Private Attributes | |
unsigned long | m_Direction { 0 } |
Additional Inherited Members | |
Static Public Attributes inherited from itk::Neighborhood< TPixel, VDimension, NeighborhoodAllocator< TPixel > > | |
static constexpr unsigned int | NeighborhoodDimension |
|
protected |
Type alias support for coefficient vector type. Necessary to fix bug in the microsoft VC++ compiler.
Definition at line 153 of file itkNeighborhoodOperator.h.
using itk::NeighborhoodOperator< TPixel, VDimension, TAllocator >::PixelRealType = typename NumericTraits<TPixel>::RealType |
Definition at line 90 of file itkNeighborhoodOperator.h.
using itk::NeighborhoodOperator< TPixel, VDimension, TAllocator >::PixelType = TPixel |
External support for pixel type
Definition at line 85 of file itkNeighborhoodOperator.h.
using itk::NeighborhoodOperator< TPixel, VDimension, TAllocator >::Self = NeighborhoodOperator |
Standard class type aliases.
Definition at line 76 of file itkNeighborhoodOperator.h.
using itk::Neighborhood< TPixel, VDimension, TAllocator >::SizeType = itk::Size<VDimension> |
Size and value type alias support
Definition at line 79 of file itkNeighborhood.h.
using itk::NeighborhoodOperator< TPixel, VDimension, TAllocator >::SliceIteratorType = SliceIterator<TPixel, Self> |
Slice iterator type alias support
Definition at line 88 of file itkNeighborhoodOperator.h.
using itk::NeighborhoodOperator< TPixel, VDimension, TAllocator >::Superclass = Neighborhood<TPixel, VDimension, TAllocator> |
Definition at line 77 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, Self::FixedImageDimension >, and itk::SobelOperator< MovedGradientPixelType, Self::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.
|
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::LaplacianOperator< TPixel, VDimension, TAllocator >, itk::AnnulusOperator< TPixel, TDimension, TAllocator >, itk::BackwardDifferenceOperator< TPixel, TDimension, TAllocator >, itk::DerivativeOperator< TPixel, VDimension, TAllocator >, itk::DerivativeOperator< OutputImagePixelType, Self::ImageDimension >, itk::DerivativeOperator< PixelType, Self::ImageDimension >, itk::DerivativeOperator< ScalarValueType, Self::ImageDimension >, itk::ForwardDifferenceOperator< TPixel, VDimension, TAllocator >, itk::GaussianDerivativeOperator< TPixel, VDimension, TAllocator >, itk::GaussianOperator< TPixel, VDimension, TAllocator >, itk::GaussianOperator< ScalarType, VDimension >, itk::GaussianOperator< ScalarType, Superclass::Dimension >, itk::ImageKernelOperator< TPixel, VDimension, TAllocator >, itk::SobelOperator< TPixel, VDimension, TAllocator >, itk::SobelOperator< FixedGradientPixelType, Self::FixedImageDimension >, and itk::SobelOperator< MovedGradientPixelType, Self::MovedImageDimension >.
|
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.
|
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::AnnulusOperator< TPixel, TDimension, TAllocator >, itk::BackwardDifferenceOperator< TPixel, TDimension, TAllocator >, itk::DerivativeOperator< TPixel, VDimension, TAllocator >, itk::DerivativeOperator< OutputImagePixelType, Self::ImageDimension >, itk::DerivativeOperator< PixelType, Self::ImageDimension >, itk::DerivativeOperator< ScalarValueType, Self::ImageDimension >, itk::ForwardDifferenceOperator< TPixel, VDimension, TAllocator >, itk::GaussianDerivativeOperator< TPixel, VDimension, TAllocator >, itk::GaussianOperator< TPixel, VDimension, TAllocator >, itk::GaussianOperator< ScalarType, VDimension >, itk::GaussianOperator< ScalarType, Superclass::Dimension >, itk::ImageKernelOperator< TPixel, VDimension, TAllocator >, itk::LaplacianOperator< TPixel, VDimension, TAllocator >, itk::SobelOperator< TPixel, VDimension, TAllocator >, itk::SobelOperator< FixedGradientPixelType, Self::FixedImageDimension >, and itk::SobelOperator< MovedGradientPixelType, Self::MovedImageDimension >.
|
inline |
Returns the direction (dimension number) of a directional operator.
Definition at line 107 of file itkNeighborhoodOperator.h.
|
overridevirtual |
|
inlineprotected |
Initializes all the coefficients in the neighborhood to zero values
Definition at line 175 of file itkNeighborhoodOperator.h.
|
inlineoverridevirtual |
Standard itk object method.
Reimplemented from itk::Neighborhood< TPixel, VDimension, NeighborhoodAllocator< TPixel > >.
Definition at line 139 of file itkNeighborhoodOperator.h.
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 94 of file itkNeighborhoodOperator.h.
|
private |
Direction (dimension number) of the derivative.
Definition at line 186 of file itkNeighborhoodOperator.h.