graph op• データ種: image2d → table
• 呼び出し: import 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 = 物体の種(Boykov–Jolly の K = 1 + max_p Σ_q λ w_pq で硬く縛る、エネルギーには数えない)。
返す: `mask(物体 = True)、energy = data + smooth、cut_value / flow_value`(実数に戻した値 = 整数の値 / scale +
定数)と `cut_value_int / flow_value_int(最大フロー = 最小カットの門)、quantization_bound`(整数化による実数の
最小との差の上界、整数の入力なら 0)。
• halcon_segmentation ファミリ ガイド
• graph_hierarchy_and_thresholds — グラフ・階層・閾値の定理でつくる分割 — 何が厳密で、どこで割れ方が倒れるか
• サンプルデータ カタログ(DL URL / ライセンス) — 2-D は skimage.data(BSD/public)+ 合成、3-D は実データ源(Stanford/PDS 等)の DL URL。
• 演算子の来歴・参考文献 — この op 族の元になった研究/手法の出典。
• アルゴリズムの正典(著者・年)と用途は上記ファミリ使い方ガイドに記載。
• poc_graph_hierarchy_segmentation — py -3.11 examples/poc_graph_hierarchy_segmentation.py
table を入力に取れる)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.