drle_evolve — SEGMENTATION contour op

• Data kinds: image2d × mask → table

• Call: import fullseye as fs; fs.ledger.drle_evolve(image, init, *, mu: 'Optional[float]' = None, lambda_: 'float' = 5.0, alpha: 'float' = 1.5, epsilon: 'float' = 1.5, dt: 'float' = 1.0, sigma: 'float' = 1.5, k: 'float' = 0.00392156862745098, g=None, n_iter: 'int' = 300, c0: 'float' = 2.0, potential: 'str' = 'double_well', record_every: 'int' = 0) -> 'Dict[str, object]' (to call the implementation directly, import segcontour; segcontour.drle_evolve(image, init, *, mu: 'Optional[float]' = None, lambda_: 'float' = 5.0, alpha: 'float' = 1.5, epsilon: 'float' = 1.5, dt: 'float' = 1.0, sigma: 'float' = 1.5, k: 'float' = 0.00392156862745098, g=None, n_iter: 'int' = 300, c0: 'float' = 2.0, potential: 'str' = 'double_well', record_every: 'int' = 0) -> 'Dict[str, object]'; from the registry, opssegmentation.get("drle_evolve"))

Usage

Edge-based distance-regularized level set evolution DRLSE (Li–Xu–Gui–Fox 2010). No re-initialisation (drle_evolve).

φ_t = μ div(d_p(|∇φ|)∇φ) + λ δ_ε(φ) div(g ∇φ/|∇φ|) + α g δ_ε(φ) (φ < 0 is inside, α > 0 shrinks). d_p(s) = p'(s)/s. Double well p2(s) = (1 − cos 2πs)/(2π)² (s ≤ 1), (s − 1)²/2 (s ≥ 1); single well p1(s) = (s − 1)²/2. Initial = a 2-valued step (inside −c0, outside +c0, as in Li's example). g = the g of edge_stop_g(image, sigma, k) (it may also be given directly via g). The default μ is 0.2/dt; if the CFL condition μ dt < 1/4 is not satisfied, ValueError. Boundary is the Neumann of Li's code. The energy ε(φ) = μ Σ p(|∇φ|) + λ Σ g δ_ε(φ)|∇φ| + α Σ g H_ε(−φ) is also recorded at each iteration (measured, not a gate).

Returns: mask (φ < 0), phi, grad (quantiles of |∇φ| where |φ| ≤ ε), grad_trace (median every record_every), energy, n_increase, history, n_iter.

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.