みなさん、こんにちは。
大学院生の Gorori と申します。
この記事では、
- マクロとは?
- マクロを組むメリット
- ImageJでのマクロの組み方
- サンプルファイルの内容説明
の4点について紹介したいと思います。
どんな人におススメの記事?
- マクロを使いたいけど、プログラミングはしたくない人
- 画像解析を行う大学院生
マクロとは?
コンピューターの処理を自動化させるための機能のことを言います。
この機能を使えば...
例えば、
画像を読み込む→画像の閾値を設定(定量範囲の設定)→定量→定量データを保存→定量範囲を示した画像の保存
といった処理を自動化することができます。
つまり、一度マクロを組んでしまえば、あとはフォルダ内の画像を全て指定さえすれば、自動で処理を行ってくれるわけです。
マクロを組むメリット
マクロを組むこと(=処理を自動化すること)は、
- 単純作業を自動化でき、楽ができる
→同じ作業を何度も繰り返していると、肉体的にも精神的にも疲れがたまってしまいます。 - 作業が高速化できる
→空いた時間を別のことに利用できる - 人為的なミスがなくなる
→人間ですから、必ずミスが起こります。しかし、マクロだと、最初の設定さえ間違えなければミスは起こりません。
といったメリットがあります。
さらに、ImageJでのマクロは、最初に自動化したい処理を手作業で行うだけなので非常に簡単に組むことができます。
ImageJでのマクロの組み方
では、早速マクロを組んでみましょう。
必要なものは、次の2つになります。
必要なもの
- ImageJ or Fiji
- テンプレートファイル
→ダウンロードはこちら
※このテンプレートファイルには、あらかじめフォルダ内の画像全てに対して処理を行うコードが書いてあります。なので、後は自分がしたい処理コードを追加することで、フォルダ内の画像すべてに対して、自動処理を行うことができます。
何度も言いますが、ImageJでマクロを組むのは非常に簡単です。
プログラミングの知識は全く必要ありません。
全体の流れを説明すると...
- 解析したい画像ファイルを一つ選び、その画像を手作業で解析する
- その手作業を覚えさせ、マクロにする
- 先ほど作成したマクロをテンプレートファイルにコピペする
- 動作チェック&調整
マクロ作成の手順
説明中の画像は、Fijiを使っておりますが、ImageJでもほぼ同じです。
- ソフトを起動
- 「File」→「Open...」で画像ファイルを開きます。
- 「Plungins」→「Macros」→「Record...」を開ける
- 解析操作をしていくと、こんな感じで勝手にマクロにしてくれます。
出てきたコードをあとは、テンプレートファイルに貼り付けるだけ
- テンプレートファイルを開ける(「Plungins」→「Macros」→「Edit...」)
- テンプレートファイルが指定する部分に先ほど記録したマクロを張り付ける
- 『解析対象ファイルがあるフォルダを選択』
フォルダの中に、解析したい画像を入れておいてください。 - 『解析データを保存するフォルダを選択』
保存フォルダの中は、空の状態にしておいてください。 - マクロが終わると、以下のような表示されます。
エラーが出た場合、記録したマクロを見直す
テンプレートファイルの内容説明
テンプレートファイルの中身は次のようになっています。
→ダウンロードはこちら
//処理を行うフォルダと保存先のフォルダを選択
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();
}
処理の解説
newname = title+"_analyzed";
saveAs("Tiff", saveDir+newname);
saveAs("Results", saveDir+newname+".csv");
close();
}
このコードは、『処理が終わった時点で、表示されている画像・データの名前を(もとの画像名 + _analyzed)に変更する』という意味です。
『処理が終わった時点の画像・データ』というのは、定量面積データ(Results⇒後で説明しています)と定量範囲を表示した状態の画像を指します。
このコードは、『処理が終わった時点で、表示されている画像をTiff形式で保存する』という意味です。
『Results』は定量面積といった計測結果をまとめたデータになります。
このコードは、『ResultsをCSV形式で保存する』という意味です。
定量データがない場合は、何も保存されないので削除しなくても大丈夫です。
こんな使い方も...
例えば、(ImageJ以外の)画像解析ソフトで開いた時に、撮影した画像の種類が原因で使えないことがあります。そんな時、ImageJで開き、拡張子を変えて保存することで使えるようになることがあります。
つまり、『ImageJで画像を開き、ただ保存する』だけの処理になります。
画像が何百枚の場合、この作業を手作業で行うと、かなりの時間がかかりますが、マクロを使うと、まとめて画像を変換することができます。
ちなみに、テンプレートファイルの拡張子(Tiffの部分)の部分を編集するだけで、拡張子のみを変換するマクロになります。
マクロを組むときに参考になるサイト
私がマクロを勉強するときに、参考にさせていただいたサイトになります。
参考サイト
基本的にImageJに関する情報はネットに載っています。
ぜひ、マクロを使って時間を有効に使いましょう!
【#マクロの組み方】単純な作業はマクロに任せるとミスも減って作業効率アップ!この記事は、Image J 以外のマクロの組み方になります。