lmageJは、オープンソースコミュニティによって新機能が追加されるために、その開発スピードはとても速いです。気づいたらいつの間にか使い勝手が良くなっていたり、バグが修正されていることが頻繁に起こります。また、優れたプラグインは、lmageJのメインメニューに追加されることが多く、ユーザー側でもスタートアップマクロ機能によって、ImageJを立ち上げると同時に、好みのプラグインが起動するように設定も可能です。今回は、バージョン1.45以前にImageJに追加された便利な機能や、筆者が見つけたバージョン1.45以降の便利な追加された機能を紹介します。
バージョン1.45以前に追加された機能
オープンソースコミュニティによって追加されたメインメニュー機能を紹介します。
ハイパースタック
ImageJのメインメニューに、〈Hyperstack(ハイパースタック)〉という機能があります。ハイパースタックは、スタックされた画像群をスライス数 (Z軸)、時間フレーム (時間軸)とチャンネル数 (Channels)に変換したもので、〈Image/HyperStacks/Split Channels〉や〈File/ Import/Stack From List commands〉 などでスタックとして読み込んだ画像を制御できます。チャンネルとは、一般的にはRGB画像のそれぞれの赤プレーン、緑プレーン、青プレーンのことです。よって、RGB画像のハイパースタックであれば、チャンネル数は3になります。
画像の変換(Tranform)
〈Image/Transform〉は、ズーム、トランスレート(パンニング)と、回転が使いやすくなっています(下図)。
(選択できる機能が豊富)
バーチャルスタック
1000枚のマルチスライスCT画像などをスタックで読み込む場合は、メモリの使用とすべての画像の読み込みに時間がかかります。このような場合に有効なのが〈Virtual stack〉 機能です。これは、画像1枚1枚をあたかもスタックしているような処理で画像表示および処理する機能です。画像はすべてTIFFに変換され、なんらかの処理を加えても、その変更は基本的には保存されません。(別に用意されたマクロを使う必要があります。)画像はディスクレジデント画像として処理されます。スタックの場合は、元画像をそのままつなぎ合わせますので、これらの処理過程と異なることがわかります。
任意ROIの複製機能
任意ROIの複製は〈Image/Duplicate〉で実行できます。実は、1.38以前のバージョンでは、任意のROIの複製はできませんでしたが、これ以降は、保持できるようになりました。
プロファイルプロットの桁数
〈Analyze/Set Measurements/Decimal Places(0-9)〉 にて、プロファイルプロットを小数点以下9桁まで設定が可能となりました。
はずれ値除去フィルタ
Michael Schmid氏 が開発したはずれ値除去フィルタがバージョン1.38から加わっています (Process/ Noise/Remove Outliers)。
JPEGの画質の設定と画像保存時の画質レベル表示
〈Edit/Options/Input/Output…〉を選択すると、JPEGの画質コントロールダイアログが表示されます。希望する画質の段階を0~100の数値として入力して、UseJFileChooser to Open/SaveのチェックをONにすると、画像の保存時にファイルダイアログのタイトルとして画質の数値も表示されるようになります。JPEGの画質の周波数領域での状態をより詳しく知りたい場合は、ImageJのプラグインDCT(Discrete Cosine Transform)を使用すれば、量子化をする前の画像の8ブロックごとの周波数情報が得られます。
動画コントロール
〈Image>Stacks>Animation>Animation Options...〉のダイアログから、動画の詳細設定ができます。例えば、Animated Gifのフレームレートもここで調整できます。
ImageJの総合的な情報表示
(Plugins/Utilities/ImageJ Proparties)から、使用環境の詳細を表示できます。
また、これまでの変更点については、直近の情報は、Help>ImageJ News…から、これまでの全変更履歴は(http://imagej.nih.gov/ij/docs/all-notes.html)から、辿ることができます。
また、Help>Update ImageJ…をインターネットにつながっている環境で実行すると、自動的に最新版のImageJの実行ファイルがインストールされます。(プラグインやマクロなどはそのまま引き継がれます)。
実は、このHelp機能のImageJサイトへのリンクも、バージョン1.38で追加されています。
最近の革命(個人的な雑感)
以降、個人的に革命的だと感じたバージョンアップに伴う改良点を少し紹介します。
Java script
バージョン1.41から、JavaScript対応になりました。
Mozilla Rhino interpreterで実行します。Pluginsフォルダのtoolsに、JavaScript.jarが入っていれば、実行できます。(デフォルトで入っています。)
Tutorialのスクリプト例を以下に示します。
この例では、logファイルテーブルに0から9までのカウントを表示して、サンプル画像を3枚表示します。
実行するときは、以下のソースをコピーして、ImageJのプラグインのNewからJavaScriptを選択して、起動したテキストエディタに貼り付け、Run Macroしてください。
//ーここからー
importClass(Packages.java.io.File)
importClass(Packages.ij.IJ);
importClass(Packages.ij.plugin.frame.RoiManager);
importClass(Packages.ij.gui.GenericDialog);
imp = IJ.getImage();
//ログファイルを表示
for (var i = 0; i < 10; i++ ) {
IJ.log("i is " + i);
}
//画像を表示
names = ["blobs.gif", "boats.gif", "bridge.gif"];
for (var i = 0; i< names.length; i++) {
var imp = IJ.openImage( base_url + names[i] );
// process image
// ...
imp.show();
}
// ERROR: variable 'imp' is not visible outside the loop
// IJ.log("The last image opened was: " + imp);
//ーここまでー
Python
JythonというPythonをJavaで操作するためのインタープリタを使って、ImageJプラグインを開発できます。ImageJのJREフォルダに、Jython.jarをインストールして利用します。
JavaScriptと違って、JythonをImageJで簡単に利用するにはまだ時間がかかりそうですが、プログラミングスキルのある方は、ImageJの第三世代(ImageJ>ImageJ2>Fiji)であるFijiを利用して、いろいろなことに取り組めそうです。
こういった、Javaの互換性のあるプログラミング言語を利用した活用方法は広がっています。このブログでも紹介していますが、OpenCVやVTKをはじめ、今後は、JRuby、Sleep、BeanShell、Groovyなど、いろんな言語が使えるようになるんでしょうね。
その他、ちょっとしたツール
Look up tableリスト
最近、グレースケール画像の見せ方を変えて表示することも増えています。
こんなときに、どんな色にできるかを一覧表示できると便利ですね。
ImageJでは、Image>Color>Display LUTsで、一覧を表示できます。この機能はバージョン1.47から実装されました。あと、自分でLUTを作ることもできます。
今回は、過去のバージョンアップにより改善された機能の一部について紹介しました。
このように、オープンソースコミュニティによってImageJは日々進化しています。
常に最新のImageJを使うことによって、作業効率を高め、最新機能も使って新しいプロセスの検証もしていきましょう!
次回も使いやすい機能やマクロプログラムの説明を行います!
Reference
- 「山本修司:ImageJで学ぶ実践医用・バイオ画像処理.INNERVISION(23・1) 2008, p91-93」
0 件のコメント:
コメントを投稿