【Python/OpenCV】単純な二値化処理

スポンサーリンク

この記事では、Python版OpenCV(cv2.threshold)もしくはNumPyで単純な二値化処理を実装する方法をソースコード付きで解説します。

スポンサーリンク

二値化処理

二値画像とは、色を0(黒)と1(白)の二階調(1bit)で表した画像です。
ただし、画像処理プログラムでは、二値化画像の画素値を0(黒)と255(白)の8ビットで表す方が一般的です。
【参考】二値化処理の原理

二値化処理は、画像から物体の輪郭を取り出したりできる基本的な処理です。
この処理のポイントは、閾値の決め方にあります。
最も単純なのは、人が感覚的に閾値を設定する方法です。
自動的に最適な閾値を求める「大津の二値化処理」「適応的二値化処理」については下記ページで紹介しています。
【Python/OpenCV】大津の手法で二値化処理
【Python/OpenCV】適応的閾値処理で二値化

今回は、Python言語で以下の2通りの方法で単純な2値化処理を実装してみました。

方法①・・・NumPyでアルゴリズムを書いて実装
方法②・・・cv2.thresholdで簡単に実装(1行で書けちゃうので楽チン)

書式(cv2.threshold)

ret, dst = cv2.threshold(src, threshold, max_value, threshold_type)
パラメータ名 説明
src 入力画像(グレースケール)
threshold 閾値
max_value 二値化したときの最大値(真っ白にするなら255)
threshold_type 使用する二値化手法(単純な二値化ならcv2.THRESH_BINARYを指定)
dst 出力画像

ソースコード(Python3+OpenCV3)

サンプルプログラムのソースコードです。

※動作には、OpenCVとNumPyライブラリが必要です。
ライブラリの導入方法:【Python3】OpenCV3+NumPyをインストール

実行結果

サンプルプログラムの実行結果です。

■入力画像(左)と出力画像(右)

【おすすめ記事】
PythonでOpenCV入門 サンプル集
【Python】画像処理プログラミング入門
【画像処理入門】アルゴリズム&プログラミング

スポンサーリンク

シェア&フォローお願いします!