Main Page   Groups   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Concepts

itk::ShapedNeighborhoodIterator< TImage, TBoundaryCondition > Class Template Reference
[Image Iterators]

A neighborhood iterator which can take on an arbitrary shape. More...

#include <itkShapedNeighborhoodIterator.h>

Inheritance diagram for itk::ShapedNeighborhoodIterator:

Inheritance graph
[legend]
Collaboration diagram for itk::ShapedNeighborhoodIterator< TImage, TBoundaryCondition >:

Collaboration graph
[legend]
List of all members.

Public Types

typedef TImage::InternalPixelType InternalPixelType
typedef TImage::PixelType PixelType
typedef ShapedNeighborhoodIterator Self
typedef ConstShapedNeighborhoodIterator<
TImage, TBoundaryCondition > 
Superclass
typedef Superclass::OffsetType OffsetType
typedef OffsetType::OffsetValueType OffsetValueType
typedef Superclass::RadiusType RadiusType
typedef Superclass::SizeType SizeType
typedef Superclass::SizeValueType SizeValueType
typedef Superclass::ConstIterator ConstIterator
typedef Superclass::IndexListType IndexListType
typedef Superclass::BoundaryConditionType BoundaryConditionType
typedef Superclass::ImageBoundaryConditionPointerType ImageBoundaryConditionPointerType
typedef TImage ImageType
typedef TImage::RegionType RegionType
typedef Index< itkGetStaticConstMacro(Dimension) IndexType )
typedef IndexType::IndexValueType IndexValueType
typedef Neighborhood< PixelType,
itkGetStaticConstMacro(Dimension) 
NeighborhoodType )

Public Methods

 itkStaticConstMacro (Dimension, unsigned int, TImage::ImageDimension)
Selfoperator= (const Self &orig)
virtual void PrintSelf (std::ostream &, Indent) const
const ConstIteratorEnd () const
void ClearActiveList ()
 ShapedNeighborhoodIterator ()
virtual ~ShapedNeighborhoodIterator ()
 ShapedNeighborhoodIterator (const ShapedNeighborhoodIterator &)
 ShapedNeighborhoodIterator (const SizeType &radius, const ImageType *ptr, const RegionType &region)
IteratorBegin ()
IteratorEnd ()

Protected Methods

void ActivateIndex (const unsigned int n)
void DeactivateIndex (const unsigned int n)

Protected Attributes

Iterator m_EndIterator
Iterator m_BeginIterator

Detailed Description

template<class TImage, class TBoundaryCondition = ZeroFluxNeumannBoundaryCondition<TImage>>
class itk::ShapedNeighborhoodIterator< TImage, TBoundaryCondition >

A neighborhood iterator which can take on an arbitrary shape.

General Information
The ShapedNeighborhoodIterator is a refinement of NeighborhoodIterator which allows the user to specify which of the neighborhood elements are active and which will be ignored. This is useful for applications which only need to work with a subset of the neighborhood around a pixel such as morphological operations or cellular automata. This iterator can also be used, for example, to specify "cross-shaped" neighborhood where only elements along a spatial axes are significant.
Constructing a shaped neighborhood iterator
A shaped neighborhood iterator is constructed by constructing a list of active neighbor locations. The list is called the ActiveIndexList. The methods ActivateOffset, DeactivateOffset, and ClearActiveList are used to construct the ActiveIndexList. The argument to Activate/DeactivateOffset is an itk::Offset which represents the ND spatial offset from the center of the neighborhood. For example, to activate the center pixel in the neighborhood, you would do the following:
 typedef Image<float, 3> ImageType;
 ShapedNeighborhoodIterator<ImageType> it(radius, image, region);
 ShapedNeighborhoodIterator<ImageType>::OffsetType offset = {{0,0,0}};
 it.ActivateOffset(offset);

where radius, image, and region are as described in NeighborhoodIterator.

Once a neighborhood location has been activated, iteration (operator++, operator--, operator+=, operator-=) will update the value at the active location. Note that values at inactive locations will NOT be valid if queried.

