score op• Data kinds: labels2d × labels2d → table
• Call: import fullseye as fs; fs.ledger.seg_confusion_table(labels_pred, labels_true, *, background: 'int' = 0) -> 'Dict[str, object]' (to call the implementation directly, import segeval; segeval.seg_confusion_table(labels_pred, labels_true, *, background: 'int' = 0) -> 'Dict[str, object]'; from the registry, opssegmentation.get("seg_confusion_table"))
Label-correspondence contingency table (rows = truth, columns = prediction) with max-overlap matching and a uniqueness flag (seg_confusion_table).
table[i, j] = number of pixels that carry both the true label labels_true[i] and the predicted label labels_pred[j]. Correspondence is by maximum overlap: the partner of true i = among the non-background columns, the one where table[i, :] is largest (pred_of_true, a label value, −1 if none); the partner of prediction j = the largest non-background row (true_of_pred). mutual_true[i] = the partner of true i picks true i back, mutual_pred[j] likewise. claims[j] = number of true objects that chose prediction j as partner. unique_matching = all non-background rows and columns choose each other mutually (= a 1-to-1 bijection). Background rows and columns stay in the table but are excluded from the correspondence. It is argmax, not Hungarian (assignment maximising the sum), so several true objects may pick 1 large prediction — that is what claims ≥ 2 signals.
Returns: table, labels_true / labels_pred (label values of rows and columns), row_sums / col_sums, pred_of_true / true_of_pred, mutual_true / mutual_pred, claims, unique_matching, n_true / n_pred (counts excluding background), n.
• halcon_segmentation family guide
• segmentation_scoring_and_worlds — Scoring segmentations and synthetic worlds with ground truth — which metric is blind to which failure
• 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.
• (none yet)
table as input)score)seg_dice_jaccard · seg_boundary_f · seg_hausdorff · seg_mean_surface_distance · seg_under_over_segmentation · seg_object_counts_match · seg_score_card
*Provenance: segeval.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.