add_metrology_object_circle_measure — MEASURE1D model op

• Datenarten: metrologymodel → scalar

• Aufruf: import fullseye as fs; fs.ledger.add_metrology_object_circle_measure(model, row, col, radius, n: 'int' = 40) -> 'int' (die Implementierung direkt: import metrology; metrology.add_metrology_object_circle_measure(model, row, col, radius, n: 'int' = 40) -> 'int'; aus dem Register: opsmeasure1d.get("add_metrology_object_circle_measure"))

Verwendung

Fügt ein Kreis-Messobjekt hinzu (add_metrology_object_circle_measure).

Legt den Referenzkreis (Mittelpunkt (row, col), Radius radius [px]) auf model["objects"] (das dict wird in place aktualisiert). apply_metrology_model setzt Punkte an die Winkel, die den Umfang in n gleiche Teile teilen, spannt an jedem Punkt radial (Außennormale) eine Messlinie, ermittelt die Subpixel- Kante und bestimmt Mittelpunkt und Radius per Kreisanpassung nach kleinsten Quadraten neu.

• radius: Referenzradius [px]. Die Abweichung vom realen Objekt muss innerhalb von measure_length des apply liegen (Standard ±6 px) -- Kanten weiter außen werden nicht gefunden.

• n: Anzahl der Abtastwerte auf dem Umfang (Standard 40). Bei Kreisen mit größerem Radius erhöhen.

• Argumente werden hier nicht validiert (ein Radius von 0 oder weniger lässt sich ablegen, ist aber bedeutungslos).

• Rückgabewert: Index der hinzugefügten Position (ab 0). params des apply-Ergebnisses ist row / col / radius, rms ist das radiale Residuum zum Kreis [px].

Für die Prüfung von Loch- und Stiftdurchmessern und zum Zentrieren runder Teile.

Wahl von n (gemessen 2026-09-15 an synthetischen Scheiben mit Unschärfe σ=1 px): Der Bias hängt nicht von n ab (konstant innerhalb ±0,005 px für R=8–128 px und n=6–240; der Bias selbst hängt über die Kantenrundung von R ab, −0,09 → −0,006 px). n ändert die Streuung: Bei Rauschen σ=0,03 bleibt std·√n konstant, solange der Stichprobenabstand 2πR/n auf dem Umfang etwa 3 px oder mehr beträgt (= unabhängige Stichproben, std ∝ 1/√n); dichter abzutasten senkt sie nicht weiter (R=16: 0,0174 px bei n=40, 0,0164 px bei n=240). Über n ≈ 2πR / 3 hinaus (40 bei R=20 = Standard, 130 bei R=64, 270 bei R=128) kostet es nur Zeit (22 ms bei n=1000). Fehlen 25 % des Umfangs, behebt mehr n den Bias nicht (−0,005 → −0,020 px). Werden auf der fehlenden Seite nur keine Kanten gefunden, sinkt rms sogar (0,051 → 0,018); werden an der Lückengrenze falsche Kanten aufgenommen, springt rms — eine Lücke ist an rms allein nicht zu sehen, daher auch die Anzahl der edge_points als Gate nehmen (examples/example_inner_diameter_mm.py). Die Abweichung des Referenzradius ist durch measure_length (Standard ±6 px) begrenzt: +5,5 px geht durch, +6,5 px ergibt params=None.

Leere Eingabe (model ein leeres dict) löst ValueError aus.

Ausführlicher Anwendungsleitfaden

• Leitfaden zur Familie subpixel_measuring

Referenzen (Beispieldaten, Literatur)

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

Ausführbare Beispiele (verifizierte Samples, die diesen Operator wirklich aufrufen)

• 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

Typkompatible Folge-Operatoren (nehmen scalar als Eingabe)

—

Gleiche Kategorie (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. Diese Notiz wird von tools/opdocs.py md erzeugt (nicht von Hand bearbeiten).*

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