【マクロ言語を書く準備】
【マクロ言語の文法】
👉行の処理がここまでであることを示します。行の終わりに;がないとエラーの原因になるので忘れずに記述しましょう。
//
👉コメントアウトといって//以下に記述した内容は無視されるので、注釈あるいは説明文を書くことができます。各処理に//を使って説明文を書いておくとどのような処理が実行されるのかわかりやすくなります。
++
👉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ではじめる生物画像解析」 三浦耕太/塚田祐基 編者