2016年9月15日 更新

【Python講座10】Pythonで画像処理

前回は、画素値を足した画像から最小値を減算する画像処理を行いました。今回はあるしきい値以上の画素がどれくらいの数あるのかを調べていきたいと思います。

3,930 view お気に入り 1
 (837)

前回は、画素値を足した画像から最小値を減算する画像処理を行いました。左が減算処理前の画像、右が減算処理後の画像です。

因みに元画像はこちらです。
 (839)

減算処理した画像と比べてみて下さい。真っ白なところが無いのが分かりますか?
画素値が上限をオーバーしてしまったところは元には戻らないのです。

ヒストグラムはどうなっているでしょうか?
 (841)

画素値の範囲は左が127~255、右が0~128となっており、画素値の幅自体は変わらないのが分かります。
ただし、減算処理をしたことで、最小値は127から0になっています。
また、分かり辛いですが、実はビット数も変化しているのです。
 (843)

実際に画像処理を施す前に、その処理が本当に適切かどうかを調べる為に輝度のヒストグラムを確認することがあります。

ところで、ある値以上の画素の割合が分かると、全体の画素のばらつきが分かりますよね!

そこで、今回はあるしきい値以上の画素がどれくらいの数あるのかを調べていきたいと思います。

Fijiチュートリアルの"Reduce a pixel array to a single value: count pixels above a threshold"をご覧下さい!
 (845)

最初の6行目まではこれまでと同様です。現在開いている画像情報をimp(ImagePlus)として取得し、2次元画像としてipを取得。
画素情報を1次元情報として取得します。

因みにa > meanのmeanの部分を他の任意の値にしてもプログラムは動作しますが、その場合は、指定した
値を越えるピクセル数の割合が表示されます。
 (847)

そして、画素のリストの値を全部足したもの[sum(pixels)]を、画素数[len(pixels)]で割ると、平均値が得られます。
 (849)

平均値の計算=全体の合計(sum(pixels))÷要素の数(len(pixels))
平均値より高い値を持つ画素がどれだけの数あるのかを調べる為にreduceを用いているのですが、書き方がかなり複雑な為、今回は割愛します。ピクセル数だけ平均値を越えているかカウントを行い、全てのカウントが終ったら結果を返すという命令が書いてあります。

実際に、マクロで動かしてみましょう。

こちらは、Bridge画像とそのヒストグラムです。特定の画素値(value)のピクセルがどれだけ存在するのかをcountで示しています。また、平均値(mean)は141.198となっています。やや中心から偏っていますね。
19 件

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

LP-tech2周年記念#人気記事のまとめ#第10位〜第6位

LP-tech2周年記念#人気記事のまとめ#第10位〜第6位

LP-techが始まってから2周年を迎えました。ここまでLP-techを続けることができたのも読者の皆様のおかげだと思っています。そこで、LP-techの感謝祭ということで、人気の記事を第20位から第1位までをご紹介します。今回は第10位〜第6位までです。
画像の再構成理論〜概要、まとめ〜

画像の再構成理論〜概要、まとめ〜

今回は、以前4回にわたって記事として投稿した画像の再構成理論の概要について述べ、それのまとめをしたいと思います。
画像処理におけるフーリエ変換④〜pythonによるフィルタ設計〜

画像処理におけるフーリエ変換④〜pythonによるフィルタ設計〜

画像処理におけるフーリエ変換の最終回として、pythonによるフィルタ設定についてご紹介します。
pythonで学ぶOpenCV① 〜インストール、サンプルの実行〜

pythonで学ぶOpenCV① 〜インストール、サンプルの実行〜

pythonで学ぶOpenCVの第一回目についてご紹介します。
【Python講座6】Pythonで画像処理

【Python講座6】Pythonで画像処理

これまで勉強してきたPythonのスキルをベースに、画像処理についてやっていきたいと思います!

この記事のキーワード

この記事のキュレーター

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