Fast marching method

Uses your system voice; voice and rate in settings.

Snapshot

≈ 5 min read

Names in other languages

No names in other languages are held for this entry yet.

Article bodies are English and are not machine-translated. A name in another language is not a translation of the article.

The fast marching method is a numerical method created by James Sethian for solving boundary value problems of the Eikonal equation: : |\nabla u(x)|=1/f(x) \text{ for } x \in \Omega : u(x) = 0 \text{ for } x \in \partial \Omega Typically, such a problem describes the evolution of a closed surface as a function of time u with speed f in the normal direction at a point x on the propagating surface. The speed function is specified, and the time at which the contour crosses a point x is obtained by solving the equation. Alternatively, u(x) can be thought of as the minimum amount of time it would take to reach \partial\Omega starting from the point x . The fast marching method takes advantage of this optimal control interpretation of the problem in order to build a solution outwards starting from the "known information", i.e. the boundary values. The algorithm is similar to Dijkstra's algorithm and uses the fact that information only flows outward from the seeding area. This problem is a special case of level-set methods. More general algorithms exist but are normally slower. Extensions to non-flat (triangulated) domains solving :: |\nabla_S u(x)|=1 / f(x), for the surface S and x\in S , were introduced by Ron Kimmel and James Sethian.…

The fast marching method is a numerical method created by James Sethian for solving boundary value problems of the Eikonal equation: |\nabla u(x)|=1/f(x) \text{ for } x \in \Omega u(x) = 0 \text{ for } x \in \partial \Omega Typically, such a problem describes the evolution of a closed surface as a function of time u with speed f in the normal direction at a point x on the propagating surface. The speed function is specified, and the time at which the contour crosses a point x is obtained by solving the equation. Alternatively, u(x) can be thought of as the minimum amount of time it would take to reach \partial\Omega starting from the point x . The fast marching method takes advantage of this optimal control interpretation of the problem in order to build a solution outwards starting from the "known information", i.e. the boundary values. The algorithm is similar to Dijkstra's algorithm and uses the fact that information only flows outward from the seeding area. This problem is a special case of level-set methods. More general algorithms exist but are normally slower. Extensions to non-flat (triangulated) domains solving |\nabla_S u(x)|=1 / f(x), for the surface S and x\in S , were introduced by Ron Kimmel and James Sethian. Image:Fast_marching_maze.png| Maze as speed function shortest path Image:Fast_marching_multi_stencil_2nd_order.png|Distance map multi-stencils with random source points ==Algorithm== First, assume that the domain has been discretized into a mesh. We will refer to mesh points as nodes. Each node x_i has a corresponding value U_i = U(x_i) \approx u(x_i) . The algorithm works just like Dijkstra's algorithm but differs in how the nodes' values are calculated. In Dijkstra's algorithm, a node's value is calculated using a single one of the neighboring nodes. However, in solving the PDE in \mathbb{R}^n , between 1 and n of the neighboring nodes are used. Nodes are labeled as far (not yet visited), considered (visited and value tentatively assigned), and accepted (visited and value permanently assigned). Assign every node x_i the value of U_i=+\infty and label them as far; for all nodes x_i \in \partial\Omega set U_i = 0 and label x_i as accepted. For every far node x_i , use the Eikonal update formula to calculate a new value for \tilde{U} . If \tilde{U} then set U_i = \tilde{U} and label x_i as considered. Let \tilde{x} be the considered node with the smallest value U . Label \tilde{x} as accepted. For every neighbor x_i of \tilde{x} that is not-accepted, calculate a tentative value \tilde{U} . If \tilde{U} then set U_i = \tilde{U} . If x_i was labeled as far, update the label to considered. If there exists a considered node, return to step 3. Otherwise, terminate. ==See also== Level-set method Fast sweeping method Bellman–Ford algorithm ==External links== Dijkstra-like Methods for the Eikonal Equation J.N. Tsitsiklis, 1995 The Fast Marching Method and its Applications by James A. Sethian Multi-Stencils Fast Marching Methods Multi-Stencils Fast Marching Matlab Implementation Implementation Details of the Fast Marching Methods Generalized Fast Marching method by Forcadel et al. [2008] for applications in image segmentation. Python Implementation of the Fast Marching Method See Chapter 8 in Design and Optimization of Nano-Optical Elements by Coupling Fabrication to Optical Behavior ==Notes==

Text derived from https://en.wikipedia.org/w/index.php?oldid=1253508517 under CC BY-SA 4.0; modifications have been made.

Sources cited in this revision

Extracted from the cited revision's reference blocks; absent citations are not invented.