チェックボックスアイコン 手順13: 複数フレーム足し上げ

暗い天体の検出のために複数フレームを重ねあわせたいことがあると思います。 天体が常に同じ位置にあるのならば、輻射強度校正後のフレームをそのまま平均やmedianを取って重ね合わせればよいですが、天体位置が2次元ファイバーアレイ上で動いている (または動かした) 場合は、そのまま重ね合わせることはできません。 そこで、各フレームの相対位置を補正し、また今後の解析を行いやすくするために、円の最密充填グリッドから正方格子グリッドにするスクリプトを作りました。 同時に、fitsヘッダー情報を使って大気分散も補正します。

まずは天体fitsファイルリストを作ります。 観測天体ごとに新しいディレクトリを作って、その中に輻射強度較正済みのファイルをコピーするかリンクを張ると良いでしょう。

ls kls036[56][0-9][0-9]-fc.fits > ugc993-fc.list
#リストに不要なファイルが混じっていたら、適宜取り除く

各フレームの相対位置ずれを測ります。 各フレームに明るい点源が写っている波長があれば、各フレームでその波長の画像を作り、FiberCenter2を使って中心位置を測定します。 (明るい点源がない場合については検討中。)

#KOOLS-IFU用オリジナルソフトウェアを使用
#コマンド名の前に、ソフトウェア置き場のパスを適宜追加すること

FiberMakeImage kls036564-fc.fits 656 660
FiberMakeImage kls036565-fc.fits 656 660

FiberCenter2 kls036564-fc-image-656-660.fits 0 template-FiberFlux2.dat > ugc993-pos-flux.dat
FiberCenter2 kls036565-fc-image-656-660.fits 0 template-FiberFlux2.dat >> ugc993-pos-flux.dat


cut -d \( -f 3 ugc993-pos-flux.dat | cut -d \) -f 1 | sed -e s/,//g | awk '{print $1, $2}' > ugc993-pos.dat

各フレームの相対位置ずれと、各フレームを足しあげるときの重みを書いたファイルを作ります。 fitsファイルリストの順番と、このファイルの順番を合わせてください。 (上記の例では、1行目がkls036564-fc.fitsの情報、2行目がkls036565-fc.fitsの情報、と続く。) 書式は1列目がx方向相対位置、2列目がy方向相対位置、3列目が足しあげる時の重みです。 相対位置の単位は、FiberCenter2の出力と同じくファイバー単位です。 コメントアウト記号は#で、それ以降は無視されます。

echo "# offset_x offset_y weight" > ugc993-offset-weight.dat
cat ugc993-pos.dat >> ugc993-offset-weight.dat
#この例ではweightをエディターで書くことにするが、もちろん何らかのスクリプトを作って決めても構わない。
vi ugc993-offset-weight.dat

重ね合わせるときのパラメータを書いたファイルを作ります。 ファイルの例は以下になります。 コメントアウト記号は#で、それ以降は無視されます。

### combine information
50 # number of m pixels of combined image
50 # number of n pixels of combined image
0.5 # magnification factor relative to the original images
50 # mesh size for calculating the overlap area
5 # iteration number for sigma clipping
3 # sigma for sigma clipping
6628 # fiducial wavelength in angstrom for the relative position of each frame

### object and observatory information
1.4261638889 # object Right Ascension in hour
7.9901611111 # object Declination in degree
8.9062587619 # observatory longitude in hour
34.57715476705476 # observatory latitude in degree

1つ目と2つ目のパラメータが、出力されるfitsファイルの、空間方向のpixel数です。 以下では、この空間方向をm方向とn方向と呼びます。 3番目のパラメータが、入力画像に対する出力画像の拡大率で、この例の場合は1 pixelのサイズが0.5ファイバー間隔 (= 1.17″) になります。 4番目のパラメータは、詳細は省きますが、スクリプト内部で面積を計算するときのグリッドの細かさです。 数字を小さくするとグリッドが粗く、大きくするとグリッドが細かくなって結果が正確になりますが、計算に時間がかかります。 このパラメータがスクリプトの計算速度を決めます。 試しにスクリプトを走らせる段階では10くらいにしておき、最終データにするときは50くらいの値にするとよいでしょう。 同じグリッドに入った値を平均するときにsigma clippingをしますが、5番目と6番目のパラメータがそのときの繰り返し回数とclipする値 (σ) です。 7番目のパラメータが、フレームごとの相対位置ずれを測定に使用した画像の波長 (単位: Å) です。

8番目のパラメータが天体のRight Ascension (単位: 時)、9番目のパラメータがDeclination (単位: 度) です。 10番目が観測した地点の経度 (単位: 時; 東が+で西が-)、11番目が緯度 (単位: 度; 北が+で南が-) です。 上記の例は国立天文台 岡山天体物理観測所188 cm望遠鏡の位置になっています。 時と度とラジアンを変換するツールがこちらにあります。

ここまで準備できましたら、重ねあわせスクリプトを実行します。

#第1引数が入力fitsファイルリスト、第2引数が出力fitsファイル名
#第3引数がパラメータファイル名、第4引数がスペクトル切り出し後 (dohydra後) のマスクフレーム名
FiberCombine ugc993-fc-scale.list ugc993-comb.fits ugc993-offset-weight.dat ugc993-param.dat mask-spec2bin-no5-ms.fits

上記スクリプトを動かしてしばらく待つと、下図のようなfitsファイルができます。

UGC993重ねあわせfitsファイル

このfitsファイルでは横軸が波長、縦軸が空間方向になっています。 空間方向の形式は、fitsファイル上でyが1大きくなると、mn空間でmが1大きくなり、mの最大を超えるとnが1増えます。 上記の例で言えば、y = 1-50のpixelがn = 1でm = 1-50のpixel、y = 51-100のpixelがn = 2でm = 1-50のpixel、…となります。

とある波長での2次元画像を作るには、以下のコマンドを使います。

#第1引数が入力fitsファイル、第2引数と第3引数がmとnの最大値
#第4引数と第5引数が切り出す波長の始点と終点で、単位はfitsファイルのx座標
#各波長での平均ではなく、足した結果が出力される
Fiber_mn_MakeImage ugc993-comb.fits 50 50 656 660

下図が出力されるfitsファイルの例です。 元のKOOLS-IFUデータと違い、グリッドが円の最密充填構造から、正方格子グリッドに変わり、またファイバーの隙間も埋められています。 これでIRAFなどで解析を行いやすくなったはずです。

UGC993重ねあわせHa画像

参考データとして、FiberCombineを実行した時に、(出力ファイル名)-3d.fitsというファイルも同時にできます。 これは3次元fitsデータで、形式はfitsファイルのxとy方向が上記のmとn方向に、fitsファイルのz方向が波長方向になっています。 version 7.0以降のds9なら開くことができます。 波長ごとの画像を連続で見られるので、速度場の比較などに有効です。 IRAFでの処理ができるか確認していない、またヘッダー情報がほぼ空という事情もあり、現状では参考情報という扱いです。