黑客入侵FITs图像头部

5
我需要更改几个FITs图像头中的值,以适应我所拥有的一些测试数据。因此,我正在尝试黑客FITs图像头以运行应用程序。
但是目前我甚至看不到头文件,更别说黑客了。我使用Ubuntu。
有没有人可以建议一些软件来查看FITs图像 - 甚至黑客它?
6个回答

5

这篇答案略有点老了,我认为需要更新并提供更多信息。

查看.fits文件

我个人比较喜欢用DS9来查看'.fits'文件。安装后,您可以通过输入ds9 /path/to/file.fits来查看文件。或者,您也可以在GUI菜单中直接加载图像。一旦您将图像加载到查看器中,您可以使用顶部菜单栏并转到“文件 -> 显示头”来查看标题信息。不幸的是,我认为您不能在DS9中修改标题。

修改fits标题

对于修改fits标题,我发现最简单的方法是使用astropy(一个Python包)。由于您正在使用Ubuntu,您应该可以通过apt-get来下载它,因此相当容易。要实际编辑fits标题,您可以在python脚本中执行以下操作,或者从解释器中执行(这里提供一些额外的帮助):

# Import the astropy fits tools
from astropy.io import fits

# Open the file header for viewing and load the header
hdulist = fits.open('yourfile.fits')
header = hdulist[0].header

# Print the header keys from the file to the terminal
header.keys

# Modify the key called 'NAXIS1' to have a value of 100
header['NAXIS1'] = '100'

# Modify the key called 'NAXIS1' and give it a comment
header['NAXIS1'] = ('100','This value has been modified!')

# Add a new key to the header
header.set('NEWKEY','50.5')

# Save the new file
hdulist.writeto('MyNewFile.fits')

# Make sure to close the file
hdulist.close()

您也可以将此放入循环中以进行多个文件操作。

4
如果你熟悉编程语言python,你可以使用astropy模块来查看和操作fits文件。比如,如果你想查看文件'image.fits'的头部信息,那么你可以执行如下命令:
from astropy.io.fits import getheader

header = getheader('image.fits') # Load the data
print header                     # Print the header to screen

如果您想修改头部的特定键,则执行以下操作:
header['key'] = 'new_key' 

2

edhead 看起来做得很不错。这是我发现的唯一一个允许你在命令行编辑头文件的软件。


1

这是天文学家使用的灵活图像传输系统格式吗?

此网站提供了一些背景信息和进一步链接,但解释说:

用户必须开发或获取单独的软件来读取和显示来自FITS文件的数据。有许多不同的软件包用于特定应用程序和硬件,但没有适用于所有应用程序的单个标准软件包。

尽管如此,您仍然可以将其用于自己的目的。


是的,它被天文学家使用。 - Federer

1

由于只回答了问题的一半(编辑FITS头文件),为了查看图像,我通常使用DS9(又名SAOImage)。

此外,如果您要编辑大量的FITS头文件,我倾向于选择CFITSIOAstro::FITS::Header

...并且可以使用任何文本编辑器编辑FITS头文件,只要遵循一些简单的规则--卡片(键/值/注释集)始终为80个字符长,并且FITS头文件始终是2880字节的倍数。根据文件的不同,可能会有多个头文件,因为第一个头文件可能声明该文件包含多个图像或表格。


0

斯隆数字天文勘测开发者网站提供了一些库,可以满足您的需求

FitsLib - 一个用于在Microsoft .Net平台上读取和操作FITS文件的库。FITS代表灵活的图像传输系统。FitsLib旨在为Dot Net平台上的FITS文件提供接口。它是围绕CFITSIO库对FITS文件的接口构建的面向对象封装。

虽然FitsLib本身是为C#和.NET Framework设计的,但您可能可以在Ubuntu系统上使用Mono来使用它。或者,您可以直接使用用C编写的CFITSIO库。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接