curvature_flow — SEGMENTATION contour op

• Data kinds: mask → table

• Call: import fullseye as fs; fs.ledger.curvature_flow(phi, *, t_end: 'float' = 50.0, dt: 'float' = 0.2, eta: 'float' = 1e-08, record_every: 'int' = 0) -> 'Dict[str, object]' (to call the implementation directly, import segcontour; segcontour.curvature_flow(phi, *, t_end: 'float' = 50.0, dt: 'float' = 0.2, eta: 'float' = 1e-08, record_every: 'int' = 0) -> 'Dict[str, object]'; from the registry, opssegmentation.get("curvature_flow"))

Usage

Level-set form of mean curvature flow (curve-shortening flow) φ_t = |∇φ| div(∇φ/|∇φ|) (inside where φ < 0; shrinks from the convex parts) (curvature_flow).

Explicit central differences: φ_t = (φ_xx φ_y² − 2 φ_x φ_y φ_xy + φ_yy φ_x²) / (φ_x² + φ_y² + η), step dt ≤ 0.25 (stability condition). phi = φ or a bool mask (converted to a signed distance). The area at each step is the sum of clip(0.5 − φ/|∇φ|, 0, 1).

Gate: the area enclosed by a simple closed curve obeys dA/dt = −∮ κ ds = −2π (winding number 1, even if not convex). For a circle r(t)² = r0² − 2t.

Returns: phi, mask, times, areas, area_rate (least-squares slope of area vs time), area_rate_theory = −2π, history (masks every record_every steps), n_steps.

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 · gvf_field · chan_vese_energy · chan_vese_evolve · morph_chan_vese · morph_geodesic_ac · edge_stop_g · level_set_reinit


*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.