seg_object_counts_match — SEGMENTATION score op

• Data kinds: labels2d × labels2d → table

• Call: import fullseye as fs; fs.ledger.seg_object_counts_match(labels_pred, labels_true, *, background: 'int' = 0, min_overlap: 'float' = 0.5) -> 'Dict[str, object]' (to call the implementation directly, import segeval; segeval.seg_object_counts_match(labels_pred, labels_true, *, background: 'int' = 0, min_overlap: 'float' = 0.5) -> 'Dict[str, object]'; from the registry, opssegmentation.get("seg_object_counts_match"))

Usage

Object-count agreement: counts split / merged / missed / false / matched from the degrees of a 'mainly overlapping' bipartite graph (seg_object_counts_match).

Condition for placing an edge between true i and prediction j (both non-background) = overlap n_ij ≥ min_overlap × min(|i|, |j|) (the smaller one lies mainly inside the other). With true degree d_i and predicted degree e_j:

missed = #{d_i = 0}, false = #{e_j = 0}, split = #{d_i ≥ 2} (1 true object split into several predictions), merged = #{e_j ≥ 2} (1 prediction swallowed several true objects), matched = #{d_i = 1 and its partner has e_j = 1}. counts_match = the numbers of true and predicted objects are equal and all match. With min_overlap > 0.5 each prediction "lies mainly inside" at most 1 true object, but there are also edges with a small true object and a large prediction, so merges can still be detected.

Returns: the counts above + n_true / n_pred, edges (true label, predicted label) as (m, 2), split_true / merged_pred / missed_true / false_pred (label arrays), min_overlap.

Detailed usage guide

• halcon_segmentation family guide

Background guides (the physics and conventions behind this op)

• segmentation_scoring_and_worlds — Scoring segmentations and synthetic worlds with ground truth — which metric is blind to which failure

References (sample data, literature)

• 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.

Runnable examples (verified samples that actually call this op)

• poc_graph_hierarchy_segmentation — py -3.11 examples/poc_graph_hierarchy_segmentation.py

Ops the type connects to (they accept table as input)

class_ndim_norm

Same category (score)

seg_confusion_table · seg_dice_jaccard · seg_boundary_f · seg_hausdorff · seg_mean_surface_distance · seg_under_over_segmentation · 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.