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

itk::NarrowBandImageFilterBase< TInputImage, TOutputImage > Class Template Reference

This class implements a multi-threaded finite difference image to image solver that can be applied to an arbitrary list of pixels. More...

#include <itkNarrowBandImageFilterBase.h>

Inheritance diagram for itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >:

Inheritance graph
[legend]
Collaboration diagram for itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >:

Collaboration graph
[legend]
List of all members.

Public Types

typedef NarrowBandImageFilterBase Self
typedef FiniteDifferenceImageFilter<
TInputImage, TOutputImage > 
Superclass
typedef SmartPointer< SelfPointer
typedef SmartPointer< const
Self
ConstPointer
typedef Superclass::InputImageType InputImageType
typedef Superclass::OutputImageType OutputImageType
typedef Superclass::FiniteDifferenceFunctionType FiniteDifferenceFunctionType
typedef Superclass::PixelType PixelType
typedef Superclass::TimeStepType TimeStepType
typedef OutputImageType::IndexType IndexType
typedef OutputImageType::ValueType ValueType
typedef BandNode< IndexType,
PixelType
BandNodeType
typedef NarrowBand< BandNodeTypeNarrowBandType
typedef NarrowBandType::Pointer NarrowBandPointer
typedef NarrowBandType::RegionType RegionType

Public Member Functions

virtual const char * GetClassName () const
 itkStaticConstMacro (ImageDimension, unsigned int, Superclass::ImageDimension)
float GetNarrowBandTotalRadius ()
float GetNarrowBandInnerRadius ()
virtual void CreateNarrowBand ()
virtual void SetNarrowBand (NarrowBandType *ptr)
virtual void CopyInputToOutput ()
virtual void SetIsoSurfaceValue (ValueType _arg)
virtual ValueType GetIsoSurfaceValue ()
void InsertNarrowBandNode (BandNodeType &node)
void InsertNarrowBandNode (IndexType &index)
void InsertNarrowBandNode (IndexType &index, PixelType &value, signed char &nodestate)
void SetNarrowBandTotalRadius (float val)
void SetNarrowBandInnerRadius (float val)

Protected Member Functions

 NarrowBandImageFilterBase ()
virtual ~NarrowBandImageFilterBase ()
void PrintSelf (std::ostream &os, Indent indent) const
void GetSplitRegion (int i, ThreadRegionType &splitRegion)
virtual void Initialize ()
virtual void InitializeIteration ()
virtual void PostProcessOutput ()
void ClearNarrowBand ()
void WaitForAll ()
virtual void GenerateData ()

Protected Attributes

NarrowBandType::Pointer m_NarrowBand
std::vector< RegionTypem_RegionList
unsigned int m_ReinitializationFrequency
unsigned int m_Step
bool m_Touched
bool * m_TouchedForThread
ValueType m_IsoSurfaceValue
Barrier::Pointer m_Barrier

Detailed Description

template<class TInputImage, class TOutputImage>
class itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >

This class implements a multi-threaded finite difference image to image solver that can be applied to an arbitrary list of pixels.

This class is intended as a common base class for classical narrowband solvers and manifold solvers. This base class implements a common memory management and multi-threaded architecture for applying a finite difference function to a list of pixels in an image. The specifics of narrowband solvers such as re-initialization and the use of land-mines are not implemented.
INPUTS
This filter takes an itk::Image as input. The appropriate type of input image is entirely determined by the application. As a rule, however, the input type is immediately converted to the output type before processing. This is because the input is not assumed to be a real value type and must be converted to signed, real values for the calculations.
OUTPUTS
The output is an itk::Image and is the solution of the pde. The embedding of the interface may vary with the application, but the usual ITK convention is that it is the zero level set in the output image.
IMPORTANT!
Read the documentation for FiniteDifferenceImageFilter before attempting to use this filter. The solver requires that you specify a FiniteDifferenceFunction to use for calculations. This is set using the method SetDifferenceFunction in the parent class.
REFERENCES
Sethian, J.A. Level Set Methods. Cambridge University Press. 1996.

