코드를 느껴바라

컴퓨터 비전 : 영상 분할 (Image Segmentation) 본문

CS/컴퓨터 비전(Computer Vision)

컴퓨터 비전 : 영상 분할 (Image Segmentation)

feelTheCode 2025. 4. 24. 22:11

영상 분할 (Image Segmentation) != 에지 검출의 접근 방법

영상 분할은 하나의 영상의미 있는 여러 영역으로 나누는 작업입니다.
예를 들어, 사람 얼굴을 영상에서 추출하거나, 배경과 물체를 구분하는 작업이죠.
분할이 잘 되어야 이후의 객체 인식, 추적, 이미지 편집 등이 정확하게 이루어질 수 있습니다.


1. 영상에서 영역을 분할하는 기본 원리

기본 개념:

  • 영상 분할이란 영상을 여러 서로 겹치지 않는 영역으로 나누는 것.
  • 각 영역 안의 화소는 서로 비슷한 성질(명암, 색상 등)을 가지고 있어야 하고,
    다른 영역과는 다르게 구분되어야 합니다.

이 기본 원칙을 만족하면서도 상황에 따라 다양한 기법이 등장했습니다​.


2. 초창기 주류 알고리즘

대표 기법:

  1. 임계화(Thresholding) -> 오츄 알고리즘, 적응형 임계화 방법
    • 영상의 밝기 값에 따라 두 그룹(예: 배경/물체)으로 나눔.
    • 예시: 밝기가 일정 값보다 크면 물체, 작으면 배경.
  2. 군집화 (Clustering)
    • 화소의 색상/밝기 정보를 군집으로 묶음.
    • 대표적으로 K-means 알고리즘 사용.

한계:

  • 임계화는 조명 변화복잡한 배경에서 성능이 떨어짐.
  • 군집화는 화소 간의 공간적 위치를 고려하지 않아서, 서로 떨어져 있어도 비슷한 색상이면 같은 군집으로 묶일 수 있음​.

3. 그래프 알고리즘 (Graph-based Methods)

원리:

  • 영상을 그래프로 표현:
    • 화소 = 노드, 화소 간의 연결 = 에지.
    • 에지의 가중치는 두 화소가 얼마나 비슷한지 나타냄.
  • 그래프 절단(Graph Cut):
    • 최소 절단(min-cut)을 찾아 영상 분할.
    • 물체와 배경을 가장 효율적으로 구분할 수 있음.

장점:

  • 공간적 정보색상/명암 유사도를 모두 고려함.
  • 복잡한 영상에서도 효과적인 분할 가능​.

4. 민시프트 알고리즘 (Mean-Shift)

원리:

  • 군집화(clustering) 기반.
  • 화소의 위치 + 색상 정보를 함께 고려해서,
    비슷한 화소들을 하나의 영역으로 묶음.

과정:

  1. 각 화소에서 시작 → 주변 이웃들의 평균 위치로 이동 →
    이동이 멈출 때까지 반복 → 군집의 중심(모드) 찾기.
  2. 중심(모드)이 비슷한 것끼리 하나의 영역으로 묶음.

장점:

  • 에지(경계)를 잘 보존하면서 분할.
  • 엣지 스무딩 효과: 영역 내부는 부드럽게, 경계는 또렷하게.
  • 기존 K-means를 통한 군집화에서 거리가 멀어도 색상이 비슷하면 같은 그룹으로 묶이는 문제를
    mean-shift는 위치도 고려하기 때문에 해결할 수 있음.

단점:

  • 계산량이 많아서 속도가 느림 (최적화 필요)​.

5. 워터셰드 알고리즘 (Watershed)

원리:

  • 영상을 지형(terrain)으로 보고, 물이 고이는 유역(watershed)을 찾아서 분할.
  • 낮은 밝기값 = 계곡, 높은 밝기값 = 산.

과정:

  1. 에지 강도 맵 생성 →
  2. 낮은 곳(계곡)부터 물을 채우듯이 퍼뜨림 →
  3. 서로 다른 유역이 만나는 곳에 댐(경계)을 쌓음.

장점:

  • 항상 폐곡선(닫힌 경계선)을 생성 → 영역이 명확히 나뉨.

