2017-07-25 32 views
0

Astropyライブラリを使用して、実際の2つのFITS画像から補間したFITS画像を作成しました(縮尺は「int16」、私が使用するソフトウェア:Maxim DL)。FITS画像をAstropyで変換する方法

しかしこの画像の縮尺はfloat64であり、int16ではありません。そして天文学の処理ソフトウェアはそれを読むことができません(FITS Liberatorを除く)

あなたはどのように進めるのでしょうか?ヘッダーの「BITPIX」を変更するだけで、FITS画像を変換できますか?

私が試した:(この方法以下:Why is an image containing integer data being converted unexpectedly to floats?

from astropy.io import fits 

hdu1=fits.open('mypicture.fit') 
image=hdu1[0] 
print(image.header['BITPIX']) # it gives : -64 

image.scale('int16') 
data=image.data 
data.dtype 
print(image.header['BITPIX']) # it gives : 16 
hdu1.close() 

しかし、私は "mypicture.fit" の新しく修正さスケール、をチェックするとき、それはまだ表示さ-64 全く変化が保存されませんでした!そして適用!

+1

私は間違っていない場合は、画像データは、細かい配列である。配列の変換を実行せず、新しい.fitsファイルとして保存できませんか? – jm22b

+0

はい、あなたは正しいです。したがって、fits.writeto()を使用して新しい.fitsファイルを作成することをお勧めしますか? –

+0

それは私が過去にしたことです。 – jm22b

答えて

1

私が正しくあなたの問題を理解していれば、これは動作するはずです。

from astropy.io import fits 
import numpy as np 

# create dummy fits file 
a = np.array([[1,2,3], 
       [4,5,6], 
       [7,8,9]],dtype=np.float64) 

hdu = fits.PrimaryHDU() 
hdu.data = a 

# looking at the header object confirms BITPIX = -64 
hdu.header 

# change data type 
hdu.data = np.int16(hdu.data) 

# look again to confirm BITPIX = 16 
hdu.header 
+0

ありがとう@ jm22b!関数 "np.int16(hdu.data)"は私が探していたものです! –

+0

これで、.fitファイルはどのソフトウェアでも読むことができます! –

+0

問題はありません。あなたにとってうれしい – jm22b

関連する問題