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で画像処理プログラミングを行う方法を入門者向けにソースコード付きで解説するページです。
コメント