lmageJは1997年にリリースされて以来、オープンソースコミュニティよって加速的な開発協力とデバックが行われており、現在では、世界中の医学研究者やバイオサイエンティストが使用する画像解析ソフトウェアの定番として愛用されています。
一方、科学技術計算や大規模な可視化プログラムのための定評のあるライブラリは、歴史も古く、テストが重ねられ、より精錬された関数群が用意されています。
今回は、lmageJを医学やバイオサイエンス分野だけでなく、より多くの科学技術計算ライブラリや可視化ライブラリをバインドし、強力な多目的なツールとして使用する方法を述べます。
ImageJとその周辺プログラムインターフェースの概要
ImageJは、Javaベースの画像処理および解析プログラムですので、Javaで書かれたコードや関数群であれば実装できます。
ImageJはデータベースとの連携、医用画像のネットワーク通信、科学技術計算からGPU(graphics processing unit)を利用した高速三次元可視化処理まで、自在に利用できることは意外に知られていません。
本ブログでも、参考記事を元に、VTK(Visualization Tool Kit)との連携による三次元ボリュームレンダリングや、DICOM通信方法などの紹介を行ってきました。
これらはいずれもJavaのライブラリ群をImageJにプラグインしたことによって実行され たものです。Javaには、標準のコア部分のAPI(application program interface)と称されるソフトウェアを開発する際に使用できる命令や関数の集合と、標準では含まれない各種拡張機能部分のAPIに分類されています。
ImageJを拡張したければ、これらのAPIを利用することでかなり高度な画像処理や動画、三次元画像処理などが可能になります。ここから、これらの拡張機能の説明を行います。
Javaの拡張APIの概要
Javaには、Java Media APIというオプションのプログラム群があり、これらはOracle社のホームページからダウンロードできます。拡張API として、Java 2D、Java 3D、Java Advanced lmaging、Java Binding for OpenGL、Java Image I/OおよびJava Media Framework(JMF)が紹介されています。これらのAPIをlmageJに実装することによって、コンピュータグラフィックス、画像処理、多様な画像入出力、動画像処理音声解析などの マルチメディア対応の処理が可能になります。
以下に各APIを概説します。
1. Java 2D
より高機能な二次元グラフィックスや画像化を行うためのAPIで、特に描画(線画、画像)やアルファチャネルによるカラー空間を定義するなど、表示に関連するクラス(プログラムで扱う変数や機能を一塊にしたもの)のセット
2. Java 3D
三次元の物体に対してのレンダーや制御をハイレベルなシーングラフベースのモデルとして提供します。簡単に言えば、高画質・高速の三次元グラフィックスのためのAPIです。 Java 3Dのデモのホームページ(https://java3d.java.net/) でもその内容を学ぶことができます。
3. Java Advanced Imaging
Javaの標準機能による従来のイメー ジングAPIよりも高機能な画像処理パッケージとなっています。
4. Java Binding for OpenGL
OpenGLのJavaのバインド用のAPIで”JOGL”と略称されて使用されています。
その名の通り、OpenGLをJava言語で操作できます。
5. Java Image I/O
通信ネットワークを通した画像の入出力などをサポートし、JAI Image I/O ToolsクラスはJPEG-LS、JPEG2000およびTIFFなどの比較的新しいフォーマットもサポートしています。
6. Java Media Framework
JMFは、音声、ビデオ、その他時間ベースのメディアなどを使用するためのAPIです。
ImageJを用いた実装例の紹介
1. ImageJとJava 3D
ImageJのプラグインとして、Java 3Dを実装した例を示します。
Prof. Dr. Martin HeisenbergをリーダーとするVirtual Insect Brain Projectは、昆虫の脳機能解析を行っているラボであり、Java 3DをImageJに実装し、ドイツの宇宙工学者、数学者、バイオサイエンティストらの間で使用されている “Amira”と称されるVisual programming toolとの互換性のある入出力インターフェイスを、独自にImageJのプラグインとして実装しています。
図は、Java 3Dを実装したImageJを用いて、MRIのサンプルをvolume renderingや、多断面再構成しています。
(Volume rendering)
(MPR: multi planer reconstruction)
マウス操作でインタラクティブに拡大・移動・方向変更ができ、ユーザビリティも向上しています。
以前、VTKでの三次元ボリュームレンダリングをImageJで扱う方法を紹介しましたが、いろいろと比較しながら、ImageJの機能拡張を行うとよいと思わせてくれるいい例です。
具体的なJava 3Dのインストール方法やImageJでのプラグインとしての実装方法は、また別の機会に解説していきます。
2. ImageJとOpenGL(JOGLの利用)
JOGLを利用するには、まず、JOGLをインストールして、ImageJのプラグインによってJava OpenGLについて公開されているサンプルプログラム(http://www.ulfdittmer.com/imagej/opengl.html) を実行する方法があります。
2015/10現在は、このサンプルを動作させるために、EclipseなどのIDEからImageJをソースコードでビルドして、JOGLの主要な.jarにパスを通してビルドする方法が良さそうです。
*********************************************************************************************************************
※pluginsのjarsフォルダに最新の主要なJOGLのjarファイルを入れて、プラグインを実行しても、いくつかのパスがうまく読めませんでした。
(備忘キャプチャ)
バージョンを過去のもの(1.1.1)にあわせると、サンプルコードも動くかもしれません。時間のあるときに更新いたします。すみません。
*********************************************************************************************************************
OpenGLはクロスプラットフォームに対応しており、CADやデザイン、および科学技術計算や医学分野における可視化分野では、DirectXなどのエンターテイメント用途重視のグラフィックスAPIよりも人気が高いようです。
また、最近では、急速にWebブラウザ駆動型のアプリケーションのニーズも高まってきていることもあり、HTML5やWeb GLといった次世代のプログラミング言語が開発されていますので、今から学び始める方は、基礎を終えた後は、ぜひWebにチャレンジしてみてはいかがでしょうか。私もチャレンジ中です!
おわりに
以上、lmageJとその周辺のアプリケーションプログラミングインターフェイスについての概説を行いました。ImageJは、単なる画像処理ソフトウェアではなく、かなりインタラクティブに画像処理操作ができることがわかります。
このような高度な技術を結集させたものとして、MIPAV(Medical Image Processing, Analysis, and Visualization)という、Javaを用いたNIH(米国国立衛生研究所)の画像解析ソフトウェアもあります。
こちらのページで詳細に紹介されています。
本家はこちらです。http://mipav.cit.nih.gov/pubwiki/index.php/Main_Page
こちらのページで詳細に紹介されています。
本家はこちらです。http://mipav.cit.nih.gov/pubwiki/index.php/Main_Page
これは、NIHで開発中のソフトウェアで、Java 3D、NVIDIAのCG、DirectX、JOGL、JMFなどのAPIを利用して、GPUによるボリュームレンダリングやDICOM通信、PET/CTのフュージョン、ディフュージョンテンソルのトラクトグラフィ、各種画像解析機能などを豊富に実装しています。
このようなアカデミア発の看板ソフトウェアを参考にしていくと、商用の製品と比べながら、次の波になる臨床利用可能な解析技術が見えてくるかもしれません。
次回は、今回説明を行ったAPIの具体的な実装方法を紹介します!
Reference
- 「山本修司:ImageJで学ぶ実践医用・バイオ画像処理.INNERVISION(23・7) 2008, p82-84」
0 件のコメント:
コメントを投稿