더북(TheBook)

이 예제 코드에 의한 이진화 결과를 그림 11-3에 나타냈습니다. 그림 11-3(a)는 입력 영상으로 사용한 document.bmp 영상이고, 그림 11-3(b)는 그레이스케일 값 128을 임계값으로 사용하여 이진화한 결과 영상입니다. 그림 11-3(c)는 threshold() 함수의 type 인자에 THRESH_BINARY 대신 THRESH_BINARY_INV를 지정하여 이진화를 수행한 결과입니다. OpenCV에서는 객체를 흰색, 배경을 검은색으로 취급하는 경우가 많기 때문에 상황에 따라 THRESH_BINARYTHRESH_BINARY_INV를 적절하게 선택해서 사용해야 합니다.

▲ 그림 11-3 THRESH_BINARY와 THRESH_BINARY_INV 방법에 의한 이진화 결과 비교

 

ThresholdTypes 열거형 상수 중 THRESH_OTSUTHRESH_TRIANGLE는 임계값을 자동으로 결정할 때 사용합니다. 두 가지 방법 모두 영상의 픽셀 값 분포를 분석하여 임계값을 자동으로 결정하고, 결정된 임계값을 이용하여 임계값 연산을 수행합니다. 두 방법 중 THRESH_OTSU 상수는 오츠(Otsu)가 제안한 자동 이진화 임계값 결정 알고리즘을 이용하여 임계값을 결정하며, 이 방법은 입력 영상의 픽셀 값 분포가 두 개의 부류로 구분되는 경우에 최적의 임계값을 결정하는 알고리즘입니다[Otsu79]. THRESH_OTSUTHRESH_TRIANGLE 상수는 보통 논리합 연산자(|)를 이용하여 앞서 소개한 다섯 개의 ThresholdTypes 상수와 함께 사용됩니다.3 자동 이진화를 수행할 경우, threshold() 함수 내부에서 임계값을 자체적으로 계산하여 사용하기 때문에 threshold() 함수의 세 번째 인자로 전달한 thresh 값은 사용되지 않습니다. 자동 임계값 결정 방법은 CV_8UC1 타입의 영상에만 적용할 수 있습니다.

 

3 만약 threshold() 함수의 type 인자에 THRESH_OTSU 또는 THRESH_TRIANGLE 상수만 지정하면 각각의 알고리즘에 의해 자동으로 임계값을 결정하고, THRESH_BINARY 방법으로 이진화를 수행합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.