caliper op• Data kinds: image2d × measurehandle → table
• Call: import fullseye as fs; fs.ledger.fuzzy_measure_pairing(image, measure, sigma=1.0, threshold=0.1, pair_size=None) (to call the implementation directly, import measuring1d; measuring1d.fuzzy_measure_pairing(image, measure, sigma=1.0, threshold=0.1, pair_size=None); from the registry, opsmeasure1d.get("fuzzy_measure_pairing"))
Selects the edge pair that best matches a fuzzy criterion (expected width pair_size) (fuzzy_measure_pairing).
Procedure: measure_pairs(image, measure, sigma, threshold) takes pairs of adjacent edges of opposite polarity, attaches fuzzy_score = exp(-((width - pair_size) / (0.5 pair_size))^2) to each pair, and sorts them in descending score order. Exactly the expected width gives 1; a width off by ±0.5 pair_size gives e^-1 ≈ 0.37. The first element is the best-matching pair.
• image: 2-D float (grey values in the input's units).
• measure: dict from gen_measure_rectangle2 / gen_measure_arc.
• sigma: smoothing σ of the profile [samples]. threshold: minimum |grey difference| of edges to accept (image units).
• pair_size: expected width [px]. With None, no sorting and no scoring; the result of measure_pairs (in order along the measuring line) is returned as is. 0 and negative values are not validated (with 0 the denominator becomes 1e-9 and the scores of all pairs collapse to nearly 0 or 1).
• Returns: list of pair dicts (type table). Each dict has first / second (sample index), width [px], first_point / second_point ((row, col)), first_amplitude / second_amplitude, fuzzy_score. If there is not even 1 pair, an empty list (no exception).
To cut by a lower/upper bound on the width, filter this result by width yourself (this op only ranks; it does not exclude by a threshold).
• subpixel_measuring family guide
• 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_calipers_under_illusion — py -3.11 examples/poc_calipers_under_illusion.py
• poc_dimensional_inspection — py -3.11 examples/poc_dimensional_inspection.py
table as input)—
caliper)gen_measure_rectangle2 · gen_measure_arc · translate_measure · measure_pos · measure_pairs
*Provenance: measuring1d.py — MEASURE1D 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.