#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. 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.
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 86 of file itkFastMarchingImageFilter.h.
|
Reimplemented from itk::ImageToImageFilter< TSpeedImage, TLevelSet >.
Reimplemented in itk::FastMarchingExtensionImageFilter< TLevelSet, TAuxValue, VAuxDimension, TSpeedImage >. Definition at line 94 of file itkFastMarchingImageFilter.h. |
|
Index typedef support. Reimplemented in itk::FastMarchingExtensionImageFilter< TLevelSet, TAuxValue, VAuxDimension, TSpeedImage >. Definition at line 116 of file itkFastMarchingImageFilter.h. Referenced by itk::FastMarchingImageFilter< TLevelSet, TSpeedImage >::~FastMarchingImageFilter(). |
|
LabelImagePointer typedef support. Definition at line 135 of file itkFastMarchingImageFilter.h. Referenced by itk::FastMarchingImageFilter< TLevelSet, TSpeedImage >::GetTrialPoints(). |
|
LabelImage typedef support. Definition at line 132 of file itkFastMarchingImageFilter.h. |
|
Reimplemented in itk::FastMarchingExtensionImageFilter< TLevelSet, TAuxValue, VAuxDimension, TSpeedImage >. Definition at line 104 of file itkFastMarchingImageFilter.h. Referenced by itk::FastMarchingImageFilter< TLevelSet, TSpeedImage >::~FastMarchingImageFilter(). |
|
Definition at line 105 of file itkFastMarchingImageFilter.h. |
|
Typedef support of level set method types. Reimplemented in itk::FastMarchingExtensionImageFilter< TLevelSet, TAuxValue, VAuxDimension, TSpeedImage >. Definition at line 103 of file itkFastMarchingImageFilter.h. |
|
Definition at line 108 of file itkFastMarchingImageFilter.h. Referenced by itk::FastMarchingImageFilter< TLevelSet, TSpeedImage >::SetAlivePoints(). |
|
Definition at line 109 of file itkFastMarchingImageFilter.h. |
|
Definition at line 107 of file itkFastMarchingImageFilter.h. Referenced by itk::FastMarchingImageFilter< TLevelSet, TSpeedImage >::~FastMarchingImageFilter(). |
|
Definition at line 106 of file itkFastMarchingImageFilter.h. |
|
Reimplemented from itk::ImageToImageFilter< TSpeedImage, TLevelSet >.
Reimplemented in itk::FastMarchingExtensionImageFilter< TLevelSet, TAuxValue, VAuxDimension, TSpeedImage >. Definition at line 93 of file itkFastMarchingImageFilter.h. |
|
Standard class typdedefs. Reimplemented from itk::ImageToImageFilter< TSpeedImage, TLevelSet >.
Reimplemented in itk::FastMarchingExtensionImageFilter< TLevelSet, TAuxValue, VAuxDimension, TSpeedImage >. Definition at line 91 of file itkFastMarchingImageFilter.h. |
|
Definition at line 123 of file itkFastMarchingImageFilter.h. |
|
SpeedImagePointer typedef support. Definition at line 122 of file itkFastMarchingImageFilter.h. |
|
SpeedImage typedef support. Reimplemented in itk::FastMarchingExtensionImageFilter< TLevelSet, TAuxValue, VAuxDimension, TSpeedImage >. Definition at line 119 of file itkFastMarchingImageFilter.h. Referenced by itk::FastMarchingImageFilter< TLevelSet, TSpeedImage >::~FastMarchingImageFilter(). |
|
Reimplemented from itk::ImageToImageFilter< TSpeedImage, TLevelSet >.
Reimplemented in itk::FastMarchingExtensionImageFilter< TLevelSet, TAuxValue, VAuxDimension, TSpeedImage >. Definition at line 92 of file itkFastMarchingImageFilter.h. |
|
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 129 of file itkFastMarchingImageFilter.h. |
|
|
|
|
Get thConste Collect Points flag. |
|
Get thConste Collect Points flag. |
|
Generate the output image meta information. Reimplemented from itk::ProcessObject.
Reimplemented in itk::FastMarchingExtensionImageFilter< TLevelSet, TAuxValue, VAuxDimension, TSpeedImage >.
|
|
A version of GenerateData() specific for image processing filters. This implementation will split the processing across multiple threads. The buffer is allocated by this method. Then the BeforeThreadedGenerateData() method is called (if provided). Then, a series of threads are spawned each calling ThreadedGenerateData(). After all the threads have completed processing, the AfterThreadedGenerateData() method is called (if provided). If an image processing filter cannot be threaded, the filter should provide an implementation of GenerateData(). That implementation is responsible for allocating the output buffer. If a filter an be threaded, it should NOT provide a GenerateData() method but should provide a ThreadedGenerateData() instead.
Reimplemented from itk::ImageSource< TLevelSet >.
|
|
Generate the output image meta information. Reimplemented from itk::ProcessObject.
Reimplemented in itk::FastMarchingExtensionImageFilter< TLevelSet, TAuxValue, VAuxDimension, TSpeedImage >.
|
|
Get the container of Alive Points representing the initial front. Definition at line 147 of file itkFastMarchingImageFilter.h. |
|
Run-time type information (and related methods). Reimplemented from itk::ImageToImageFilter< TSpeedImage, TLevelSet >.
Reimplemented in itk::FastMarchingExtensionImageFilter< TLevelSet, TAuxValue, VAuxDimension, TSpeedImage >.
|
|
Get thConste Collect Points flag. |
|
Get the point type label image. Definition at line 164 of file itkFastMarchingImageFilter.h. |
|
Get Large Value. This value is used to represent the concept of infinity for the time assigned to pixels that have not been visited. This value is set by default to half the max() of the pixel type used to represent the time-crossing map. |
|
Definition at line 236 of file itkFastMarchingImageFilter.h. |
|
Set/Get the Normalization Factor for the Speed Image. The values in the Speed Image is divided by this factor. This allows the use of images with integer pixel types to represent the speed. |
|
Get the output level set size. Definition at line 221 of file itkFastMarchingImageFilter.h. |
|
Get the container of Processed Points. If the CollectPoints flag is set, the algorithm collects a container of all processed nodes. This is useful for defining creating Narrowbands for level set algorithms that supports narrow banding. Definition at line 212 of file itkFastMarchingImageFilter.h. |
|
Get the Speed Constant. |
|
Get the Fast Marching algorithm Stopping Value. |
|
Get the container of Trial Points representing the initial front. Definition at line 160 of file itkFastMarchingImageFilter.h. References itk::FastMarchingImageFilter< TLevelSet, TSpeedImage >::LabelImagePointer. |
|
Reimplemented in itk::FastMarchingExtensionImageFilter< TLevelSet, TAuxValue, VAuxDimension, TSpeedImage >.
|
|
Dimension of the level set. |
|
Method for creation through the object factory. Reimplemented from itk::Object.
Reimplemented in itk::FastMarchingExtensionImageFilter< TLevelSet, TAuxValue, VAuxDimension, TSpeedImage >.
|
|
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::ImageToImageFilter< TSpeedImage, TLevelSet >.
Reimplemented in itk::FastMarchingExtensionImageFilter< TLevelSet, TAuxValue, VAuxDimension, TSpeedImage >.
|
|
Set the container of Alive Points representing the initial front. Alive points are represented as a VectorContainer of LevelSetNodes. Definition at line 139 of file itkFastMarchingImageFilter.h. References itk::FastMarchingImageFilter< TLevelSet, TSpeedImage >::NodeContainer. |
|
Set the Collect Points flag. Instrument the algorithm to collect a container of all nodes which it has visited. Useful for creating Narrowbands for level set algorithms that supports narrow banding. |
|
Set/Get the Normalization Factor for the Speed Image. The values in the Speed Image is divided by this factor. This allows the use of images with integer pixel types to represent the speed. |
|
Set the output level set size. Defines the size of the output level set. Definition at line 217 of file itkFastMarchingImageFilter.h. |
|
Set the Speed Constant. If the Speed Image is NULL, the SpeedConstant value is used for the whole level set. By default, the SpeedConstant is set to 1.0. Definition at line 170 of file itkFastMarchingImageFilter.h. |
|
Set the Fast Marching algorithm Stopping Value. The Fast Marching algorithm is terminated when the value of the smallest trial point is greater than the stopping value. |
|
Set the container of Trial Points representing the initial front. Trial points are represented as a VectorContainer of LevelSetNodes. Definition at line 152 of file itkFastMarchingImageFilter.h. |
|
|
|
Reimplemented in itk::FastMarchingExtensionImageFilter< TLevelSet, TAuxValue, VAuxDimension, TSpeedImage >.
|