2015年10月1日木曜日

第30回 連続画像処理 ImageJ-VTK(The Visualization ToolKit)の活用で学ぶ!

第30回 連続画像処理 ImageJによるオープンソース三次元可視化ライブラリの利用-VTK(The Visualization Toolkit)の活用で学ぶ!

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

lmageJに三次元可視化ライブラリをプラグインとして実装しようとするプロジェクトは、いくつかのWebサイトでも紹介されています。
その中でも、特に科学研究用の三次元可視化ライブラリとして世界的に使用頻度が高く、クラス群が充実しているのが 「VTK(The Visualization Toolkit)」です。

VTKは単なる三次元可視化だけのライブラリではなく、さまざまな科学的解決のための豊富なアルゴリズムがパッケージ化されています。最近では、オープンソースの高速・高機能三次元ワークステーションとして有名になったMacOSX専用DICOMビューワ「OsiriX」にも、このVTKの機能が多く搭載されています。

今回は、lmageJによるVTKのコントロールの一例を紹介しながら、三次元可視化について解説します!

VTKについて


ImageJにおける三次元画像処理の基本的な操作方法やlmageJマクロ言語を用いた三次元アニメーションの制御などは、本連載の第26回や第28回で触れてきました。

VTKは、ImageJでコントロールできる三次元画像処理やプログラム制御できるさまざまな画像解析機能を、可視化という分野で比較すると、その機能ははるかに上回っています。このVTKがJava言語でコントロールできれば、これをImageJに実装して、強力な2D/3Dパッケージソフトウエア化しようという試みは、オープンソースブームの流れからするとごく自然な成り行きです。

VTKは、オープンソースとして自由に利用されている多言語ライブラリであり、C++クラスライブラリやそのラッパーとしてTcl/TK(ティクルティーケー)、PythonおよびJavaなどでもコントロールでき、その本体は開発・提供元のKitware社のWebサイト(http://www.vtk.org/download/)から 無償でダウンロードできます。

スカラー、ベクトル、テンソル、テクスチャ処理などのボリューメトリックな手法から、ポリゴン削減処理、メッシュ平滑化、カッティング、コンツーリング、ドローネ三角分割法などの先進的なモデリングの手法まで、多様な処理をサポートしています。

二次元および三次元グラフィックスアルゴリズムの両面から、さまざまな画像処理アルゴリズムが利用できます。これらのアルゴリズムは、オブジェクト指向に基づいており、Windows、MacOSX、Linuxなど、主要OSに対応したマルチ・プラットフォーム・ライブラリとなっています。

VTKの一般的な使用方法について


VTKを使い始めるためには、VTKのライブラリをインストールしなけれなりません。2015/10現在の最新バージョンは6.3.0です。

インストールには幾つかのアプローチがあります。

①最新のリリースバージョンをダウンロードする。
②Kitware社から販売されているVTKテキストブックを購入し、その中のメディアからインストールする。
③バージョン管理サーバから直接ソースコードを入手して、コンパイルして利用する。

オススメは、①の手法です。

各OSでインストール手順は異なります。WindowsかLinuxは、このブログを書いている今は、Pythonベースのインストーラが用意されているので、ダウンロードしたインストーラを実行するだけです。Macは、もう少し手間がかかります。筆者は、Macユーザですが、今回はちょっと時間の関係でWindowsでの操作例で示していきます。

VTKのインストールは、Windowsならインストーラをダブルクリックして、指示の通り進めていくだけでインストールが完了します。

インストール以降の詳細は、VTKのWebページやVTKのテキストブックに譲って、ImageJへの実装へ話を進めます。

ImageJプラグインによるVTKのコントロール


ImageJのプラグイン提供者JerekSacha氏が自身のWebサイト(http://ij-plugins.sourceforge.net/)で、java言語による世界的に定評のある画像処理や三次元可視化ライブラリをlmageJへ実装するプラグインを紹介しています。

汎用の画像処理ライブラリとして、Oracle社(サンマイクロシステムズを吸収合併した会社)が提供しているJavaベースの画像処理ツール“JavaAdvanced Imaging(JAI)”やJAI用のAPI“JAI Image I/0”もlmageJプラグインとして当サイトからダウンロードできます。

ライセンス形態は、GNU LibraryまたはLesser General Public Licens(LGPL)とされていますので、無償でソースコードが使用できます。

これらのプラグインの最新版は、2015/10現在、Java1.7以降が必要ですので、Javaのバージョンに注意しましょう。もしバージョンが低い場合には、必要に応じてOracle社のダウンロードページからダウンロードしてください。

本稿では、Javaのバージョンの関係で、ij-plugins_toolkit_bin_1.5.0を利用していきます。

VTKをlmageJに実装するには、まず、当サイトから以下の3つをダウンロードします。


  • “VTK-5.0.x”(本稿執筆時点で、VTK-5.0.3)
  • “ij-pluginToolkit v.1.5.0”
  • “ij-VTK”


これらの3つのファイルを、すべてPlugins直下にコピーしましょう。

このうち、VTK-5.0.3フォルダ内に、丁寧にバイナリファイルとしてコンパイルずみのダイナミック・リンク・ライブラリ(VTK-5.0.3内のvtk.jar:Javaのラッパー)が提供されているので、このディレクトリに対して環境変数のパス("C:¥Program Files¥ImageJ¥Plugins¥VTK-5.0.3"など)を通すと、無事にVTKが起動します。環境変数の設定は、第二回のImageJインストール編で説明しています。

うまくインストールできると、Plugins>VTK>VTK versionをエラーメッセージなく表示できます。


このプラグインは、8bitグレースケールで処理していきます。(PCのスペックに応じて、調整可能かもしれません。)
まず、スタックをインポートしてから、8bitグレースケールにします。


それでは、早速、VTKプラグインの中の〈SurfaceRendering(VTK)〉を選択し、実行してみます。


微妙です。すみません、久々のWindowsPCで、スペックも低いので、すぐフリーズしてしまうPCと格闘しながら、なんとなくオパシティカーブを変えて、Applyして表示しています。

使ってみたことのある方はわかると思いますが、GUIの操作はもっと改良されていくと思いますので、あしからず。

しかし、ImageJのプラグインでも、VTKのポテンシャルを生かすことのできる可能性を垣間見えました。
他にも、すでに、Volume Viewerなどの優れたImageJプラグインがありますが、市販のワークステーションのように、自分の思うがままに、VTKを使ってインタラクティブな三次元画像を操作するインターフェイスを動作させたい方、このプラグインの拡張をご検討されてみてはいかがでしょうか。

画像処理の改良が進むことが期待できます!
次回も続けて連続画像の解析について説明します!

参考記事:「山本修司:ImageJで学ぶ実践医用・バイオ画像処理.INNERVISION(21・8) 2006, p57-59」

0 件のコメント:

コメントを投稿