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

OpenCVで画像にゼロしきい値処理(THRESH_TOZERO)を実行する方法

本記事では、OpenCVを使用して画像にゼロしきい値処理(Zero Thresholding)を適用する方法を解説します。

しきい値処理とは

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

ゼロしきい値処理の場合は、輝度値がしきい値より小さいピクセルがすべて0(黒)に設定されます。一方、しきい値より大きいピクセルは元の輝度値がそのまま保持されるのが特徴です。

元画像

OpenCVで画像にゼロしきい値処理(THRESH_TOZERO)を実行する方法

アルゴリズム

ステップ1: cv2モジュールをインポートします。
ステップ2: しきい値(threshold_value)と最大値(max_val)を定義します。
ステップ3: cv2.threshold関数にこれらのパラメータを渡し、実行したいしきい値処理の種類(ここではcv2.THRESH_TOZERO)を指定します。
ステップ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_TOZERO)
cv2.imshow('ZeroThresholding', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

このコードでは、testimage.jpgを読み込み、しきい値を120、最大値を255としてcv2.threshold関数を呼び出しています。cv2.THRESH_TOZEROを指定することで、しきい値以下のピクセルが0になり、しきい値を超えるピクセルは元の値のまま維持されます。

出力結果

OpenCVで画像にゼロしきい値処理(THRESH_TOZERO)を実行する方法

処理後の画像では、輝度値が120以下だった領域が黒く表示され、それより明るい領域のみが元の状態で残っていることが確認できます。この手法は、背景を除去して特定の明るさ以上の領域だけを抽出したい場合などに役立ちます。

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

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

  2. OpenCVで画像を読み込んで表示する方法を解説

    本記事では、OpenCVライブラリを使って画像を読み込み、画面に表示する方法をわかりやすく解説します。OpenCVは、リアルタイムのコンピュータビジョン処理を主な目的としたオープンソースのプログラミングライブラリです。画像処理や機械学習の分野で広く利用されており、Pythonとの相性も抜群です。事前準備画像を読み込む前に、対象となる画像ファイルがプログラムと同じディレクトリ(フォルダ)内に保存されていることを確認してください。別の場所にある場合は、絶対パスまたは相対パスで正しく指定する必要があります。処理の手順(アルゴリズム)OpenCVで画像を読み込んで表示する流れは、以下の3ステップです。