Accessing elements in a shaped neighborhood.
To access the value at an active neighborhood location, you can use the standard GetPixel, SetPixel methods. SetPixel is not defined for ConstShapedNeighborhoodIterator. The class will not complain if you attempt to access a value at a non-active location, but be aware that the result will be undefined. Error checking is not done in this case for the sake of efficiency.
A second way to access active shaped neighborhood values is through a ShapedNeighborhoodIterator::Iterator or ConstShapedNeighborhoodIterator::ConstIterator. The following example demonstrates the use of these iterators.

 typedef Image<float, 3> ImageType;
 ShapedNeighborhoodIterator<ImageType> it(radius, image, region);
 .
 .
 .
 it.ActivateOffset(offset1);
 it.ActivateOffset(offset2);
 it.ActivateOffset(offset3);
 etc..
 .
 .
 .
 ShapedNeighborhoodIterator<ImageType>::Iterator i;
 for (i = it.Begin(); ! i.IsAtEnd(); i++)
 { i.Set(i.Get() + 1.0); }
 \\ you may also use i != i.End(), but IsAtEnd() may be slightly faster.

You can also iterate backward through the neighbohood active list.

 i = it.End();
 i--;
 while (i != it.Begin())
 {
   i.Set(i.Get() + 1.0);
   i--;
 }
  i.Set(i.Get() + 1.0);

The Get() Set() syntax was chosen versus defining operator * for these iterators because lvalue vs. rvalue context information is needed to determine whether bounds checking must take place.

See also:
Neighborhood , ImageIterator , NeighborhoodIterator

Definition at line 117 of file itkShapedNeighborhoodIterator.h.


Member Typedef Documentation

template<class TImage, class TBoundaryCondition = ZeroFluxNeumannBoundaryCondition<TImage>>
typedef Superclass::BoundaryConditionType itk::ShapedNeighborhoodIterator< TImage, TBoundaryCondition >::BoundaryConditionType
 

Typedef for boundary condition type.

Reimplemented from itk::ConstShapedNeighborhoodIterator< TImage, TBoundaryCondition >.

Definition at line 140 of file itkShapedNeighborhoodIterator.h.

template<class TImage, class TBoundaryCondition = ZeroFluxNeumannBoundaryCondition<TImage>>
typedef Superclass::ConstIterator itk::ShapedNeighborhoodIterator< TImage, TBoundaryCondition >::ConstIterator
 

Reimplemented from itk::ConstShapedNeighborhoodIterator< TImage, TBoundaryCondition >.

Definition at line 138 of file itkShapedNeighborhoodIterator.h.

template<class TImage, class TBoundaryCondition = ZeroFluxNeumannBoundaryCondition<TImage>>
typedef Superclass::ImageBoundaryConditionPointerType itk::ShapedNeighborhoodIterator< TImage, TBoundaryCondition >::ImageBoundaryConditionPointerType
 

Typedef for generic boundary condition pointer

Reimplemented from itk::ConstShapedNeighborhoodIterator< TImage, TBoundaryCondition >.

Definition at line 142 of file itkShapedNeighborhoodIterator.h.

template<class TImage, class TBoundaryCondition = ZeroFluxNeumannBoundaryCondition<TImage>>
typedef TImage itk::ShapedNeighborhoodIterator< TImage, TBoundaryCondition >::ImageType
 

Typedef support for common objects

Reimplemented from itk::ConstShapedNeighborhoodIterator< TImage, TBoundaryCondition >.

Definition at line 145 of file itkShapedNeighborhoodIterator.h.

template<class TImage, class TBoundaryCondition = ZeroFluxNeumannBoundaryCondition<TImage>>
typedef Superclass::IndexListType itk::ShapedNeighborhoodIterator< TImage, TBoundaryCondition >::IndexListType
 

An stl storage container type that can be sorted. The type used for the list of active offsets in the neighborhood.

Reimplemented from itk::ConstShapedNeighborhoodIterator< TImage, TBoundaryCondition >.

Definition at line 139 of file itkShapedNeighborhoodIterator.h.

template<class TImage, class TBoundaryCondition = ZeroFluxNeumannBoundaryCondition<TImage>>
typedef Index<itkGetStaticConstMacro(Dimension) itk::ShapedNeighborhoodIterator< TImage, TBoundaryCondition >::IndexType)
 

Typedef support for common objects

