初めてのImageJマクロ(2)特定の画像を2値化して別のフォルダに保存する
ImageJ(Fiji)のマクロを触てみるシリーズの1回目では、コンソール画面にHello World!と表示してみました。
2回目の今回は、自分のパソコンのフォルダ内の特定の画像ファイルを2値化して、別の名前で保存するマクロを組んでみたいと思います。
やりたいこと
- C:/images/input/ フォルダ内の 画像ファイルocta001.jpg を開く
- octa001.jpg を2値化
- 2値化した画像を C:/images/output/ フォルダ にbinary_octa001.jpg という名前で保存する
開発環境
Windows10 Pro 1803
Fiji (ImageJ 1.52n)
Fijiのインストールについては、
http://i-doctor.sakura.ne.jp/dokuwiki/doku.php/imagej/index.html
をご覧ください。
フォルダと画像の準備
C:/imagej/ フォルダ
C:/imagej/input/ フォルダ
C:/imagej/output/ フォルダ
を作成し、 C:/imagej/input/ フォルダ の中に、
octa001.jpg
を保存しておきます。

ImageJ(Fiji)の起動とScript画面(マクロ)の起動
ImageJを起動後、 メニューバーの一番左の File をクリックし、順番に、New > Script とクリックします。

Language > IJ1Macro の順にクリックします。

以下のような状態になります。

画像の場所を探す
New_.ijm に、以下を入力してRunを押します。
f = File.openDialog("a file");
print(f);

以下のように新しいウィンドウが開くので、
C:/images/inpurt/octa001.jpg
を選択して、開く をクリックします。

Logウィンドウが開くので、そこに記載されている文字列を 右クリック > Copy で、コピーします。今回は、
C:\imagej\input\octa001.jpg
となっていました。

少し簡単なマクロを書いてみる
まずは、こちらのサイトのコードをほぼコピペして、以下のようなプログラムを書いてみたいと思います。
- C:/imagej/input/octa001.jpgを開き、
- tifファイルに変換して
- C:/imagej/output/example_octa001.jpg.tifという名前で保存する
File > New で、以下のコードをコピペします。
//参照元(\は\\で。画像ファイル以外も開いてしまうので注意)
inputdirectory = "C:\\imagej\\input";
//出力先(\は\\で)
outputdirectory = "C:\\imagej\\output";
//出力するファイル名の頭につける文字列
prefix = "example_";
//ファイルを開く
open(inputdirectory + "\\" + "octa001.jpg");
//Tiffファイル形式でファイルを出力先に保存
saveAs("Tiff", outputdirectory + "\\" + prefix + "octa001.jpg" + ".tif");
//ファイルを閉じる
close();
- Language > IJ1Macro を選択し、
- さらに、Run をクリックします。

すると、画面は以下のようになります。

C:/imagej/output/ フォルダを開いてみると、以下のように新しい画像ファイルが保存されており、

このexample_octa001.jpg.tif を、右クリック > プロパティ をクリックすると、以下のように表示され、jpgファイルがTIFファイルに変換されて保存されていることがわかります。

なお、変換前の C:/imagej/output/octa001.jpg を右クリック > プロパティ を開いてみると、以下のような感じでした。

次に、上のコードを少し変更して、2値化して画像を保存するようにしてみたいと思います。
ImageJマクロのRecorderの利用
ImageJのマクロを作成するときは、
『 Recorder(レコーダー)』
といって、自動化したい操作を、一度手動で行い、それをマクロのコードに変換してくれる
という機能を利用するのがお勧めです。以下のような流れになります。
- ImageJ(Fiji)のトップ画面から、Plugins > Macros > Record… をクリック
- Recorderウィンドウが開くので、自動化したい操作を手動で行う
- このとき、Recorderに表示される文字列をテキストファイルとして保存し、.ijm ファイルにマクロとして保存する。
参考: https://sites.google.com/site/imagejmacronojueshu/makuro/foruda-neiheno-zi-dong-chu-li
参考2:http://192168111.blog71.fc2.com/blog-entry-56.html
参考3: https://note.mu/kdgn/n/ne4282746fe63
途中
ディスカッション
コメント一覧
まだ、コメントがありません