ImageJマクロの使い方 | ショートカット登録方法も

投稿日:2021/2/15、更新日:2021/3/22
サムネイル画像

この記事は、ImageJマクロの使い方が分からない方向けです。とりあえずこれを読めばネットで調べたコードを動かせるようになります。

ImageJに拡張機能が色々付いた状態のソフトである「Fiji」は少し方法が異なります。以下の目次で、【Fiji】と書かれたページまでジャンプして下さい。

1.マクロの実行

例として、以下のコードを使います。実行すると画面に「Hello World」と表示されます。

print("HelloWorld");

"File"→"New"→”Text Window”をクリック。
(ショートカットキー:Ctrl + Shift + N) テキストウィンドウの開き方

コードを書き、"Macros"→”Run Macro”をクリック。
(ショートカットキー:Ctrl + R)
テキストウィンドウにコードを書いた例
※コードの一部を選択した状態で上記の操作をすると、任意の行だけを実行することもできます。

「print("HelloWorld");」を実行した場合は、このような表示が出ます。
実行結果

2.マクロの保存

テキストウィンドウの"File"→"Save as"をクリック。
(ショートカットキー:Ctrl + Sでもいけます。初回は上書き保存されないので)
テキストの保存方法

ImageJのフォルダの中の、Pluginsというフォルダをダブルクリック。macrosに保存するほうが一般的かもしれませんが、後でショートカット登録したいのでPluginsフォルダに入れます。
imageJのフォルダの画像

ファイル名の先頭に日付などの数字を入れるのがおすすめです。後でショートカットに登録する際、探すのが少し楽になります。
拡張子(末尾の文字列)は「~.ijm」で保存。「.txt」だと動きませんでした。
ijmファイルの保存方法

3.保存したマクロの実行

まずImageJ(またはFiji)を再起動します(×ボタンで閉じて、また起動する)。

※新しくPluginsフォルダに追加したマクロは、再起動しないと使えるようにならない。
※一度使えるようになった後でコードの中身を変えて上書き保存した場合は、再起動の必要なし。
※ファイル名を変えた場合は再起動が必要。

"Plugins"の中から探して、クリックするだけ。
マクロの実行方法

名前の先頭に日付を入れない場合だと、一番下のほうに居ました。
マクロの実行方法_日付なし

4.ショートカット登録方法

"Plugins"→"Shortcuts"→Add Shortcut"の順にクリック。
ショートカット登録方法1

shortcutは好きなキーを選び、Commandはマクロを選ぶ
※日付をつけた理由は、この時に見つけやすいからです。
ショートカット登録方法2

ショートカット登録は再起動不要です。もう使えるようになっています。
※"Plugins"→"Shortcuts"で、自分が登録したショートカットを確認できます。
ショートカット確認方法

ショートカット解除は"Plugins"→"Shortcuts"→Remove Shortcut"。解除の際は再起動が必要です。

5.処理を記録する & 自分で書いてみる

私は、以下の3つの組み合わせで試行錯誤しながら書いています。

  • Recorderでとりあえず記録してみる
  • 四則演算とかfor文if文などの基本文法は、公式ホームページ(英語)「ImageJ Macro Language - NIH」を見る
  • 色々な方がネットで公開してくれてるコードを参考にする


【Recorderの使い方】
"Plugins"→"Macros"→”Record”をクリックすると、レコーダーが開きます。
レコーダーの開き方

この状態で行った処理が全て記録されます。例えば、”Image”→"Type"→”16-bit”をクリックすることで画像を白黒16ビットにしてみると、以下のように記録されます。
レコーダーの記録例

白黒16ビットに変換したいときは「run("16-bit");」と書けば良い、ということが分かりました。こんな感じで、自分がやりたい処理をどう書けばいいのか?調べることができます。


ページの一番上に戻る

ここから先はImageJに拡張機能が色々付いた状態のソフトである「Fiji」での方法です。


【Fiji】1.マクロの実行

例として、以下のコードを使います。実行すると画面に「Hello World」と表示されます。

print("HelloWorld");

"File"→"New"→”Text Window”をクリック。
(ショートカットキー:Ctrl + Shift + N)
テキストウィンドウの開き方

テキストエディタが開く。拡張子が「.ijm」ならOK

