前回は、画素値を足した画像から最小値を減算する画像処理を行いました。左が減算処理前の画像、右が減算処理後の画像です。
因みに元画像はこちらです。
因みに元画像はこちらです。
減算処理した画像と比べてみて下さい。真っ白なところが無いのが分かりますか?
画素値が上限をオーバーしてしまったところは元には戻らないのです。
ヒストグラムはどうなっているでしょうか?
画素値が上限をオーバーしてしまったところは元には戻らないのです。
ヒストグラムはどうなっているでしょうか?
画素値の範囲は左が127~255、右が0~128となっており、画素値の幅自体は変わらないのが分かります。
ただし、減算処理をしたことで、最小値は127から0になっています。
また、分かり辛いですが、実はビット数も変化しているのです。
ただし、減算処理をしたことで、最小値は127から0になっています。
また、分かり辛いですが、実はビット数も変化しているのです。
実際に画像処理を施す前に、その処理が本当に適切かどうかを調べる為に輝度のヒストグラムを確認することがあります。
ところで、ある値以上の画素の割合が分かると、全体の画素のばらつきが分かりますよね!
そこで、今回はあるしきい値以上の画素がどれくらいの数あるのかを調べていきたいと思います。
Fijiチュートリアルの"Reduce a pixel array to a single value: count pixels above a threshold"をご覧下さい!
ところで、ある値以上の画素の割合が分かると、全体の画素のばらつきが分かりますよね!
そこで、今回はあるしきい値以上の画素がどれくらいの数あるのかを調べていきたいと思います。
Fijiチュートリアルの"Reduce a pixel array to a single value: count pixels above a threshold"をご覧下さい!
最初の6行目まではこれまでと同様です。現在開いている画像情報をimp(ImagePlus)として取得し、2次元画像としてipを取得。
画素情報を1次元情報として取得します。
因みにa > meanのmeanの部分を他の任意の値にしてもプログラムは動作しますが、その場合は、指定した
値を越えるピクセル数の割合が表示されます。
画素情報を1次元情報として取得します。
因みにa > meanのmeanの部分を他の任意の値にしてもプログラムは動作しますが、その場合は、指定した
値を越えるピクセル数の割合が表示されます。
そして、画素のリストの値を全部足したもの[sum(pixels)]を、画素数[len(pixels)]で割ると、平均値が得られます。
平均値の計算=全体の合計(sum(pixels))÷要素の数(len(pixels))
平均値より高い値を持つ画素がどれだけの数あるのかを調べる為にreduceを用いているのですが、書き方がかなり複雑な為、今回は割愛します。ピクセル数だけ平均値を越えているかカウントを行い、全てのカウントが終ったら結果を返すという命令が書いてあります。
実際に、マクロで動かしてみましょう。
こちらは、Bridge画像とそのヒストグラムです。特定の画素値(value)のピクセルがどれだけ存在するのかをcountで示しています。また、平均値(mean)は141.198となっています。やや中心から偏っていますね。
実際に、マクロで動かしてみましょう。
こちらは、Bridge画像とそのヒストグラムです。特定の画素値(value)のピクセルがどれだけ存在するのかをcountで示しています。また、平均値(mean)は141.198となっています。やや中心から偏っていますね。