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

OpenCVで画像に切り捨てしきい値処理(THRESH_TRUNC)を適用する方法

この記事では、OpenCVを使用して画像に対して切り捨てしきい値処理(THRESH_TRUNC)を実行する方法を解説します。しきい値処理(閾値処理)とは、各ピクセルの値を指定したしきい値との関係に基づいて変換する画像処理の基本的な手法です。

しきい値より小さいピクセルにはある値が割り当てられ、しきい値より大きいピクセルには別の値が割り当てられます。切り捨てしきい値処理の場合、しきい値を超えるピクセル値はすべてしきい値に置き換えられ、それ以外のピクセルは元の値のまま維持されます。

この処理は次のように定義されます。

  • src(x, y) > threshold の場合:dst(x, y) = threshold
  • それ以外の場合:dst(x, y) = src(x, y)

元画像

OpenCVで画像に切り捨てしきい値処理(THRESH_TRUNC)を適用する方法

アルゴリズム

  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_TRUNC)
cv2.imshow('TruncateThresholding', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

ここで重要なのは、cv2.threshold()の第4引数にcv2.THRESH_TRUNCを指定することです。これにより切り捨てしきい値処理が有効になります。また、imshow()でウィンドウを表示したままにするために、cv2.waitKey(0)とcv2.destroyAllWindows()を追加しています。

出力結果

OpenCVで画像に切り捨てしきい値処理(THRESH_TRUNC)を適用する方法

コードを実行すると、しきい値(120)より明るい領域がすべて120に置き換えられ、それ以下の領域は元の輝度値を保ったままの画像が出力されます。この処理は、画像のハイライト部分を抑えたい場合や、明るすぎる領域の情報を一定レベルに揃えたい場合などに役立ちます。

  1. OpenCVを使って画像・動画のエッジを検出するPythonプログラムの書き方

    この記事では、Pythonを使って画像や動画ファイルからエッジ(輪郭)を検出する方法を解説します。エッジ検出には、コンピュータビジョン向けに設計されたオープンソースライブラリ「OpenCV」を使用します。OpenCVはもともとIntelによって開発されたライブラリで、BSDライセンスのもとで無料で利用できます。OpenCVの機能を使うには、pipでインストールを行います。インストール時にNumPyモジュールも自動的にダウンロードされるため、別途用意する必要はありません。sudo pip3 install opencv-python今回の入力には動画ファイルを使用しますが、Webカメラを接続すれ

  2. Python・OpenCVでヒストグラム平坦化を実装する方法|cv2.equalizeHist()の使い方

    ヒストグラム平坦化(Histogram Equalization)とは ヒストグラム平坦化は、画像処理において画像のヒストグラムを利用してコントラストを調整する手法です。 この手法は、多くの画像の全体的なコントラストを向上させる効果があります。特に、画像内の有効なデータが近いコントラスト値で表現されている場合に威力を発揮します。この調整を行うことで、輝度値がヒストグラム上により均等に分布するようになり、局所的にコントラストが低い領域でも高いコントラストを得られるようになります。 OpenCVの cv2.equalizeHist() 関数 OpenCVには、この処理を実行するための関数 cv2