Ich habe ein Bild einer einzelnen ungesättigten Quelle (Asteroid), an die ich Schätzungen für verschiedene Modell-PSFs anpassen möchte, damit ich dann den Gesamtfluss in jedem Fall vergleichen kann. Ich habe erst vor kurzem begonnen, PSFs zu studieren, daher bin ich etwas verwirrt.
Ich weiß, dass Astropy ein Paket namens anbietet, photutils.psf
das die PSF-Anpassung für Sie durchführt, aber ich würde gerne besser verstehen, was hinter der Anpassung vor sich geht und wie der Fluss der Quelle daraus aufgelöst wird. Als ich versuchte, dieses Paket zu verwenden, erhielt ich außerdem sowieso keine Ausgaben (es hieß, dass eine Quelle gefunden wurde, die aber die Schärfe- oder Rundheitskriterien nicht erfüllte, obwohl ich diese Parameter ziemlich verändert hatte). Ich habe unten etwas Einfacheres versucht (wo model_data
ist die 2D-Numpy-Array-Darstellung der PSF und img
die Asteroidenbilddaten):
import numpy as np
from astropy.modeling import fitting
from photutils import FittableImageModel
y, x = np.mgrid[:np.shape(img)[0], :np.shape(img)[1]]
fitter = fitting.LevMarLSQFitter()
model2d = FittableImageModel(model_data)
result = fitter(model2d, x, y, img)
print(result)
print(np.median(img), np.max(img), np.sum(img))
Die Ausgabe, die ich bekomme, ist dann:
flux x_0 y_0
----- ----- -----
9282.784 466.44 531.69
2705.82 25301.56 980812434.98
Dies sind jedoch nicht die korrekten Schwerpunktkoordinaten der Quelle im Bild. Die korrekten Koordinaten sind etwa (300, 300). Um dieses Ergebnis zu erhalten, wurden die PSF-Daten so normalisiert, dass der maximale Intensitätspunkt 1 ist. Aber wenn ich diese Normalisierung so ändere, dass der Gesamtfluss (Summe aller Pixel) 1 ist, ist das Ergebnis für den Fluss nach der Anpassung I bekommen ist viel höher.
Ich bin mir nicht sicher, was hier hinter den Kulissen passiert (ich habe mich in der Dokumentation verlaufen), und ich bin mir nicht sicher, ob ich diesen Flusswerten vertrauen kann, wenn man bedenkt, dass x_0
und y_0
immer ausgeschaltet sind. Ich würde also gerne besser verstehen – wie genau findet man den Fluss eines Objekts, indem man es an eine PSF anpasst? Und wie sollte diese PSF normalisiert werden?
Sie können nicht wirklich ein PSF für ein erweitertes Objekt erhalten. Die Point-Spread-Funktion ist ein Parameter Ihres Bildgebungssystems, der die Form des Bildes einer vermeintlichen Punktquelle beschreibt.
Ich habe keine Kenntnis darüber, was Ihr Python-Paket bewirken soll, daher kann ich die Ergebnisse nicht direkt kommentieren. Ich möchte (sorry) darauf hinweisen, dass der geometrische Schwerpunkt des Bildes im Allgemeinen nicht mit dem Energie- (Helligkeits-) Schwerpunkt des Bildes übereinstimmt.
Außerdem ist der Gesamtfluss nur die Summe aller Pixel, die vom Bild des Asteroiden abgedeckt werden (weniger Hintergrundrauschen und so weiter). Es ist nicht klar, warum Sie das PSF benötigen, wenn Sie nur Energie-/Leistungsberechnungen durchführen.
Das Bild besteht aus 2D-Pixeln, die PSF-Anpassungsroutine würde so etwas tun. Zuerst wählen Sie die PSF-Funktion aus, die in diesem Fall eine 2D-Gaußfunktion ist. Dann wählt die Routine einen Schwerpunkt, ein Mu und eine Varianz (oder Mus und Varianzen).
Ein paar Dinge, die die Routine erschweren. i) Lokale Spitze aufgrund eines Rauschens. Dadurch wird der Schwerpunkt durcheinander gebracht. Das Fixieren besteht darin, die Zentroidsuche unter Verwendung von Durchschnittswerten durchzuführen, wenn einige Größen der Bereiche gegeben sind. Außerdem möchten Sie möglicherweise angeben, wie groß der Suchbereich für die anfänglich angegebene Stelle sein soll. Wenn Sie sich über die Position des Schwerpunkts sicher sind, können Sie ihn korrigieren, und der Schwerpunkt wäre keine Auswahlvariable. ii) Öffnungsgröße. Wenn das Objekt eine perfekte 2D-Gaußsche Punktquelle ist, spielt die Aperturgröße keine Rolle. Aber bei Rauschen und anderen umgebenden Objekten müssen Sie beurteilen, was die optimale Größe sein sollte: zu groß = mehr Rauschen und andere Objekte enthaltend, zu klein = falsche Passform, da Rauschen dominiert. Vielleicht gibt es noch etwas zu bedenken, an das ich mich im Moment nicht erinnern kann.
Apropos, die Anpassungsroutine kann sogar eine erweiterte Quelle anpassen, aber Sie werden kein gutes Ergebnis erhalten, es sei denn, Sie verwenden einen geeigneten Kernel (dh keinen Gaußschen).
Ich persönlich kenne mich mit Astropie nicht aus. Ich habe IRAF verwendet, das, glaube ich, sein Äquivalent zu PyRAF in Python hat. Vielleicht möchten Sie das auch überprüfen.
Ihr Problem mit dem falschen Schwerpunkt liegt meines Erachtens an den lokalen Spitzen durch Rauschen und der Suchroutine, die nicht genügend Größe für einen guten Durchschnitt hat. Dieses Problem führt, wie Sie ebenfalls erwähnt haben, direkt zu > 1 Gesamtfluss.
Zephyr
neugierig_kosmo
Zephyr
neugierig_kosmo
neugierig_kosmo
Zephyr