컴퓨터를 이용한 이미지 이해의 기초 단계 중 하나는 이미지 분할(Image Segmentation)이다. 이미지 분할은 하나의 이미지를 의미 있는 여러 영역 또는 객체 단위로 나누는 과정으로, 특정 응용 프로그램에서 관심 영역(Region of Interest, ROI)이 식별될 때까지 수행된다. 예를 들어, 의료 영상(Medical Imaging) 분석에서 종양이나 특정 혈관 영역을 분리하는 작업이 대표적인 이미지 분할의 목표이다. 정확한 분할은 이후 수행되는 컴퓨터 분석의 성패를 좌우하는 매우 중요한 전처리 단계이다.
이미지 분할 방법은 접근 방식에 따라 크게 강도 값 기반 방법(불연속성 또는 유사성 활용), 지식 기반 방법(사전 지식 활용), 데이터/학습 기반(모델 기반) 방법 등으로 분류할 수 있다. 이 중 강도 값 기반 방법은 다시 경계 기반 방법과 영역 기반 방법으로 나뉜다.
- 경계 기반 방법(Boundary-based Methods): 픽셀 값의 급격한 변화, 즉 경계(Edge/Boundary)를 감지하여 객체를 분리하는 방식이다.
- 영역 기반 방법(Region-based Methods): 유사한 특성(밝기, 색상, 질감 등)을 공유하는 픽셀들을 하나의 그룹으로 묶어 영역을 형성하는 방식이다. 단순 임계값 처리(Thresholding)나, 초기 시드(seed) 픽셀에서 시작하여 유사성 기준을 만족하는 인접 픽셀을 병합해 나가는 영역 확장(Region Growing) 등이 대표적인 영역 기반 방법에 속한다.
edge based vs region based |
경계 기반 방법은 밝기나 색상이 급격하게 변하는 'edge'를 감지하여 객체를 분할한다면,
영역 기반 방법은 유사한 특성을 가진 픽셀을 그룹화하여 객체의 영역을 생성하는 것을 목표로 한다.
본 글에서는 다양한 이미지 분할 기법 중에서도 특히 경계 기반 방법 중 하나인 능동 윤곽선(Active Contour) 방법과 영역 기반 방법 중 하나인 영역 확장(Region Growing)에 대해 심층적으로 다뤄보겠다.
능동 윤곽선 (Active Contour 또는 Snake) 방법
능동 윤곽선(Active Contour) 또는 스네이크(Snake)는 에너지 최소화(Energy Minimization) 원리에 기반한 대표적인 경계 기반 분할 기법 중 하나이다. 이 방법은 사용자가 관심 객체 주변에 대략적인 초기 윤곽선을 설정하면, 이 윤곽선이 스스로 에너지를 최소화하는 방향으로 움직여 실제 객체의 경계로 수렴해 나가는 방식으로 작동한다. 능동 윤곽선은 이미지의 강도 정보뿐 아니라 객체에 대한 사전 지식(Prior Knowledge)을 모델에 통합할 수 있어, 단순히 강도 변화에만 의존하는 방법들의 한계를 극복할 수 있다는 장점이 있다.
수학적으로 능동 윤곽선은 파라미터 s에 따라 정의되는 제어점들의 집합 으로 표현되며, 이 점들이 연결되어 하나의 윤곽선을 형성한다. 능동 윤곽선 방법의 핵심 목표는 다음의 총 에너지 함수 E_snake를 최소화하는 윤곽선 v(s)를 찾는 것이다:
여기서 각 에너지 항은 다음과 같은 의미와 역할을 수행한다.
내부 에너지 (Internal Energy 또는 Model Energy)
내부 에너지(Internal Energy)는 윤곽선 자체의 기하학적 속성에 의해 결정되며, 주로 윤곽선의 형태와 부드러움을 제어하는 역할을 한다. 이는 윤곽선이 과도하게 늘어나거나 구부러지는 것을 억제하여 연속적이고 매끄러운 형태를 유지하도록 하는 제약 조건으로 작용한다. 내부 에너지는 주로 다음 두 가지 요소로 구성된다:
- 탄성 에너지 (Elastic Energy): 윤곽선의 길이를 조절하는 항으로, 윤곽선이 너무 늘어나거나 줄어드는 것을 방지하여 연속성을 유지하도록 한다. 인접한 제어점 간의 거리가 일정하게 유지되도록 작용하며, 거리가 불균일할수록 에너지가 증가한다.
- 굽힘 에너지 (Bending Energy): 윤곽선의 곡률(curvature)을 조절하는 항으로, 윤곽선이 급격하게 꺾이거나 날카로운 모서리를 형성하는 것을 억제하여 부드러운 곡선 형태를 유지하도록 한다. 윤곽선의 곡률이 클수록(많이 휠수록) 에너지가 커진다.
외부 에너지 (External Energy 또는 Image Energy)
외부 에너지(External Energy)는 이미지 데이터 자체의 특성으로부터 유도되며, 윤곽선을 이미지 내의 실제 객체 경계로 끌어당기는 역할을 한다. 이 에너지는 일반적으로 이미지의 강도(Intensity)나 이미지 그래디언트(Image Gradient)와 관련하여 정의된다. 객체의 경계는 주변 픽셀과 밝기 차이가 큰 영역이므로, 이미지 그래디언트 값은 경계에서 높게 나타난다. 따라서 외부 에너지는 윤곽선이 그래디언트가 높은 영역, 즉 실제 객체 경계에 위치할 때 낮은 값을 갖도록 설계된다. 이를 통해 윤곽선이 에너지 최소화 과정에서 점차 객체의 경계로 이동하도록 유도된다. 소벨(Sobel) 연산자 등 다양한 엣지 검출 방법을 이용해 계산된 그래디언트 맵을 외부 에너지 계산에 활용할 수 있다. 또한, 사용자는 윤곽선이 특정 이미지 특징(예: 밝은 선, 어두운 영역 등)으로 이동하도록 외부 에너지를 직접 설계할 수도 있다.
에너지 최소화 및 윤곽선 변형
능동 윤곽선 알고리즘은 사용자가 지정한 초기 윤곽선에서 시작하여, 총 에너지 함수(E_snake)를 반복적으로 최소화하는 방향으로 윤곽선의 제어점들을 이동시킨다. 이는 마치 윤곽선에 작용하는 여러 가상의 힘(Force)들이 평형점을 찾아가는 과정으로 비유할 수 있다. 내부 에너지는 윤곽선을 부드럽게 유지하려는 힘으로, 외부 에너지는 윤곽선을 이미지의 의미 있는 특징(주로 경계)으로 끌어당기는 힘으로 작용한다. 이 두 힘의 균형점을 찾아가면서 윤곽선은 점차 실제 객체의 경계에 정확하게 정렬(align)된다. 사용자는 내부 에너지와 외부 에너지 항에 대한 가중치(weight) 파라미터를 조절함으로써, 윤곽선의 탄성이나 굽힘 정도, 그리고 이미지 특징에 대한 민감도를 제어할 수 있다.
능동 윤곽선 방법의 장점
능동 윤곽선 방법은 다음과 같은 주요 장점들을 가진다:
- 연속적인 경계 추출: 결과적으로 항상 끊김 없는 닫힌 형태의 윤곽선을 제공한다. 이미지 상에서 실제 경계가 노이즈나 폐색(occlusion) 등으로 인해 일부 끊어져 보이더라도, 내부 에너지의 제약 조건 덕분에 이를 메우는 연속적인 경계를 찾을 수 있다.
- 사전 지식(Prior Knowledge) 활용: 객체의 형태, 크기 등 사전 지식을 내부 에너지 항에 제약 조건으로 통합하여 분할 성능을 향상시킬 수 있다. 예를 들어, 특정 장기가 대략 타원 형태를 띤다는 정보를 활용하여 윤곽선이 타원 형태에서 크게 벗어나지 않도록 유도할 수 있다. 이는 순수하게 강도 정보에만 의존하는 방법들의 한계를 보완한다.
- 노이즈 강인성: 내부 에너지의 평활화(smoothing) 특성 덕분에 이미지에 노이즈가 존재하더라도 상대적으로 안정적인 분할 결과를 얻을 수 있다.
영역 확장(Region Growing) 방법
영역 확장(Region Growing)은 강도(intensity), 색상 등의 유사성을 기준으로 픽셀(Pixel)이나 작은 하위 영역들을 점차 더 큰 영역으로 그룹화(grouping)하는 이미지 분할(Image Segmentation) 방법이다. 이 기법은 미리 정의된 성장 기준(Growth Criteria)에 따라 인접한 픽셀 또는 영역들을 순차적으로 병합하는 방식으로 작동한다.
영역 확장의 주요 특징
영역 확장은 다음과 같은 주요 특징을 가진다.
- 유사성 기준 활용: 영역 성장 과정에서 새로 추가될 후보 픽셀과 이미 형성된 영역 사이의 유사성을 평가한다. 이 유사성을 판단하는 기준은 분석하려는 이미지 데이터의 특성에 따라 다양하게 설정될 수 있으며, 픽셀의 강도 값, 텍스처(Texture), 색상(Color) 정보 등이 사용될 수 있다. 예를 들어, 위성 이미지를 분석할 때는 색상 정보가 중요한 유사성 기준(Similarity Criteria)이 될 수 있다.
- 지역적 특성(Local Nature): 유사성 판단은 현재 픽셀과 인접 영역의 지역적인 정보에 기반하며, 해당 영역이 과거에 어떻게 성장해왔는지의 이력(history)은 고려하지 않는다는 특징이 있다.
- 정지 규칙(Stopping Rule): 영역 성장을 언제 멈출 것인지 결정하는 명확한 정지 규칙의 정의가 결과에 중요한 영향을 미친다.
영역 확장의 일반적인 절차
영역 확장의 일반적인 절차는 다음과 같다:
- 초기 시드(Seed) 선택: 분할하고자 하는 각 객체(영역) 내부에 시작점 역할을 하는 하나 이상의 시드 픽셀(Seed Pixel)을 선택한다. 시드는 사용자가 직접 지정할 수도 있고, 특정 조건(예: 특정 밝기 범위 내 픽셀)에 따라 자동으로 선택될 수도 있다.
- 인접 픽셀 검사: 현재 영역(초기에는 시드 픽셀)에 인접한 픽셀들을 검사한다. 일반적으로 4방향 또는 8방향 연결성(Connectivity)을 기준으로 인접 픽셀을 정의한다.
- 유사성 평가: 검사된 인접 픽셀이 현재 성장 중인 영역에 포함될 자격이 있는지 미리 정의된 유사성 기준을 사용하여 평가한다. 예를 들어, 인접 픽셀의 강도 값이 현재 영역 픽셀들의 평균 강도 값과의 차이가 특정 임계값(Threshold) 이내이면 유사하다고 판단할 수 있다.
- 영역 확장: 유사성 기준을 만족하는 인접 픽셀은 현재 영역으로 병합(merge)된다. 이 픽셀은 이제 영역의 일부가 된다.
- 반복: 더 이상 현재 영역에 추가될 수 있는 (즉, 유사성 기준을 만족하는) 인접 픽셀이 없을 때까지 2~4단계를 반복한다. 영역 성장이 멈춘 것이다.
- 후처리 (선택 사항): 모든 영역 성장이 완료된 후, 필요에 따라 매우 작은 영역을 제거하거나, 영역에 고유 번호를 부여하는 등의 후처리 단계를 수행할 수 있다.
예시
예시로, 특정 임계값(예: 강도 차이 1.6 이내)을 유사성 기준으로 설정하고 영역 성장을 적용하는 과정을 생각해 볼 수 있다. 초기 시드에서 시작하여, 이 기준을 만족하는 인접 픽셀들이 점진적으로 하나의 영역으로 합쳐지며 영역이 커지는 것을 시각적으로 확인할 수 있다.
Region Growing Example |
결론
결론적으로, 능동 윤곽선(Active Contour/Snake) 방법은 에너지 최소화 원리를 기반으로 이미지 내 객체의 경계를 효과적으로 추출하는 강력한 이미지 분할 기법이다. 내부 에너지와 외부 에너지 간의 상호작용을 통해 연속적이고 부드러운 윤곽선을 얻을 수 있으며, 사전 지식을 통합할 수 있는 유연성 덕분에 컴퓨터 비전의 다양한 영상 분석 분야에서 중요한 도구로 활용된다.
또한 영역 확장(Region Growing)은 시드 픽셀에서 시작하여 유사성 기준에 따라 주변 픽셀을 점진적으로 병합함으로써 이미지 분할을 수행하는 직관적이면서도 효과적인 영역 기반 기법이다. 이 방법의 성공 여부는 초기 시드의 위치와 개수, 그리고 어떤 유사성 기준과 정지 규칙을 사용하느냐에 따라 크게 달라질 수 있으므로, 대상 이미지와 분할 목적에 맞는 적절한 파라미터 설정이 중요하다.
추천글:
[컴퓨터비전개론] Fourier Transform - Filtering in Frequency Domain (Low Pass Filter, High Pass Filter)