graph opimage2d → tableimport fullseye as fs; fs.ledger.graph_cut_binary(image, *, lam: 'float' = 1.0, mu_bg: 'Optional[float]' = None, mu_fg: 'Optional[float]' = None, contrast_sigma: 'Optional[float]' = None, seeds=None, connectivity: 'int' = 4) -> 'Dict[str, object]' (実装を直接呼ぶなら import seggraph; seggraph.graph_cut_binary(image, *, lam: 'float' = 1.0, mu_bg: 'Optional[float]' = None, mu_fg: 'Optional[float]' = None, contrast_sigma: 'Optional[float]' = None, seeds=None, connectivity: 'int' = 4) -> 'Dict[str, object]'、台帳から引くなら opssegmentation.get("graph_cut_binary"))2 値の graph cut(Boykov–Jolly 2001): E = Σ_p D_p(x_p) + λ Σ w_pq [x_p ≠ x_q] を最大フロー / 最小カットで厳密に最小化。
データ項は D_p(0) = (I_p − μ_bg)²、D_p(1) = (I_p − μ_fg)²(μ を省くと isodata の 2 群の平均)。辺の重みは
w_pq = exp(−(I_p − I_q)²/(2σ²)) / dist(p, q)(contrast_sigma = σ、省くと 1/dist = Potts)。seeds は labels2d で
1 = 背景の種、2 = 物体の種。拘束重みは 1 + max_p Σ_q λ w_pq + max_p |D_p(0)-D_p(1)|
で、自由画素のデータ項差も超える(エネルギーには数えない)。
返す: mask(物体 = True)、energy = data + smooth、cut_value / flow_value(実数に戻した値 = 整数の値 / scale +
定数)と cut_value_int / flow_value_int(最大フロー = 最小カットの門)、quantization_bound(整数化による実数の
最小との差の上界、整数の入力なら 0)。
py -3.11 examples/poc_graph_hierarchy_segmentation.pytable を入力に取れる)class_ndim_norm · fisher_lda_score
graph)alpha_expansion · statistical_region_merging · max_tree · area_opening_attr · quasi_flat_zones · alpha_tree · hierarchical_watershed · ultrametric_contour_map
Provenance: seggraph.py — SEGMENTATION operator registry. この per-op ノートは tools/opdocs.py md が自動生成(手編集しない)。
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.