inject op• Data kinds: labels2d × labels2d → table
• Call: import fullseye as fs; fs.ledger.seg_label_changes(before, after, min_pixels: 'int' = 1, ignore_zero: 'bool' = True) -> 'dict' (to call the implementation directly, import emproof; emproof.seg_label_changes(before, after, min_pixels: 'int' = 1, ignore_zero: 'bool' = True) -> 'dict'; from the registry, opsemproof.get("seg_label_changes"))
• GPU: none (CPU reference implementation only)
Returns the difference between two label images as pairs of merges and splits (before vs. after calibration, or checking planted errors against the answer).
Counts pairs where label b of before and label a of after share at least min_pixels of the same pixels;
• merge = 1 label of after covers 2 or more labels of before → merge_after / merge_before (1 row per pair; the id of the absorbing side itself is also listed as 1 of the before labels)
• split = 1 label of before breaks into 2 or more labels of after → split_before / split_after (likewise the id of the remaining side is also listed)
n_merged / n_split are the number of errors (counted by ids on the after side / before side). Id equality is not checked (it also works on 2 images whose labels were renumbered).
>>> ch = seg_label_changes(truth, seg_inject_merge(truth))
>>> int(ch["n_merged"])
1
• 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.
• poc_em_second_opinion — py -3.11 examples/poc_em_second_opinion.py
• poc_em_split_merge_score — py -3.11 examples/poc_em_split_merge_score.py
table as input)seg_synapse_partners · seg_wiring_variation · seg_synapse_nri · seg_wiring_exposure
inject)seg_inject_merge · seg_inject_split
*Provenance: emproof.py — EMPROOF 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.