blob_features — BLOB measure op

• Data kinds: labels2d → table

• Call: import fullseye as fs; fs.ledger.blob_features(labels: 'Any', spacing: 'float' = 1.0) -> 'dict' (to call the implementation directly, import blob2d; blob2d.blob_features(labels: 'Any', spacing: 'float' = 1.0) -> 'dict'; from the registry, opsblob.get("blob_features"))

Usage

Returns the shape features of each object as 1 array per key.

Parameters

labels : array_like

Output of blob_label (integers, background 0).

spacing : float

Size of 1 pixel [unit/px]. Lengths are multiplied by it, areas by its 2nd power.

Default 1.0 = stays in pixels.

Returns

dict

n (number of objects), spacing, units (mapping item → unit), and

19 arrays of length n (FEATURE_KEYS). Even with 0 objects,

all keys are present with empty arrays (so the caller need not branch).

Notes

• angle is the tilt in the matrix coordinate system (+column → +row is positive = clockwise on screen).

• major / minor are the axis lengths of the ellipse with the same 2nd-order moments (4 sqrt(lambda)). It is not the bounding extent of the pixel arrangement, so for a square it comes out slightly longer than the side -- this is as defined, not an error.

• circularity is 4 pi A / P^2. HALCON's circularity is "area / area of the circle whose radius is the farthest point", a different thing, so when comparing values, check the definition.

• Objects with touches_border True have both area and perimeter smaller by the cut-off part. Discard them before counting, or count the ground-truth side by the same convention.

Examples

>>> 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)

Detailed usage guide

• blob_analysis family guide

References (sample data, literature)

• 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.

Runnable examples (verified samples that actually call this op)

• 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_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_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_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

Ops the type connects to (they accept table as input)

—

Same category (measure)

—


*Provenance: blob2d.py — BLOB 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.