컴공지식/컴퓨터비전

Global Thresholding이란

개강한 공대생 2024. 10. 2. 21:41

Global Thresholding이란 이미지 전체에 하나의 임계값(Threshold)을 정해서 이미지를 나누는 방법이다.

 

기본 방법

 

  1. 초기 임계값(T)을 설정한다. 대충 처음에 값 하나 잡는 거다. 
  2. 그 임계값(T)을 사용해서 이미지를 두 그룹으로 나눈다. 하나는 객체, 나머지는 배경
  3. 각 그룹의 평균 값(m1, m2)을 계산한다. 
  4. 새로운 임계값을 T = 0.5 * (m1 + m2)로 계산한다. 즉, 두 그룹의 평균을 더하고 반으로 나누는 거다.
  5. 마지막으로, 2~4단계를 반복해서 임계값이 더 이상 크게 변하지 않을 때까지 계산한다. 

또한 Otsu's method를 이용해 글로벌 쓰레솔딩을 찾을 수 있느데 이는 이미지에서 최적의 임계값을 자동으로 찾아주는 방법이다.

이 방법을 통해 클래스들(객체와 배경)이 명확하게 구분되도록 해주는 거다.

 

개념은 다음과 같다.

잘 구분된 클래스들은 각 픽셀의 밝기 값(명도)이 명확하게 차이가 나야한다.

반대로, 클래스 간의 차이가 최대가 되는 임계값이 최고의 임계값이라고 볼 수 있다.

이 방법은 이미지의 히스토그램을 기반으로 계산된다. 

히스토그램을 보면 픽셀 값이 어떻게 분포되어 있는지 알 수 있는데 이걸로 적절한 임계값을 찾는거다.

Otsu 방식은 이 차이를 극대화하는 임계값을 찾아서 이미지 분할을 최적화해준다.

그래서 어떤 임계값이 제일 나은지 고민할 필요 없이, 그냥 자동으로 찾아주는 고마운 방법이다 ㅎㅎ

나처럼 결정 장애 있는 사람한테 딱이다 ㅋㅋ

 

아무튼 이 방법은 이미지에서 클래스 간 분산을 최대화하는 임계값을 자동으로 찾아주는 방법이다.

기본 과정은

먼저, 이미지의 각 픽셀 값들이 얼마나 많이 등장하는지를 계산하는 히스토그램을 계산을 한다. 그리고 전체 픽셀 수로 나눠서 0과 1 사이의 값으로 만드는 정규화 과정을 진행한다.

그리고 임계값을 여러 개 설정해서, 그 값마다 클래스 간 분산을 계산한다. 분산이 높다는 건 클래스 간 차이가 크다는 거다.

마지막으로, 클래스 간 분산이 최대가 되는 임계값(k)을 찾아내면 그게 바로 최적의 임계값이 되는거다.