我正在尝试从'.fits'
文件中打开全彩图像。但是,将其与相应的'.gif'
图像进行比较时,其颜色和大小似乎存在错误。
如何查看正确尺寸的真彩色图像?
例如,可以选择位于该网页顶部的'.fits'
文件和相应的'.gif'
文件。下面是我使用APLPY模块的示例代码。
def from_fits_to_image(color_scheme, rloc, rname='synop_Ml_0.2104', rext='.fits', cmap=None):
"""
color_scheme : 'rgb', 'grayscale', or 'false color'; color scheme of image to be shown
rloc : type <str>; location of file to be read
rname : type <str>; name of file to be read
rext : type <str>; extension of file to be read
cmap : None or type <str>; colormap
"""
rpath = rloc + rname + rext
if color_scheme == 'rgb':
pic = aplpy.FITSFigure(rpath)
# pic.show_rgb(alt_filename) # what filename is supposed to go here?
else:
pic = aplpy.FITSFigure(rpath)
if color_scheme == 'grayscale':
pic.show_grayscale()
elif color_scheme == 'false color':
if cmap is None:
pic.show_colorscale()
else:
pic.show_colorscale(cmap=cmap)
# plt.savefig(...)
plt.show()
只要提供正确的rloc
(下载'.fits'
文件的位置)和color_scheme
,上面的代码就会运行。
调用下面的函数将显示正确尺寸的空图。为了使它不为空,我必须提供另一个现有的文件名,尽管我不清楚它到底应该是什么。
from_fits_to_image(color_scheme='rgb', rloc=rloc)
下面的每个函数调用都显示了一个已调整为小尺寸的图。虽然color_scheme='grayscale'
似乎可以正确地为绘图着色,但其他方法不能正确地为图像着色。
from_fits_to_image('grayscale', rloc=rloc)
from_fits_to_image('false color', rloc=rloc)
from_fits_to_image('false color', rloc=rloc, cmap='plasma')
为了比较,'.gif'
图片如下。理想情况下,输出将与下图完全相同。
编辑:
我尝试使用astropy
,PIL
和pyfits
不成功。任何帮助,将不胜感激。
编辑2:
下面是使用fits
from的结果astropy.io
。
from astropy.io import fits
def reada(rloc, rname='synop_Ml_0.1998', rext='.fits'):
""" """
rpath = rloc + rname + rext
# hdu_list = fits.open(rpath)
# hdu_list.info()
pic = fits.getdata(rpath)
plt.imshow(pic)
plt.show()
reada(rloc=rloc)
我玩过the vmin
and vmax
kwargs,但没有成功。此外,使用pyfits
打开文件会导致以下错误,即使使用pyfits.open(rpath, uint=True, do_not_scale_image_data=True)
:
TypeError: Image data can not convert to float