CCDデータ(浜松ホトニクス/HiPic)の処理

SPring8での実験など浜松ホトニクス社製CCDカメラのデータを用いる際は、大抵「HiPic」という データ収集ソフトでデータを収集、保存することになります。この際のデータ形式はITEX形式で、 ヘッダのコメント部にCCDカメラなどの情報が入っています。
コメント部のフォーマットはHiPicのバージョンで若干異なるようで、Ver.4.1(@SPring8/BL45XU)/Ver.5.1(@SPring8/BL40B2)では コンマ区切りの値のみの列挙、Ver.6.0(@SPring8/BL45XU)ではいわゆるINI形式のような感じでセクションと「変数=値」の 形式でした。
とりあえず、HiPicのファイルを見るためのScionImageのマクロファイルを用意してみました。 R-AXISは持って無いけど、ファイルを見たい場合の方法で書いたことと同じく、 マクロをロードした後にファイルを開くダイアログで2度同じファイルを指定しないといけないのが難点です。
また、ここでも書いた"itexinfo"でヘッダ部の情報を個別に見ることもできます(とりあえず 上記の2種のヘッダの形式に対応しています)。

実際のデータの処理には、まずおおよそのカメラ距離と正確なピクセルサイズ、および波長の情報を入手しておく必要があります。
ピクセルサイズは、IIとCCD、およびその間のレンズで決まるはずですが、大抵は既に調べられているでしょう。
その情報がない場合、II(Image Intensifier)の上流側口径がCCDで何ピクセルに該当するかを測定し、口径をその値で割れば求まるはずですが、 IIは外縁部で歪が大きいことに留意すべきです。
また、カメラ長決定用のキャリブレーションデータ(SAXSだとステアリン酸鉛など)、CCD用の暗電流値データ、(必要ならば)セルのみの 空データなどを採っておきます。
更に、X線の場合は大抵はII+CCDという構成なので、IIによる像の歪みの補正データも、自分で用意するか 管理者から入手するかしておかなくてはなりません。

実際の処理法は人それぞれのようですが、SPring8などでは各BLである程度の処理法を準備していると思います。
また、自分でプログラムを書いてもいいでしょうし、既存のソフトをうまく利用する手もあります。
私は一旦RigakuのR-AXIS形式に変換してから処理するようにしています。
X線のIP(Imaging Plate)ではR-AXISが多く用いられており、R-AXISでの処理方法を利用できるからです。
まず、"ipitex2rax"(拙作iputilsに含まれます)でHiPicのファイルからR-AXISのファイルに変換。
この際には、

ipitex2rax hipicfile -hp -tm -cl:CameraLength -dx:PxlSizeX -dz:PxlSizeZ outfile
のようにして変換し、なるべくHiPicの情報を有効に利用できるようにします。
そのファイルをR-AXISのDisplay等で開き、中心を決定しますが、この際にIIの歪みの影響がでるので、 もしもIIの中心(CCDの中心)と散乱(回折)像の中心が大きくずれている場合は、先におよそのカメラ長を使ってIIの補正を済ませます。 例えば、拙作の"ipiifix"を用いる場合、
ipiifix infile -cr:RadiusOfII -xc:centre_in_x -zc:centre_in_z outfile
で補正できますが、おそらくIIの種類やカメラ長に依存するでしょうから、慎重に行う必要があります。 特に、IIの中心が画像の中心であるとは限りませんし、回折像の中心も更に異なることが多いようです。
なお、この"ipiifix"ではSPring8/BL45XUでのおよそ≧1000mmのカメラ長の補正データを利用したものです。 表面が球面であることによる見かけの像と実際の像とのズレのみを補正しています。 このページもご覧ください。
IIの中心(CCDの中心)と散乱(回折)像の中心がそれ程ずれていない場合(大抵はIIの歪を嫌ってこのようにセッティングすると思いますが)は、 先に中心を決めても差し支えないでしょう。いずれにせよ、IIの補正と中心決めを行います。
この値は、RigakuのR-AXISのヘッダエディットや拙作"ipedit"を用いてファイル中に書き込んでおいた方がいいでしょう。例えば後者では、
ipedit -t -26:WaveLength -45:DirectX -46:DirectZ ImageFile
のようにして、カメラ長、波長、中心座標(X,Z)を指定します。なお、ピクセルサイズは上記例では"ipitex2rax"を実行する際に既に 指定しています。
最後にカメラ長をキャリブレーション用データを利用して決定し、ファイルに書き込みます。再度"ipedit"の例で示すと、
ipedit -t -31:CameraLength ImageFile
となります。他に修正したい情報があれば、同様に修正します。
これで変換に必要な情報はそろったので、実際の実験データに対して、順次変換していきます。
ipitex2rax hipicfile -hp -tm -cl:CameraLength -dx:PxlSizeX -dz:PxlSizeZ raxisfile
ipsub -f1:raxisfile -f2:dark_raxisfile -f2:-1.0 -replace
ipiifix raxisfile -cr:RadiusOfII -replace
ipedit -t -26:WaveLength -45:DirectX -46:DirectZ -31:CameraLength raxisfile
といったことをシェルスクリプトなどで実行すればいいでしょう。
あとは通常のR-AXISのファイルの処理と同じですので、ご自由に行ってください。
なお、さらに一次元プロファイルを計算するなどするときには、さきの同じシェルスクリプト中で行ってもよいと思います。実際に、 形式変換、暗電流値の減算、バックグラウンドの減算、一次元プロファイルの作成(方位により数種)、png画像の作成をまとめて行い、 最後に重要と思われるデータのみを抽出して表にする、といったことをスクリプトで行っています(そうでもしないと 時分割データなんて処理しきれない...ですから、パラメータ決定などをWindows上で行い、実際の処理はUNIX上で行っています)。

参考に、SPring8 BL45XUでの"ipiifix"用のIIの半径(浜松ホトニクス V5445P + C4880-20-14A/C4880-80-14A)は"260mm"でOKだと思います(2003/4)。 BL40B2での浜松ホトニクスのCCDでも同様で良いようですが、WAXD領域ではもう少し小さい値になるようです(2003/12)。


補正手順メモ(ステアリン酸鉛およびSiの粉末写真を使用)

[2003.12.25][2003.12.29修正]


GO PREV.つるたにの自己紹介へ戻る
GO PREV.つるたにのホームページへ戻る
turutani@scphys.kyoto-u.ac.jp