8장. Threshold, Adaptive Threshold, Otsu
용어 짚고 가기
이진화(binarization)그림의 칸을 두 가지 값(보통 0 과 255)으로만 나누는 일입니다. binary 는 "둘로 된"이라는 뜻입니다.이진 그림(binary image)0 과 255 두 값만 가진 흑백 그림입니다. 3장에서 본 마스크가 바로 이진 그림입니다.임계값(threshold)두 무리를 나누는 기준 숫자, 곧 커트라인입니다. threshold 는 "문지방"이라는 뜻으로, 넘으면 다른 방에 들어간다는 말입니다.cv2.threshold그림 전체에 임계값 하나를 대어 이진화하는 OpenCV 함수입니다.전역 임계값(global threshold)그림 전체에 똑같이 쓰는 임계값 하나입니다. global 은 "전체에 걸친"이라는 뜻입니다.maxval(maximum value)임계값을 넘은 칸에 넣을 값입니다. 보통 255(흰색)를 줍니다.THRESH_BINARY임계값보다 크면 maxval, 아니면 0 으로 바꾸는 방식입니다.INV(inverse)결과의 흑백을 뒤집는다는 표시입니다. inverse 는 "거꾸로"라는 뜻입니다.THRESH_TRUNC(truncate)임계값보다 큰 값을 임계값으로 깎고 나머지는 그대로 두는 방식입니다. truncate 는 "윗부분을 잘라 내다"라는 뜻입니다.THRESH_TOZERO(to zero)임계값 이하인 칸만 0 으로 만들고 큰 칸은 그대로 두는 방식입니다. 이름은 "0 으로"라는 뜻입니다.봉우리(peak)히스토그램에서 막대가 높이 모인 곳입니다. 바탕과 물체가 저마다 봉우리를 만듭니다.골짜기(valley)두 봉우리 사이의 낮은 곳입니다. 커트라인을 두기 좋은 자리입니다.조명 불균일(uneven illumination)그림의 자리마다 빛의 세기가 다른 상태입니다. 한쪽이 그늘진 문서 사진이 대표적입니다. uneven 은 "고르지 않은"이라는 뜻입니다.Adaptive Threshold(적응형 임계값)칸마다 주변의 밝기를 보고 임계값을 따로 정하는 방법입니다. adaptive 는 "형편에 맞추는"이라는 뜻입니다.cv2.adaptiveThresholdAdaptive Threshold 를 하는 OpenCV 함수입니다.blockSize(블록 크기)Adaptive Threshold 가 둘러보는 주변 네모의 한 변 칸 수입니다. 1 보다 큰 홀수여야 합니다.C(상수, constant)Adaptive Threshold 에서 주변 평균에서 빼는 숫자입니다. constant 는 "바뀌지 않는 수"라는 뜻입니다.ADAPTIVE_THRESH_MEAN_C주변 칸을 똑같이 더해 나눈 평균에서 C 를 빼 기준으로 쓰는 방식입니다. mean 은 "평균"이라는 뜻입니다.ADAPTIVE_THRESH_GAUSSIAN_C가운데에 가까운 칸일수록 무게를 더 준 평균에서 C 를 빼 기준으로 쓰는 방식입니다. Gaussian 은 수학자 가우스(Gauss)의 이름에서 왔습니다.가중 평균(weighted mean)값마다 무게를 달리 주고 낸 평균입니다. weight 는 "무게"라는 뜻입니다.Otsu 알고리즘(Otsu's method)두 무리가 가장 멀리 떨어지게 하는 임계값을 자동으로 고르는 방법입니다. 일본의 오츠 노부유키(大津展之)가 1979년에 발표해 그의 이름이 붙었습니다.무리 사이 분산(between-class variance)두 무리의 평균이 얼마나 떨어져 있는지를 비율까지 넣어 잰 숫자입니다. Otsu 는 이 숫자가 가장 큰 임계값을 고릅니다. variance 는 "퍼진 정도"라는 뜻입니다.THRESH_OTSUcv2.threshold에 Otsu 로 임계값을 고르라고 알리는 표시입니다.노이즈(noise)그림에 섞인 자잘한 잡티입니다. noise 는 "소음"이라는 뜻으로, 원하지 않는 신호라는 말입니다.가우시안 블러(Gaussian blur)칸마다 주변 칸과 무게를 달리해 섞어 그림을 부드럽게 하는 필터입니다. 6장에서 배웁니다. blur 는 "흐리게 하다"라는 뜻입니다.