Tengo una imagen de una sola fuente no saturada (asteroide) en la que me gustaría hacer conjeturas para varios modelos de PSF, de modo que luego pueda comparar el flujo total en cada caso. Recientemente comencé a estudiar PSF, así que estoy un poco confundido.
Sé que astropy ofrece un paquete llamado photutils.psf
que hace el ajuste de PSF por usted, pero me gustaría comprender mejor qué sucede detrás del ajuste y cómo se resuelve el flujo de la fuente a partir de él. Además, cuando intenté usar este paquete, no obtuve ningún resultado de todos modos (decía que se encontró una fuente, pero que no cumplía con los criterios de nitidez o redondez, a pesar de que cambié esos parámetros un poco). He intentado algo más simple a continuación (dónde model_data
está la representación de matriz numpy 2d del PSF, y img
son los datos de la imagen del asteroide):
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))
La salida que obtengo es entonces:
flux x_0 y_0
----- ----- -----
9282.784 466.44 531.69
2705.82 25301.56 980812434.98
Sin embargo, estas no son las coordenadas correctas del centroide de la fuente en la imagen. Las coordenadas correctas están alrededor (300, 300). Además, para obtener este resultado, los datos de PSF se normalizaron para que el punto de máxima intensidad sea 1. Pero cuando cambio esta normalización para que el flujo total (suma de todos los píxeles) sea 1, el resultado del flujo después de ajustar I obtener es mucho más alto.
No estoy seguro de lo que está sucediendo detrás de escena aquí (me perdí en la documentación), y no estoy seguro de poder confiar en alguno de estos valores de flujo, considerando que x_0
y y_0
siempre están apagados. Entonces, me gustaría entender mejor: ¿cómo se encuentra exactamente el flujo de un objeto al ajustarlo a un PSF? ¿Y cómo debería normalizarse esa PSF?
Realmente no puedes obtener un PSF para un objeto extendido. La función Point-Spread-Function es un parámetro de su sistema de imágenes que describe la forma de la imagen de una supuesta fuente puntual.
No tengo ningún conocimiento de lo que pretende hacer su paquete de python, por lo que no puedo comentar directamente sobre los resultados. Señalaré (lo siento) que el centroide geométrico de la imagen generalmente no es el mismo que el centroide de energía (brillo) de la imagen.
Además, el flujo total es solo la suma de todos los píxeles cubiertos por la imagen del asteroide (menos ruido de fondo y demás). No está claro por qué necesita el PSF si solo está haciendo cálculos de energía/potencia.
La imagen es píxeles 2D, la rutina de ajuste de PSF haría algo como esto. Primero, elige la función PSF, que es una gaussiana 2D en este caso. Luego, la rutina elegirá un centroide, mu y varianza (o mus y varianzas).
Un par de cosas que complicarán la rutina. i) Pico local debido a un ruido. Esto estropeará el centroide. La solución es hacer la búsqueda del centroide usando promedios dados algunos tamaños de las áreas. Además, es posible que desee especificar qué tan grande debe ser el área de búsqueda para el lugar especificado inicialmente. O, si está seguro de la ubicación del centroide, puede arreglarlo y el centroide no sería una variable de elección. ii) Tamaño de la apertura. Si el objeto es una fuente puntual gaussiana 2D perfecta, el tamaño de la apertura no importa. Pero con el ruido y otros objetos circundantes, debe juzgar cuál debería ser el tamaño óptimo: demasiado grande = más ruido e incluir otros objetos, demasiado pequeño = forma de ajuste incorrecta debido a que domina el ruido. Puede haber algo más en qué pensar que no puedo recordar en este momento.
Hablando de esto, la rutina de ajuste puede adaptarse incluso a una fuente extendida, pero no obtendrá un buen resultado a menos que use un núcleo adecuado (es decir, no gaussiano).
Yo personalmente no sé acerca de la astrología. Usé IRAF, que tiene su equivalente como PyRAF en Python, creo. Es posible que desee verificar eso también.
Su problema sobre el centroide incorrecto, creo, las raíces de los picos locales del ruido y la rutina de búsqueda no tiene el tamaño suficiente para un buen promedio. Este problema conduce directamente a> 1 flujo total como también mencionó.
céfiro
curioso_cosmo
céfiro
curioso_cosmo
curioso_cosmo
céfiro