contour opimage2d × mask → tableimport 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]' (実装を直接呼ぶなら 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]'、台帳から引くなら opssegmentation.get("chan_vese_energy"))| Chan–Vese 2001 のエネルギー F = μ Length + ν Area(inside) + λ1 ∫_in | I − c1 | ² + λ2 ∫_out | I − c2 | ²(2 相)。 |
phi は φ(内側 φ < 0)か bool のマスク(符号付き距離に直す)。正則化: 内側の重み H_ε(−φ)(論文の arctan 版)、
長さ = Σ δ_ε(φ) |Dφ|_η(前進差分、|Dφ|_η = √(D_x² + D_y² + η²))。c1 / c2 = 内 / 外の H_ε で重みづけた平均(式 (6)(7))。
同じマスクの「鋭い」版(energy_sharp)も返す: 長さ = 4 近傍で内外が変わる辺の数、内外は φ < 0 で 0/1。
返り値: energy、length、area、fit_inside / fit_outside、c1 / c2(H_ε で重みづけた平均 ——
ε = 1 の arctan は裾が長いので 2 値の画像でも 0/1 から離れる)、energy_sharp、perimeter_sharp、
c1_sharp / c2_sharp(φ < 0 の内外の平均)。
py -3.11 examples/gallery_seg_measures.pytable を入力に取れる)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. この per-op ノートは tools/opdocs.py md が自動生成(手編集しない)。
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.