Есть ли способ использовать arithmeti c ops для файлов FITS в Python? - PullRequest
0 голосов
/ 23 января 2020

Я довольно новичок в Python, и я пытался воссоздать работающую программу IDL до Python, но я застрял и продолжаю получать ошибки. Я еще не смог найти решение. Программа требует в общей сложности 4 файлов FITS (img и коррекционные изображения темные, flat1, flat2). Операции следующие:

flat12 = (flat1 + flat2)/2

img1 = (img - dark)/flat12

Указанные файлы имеют размеры (1024,1024,1). Я изменил их размер до (1024,1024), чтобы можно было даже использовать функцию im_show().

Я также пытался использовать cv2.add(), но получаю следующее:

TypeError: Ожидаемый Ptr для аргумента 'src1'

Есть ли обходной путь для этого? Заранее спасибо.

1 Ответ

2 голосов
/ 24 января 2020

Для чтения ваших файлов FITS используйте astropy.io.fits: http://docs.astropy.org/en/latest/io/fits/index.html Это даст вам Numpy массивов (и заголовков FITS, если необходимо, есть разные способы сделать это, как объяснено в документации ), так что вы можете сделать что-то вроде:

>>> from astropy.io import fits
>>> img = fits.getdata('image.fits', ext=0) # extension number depends on your FITS files
>>> dark = fits.getdata('dark.fits') # by default it reads the first "data" extension
>>> darksub = img - dark
>>> fits.writeto('out.fits', darksub) # save output

Если ваши данные имеют дополнительное измерение, как показано с формой (1024,1024,1), и если вы хотите удалить эту ось, вы можете используйте обычный Numpy синтаксис разбиения массива: darksub = img[0] - dark[0]. В противном случае в приведенном выше примере он создаст и сохранит (1024,1024,1) изображение.

...