Linux環境でのImageJのバージョンアップ
数ヶ月ぶりにImageJのバージョンアップをした(1.38d→1.38t).

ZIPファイルの入手~展開

http://rsb.info.nih.gov/ij/download/src/ に最新版のソースファイルがZIP形式でおいてある.
http://rsb.info.nih.gov/ij/download.html
からは安定版(1.37)がダウンロードできるが,上記に比べて古い(現在のところ2006年秋のリリース).

% cd opt/ImageJ
% wget http://rsb.info.nih.gov/ij/download/src/ij138t-src.zip

以前のバージョンのファイルを退避する.
% mv api api_backup
% mv ij.jar ij.jar_backup

展開する.
% unzip ij138t-src.zip
% mv source src-138t
% cd src-138t

ソースの整形

ImageJ用プラグインを作成する際には,ImageJのAPIを使う必要がある. ImageJのAPIドキュメントはjavadocで生成できるが,その記述は十分ではない.その場合にはソース自体を参照する必要があるが,インデントや改行コードがまちまちであり, 読みづらいので統一する.

余分なファイルが入っていることがあるので,javaソースファイル以外を列挙し,必要に応じて削除する.

ファイル名を眺める.
% find ij -type f | grep -v "\.java"
% find -type f | grep -v "\.java"

余計なファイルを消す.
% rm .FBCIndex
% rm -rf .FBCLockFolder
% rm .gdb_history

改行コードをLF(0x0a)に統一する.
% find ij -type f | xargs ~/bin/2jis.pl

ImageJには改行なしの"}"で終わっているソースファイルが60くらいある.文法的に間違いではないようだが,astyleによる整形時に問題になる(astyle 側のバグ? "}"が一つ多く出力されてしまう).そのため,前もってファイル末尾が改行で終わるように書換える.tail_ret.pyはそのためのスクリプト.

% find ij -type f | xargs ~/bin/tail_ret.py

astyleでソースファイルを整形.
% find ij -type f | xargs astyle -j --style=java -p -s

もとのファイルがfoo.java.origなどとなっているので消す.
% find ij -type f -path '*\.java\.orig' | xargs rm

コンパイル

(あれば)パッチをあてる.

% patch ij/plugin/AboutBox.java ~/aboutbox.patch

コンパイルし,ij.jarを作る. ただし開発環境であるLinuxでの実行はij.jarではなくbuildを直接使うようにする. IJ_Props.txtのカスタマイズを容易にするため.

% ant build

About画面のカスタマイズ.動作には不要.
% cp ~/about_image.jpg build/about_add.jpg
% ant build

APIドキュメントを../apiに作る.
% ant javadocs

環境設定

build/IJ_Props.txt

ij/Prefs.javaで読み込む.ij.jarにクラスファイルを格納して実行する様式の場合,ij.jar内に入ってしまうので編集が面倒になる.
メインメニュー・ポップアップメニューの全構成を管理する.例えばpopupの最後に popup13=Save などと追加することで画像の右クリックメニューからファイル保存可能になる.
ショートカットキーの一部を管理する.メニュー項目を直接起動することによる.例えば lookup04="Fire"... を lookup04="Fire[L]"... に変更すると,Lキー押下で起動する.

IJ_Prefs.txt

ij/Prefs.javaで読み込む.Windowsの場合,ImageJのインストールディレクトリ(C:\Program Files\ImageJ\等)に存在する.MacOS Xの場合,/home/ユーザ/Library/Preferences/ に存在するらしいが,未確認.Linux場合,/home/ユーザ/ に存在する.
ImageJの終了時に更新されるため,編集する際にはImageJを終了させておくとよい.
ショートカットキーの一部を管理する.メニューPlugins-Shortcutsから追加・削除できるものと同じ.IJ_Props.txtのショートカットキーと重複する場合は無効となる.
最近開いたファイルの一覧や,ImageJのメニューから設定可能な項目を管理する.
プラグインからも,Prefsオブジェクトを用いることで各種パラメタをIJ_Prefs.txtに管理させることができる.

変更点

http://rsb.info.nih.gov/ij/notes.htmlにまとめられている.

開発していて気づいた変更点として,ver. 1.38rでのGaussianBlur.javaの大幅改訂がある.publicメソッドの一部も変更されているため,同ファイルを利用するプラグインについても対応が必要.カーネルサイズが大きい場合,多重解像度を用いて高速に処理するようになった(ソースファイルをざっと読んだ限りでは).それにともない,パラメタが「カーネル幅(画素単位)」から「正規分布の分散」に変更された.従来のパラメタの1/2.5くらいの数値を用いると同等の結果になるらしい.つまり以前 25だったら,新版では10とのこと.
[PR]
by edogawadai_bio | 2007-06-08 23:41 | img
<< COREBlog2 の設置 広域顕微鏡 >>