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"))
• GPU: nein (nur CPU-Referenzimplementierung)
Kalibriert Mittelpunkt, Abstand und Neigung des Detektors anhand der Ringe eines bekannten Standards (etwa Si).
„d_spacings“ ist eine Liste von Standardabständen [Å] (nicht unbedingt in der Reihenfolge der Stärke), „geometry_guess“ ist mindestens „Pixel“ und
„Wellenlänge“, falls bekannt, „cx“, „cy“, „Entfernung“, „Neigung“, „tilt_dir“. Schritte:
1. Wenn kein Mittelpunkt vorhanden ist, beginnen Sie am Schwerpunkt des hellen Pixels, nehmen Sie den stärksten Ring entlang des Strahls auf und aktualisieren Sie den Mittelpunkt dreimal, indem Sie den Kreis anpassen.
2. Wenn kein Abstand vorhanden ist, ordnen Sie den ersten Peak des Radialprofils den Kandidaten für d zu (vier vom kleinsten 2θ) und vergleichen Sie sie mit den Vorhersagen für die anderen Ringe. Wählen Sie das Paar mit der höchsten Anzahl übereinstimmender Beobachtungen aus.
3. Sagen Sie die Position jedes Rings auf den „n_azimuth“-Strahlen in der aktuellen Geometrie voraus, wählen Sie einen Punkt im Schwerpunkt der Intensität im Fenster aus, Verwenden Sie „scipy.optimize.least_squares“, um „(zwei Komponenten von cx, cy, Abstand, Neigung)“ mit dem 2θ-Rest [Grad] zu erraten. Fenster 4 Mal während der Kontraktion. Die Neigung wird unter Verwendung der beiden Komponenten des Rotationsvektors „Tilt·(cos φ, sin φ)“ gelöst (wobei die Singularität vermieden wird, bei der φ unbestimmt wird, wenn die Steigung 0 ist).
Rückgabewert (dict): Geometrie (cx, cy, distance, pixel, wavelength, tilt, tilt_dir)
rms_two_theta_deg・n_points・n_rings・rings_deg・ok(rms ist kleiner als 0,25·Pixel/Entfernung
und Ringe >= min_rings).
Löst ValueError aus: Bild ist nicht zweidimensional, keine Ds, keine Pixel/Wellenlängen, „min_rings“-Ringe nicht gefunden.
• 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_pxrd_phase_peel — py -3.11 examples/poc_pxrd_phase_peel.py
table als Eingabe)course_layout · course_occupancy · course_contains · world_build · world_camera · world_move · lidar_scan · rss_longitudinal_same
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.