[OpenCV-python] adaptive Threshold
2018. 6. 6. 01:59ㆍPython-이론/python-opencv
adaptive Threshold
global Threshold는 문턱 값을 하나의 이미지 전체에 적용시키는 반면 adaptive Threshold는 이미지의 구역구역마다 threshold를 실행 시켜주는 것이다. 그럼 아래의 함수를 보자
cv2.adaptiveThreshold(img, value, adaptivemethod, thresholdType, blocksize, C)
img: grayscale 이미지
value: adaptivemethod에 의해 계산된 문턱 값과 thresholdType에 의해 픽셀에 적용될 최대 값
adaptive method: 사용할 문턱값 계산 알고리즘
cv2.ADAPTIVE_THRESH_GAUSSIAN_C: X, Y를 중심으로 block Size * block Size 안에 있는 픽셀 값의 평균에서 C를 뺸 값을 문턱값으로 함
cv2.ADAPTIVE_THRESH_MEAN_C: X, Y를 중심으로 block Size * block Size 안에 있는 Gaussian 윈도우 기반 가중치들의 합에서 C를 뺀 값을 문턱값으로 한다.
blocksize: block * block size에 각각 다른 문턱값이 적용된다.
C: 보정 상수로서 adaptive에 계산된 값에서 양수면 빼주고 음수면 더해준다.
import cv2 img = cv2.imread('images/ironMan.PNG', cv2.IMREAD_GRAYSCALE) ret, origin = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY) thr1 = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 11, 2) thr2 = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 11, 2) cv2.imshow('global threshold', origin) cv2.imshow('GAUSSIAN_C', thr1) cv2.imshow('MEAN_C', thr2) cv2.waitKey(0) cv2.destroyAllWindows()
확실히 단순한 global threshold보다는 정확히 아이언맨의 선을 표현하고 있다.
'Python-이론 > python-opencv' 카테고리의 다른 글
[OpenCV-python] Contour 응용하기 1 (1) | 2018.06.07 |
---|---|
[OpenCV-python] Contour (0) | 2018.06.07 |
[OpenCv-python 사용법] global Threshold (0) | 2018.06.06 |
[OpenCv-python 기초 사용법] 이미지 연산처리를 통해 합성하기 (2) | 2018.05.31 |
[OpenCV-python 기초]:이미지 픽셀 조작 및 ROI(관심영역) (0) | 2018.05.30 |