У меня есть изображение одного ненасыщенного источника (астероида), к которому я хотел бы подобрать предположения для различных моделей PSF, чтобы затем сравнить общий поток в каждом случае. Я только недавно начал изучать PSF, поэтому немного запутался.
Я знаю, что astropy предлагает пакет под названием photutils.psf
, который выполняет настройку PSF для вас, но я хотел бы лучше понять, что происходит за подгонкой, и как из нее разрешается поток источника. Кроме того, когда я попытался использовать этот пакет, я все равно не получил никаких выходных данных (он сказал, что источник найден, но что он не соответствует критериям резкости или округлости, несмотря на то, что я немного изменил эти параметры). Я попробовал что-то более простое ниже (где model_data
представлено двухмерное представление массива PSF и img
данные изображения астероида):
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))
Результат, который я получаю, тогда:
flux x_0 y_0
----- ----- -----
9282.784 466.44 531.69
2705.82 25301.56 980812434.98
Однако это неправильные координаты центра тяжести источника на изображении. Правильные координаты около (300, 300). Кроме того, чтобы получить этот результат, данные PSF были нормализованы так, чтобы точка максимальной интенсивности была равна 1. Но когда я изменяю эту нормализацию так, чтобы общий поток (сумма всех пикселей) был равен 1, результат для потока после подгонки I получить намного выше.
Я не уверен, что здесь происходит за кулисами (я заблудился в документации), и я не уверен, могу ли я доверять любому из этих значений потока, учитывая, что x_0
и y_0
всегда отключены. Поэтому я хотел бы лучше понять, как именно можно найти поток объекта, подгоняя его под ФРТ? И как этот PSF нормализовать?
Вы не можете получить PSF для расширенного объекта. Point-Spread-Function — это параметр вашей системы визуализации, который описывает форму изображения предполагаемого точечного источника.
Я ничего не знаю о том, для чего предназначен ваш пакет Python, поэтому я не могу напрямую комментировать результаты. Я укажу (извините), что геометрический центроид изображения обычно не совпадает с центроидом энергии (яркости) изображения.
Кроме того, общий поток — это просто сумма всех пикселей, покрытых изображением астероида (без фонового шума и прочего). Непонятно, зачем вам PSF, если вы просто выполняете расчеты энергии/мощности.
Изображение представляет собой 2D-пиксели, процедура подбора PSF будет делать что-то вроде этого. Во-первых, вы выбираете функцию PSF, которая в данном случае является двумерной гауссовой. Затем программа выберет центроид, мю и дисперсию (или мю и дисперсию).
Пара вещей, которые усложнят рутину. i) Локальный пик из-за шума. Это испортит центроид. Фиксация заключается в поиске центроида с использованием средних значений для некоторых размеров областей. Кроме того, вы можете указать, насколько большой должна быть область поиска с учетом изначально указанного места. Или, если вы уверены в местоположении центроида, вы можете исправить его, и центроид не будет переменной выбора. ii) Размер апертуры. Если объект представляет собой идеальный точечный 2D-источник по Гауссу, размер апертуры не имеет значения. Но с шумом и другими окружающими объектами вы должны решить, каким должен быть оптимальный размер: слишком большой = больше шума и включая другие объекты, слишком маленький = неправильная форма подгонки из-за преобладания шума. Возможно, есть еще что-то, о чем я не могу вспомнить в данный момент.
Говоря об этом, процедура подгонки может соответствовать даже расширенному исходному коду, но вы не получите хорошего результата, если не используете правильное ядро (т. е. не гауссовское).
Я лично ничего не знаю об астрофии. Я использовал IRAF, который, по-моему, имеет аналог PyRAF в Python. Возможно, вы захотите проверить и это.
Я полагаю, что ваша проблема с неверным центроидом коренится в локальных пиках из-за шума и в процедуре поиска, не имеющей достаточного размера для хорошего среднего. Эта проблема напрямую приводит к> 1 общему потоку, как вы упомянули.
зефир
любопытный_космо
зефир
любопытный_космо
любопытный_космо
зефир