VMTK
|
Implementation of the Fast Marching Method on polygonal non-manifolds. More...
#include <vtkvmtkNonManifoldFastMarching.h>
Public Types | |
typedef vtkPolyDataAlgorithm | Superclass |
Public Member Functions | |
virtual int | IsA (const char *type) |
vtkvmtkNonManifoldFastMarching * | NewInstance () const |
void | PrintSelf (ostream &os, vtkIndent indent) VTK_OVERRIDE |
virtual void | SetStopTravelTime (double) |
virtual double | GetStopTravelTime () |
virtual void | SetStopNumberOfPoints (int) |
virtual int | GetStopNumberOfPoints () |
virtual void | SetRegularization (double) |
virtual double | GetRegularization () |
virtual void | SetSeedsBoundaryConditions (int) |
virtual int | GetSeedsBoundaryConditions () |
virtual void | SeedsBoundaryConditionsOn () |
virtual void | SeedsBoundaryConditionsOff () |
virtual void | SetPolyDataBoundaryConditions (int) |
virtual int | GetPolyDataBoundaryConditions () |
virtual void | PolyDataBoundaryConditionsOn () |
virtual void | PolyDataBoundaryConditionsOff () |
virtual void | SetSeeds (vtkIdList *) |
virtual vtkIdList * | GetSeeds () |
virtual void | SetBoundaryPolyData (vtkPolyData *) |
virtual vtkPolyData * | GetBoundaryPolyData () |
virtual void | SetIntersectedEdgesArrayName (const char *) |
virtual char * | GetIntersectedEdgesArrayName () |
virtual void | SetInitializeFromScalars (int) |
virtual int | GetInitializeFromScalars () |
virtual void | InitializeFromScalarsOn () |
virtual void | InitializeFromScalarsOff () |
virtual void | SetInitializationArrayName (const char *) |
virtual char * | GetInitializationArrayName () |
virtual void | SetUnitSpeed (int) |
virtual int | GetUnitSpeed () |
virtual void | UnitSpeedOn () |
virtual void | UnitSpeedOff () |
virtual void | SetCostFunctionArrayName (const char *) |
virtual char * | GetCostFunctionArrayName () |
virtual void | SetSolutionArrayName (const char *) |
virtual char * | GetSolutionArrayName () |
Static Public Member Functions | |
static int | IsTypeOf (const char *type) |
static vtkvmtkNonManifoldFastMarching * | SafeDownCast (vtkObjectBase *o) |
static vtkvmtkNonManifoldFastMarching * | New () |
Protected Member Functions | |
virtual vtkObjectBase * | NewInstanceInternal () const |
vtkvmtkNonManifoldFastMarching () | |
~vtkvmtkNonManifoldFastMarching () | |
virtual int | RequestData (vtkInformation *, vtkInformationVector **, vtkInformationVector *) VTK_OVERRIDE |
void | InitPropagation (vtkPolyData *input) |
void | SolveQuadratic (double a, double b, double c, char &nSol, double &x0, double &x1) |
void | GetNeighbors (vtkPolyData *input, vtkIdType pointId, vtkIdList *neighborIds) |
double | ComputeUpdateFromCellNeighbor (vtkPolyData *input, vtkIdType neighborId, vtkIdType *trianglePts) |
void | UpdateNeighbor (vtkPolyData *input, vtkIdType neighborId) |
void | UpdateNeighborhood (vtkPolyData *input, vtkIdType pointId) |
void | Propagate (vtkPolyData *input) |
Static Protected Member Functions | |
static double | Max (double a, double b) |
static double | Min (double a, double b) |
Protected Attributes | |
vtkDoubleArray * | TScalars |
vtkCharArray * | StatusScalars |
vtkvmtkMinHeap * | ConsideredMinHeap |
vtkIdList * | Seeds |
vtkPolyData * | BoundaryPolyData |
double | Regularization |
double | StopTravelTime |
vtkIdType | StopNumberOfPoints |
int | UnitSpeed |
int | InitializeFromScalars |
char * | IntersectedEdgesArrayName |
char * | InitializationArrayName |
char * | SolutionArrayName |
char * | CostFunctionArrayName |
int | SeedsBoundaryConditions |
int | PolyDataBoundaryConditions |
vtkIdType | NumberOfAcceptedPoints |
int | AllowLineUpdate |
int | UpdateFromConsidered |
Implementation of the Fast Marching Method on polygonal non-manifolds.
This class is used to solve the Eikonal equation
on non-manifolds made of convex polygons, using the Fast Marching Method, by J.A. Sethian (see below). The solution to the Eikonal equation represents the arrival times of a wave propagating on a domain with speed from given seed points (or regions). If F(x)=1, T(x) represents the geodesic distance field to the seed points (Note: F(x) can be equivalently interpreted as a cost function). The Fast Marching Method takes O(N logN). For more insight see J.A. Sethian, Level Set Methods and Fast Marching Methods, Cambridge University Press, 2nd Edition, 1999.
The implementation given in this class is an extension of the Fast Marching Method for triangulated 2-manifolds proposed by Kimmel et al. (R. Kimmel and J.A. Sethian. Computing geodesic paths on manifolds. PNAS, 95(15): 8431-8435, Jul 1998.) to non-manifolds made of convex polygons, such as the Voronoi diagram.
The propagation starts from a set of seeds. By default the seed points are given a propagation time of 0.0, but activating InitializeFromScalars and providing the point data array of name InitializationArrayName, it is possible to assign nonzero initialization times (this is useful when the zero propagation time point lies inside a cell). For the specification of F(x), the user must either provide a point data array of name CostFunctionArrayName, or activate UnitSpeed, which sets F(x)=1 everywhere, thus yielding a geodesic distance field. The propagation stops when all the points in the domain path-connected to the seeds have been visited. Alternatively it is possible to limit the propagation by setting StopTravelTime or StopNumberOfPoints. The solution is stored in a point data array of name SolutionArrayName (name provided by the user, "EikonalSolution" by default).
The Regularization value adds a constant term to F(x), which acts as a regularization term for the minimal cost paths (see L.D. Cohen and R. Kimmel. Global minimum of active contour models: a minimal path approach. IJCV, 24(1): 57-78, Aug 1997).
Definition at line 56 of file vtkvmtkNonManifoldFastMarching.h.
typedef vtkPolyDataAlgorithm vtkvmtkNonManifoldFastMarching::Superclass |
Definition at line 59 of file vtkvmtkNonManifoldFastMarching.h.
|
protected |
|
protected |
|
static |
|
virtual |
|
static |
|
protectedvirtual |
vtkvmtkNonManifoldFastMarching* vtkvmtkNonManifoldFastMarching::NewInstance | ( | ) | const |
void vtkvmtkNonManifoldFastMarching::PrintSelf | ( | ostream & | os, |
vtkIndent | indent | ||
) |
|
static |
|
virtual |
Set/Get maximum travel time for travel time-based stop criterion.
|
virtual |
Set/Get maximum travel time for travel time-based stop criterion.
|
virtual |
Set/Get maximum number of visited points for number of visited points-based stop criterion.
|
virtual |
Set/Get maximum number of visited points for number of visited points-based stop criterion.
|
virtual |
Set/Get minimal cost path regularization amount.
|
virtual |
Set/Get minimal cost path regularization amount.
|
virtual |
Toggle on/off boundary conditions expressed as a list of seeds.
|
virtual |
Toggle on/off boundary conditions expressed as a list of seeds.
|
virtual |
Toggle on/off boundary conditions expressed as a list of seeds.
|
virtual |
Toggle on/off boundary conditions expressed as a list of seeds.
|
virtual |
Toggle on/off boundary conditions expressed as poly data.
|
virtual |
Toggle on/off boundary conditions expressed as poly data.
|
virtual |
Toggle on/off boundary conditions expressed as poly data.
|
virtual |
Toggle on/off boundary conditions expressed as poly data.
|
virtual |
Set/Get seeds were boundary conditions are specified.
|
virtual |
Set/Get seeds were boundary conditions are specified.
|
virtual |
Set/Get poly data were boundary conditions are specified.
|
virtual |
Set/Get poly data were boundary conditions are specified.
|
virtual |
Set/Get the name of the 2-component point data array of boundary poly data where point ids of edges of the input intersected by boundary poly data are stored.
|
virtual |
Set/Get the name of the 2-component point data array of boundary poly data where point ids of edges of the input intersected by boundary poly data are stored.
|
virtual |
Toggle on/off using point data array of name InitializationArrayName for the solution value of seed points. If off, a value of 0.0 is used for all seeds.
|
virtual |
Toggle on/off using point data array of name InitializationArrayName for the solution value of seed points. If off, a value of 0.0 is used for all seeds.
|
virtual |
Toggle on/off using point data array of name InitializationArrayName for the solution value of seed points. If off, a value of 0.0 is used for all seeds.
|
virtual |
Toggle on/off using point data array of name InitializationArrayName for the solution value of seed points. If off, a value of 0.0 is used for all seeds.
|
virtual |
Set/Get the name of point data InitializationArray
|
virtual |
Set/Get the name of point data InitializationArray
|
virtual |
Toggle on/off using a unit speed field over the whole domain (used to obtain geodesic distances). If off, a CostFunctionArray must be provided.
|
virtual |
Toggle on/off using a unit speed field over the whole domain (used to obtain geodesic distances). If off, a CostFunctionArray must be provided.
|
virtual |
Toggle on/off using a unit speed field over the whole domain (used to obtain geodesic distances). If off, a CostFunctionArray must be provided.
|
virtual |
Toggle on/off using a unit speed field over the whole domain (used to obtain geodesic distances). If off, a CostFunctionArray must be provided.
|
virtual |
Set/Get the name of point data CostFunctionArray
|
virtual |
Set/Get the name of point data CostFunctionArray
|
virtual |
Set/Get the name of point data SolutionArray
|
virtual |
Set/Get the name of point data SolutionArray
|
protectedvirtual |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
inlinestaticprotected |
Definition at line 169 of file vtkvmtkNonManifoldFastMarching.h.
|
inlinestaticprotected |
Definition at line 172 of file vtkvmtkNonManifoldFastMarching.h.
|
protected |
Definition at line 175 of file vtkvmtkNonManifoldFastMarching.h.
|
protected |
Definition at line 176 of file vtkvmtkNonManifoldFastMarching.h.
|
protected |
Definition at line 177 of file vtkvmtkNonManifoldFastMarching.h.
|
protected |
Definition at line 179 of file vtkvmtkNonManifoldFastMarching.h.
|
protected |
Definition at line 180 of file vtkvmtkNonManifoldFastMarching.h.
|
protected |
Definition at line 182 of file vtkvmtkNonManifoldFastMarching.h.
|
protected |
Definition at line 183 of file vtkvmtkNonManifoldFastMarching.h.
|
protected |
Definition at line 184 of file vtkvmtkNonManifoldFastMarching.h.
|
protected |
Definition at line 185 of file vtkvmtkNonManifoldFastMarching.h.
|
protected |
Definition at line 186 of file vtkvmtkNonManifoldFastMarching.h.
|
protected |
Definition at line 187 of file vtkvmtkNonManifoldFastMarching.h.
|
protected |
Definition at line 188 of file vtkvmtkNonManifoldFastMarching.h.
|
protected |
Definition at line 189 of file vtkvmtkNonManifoldFastMarching.h.
|
protected |
Definition at line 190 of file vtkvmtkNonManifoldFastMarching.h.
|
protected |
Definition at line 192 of file vtkvmtkNonManifoldFastMarching.h.
|
protected |
Definition at line 193 of file vtkvmtkNonManifoldFastMarching.h.
|
protected |
Definition at line 195 of file vtkvmtkNonManifoldFastMarching.h.
|
protected |
Definition at line 197 of file vtkvmtkNonManifoldFastMarching.h.
|
protected |
Definition at line 198 of file vtkvmtkNonManifoldFastMarching.h.