morph_geodesic_ac — SEGMENTATION contour op

• Data kinds: image2d × mask → table

• Call: import fullseye as fs; fs.ledger.morph_geodesic_ac(gimage, init, *, n_iter: 'int' = 100, smoothing: 'int' = 1, threshold='auto', balloon: 'float' = 0.0, phase: 'int' = 0, record_every: 'int' = 0) -> 'Dict[str, object]' (to call the implementation directly, import segcontour; segcontour.morph_geodesic_ac(gimage, init, *, n_iter: 'int' = 100, smoothing: 'int' = 1, threshold='auto', balloon: 'float' = 0.0, phase: 'int' = 0, record_every: 'int' = 0) -> 'Dict[str, object]'; from the registry, opssegmentation.get("morph_geodesic_ac"))

Usage

Morphological geodesic active contour (MorphGAC of Márquez-Neila et al. 2014). gimage = an image that is small on edges (the g of edge_stop_g) (morph_geodesic_ac).

1 iteration = balloon stage (balloon > 0: 3×3 dilation, < 0: erosion, only on pixels with g > threshold/|balloon|) + attraction stage (pixels with ∇g · ∇u > 0 go inside, < 0 outside = pulls the contour into the valleys of g) + smoothing stage (curvature operator smoothing times, alternating). threshold="auto" is the 40 % point of g (same as skimage). Pitfall (measured): if the background is exactly flat, pixels with g ≡ 1 exceed 40 %, the threshold becomes 1, no pixel satisfies "g > 1/|balloon|" and the balloon never acts (the contour stays at its initial position). In images where the blur tail makes g 1 − 10⁻¹³, it happens to act. For flat synthetic images, give the threshold as a number. phase is the same as in morph_chan_vese.

Returns: mask, threshold, history, n_iter, n_changed (per iteration).

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