이미지의 모든 영역을 특정 픽셀 기준값 기준으로 밝기 레벨을 2단계로 분류 하는 방법
는 이미지 픽셀 위치에서의 밝기 값이고 T는 기준값으로 해당값 이상이면 255, 미만이면 0으로 처리
OPENCV Thershold
retval, dst = cv2.threshold(src, thresh, maxval, type[, dst])
dst: 출력 이미지는 입력 이미지와 동일 사이즈로 출력
src : 입력 이미지 (multiple-channel, 8-bit or 32-bit floating point).
thresh : threshold 기준 값
maxval : 이미지에서 Threshold type에서 처리하기 위한 최대 값
type: threshold 처리 방식 (THRESH_BINARY, THRESH_BINARY_INV 등)
코드 예시
import cv2
import numpy as np
import matplotlib.pyplot as plt
img_highway = cv2.imread('high_way_example.jpg',cv2.IMREAD_COLOR)
img_highway_gray = cv2.cvtColor(img_highway,cv2.COLOR_BGR2GRAY)
_, img_highway_thresh = cv2.threshold(img_highway_gray,80,255,cv2.THRESH_BINARY)
plt.imshow(img_highway_thresh,cmap='gray'); plt.title('Global Threshold')
dst = cv2.adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C[, dst])
출력 이미지의 크기는 입력 이미지와 동일
src : 8bit GRAY scale 이미지.
maxValue : 이미지에서 Threshold type에서 처리하기 위한 최대 값
adaptiveMethod: Adaptive thresholding algorithm
thresholdType : threshold 처리 방식 (THRESH_BINARY, THRESH_BINARY_INV 등)
blockSize: Adaptive Threshold 를 진행할 영역 크기 (홀수로 지정 해야 함)
C: adaptiveMethod로 계산된 Threshould 값의 가중치
_, img_highway_thresh = cv2.threshold(img_highway_gray,80,255,cv2.THRESH_BINARY)
img_highway_adp = cv2.adaptiveThreshold(img_highway_gray,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C ,cv2.THRESH_BINARY,31,-30)
plt.figure(figsize = [20, 8])
plt.subplot(121);plt.imshow(img_highway_thresh,cmap='gray'); plt.title('Global Threshold')
plt.subplot(122);plt.imshow(img_highway_adp,cmap='gray'); plt.title('Adaptive Threshold')