opencv チュートリアル チャレンジ3 画像のしきい値処理

画像のしきい値処理 — OpenCV-Python Tutorials 1 documentation

元画像

f:id:pongsuke:20170519145649j:plain

cv2.threshold

この関数は,シングルチャンネルの配列に対して,ある定数での閾値処理を行います.これは,グレースケールからの2値画像生成(関数 compare も,この目的に利用できます)やノイズ除去(つまり,小さすぎたり大きすぎたりする値をはじく処理)などに利用される場合が多いです.この関数がサポートする閾値処理にはいくつかの種類があり,それは引数 thresholdType によって決定されます:

double threshold(const Mat& src, Mat& dst, double thresh, double maxVal, int thresholdType)
配列の要素に対して,ある定数での閾値処理を行います.

パラメタ:   
src – 入力配列(シングルチャンネル,8ビット,あるいは32ビット浮動小数点型).
dst – src と同じサイズ,同じ型の出力配列.
thresh – 閾値.
maxVal – 閾値処理の種類が THRESH_BINARY や THRESH_BINARY_INV の場合に利用される,最大値の値.
thresholdType – 閾値処理の種類(以下の説明を参照してください).

f:id:pongsuke:20170519161608p:plain

やってみる

ret, img = cv2.threshold(img, 60, 255, cv2.THRESH_BINARY)

f:id:pongsuke:20170519161854p:plain

ret, img = cv2.threshold(img, 150, 255, cv2.THRESH_BINARY)

f:id:pongsuke:20170519161902p:plain

cv2.adaptiveThreshold

適応的閾値処理

void adaptiveThreshold(const Mat& src, Mat& dst, double maxValue, int adaptiveMethod, int thresholdType, int blockSize, double C)
配列に対して,適応的な閾値処理を行います.

パラメタ:   
src – 8ビット,シングルチャンネルの入力画像.
dst – src と同じサイズ,同じ型の出力画像.
maxValue – 条件を満足するピクセルに割り当てられる非0の値.説明を参照してください.
adaptiveMethod – 利用される適応的閾値アルゴリズム: ADAPTIVE_THRESH_MEAN_C または ADAPTIVE_THRESH_GAUSSIAN_C (説明を参照してください).
thresholdType – 閾値の種類. THRESH_BINARY または THRESH_BINARY_INV のどちらか.
blockSize – ピクセルの閾値を求めるために利用される近傍領域のサイズ.3, 5, 7, など.
C – 平均または加重平均から引かれる定数(説明を参照).通常,これは正値ですが,0や負値の可能性もあります.

やってみる

img = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 15, 20)

f:id:pongsuke:20170519162151p:plain