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

リガクの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 | 解析

学生必読

東大で学んだ卒業論文の書き方というページを見つけました。

タイトルにある「論文の書き方」に留まらず、研究の心得や進路に関するアドバイスなど、幅広い内容が簡潔に書かれています。

学生の方は、是非一読するようお勧めします。


人気blogランキングへ
# by tosakam | 2007-09-26 18:38 | 論文作成

Meepを使う(1) Schemeから

まず最初にお断りしておきますが、ここから先の一連の記事はMeepを十分に理解していない時点でのメモみたいなものです。自分なりの解釈に過ぎないので、間違いが含まれていたらご容赦ください。(適時訂正します。)

Meepを使って実際にシミュレーションを行う為には、想定しているモデルやシミュレーションの条件をどの様に表現するか、知る必要があります。

チュートリアルでも紹介されていますが、物体に対する電磁場の応答をシミュレーションするわけですから、Meepでは少なくとも次の要素を明示することが必要です。

geometry-lattice: シミュレーションに用いる空間の定義(有限の大きさを持った空間)
geometry: シミュレーションの対象となる構造(形・大きさ・位置・誘電率)
sources: 光源(形・大きさ・位置・連続性・波長・偏光・・・)

その後で計算を実行するのですが、空間と時間を有限の単位に分割して順次計算するので、
run-until: 計算の範囲(時間など)
も指定することになります。

この様なパラメータの設定は、コマンドラインから逐次手入力することも出来ます。
しかし、テキストファイルに記録しておいて一括して実行したほうが便利でしょう。
Meepでは、そのようなファイルを.ctlファイルとして読み込むよう想定しています。

パラメータを設定するための文法は、Schemeというプログラム言語に基づいています。Schemeの概要をつかむには、こちらのページが役に立つでしょう。

人気blogランキングへ
# by tosakam | 2007-07-23 22:58 | 解析

Meepのインストール (おまけ) 失敗の経緯

せっかくなので、Meepインストール成功に至るまで経験した失敗についても、お知らせしておきます。

(1)libctrlとGuileのバージョン
 運が悪ければ、この段階で諦めてました。
 たまたま、Cygwinのインストールで最初に選んだサーバからダウンロードしたGuileがVer. 1.6.7-4でした。Meep Installのガイダンスでguile-develのソースが必要だと分かり、このバージョンのソースをインストールして、./configureを無事に完了することが出来ました。
その後、Cygwinのダウンロードサーバを変更するとGuileが新しいバージョンになったのですが、その場合にはエラーになり./configureで止まりました。たまたま古いバージョンのGuileを使う環境にならなければ、どうすればよいか見当付かなかったと思います。

(2)libctlとライブラリ
 上のようになんとか./configureをクリアできても、最初のうちはmakeでエラーになり、libctlをコンパイルすることが出来ませんでした。ディスク容量節約のため、Cygwinをインストールする際、パッケージ内にある必要最低限のモジュールだけを選ぶようにしていたのですが、それが裏目に出たようです。
 LibsやDevelのパッケージを全部選択するようにして、やっとコンパイルエラーが無くなりました。

(3)HDF5のインストール
HDF5のホームページ内にはたくさんの情報があるのですが、それだけにかえってCygwinにインストールするための情報を探すのが大変でした。
HDF5はC, C++, Fortranのライブラリを作成することが出来ますが、Meepのコンパイルにどれが必要なのか分かりません。
また、HDF5をどのフォルダにインストールすればよいのかも分かりませんでした。

この状態で、安定なHDF5 Ver. 1.6.5をインストールしようとしましたが、コンパイルで失敗します。色々と試行錯誤し、とりあえずCとC++のライブラリ作成に限ればコンパイルとインストールの出来ることがわかりました。

しかし、Meepについて./configureを実行する際には、HDF5が見つからないようなメッセージが出ます。

諦めかけたところで、HDF5のホームページにHDF5 Ver. 1.6.5はCygwinに対応していないとの記述を発見!Ver. 1.8.0 Beta2を使って、やっとC, C++, Fortranのライブラリをインストールできました。

それでもMeepについて./configureを実行すると、HDF5が見つからないようなメッセージが出ます。HDF5のインストールフォルダが認識されていないのかと考え、色々な場所にインストールを試みたのですが、いずれの場合もMeepの./configureにHDF5が認識されないのは同じでした。

もう完全に諦めていたのですが、最後だと思いSzipをインストールするディレクトリを/usr/localに変えてみました。Meep自体は直接Szipをリンクしないので関係ないと思っていたのですが、HDF5を経由しているので影響するのかもしれません。
結局、これが功を奏してMeepにHDF5が認識されました。

とは言っても、./configueでHDF5が認識されただけです。実際にリンクする段階ではエラーになってしまいました。

(4)Meepのインストール
Meepをコンパイルする際、あるファイルが見つからないということでエラーになり、止まっていました。この問題については、ネットで調べた情報+メーリングリストのアドバイスを基に対応することが出来ました。

人気blogランキングへ
# by tosakam | 2007-07-21 00:31 | 解析

Meepのインストール (4) Meepとビューワーのインストール

ようやくここまでたどり着きました。
こちらからMeepのソースファイルをダウンロードします

これまで何度も繰り返した手順と同様に、圧縮ファイルの展開→フォルダ移動→./configure →make →make install でインストール出来ます。

さて、Meepで計算した結果はHDF5のデータとして出力されますが、それを可視化するためのソフトが必要になります。

Meepのチュートリアルで紹介されているのはH5utilsという一連のソフトで、Cygwinに上記と同様の手順でインストール後、コマンド入力により使用します。直接HDF5のデータを可視化するのではなく、pngの様な一般的な画像データに変換します。

Windowベースで作業するなら、HDFViewが良いでしょう。こちらは直接Windows上でインストール出来ます。


人気blogランキングへ
# by tosakam | 2007-07-20 19:18 | 解析