【初心者】画像解析で楽しよう!大学院生がすすめるImageJでのマクロ(自動化)の組み方

大学院生がすすめるImageJでのマクロ(自動化)の組み方

スポンサーリンク

みなさん、こんにちは。

大学院生の Gorori と申します。

この記事では、

  • マクロとは?
  • マクロを組むメリット
  • ImageJでのマクロの組み方
  • サンプルファイルの内容説明

の4点について紹介したいと思います。

どんな人におススメの記事?

  • マクロを使いたいけど、プログラミングはしたくない人
  • 画像解析を行う大学院生

マクロとは?

コンピューターの処理を自動化させるための機能のことを言います。

この機能を使えば...

例えば、
画像を読み込む→画像の閾値を設定(定量範囲の設定)→定量→定量データを保存→定量範囲を示した画像の保存
といった処理を自動化することができます

つまり、一度マクロを組んでしまえば、あとはフォルダ内の画像を全て指定さえすれば、自動で処理を行ってくれるわけです。

マクロを組むメリット

マクロを組むこと(=処理自動すること)は、

  • 単純作業を自動化でき、楽ができる
    →同じ作業を何度も繰り返していると、肉体的にも精神的にも疲れがたまってしまいます。
  • 作業が高速化できる
    →空いた時間を別のことに利用できる
  • 人為的なミスがなくなる
    →人間ですから、必ずミスが起こります。しかし、マクロだと、最初の設定さえ間違えなければミスは起こりません。

といったメリットがあります。

さらに、ImageJでのマクロは、最初に自動化したい処理を手作業で行うだけなので非常に簡単に組むことができます。

ImageJでのマクロの組み方

では、早速マクロを組んでみましょう。

必要なものは、次の2つになります。

必要なもの

  • ImageJ or Fiji
  • テンプレートファイル
    →ダウンロードはこちら

※このテンプレートファイルには、あらかじめフォルダ内の画像全てに対して処理を行うコードが書いてあります。なので、後は自分がしたい処理コードを追加することで、フォルダ内の画像すべてに対して、自動処理を行うことができます。

何度も言いますが、ImageJでマクロを組むのは非常に簡単です。

プログラミングの知識は全く必要ありません。

全体の流れを説明すると...

  1. 解析したい画像ファイルを一つ選び、その画像を手作業で解析する
  2. その手作業を覚えさせ、マクロにする
  3. 先ほど作成したマクロをテンプレートファイルにコピペする
  4. 動作チェック&調整

マクロ作成の手順

説明中の画像は、Fijiを使っておりますが、ImageJでもほぼ同じです。

STEP.1
ImageJ/Fiji を起動し、解析したい画像ファイル(一つだけ)を開く
  1. ソフトを起動
  2. 「File」→「Open...」で画像ファイルを開きます。
STEP.2
解析操作をマクロにする
  1. 「Plungins」→「Macros」→「Record...」を開ける
  2. 解析操作をしていくと、こんな感じで勝手にマクロにしてくれます。

    出てきたコードをあとは、テンプレートファイルに貼り付けるだけ
注意
定量や計測する際は、スケール設定を忘れずに行いましょう。
STEP.3
テンプレートファイルを開く
  1. テンプレートファイルを開ける(「Plungins」→「Macros」→「Edit...」)
  2. テンプレートファイルが指定する部分に先ほど記録したマクロを張り付ける
注意点
間違えた操作、ファイルを開く操作もすべて記録するので、不必要なマクロをテンプレートファイルに貼り付けないように気を付けましょう!
STEP.4
試しに動かしてみる
  1. 『解析対象ファイルがあるフォルダを選択』

    フォルダの中に、解析したい画像を入れておいてください。
  2. 『解析データを保存するフォルダを選択』

    保存フォルダの中は、空の状態にしておいてください。
  3. マクロが終わると、以下のような表示されます。

    エラーが出た場合、記録したマクロを見直す
MEMO
ImageJ/Fiji はネット上に様々な情報が載っています。エラーが出続ける場合は、調べてみましょう。
STEP.5
本番
残りの画像ファイルを解析してみましょう。

テンプレートファイルの内容説明

テンプレートファイルの中身は次のようになっています。
→ダウンロードはこちら

HTML
//処理を行うフォルダと保存先のフォルダを選択
showMessage("Select Open Folder");
openDir = getDirectory("Choose a Directory");
showMessage("Select Save Folder");
saveDir = getDirectory("Choose a Directory");
list = getFileList(openDir);

//ファイルの数だけ処理を行う
for (i=0; i<list.length;i++){
operation();
};
print("Macro Finished");

//ファイル名の取得
function operation(){
open(openDir+list[i]);
name = getTitle;
dotIndex = indexOf(name, ".");
title = substring(name, 0, dotIndex);
//ここから下に処理コードを追加

newname = title+"_analyzed";
saveAs("Tiff", saveDir+newname);
saveAs("Results", saveDir+newname+".csv");
close();
}

処理の解説

HTML
newname = title+"_analyzed";
saveAs("Tiff", saveDir+newname);
saveAs("Results", saveDir+newname+".csv");
close();
}

このコードは、『処理が終わった時点で、表示されている画像・データの名前を(もとの画像名 + _analyzed)に変更する』という意味です。

『処理が終わった時点の画像・データ』というのは、定量面積データ(Results⇒後で説明しています)と定量範囲を表示した状態の画像を指します。


このコードは、『処理が終わった時点で、表示されている画像をTiff形式で保存する』という意味です。


『Results』は定量面積といった計測結果をまとめたデータになります。

このコードは、『ResultsをCSV形式で保存する』という意味です。

定量データがない場合は、何も保存されないので削除しなくても大丈夫です。


こんな使い方も...

例えば、(ImageJ以外の)画像解析ソフトで開いた時に、撮影した画像の種類が原因で使えないことがあります。そんな時、ImageJで開き、拡張子を変えて保存することで使えるようになることがあります。

つまり、『ImageJで画像を開き、ただ保存する』だけの処理になります。

画像が何百枚の場合、この作業を手作業で行うと、かなりの時間がかかりますが、マクロを使うと、まとめて画像を変換することができます。

ちなみに、テンプレートファイルの拡張子(Tiffの部分)の部分を編集するだけで、拡張子のみを変換するマクロになります。

マクロを組むときに参考になるサイト

私がマクロを勉強するときに、参考にさせていただいたサイトになります。

基本的にImageJに関する情報はネットに載っています。

ぜひ、マクロを使って時間を有効に使いましょう!

スポンサーリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です