GrabCut

개요

  • GrabCutMicrosoft Research Cambridge에서 제안한 “GrabCut: Interactive Foreground Extraction using Iterated Graph Cuts” (SIGGRAPH 2004) 에서 비롯된 이미지 분할 알고리즘으로 Graph Cuts 최적화를 통해 전경(Foreground)과 배경(Background)을 자동으로 분리하는 방법.
  • 사용자가 러프하게 잡아준 영역(Grab)을, 가우시안 혼합 모델(GMM) + Graph Cuts를 이용해 자동으로 깔끔하게 잘라내는 반복적 최적화 기반 분할 알고리즘.
  • Paper : “GrabCut”: interactive foreground extraction using iterated graph cuts

동작 과정

  1. 사용자 초기화
    • 사용자는 이미지 위에 전경 추정 사각형(Rectangle) 을 지정
  2. 초기 GMM 학습
    • 사각형 내부(전경), 외부(배경) 영역의 색상 분포를 Gaussian Mixture Model로 학습
    • 전경과 배경 각각 여러 개의 가우시안으로 표현 (보통 K=5)
  3. 그래프 구성
    • 각 픽셀을 노드(vertex)로 보고, 전경/배경 두 개의 특수 노드(source, sink)를 둠
    • 두 종류의 간선(edge)을 만듦
      • Data term (t-link) : 픽셀이 전경/배경일 확률 (GMM 기반)
      • Smoothness term (n-link) : 인접 픽셀이 같은 레이블을 가질 가능성 (경계가 부드럽도록)
  4. Graph Cut 최적화
    • Min-Cut/Max-Flow 알고리즘을 적용하여 전경/배경을 나누는 최소 컷(minimum cut)을 찾음
  5. 반복 수행
    • 분할 결과로부터 다시 전경/배경 GMM을 재학습 → 그래프 컷 실행 → 다시 분할
  6. 사용자 수정(Optional)
    • 브러시툴로 전경/배경 잘못 분류된 영역 지정해 알고리즘 보정 가능 (OpenCV 구현에 포함)

GrabCut 방법


참고