caliper op• データ種: image2d × measurehandle → table
• 呼び出し: import fullseye as fs; fs.ledger.fuzzy_measure_pairing(image, measure, sigma=1.0, threshold=0.1, pair_size=None) (実装を直接呼ぶなら import measuring1d; measuring1d.fuzzy_measure_pairing(image, measure, sigma=1.0, threshold=0.1, pair_size=None)、台帳から引くなら opsmeasure1d.get("fuzzy_measure_pairing"))
ファジィ基準(想定幅 pair_size)に最も合うエッジ対を選ぶ(fuzzy_measure_pairing)。
手順: `measure_pairs(image, measure, sigma, threshold)` で極性の異なる隣接
エッジの対を取り、各対に ``fuzzy_score = exp(-((width - pair_size) /
(0.5 pair_size))^2)`` を付けて スコア降順に並べ替える。想定幅ちょうどで 1、
幅が `±0.5 pair_size ずれると e^-1` ≈ 0.37。先頭要素が最も合う対。
• `image`: 2-D float(グレー値の単位は入力のまま)。
• `measure: gen_measure_rectangle2 / gen_measure_arc` の dict。
• `sigma: プロファイルの平滑化 σ [サンプル]。threshold`: 採用するエッジの
最小 |グレー差|(画像の単位)。
• `pair_size: 想定幅 [px]。None` なら並べ替えもスコア付けもせず
`measure_pairs` の結果(測定線に沿った順)をそのまま返す。0 や負は検証
しない(0 だと分母が 1e-9 になり全対のスコアがほぼ 0 か 1 に潰れる)。
• 返り値: 対の dict の list(`table 型)。各 dict は first / second`
(サンプル index)、`width [px]、first_point / second_point`
(`(row, col))、first_amplitude / second_amplitude、fuzzy_score`。
対が 1 つも無ければ空 list(例外にはしない)。
幅の下限・上限で切りたい場合はこの結果を `width` で自分でフィルタする
(この op は順位付けだけで、閾での除外はしない)。
• サンプルデータ カタログ(DL URL / ライセンス) — 2-D は skimage.data(BSD/public)+ 合成、3-D は実データ源(Stanford/PDS 等)の DL URL。
• 演算子の来歴・参考文献 — この op 族の元になった研究/手法の出典。
• アルゴリズムの正典(著者・年)と用途は上記ファミリ使い方ガイドに記載。
• poc_dimensional_inspection — py -3.11 examples/poc_dimensional_inspection.py
table を入力に取れる)—
caliper)gen_measure_rectangle2 · gen_measure_arc · translate_measure · measure_pos · measure_pairs
*Provenance: measuring1d.py — MEASURE1D operator registry. この per-op ノートは tools/opdocs.py md が自動生成(手編集しない)。*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.