Anpassen von PSF an ein Bild, um den Gesamtfluss zu erhalten (Python)

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.psfdas 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_dataist die 2D-Numpy-Array-Darstellung der PSF und imgdie 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_0und y_0immer 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?

Wenn Sie nach dem Gesamtfluss des Systems suchen, ziehen Sie einfach ein Kästchen um Ihr Bild und addieren Sie die Pixelwerte für jedes Pixel in Ihrem Kästchen. Das ist alles Flussmittel.
@zephyr Ja, aber wie wird dies erreicht, indem eine PSF an das Bild angepasst wird?
Wie Carl Witthoft antwortete, macht es keinen Sinn, eine PSF auf eine erweiterte Quelle anzuwenden. Außerdem, selbst wenn dies ein Stern wäre, würden Sie den Fluss nicht berechnen, indem Sie zuerst eine PSF daran anpassen. Sie würden genau das tun, was ich gesagt habe, und ein Kästchen um Ihr Objekt zeichnen und die Werte der Pixel in diesem Kästchen addieren (obwohl Sie das PSF verwenden können, um anzugeben, was Ihr Kästchen für ein Punktobjekt sein sollte).
Wenn Sie sagen, ziehen Sie einen Rahmen um das Objekt, wie wählt man dann die richtige Größe des Rahmens aus? Bei einem Hintergrund ungleich Null und Rauschen im Bild würde eine größere Box den Fluss erhöhen, obwohl sich die Quelle nicht weiter in die größere Box erstreckt.
Entschuldigung, aber wie ist ein Asteroid eine erweiterte Quelle? (Dieser Begriff war mir unbekannt, bis ich ihn gerade nachgeschlagen habe.) Wäre die Winkelgröße eines von WISE abgebildeten Asteroiden nicht kleiner als die Teleskopauflösung, was ihn als Punktquelle klassifizieren würde?
Vermutlich haben Sie Ihre Bilder bereits auf Bias, Flat Field usw. korrigiert . Das Zeichnen einer größeren Box sollte Ihnen also nicht mehr Fluss bringen (zumindest nicht eine sinnvolle Menge mehr). Im Allgemeinen zählen nur Sterne als Punktquellen, aber Ihr Asteroid in Ihrem Fall kann nahe genug an einer Punktquelle sein, aber so oder so ist es für das Problem, das Sie zu lösen versuchen, irrelevant. Obwohl wir Diskussionsgebiet betreten und Kommentare nicht dafür gedacht sind. Bitte zögern Sie nicht, zusätzliche, neue Fragen zu diesem Stack-Austausch zu stellen, um mehr Klarheit zu erhalten.

Antworten (2)

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.

Nun, ich verwende das PSF auch für andere Zwecke, aber eines der Dinge, die ich gerne tun würde, ist, den Gesamtfluss des Quellbildes zu finden. Ich hatte den Eindruck, dass ich dies mit Hilfe des PSF erreichen könnte, aber ich konnte online nichts darüber finden, wie genau es das tun kann. Wissen Sie, wie sich die Normalisierung der PSF auf den Fluss des Quellbilds auswirken könnte? Ja, die Schwerpunktkoordinaten, die ich in meiner Frage zitiert habe, entsprechen auch der maximalen Intensität, nicht nur dem geometrischen Zentrum.

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.