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 PointType & | GetNextEndPoint () |
| |
| virtual unsigned int | GetNumberOfPathsToExtract () const |
| |
| virtual void | PrintSelf (std::ostream &os, Indent indent) const override |
| |
| | ~ArrivalFunctionToPathFilter () |
| |
| | ImageToPathFilter () |
| |
| virtual | ~ImageToPathFilter () |
| |
| | PathSource () |
| |
| virtual | ~PathSource () override |
| |
| 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 |
| |
| | itkLegacyMacro (virtual void RemoveOutput(DataObject *output)) |
| |
| | itkLegacyMacro (void SetNumberOfOutputs(DataObjectPointerArraySizeType num)) |
| |
| | itkLegacyMacro (virtual void RemoveInput(DataObject *input)) |
| |
| | itkLegacyMacro (void SetNumberOfInputs(DataObjectPointerArraySizeType num)) |
| |
| 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 () |
| |
| virtual void | VerifyPreconditions () |
| |
| | ~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 (void) const |
| |
| DataObject * | GetOutput (const DataObjectIdentifierType &key) |
| |
| const DataObject * | GetOutput (const DataObjectIdentifierType &key) const |
| |
| virtual void | SetPrimaryOutputName (const DataObjectIdentifierType &key) |
| |
| virtual const char * | GetPrimaryOutputName (void) 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) |
| |
| virtual | ~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 () |
| |