2015年10月14日水曜日

第35回 ImageJマクロ言語のプログラミングテクニックで学ぶ!

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

ImageJは、オプンソースのソフトウェア、ユ自身でも目的じたオリジナルなプグラムを作成できます。C言語やベーシック言語などの一般的なプログラミング言語を勉強しなくても(していれば尚更)、非常簡単画像処理プグラムを作成できるとろがImageJみの1つです。
特に、ImageJマクロ語を用いた関数群は、バージョンが上がるごとに充実してきており、ImageJのプラグイを開発するためJavaサンプグラムも多く提供されています

今回、特にこのImageJ言語ログラミングテクックを紹介いたします。

マクロ言語によるプログラミングテクニック


ImageJの言語とはどようなものか、基本的なことは、本連載28で述てきたので割愛します

そして、早速ここでは、だれでも欲しいと思ってしまう、一連の処理の自動化「マ言語を用いた像処理ッチ理」テククを紹介します。 
ここでいうバッチ処理とは、ユが行う連の画像処理手順を自動化し、作業率化す理で

ImageJでッチ処理を行う際、最も簡単方法は、ImageJのメニューから(Plugins/ Macros/Record)選択して、処理作業Recorderエディ上に自動的 コマン(命令)を記録する機能を活用する方法です。

この処理で、レコードする一作業終了すればRecorderディタ上に一連の処理のマクロが自動記述されます。そして、このエディタ上のCreateボタことで、Macroとして、これらの処理コードが自動的にマクロコード化されます。以上の操作を行ったのち、このを実行すると、一連の処理が自動で処理されます。もう、自分の手を、頭を、繰り返し使う必要がありません。


理では、当然、ユーザーは最初にマクロを記載するまでのレコード機操作をマュアルで行わなければなりません。ただし、上述のように、ImageJこの内容を関数記録ることができますので、処理を繰り返したい場合、他の人にも共有したい場合や他の一連の処理の中に組み込みたい場合など、利用方法が広がると思います。

マクロの例として、Volume Viewerプラグインのマクロが公開されています。setBatchMode数を用たバッチ理のサンプルプグラムになっています。
マクロコードは次の通りです。

//ここから
setBatchMode(true);
  run("T1 Head (2.4M, 16-bits)");
  stack1 = getImageID;
  stack2 = 0;
  n = 36;
  for (i=0; i<n; i++) {
    showProgress(i, n);
    selectImage(stack1);
    angle_y = i * 10;
    run("Volume Viewer", "display_mode=4 scale=2.5 axes=0 interpolation=2 angle_x=0 angle_z=0 angle_y="+ angle_y );
    run("Copy");
    w=getWidth; h=getHeight;
    close();     
    if (stack2==0) {
      newImage("Plots", "RGB", w, h, 1);
      stack2 = getImageID;
    } else {
      selectImage(stack2);
      run("Add Slice");
    }
    run("Paste");
  }
  setSlice(1);
  run("Select None");
  setBatchMode(false);
close();
//ここまで

Recorder機能で貼り付けて、名前をつけて保存します。

ここで注意すべき箇所は、setBatchMode関数の引数を”true”にすることと、ImageJの使用物理メモリの許容を考慮することです。

ImageJマクロを躓かずに利用するために


ImageJ Macro LanguageProgrammer’s Reference Guide v1.46dに、チュートリアルコードがたくさん記載され、公開されています。

このチュートリアルの日本語化は、ぜひ、Visionary Imaging Services, Inc.が取り組ませていただきたい貢献活動です。

以上、主に、マクロのRecorder機能から、マクロ言語の自動処理への利便性について触れました。

上述のような、3D画像処理が可能なマクロ処理をはじめ、ユーザがやりたい処理を、思うがままに、再現性を99.9パーセント担保して、実行してみる術を身につけるために、試してみてはいかがでしょうか。

今回はImageJマクロ言語のプログラミングについてサンプルを用いて例示しました!
次回は、ImageJを用いた統計画像処理について説明を行います! 

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

0 件のコメント:

コメントを投稿