2015年10月12日月曜日

第34回 ImageJの追加機能についてで学ぶ!

この記事は参考記事を援用して、筆者の考えも交えつつ、記述しています。

lmageJは、ンソースコによって新機能が追加されるために、開発スピードはも速いです。気づいたらつのにか使い勝が良くなってたり、グが修正されて頻繁こりますまた、れたプラグインは、lmageJメインメに追加されることが多く、ートアッマクロ機能よって、ImageJ立ち上げると同時に、みのプラグインが起動するよう設定も可能です。今回は、バージョン1.45以前にImageJに追加された便利な機能や、筆者が見つけたバージョン1.45以降の便利な追加された機能を紹介します。

バージョン1.45以前に追加された機能


ンソースコミュニティよって追加されたンメ機能を紹介します

ハイパースタック

ImageJのメインメューに、Hyperstack(パースタック)う機能があります。パースタックは、タックされた群をライ (Z)、時間フレー (時間軸)とチャン (Channels)に変換しので、Image/HyperStacks/Split ChannelsFile/ Import/Stack From List commands どでスタックとしてみ込んだ画像制御きます。チャとは、一般的にはRGBそれぞれ赤プレーン、プレン、プレーンのことです。よって、RGB画像パースタックれば、数は3になります

画像の変換(Tranform)

Image/Transform〉は、ズーム、トランス(ンニン)と、回転が使やすくなっています(下図)

(選択できる機能が豊富)

バーチャルスタック

1000枚のマルライCT画像なスタックで場合は、モリの使用ての画像みに時間かかります。このような場合有効なのがVirtual stack 機能ですは、画像11枚をたかもスタックしてるような処理画像表および処理する機能です。画像はすべて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/ImageProparties)から、使用環境の詳細を表示できます。
また、これまでの変更点については、直近の情報は、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を使うことによって、作業効率を高め、最新機能も使って新しいプロセスの検証もしていきましょう!

次回も使いやすい機能やマクロプログラムの説明を行います!

参考記事:「山本修司:ImageJで学ぶ実践医用・バイオ画像処理.INNERVISION(23・1) 2008, p91-93」

0 件のコメント:

コメントを投稿