2016年9月14日 更新

2値化処理

画像処理に関する情報発信として2値化処理についてご紹介します。

434 view お気に入り 0
同一トピックの「ノイズ軽減処理」と併せて、今回紹介する「2値化」は画像から目的とする物体を取り出す (抽出する) のに極めて重要です。

例えば下の図。
 (751)

白い背景に黒い点が規則正しく並んでいます。

例えば、この点の数や面積を正確に測りたいな...と思った時、手動で測るよりも画像処理を用いた方が客観的なのは言うまでもありません。

画像処理の最初のステップとして、「背景: この画像だと白い領域」と「前景: この画像だと黒い点」を区別する2値化を行ないます。

2値化とは、ある明るさを基準として、それより明るければ白、暗ければ黒に分ける処理で、最終的に白黒画像を生み出します。

上記の画像をある明るさを基準に2値化すると、下のようになります。
 (753)

背景は真っ白、点は真っ黒の白黒画像になりました。

しかし困ったことに、原画像を見てみると、背景よりは黒いけれど薄い点がいくつかあります。それらも含めてうまく取り出すにはもう1工夫必要なようです。

例えば、基準を下げて、薄い点でも取り出せるようにしたいですね。

しかし、こまったコトはまだあります。実はこの画像、照明条件などの影響で、全体的に左側が暗く、右側が明るいのです。

そのため、単純に基準を下げると、下のように背景まで取り出してしまいます。
 (755)

これだと、全部の点を取り出すことは困難です...。

各点を取り出せるよう、「ノイズ軽減処理」を組み合わせてみましょう。

実はこの背景のムラは、特殊なノイズの1つにあげられ、画像処理によって軽減することができます。

前回の説明よりも少し難しい処理ですが (いずれ機会があればご紹介したいです) 、下のように周期的なノイズを軽減できます。
 (757)

(少しわかりづらいかもしれませんが、左右の背景で明るさのムラが軽減されています)

ノイズ軽減処理を施した画像で、ある明るさに基づいて2値化すると、下のようになります。
 (759)

完璧ではありませんが、薄い点も取り出すことに成功しました。

研究の現場では、もう少し複雑な画像処理を施して、客観的かつ定量的な計測につなげていきます。

もしかしたら、こんなに複雑な処理なら手動で計測した方が早いと思うかもしれません。確かに28個の点なら、手動の方が早いかもしれません。

しかし、点が100個あるいは1000個あればどうでしょうか?
筆者は100個も手動で計測するほど忍耐強くありませんし、正確に測る自信もありません。

やはり、画像処理で客観的かつ正確 (かつ高速) に計測する方が信頼に足る研究に繋るのだと思います。

<まとめ>
画像から目的の領域を取り出すには、ノイズ軽減処理と2値化処理が有効。
11 件

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

画像のFilter をPython で視覚的に理解する (Gaussian, Edge 抽出).

画像のFilter をPython で視覚的に理解する (Gaussian, Edge 抽出).

Python を用いて,画像のFilter を視覚的に理解してみます.コードを載せていますので,実装可能です.
三好 裕之 | 1,285 view
スパースモデリング ~少量データから画像を復元~

スパースモデリング ~少量データから画像を復元~

matlab のコードをもとに,スパースモデリングとは何かについて説明します.今回はスパースモデリングの説明です.
三好 裕之 | 1,563 view
Pythonで画像処理② Data Augmentation (画像の水増し)

Pythonで画像処理② Data Augmentation (画像の水増し)

画像の水増し、Data Augmentationと呼ばれる方法になりますが、学習に使う画像に変形を加えたり、ノイズを加えたり、明るさを変えたりといった処理を行う方法を紹介します。学習画像に様々な処理を行うことで認識がロバストになるというメリットがあります。
望月 優輝 | 9,812 view
点像分布関数の話

点像分布関数の話

光学系を理解するうえで前提として知っておいた方が良い内容
Yoshiyuki Arai | 602 view
現役JDと学ぶ画像処理入門①〜openCV入門〜

現役JDと学ぶ画像処理入門①〜openCV入門〜

openCV入門(画像の読み込み、表示、保存、線形変換、拡大縮小)
広部ゆりか | 26,976 view

この記事のキーワード

この記事のキュレーター

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