Definition at line 66 of file itkNarrowBandImageFilterBase.h.


Member Typedef Documentation

template<class TInputImage, class TOutputImage>
typedef BandNode<IndexType,PixelType> itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::BandNodeType
 

This is the storage type for the nodes on the narrow band Definition at line 104 of file itkNarrowBandImageFilterBase.h.

Referenced by itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::InsertNarrowBandNode().

template<class TInputImage, class TOutputImage>
typedef SmartPointer<const Self> itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::ConstPointer
 

Reimplemented from itk::FiniteDifferenceImageFilter< TInputImage, TOutputImage >.

Reimplemented in itk::NarrowBandLevelSetImageFilter< TInputImage, TFeatureImage, TOutputPixelType, TOutputImage >.

Definition at line 75 of file itkNarrowBandImageFilterBase.h.

template<class TInputImage, class TOutputImage>
typedef Superclass::FiniteDifferenceFunctionType itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::FiniteDifferenceFunctionType
 

The value type of the time step. This is distinct from PixelType because PixelType may often be a vector value, while the TimeStep is a scalar value.

Reimplemented from itk::FiniteDifferenceImageFilter< TInputImage, TOutputImage >.

Definition at line 83 of file itkNarrowBandImageFilterBase.h.

template<class TInputImage, class TOutputImage>
typedef OutputImageType::IndexType itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::IndexType
 

The index type for the output image

Reimplemented in itk::NarrowBandLevelSetImageFilter< TInputImage, TFeatureImage, TOutputPixelType, TOutputImage >.

Definition at line 97 of file itkNarrowBandImageFilterBase.h.

template<class TInputImage, class TOutputImage>
typedef Superclass::InputImageType itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::InputImageType
 

Typedefs from the superclass

Reimplemented from itk::FiniteDifferenceImageFilter< TInputImage, TOutputImage >.

Reimplemented in itk::NarrowBandLevelSetImageFilter< TInputImage, TFeatureImage, TOutputPixelType, TOutputImage >.

Definition at line 81 of file itkNarrowBandImageFilterBase.h.

template<class TInputImage, class TOutputImage>
typedef NarrowBandType::Pointer itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::NarrowBandPointer
 

Definition at line 108 of file itkNarrowBandImageFilterBase.h.

template<class TInputImage, class TOutputImage>
typedef NarrowBand<BandNodeType> itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::NarrowBandType
 

The list type for storing the narrow band. Definition at line 107 of file itkNarrowBandImageFilterBase.h.

template<class TInputImage, class TOutputImage>
typedef Superclass::OutputImageType itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::OutputImageType
 

Some convenient typedefs.

Reimplemented from itk::FiniteDifferenceImageFilter< TInputImage, TOutputImage >.

Reimplemented in itk::NarrowBandLevelSetImageFilter< TInputImage, TFeatureImage, TOutputPixelType, TOutputImage >.

Definition at line 82 of file itkNarrowBandImageFilterBase.h.

template<class TInputImage, class TOutputImage>
typedef Superclass::PixelType itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::PixelType
 

The pixel type of the output image will be used in computations. Inherited from the superclass.

Reimplemented from itk::FiniteDifferenceImageFilter< TInputImage, TOutputImage >.

Definition at line 91 of file itkNarrowBandImageFilterBase.h.

template<class TInputImage, class TOutputImage>
typedef SmartPointer<Self> itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::Pointer
 

Reimplemented from itk::FiniteDifferenceImageFilter< TInputImage, TOutputImage >.

Reimplemented in itk::NarrowBandLevelSetImageFilter< TInputImage, TFeatureImage, TOutputPixelType, TOutputImage >.

Definition at line 74 of file itkNarrowBandImageFilterBase.h.

template<class TInputImage, class TOutputImage>
typedef NarrowBandType::RegionType itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::RegionType
 

Definition at line 109 of file itkNarrowBandImageFilterBase.h.

