contour opimage2d × mask → tableimport 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]' (実装を直接呼ぶなら 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]'、台帳から引くなら opssegmentation.get("drle_evolve"))距離正則化レベルセット DRLSE(Li–Xu–Gui–Fox 2010)のエッジ版。再初期化しない。
φ_t = μ div(d_p(|∇φ|)∇φ) + λ δ_ε(φ) div(g ∇φ/|∇φ|) + α g δ_ε(φ)(φ < 0 が内側、α > 0 で縮む)。
d_p(s) = p’(s)/s。二重井戸 p2(s) = (1 − cos 2πs)/(2π)²(s ≤ 1)、(s − 1)²/2(s ≥ 1)、単井戸 p1(s) = (s − 1)²/2。
初期 = 2 値の段差(内側 −c0、外側 +c0、Li の例と同じ)。g = edge_stop_g(image, sigma, k) の g(g で直接与えても
よい)。μ の既定は 0.2/dt、CFL 条件 μ dt < 1/4 を満たさなければ ValueError。境界は Li のコードの Neumann。
エネルギー ε(φ) = μ Σ p(|∇φ|) + λ Σ g δ_ε(φ)|∇φ| + α Σ g H_ε(−φ) も各反復で記録する(実測、門ではない)。
返り値: mask(φ < 0)、phi、grad(|φ| ≤ ε の |∇φ| 分位点)、grad_trace(record_every ごとの中央値)、
energy、n_increase、history、n_iter。
py -3.11 examples/poc_active_contours.pytable を入力に取れる)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. この per-op ノートは tools/opdocs.py md が自動生成(手編集しない)。
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.