# simple thresholding

- 모든 픽셀에 대해 동일한 임계값이 적용됨
- 픽셀값이 임계값보다 작으면 0으로 설정되고, 임계값보다 크면 최댓값으로 설정

import cv2

cv2.threshhold(img, threshhold_value, value, flag)

[ img ]
회색조 이미지여야하는 소스 이미지

[ threshold_value ]
픽셀값을 분류하는데 사용되는 임계값

[ value ]
임계값보다 클 때 픽셀값에 적용되는 최댓값

[ flag ]
다양한 유형의 임계값 적용방법 및 스타일

- THRESH_BINARY (default)
픽셀값 > threshold_value == value, 픽셀값 < threshold_value == 0
- THRESH_BINARY_INV
픽셀값 > threshold_value == 0 , 픽셀값 < threshold_value == value
- THRESH_TRUNC
픽셀값 > threshold_value == threshold_value, 픽셀값 < threshold_value == 픽셀값
- THRESH_TOZERO
픽셀값 > threshold_value == threshold_value, 픽셀값 < threshold_value == 0
- THRESH_TOZERO_INV
픽셀값 > threshold_value == 0, 픽셀값 < threshold_value == threshold_value

 

# adaptive thresholding

- simple thresholding은 이미지 전반에 걸쳐 적용되는 하나의 임계값을 사용했기 때문에 이미지의 각 부분의 조명 조건이 다를 경우에 효과적인 방법이 아닐 수 있음. 그래서 adaptive thresholding을 사용해 이미지의 작은 영역을 기반으로 임계값을 설정함
- 이미지의 서로 다른 작은 영역에 대해 서로 다른 임계값을 계산하고 적용함으로써 조명이 다양한 이미지에 대해 더 나은 결과를 도출할 수 있음

cv2.adaptiveThreshold(img, value, adaptiveMethod, thresholdType, blocksize, C)

[ img ]
회색조 이미지

[ value ]
adaptiveMethod에 의해 계산된 임계값과 thresholdType에 의해 적용될 최댓값

[ adaptiveMethod ]
임계값 계산방법

-  ADAPTIVE_THRESH_GAUSSIAN_C
적용할 픽셀을 중심으로 하는 (blocksize x blocksize)안의 가우스 가중치 합에서 상수 C를 뺀 값이 임계값
- ADAPTIVE_THRESH_MEAN_C
적용할 픽셀을 중심으로 하는 (blocksize x blocksize)안의 픽셀값 평균에서 상수 C를 뺀 값이 임계값

[ thresholdType ]
임계값 적용 방법 및 스타일 (flag사용)      ex) THRESH_BINARY, THRESH_BINARY_INV 등

[ blocksize ]
임계값을 계산하기 위한 블럭크기, 적용될 픽셀이 블럭의 중심, blocksize는 홀수여야함

[ C ]
보정상수

'Python > OpenCV' 카테고리의 다른 글

findContours & drawContours  (0) 2022.07.07

+ Recent posts