chan_vese_energy — SEGMENTATION 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"))

Usage

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

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)

• (none yet)

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

class_ndim_norm

Same category (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.