Global Thresholding이란
Global Thresholding이란 이미지 전체에 하나의 임계값(Threshold)을 정해서 이미지를 나누는 방법이다.
기본 방법은
- 초기 임계값(T)을 설정한다. 대충 처음에 값 하나 잡는 거다.
- 그 임계값(T)을 사용해서 이미지를 두 그룹으로 나눈다. 하나는 객체, 나머지는 배경
- 각 그룹의 평균 값(m1, m2)을 계산한다.
- 새로운 임계값을 T = 0.5 * (m1 + m2)로 계산한다. 즉, 두 그룹의 평균을 더하고 반으로 나누는 거다.
- 마지막으로, 2~4단계를 반복해서 임계값이 더 이상 크게 변하지 않을 때까지 계산한다.
또한 Otsu's method를 이용해 글로벌 쓰레솔딩을 찾을 수 있느데 이는 이미지에서 최적의 임계값을 자동으로 찾아주는 방법이다.
이 방법을 통해 클래스들(객체와 배경)이 명확하게 구분되도록 해주는 거다.
개념은 다음과 같다.
잘 구분된 클래스들은 각 픽셀의 밝기 값(명도)이 명확하게 차이가 나야한다.
반대로, 클래스 간의 차이가 최대가 되는 임계값이 최고의 임계값이라고 볼 수 있다.
이 방법은 이미지의 히스토그램을 기반으로 계산된다.
히스토그램을 보면 픽셀 값이 어떻게 분포되어 있는지 알 수 있는데 이걸로 적절한 임계값을 찾는거다.
Otsu 방식은 이 차이를 극대화하는 임계값을 찾아서 이미지 분할을 최적화해준다.
그래서 어떤 임계값이 제일 나은지 고민할 필요 없이, 그냥 자동으로 찾아주는 고마운 방법이다 ㅎㅎ
나처럼 결정 장애 있는 사람한테 딱이다 ㅋㅋ
아무튼 이 방법은 이미지에서 클래스 간 분산을 최대화하는 임계값을 자동으로 찾아주는 방법이다.
기본 과정은
먼저, 이미지의 각 픽셀 값들이 얼마나 많이 등장하는지를 계산하는 히스토그램을 계산을 한다. 그리고 전체 픽셀 수로 나눠서 0과 1 사이의 값으로 만드는 정규화 과정을 진행한다.
그리고 임계값을 여러 개 설정해서, 그 값마다 클래스 간 분산을 계산한다. 분산이 높다는 건 클래스 간 차이가 크다는 거다.
마지막으로, 클래스 간 분산이 최대가 되는 임계값(k)을 찾아내면 그게 바로 최적의 임계값이 되는거다.