Reimplemented from itk::ConstShapedNeighborhoodIterator< TImage, TBoundaryCondition >.

Definition at line 147 of file itkShapedNeighborhoodIterator.h.

template<class TImage, class TBoundaryCondition = ZeroFluxNeumannBoundaryCondition<TImage>>
typedef IndexType::IndexValueType itk::ShapedNeighborhoodIterator< TImage, TBoundaryCondition >::IndexValueType
 

Typedef support for common objects

Reimplemented from itk::ConstShapedNeighborhoodIterator< TImage, TBoundaryCondition >.

Definition at line 148 of file itkShapedNeighborhoodIterator.h.

template<class TImage, class TBoundaryCondition = ZeroFluxNeumannBoundaryCondition<TImage>>
typedef TImage::InternalPixelType itk::ShapedNeighborhoodIterator< TImage, TBoundaryCondition >::InternalPixelType
 

Extract image type information.

Reimplemented from itk::ConstShapedNeighborhoodIterator< TImage, TBoundaryCondition >.

Definition at line 122 of file itkShapedNeighborhoodIterator.h.

template<class TImage, class TBoundaryCondition = ZeroFluxNeumannBoundaryCondition<TImage>>
typedef Neighborhood<PixelType, itkGetStaticConstMacro(Dimension) itk::ShapedNeighborhoodIterator< TImage, TBoundaryCondition >::NeighborhoodType)
 

Typedef support for common objects

Reimplemented from itk::ConstShapedNeighborhoodIterator< TImage, TBoundaryCondition >.

Definition at line 149 of file itkShapedNeighborhoodIterator.h.

template<class TImage, class TBoundaryCondition = ZeroFluxNeumannBoundaryCondition<TImage>>
typedef Superclass::OffsetType itk::ShapedNeighborhoodIterator< TImage, TBoundaryCondition >::OffsetType
 

Inherit typedefs from superclass

Reimplemented from itk::ConstShapedNeighborhoodIterator< TImage, TBoundaryCondition >.

Definition at line 133 of file itkShapedNeighborhoodIterator.h.

template<class TImage, class TBoundaryCondition = ZeroFluxNeumannBoundaryCondition<TImage>>
typedef OffsetType::OffsetValueType itk::ShapedNeighborhoodIterator< TImage, TBoundaryCondition >::OffsetValueType
 

Reimplemented from itk::ConstShapedNeighborhoodIterator< TImage, TBoundaryCondition >.

Definition at line 134 of file itkShapedNeighborhoodIterator.h.

template<class TImage, class TBoundaryCondition = ZeroFluxNeumannBoundaryCondition<TImage>>
typedef TImage::PixelType itk::ShapedNeighborhoodIterator< TImage, TBoundaryCondition >::PixelType
 

Reimplemented from itk::ConstShapedNeighborhoodIterator< TImage, TBoundaryCondition >.

Definition at line 123 of file itkShapedNeighborhoodIterator.h.

template<class TImage, class TBoundaryCondition = ZeroFluxNeumannBoundaryCondition<TImage>>
typedef Superclass::RadiusType itk::ShapedNeighborhoodIterator< TImage, TBoundaryCondition >::RadiusType
 

Reimplemented from itk::ConstShapedNeighborhoodIterator< TImage, TBoundaryCondition >.

Definition at line 135 of file itkShapedNeighborhoodIterator.h.

template<class TImage, class TBoundaryCondition = ZeroFluxNeumannBoundaryCondition<TImage>>
typedef TImage::RegionType itk::ShapedNeighborhoodIterator< TImage, TBoundaryCondition >::RegionType
 

Typedef support for common objects

Reimplemented from itk::ConstShapedNeighborhoodIterator< TImage, TBoundaryCondition >.

Definition at line 146 of file itkShapedNeighborhoodIterator.h.

template<class TImage, class TBoundaryCondition = ZeroFluxNeumannBoundaryCondition<TImage>>
typedef ShapedNeighborhoodIterator itk::ShapedNeighborhoodIterator< TImage, TBoundaryCondition >::Self
 

Standard class typedefs.

Reimplemented from itk::ConstShapedNeighborhoodIterator< TImage, TBoundaryCondition >.

Definition at line 129 of file itkShapedNeighborhoodIterator.h.

