gvf_field — SEGMENTATION contour op

• Data kinds: image2d → table

• Call: import fullseye as fs; fs.ledger.gvf_field(image, *, mu: 'float' = 0.2, sigma: 'float' = 1.0, method: 'str' = 'direct', n_iter: 'int' = 2000, dt: 'Optional[float]' = None, edge_map=None) -> 'Dict[str, object]' (to call the implementation directly, import segcontour; segcontour.gvf_field(image, *, mu: 'float' = 0.2, sigma: 'float' = 1.0, method: 'str' = 'direct', n_iter: 'int' = 2000, dt: 'Optional[float]' = None, edge_map=None) -> 'Dict[str, object]'; from the registry, opssegmentation.get("gvf_field"))

Usage

Gradient vector flow (Xu–Prince 1998): the field (u, v) that smoothly diffuses the gradient of the edge map f away from the edges (gvf_field).

Minimisation of E = ∬ μ(u_x² + u_y² + v_x² + v_y²) + |∇f|² |(u, v) − ∇f|². Euler equations μ∇²u − (u − f_x)(f_x² + f_y²) = 0, μ∇²v − (v − f_y)(f_x² + f_y²) = 0 (linear). method="iterate" = the paper's time evolution u ← u + Δt(μ∇²u − b(u − f_x)), b = |∇f|² (explicit, Δt ≤ 1/(4μ + max b)). method="direct" = solves the same discrete equation (μL − diag b) u = −b f_x directly with a sparse matrix (the steady-state solution itself). The edge map f is by default |∇(G_σ * I)| normalised to a maximum of 1 (it may also be given directly via edge_map). Boundary is Neumann. u = component in the column (x) direction, v = component in the row (y) direction.

Returns: u / v, edge_map, fx / fy, residual_max (maximum residual of the Euler equations), residual_rel (residual / max(b |∇f|)), n_iter, method, mu. If f is flat, the field is 0 (residual 0).

Detailed usage guide

• halcon_segmentation family guide

Background guides (the physics and conventions behind this op)

• active_contours_and_level_sets — Variational and active contours, level sets — which contour stops where, and what it guarantees

References (sample data, literature)

• Sample-data catalog (download URLs / licences) — 2-D uses skimage.data (BSD/public domain) plus synthetic images; 3-D lists download URLs for real data sources (Stanford, PDS, …).

• Operator provenance and references — the sources of the research/methods this op family came from.

• The canonical algorithm (author, year) and its uses are named in the family usage guide above.

Runnable examples (verified samples that actually call this op)

• poc_active_contours — py -3.11 examples/poc_active_contours.py

Ops the type connects to (they accept table as input)

class_ndim_norm

Same category (contour)

snake_evolve · chan_vese_energy · chan_vese_evolve · morph_chan_vese · morph_geodesic_ac · edge_stop_g · level_set_reinit · drle_evolve


*Provenance: segcontour.py — SEGMENTATION operator registry. This per-op note is generated by tools/opdocs.py md (do not hand-edit).*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.