【Python × OpenCV4】適応的閾値処理を実装。

はじめに


画像処理エンジニア検定:エキスパートの学習用のメモ。

使用環境


● Anaconda
● Spyder4
● macOS High Sierra 10.13.6
● Python
● OpenCV

適応的閾値


OpenCVで適応的閾値処理をするには、下記の関数を使用します。

cv2.adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C)

組んだプログラムは、下記になります。

import cv2

imageName = input("画像名を入力するしてください。\n")

img = cv2.imread("./img/" + imageName, cv2.IMREAD_GRAYSCALE)

src = img

maxValue = int(input("最大値を整数値で入力して下さい。\n"))

adaptiveMethod = cv2.ADAPTIVE_THRESH_GAUSSIAN_C

thresholdType = cv2.THRESH_BINARY

blockSize = int(input("ブロックサイズを整数値で入力して下さい。\n"))

C = int(input("近傍領域を整数値で入力して下さい。\n"))

def adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C):
    dst = cv2.adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C)
    filename = "./img/" + input("画像名を入力するしてください。\n")
    cv2.imwrite(filename, dst)
        
adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C)

実行結果は、下記になります。

入力画像
maxValue = 200, adaptiveMethod =cv2.ADAPTIVE_THRESH_GAUSSIAN_C, thresholdType = cv2.THRESH_BINARY, blockSize = 7, C = 8
maxValue = 255, adaptiveMethod = cv2.ADAPTIVE_THRESH_GAUSSIAN_C, thresholdType = cv2.THRESH_BINARY, blockSize = 3, C = 4
maxValue = 255, adaptiveMethod = cv2.ADAPTIVE_THRESH_GAUSSIAN_C, thresholdType = cv2.THRESH_BINARY, blockSize = 5, C = 8

適応的閾値のパラメータは、下記になります。

● src = 入力画像
● maxValue =最大値
● adaptiveMethod = 適応的閾値アルゴリズム
● thresholdType = 閾値処理
● blockSize = ブロックサイズ
● C = 近傍領域

おわりに


cv2.adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C)を使用して適応的閾値処理が出来ました。

参考文献



この記事が気に入ったらサポートをしてみませんか?