人気ブログランキング | 話題のタグを見る

リガクのImgファイルを16 bit Tiffに変換

リガクのX線装置では、2次元の回折・散乱データがオリジナル形式のImgファイルに保存されます。
このデータを操作するにはリガクのソフトが必要です。一応、リガクのソフトを使えば2次元のビットマップ画像として変換できますが、元々1ピクセル16ビットだったデータが8ビットに落ちてしまうので、定量的解析には向きません。

ということで以前から16ビットのTiffに変換できるソフトを探していたのですが、どうしても見つからないので、ImageJを使って変換する方法を編み出しました。
注)一部のファイルにしか適用できないようです。


準備として、次のことが必要です。
・画像のサイズ(pixel × pixel)を調べておく
・次のテキストに適当な名前を付けて(拡張子はtxt)保存しておく
-----
// Correct a Rigaku IMG file to handle in ImageJ.
// IMG file must be read as 16bit Unsigned.
// Skip byte is the size of one line, i.e., 2 (byte) * pixels of width.

w = getWidth();
h = getHeight();
mask = 32767;
for (y=0; y<h; y++) {
for (x=0; x<w; x++)
if (~mask&getPixel(x,y)>0) putPixel(x, y, (getPixel(x, y)&mask)*32);
// In some cases, 32 in the above line must be corrected to 8.
}
resetMinAndMax();
-------

準備が出来たら、ImageJを起動し、"File -> Import -> Raw"の操作で目的のImgファイルをインポートします。Image typeは16 bit Unsigned、Skip byteは1行のピクセル数×2(バイト)です。Little-endian byte orderはチェックしません。

これだけで正常に見えている場合も多いのですが、強度の値があるしきい値を超えたピクセルがあれば、見かけ上は異常な強度値となっています。

次に先ほどのテキストファイル(マクロ)を"Plugins -> Macros ->Run"の操作で読み込み実行します。
この操作で、異常に見えていたピクセルが補正され、リガクのソフトで読み込んだような画像となります。
1ピクセルあたり16ビットの階調は保持されているので、そのままTiff形式で保存すれば目的の変換が行えます。
by tosakam | 2014-08-19 12:44 | 解析
<< 学生必読 >>