template<class TInputImage, class TOutputImage>
typedef NarrowBandImageFilterBase itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::Self
 

Standard class typedefs

Reimplemented from itk::FiniteDifferenceImageFilter< TInputImage, TOutputImage >.

Reimplemented in itk::NarrowBandLevelSetImageFilter< TInputImage, TFeatureImage, TOutputPixelType, TOutputImage >.

Definition at line 72 of file itkNarrowBandImageFilterBase.h.

template<class TInputImage, class TOutputImage>
typedef FiniteDifferenceImageFilter<TInputImage, TOutputImage> itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::Superclass
 

Reimplemented from itk::FiniteDifferenceImageFilter< TInputImage, TOutputImage >.

Reimplemented in itk::NarrowBandLevelSetImageFilter< TInputImage, TFeatureImage, TOutputPixelType, TOutputImage >.

Definition at line 73 of file itkNarrowBandImageFilterBase.h.

template<class TInputImage, class TOutputImage>
typedef Superclass::TimeStepType itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::TimeStepType
 

The value type of a time step. Inherited from the superclass.

Reimplemented from itk::FiniteDifferenceImageFilter< TInputImage, TOutputImage >.

Reimplemented in itk::NarrowBandLevelSetImageFilter< TInputImage, TFeatureImage, TOutputPixelType, TOutputImage >.

Definition at line 94 of file itkNarrowBandImageFilterBase.h.

template<class TInputImage, class TOutputImage>
typedef OutputImageType::ValueType itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::ValueType
 

The data type used in numerical computations. Derived from the output image type.

Reimplemented in itk::NarrowBandLevelSetImageFilter< TInputImage, TFeatureImage, TOutputPixelType, TOutputImage >.

Definition at line 101 of file itkNarrowBandImageFilterBase.h.


Constructor & Destructor Documentation

template<class TInputImage, class TOutputImage>
itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::NarrowBandImageFilterBase  )  [inline, protected]
 

Definition at line 208 of file itkNarrowBandImageFilterBase.h.

References itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::m_Barrier, itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::m_IsoSurfaceValue, itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::m_ReinitializationFrequency, itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::m_Step, and itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::m_Touched.

template<class TInputImage, class TOutputImage>
virtual itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::~NarrowBandImageFilterBase  )  [inline, protected, virtual]
 

Definition at line 220 of file itkNarrowBandImageFilterBase.h.


Member Function Documentation

template<class TInputImage, class TOutputImage>
void itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::ClearNarrowBand  )  [protected]
 

template<class TInputImage, class TOutputImage>
virtual void itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::CopyInputToOutput  )  [virtual]
 

This method can be defined in subclasses as needed to copy the input to the output. See DenseFiniteDifferenceImageFilter for an implementation.

Implements itk::FiniteDifferenceImageFilter< TInputImage, TOutputImage >.

template<class TInputImage, class TOutputImage>
virtual void itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::CreateNarrowBand  )  [inline, virtual]
 

This is the virtual method called by Initialize to set the band of operation. It is left to the subclasses to define this functionality. This function can make use of above InsertNarrowBandNode function to create a band.

Reimplemented in itk::NarrowBandLevelSetImageFilter< TInputImage, TFeatureImage, TOutputPixelType, TOutputImage >.

Definition at line 192 of file itkNarrowBandImageFilterBase.h.

References itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::m_NarrowBand.

template<class TInputImage, class TOutputImage>
virtual void itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::GenerateData  )  [protected, virtual]
 

This is the default, high-level algorithm for calculating finite difference solutions. It calls virtual methods in its subclasses to implement the major steps of the algorithm.

Reimplemented from itk::FiniteDifferenceImageFilter< TInputImage, TOutputImage >.

Reimplemented in itk::NarrowBandLevelSetImageFilter< TInputImage, TFeatureImage, TOutputPixelType, TOutputImage >.

template<class TInputImage, class TOutputImage>
virtual const char* itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::GetClassName  )  const [virtual]
 

