measure op• Datenarten: labels2d → table
• Aufruf: import fullseye as fs; fs.ledger.blob_features(labels: 'Any', spacing: 'float' = 1.0) -> 'dict' (die Implementierung direkt: import blob2d; blob2d.blob_features(labels: 'Any', spacing: 'float' = 1.0) -> 'dict'; aus dem Register: opsblob.get("blob_features"))
• GPU: nein (nur CPU-Referenzimplementierung)
Gibt die Formmerkmale jedes Objekts als 1 Array pro Schlüssel zurück.
labels : array_like
Ausgabe von blob_label (Ganzzahlen, Hintergrund 0).
spacing : float
Größe von 1 Pixel [Einheit/px]. Längen werden damit multipliziert, Flächen mit seiner 2. Potenz.
Standard 1.0 = bleibt in Pixeln.
dict
n (Anzahl der Objekte = Anzahl der tatsächlich vorhandenen Labels), spacing, units (Zuordnung Merkmal → Einheit) sowie
19 Arrays der Länge n (FEATURE_KEYS). Auch bei 0 Objekten
sind alle Schlüssel mit leeren Arrays vorhanden (der Aufrufer muss nicht verzweigen). Haben die Labels Lücken,
ist n kleiner als labels.max() -- Objekte über die Spalte f["label"] nachschlagen
(f["area"][label - 1] verschiebt sich hinter einer Lücke).
• angle ist die Neigung im Matrixkoordinatensystem (+Spalte → +Zeile ist positiv = auf dem Bildschirm im Uhrzeigersinn).
• major / minor sind die Achslängen der Ellipse mit denselben Momenten 2. Ordnung (4 sqrt(lambda)). Es ist nicht die umschließende Ausdehnung der Pixelanordnung, daher fällt sie bei einem Quadrat etwas länger als die Seitenlänge aus -- das entspricht der Definition und ist kein Fehler.
• circularity ist 4 pi A / P^2 auf 1 begrenzt (bei Objekten aus wenigen Pixeln fällt die Umfangsschätzung im Verhältnis zur Fläche zu kurz aus und der Wert überschreitet 1 -- 1.75 bei einem 1-Pixel-Fleck --, doch keine Form ist runder als ein Kreis). HALCONs circularity ist "Fläche / Fläche des Kreises mit dem entferntesten Punkt als Radius", also etwas anderes; beim Abgleich von Werten die Definition prüfen.
• Bei Objekten mit touches_border True sind Fläche und Umfang um den abgeschnittenen Teil kleiner. Vor dem Zählen verwerfen oder die Ground-Truth-Seite nach derselben Konvention zählen.
>>> 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)
• Leitfaden zur Familie blob_analysis
• Katalog der Beispieldaten (Download-URLs / Lizenzen) — 2-D nutzt skimage.data (BSD/Public Domain) plus synthetische Bilder, 3-D nennt Download-URLs echter Datenquellen (Stanford, PDS, …).
• Herkunft und Literatur der Operatoren — die Quellen der Forschung/Verfahren, auf denen diese Operatorfamilie beruht.
• Der kanonische Algorithmus (Autor, Jahr) und seine Anwendungen stehen im Familienleitfaden oben.
• 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 als Eingabe)—
measure)—
*Provenance: blob2d.py — BLOB Operator-Registry. Diese Notiz wird von tools/opdocs.py md erzeugt (nicht von Hand bearbeiten).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.