detector_calibrate — DRIVE pxrd op

• Datenarten: image2d × signal × table → table

• Aufruf: import fullseye as fs; fs.ledger.detector_calibrate(image, d_spacings, geometry_guess, n_azimuth=180, fit_tilt=True, min_rings=2) (die Implementierung direkt: import pxrd; pxrd.detector_calibrate(image, d_spacings, geometry_guess, n_azimuth=180, fit_tilt=True, min_rings=2); aus dem Register: opsdrive.get("detector_calibrate"))

Verwendung

Kalibriert Mittelpunkt, Abstand und Neigung des Detektors anhand der Ringe eines bekannten Standards (etwa Si).

d_spacings ist eine list der Netzebenenabstände des Standards [Å] (muss nicht nach Stärke sortiert sein); geometry_guess enthält mindestens pixel und

wavelength, und, falls bekannt, cx, cy, distance, tilt, tilt_dir. Vorgehen:

1. Fehlt der Mittelpunkt, wird vom Schwerpunkt der hellen Pixel ausgegangen, der stärkste Ring entlang von Strahlen abgetastet und der Mittelpunkt dreimal per Kreisanpassung aktualisiert.

2. Fehlt der Abstand, wird der erste Peak des radialen Profils den d-Kandidaten (4 Stück ab kleinem 2θ) zugeordnet, und die Kombination gewählt, bei der die Vorhersagen der anderen Ringe am häufigsten mit beobachteten Peaks übereinstimmen.

3. Mit der aktuellen Geometrie wird die Lage jedes Rings auf n_azimuth Strahlen vorhergesagt, Punkte über den Intensitätsschwerpunkt im Fenster abgetastet und mit scipy.optimize.least_squares (cx, cy, distance, tilt の 2 成分) an die 2θ-Residuen [deg] angepasst. Dreimal mit schrumpfendem Fenster. Die Neigung wird über die 2 Komponenten des Rotationsvektors tilt·(cos φ, sin φ) gelöst (vermeidet die Singularität, bei der φ für Neigung 0 unbestimmt ist).

Rückgabe (dict): die Geometrie (cx, cy, distance, pixel, wavelength, tilt, tilt_dir) ergänzt um

rms_two_theta_deg, n_points, n_rings, rings_deg, ok (rms kleiner als der Winkel eines Viertelpixels 0.25·pixel/distance

und Ringe >= min_rings).

Raises ValueError: Bild nicht 2-D, kein einziges d, pixel / wavelength fehlen, weniger als min_rings Ringe gefunden.

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)

• poc_pxrd_phase_peel — py -3.11 examples/poc_pxrd_phase_peel.py

Typkompatible Folge-Operatoren (nehmen table als Eingabe)

course_layout · course_occupancy · course_contains · world_build · world_camera · world_move · lidar_scan · rss_longitudinal_same

Gleiche Kategorie (pxrd)

cif_read · cubic_prototype · powder_reflections · scherrer_size · debye_ring_image · detector_two_theta · azimuthal_integrate · diffraction_peaks


*Provenance: pxrd.py — DRIVE 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.