add_metrology_object_circle_measure — MEASURE1D model op

• Data kinds: metrologymodel → scalar

• Call: import fullseye as fs; fs.ledger.add_metrology_object_circle_measure(model, row, col, radius, n: 'int' = 40) -> 'int' (implementation को सीधे call करना हो तो import metrology; metrology.add_metrology_object_circle_measure(model, row, col, radius, n: 'int' = 40) -> 'int', registry से लेना हो तो opsmeasure1d.get("add_metrology_object_circle_measure"))

उपयोग

circle metrology object जोड़ता है (add_metrology_object_circle_measure)।

reference circle (केंद्र (row, col), radius radius [px]) को model["objects"] पर जमा करता है (dict in place update होती है)। apply_metrology_model परिधि को n बराबर भागों में बाँटने वाले कोणों पर points रखता है, हर point पर radius की दिशा में (बाहरी normal) measuring line खींचकर sub-pixel edge लेता है, और least squares circle fit से केंद्र और radius फिर से निकालता है।

• radius: reference radius [px]। असली वस्तु से हटाव apply के measure_length (default ±6 px) के भीतर होना चाहिए -- उससे बाहर के edges नहीं मिलते।

• n: परिधि पर samples की संख्या (default 40)। radius जितना बड़ा, उतना बढ़ाएँ।

• arguments यहाँ validate नहीं होते (0 या कम radius भी जमा हो सकता है पर उसका कोई अर्थ नहीं)।

• return value: जोड़ी गई position का index (0 से शुरू)। apply परिणाम का params row / col / radius है, और rms circle से radius दिशा का residual [px] है।

छेद के व्यास और pin के व्यास की जाँच, और गोल पुर्ज़ों का केंद्र निकालने में इस्तेमाल होता है।

n चुनने का अनुमान (2026-09-15 को मापा गया, σ=1 px blur वाली synthetic discs): bias n पर निर्भर नहीं करता (R=8–128 px, n=6–240 पर ±0.005 px के भीतर स्थिर; bias खुद edge की गोलाई के कारण R पर निर्भर है, −0.09 → −0.006 px)। n केवल बिखराव बदलता है: noise σ=0.03 पर, जब तक परिधि पर sample spacing 2πR/n लगभग 3 px या अधिक है, std·√n स्थिर रहता है (= स्वतंत्र samples, std ∝ 1/√n), और घना करने पर भी नहीं घटता (R=16: n=40 पर 0.0174, n=240 पर 0.0164 px)। इसलिए n ≈ 2πR / 3 (R=20 पर 40 = default, R=64 पर 130, R=128 पर 270) से आगे बढ़ाने पर केवल समय बढ़ता है (n=1000 पर 22 ms)। परिधि का 25 % गायब हो तो n बढ़ाने से bias ठीक नहीं होता (−0.005 → −0.020 px)। गायब तरफ़ edges बस न मिलें तो rms उल्टा घटता है (0.051 → 0.018); gap की सीमा पर नकली edges उठें तो rms उछलता है —— gap केवल rms से नहीं दिखता, इसलिए edge_points की संख्या को भी gate बनाएँ (examples/example_inner_diameter_mm.py)। reference radius का हटाव measure_length (default ±6 px) तक सीमित है: +5.5 px पास होता है, +6.5 px पर params=None।

खाली इनपुट (model खाली dict) पर ValueError उठता है।

उपयोग की विस्तृत guide

• subpixel_measuring family guide

संदर्भ (sample data, साहित्य)

• Sample data catalog (DL URL / license) — 2-D के लिए skimage.data (BSD/public) + synthetic, 3-D के लिए real data sources (Stanford/PDS आदि) के DL URL।

• Operators का स्रोत और संदर्भ — इस op family के मूल research/methods के स्रोत।

• Algorithm का मानक स्रोत (लेखक, वर्ष) और उपयोग ऊपर की family usage guide में दिए गए हैं।

चलाए जा सकने वाले उदाहरण (verified samples जो सच में यह op call करते हैं)

• example_inner_diameter_mm — py -3.11 examples/example_inner_diameter_mm.py

• poc_calipers_under_illusion — py -3.11 examples/poc_calipers_under_illusion.py

• poc_dimensional_inspection — py -3.11 examples/poc_dimensional_inspection.py

• poc_telecentric_metrology — py -3.11 examples/poc_telecentric_metrology.py

वे अगले ops जिनसे type जुड़ता है (scalar को input के रूप में लेते हैं)

—

इसी category के (model)

create_metrology_model · add_metrology_object_line_measure · add_metrology_object_rectangle2_measure · add_metrology_object_ellipse_measure · add_metrology_object_generic


*Provenance: metrology.py — MEASURE1D operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.