Re - ImageJで学ぶ!: 2015-11-15

2015年11月17日火曜日

第51回 ImageJの高次画像処理パッケージーFijiについてーで学ぶ!

ImageJその豊富な機能として、多くのプラグインをオリジナル機能として提供してきました。その数は2013年時点で400を超えています。

(ImageJ プラグイン数の推移(参考文献1))

そして、これらのプラグインを独立した画像処理や解析機能として使用するのではなく、多くのプラグインを集めてパッケージ化したlmageJモジュールが存在します。

その中でも、“Fiji”は、高品質なプラグインパッケージとして、脳神経科学者などの間で使用されています。今回はこの画像処理パッケージFijiを紹介します。

FijiについてーFiji Is Just ImageJ”—a "batteries-included"


(Fiji メインウィンドウ)

Fijiは、“Fiji Is Just ImageJ”というフレーズで開発されているImageJ上で動作するJava言語の画像処理パッケージです(Fijiは、ImageJを凌駕するというより、むしろImageJそのもので、「ImageJはここからが本番」というニュアンスと個人的に解釈しています。)

登場した当初に発表されたスライドはこちら(http://fiji.sc/_images/1/14/Fiji-ELMI2009.pdf

"batteries-included"というのは、標準的なライブラリを柔軟に使えますという表明です。
想定されるFijiの利用環境は次のように説明されています。


Fijiの利用環境

Fijiは、ImageJに関わる多くの開発者によってサポートされています。その代表的な開発施設は、University of Wisconsin-Madison(ウィスコンシン大学)のLaboratory for Optical and Computational Instrumentation(LOCI)と、Max Planck Institute of Molecular Cell Biology and Genetics in Dresden, Germany(マックス・ブランク研究所)です。
マックス・プランク研究所は、その名のとおり高名な物理学者マックス・プランクにちなんで名づけられた施設で、その前身のカイザー・ヴィルヘルム協会時代にアインシュタインが所長を務め、研究していたことでも有名な施設です。

2009年までのFijiの開発を可視化したSupplement動画をご紹介します。


このlmageJのプラグインパッケージFijiの使用対象者は、脳神経科学者のほか、細胞生命科学者や寄生虫学者、遺伝学者や材料科学などで、様々な専門領域にも応用されています。このパッケージはオープンソースであり、開発用スクリプト言語としてJavascript、JRuby、Jythonなどが利用できます。

(いろいろなスクリプトに対応)


以下、Fijiに実装されている主なプラグインを示します。ImageJのプラグイン選定とは少し方向性が異なることがわかります。ImageJとともに、これらのプラグインを使いこなせると、画像処理に関しては世界水準で"最強"と言っても過言でないかもしれません。

(プラグインメニュー)

(利用可能なプラグインのリスト)

プラグインを一部抜粋してご紹介します。

  • 3D Viewerの例


ImageJ同様に、3D Viewerも実装されています。
(左から、Surface、VR、MPR)
  • TrakEM2の例(電子顕微鏡画像のレジストレーション、セグメンテーション、アノテーション、3Dモデル操作を可能にするプラグイン)


(Treelineの抽出例)

(Treeline抽出アルゴリズム)
(筒状にエリアを定義(左)したあと、その筒の中の各ノードで半径の位置を経路として設定(右))

この他、実際の操作なども動画でたくさん紹介されていますので、興味のある部分だけ試してみてはいかがでしょうか。

https://www.youtube.com/user/fijichannel/videos?shelf_id=1&view=0&sort=dd

Fiji活用方法


Fijiの各プラグインは、通常のlmageJのプラグイン追加操(lmageJフォルダ下のプラグインフォルダに当該jarファイルをコピー)と同じ操作で、追加できます。この場合は、ImageJのプラグインとして機能するため、Fijiパッケージそのものをインストールしなくても大丈夫です。

Fiji全体のチュートリアルについては、チュートリアルページにその簡単な概説があるので、参照することをお勧めします。

Fijiで読み込めるファイルは生命科学分野で使用される画像処理フォーマット網羅されています。

(インポートできるファイルフォーマット)

今回は、ImageJの高次画像処理パッケージFijiについて、その紹介を行いました。バイオイメージングの研究に役立つプラグインが豊富に収集されているため、電子顕微鏡を用いる研究者からマクロな画像を取り扱う研究者まで、うまくこのパッケージを活用できそうですね。


参考記事:「ImageJで学ぶ実践医用・バイオ画像処理.INNERVISION(24・9) 2009, p100-101」

参考文献
  1. NIH Image to ImageJ: 25 years of image analysisNature Methods 9, 671–675 (2012)
  2. Fiji: an open-source platform for biological-image analysisNature Methods 9, 676–682 (2012)

2015年11月16日月曜日

第50回 ImageJのバージョンアップと確認方法で学ぶ!

今回は、ImgaeJの基本に立ち返って、バージョンアッップの確認方法について触れていきます。lmageJの新バージョンがリリースされるサイクルは短いです。リリースノートは数日の単位で何らかの追加項目が報告されています。以前は使い難かった機能でも、オープンソースコミュニティに参加するプログラマーによって、いつの間にか改良されて使いやすくなっていることもしばしばです

今回は、バージョンアップの中で改良された機能などの一部をダイジェストとして紹介します。

ImageJ Newsとバージョンアップの方法


ImageJの最新の情報は、“lmageJ News”サイト(http://imagej.nih.gov/ij/notes.htmlに掲載されています。このサイトには、いろいろな開発支援ツールや機能が追加されたことをその開発者への謝辞とともに説明がなされています。また、デバッグ情報(プログラムの不具合の修正)なども記載されています。このサイトへは、上記のURLをWebブラウザから検索するか、ImageJメニューのHelp>ImageJ News...からも見れます。ただし、活発に更新されているので、サーバーサイドで編集中のときはアクセスできない場合もありますので、このあたりは理解してあげてください。


ユーザーが、現在使用している古いバージョンのlmageJを上記のような機能追加やプログラム修正がなされた最新バージョンのlmageJに置き換えたい場合は、ImageJのメニューの機能から選択できます。インターネットが利用可能な環境下で、ImageJメニューの〈Help/Update ImageJ...を選択すれば、次のようなダイアログが表示されます。

(2015/11/15時点)

このダイアログのドロップダウンメニューで使用したいバージョンを選択し、OKボタンを押すと、自動的に新規のImageJがリスタートされます。この際オリジナルで作成したプラグインプログラムやマクロのプログラムは保持されるので、バージョンアップによってプログラム群が消えることはありません。

ImageJ Newsの内容について


ImageJNewsについてどのような内容が書かれているか。以下にImageJサイトを紹介します。

1.50a 21 July 2015
  • Thanks to Gerald Torgersen, added the Plugins>Shortcuts>Add Shortcut by Name command and removed the obsoletePlugins>Shortcuts>Install Plugin command.
  • Thanks to SyntonicC, add a "Rotate around image center" option to the Edit>Selection>Rotate command.
  • Thanks to Thomas Julou, cursor coordinates are displayed in pixels in the status bar if either the alt or shift keys are down.
  • Thanks to Radoslaw Ejsmont, the ChannelSplitter.getChannel() method works with RGB images and stacks and it throws an illegal argument exception if the channel argument is out of range.
  • Added the setThreshold(lower,upper,"raw") macro function and the IJ.setRawThreshold(imp,lower,upper,mode) method.
  • Fixed a bug that caused JavaScripts to sometimes unexpectadly display values in the Log window on Java 8.
  • Fixed a bug that caused the eval("js",code) macro function to fail on Java 8.
  • Fixed a bug that sometimes caused the setThreshold() macro function to throw an exception with 16-bit images.
  • Thanks to Megan Hagenauer, fixed a bug that caused incorrect line selection measurements on density calibrated (global) images.
  • Thanks to Jerome Mutterer, fixed bugs that caused a new dialog to be opened each time you pressed shift-ctrl-f in an editor window to open the macro function finder and caused focus to be lost when you closed the dialog.
  • Thanks to Michael Schmid, fixed a bug that caused the particle analyzer to ignore selections on RGB images.
  • Worked around a Java 8 bug on Macs that caused ImageJ to freeze when changing the display mode in the "Channels" dialog.
  • Thanks to Takashi Abe, worked around a Java 8 bug that caused mirrored cursors in synched windows to not be visible.
  • Thanks to Thorsten Wagner, fixed a bug that caused the "Use names as labels" setting in the ROI Manager's More>>Labels dialog to not be persistent.
  • Thanks to Jerome Mutterer, fixed a 1.49o regression that caused live profile plots of wide lines to flicker.

上記のような、新たに追加された機能やマクロ、プラグイン、ImageJのバグ修正のレポートなどが、毎日のようにWeb上で報告されています。ユーザはこの情報をもとに自らもチェックし、さらに改良を追加していくこともできますね。

追加機能によるImageJを用いた検証例


上記の機能追加やバグFixによって何が効率化されたか、青字部分で示した項目だけ見ていきましょう。

  • Thanks to SyntonicC, add a "Rotate around image center" option to the Edit>Selection>Rotate command.
Rotateコマンドで、ROIを画像の中心を軸に回転させることができるようになったそうです。試してみましょう。

(これまでの方法)

(ROIがROI中心で回転)

(追加された機能:画像中心から回転)

(ROIが画像の中心から回転している)

  • Thanks to Takashi Abe(日本の方!!), worked around a Java 8 bug that caused mirrored cursors in synched windows to not be visible.

(マウスカーソルのミラーリングもバグがFixされている。)
Analyze>Tools>Synchronize Windows 
(利用前に、複数の画像を開いておく)

  • Thanks to Thorsten Wagner, fixed a bug that caused the "Use names as labels" setting in the ROI Manager's More>>Labels dialog to not be persistent.
"Use names as labels"設定下で、ラベル名をRenameしても、画面に反映されなかったバグが修正されている。)
Analyze>Tools>ROI Manager

"Use names as labels"設定は、More>>から、Labels...で設定できる。

以上、今回は、ImageJのバージョンアップその内容の確認方法について説明を行いました。ImageJは、日々、バグの修正および機能追加がされており、優れた画像処理や解析機能を開発した場合、のプラグインは、バージョンアップごとにImageJ本体のデフォルトの機能として新たに組み込まれるようになっています。
世界の科学者が利用するImageJ、あなたの手で作ったプラグインを公開してみてはいかがでしょう。多少コード記述方法のセンスがなくたって、有用な新しい処理ができるとなれば、きっとコミュニティが助けてくれるのではないでしょうか。

参考記事:「ImageJで学ぶ実践医用・バイオ画像処理.INNERVISION(24・8) 2009, p100-101」