#include <itkFastMarchingImageFilter.h>
Inheritance diagram for itk::FastMarchingImageFilter:
Public Types | |
typedef FastMarchingImageFilter | Self |
typedef ImageSource< TLevelSet > | Superclass |
typedef SmartPointer< Self > | Pointer |
typedef SmartPointer< const Self > | ConstPointer |
typedef LevelSetTypeDefault< TLevelSet > | LevelSetType |
typedef LevelSetType::LevelSetImageType | LevelSetImageType |
typedef LevelSetType::LevelSetPointer | LevelSetPointer |
typedef LevelSetType::PixelType | PixelType |
typedef LevelSetType::NodeType | NodeType |
typedef LevelSetType::NodeContainer | NodeContainer |
typedef LevelSetType::NodeContainerPointer | NodeContainerPointer |
typedef Index< itkGetStaticConstMacro(SetDimension) | IndexType ) |
typedef TSpeedImage | SpeedImageType |
typedef SpeedImageType::Pointer | SpeedImagePointer |
typedef SpeedImageType::ConstPointer | SpeedImageConstPointer |
typedef Image< unsigned char, itkGetStaticConstMacro(SetDimension) | LabelImageType ) |
typedef LabelImageType::Pointer | LabelImagePointer |
enum | LabelType { FarPoint, AlivePoint, TrialPoint } |
Public Methods | |
virtual const char * | GetClassName () const |
itkStaticConstMacro (SetDimension, unsigned int, LevelSetType::SetDimension) | |
NodeContainerPointer | GetAlivePoints () |
NodeContainerPointer | GetTrialPoints () |
void | SetSpeedImage (const SpeedImageType *ptr) |
const SpeedImageType * | GetSpeedImage (void) |
LabelImagePointer | GetLabelImage () const |
virtual double | GetSpeedConstant () |
virtual void | SetStoppingValue (double _arg) |
virtual double | GetStoppingValue () |
virtual void | SetCollectPoints (bool _arg) |
NodeContainerPointer | GetProcessedPoints () const |
void | SetOutputSize (const typename LevelSetImageType::SizeType &size) |
const LevelSetImageType::SizeType & | GetOutputSize () const |
void | SetAlivePoints (NodeContainer *points) |
void | SetTrialPoints (NodeContainer *points) |
void | SetSpeedConstant (double value) |
virtual double | GetCollectPoints () |
virtual void | CollectPointsOn () |
virtual void | CollectPointsOff () |
Static Public Methods | |
Pointer | New () |
Protected Methods | |
FastMarchingImageFilter () | |
~FastMarchingImageFilter () | |
void | PrintSelf (std::ostream &os, Indent indent) const |
virtual void | Initialize (LevelSetImageType *) |
virtual void | UpdateNeighbors (const IndexType &index, const SpeedImageType *, LevelSetImageType *) |
virtual double | UpdateValue (const IndexType &index, const SpeedImageType *, LevelSetImageType *) |
LevelSetImageType::PixelType | GetLargeValue () const |
const NodeType & | GetNodeUsedInCalculation (unsigned int idx) const |
void | GenerateData () |
virtual void | GenerateOutputInformation () |
virtual void | EnlargeOutputRequestedRegion (DataObject *output) |
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 move 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 propagate 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 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.
If the speed function is constant and of value one, fast marching results in a 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 83 of file itkFastMarchingImageFilter.h.
|
Reimplemented from itk::ImageToImageFilter< TSpeedImage, TLevelSet >. Reimplemented in itk::FastMarchingExtensionImageFilter< TLevelSet, TAuxValue, VAuxDimension, TSpeedImage >. Definition at line 91 of file itkFastMarchingImageFilter.h. |
|
Index typedef support. Reimplemented in itk::FastMarchingExtensionImageFilter< TLevelSet, TAuxValue, VAuxDimension, TSpeedImage >. Definition at line 113 of file itkFastMarchingImageFilter.h. |
|
LabelImagePointer typedef support. Definition at line 132 of file itkFastMarchingImageFilter.h. |
|
LabelImage typedef support. Definition at line 129 of file itkFastMarchingImageFilter.h. |
|
Reimplemented in itk::FastMarchingExtensionImageFilter< TLevelSet, TAuxValue, VAuxDimension, TSpeedImage >. Definition at line 101 of file itkFastMarchingImageFilter.h. |
|
Definition at line 102 of file itkFastMarchingImageFilter.h. |
|
Typedef support of level set method types. Reimplemented in itk::FastMarchingExtensionImageFilter< TLevelSet, TAuxValue, VAuxDimension, TSpeedImage >. Definition at line 100 of file itkFastMarchingImageFilter.h. |
|
Definition at line 105 of file itkFastMarchingImageFilter.h. |
|
Definition at line 106 of file itkFastMarchingImageFilter.h. |
|
Definition at line 104 of file itkFastMarchingImageFilter.h. |
|
Definition at line 103 of file itkFastMarchingImageFilter.h. |
|
Reimplemented from itk::ImageToImageFilter< TSpeedImage, TLevelSet >. Reimplemented in itk::FastMarchingExtensionImageFilter< TLevelSet, TAuxValue, VAuxDimension, TSpeedImage >. Definition at line 90 of file itkFastMarchingImageFilter.h. |
|
Standard class typdedefs. Reimplemented from itk::ImageToImageFilter< TSpeedImage, TLevelSet >. Reimplemented in itk::FastMarchingExtensionImageFilter< TLevelSet, TAuxValue, VAuxDimension, TSpeedImage >. Definition at line 88 of file itkFastMarchingImageFilter.h. |
|
Definition at line 120 of file itkFastMarchingImageFilter.h. |
|
SpeedImagePointer typedef support. Definition at line 119 of file itkFastMarchingImageFilter.h. |
|
SpeedImage typedef support. Reimplemented in itk::FastMarchingExtensionImageFilter< TLevelSet, TAuxValue, VAuxDimension, TSpeedImage >. Definition at line 116 of file itkFastMarchingImageFilter.h. |
|
Reimplemented from itk::ImageToImageFilter< TSpeedImage, TLevelSet >. Reimplemented in itk::FastMarchingExtensionImageFilter< TLevelSet, TAuxValue, VAuxDimension, TSpeedImage >. Definition at line 89 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 126 of file itkFastMarchingImageFilter.h. |
|
|
|
Definition at line 222 of file itkFastMarchingImageFilter.h. |
|
Get the Collect Points flag. |
|
Get the Collect Points flag. |
|
Generate the output image meta information. Reimplemented from itk::ProcessObject. Reimplemented in itk::FastMarchingExtensionImageFilter< TLevelSet, TAuxValue, VAuxDimension, TSpeedImage >. |
|
This method causes the filter to generate its output. 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 144 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 the Collect Points flag. |
|
Get the point type label image. Definition at line 168 of file itkFastMarchingImageFilter.h. |
|
Definition at line 231 of file itkFastMarchingImageFilter.h. |
|
Definition at line 234 of file itkFastMarchingImageFilter.h. |
|
Get the output level set size. Definition at line 217 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 208 of file itkFastMarchingImageFilter.h. |
|
Get the Speed Constant. |
|
Get the input Speed Image. |
|
Get the Fast Marching algorithm Stopping Value. |
|
Get the container of Trial Points representing the initial front. Definition at line 157 of file itkFastMarchingImageFilter.h. |
|
Reimplemented in itk::FastMarchingExtensionImageFilter< TLevelSet, TAuxValue, VAuxDimension, TSpeedImage >. |
|
Dimension of the level set. |
|
Method for creation through the object factory. Reimplemented from itk::ImageToImageFilter< TSpeedImage, TLevelSet >. 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 136 of file itkFastMarchingImageFilter.h. |
|
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 the output level set size. Defines the size of the output level set. Definition at line 213 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 174 of file itkFastMarchingImageFilter.h. |
|
Set the input Speed Image. If the Speed Image is NULL, the SpeedConstant value is used for the whole level set. |
|
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 149 of file itkFastMarchingImageFilter.h. |
|
|
|
Reimplemented in itk::FastMarchingExtensionImageFilter< TLevelSet, TAuxValue, VAuxDimension, TSpeedImage >. |