예를 들어 camera.bmp 영상에 대해 오츠 방법으로 임계값을 결정하여 자동 이진화를 수행하려면 다음과 같이 코드를 작성합니다.
Mat src = imread("camera.bmp", IMREAD_GRAYSCALE); Mat dst; int th = (int)threshold(src, dst, 0, 255, THRESH_BINARY | THRESH_OTSU);
이 예제 코드는 threshold() 함수 인자에 THRESH_BINARY와 THRESH_OTSU 상수를 함께 지정하였으므로 함수 내부에서 임계값을 자동으로 결정하여 이진화를 수행합니다. 이 경우 사용자가 threshold() 함수 세 번째 인자로 설정한 임계값은 사용되지 않으며, 앞의 코드에서는 이 값을 0으로 설정했습니다. threshold() 함수는 이진화에 사용된 임계값을 반환하며, 앞의 예제 코드에서는 오츠 알고리즘에 의해 결정된 임계값이 th 변수에 저장됩니다. 실제 camera.bmp 영상에 대해서는 th 변수에 88이 저장됩니다. 오츠 방법에 의해 camera.bmp 영상의 자동 이진화 결과를 그림 11-4에 나타냈습니다. 그림 11-4(a)는 camera.bmp 입력 영상이고, 그림 11-4(b)는 오츠 방법에 의해 이진화된 결과 영상입니다.
▲ 그림 11-4 오츠 방법에 의한 자동 이진화