2017年1月26日 更新

シリーズ5.ImageJマクロ言語を用いた画像解析~マクロ言語のまとめ~

【記事の目標】 画像を触ったことがない人を対象として、適切な画像解析を施すまでのImageJのマクロ言語を用いた学習過程を示す。

16,237 view お気に入り 0
今回の記事では今まで学んだマクロ言語の文法や書き方をまとめたいと思います。

【マクロ言語を書く準備】

ImageJのメニューのPlugins→New→Macroをクリックします。Macro.txtという新しいウィンドウが表示されます。ここにスクリプトをマクロで記述していきます。
 (2943)

【マクロ言語の文法】

今まで学んできたマクロ言語の文法について復習します。
;

👉行の処理がここまでであることを示します。行の終わりに;がないとエラーの原因になるので忘れずに記述しましょう。

//

👉コメントアウトといって//以下に記述した内容は無視されるので、注釈あるいは説明文を書くことができます。各処理に//を使って説明文を書いておくとどのような処理が実行されるのかわかりやすくなります。

++

👉1増やします。

==

👉等しいことを示します。=は代入することを意味するので使い分けに注意が必要です。

+=

👉+は足し算を意味します。足し算したものを代入することを示します。

-=

👉-は引き算を意味します。引き算したものを代入することを示します。

*=

👉*は掛け算を意味します。掛け算したものを代入することを示します。

/=

👉/は割り算を意味します。割り算したものを代入することを示します。

<

👉小なり

<=

👉~以下

>

👉大なり

>=

👉~以上

A && B

👉AかつBを意味します。

A || B

👉AまたはBを意味します。

【関数()の書き方】

関数とは?

プログラミングの関数は数学の関数と同様に、ある値(引数)を与えるとその関数に定義されている処理を実行して結果を返します。
今まで以下に挙げたような関数を用いてきました。()の中には引数が入ります。
引数には数字、変数、文字列、関数などを記述することができます。
ImageJマクロ言語には下記の2種類の関数があります。

① Built-in Macro Functions(http://rsbweb.nih.gov/ij/developer/macro/functions.html)に記載されている組み込み関数と呼ばれる

② スクリプトの作成者(ユーザー)が定義した関数(自作関数とも呼ばれます。次回の記事で説明します。)


run()

👉マクロのレコード機能を使って画像処理をマクロ言語で記録していくときに最も使われる関数です。run(処理の内容を記述)でたいていの画像処理はマクロで記述することができます。

selectWindow()

👉複数の画像が表示されていてある画像に画像処理を施したいときに( )に画像のファイル名を記述するとその画像をアクティブにする便利な関数です。

print()

👉( ) に記述した文字列、数字、関数などを出力するための関数です。文字列を出力するときは文字列を” ”でくくります。

getHistogram()

👉8bit画像の場合、0~255までの輝度値に対応するピクセル数が順番に格納されます。
※getHistogram(引数1, 引数2, 256) と記述した場合
引数1に輝度値(0-255)、引数2に各輝度値に対応する度数(ピクセル数)をかえします。

getHeight()

👉画像の高さを取得します。

getWidth()

👉画像の横幅を取得します。

getStatistics(area, mean, min, max, std, histogram);

👉面積や輝度値などの画像の統計量を取得することができます。

getPixel (x,y)

👉画像のxy座標の値を取得することができます。

setPixel(x, y, 0)

👉指定されたxy座標に対応する輝度値を輝度値0に置き換えます。 0の部分は任意の数字に変更することができます。

for文

👉プログラムにおいて繰り返しを命令するときに用いられる構文のことです。

for(最初に始める数字; 繰り返しの回数; 処理終了後に実行する命令)

{

繰り返しを行う処理に対応する命令文を記載する。

};

*for構文では変数と初期値を必要とし、多くの場合、変数iを0に設定してi=0と書かれることが多いです。例えば10回繰り返すときはfor(i=0; i<10; i++) のように書きます。

if文

👉if/else命令文の書き方は以下のようになります。

if (条件) {

   命令文1

}else{

   命令文2

}

ifの後の()内の条件が検討され、それが真のときは{命令文1}が実行され偽のときは{命令文2}が実行されることを意味します。

今回の記事では今までの記事で学習してきたマクロ言語の文法や記述の仕方についてまとめました。
ここで復習した文法や関数はImageJで実行するいろいろな画像処理について自動化処理を行う際に役立つのでぜひ覚えておくことをおすすめします。次回はユーザー定義関数について学習します。
〇参考資料
「ImageJではじめる生物画像解析」 三浦耕太/塚田祐基 編者
11 件

関連する記事 こんな記事も人気です♪

シリーズ5.ImageJマクロ言語を用いた画像解析~マクロ言語のまとめ2~

シリーズ5.ImageJマクロ言語を用いた画像解析~マクロ言語のまとめ2~

【記事の目標】 画像を触ったことがない人を対象として、適切な画像解析を施すまでのImageJのマクロ言語を用いた学習過程を示す。 今回の記事ではImageJのユーザー定義関数について学んでいきます。
シリーズ4.ImageJマクロ言語を用いた画像解析~②二値化処理-3~

シリーズ4.ImageJマクロ言語を用いた画像解析~②二値化処理-3~

【記事の目標】 画像を触ったことがない人を対象として、適切な画像解析を施すまでのImageJのマクロ言語を用いた学習過程を示す。
ImageJ Plugin で数値計算をしてみる #5

ImageJ Plugin で数値計算をしてみる #5

非情報科学研究者 (特に生物系研究者) が ImageJ plugin を作るために超えるべき壁やTipsをまとめます。今回は、面積の平均値や中央値、分散を出力するためのコードをご紹介します。
湖城 恵 | 9,646 view
ImageJ Macro

ImageJ Macro

ImageJ の Macro と呼ばれる,プログラミング言語についての説明を行っている記事をまとめたものです.
シリーズ4.ImageJマクロ言語を用いた画像解析~②二値化処理-2~

シリーズ4.ImageJマクロ言語を用いた画像解析~②二値化処理-2~

【記事の目標】 画像を触ったことがない人を対象として、適切な画像解析を施すまでのImageJのマクロ言語を用いた学習過程を示す。

この記事のキーワード

この記事のキュレーター

エルピクセル編集部 エルピクセル編集部