画像処理の基本中の基本である2値化処理について紹介していきます!!マシンビジョンや画像処理を生業にしたい人には必見の内容になります!!
2値化処理とは??
まず初めに2値化処理について説明します。
2値化処理とは画像上の値を255(白領域)と0(黒領域)に分ける処理になります。
具体的に下図を例に説明していきます。下右図のような値を持っている画像に対して閾値128を設けます。そうすると、128以上の値を持つ画素が255に、128より小さい値を持つ画素を0に変換することができます。

では、なぜこのような処理をするのでしょうか?
それは2値化処理によって、解析したい領域を抽出することができるからです。
画像処理では、まず領域抽出を行い、その後抽出した領域の幾何学情報(面積・縦横比など)を解析して評価を行います。この領域抽出の処理を担っているのが2値化処理になります!!
この2値化処理を適切に行うことで、所望の画像処理の実現に大きく近づくことができます。
そして世間一般的な画像処理エンジニアは、この2値化処理や前処理などを駆使して所望の領域をいかに安定的に精度よく抽出できるかについて日々悪戦苦闘しているわけです。
もうすこし詳しく知りたい方は画像処理の基本については以下の記事でまとめてますのでご確認ください!!
Pythonによる2値化処理手法
さてPythonによる2値化処理手法を紹介します!!
Pythonで2値化処理を実装する場合、OpenCVのライブラリを使用することをお勧めします!!
さて2値化処理は以下のコード実行することができます。
import cv2
# 画像の読み込み
img = cv2.imread("image.jpg", 0)
# 二値化処理
_, img_th = cv2.threshold(img, 150, 255, cv2.THRESH_BINARY)
#画像保存
cv2.imwrite(”image_th.jpg”, img_th)cv2.imread:画像を読み込みを行います。また引数に0を与えることでグレースケールで画像が読み込まれます!!
cv2.threshold:2値化処理を実行します。2値化閾値に150を与えて、150以上の明るさを持つ画素を255に変換を行います。
cv2.imwrite:2値化処理した画像を保存します。引数にファイルパスを与えることで任意のファイル名で保存が可能。
以下が2値化処理結果の一例になります。今回はレナ画像を用いて評価した結果になります!!

まとめ
基本的な2値化処理手法について紹介しました!
PythonではOpenCVライブラリを活用することで簡単に2値化処理を実装することができますので是非お試しください!!
また2値化処理には単純な2値化処理だけでなく、大津2値化処理、適応的2値化処理などがあります!!今後これらの処理について紹介していきたいと思います!!
マシンビジョンや画像処理の初心者の方は以下の記事を参考にしてください!!






コメント