measure op• Data kinds: labels2d → table
• Call: import fullseye as fs; fs.ledger.blob_features(labels: 'Any', spacing: 'float' = 1.0) -> 'dict' (implementation को सीधे call करना हो तो import blob2d; blob2d.blob_features(labels: 'Any', spacing: 'float' = 1.0) -> 'dict', registry से लेना हो तो opsblob.get("blob_features"))
• GPU: नहीं (केवल CPU reference implementation)
हर object के shape feature हर key के लिए 1 array के रूप में लौटाता है।
labels : array_like
blob_label का output (integer, background 0)।
spacing : float
1 pixel का आकार [इकाई/px]। लंबाई को इससे, क्षेत्रफल को इसकी 2 घात से गुणा किया जाता है।
default 1.0 = pixel में ही ।
dict
n (वस्तुओं की संख्या = वास्तव में मौजूद labels की संख्या), spacing, units (item → इकाई का मेल), और
लंबाई n के 19 arrays (FEATURE_KEYS)। वस्तुएँ 0 हों तब भी
सभी keys खाली arrays के साथ लौटती हैं (caller को branch नहीं करना पड़ता)। labels में अंतराल हों तो
n labels.max() से छोटा होता है -- वस्तुओं को f["label"] column से खोजें
(f["area"][label - 1] अंतराल के बाद खिसक जाता है)।
• angle matrix coordinate system का झुकाव है (+column → +row धनात्मक = screen पर clockwise)।
• major / minor समान 2nd-order moments वाले ellipse की axis लंबाई हैं (4 sqrt(lambda))। यह pixels की व्यवस्था का बाहरी घेरा नहीं है, इसलिए square के लिए भुजा की लंबाई से थोड़ा लंबा आता है -- यह definition के अनुसार है, त्रुटि नहीं।
• circularity 4 pi A / P^2 को 1 पर सीमित करके लिया गया मान है (कुछ pixels की वस्तुओं में परिधि का अनुमान क्षेत्रफल की तुलना में छोटा आता है और अनुपात 1 से ऊपर जाता है -- 1-pixel blob में 1.75 -- पर वृत्त से गोल कोई आकार नहीं)। HALCON का circularity "क्षेत्रफल / सबसे दूर के point को radius मानकर बने circle का क्षेत्रफल" है, यानी अलग चीज़, इसलिए मानों की तुलना करते समय definition जाँच लें।
• touches_border True वाली वस्तुओं का क्षेत्रफल और परिधि दोनों कटे हुए हिस्से जितने छोटे होते हैं। गिनने से पहले इन्हें छोड़ दें, या ground truth की ओर भी इसी परंपरा से गिनें।
>>> import numpy as np
>>> m = np.zeros((20, 20), bool); m[4:14, 4:9] = True
>>> f = blob_features(blob_label(m))
>>> int(f["n"]), float(f["area"][0])
(1, 50.0)
• 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 में दिए गए हैं।
• poc_am_thermal_to_ct — py -3.11 examples/poc_am_thermal_to_ct.py
• poc_bone_trabecular_thickness — py -3.11 examples/poc_bone_trabecular_thickness.py
• poc_bump_coplanarity — py -3.11 examples/poc_bump_coplanarity.py
• poc_dense_bubble_count — py -3.11 examples/poc_dense_bubble_count.py
• poc_fresco_craquelure — py -3.11 examples/poc_fresco_craquelure.py
• poc_gear_tooth_metrology — py -3.11 examples/poc_gear_tooth_metrology.py
• poc_leaf_disease_area — py -3.11 examples/poc_leaf_disease_area.py
• poc_metal_grain_size — py -3.11 examples/poc_metal_grain_size.py
• poc_nuclei_ploidy — py -3.11 examples/poc_nuclei_ploidy.py
• poc_particle_sizing — py -3.11 examples/poc_particle_sizing.py
• poc_particle_tracking — py -3.11 examples/poc_particle_tracking.py
• poc_peg_insertion_tactile — py -3.11 examples/poc_peg_insertion_tactile.py
• poc_print_warpage_risk — py -3.11 examples/poc_print_warpage_risk.py
• poc_pv_thermal_survey — py -3.11 examples/poc_pv_thermal_survey.py
• poc_real_coin_metrology — py -3.11 examples/poc_real_coin_metrology.py
• poc_real_sem_metal_layer — py -3.11 examples/poc_real_sem_metal_layer.py
• poc_rotation_invariance_audit — py -3.11 examples/poc_rotation_invariance_audit.py
• poc_sea_ice_concentration — py -3.11 examples/poc_sea_ice_concentration.py
• poc_sem_wafer_defect_edge_bias — py -3.11 examples/poc_sem_wafer_defect_edge_bias.py
• poc_solar_el_inspection — py -3.11 examples/poc_solar_el_inspection.py
• poc_solder_fillet_aoi — py -3.11 examples/poc_solder_fillet_aoi.py
• poc_traffic_counting — py -3.11 examples/poc_traffic_counting.py
• poc_vessel_network — py -3.11 examples/poc_vessel_network.py
• poc_weld_radiograph_porosity — py -3.11 examples/poc_weld_radiograph_porosity.py
• poc_wound_area_tracking — py -3.11 examples/poc_wound_area_tracking.py
table को input के रूप में लेते हैं)—
measure)—
*Provenance: blob2d.py — BLOB operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.