Python
 Computer >> コンピューター >  >> プログラミング >> Python

OpenCVを使って画像に逆二値化しきい値処理(THRESH_BINARY_INV)を適用する方法

この記事では、OpenCVを使用して画像に対して逆二値化しきい値処理(Inverse Binary Thresholding)を行う方法を解説します。

しきい値処理とは?

しきい値処理(Thresholding)とは、各ピクセルの値をあらかじめ設定したしきい値と比較し、その結果に応じてピクセルの値を変換する画像処理手法です。ピクセルの値がしきい値より小さい場合にはある値が割り当てられ、大きい場合には別の値が割り当てられます。

逆二値化しきい値処理の場合、以下のような変換が行われます。

  • ピクセルの値がしきい値より小さい場合 → 最大値(255=白)が割り当てられる
  • ピクセルの値がしきい値より大きい場合 → 0(黒)が割り当てられる

通常の二値化処理とは白黒が反転した結果になるのが特徴です。

元画像

OpenCVを使って画像に逆二値化しきい値処理(THRESH_BINARY_INV)を適用する方法

アルゴリズム

ステップ1:cv2をインポートする。
ステップ2:しきい値(threshold_value)と最大値(max_val)を定義する。
ステップ3:これらのパラメータをcv2.threshold()に渡し、実行したいしきい値処理の種類を指定する。
ステップ4:出力画像を表示する。

サンプルコード

import cv2

image = cv2.imread('testimage.jpg')
threshold_value = 120
max_val = 255

ret, image = cv2.threshold(image, threshold_value, max_val, cv2.THRESH_BINARY_INV)
cv2.imshow('InverseBinaryThresholding', image)

実行結果

OpenCVを使って画像に逆二値化しきい値処理(THRESH_BINARY_INV)を適用する方法

コードの解説

プログラム内のret変数には、実際に使用されたしきい値が返されます。cv2.threshold()関数にcv2.THRESH_BINARY_INVを指定することで、逆二値化処理が実行され、しきい値(ここでは120)より小さい値を持つすべてのピクセルが最大値であるmax_val(255=白)に置き換えられます。一方、しきい値より大きいピクセルは0(黒)になります。

このように、OpenCVではたった1行の関数呼び出しで逆二値化しきい値処理を簡単に実装できるため、物体検出や輪郭抽出などの前処理として広く活用されています。

  1. OpenCVで画像に楕円を描画する方法|cv2.ellipse()の使い方を解説

    この記事では、Pythonの画像処理ライブラリ「OpenCV」を使って、画像の上に楕円を描画する方法を解説します。楕円の描画には、OpenCVが提供する cv2.ellipse() 関数を使用します。元画像アルゴリズム(処理の手順)楕円を描画するまでの流れは、以下の手順になります。ステップ1: cv2 をインポートする。 ステップ2: imread() で画像を読み込む。 ステップ3: 楕円の中心座標を設定する。 ステップ4: 楕円の長軸・短軸の長さ(axesLength)を設定する。 ステップ5: 楕円の回転角度(angle)を設定する。 ステップ6: 描画を開始する角度と終了する角度を設定

  2. OpenCVを使って画像に線を描画する方法

    この記事では、OpenCVのcv2.line()関数を使用して、画像にシンプルな線を描画する方法を解説します。線の始点・終点・太さ・色を自由に指定できるので、図形の描画や注釈の追加など、さまざまな場面で活用できます。 元画像 処理の流れ(アルゴリズム) ステップ1:cv2をインポートする。 ステップ2:imread()で画像を読み込む。 ステップ3:image.shapeメソッドで画像のサイズ(高さ・幅・チャンネル数)を取得する。 ステップ4:線の始点を定義する。 ステップ5:線の終点を定義する。 ステップ6:線の太さを定義する。 ステップ7:cv2.line()関数で線を描画し、ステップ3