【Python/OpenCV】cv2.thresholdで単純な二値化処理を行う方法

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

単純二値化処理

本ページの内容は以下動画で解説しています。

二値画像は「色を0(黒)と1(白)の2階調(1bit)で表した画像」です。
ただし、デジタル画像処理では、二値化画像の画素値は0(黒)255(白)8ビットで表す方が一般的です。

画像を二値画像に変換することを二値化処理といい、ある閾値で画像を二値画像に変換します。
二値画像は物体の輪郭を抽出するなど、画像から情報を得るのに利用できます。

■二値画像変換の例(左からRGBカラー画像 → グレースケール画像 → 二値画像)

二値化処理のポイントは、閾値の決め方にあります。
最も単純なのは、人が感覚的に閾値を設定する方法です。

【画像処理】二値画像とは?二値化処理と閾値の決め方はどうする?
この記事では、二値画像(白黒・1ビット)の原理・特徴・計算方法についてまとめました。

今回は、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 出力画像

【ドキュメント】
https://docs.opencv.org/4.x/d7/d4d/tutorial_py_thresholding.html

サンプルコード①NumPyで実装した場合

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


サンプルコード②OpenCVで実装した場合


実行結果

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

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

関連ページ

【Python版OpenCV超入門】使い方とサンプルコードを解説
Python版OpenCVで画像処理プログラミングを行う方法を入門者向けにソースコード付きで解説するページです。

コメント