「.ijm」でないなら、"Language"→”IJ1 Macro”の順にクリック。そうすると「.ijm」に変わるはずです。 (ショートカットキー:Alt + L からの Alt + I)
言語の選択
※1個前の手順で"New"→"script"をクリックしても同じテキストエディタが開くのですが、 LanguageがNoneになっており、IJ1 Macroにする必要があります。 そのため、1個目の手順では"New"→"Text Window"という手順で紹介しました。

コードを書き、Runボタンをクリック
(ショートカットキー:Ctrl + R)
テキストウィンドウにコードを書いた例
※コードの一部を選択した状態で上記の操作をしても、全体が実行されました。任意の行だけ実行する方法は調査中です。分かったら追記します。

「print("HelloWorld");」を実行した場合は、このような表示が出ます。
実行結果

【Fiji】2.マクロの保存

テキストウィンドウの"File"→"Save as"をクリック。
(ショートカットキー:Ctrl + Sでもいけます。初回は上書き保存されないので)
Fijiでのテキストの保存方法

Fijiのフォルダの中の、Pluginsというフォルダをダブルクリック
Fijiのフォルダの画像

Pluginsフォルダの中の、Macrosというフォルダをダブルクリック。ややこしいですが、Pluginsの中のMacrosフォルダです。
Fijiのフォルダの画像2

アンダーバーを1つ以上含め、かつ拡張子は「.ijm」で保存。 ImageJは不要ですがFijiはアンダーバーが無いとダメでした。 また、ファイル名の先頭に日付などの数字を入れるのがおすすめです。 後でショートカットに登録する際、探すのが少し楽になります。
Fijiのフォルダの画像3

【Fiji】3.保存したマクロの実行

まずImageJ(またはFiji)を再起動します(×ボタンで閉じて、また起動する)。

※新しくPluginsフォルダに追加したマクロは、再起動しないと使えるようにならない。
※一度使えるようになった後でコードの中身を変えて上書き保存した場合は、再起動の必要なし。
※ファイル名を変えた場合は再起動が必要。

"Plugins"→"Macros"の中から探して、クリックするだけ。
Fijiでの保存したマクロの実行方法
"Plugins"に保存すると、縦に長いPluginsメニューの一番下に居ます。 一番下の三角ボタンを押すと出てくるはず。 それでは分かりにくいので、Pluginsの中のMacrosに入れることにしています。

【Fiji】4.ショートカット登録方法

"Plugins"→"Shortcuts"→Add Shortcut"の順にクリック。
Fijiショートカット登録方法1

shortcutは好きなキーを選び、Commandはマクロを選ぶ
※日付をつけた理由は、この時に見つけやすいからです。
Fijiショートカット登録方法2

ショートカット登録は再起動不要です。もう使えるようになっています。
※"Plugins"→"Shortcuts"で、自分が登録したショートカットを確認できます。
Fijiショートカット確認方法

ショートカット解除は"Plugins"→"Shortcuts"→Remove Shortcut"。解除の際は再起動が必要です。

【Fiji】5.処理を記録する & 自分で書いてみる

私は、以下の3つの組み合わせで試行錯誤しながら書いています。

  • Recorderでとりあえず記録してみる
  • 四則演算とかfor文if文などの基本文法は、公式ホームページ(英語)「ImageJ Macro Language - NIH」を見る
  • 色々な方がネットで公開してくれてるコードを参考にする


【Recorderの使い方】
"Plugins"→"Macros"→”Record”をクリックすると、レコーダーが開きます。
レコーダーの開き方

この状態で行った処理が全て記録されます。例えば、”Image”→"Type"→”16-bit”をクリックすることで画像を白黒16ビットにしてみると、以下のように記録されます。
レコーダーの記録例

白黒16ビットに変換したいときは「run("16-bit");」と書けば良い、ということが分かりました。こんな感じで、自分がやりたい処理をどう書けばいいのか?調べることができます。


以上、ImageJマクロの使い方でした。最初の頃、ネットで使えそうなコードを見つけても保存や実行の仕方が分からなくて大変という思いをしたので、この記事を書きました。 当サイトでは自分が生物系の画像処理に使用したコードを公開していきます。全自動化するような凄いものは作っていないのですが、 日々の作業をちょっと楽にしたり、誰かが似たようなコードを書くときの手掛かりになれば幸いです。

ページの一番上に戻る