#include <itkFastMarchingImageFilter.h>
Inheritance diagram for itk::FastMarchingImageFilter< TLevelSet, TSpeedImage >:


Fast marching solves an Eikonal equation where the speed is always non-negative and depends on the position only. Starting from an initial position on the front, fast marching systematically moves the front forward one grid point at a time.
Updates are preformed using an entropy satisfy scheme where only "upwind" neighborhoods are used. This implementation of Fast Marching uses a std::priority_queue to locate the next proper grid position to update.
Fast Marching sweeps through N grid points in (N log N) steps to obtain the arrival time value as the front propagates through the grid.
Implementation of this class is based on Chapter 8 of "Level Set Methods and Fast Marching Methods", J.A. Sethian, Cambridge Press, Second edition, 1999.
This class is templated over the level set image type and the speed image type. The initial front is specified by two containers: one containing the known points and one containing the trial points. Alive points are those that are already part of the object, and trial points are considered for inclusion. In order for the filter to evolve, at least some trial points must be specified. These can for instance be specified as the layer of pixels around the alive points.
The speed function can be specified as a speed image or a speed constant. The speed image is set using the method SetInput(). If the speed image is NULL, a constant speed function is used and is specified using method the SetSpeedConstant().
If the speed function is constant and of value one, fast marching results in an approximate distance function from the initial alive points. FastMarchingImageFilter is used in the ReinitializeLevelSetImageFilter object to create a signed distance function from the zero level set.
The algorithm can be terminated early by setting an appropriate stopping value. The algorithm terminates when the current arrival time being processed is greater than the stopping value.
There are two ways to specify the output image information ( LargestPossibleRegion, Spacing, Origin): (a) it is copied directly from the input speed image or (b) it is specified by the user. Default values are used if the user does not specify all the information.
The output information is computed as follows. If the speed image is NULL or if the OverrideOutputInformation is set to true, the output information is set from user specified parameters. These parameters can be specified using methods SetOutputRegion(), SetOutputSpacing() and SetOutputOrigin(). Else if the speed image is not NULL, the output information is copied from the input speed image.
Possible Improvements: In the current implemenation, std::priority_queue only allows taking nodes out from the front and putting nodes in from the back. To update a value already on the heap, a new node is added to the heap. The defunct old node is left on the heap. When it is removed from the top, it will be recognized as invalid and not used. Future implementations can implement the heap in a different way allowing the values to be updated. This will generally require some sift-up and sift-down functions and an image of back-pointers going from the image to heap in order to locate the node which is to be updated.
Definition at line 104 of file itkFastMarchingImageFilter.h.
| typedef SmartPointer<const Self> itk::FastMarchingImageFilter< TLevelSet, TSpeedImage >::ConstPointer |
Reimplemented from itk::ImageToImageFilter< TSpeedImage, TLevelSet >.
Reimplemented in itk::FastMarchingExtensionImageFilter< TLevelSet, TAuxValue, VAuxDimension, TSpeedImage >, and itk::FastMarchingUpwindGradientImageFilter< TLevelSet, TSpeedImage >.
Definition at line 112 of file itkFastMarchingImageFilter.h.
typedef DataObject::Pointer itk::ImageSource< TLevelSet >::DataObjectPointer [inherited] |
Smart Pointer type to a DataObject.
Reimplemented from itk::ProcessObject.
Definition at line 62 of file itkImageSource.h.
typedef std::vector<DataObjectPointer> itk::ProcessObject::DataObjectPointerArray [inherited] |
STL Array of SmartPointers to DataObjects
Definition at line 103 of file itkProcessObject.h.
typedef DataObjectPointerArray::size_type itk::ProcessObject::DataObjectPointerArraySizeType [inherited] |
Size type of an std::vector
Definition at line 112 of file itkProcessObject.h.
| typedef Index<itkGetStaticConstMacro(SetDimension)> itk::FastMarchingImageFilter< TLevelSet, TSpeedImage >::IndexType |
Index typedef support.
Reimplemented in itk::FastMarchingExtensionImageFilter< TLevelSet, TAuxValue, VAuxDimension, TSpeedImage >, and itk::FastMarchingUpwindGradientImageFilter< TLevelSet, TSpeedImage >.
Definition at line 159 of file itkFastMarchingImageFilter.h.
typedef InputImageType::ConstPointer itk::ImageToImageFilter< TSpeedImage , TLevelSet >::InputImageConstPointer [inherited] |
Definition at line 84 of file itkImageToImageFilter.h.
typedef InputImageType::PixelType itk::ImageToImageFilter< TSpeedImage , TLevelSet >::InputImagePixelType [inherited] |
Definition at line 86 of file itkImageToImageFilter.h.
typedef InputImageType::Pointer itk::ImageToImageFilter< TSpeedImage , TLevelSet >::InputImagePointer [inherited] |
Definition at line 83 of file itkImageToImageFilter.h.
typedef InputImageType::RegionType itk::ImageToImageFilter< TSpeedImage , TLevelSet >::InputImageRegionType [inherited] |
Definition at line 85 of file itkImageToImageFilter.h.
typedef TSpeedImage itk::ImageToImageFilter< TSpeedImage , TLevelSet >::InputImageType [inherited] |
Some convenient typedefs.
Definition at line 82 of file itkImageToImageFilter.h.
typedef ImageToImageFilterDetail::ImageRegionCopier<itkGetStaticConstMacro(OutputImageDimension), itkGetStaticConstMacro(InputImageDimension)> itk::ImageToImageFilter< TSpeedImage , TLevelSet >::InputToOutputRegionCopierType [protected, inherited] |
Typedef for the region copier function object that converts an input region to an output region.
Definition at line 164 of file itkImageToImageFilter.h.
typedef int itk::LightObject::InternalReferenceCountType [protected, inherited] |
Define the type of the reference count according to the target. This allows the use of atomic operations
Definition at line 139 of file itkLightObject.h.
| typedef LabelImageType::Pointer itk::FastMarchingImageFilter< TLevelSet, TSpeedImage >::LabelImagePointer |
LabelImagePointer typedef support.
Definition at line 171 of file itkFastMarchingImageFilter.h.
| typedef Image<unsigned char, itkGetStaticConstMacro(SetDimension)> itk::FastMarchingImageFilter< TLevelSet, TSpeedImage >::LabelImageType |
LabelImage typedef support.
Reimplemented in itk::FastMarchingUpwindGradientImageFilter< TLevelSet, TSpeedImage >.
Definition at line 168 of file itkFastMarchingImageFilter.h.
| typedef LevelSetType::LevelSetImageType itk::FastMarchingImageFilter< TLevelSet, TSpeedImage >::LevelSetImageType |
Reimplemented in itk::FastMarchingExtensionImageFilter< TLevelSet, TAuxValue, VAuxDimension, TSpeedImage >, and itk::FastMarchingUpwindGradientImageFilter< TLevelSet, TSpeedImage >.
Definition at line 122 of file itkFastMarchingImageFilter.h.
typedef LevelSetImageType::IndexType itk::FastMarchingImageFilter< TLevelSet, TSpeedImage >::LevelSetIndexType [protected] |
Reimplemented in itk::FastMarchingUpwindGradientImageFilter< TLevelSet, TSpeedImage >.
Definition at line 316 of file itkFastMarchingImageFilter.h.
| typedef LevelSetType::LevelSetPointer itk::FastMarchingImageFilter< TLevelSet, TSpeedImage >::LevelSetPointer |
Reimplemented in itk::FastMarchingUpwindGradientImageFilter< TLevelSet, TSpeedImage >.
Definition at line 123 of file itkFastMarchingImageFilter.h.
| typedef LevelSetTypeDefault<TLevelSet> itk::FastMarchingImageFilter< TLevelSet, TSpeedImage >::LevelSetType |
Typedef support of level set method types.
Reimplemented in itk::FastMarchingExtensionImageFilter< TLevelSet, TAuxValue, VAuxDimension, TSpeedImage >, and itk::FastMarchingUpwindGradientImageFilter< TLevelSet, TSpeedImage >.
Definition at line 118 of file itkFastMarchingImageFilter.h.
| typedef LevelSetType::NodeContainer itk::FastMarchingImageFilter< TLevelSet, TSpeedImage >::NodeContainer |
Reimplemented in itk::FastMarchingUpwindGradientImageFilter< TLevelSet, TSpeedImage >.
Definition at line 126 of file itkFastMarchingImageFilter.h.
| typedef LevelSetType::NodeContainerPointer itk::FastMarchingImageFilter< TLevelSet, TSpeedImage >::NodeContainerPointer |
Reimplemented in itk::FastMarchingUpwindGradientImageFilter< TLevelSet, TSpeedImage >.
Definition at line 127 of file itkFastMarchingImageFilter.h.
| typedef LevelSetType::NodeType itk::FastMarchingImageFilter< TLevelSet, TSpeedImage >::NodeType |
Reimplemented in itk::FastMarchingUpwindGradientImageFilter< TLevelSet, TSpeedImage >.
Definition at line 125 of file itkFastMarchingImageFilter.h.
typedef Superclass::OutputImagePixelType itk::ImageToImageFilter< TSpeedImage , TLevelSet >::OutputImagePixelType [inherited] |
Reimplemented from itk::ImageSource< TLevelSet >.
Definition at line 79 of file itkImageToImageFilter.h.
typedef OutputImageType::Pointer itk::ImageSource< TLevelSet >::OutputImagePointer [inherited] |
Definition at line 69 of file itkImageSource.h.
typedef Superclass::OutputImageRegionType itk::ImageToImageFilter< TSpeedImage , TLevelSet >::OutputImageRegionType [inherited] |
Superclass typedefs.
Reimplemented from itk::ImageSource< TLevelSet >.
Definition at line 75 of file itkImageToImageFilter.h.
typedef TLevelSet itk::ImageSource< TLevelSet >::OutputImageType [inherited] |
Some convenient typedefs.
Definition at line 65 of file itkImageSource.h.
| typedef LevelSetImageType::PointType itk::FastMarchingImageFilter< TLevelSet, TSpeedImage >::OutputPointType |
Definition at line 131 of file itkFastMarchingImageFilter.h.
| typedef LevelSetImageType::RegionType itk::FastMarchingImageFilter< TLevelSet, TSpeedImage >::OutputRegionType |
Definition at line 129 of file itkFastMarchingImageFilter.h.
| typedef LevelSetImageType::SizeType itk::FastMarchingImageFilter< TLevelSet, TSpeedImage >::OutputSizeType |
Definition at line 128 of file itkFastMarchingImageFilter.h.
| typedef LevelSetImageType::SpacingType itk::FastMarchingImageFilter< TLevelSet, TSpeedImage >::OutputSpacingType |
Reimplemented in itk::FastMarchingUpwindGradientImageFilter< TLevelSet, TSpeedImage >.
Definition at line 130 of file itkFastMarchingImageFilter.h.
typedef ImageToImageFilterDetail::ImageRegionCopier<itkGetStaticConstMacro(InputImageDimension), itkGetStaticConstMacro(OutputImageDimension)> itk::ImageToImageFilter< TSpeedImage , TLevelSet >::OutputToInputRegionCopierType [protected, inherited] |
Typedef for the region copier function object that converts an output region to an input region.
Definition at line 169 of file itkImageToImageFilter.h.
| typedef LevelSetType::PixelType itk::FastMarchingImageFilter< TLevelSet, TSpeedImage >::PixelType |
Reimplemented in itk::FastMarchingUpwindGradientImageFilter< TLevelSet, TSpeedImage >.
Definition at line 124 of file itkFastMarchingImageFilter.h.
| typedef SmartPointer<Self> itk::FastMarchingImageFilter< TLevelSet, TSpeedImage >::Pointer |
Reimplemented from itk::ImageToImageFilter< TSpeedImage, TLevelSet >.
Reimplemented in itk::FastMarchingExtensionImageFilter< TLevelSet, TAuxValue, VAuxDimension, TSpeedImage >, and itk::FastMarchingUpwindGradientImageFilter< TLevelSet, TSpeedImage >.
Definition at line 111 of file itkFastMarchingImageFilter.h.
| typedef FastMarchingImageFilter itk::FastMarchingImageFilter< TLevelSet, TSpeedImage >::Self |
Standard class typdedefs.
Reimplemented from itk::ImageToImageFilter< TSpeedImage, TLevelSet >.
Reimplemented in itk::FastMarchingExtensionImageFilter< TLevelSet, TAuxValue, VAuxDimension, TSpeedImage >, and itk::FastMarchingUpwindGradientImageFilter< TLevelSet, TSpeedImage >.
Definition at line 109 of file itkFastMarchingImageFilter.h.
| typedef SpeedImageType::ConstPointer itk::FastMarchingImageFilter< TLevelSet, TSpeedImage >::SpeedImageConstPointer |
Reimplemented in itk::FastMarchingUpwindGradientImageFilter< TLevelSet, TSpeedImage >.
Definition at line 149 of file itkFastMarchingImageFilter.h.
| typedef SpeedImageType::Pointer itk::FastMarchingImageFilter< TLevelSet, TSpeedImage >::SpeedImagePointer |
SpeedImagePointer typedef support.
Definition at line 148 of file itkFastMarchingImageFilter.h.
| typedef TSpeedImage itk::FastMarchingImageFilter< TLevelSet, TSpeedImage >::SpeedImageType |
SpeedImage typedef support.
Reimplemented in itk::FastMarchingExtensionImageFilter< TLevelSet, TAuxValue, VAuxDimension, TSpeedImage >, and itk::FastMarchingUpwindGradientImageFilter< TLevelSet, TSpeedImage >.
Definition at line 145 of file itkFastMarchingImageFilter.h.
| typedef ImageSource<TLevelSet> itk::FastMarchingImageFilter< TLevelSet, TSpeedImage >::Superclass |
Reimplemented from itk::ImageToImageFilter< TSpeedImage, TLevelSet >.
Reimplemented in itk::FastMarchingExtensionImageFilter< TLevelSet, TAuxValue, VAuxDimension, TSpeedImage >, and itk::FastMarchingUpwindGradientImageFilter< TLevelSet, TSpeedImage >.
Definition at line 110 of file itkFastMarchingImageFilter.h.
| enum itk::FastMarchingImageFilter::LabelType |
Enum of Fast Marching algorithm point types. FarPoints represent far away points; TrialPoints represent points within a narrowband of the propagating front; and AlivePoints represent points which have already been processed.
Definition at line 165 of file itkFastMarchingImageFilter.h.
| itk::FastMarchingImageFilter< TLevelSet, TSpeedImage >::FastMarchingImageFilter | ( | ) | [protected] |
| itk::FastMarchingImageFilter< TLevelSet, TSpeedImage >::~FastMarchingImageFilter | ( | ) | [inline, protected] |
Definition at line 289 of file itkFastMarchingImageFilter.h.
| virtual void itk::ProcessObject::AbortGenerateDataOff | ( | ) | [virtual, inherited] |
| virtual void itk::ProcessObject::AbortGenerateDataOn | ( | ) | [virtual, inherited] |
Turn on and off the AbortGenerateData flag.
| virtual void itk::ProcessObject::AddInput | ( | DataObject * | input | ) | [protected, virtual, inherited] |
| unsigned long itk::Object::AddObserver | ( | const EventObject & | event, | |
| Command * | ||||
| ) | const [inherited] |
| unsigned long itk::Object::AddObserver | ( | const EventObject & | event, | |
| Command * | ||||
| ) | [inherited] |
Allow people to add/remove/invoke observers (callbacks) to any ITK object. This is an implementation of the subject/observer design pattern. An observer is added by specifying an event to respond to and an itk::Command to execute. It returns an unsigned long tag which can be used later to remove the event or retrieve the command. The memory for the Command becomes the responsibility of this object, so don't pass the same instance of a command to two different objects
| virtual void itk::ProcessObject::AddOutput | ( | DataObject * | output | ) | [protected, virtual, inherited] |
| virtual void itk::ImageSource< TLevelSet >::AfterThreadedGenerateData | ( | void | ) | [inline, protected, virtual, inherited] |
If an imaging filter needs to perform processing after all processing threads have completed, the filter can can provide an implementation for AfterThreadedGenerateData(). The execution flow in the default GenerateData() method will be: 1) Allocate the output buffer 2) Call BeforeThreadedGenerateData() 3) Spawn threads, calling ThreadedGenerateData() in each thread. 4) Call AfterThreadedGenerateData() Note that this flow of control is only available if a filter provides a ThreadedGenerateData() method and NOT a GenerateData() method.
Definition at line 254 of file itkImageSource.h.
| virtual void itk::ImageSource< TLevelSet >::AllocateOutputs | ( | ) | [protected, virtual, inherited] |
The GenerateData method normally allocates the buffers for all of the outputs of a filter. Some filters may want to override this default behavior. For example, a filter may have multiple outputs with varying resolution. Or a filter may want to process data in place by grafting its input to its output.
| virtual void itk::ImageSource< TLevelSet >::BeforeThreadedGenerateData | ( | void | ) | [inline, protected, virtual, inherited] |
If an imaging filter needs to perform processing after the buffer has been allocated but before threads are spawned, the filter can can provide an implementation for BeforeThreadedGenerateData(). The execution flow in the default GenerateData() method will be: 1) Allocate the output buffer 2) Call BeforeThreadedGenerateData() 3) Spawn threads, calling ThreadedGenerateData() in each thread. 4) Call AfterThreadedGenerateData() Note that this flow of control is only available if a filter provides a ThreadedGenerateData() method and NOT a GenerateData() method.
Definition at line 242 of file itkImageSource.h.