2015年10月8日木曜日

第33回 ImageJマクロを用いた画像処理の自動化で学ぶ!

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

lmageJを用いて画像処理および画像解析を行う場合、ユーザは、目的とする最終結果を得るまでにいくつかの手順を踏んで一つひとつ処理を行う必要があります。
lmageJを使った作業効率を上げるために処理したい画像をlmageJに読み込んで、一連の処理過程を自動化し、最終結果のみが得られれば、大変便利ですよね。

また、lmageJは起動時、その使用メモリを最小限に保つために、像ビューワをあらかじめ開くことなく、画像処理メニューのみを表示していますので、普段から気の利く医用画像処理ビューワを使用しているユーザにとっては、シンプルすぎて逆に最初の操作に戸惑うかもしれません。

今回は、できるだけユーザがそれぞれの環境で快適にlmageJを使用する方法を紹介しながら、画像解析方法を解説します。

jarファイルの起動


ImageJで解析を始める場合には、まず、ImageJを起動して、画像を読み込んで、プラグインを起動して・・・といった作業が必要になりますが、こういった作業は、細くなればなるほど、再現性と作業効率が課題になってきます。

このような課題に対処する方法の例として、起動時のバッチファイル活用、基本的なマクロ、レコード機能の活用などが考えられます。

少し前までは、プログラムのjarファイルを、コマンドラインから起動するなどの、少し敷居の高い起動方法しかなかったときもありましたが、近年では、ダブルクリックで起動できるようにいろいろと改良されてきています。

例えば、もう読者の方にはおわかりのように、Pluginsフォルダにプラグインをインストールすれば、ImageJが動けば、インターフェース上でいろいろな操作ができます。

一応ご紹介しておくと、jarファイルから起動する主な方法は二つあり、一つは、ダブルクリックで起動可能な状態でコンパイルされ、実行可能な状態にあるjarファイルを、そのまま起動する、もう一つは、コマンドラインから起動する方法です。コマンドラインから起動するには、Windowsならコマンドプロンプト、MacOSXならターミナルを使って、まず、jarファイルの保存されているディレクトリまで、"cd"コマンドでパスを指定して移動してから、"java -jar ◯◯.jar"と、いう風に、起動したいjarファイル名を指定して起動することができます。コマンドプロンプトやターミナルの操作方法については、割愛させていただきます。

自動化処理の一例(DICOMヘッダから必要な情報だけを表示する)


医用画像は主に、DICOM規格に則って構成されています。このDICOMデータは、DICOMヘッダ情報を持っていて、なんらかの画像処理を行う場合は、このDICOMヘッダ情報を参照する必要があります。”Show info”を参照すれば、画像に付帯した全DICOMヘッダ情報リストを参照できます。

しかし、実際には、必要な情報だけを参照したいという状況が多々あります。このようなときに、必要なタグ情報だけを抜き出す処理を自動化しようかなあ、と、誰でも思うと思います。

ここに、DICOMヘッダを抜き出すためのサンプルマクロプログラムを示します。 

//ここから
macro "test20151008"{
   studyDescription = getInfo("0008,1030");
   imagePosition = getInfo("0020,0032");
   pixelSpacing = getInfo("0028,0030");
   print("Study Description: "+ studyDescription);
   print("Image Position: "+imagePosition);
   print("Pixel Spacing: "+ pixelSpacing);
}
//ここまで

このマクロの実行結果は次の通りです。
DICOMタグに格納された値がリストされるマクロでした。
getInfo()メソッド内のタグ番号を変えたり、追加したりして、作業の効率化にお役立てください。

マクロ関数の追加機能について(ImageJ 1.38以降)


ImageJのバージョンが上がるにつれて、マクロ機能も強化されており、使用できる関数が増えています。ROIの描画、プリント機能、ファイル入出力関数、インターネットのURLからのダイレクトなテキスト情報の取得など、多彩な関数が追加されています。

これらの関数をマクロ言語によりユーザーオリジナルのコントロールを行う場合は、ImageJのバージョンを最新版に上げておかなけばなりません 

以下のWebページに、関数の詳細が載っています!
http://rsb.info.nih.gov/ij/developer/macro/functions.html

上記関数の使用サンプルコードは、実はImageJのメニューのヘルプから参照できるので、使用例を参考にコードを自分でアレンジすることをお勧めします。
今回は、マクロ機能について解説を行いました!
やっぱり最新版のImageJを使いたいですね。アップデート機能(Help>Update ImageJ...)があるので、久しぶりに使うときは、アップデートをしてから使うといいかもしれません。執筆時点の最新版は、ver.1.50cです!実は、この機能で、ダウングレードもできます。




次回も続けて、ImageJの最新の機能の情報を提供します!

参考記事:「山本修司:ImageJで学ぶ実践医用・バイオ画像処理.INNERVISION(22・12) 2007, p69-71」

0 件のコメント:

コメントを投稿