template<class TImage, class TBoundaryCondition = ZeroFluxNeumannBoundaryCondition<TImage>>
typedef Superclass::SizeType itk::ShapedNeighborhoodIterator< TImage, TBoundaryCondition >::SizeType
 

Reimplemented from itk::ConstShapedNeighborhoodIterator< TImage, TBoundaryCondition >.

Definition at line 136 of file itkShapedNeighborhoodIterator.h.

template<class TImage, class TBoundaryCondition = ZeroFluxNeumannBoundaryCondition<TImage>>
typedef Superclass::SizeValueType itk::ShapedNeighborhoodIterator< TImage, TBoundaryCondition >::SizeValueType
 

Reimplemented from itk::ConstShapedNeighborhoodIterator< TImage, TBoundaryCondition >.

Definition at line 137 of file itkShapedNeighborhoodIterator.h.

template<class TImage, class TBoundaryCondition = ZeroFluxNeumannBoundaryCondition<TImage>>
typedef ConstShapedNeighborhoodIterator<TImage, TBoundaryCondition> itk::ShapedNeighborhoodIterator< TImage, TBoundaryCondition >::Superclass
 

Reimplemented from itk::ConstShapedNeighborhoodIterator< TImage, TBoundaryCondition >.

Definition at line 130 of file itkShapedNeighborhoodIterator.h.


Constructor & Destructor Documentation

template<class TImage, class TBoundaryCondition = ZeroFluxNeumannBoundaryCondition<TImage>>
itk::ShapedNeighborhoodIterator< TImage, TBoundaryCondition >::ShapedNeighborhoodIterator  
 

Default constructor

template<class TImage, class TBoundaryCondition = ZeroFluxNeumannBoundaryCondition<TImage>>
virtual itk::ShapedNeighborhoodIterator< TImage, TBoundaryCondition >::~ShapedNeighborhoodIterator   [inline, virtual]
 

Virtual destructor

Definition at line 176 of file itkShapedNeighborhoodIterator.h.

template<class TImage, class TBoundaryCondition = ZeroFluxNeumannBoundaryCondition<TImage>>
itk::ShapedNeighborhoodIterator< TImage, TBoundaryCondition >::ShapedNeighborhoodIterator const ShapedNeighborhoodIterator< TImage, TBoundaryCondition > &   
 

Copy constructor

template<class TImage, class TBoundaryCondition = ZeroFluxNeumannBoundaryCondition<TImage>>
itk::ShapedNeighborhoodIterator< TImage, TBoundaryCondition >::ShapedNeighborhoodIterator const SizeType   radius,
const ImageType   ptr,
const RegionType   region
[inline]
 

Constructor which establishes the region size, neighborhood, and image over which to walk.

Definition at line 183 of file itkShapedNeighborhoodIterator.h.

References HardConnectedComponentImageFilter::RegionType.


Member Function Documentation

template<class TImage, class TBoundaryCondition = ZeroFluxNeumannBoundaryCondition<TImage>>
void itk::ShapedNeighborhoodIterator< TImage, TBoundaryCondition >::ActivateIndex const unsigned int    n [inline, protected, virtual]
 

Add/Remove a neighborhood index to/from the active. Locations in the active list are the only accessible elements in the neighborhood. The argument is an index location calculated as an offset into a linear array which represents the image region defined by the radius of this iterator, with the smallest dimension as the fastest increasing index.

Reimplemented from itk::ConstShapedNeighborhoodIterator< TImage, TBoundaryCondition >.

Definition at line 225 of file itkShapedNeighborhoodIterator.h.

template<class TImage, class TBoundaryCondition = ZeroFluxNeumannBoundaryCondition<TImage>>
Iterator& itk::ShapedNeighborhoodIterator< TImage, TBoundaryCondition >::Begin void    [inline]
 

Returns a const iterator for the neighborhood which points to the first pixel in the neighborhood.

Reimplemented from itk::Neighborhood< TImage::InternalPixelType *,::itk::GetImageDimension< TImage >::ImageDimension >.

Definition at line 208 of file itkShapedNeighborhoodIterator.h.

