◆対象物が白、背景が黒
(サンプル画像Fluorescent Cells(RGB画像)をSplit Channelで赤、緑、青に分けたときの青の画像)
(サンプル画像Fluorescent Cells(RGB画像)をSplit Channelで赤、緑、青に分けたときの青の画像)
≪パターン②≫ 固定値を閾値とした二値化
撮像環境が整っている条件下で取得した画像を用いるときは、ある固定された輝度値を閾値としてその閾値よりも高い輝度値を示すピクセルを255、低い輝度値を示すピクセルを0に置き換えていくことによって二値化を施すことがあります。下記の太字で記述した部分で閾値を128と設定し二値化を施しています。 (以降のスクリプトはパターン①と同じです)
◆対象物が黒、背景が白
撮像環境が整っている条件下で取得した画像を用いるときは、ある固定された輝度値を閾値としてその閾値よりも高い輝度値を示すピクセルを255、低い輝度値を示すピクセルを0に置き換えていくことによって二値化を施すことがあります。下記の太字で記述した部分で閾値を128と設定し二値化を施しています。 (以降のスクリプトはパターン①と同じです)
◆対象物が黒、背景が白
※1 for文については前回の記事を参照 シリーズ3.ImageJマクロ言語を用いた画像解析~①輝度の統計量 ~
※2 if文は()内の条件が検討されそれが真のときに{命令文}が実行され、偽のときは何も実行されないことを示す構文です。
if文(条件){
命令文
}
※3 if文はelse文とセットでなくても用いることが可能ですが、if文を複数回実行する必要がある場合にif (条件) {命令文}を2回以上記述するかわりにelse文が用いられます。if/else命令文の書き方は以下のようになります。
if (条件) {
命令文1
}else{
命令文2
}
ifの後の()内の条件が検討され、それが真のときは{命令文1}が実行され偽のときは{命令文2}が実行されることを意味します。ここでは閾値Thr=128よりも輝度値が小さいときは0に、そうでないときは1に置き換えるという命令文になります。
※4 ここでの二値化は以下のようなイメージをもつと理解しやすいと思います。
for文が二重に用いられているときは内側に書かれているfor文内の命令文から処理されます。つまり、y座標が0のままでx座標のみが画像の横幅まで1つずつ増えていき、各ピクセルの輝度値が閾値128よりも大きい場合は1、小さい場合は0に輝度値が置き換えられていくことを表しています。x座標が画像の横幅の最後まで到達すると、y座標が0から1になり、同じようにx座標が (0, 1), (1, 1), (2, 1)・・・(width, 1) まで処理されます。この処理を (0, hight), (1, hight), (2, hight)・・・(width, hight) まで繰り返すことによって二値化処理が施されます。
※2 if文は()内の条件が検討されそれが真のときに{命令文}が実行され、偽のときは何も実行されないことを示す構文です。
if文(条件){
命令文
}
※3 if文はelse文とセットでなくても用いることが可能ですが、if文を複数回実行する必要がある場合にif (条件) {命令文}を2回以上記述するかわりにelse文が用いられます。if/else命令文の書き方は以下のようになります。
if (条件) {
命令文1
}else{
命令文2
}
ifの後の()内の条件が検討され、それが真のときは{命令文1}が実行され偽のときは{命令文2}が実行されることを意味します。ここでは閾値Thr=128よりも輝度値が小さいときは0に、そうでないときは1に置き換えるという命令文になります。
※4 ここでの二値化は以下のようなイメージをもつと理解しやすいと思います。
for文が二重に用いられているときは内側に書かれているfor文内の命令文から処理されます。つまり、y座標が0のままでx座標のみが画像の横幅まで1つずつ増えていき、各ピクセルの輝度値が閾値128よりも大きい場合は1、小さい場合は0に輝度値が置き換えられていくことを表しています。x座標が画像の横幅の最後まで到達すると、y座標が0から1になり、同じようにx座標が (0, 1), (1, 1), (2, 1)・・・(width, 1) まで処理されます。この処理を (0, hight), (1, hight), (2, hight)・・・(width, hight) まで繰り返すことによって二値化処理が施されます。
【まとめ】
ImageJで二値化を施す方法とマクロ言語での書き方が理解できたでしょうか。
今回は前回の記事で学習したfor文に加え、if/else文の書き方、細胞数などの計測に用いられる粒子解析の手法を学びました。粒子解析は数、面積および形態を自動的に取得することができるため、研究分野でよく用いられます。
次回は本文中でも予告したように二値化処理-2としてImageJにおける背景色の設定と二値化の関係について詳しく説明します。
今回は前回の記事で学習したfor文に加え、if/else文の書き方、細胞数などの計測に用いられる粒子解析の手法を学びました。粒子解析は数、面積および形態を自動的に取得することができるため、研究分野でよく用いられます。
次回は本文中でも予告したように二値化処理-2としてImageJにおける背景色の設定と二値化の関係について詳しく説明します。