Bongsu

오츄 알고리즘 (Otsu Algorithm) 본문

컴퓨터비전

오츄 알고리즘 (Otsu Algorithm)

bmsoo 2023. 7. 3. 19:32

이진영상(Binary Image)의 경우 화소가 0(흑) 또는 1(백)인 영상이다. 영상을 이진 영상으로 변환이 필요할 경우 우리는 '이진화' 를 수행하게 된다.

이진화의 경우 임계값(Threshold) T를 기준으로 T 값보다 큰 화소는 1로, T값 보다 작은 화소는 0으로 바꾸는 방법을 이용하게 된다.

그러나 이러한 임계값 T를 어떻게 찾느냐? 라는 질문을 던져보자.

가장 간단한 방법으로는 히스토그램을 통한 이진화 방법이 존재한다.

간단한 예시를 들어 아래와 같은 5x5 내부에 픽셀 값이 그림과 같을 때, 우측과 같이 히스토그램을 그릴 수 있다.

이때 픽셀값 3이 경우, 히스토그램의 계곡(Valley)으로 T값은 이러한 계곡 근처를 임계값으로 지정하여 이진화 시에 발생할 수 있는 쏠림현상을 억제할 수 있다.

 

그러나 실제 모든 사진이 이렇게 단순하다면 얼마나 좋을까...?

 

'컴퓨터비전과 딥러닝 (오일석)'의 자료를 참고하여 얻은 사진 일부의 RGB 중 R층의 픽셀값의 분포를 살펴보면 아래와 같다.

과연 여기서 Valley의 위치를 하나로 지정하여 T값을 도출할 수 있을까...?

아무래도 어려울 것 같다ㅎㅎ...

 

이에 오츄는 적절한 T값을 찾기위해 최적화 문제로 바라보고 목적 함수를 통해 T 값을 도출하는 오츄 알고리즘을 제안하였다.

오츄는 화소의 분산의 가중치 합을 목적 함수 J로 정하였는데, 이러한 J 값이 최소인 명암값을 최적값으로 지정하였다. 이유인 즉슨, 화소를 두집합으로 나누었을 때 분산이 작을 수록, 즉 화소집합이 균일하기 때문에 최적값을 도출할 수 있다는 것이다.

값 자체가 최적 값이 되는 것이 아니라, 값이 최소인 명암값을 최적값으로 이용하겠다는 말이 된다.

 

이를 수식으로 나타내면 아래와 같다.

이때  Hat t의 값이 최적값이다. Otsu의 경우 지정된 그림의 픽셀을 L개의 회색 수준으로 표시하였는데 t값은 이러한 L개의 값의 집합 중 한 원소라고 설명된다.

 

이때 목적함수 J 의 경우 수식은 아래와 같다. 

w0와 w1은 이진화 된 영상에서 0인 화소와 1인 화소의 크기로 가중치 역할을 하며, Sigma0 의 제곱 , Sigma1 의 제곱의 경우 0인 화소와 1인 화소의 분산이다. 

관심있는 분들의 경우, 과정 및 Boundary Condition 및 Rucursive Function을 통한 도출은 아래 원 저자의 Formulation을 보면 개략적인 흐름은 파악할 수 있을 것 같다.

 

N. Otsu, "A Threshold Selection Method from Gray-Level Histograms," in IEEE Transactions on Systems, Man, and Cybernetics, vol. 9, no. 1, pp. 62-66, Jan. 1979, doi: 10.1109/TSMC.1979.4310076.