template<class TImage, class TBoundaryCondition = ZeroFluxNeumannBoundaryCondition<TImage>>
void itk::ShapedNeighborhoodIterator< TImage, TBoundaryCondition >::ClearActiveList   [inline, virtual]
 

Removes all active pixels from this neighborhood.

Reimplemented from itk::ConstShapedNeighborhoodIterator< TImage, TBoundaryCondition >.

Definition at line 217 of file itkShapedNeighborhoodIterator.h.

template<class TImage, class TBoundaryCondition = ZeroFluxNeumannBoundaryCondition<TImage>>
void itk::ShapedNeighborhoodIterator< TImage, TBoundaryCondition >::DeactivateIndex const unsigned int    n [inline, protected, virtual]
 

Add/Remove a neighborhood index to/from the active. Locations in the active list are the only accessible elements in the neighborhood. The argument is an index location calculated as an offset into a linear array which represents the image region defined by the radius of this iterator, with the smallest dimension as the fastest increasing index.

Reimplemented from itk::ConstShapedNeighborhoodIterator< TImage, TBoundaryCondition >.

Definition at line 232 of file itkShapedNeighborhoodIterator.h.

template<class TImage, class TBoundaryCondition = ZeroFluxNeumannBoundaryCondition<TImage>>
const ConstIterator& itk::ShapedNeighborhoodIterator< TImage, TBoundaryCondition >::End void    const [inline]
 

Returns a const iterator for the neighborhood which points to the last pixel in the neighborhood.

Reimplemented from itk::ConstShapedNeighborhoodIterator< TImage, TBoundaryCondition >.

Definition at line 214 of file itkShapedNeighborhoodIterator.h.

template<class TImage, class TBoundaryCondition = ZeroFluxNeumannBoundaryCondition<TImage>>
Iterator& itk::ShapedNeighborhoodIterator< TImage, TBoundaryCondition >::End void    [inline]
 

Returns a const iterator for the neighborhood which points to the first pixel in the neighborhood.

Reimplemented from itk::Neighborhood< TImage::InternalPixelType *,::itk::GetImageDimension< TImage >::ImageDimension >.

Definition at line 209 of file itkShapedNeighborhoodIterator.h.

template<class TImage, class TBoundaryCondition = ZeroFluxNeumannBoundaryCondition<TImage>>
itk::ShapedNeighborhoodIterator< TImage, TBoundaryCondition >::itkStaticConstMacro Dimension   ,
unsigned    int,
TImage::ImageDimension   
 

Save the image dimension.

Reimplemented from itk::ConstShapedNeighborhoodIterator< TImage, TBoundaryCondition >.

template<class TImage, class TBoundaryCondition = ZeroFluxNeumannBoundaryCondition<TImage>>
Self& itk::ShapedNeighborhoodIterator< TImage, TBoundaryCondition >::operator= const Self   orig [inline]
 

Assignment operator

Reimplemented from itk::ConstShapedNeighborhoodIterator< TImage, TBoundaryCondition >.

Definition at line 200 of file itkShapedNeighborhoodIterator.h.

template<class TImage, class TBoundaryCondition = ZeroFluxNeumannBoundaryCondition<TImage>>
virtual void itk::ShapedNeighborhoodIterator< TImage, TBoundaryCondition >::PrintSelf std::ostream &   ,
Indent   
const [virtual]
 

Standard itk print method

Reimplemented from itk::ConstShapedNeighborhoodIterator< TImage, TBoundaryCondition >.


Member Data Documentation

template<class TImage, class TBoundaryCondition = ZeroFluxNeumannBoundaryCondition<TImage>>
Iterator itk::ShapedNeighborhoodIterator< TImage, TBoundaryCondition >::m_BeginIterator [protected]
 

Definition at line 241 of file itkShapedNeighborhoodIterator.h.

template<class TImage, class TBoundaryCondition = ZeroFluxNeumannBoundaryCondition<TImage>>
Iterator itk::ShapedNeighborhoodIterator< TImage, TBoundaryCondition >::m_EndIterator [protected]
 

Definition at line 240 of file itkShapedNeighborhoodIterator.h.


The documentation for this class was generated from the following file:
Generated at Fri May 21 01:39:54 2004 for ITK by doxygen 1.2.15 written by Dimitri van Heesch, © 1997-2000