画像処理
ImageJでの初歩的なマクロの作り方 ~画像処理を自動化しよう~
以前の記事(画像解析の手順 ~ImageJのコマンド紹介~)でもご紹介させていただいた ImageJは研究室などで画像処理を行うときに利用される代表的なツールです。 おそらくこの記事を見ている方には"ImageJ"をお使いの方もいらっしゃると思います。 そしてImageJではマクロを作りたいと思ったことがある方も多いと思いますが、「実際どう始めたらいいか分からない」という方もいらっしゃると思います。 今回はそんな方向けに、ImageJのRecord(レコード)機能を利用した初歩的なマクロの作り方をご紹介します。
マクロとは
マクロとは一連の処理手順を記録し、自動実行できるスクリプトのことです。
定型作業を効率化し、繰り返しの手作業を削減できるため、画像処理のみならず様々な分野のソフトウェアで利用されています。
「Excelマクロ」といった言葉を聞いたことがある方もいらっしゃると思います。
ImageJにおけるマクロは、例えば、「画像の前処理→2値化→測定」といった一連の操作を自動化できるため、マクロを使用することで繰り返し行う処理を自動化し、作業の効率化が図れます。
操作した手順をを記録できるImageJのRecord(レコード)機能を活用すれば、プログラミングの知識がなくてもマクロを作成できます。
レコード機能で作成したマクロは保存して、呼び出して実行したり、追加で編集を加えることも可能です。
レコード機能でマクロを作成する
では早速レコード機能を利用したマクロの作成について紹介していきます。
今回は「画像を開く→前処理(メディアンフィルタ)→2値化→測定項目の設定→測定」という一連の流れを記憶し、
マクロとして保存したいと思います。
■レコード機能を有効にする
ImageJ を起動し、Plugins→Macros→Record を選択します。
"Recorder"というタイトルのウィンドウが表示されます。このウィンドウが有効な状態で、行った操作はマクロとしてRecorderに記載されていきます。
■画像を開く
次に、File→Open より画像を選択して開きます。画像が表示されると共にRecorderのウィンドウに画像を開く処理にあたるスクリプトが追加されます。このように実際に操作した内容に基づいてスクリプトが追記されていきます。
■画像処理を実施
前処理として、Process→Filters→Median を行います。
続けて、Image→Adjust→Thresholdから2値化の設定および処理を実行します。Recorderのウィンドウにはここまでの処理がマクロとして記述されています。
■2値化した領域を測定
引き続き、測定を行います。ここでは2値化した領域の面積を測定したいと思います。Analyze→Set Measurementから測定項目を選択し、"Area"のみチェックをONにします。
続けて、Analyze→Analyze Particlesから測定を実行します。
Display results(粒子ごとの測定結果を表示するかの選択), Exclude on edges(画像の端に被る粒子は測定対象外にすることが可能), include holes(穴が空いている粒子)も測定可能といった設定は有効にしておきます。
最終的に面積の測定まで実行すると、Resultsリストが画面に表示されます。今回はここまでを一連の処理として、ここで解析を終えたいと思います。Recorderウィンドウの内容も複数の処理が記載され10行ほどになっています。
マクロの保存
Recordsウィンドウに書かれたマクロを保存したい場合は、Recordsウィンドウの[Create]ボタンをクリックします。下図のように、マクロ編集用のウィンドウが別に開きます。
File→Save As を選択することでマクロを任意のファイル名を付けて保存することができます。
また、一部の処理は設定の内容がコメント扱い("//"で始まる行、処理されずに進む)となって書かれることもあるので設定値などがコメント扱いになっている場合は必要に応じて編集してから保存してください。
マクロの実行
保存したマクロを利用するには、Plugins→Macros→Run を選択します。保存したマクロファイルを指定してください。
保存したときと同じ処理が自動的に動作して測定の結果表示がまで実行されます。
実際には、ファイルのオープンをマクロにはいれずに処理だけをマクロかするなどすると、任意の開いた画像に特定の画像処理を自動処理を適用するようなことも可能です。
マクロは様々な用途へ応用して利用することができますので、是非触れてみてください。
マクロの中身はプログラム
ここまでの流れを読んでいただいた方はすでに気づいているかも知れませんが、Image Jのマクロファイルというのは一連の処理が並べられたプログラムとなっています。
ですので、ご紹介したImageJのRecord(レコード)機能を利用せずに直接処理を書いていくことも可能です。
メニューより、Help→Macro Functions を選択すると、利用できる処理のコマンドの情報を公式のページより参照することができます。
しかし、掲載されている内容はあまり丁寧ではなくプログラムの経験が無い方が参考にするには、正直難しいことが多いです。
また、Image Jのマクロ作成についての情報はWebなどにも多くの情報が無いのが実情であり、使いこなすには十分な勉強が必要といえます。
Image J以外のソフトウェアでもマクロは作れる。自動化できる!
本記事ではImageJについて紹介しておりますが、本サイトMiVLogでは高機能画像解析ソフト『WinROOF』シリーズを利用して画像解析についてご紹介しております。
『WinROOF』シリーズには、教職員・学生向けの【WinROOF Education】というお求めやすいラインナップもございますので、ImageJをご利用の方も是非バナー画像をクリックしてご確認ください。
もちろんマクロで自動化も可能です!
マクロについてイメージは掴めましたでしょうか?この記事が少しでも皆さんのお役に立てば幸いです。
また、画像解析や自動化処理でお困りのことがありましたら、気軽にお問合せください。
■■三谷商事ビジュアルシステム部への問い合わせはこちらをクリック!■■
最後まで読んでいただき、ありがとうございました。