photometry op• Datenarten: image2d × keypoints → table
• Aufruf: import fullseye as fs; fs.ledger.psf_fit(image, centers, model='gaussian', box=11, max_iter=200) (die Implementierung direkt: import astrostack; astrostack.psf_fit(image, centers, model='gaussian', box=11, max_iter=200); aus dem Register: opsastrostack.get("psf_fit"))
Passt eine PSF an ein Sternbild an und liefert Zentrum und FWHM.
*model* "gaussian" ist eine 6-Parameter-Anpassung einer elliptischen Gaußfunktion bkg + amp * exp(-((dr/sr)^2 + (dc/sc)^2)/2); die Rundheit (roundness = min(sr,sc)/max(sr,sc)) fällt als Nebenprodukt ab —— durch Nachführfehler oder Wind gestreckte Sternbilder zeigen sich hier. "moffat" ist das kreissymmetrische bkg + amp * (1 + r^2/alpha^2)^(-beta) (Moffat 1969), wobei auch beta ein freier Parameter ist. Kleinste Quadrate über scipy.optimize.least_squares (Trust Region Reflective), mit deterministischen Startwerten aus den 2. Momenten —— es werden keine Zufallszahlen verwendet, daher gibt dieselbe Eingabe dieselbe Antwort.
Die FWHM ist eine geschlossene Form aus den angepassten Parametern:
Gauß 2 sqrt(2 ln 2) * sqrt(sr*sc) (geometrisches Mittel), Moffat 2 alpha sqrt(2^(1/beta) - 1).
Sie fällt immer um die Pixelbox zu breit aus. Angepasst wird hier eine *kontinuierliche* Gaußfunktion, aber jedes Pixel des Bildes ist das Integral der kontinuierlichen Verteilung über eine Box von 1 Pixel. Die Varianz einer gleichförmigen Box der Breite 1 ist 1/12, daher ist das gelieferte sigma nicht das wahre sigma, sondern sqrt(sigma^2 + 1/12) —— das ist kein Schätzfehler, sondern das Bild ist so beschaffen. Die Messung stimmt gut mit dieser Vorhersage überein::
wahre FWHM Vorhersage = 2.3548*sqrt(sigma^2+1/12) gemessen (Median)
2.5 2.5908 2.5930
3.5 3.5654 3.5625
5.0 5.0460 5.0145
Wer das wahre sigma will, zieht sqrt(sigma_fit^2 - 1/12) ab, aber per Default wird nicht abgezogen —— die bei Sternmessungen übliche "FWHM" ist die scheinbare Breite im Bild; eine still eingefügte Korrektur würde nicht mehr zu den Werten anderer Werkzeuge passen.
Returns eine list mit einem dict pro Stern (Vokabular table). Schlüssel sind row / col (angepasstes Zentrum), fwhm_px, amplitude, background, roundness, rms (Residuen-RMS), converged (bool), model und modellabhängig sigma_row_px / sigma_col_px oder alpha_px / beta. Sterne, deren Fenster über das Bild hinausragt, und Sterne, deren Anpassung nicht konvergierte, werden ebenfalls nicht verworfen, sondern mit converged=False zurückgegeben —— still entfernt würde niemand bemerken, dass "Sterne verschwunden sind".
Raises ValueError: wenn *model* nicht in PSF_MODELS ist / *box* kleiner als 5 oder gerade ist / *centers* nicht (N, 2) ist.
• 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.
• astro_stacking — py -3.11 examples/astro_stacking.py
• poc_star_astrometry — py -3.11 examples/poc_star_astrometry.py
table als Eingabe)—
photometry)star_detect · aperture_photometry
*Provenance: astrostack.py — ASTROSTACK 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.