Run-time type information (and related methods)

Reimplemented from itk::FiniteDifferenceImageFilter< TInputImage, TOutputImage >.

Reimplemented in itk::NarrowBandLevelSetImageFilter< TInputImage, TFeatureImage, TOutputPixelType, TOutputImage >.

template<class TInputImage, class TOutputImage>
virtual ValueType itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::GetIsoSurfaceValue  )  [virtual]
 

Set/Get IsoSurfaceValue to use in the input image

template<class TInputImage, class TOutputImage>
float itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::GetNarrowBandInnerRadius  )  [inline]
 

Get the narrow band inner radius. Definition at line 182 of file itkNarrowBandImageFilterBase.h.

template<class TInputImage, class TOutputImage>
float itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::GetNarrowBandTotalRadius  )  [inline]
 

Get the narrow band total radius. Definition at line 162 of file itkNarrowBandImageFilterBase.h.

References itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::m_NarrowBand.

template<class TInputImage, class TOutputImage>
void itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::GetSplitRegion int  i,
ThreadRegionType splitRegion
[protected]
 

This function returns a single region (of the narrow band list) for use in multi-threading

template<class TInputImage, class TOutputImage>
virtual void itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::Initialize  )  [protected, virtual]
 

This function clears the existing narrow band, calls CreateNarrowBand to create a band, and calls the SplitRegions function of NarrowBand to pre-partition the band for multi-threading.

Reimplemented from itk::FiniteDifferenceImageFilter< TInputImage, TOutputImage >.

template<class TInputImage, class TOutputImage>
virtual void itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::InitializeIteration  )  [protected, virtual]
 

This method check the narrow band state each iteration and reinitialize the narrow band if it is appropiate calling CreateNarrowBand and SplitRegions to pre-partion the band for multi-threading.

Reimplemented from itk::FiniteDifferenceImageFilter< TInputImage, TOutputImage >.

Reimplemented in itk::NarrowBandLevelSetImageFilter< TInputImage, TFeatureImage, TOutputPixelType, TOutputImage >.

template<class TInputImage, class TOutputImage>
void itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::InsertNarrowBandNode IndexType index,
PixelType value,
signed char &  nodestate
[inline]
 

This function is used to insert a pixel index into the narrow band The entire narrow band can be constructed using this method. Usually, however, the narrow band is initialized and reinitialized automatically by the subclass. Definition at line 135 of file itkNarrowBandImageFilterBase.h.

References itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::BandNodeType, and itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::m_NarrowBand.

template<class TInputImage, class TOutputImage>
void itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::InsertNarrowBandNode IndexType index  )  [inline]
 

This function is used to insert a pixel index into the narrow band The entire narrow band can be constructed using this method. Usually, however, the narrow band is initialized and reinitialized automatically by the subclass. Definition at line 128 of file itkNarrowBandImageFilterBase.h.

References itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::BandNodeType, and itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::m_NarrowBand.

template<class TInputImage, class TOutputImage>
void itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::InsertNarrowBandNode BandNodeType node  )  [inline]
 

This function is used to insert a pixel index into the narrow band The entire narrow band can be constructed using this method. Usually, however, the narrow band is initialized and reinitialized automatically by the subclass. Definition at line 123 of file itkNarrowBandImageFilterBase.h.

References itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::m_NarrowBand.

template<class TInputImage, class TOutputImage>
itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::itkStaticConstMacro ImageDimension  ,
unsigned  int,
Superclass::ImageDimension 
 

Dimensionality of input and output data is assumed to be the same. It is inherited from the superclass.

template<class TInputImage, class TOutputImage>
virtual void itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::PostProcessOutput  )  [protected, virtual]
 

This method allows deallocation of data and further post processing

Reimplemented from itk::FiniteDifferenceImageFilter< TInputImage, TOutputImage >.

template<class TInputImage, class TOutputImage>
void itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::PrintSelf std::ostream &  os,
Indent  indent
const [protected, virtual]
 

