はじめに
fitsファイルとは探査データや天文データに使われる画像ファイル形式で、ヘッダーと言われる時刻や姿勢様々な情報を含む部分と、画像サイズ(例えば1024x1024)の配列の部分からなる。
キューブ状のfitsファイルも存在していて、その場合にはn個のヘッダーと画像配列から構成される。
https://ja.wikipedia.org/wiki/FITS
Pythonのライブラリastropy.io.fitsを使ったfitsデータの読み込み、表示について。
fitsのビューアーとしてはDS9などがある。
PDS
Planetary Data System
NASAの探査データアーカイブ。誰でも無料で使うことができます。ここからデータをダウンロードすれば好きな惑星の画像を見ることができる!fitsファイル形式で画像が公開されています。
例えば、Hayabusaのデータはこちら。Hayabusaが撮ったすべての画像データが公開されています。
astropyのインストール
anacondaでインストールする。
conda install astropy
fitsファイルの読み込み
0番目のデータを読み込む。画像はヘッダー+画像配列からなる。
import astropy.io.fits as fits
import matplotlib.pyplot as plt
hdulist=pyfits.open('file.fits')
hdu=hdulist[0]
data=hdu.data #data=fits.getdata('file.fits',0)でもできる。
header=hdu.header
plt.imshow(data)
plt.show()
ヘッダーの項目、例えばTI_0を取り出す場合には、
print header["TI_0"]
X、Y番目のピクセルの指定は
data[Y][X]
fitsファイルの新規作成
hdu = fits.PrimaryHDU(im)
hdulist = fits.HDUList([hdu])
hdulist.writeto('new.fits',overwrite=True)
fitsはヘッダーと画像配列で1セット(hdu)。hdu = PrimaryHDU(data, header)
で構成される。多数のエクステンションを使用する場合には、fits.ImageHDU
で二つ目以降のhduを複数作成し、HDUList([hdu1,hdu2,hdu3])
とかいった感じで一つのファイルにする。つまり、複数の画像を一つのファイルに保存することが可能である。
overwrite=Trueとすることによって上書きできる。
キーワードの追加
hdu.header['NEWKEYWORD']='something'