contour op• Data kinds: image2d × mask → table
• Call: import fullseye as fs; fs.ledger.chan_vese_energy(image, phi, *, mu: 'float' = 0.1, nu: 'float' = 0.0, lambda1: 'float' = 1.0, lambda2: 'float' = 1.0, eps: 'float' = 1.0, eta: 'float' = 0.1) -> 'Dict[str, float]' (to call the implementation directly, import segcontour; segcontour.chan_vese_energy(image, phi, *, mu: 'float' = 0.1, nu: 'float' = 0.0, lambda1: 'float' = 1.0, lambda2: 'float' = 1.0, eps: 'float' = 1.0, eta: 'float' = 0.1) -> 'Dict[str, float]'; from the registry, opssegmentation.get("chan_vese_energy"))
Chan–Vese 2001 energy F = μ Length + ν Area(inside) + λ1 ∫_in |I − c1|² + λ2 ∫_out |I − c2|² (two-phase) (chan_vese_energy).
phi is φ (inside φ < 0) or a bool mask (converted to a signed distance). Regularisation: inside weight H_ε(−φ) (the paper's arctan version), length = Σ δ_ε(φ) |Dφ|_η (forward differences, |Dφ|_η = √(D_x² + D_y² + η²)). c1 / c2 = inside / outside means weighted by H_ε (eqs. (6)(7)). A "sharp" version of the same mask (energy_sharp) is also returned: length = number of 4-neighbourhood edges where inside/outside changes, inside/outside is 0/1 by φ < 0.
Returns: energy, length, area, fit_inside / fit_outside, c1 / c2 (means weighted by H_ε — the arctan with ε = 1 has long tails, so even for a 2-valued image they deviate from 0/1), energy_sharp, perimeter_sharp, c1_sharp / c2_sharp (inside/outside means by φ < 0).
• halcon_segmentation family guide
• active_contours_and_level_sets — Variational and active contours, level sets — which contour stops where, and what it guarantees
• 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.
• (none yet)
table as input)contour)snake_evolve · gvf_field · 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.