Methods invoked by Print() to print information about the object including superclasses. Typically not called by the user (use Print() instead) but used in the hierarchical print process to combine the output of several classes.

Reimplemented from itk::FiniteDifferenceImageFilter< TInputImage, TOutputImage >.

Reimplemented in itk::NarrowBandLevelSetImageFilter< TInputImage, TFeatureImage, TOutputPixelType, TOutputImage >.

template<class TInputImage, class TOutputImage>
virtual void itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::SetIsoSurfaceValue ValueType  _arg  )  [virtual]
 

Set/Get IsoSurfaceValue to use in the input image

template<class TInputImage, class TOutputImage>
virtual void itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::SetNarrowBand NarrowBandType ptr  )  [inline, virtual]
 

Definition at line 194 of file itkNarrowBandImageFilterBase.h.

References itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::m_NarrowBand.

template<class TInputImage, class TOutputImage>
void itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::SetNarrowBandInnerRadius float  val  )  [inline]
 

Set the narrow band inner radius. The inner radius is the safe are where the level set can be computed. The default value is 1. Definition at line 171 of file itkNarrowBandImageFilterBase.h.

References itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::m_NarrowBand.

template<class TInputImage, class TOutputImage>
void itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::SetNarrowBandTotalRadius float  val  )  [inline]
 

Set the narrow band total radius. The narrow band width will be twice this value (positive and negative distance to the zero level set). The default value is 3. Definition at line 151 of file itkNarrowBandImageFilterBase.h.

References itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::m_NarrowBand, and itk::Object::Modified().

template<class TInputImage, class TOutputImage>
void itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::WaitForAll  )  [protected]
 

Thread synchronization methods.


Member Data Documentation

template<class TInputImage, class TOutputImage>
Barrier::Pointer itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::m_Barrier [protected]
 

Definition at line 273 of file itkNarrowBandImageFilterBase.h.

Referenced by itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::NarrowBandImageFilterBase().

template<class TInputImage, class TOutputImage>
ValueType itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::m_IsoSurfaceValue [protected]
 

Definition at line 271 of file itkNarrowBandImageFilterBase.h.

Referenced by itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::NarrowBandImageFilterBase().

template<class TInputImage, class TOutputImage>
NarrowBandType::Pointer itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::m_NarrowBand [protected]
 

Definition at line 207 of file itkNarrowBandImageFilterBase.h.

Referenced by itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::CreateNarrowBand(), itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::GetNarrowBandTotalRadius(), itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::InsertNarrowBandNode(), itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::SetNarrowBand(), itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::SetNarrowBandInnerRadius(), and itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::SetNarrowBandTotalRadius().

template<class TInputImage, class TOutputImage>
std::vector<RegionType> itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::m_RegionList [protected]
 

A list of subregions of the narrowband which are passed to each thread for parallel processing. Definition at line 233 of file itkNarrowBandImageFilterBase.h.

template<class TInputImage, class TOutputImage>
unsigned int itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::m_ReinitializationFrequency [protected]
 

Definition at line 267 of file itkNarrowBandImageFilterBase.h.

Referenced by itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::NarrowBandImageFilterBase().

template<class TInputImage, class TOutputImage>
unsigned int itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::m_Step [protected]
 

Definition at line 268 of file itkNarrowBandImageFilterBase.h.

Referenced by itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::NarrowBandImageFilterBase().

template<class TInputImage, class TOutputImage>
bool itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::m_Touched [protected]
 

Definition at line 269 of file itkNarrowBandImageFilterBase.h.

Referenced by itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::NarrowBandImageFilterBase().

template<class TInputImage, class TOutputImage>
bool* itk::NarrowBandImageFilterBase< TInputImage, TOutputImage >::m_TouchedForThread [protected]
 

Definition at line 270 of file itkNarrowBandImageFilterBase.h.


The documentation for this class was generated from the following file:
Generated at Sat Mar 31 02:48:50 2007 for ITK by doxygen 1.3.8 written by Dimitri van Heesch, © 1997-2000