본문 바로가기

딥러닝(Deep Learning)/컴퓨터 비전

오츄(Otsu) 알고리즘(feat. 최적화 문제로 임계치를 결정한 뒤 이진 영상화)

본격적인 설명을 하기 앞서, 아래의 모분산의 공식을 이해하고 있어야 한다. 

분산을 표현하는 식이다. 분산은 결과와 평균과의 편차들을 제곱하고 평균을 취하여 계산한다

오츄(Otsu) 알고리즘은 이미지 이진화(binarization)를 수행하기 위한 알고리즘 중 하나로, 이미지의 히스토그램을 분석하

여 최적의 임계값을 찾아내는 데 사용됩니다.

아래에 오츄 알고리즘을 예시를 들어 구체적이고 쉽게 설명하겠습니다.

단계 1: 히스토그램 생성

이미지를 흑백으로 변환(명암 영상으로 변환)하고, 픽셀 값의 히스토그램을 생성합니다. 히스토그램은 픽셀 값의 빈도를

나타냅니다.

단계 2: 클래스 간 분산 계산

각각의 가능한 임계값마다 클래스 간 분산(between-class variance)을 계산합니다.

클래스 간 분산은 두 클래스(흑색과 백색으로 구분되는 경우) 간의 분산 정도를 나타내며,

값이 클수록 두 클래스 간의 차이가 큽니다.

임계값을 T라고 할 때, 클래스 간 분산은 다음과 같이 계산됩니다:

단계 3: 최적 임계값 선택 클래스 간 분산을 모든 가능한 임계값에 대해 계산한 후, 그 중에서 클래스 간 분산이 최대가 되는 임계값을 선택합니다. 수학적으로는 최대값을 찾는 것이지만, 이를 구체적으로 계산하는 부분은 생략하겠습니다.

예시: 다음은 간단한 예시를 통해 오츄 알고리즘의 작동을 보여줍니다.

  • 간단한 이미지의 픽셀 값: [50, 60, 70, 120, 130, 140, 220, 230, 240]
  • 히스토그램: {50: 1, 60: 1, 70: 1, 120: 1, 130: 1, 140: 1, 220: 1, 230: 1, 240: 1}

임계값을 150이라고 가정하면,(각 픽셀값이 150이상이면 클래스 1, 150 이하이면 클래스 0)

 

 

이런 식으로 모든 가능한 임계값에 대해 계산하고, 최대값을 가지는 임계값을 선택하게 됩니다.

이 임계값을 기준으로 이미지를 이진화할 수 있습니다.

(클래스 0과 클래스 1의 분산의 차이가 큰 임계값일수록, 흑백 구분이 잘 된다)

 

다만, [컴퓨터 비전과 딥러닝] 교재의 p87의 오츄 알고리즘은 식을 좀더 최적화 시켜 놓은 거여서, 위 식과는 다르다. 그러

식의 형태만 다를 뿐, 원리는 위에서 파생된다.