LoginSignup
18
8

More than 5 years have passed since last update.

Pythonによるfitsファイルの読み込みと書き込み(メモ)

Last updated at Posted at 2016-07-26

はじめに

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'
18
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
8