画像処理ライブラリOpenCVで画像を二値化するthresholdについて説明する。
OpenCVを使うには次のようにインポートが必要。
import cv2
1. thresholdによる画像の二値化
thresholdは入力画像(グレースケール画像)に対して、ピクセル値が閾値よりも大きければ255に、ピクセル値が閾値よりも小さければ0に変換する。これにより閾値を境界として画像を二値化する。
書式は以下。
retval, dst=cv.threshold(src, thresh, maxval, type[, dst])
引数 | 意味 |
---|---|
src | 入力画像 |
dst | 出力画像 |
thresh | 閾値 |
maxval | THRESH_BINARY、THRESH_BINARY_INVをthresholding typeに用いた場合の最大値 |
type | thresholding type |
入力画像として以下でグラデーションのあるグレースケール画像を作成し'gray.png'で保存。
import numpy as np import cv2 img = np.zeros((100, 256, 1), np.uint8) for x in range(256): img[:, x, :] = x cv2.imwrite('gray.png', img)
実行結果
thresholding typeは以下を用いることができる。
引数 | 意味 |
---|---|
THRESH_BINARY | 閾値よりも大きければmaxval、小さければ0に変換(一般的な二値化) |
THRESH_BINARY_INV | 閾値よりも大きければ0、小さければmaxvalに変換 |
THRESH_TRUNC | 閾値よりも大きければ閾値に、それ以外は元の値 |
THRESH_TOZERO | 閾値よりも大きければ元の値、それ以外は0に |
THRESH_TOZERO_INV | 閾値よりも大きければ0に、それ以外は元の値 |
thresholding typeにTHRESH_BINARYを用いた場合。threshは127、maxvalは255。
import cv2 img = cv2.imread('gray.png') ret, thresh = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY) cv2.imwrite('thresh.png', thresh)
実行結果
thresholding typeにTHRESH_TRUNC_INVを用いた場合。threshは127、maxvalは255。
import cv2 img = cv2.imread('gray.png') ret, thresh = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY_INV) cv2.imwrite('thresh.png', thresh)
実行結果
thresholding typeにTHRESH_TRUNCを用いた場合。threshは127、maxvalは255。
import cv2 img = cv2.imread('gray.png') ret, thresh = cv2.threshold(img, 127, 255, cv2.THRESH_TRUNC) cv2.imwrite('thresh.png', thresh)
実行結果
thresholding typeにTHRESH_TOZEROを用いた場合。threshは127、maxvalは255。
import cv2 img = cv2.imread('gray.png') ret, thresh = cv2.threshold(img, 127, 255, cv2.THRESH_TOZERO) cv2.imwrite('thresh.png', thresh)
実行結果
thresholding typeにTHRESH_TOZERO_INVを用いた場合。threshは127、maxvalは255。
import cv2 img = cv2.imread('gray.png') ret, thresh = cv2.threshold(img, 127, 255, cv2.THRESH_TOZERO_INV) cv2.imwrite('thresh.png', thresh)
実行結果
2. リファレンス
OpenCV > Image Thresholding
OpenCV > Miscellaneous Image Transformations > threshold()
OpenCV > Miscellaneous Image Transformations > ThresholdTypes
0 件のコメント:
コメントを投稿