단점:

  • 잡음에 민감 → 너무 많은 영역(과분할) 생성 가능.
    → 이를 개선한 다양한 변형 알고리즘이 존재​.

6.대화식 물체 분할 (Interactive Object Segmentation)

대화식 물체 분할은 사용자가 직접 관심 있는 물체를 선택하거나 조작하여
컴퓨터가 그 물체를 정확하게 분할하는 방법입니다.
주로 사진 편집, 의료 영상 처리, 객체 추적 등에 활용됩니다.

  • 사용자가 초기 입력(곡선, 점 등)을 주고,
    이를 바탕으로 정확한 경계선을 자동으로 찾아주는 방식입니다.

대표적인 기법은 다음과 같습니다:


6.1 능동 외곽선 (Active Contour, 스네이크)

원리:

  • 초기 곡선(컨투어)을 설정하고,
    곡선이 물체의 경계에 도달할 때까지
    에너지 최소화를 통해 이동시키는 방법입니다.

에너지 구성:

  • 내부 에너지: 곡선이 너무 휘거나 찢어지지 않도록 부드럽게 만듦.
  • 외부 에너지: 영상의 에지(경계) 근처로 곡선을 끌어당김.

장점:

  • 경계를 부드럽게 따라감.

단점:

  • 초기 곡선 설정에 민감.
  • 복잡한 형태(구멍, 섬 등)는 처리 어려움.

활용: 물체 외곽을 매끄럽게 잡아야 할 때 사용.


6.2 지능 가위 (Intelligent Scissors)

원리:

  • 사용자가 마우스로 물체 경계를 대략적으로 지정하면,
    시스템이 최적 경로(에지)를 따라 자동으로 경계선을 생성합니다.
  • Dijkstra 알고리즘을 활용해
    화소 간 가중치(에지 강도)를 고려하여
    최소 비용 경로를 계산합니다.

장점:

  • 실시간으로 경계선을 확인 가능.
  • 사용자 직관을 활용하면서도 자동 경계 보정.

단점:

  • 복잡하거나 흐릿한 경계에서는 성능 저하.

활용: GIMP 같은 이미지 편집 프로그램에서 사용.


6.3 레벨 셋 (Level Set)

원리:

  • 곡선을 함수 형태로 표현 (등고선으로 암시적 표현).
  • 물체의 경계를 따라 함수 값이 0이 되는 곡선을 찾습니다.
  • 복잡한 형태 변화(구멍, 분리된 영역 등)를 자연스럽게 처리.

장점:

  • 토폴로지 변화에 강함 → 구멍, 섬 있는 구조도 처리 가능.
  • 곡선을 명시적으로 표현하지 않아 수학적으로 유연함.

단점:

  • 계산량이 많고 구현이 복잡.

활용:

  • 의료 영상에서 복잡한 장기 분할.
  • 형태 변화가 큰 물체를 처리할 때 사용.

6.4 그래프 절단 (Graph Cut) & GrabCut

  • 그래프 절단: 영상을 그래프로 모델링 → 최소 절단(min-cut)을 찾아 물체와 배경을 분할.
  • GrabCut: 그래프 절단을 대화식으로 개선한 방식.
    → 사용자가 대략적인 사각형을 그리면,
    내부는 물체, 외부는 배경으로 추정 →
    반복적으로 물체/배경 모델을 개선하며 경계를 정교화.
  • OpenCV에서 GrabCut 함수 제공.

활용:

  • 사진 편집, 자동 물체 추출 등에 널리 사용.
기법  원리 장점 단점
능동 외곽선 (스네이크) 초기 곡선 → 에너지 최소화로 경계 탐색 부드러운 경계 초기 위치 민감, 복잡한 형태 어려움
지능 가위 마우스 경로 + 에지 따라 자동 경계 생성 직관적, 실시간 경계 확인 가능 흐릿한 경계에 약함
레벨 셋 함수로 곡선을 암시적으로 표현, 토폴로지 변화 가능 복잡한 형태, 구멍 처리 가능 계산량 많음
그래프 절단 / GrabCut 그래프 모델링 → 최소 절단으로 분할 경계 정확, 자동화 가능 그래프 구성 복잡, 메모리 요구

 

반응형