영상처리 9. Image Segmentation을 어떻게 할까
Image Segmentation
이미지를 여러 영역Region으로 나누는 과정이다. 영역이란 픽셀의 집합이다.
어떻게 분할할까? 두 가지 주요 기법이 있다.
(1) 임계값 처리 Thresholding 픽셀 값을 특정 임계값을 기준으로 두 개의 그룹으로 구분한다. 임계값을 어떻게 설정할까? 사람이 직접 설정할 필요 없이, 최적의 임계값을 찾아주는 알고리즘이 존재한다. 이것이 Otsu’s Method이다.
Otsu’s Method란 무엇인가? 이미지의 히스토그램이 두 개의 봉우리를 가진다고 가정한다. 두 그룹간의 분산을 최대화하거나, 그룹 내 분산을 최소화하는 기점을 최적의 임계값으로 간주한다.
왜 위와 같이 구분하는가? 가장 좋은 구분은 집단 내의 차이는 최대한 줄이고, 집단 간의 차이는 최대한 벌리는 것이 최고의 구분이기 때문이다.
이미지의 전체 분산은 어떤 임계값을 설정하든 항상 일정한다. 전체 분산은 그룹 내 분산 + 그룹 간 분산으로 계산된다. 즉 그룹 내 분산이 최소가 되는 임계값을 찾으면, 동시에 그룹 간 분산이 최대화된 임계값을 찾은 것과 같다.
가장 간단한 방법은 임계값을 0부터 255까지 대입해봐서 두 그룹간의 평균을 구하고, 편차를 구해서 분산을 계산하는 것이다. 그중에서 그룹 내 분산을 가장 작게 만드는 임계값을 선택한다.
그러나 모든 임계값에 대해 매번 처음부터 분산을 계산하는 것은 비효율적이다. 임계값이 1씩 변할 때 분산 값이 어떻게 변하는지를 재귀적으로 빠르게 찾는 알고리즘이 존재한다. 이를 통해 연산을 단축시킬 수 있다. 무슨 알고리즘이지?
(2) 연결 요소 레이블링 Connected Component Labeling 아이디어는 간단하다. 이진 흑백 이미지에서, 연결된 픽셀들을 하나의 Component로 간주하는 것이다. 그 Component에 번호Label를 붙인다.
Connected Component란 서로 연결된 픽셀들의 최대 집합을 뜻한다. Connected되었다는 기준을 상하좌우인지, 대각선까지 포함하는지에 따라 4-Connectivity, 8-Connectivity로 구분할 수 있다. 적절한 연결성 기준을 선택하면 된다.
Labeling Algorithm 또한 간단하다. 이미지를 위에서 아래로 스캔한다. 1을 만나면, 주변의 이웃 픽셀의 레이블이 있는지 확인한다. 없으면 새로운 레이블을 할당한다. 있으면 이웃의 레이블을 따른다. 만약 이웃들이 서로 다른 레이블을 가졌다면, 둘 중 하나의 레이블을 할당하고 두 레이블이 동등함을 따로 기록한다. 스캔이 끝난 후, 동등하다고 기록한 레이블을 하나로 통합한다.