Нарисуйте несколько полей в изображении - PullRequest
0 голосов
/ 04 марта 2019

Как бы я нарисовал несколько полей FITS на одном изображении?Каждый файл FITS охватывает соседнюю часть неба.

Поле data HDU содержит только изображение.Поэтому для построения каждого изображения в правильных координатах мне нужно получить информацию из поля header.Но как мне передать эту информацию на pyplot?

Я попробовал следующее, используя astropy.WCS, чтобы информация из заголовков использовалась на графиках

import matplotlib.pyplot as plt
from astropy.io import fits
from astropy.wcs import WCS

image_files = ['file1.fits', 'file2.fits']
for image_file in image_files:
    image_header = fits.open(image_file)[0].header  # extract header info
    image_data = fits.getdata(image_file, ext=0)

    # use the WCS class to get coordinate info and projection axes to use
    wcs = WCS(image_header)

    ax = plt.subplot(projection=wcs)
    im = ax.imshow(image_data, origin='lower')

Это показывает толькопоследнее изображение.


Я ожидаю что-то вроде этого:

expected result

, где обе части изображения взяты из разных файлов подгонки, которые

file1

и

file2

1 Ответ

0 голосов
/ 04 марта 2019

Я нашел Программное обеспечение Montage .Для этого есть оболочка Python montage-wrapper.Функция мозаика создает новое изображение FITS путем сопоставления нескольких изображений FITS.Этот новый файл FITS затем можно прочитать и вывести на график.

import montage_wrapper as montage

montage.mosaic(input_directory, output_directory)

hdu = fits.open(filename)
image_header = hdu[0].header
image_data = hdu[0].data

wcs = WCS(image_header)
ax = plt.subplot(projection=wcs)
im = ax.imshow(image_data, origin='lower')
plt.show()

, где input_directory содержит file1.fits и file2.fits.

...