template<class TInputImage, class TOutputPath = PolyLineParametricPath<TInputImage::ImageDimension>>
class itk::ArrivalFunctionToPathFilter< TInputImage, TOutputPath >
Extracts a path from a Fast Marching arrival function.
This filter extracts the geodesic (minimal) path between the given end-point and a start-point (which is implicitly embedded in the given arrival function). The path is extracted by back-propagating perpendicular to the Fast Marching front from the end-point to the global minimum of the arrival function (ie. the start-point). A step-wise optimizer is used to perform the back-propagation.
The user must provide the following:
- A real-valued arrival function as the filter input
- At least one path end point. The arrival function must be a real-valued (float or double) image in the range [0,inf). If multiple end points are given, multiple paths are extracted and saved to separate filter outputs.
A cost function optimizer may also be provided. If an optimizer is not given, a RegularStepGradientDescentOptimizer is created with default settings. The optimizer is responsible for tracking from the given end-point to the embedded start-point. This filter listens for the optimizer Iteration event and stores the current position as a point in the current path. Therefore, only step-wise optimizers (which report their intermediate position at each iteration) are suitable for extracting the path. Current suitable optimizers include: RegularStepGradientDescentOptimizer, GradientDescentOptimizer, and IterateNeighborhoodOptimizer.
The TerminationValue parameter prevents unwanted oscillations when closing in on the start-point. The optimizer is terminated when the current arrival value is less than TerminationValue; the smaller the value, the closer the path will get to the start-point. The default is 1.0. It is recommended that your optimizer has a small step size when TerminationValue is small.
This filter is based on the methods described in: [1] J. Sethian. Level Set Methods and Fast Marching Methods, chapter 20. Cambridge Press, 2nd edition, 1999. [2] J. Andrews and J. Sethian. Fast marching methods for the continuous traveling salesman problem. Proceedings of the National Academy of Sciences (PNAS), 104(4):1118/1123, 2007.
- Author
- Dan Mueller, Queensland University of Technology, dan.muel[at]gmail.com
Definition at line 144 of file itkArrivalFunctionToPathFilter.h.
|
| ArrivalFunctionToPathFilter () |
|
virtual InputImageType * | ComputeArrivalFunction () |
|
void | GenerateData (void) override |
|
void | GenerateInputRequestedRegion () override |
|
virtual const PointsContainerType & | GetNextEndPoint () |
|
virtual unsigned int | GetNumberOfPathsToExtract () const |
|
void | PrintSelf (std::ostream &os, Indent indent) const override |
|
| ~ArrivalFunctionToPathFilter () override |
|
| ImageToPathFilter () |
|
| ~ImageToPathFilter () override=default |
|
| PathSource () |
|
| ~PathSource () override=default |
|
virtual void | AddInput (DataObject *input) |
|
void | AddOptionalInputName (const DataObjectIdentifierType &) |
|
void | AddOptionalInputName (const DataObjectIdentifierType &, DataObjectPointerArraySizeType idx) |
|
virtual void | AddOutput (DataObject *output) |
|
bool | AddRequiredInputName (const DataObjectIdentifierType &) |
|
bool | AddRequiredInputName (const DataObjectIdentifierType &, DataObjectPointerArraySizeType idx) |
|
virtual void | CacheInputReleaseDataFlags () |
|
virtual void | GenerateOutputInformation () |
|
virtual void | GenerateOutputRequestedRegion (DataObject *output) |
|
DataObject * | GetInput (const DataObjectIdentifierType &key) |
|
const DataObject * | GetInput (const DataObjectIdentifierType &key) const |
|
virtual const
DataObjectPointerArraySizeType & | GetNumberOfRequiredInputs () const |
|
virtual const
DataObjectPointerArraySizeType & | GetNumberOfRequiredOutputs () const |
|
bool | IsIndexedInputName (const DataObjectIdentifierType &) const |
|
bool | IsIndexedOutputName (const DataObjectIdentifierType &) const |
|
bool | IsRequiredInputName (const DataObjectIdentifierType &) const |
|
DataObjectPointerArraySizeType | MakeIndexFromInputName (const DataObjectIdentifierType &name) const |
|
DataObjectPointerArraySizeType | MakeIndexFromOutputName (const DataObjectIdentifierType &name) const |
|
DataObjectIdentifierType | MakeNameFromInputIndex (DataObjectPointerArraySizeType idx) const |
|
DataObjectIdentifierType | MakeNameFromOutputIndex (DataObjectPointerArraySizeType idx) const |
|
virtual void | PopBackInput () |
|
virtual void | PopFrontInput () |
|
| ProcessObject () |
|
virtual void | PropagateResetPipeline () |
|
virtual void | PushBackInput (const DataObject *input) |
|
virtual void | PushFrontInput (const DataObject *input) |
|
virtual void | ReleaseInputs () |
|
virtual void | RemoveInput (const DataObjectIdentifierType &key) |
|
virtual void | RemoveInput (DataObjectPointerArraySizeType) |
|
virtual void | RemoveOutput (const DataObjectIdentifierType &key) |
|
virtual void | RemoveOutput (DataObjectPointerArraySizeType idx) |
|
bool | RemoveRequiredInputName (const DataObjectIdentifierType &) |
|
virtual void | RestoreInputReleaseDataFlags () |
|
virtual void | SetInput (const DataObjectIdentifierType &key, DataObject *input) |
|
virtual void | SetNthInput (DataObjectPointerArraySizeType num, DataObject *input) |
|
virtual void | SetNthOutput (DataObjectPointerArraySizeType num, DataObject *output) |
|
void | SetNumberOfIndexedInputs (DataObjectPointerArraySizeType num) |
|
void | SetNumberOfIndexedOutputs (DataObjectPointerArraySizeType num) |
|
virtual void | SetNumberOfRequiredInputs (DataObjectPointerArraySizeType) |
|
virtual void | SetNumberOfRequiredOutputs (DataObjectPointerArraySizeType _arg) |
|
virtual void | SetOutput (const DataObjectIdentifierType &key, DataObject *output) |
|
virtual void | SetPrimaryInput (DataObject *input) |
|
virtual void | SetPrimaryOutput (DataObject *output) |
|
void | SetRequiredInputNames (const NameArray &) |
|
virtual void | VerifyInputInformation () ITKv5_CONST |
|
virtual void | VerifyPreconditions () ITKv5_CONST |
|
| ~ProcessObject () override |
|
DataObject * | GetInput (DataObjectPointerArraySizeType idx) |
|
const DataObject * | GetInput (DataObjectPointerArraySizeType idx) const |
|
DataObject * | GetPrimaryInput () |
|
const DataObject * | GetPrimaryInput () const |
|
virtual void | SetPrimaryInputName (const DataObjectIdentifierType &key) |
|
virtual const char * | GetPrimaryInputName () const |
|
DataObject * | GetOutput (const DataObjectIdentifierType &key) |
|
const DataObject * | GetOutput (const DataObjectIdentifierType &key) const |
|
virtual void | SetPrimaryOutputName (const DataObjectIdentifierType &key) |
|
virtual const char * | GetPrimaryOutputName () const |
|
DataObject * | GetOutput (DataObjectPointerArraySizeType idx) |
|
const DataObject * | GetOutput (DataObjectPointerArraySizeType idx) const |
|
DataObject * | GetPrimaryOutput () |
|
const DataObject * | GetPrimaryOutput () const |
|
| Object () |
|
bool | PrintObservers (std::ostream &os, Indent indent) const |
|
virtual void | SetTimeStamp (const TimeStamp &time) |
|
| ~Object () override |
|
virtual LightObject::Pointer | InternalClone () const |
|
| LightObject () |
|
virtual void | PrintHeader (std::ostream &os, Indent indent) const |
|
virtual void | PrintTrailer (std::ostream &os, Indent indent) const |
|
virtual | ~LightObject () |
|