ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • GrabCut이란?
    컴공지식/컴퓨터비전 2024. 10. 2. 22:16

    GrabCut은 이미지에서 배경과 객체를 분리하는 방법 중 하나다.

    이 방법은 반자동 방식으로, 사용자가 먼저 대충 영역을 지정해주고, 컴퓨터가 나머지를 알아서 처리해주는 거다.

     

    작동 방식으로는

    1. 사용자가 관심 있는 부분에 사각형을 입력한다. 사각형 바깥은 확실한 배경으로 처리되고, 사각형 안쪽은 미지의 영역으로 취급된다. "여기는 뭐지?" 하고 생각하는 거다.
    2. 컴퓨터가 초기 레이블링을 한다. 사용자가 지정한 데이터를 바탕으로, 컴퓨터는 자동으로 배경과 객체를 나누려고 시도한다. 이 과정에서 픽셀을 배경이나 객체로 라벨링하거나, 그게 애매하면 임시로 할당해둔다.
    3. 가우시안 혼합 모델(GMM) 을 사용해 객체와 배경을 모델링한다. GMM은 픽셀의 밝기 값과 색상 같은 특징들을 사용해 객체와 배경을 더 정밀하게 구분해준다. 간단히 말하면, 컴퓨터가 이 모델을 통해 더 정확하게 객체와 배경을 나눈다.
    4. 주어진 데이터(GMM으로 학습된 것)를 바탕으로, 알려지지 않은 픽셀들을 객체일 가능성이 높은 픽셀 또는 배경일 가능성이 높은 픽셀로 분류한다. 이때, 가능성 있는 객체와 가능성 있는 배경으로 라벨링한다.
    5. 픽셀 분포를 기반으로 그래프를 만들고, 픽셀들이 그래프의 노드로 취급된다. 추가적으로 Source 노드Sink 노드가 추가된다. Source 노드객체 픽셀과 연결되고, Sink 노드배경 픽셀과 연결된다.
    6. 각 픽셀이 객체 또는 배경일 확률에 따라 에지의 가중치가 설정된다. 쉽게 말해서, 객체일 가능성이 높을수록 더 높은 가중치로 Source 노드와 연결되고, 배경일 가능성이 높을수록 더 높은 가중치로 Sink 노드와 연결되는 거다.
    7. 픽셀 간의 연결 에지의 가중치는 색상 차이유사성에 의해 결정된다. 만약 두 픽셀 간에 색상 차이가 크면, 그 에지의 가중치는 낮아진다. 즉, 색상이 비슷할수록 가중치가 높아지고, 서로 다르면 가중치가 낮아진다. 
    8. min-cut 알고리즘 사용하는데, min-cut 알고리즘은 그래프에서 Source 노드와 Sink 노드를 분리하는 과정이다. 이 알고리즘은 최소 비용으로 그래프를 두 개로 분할하는데, Source 노드에 연결된 건 객체, Sink 노드에 연결된 건 배경으로 간주된다.
    9. 마지막으로 결과를 분류한다. min-cut을 통해 Source 노드에 연결된 픽셀은 객체로 분류되고, Sink 노드에 연결된 픽셀은 배경으로 분류한다.
    10. 이 과정을 반복하면서 분류가 수렴될 때까지 진행한다. 즉, 객체와 배경이 명확하게 나뉠 때까지 계속 학습하는 거다.

    그러니까 GrabCut은 사용자가 사각형만 그려주면 나머지는 컴퓨터가 알아서 잘 처리하는 똑똑한 방법인 거다.

     

     

     

    GMM에 대해 더 깊이 알아보자

    GMM은 마치 파티에 있는 사람들을 분류하는 것과 비슷하다.

    파티에서 사람들을 두 그룹으로 나눈다고 생각해보자.

    배경 그룹(파티에서 조용히 있는 사람들)과 전경 그룹(파티에서 춤추는 사람들)

    처음엔 어느 그룹이든 잘 모르는 사람들이 있을 수 있다. 

    이때 GMM이 나서서, 사람들의 특징을 보고 "이 사람은 춤추는 전경 그룹에 속할 가능성이 커!" 또는 "이 사람은 조용한 배경 그룹일 거야!" 하고 확률적으로 분류해주는 거다.

     

    이제 확률 이야기를 해보자.

    파티에서 A라는 사람(픽셀)이 있을 때, 이 사람이 춤추는 그룹(객체)인지, 아니면 구경하는 그룹(배경)인지 확률적으로 판단하는 과정이다.

    p(A|B)는 "A라는 사람이 배경 그룹에 있을 때, 춤을 추고 있을 확률"이다.

    여기서 베이즈 규칙이라는게 나오는데 베이즈 규칙은 마치 파티에서 "이 사람은 전경일 확률이 높을까? 배경일 확률이 높을까?" 하며 판단하는 것과 같다. 즉, 춤을 추는 사람인지 아닌지 확률을 역으로 계산하는 거다.

     

    이제 그래프Min-Cut 이야기를 해보자

    파티에서 사람들끼리 서로 친밀도를 나타내는 을 연결한다고 상상해봐라.

    서로 비슷한 사람들끼리 끈이 더 두껍고, 다르면 끈이 얇아진다.

    여기서 "끈"이 바로 에지 가중치다.

    사람들이 비슷하게 생겼거나 옷 색깔이 비슷하면 끈이 두껍고(가중치가 높고), 전혀 다르면 끈이 얇아진다.(가중치가 낮음)

    Source 노드는 "이 사람은 객체일 가능성이 아주 커!"라는 그룹이다. 

    Sink 노드는 "이 사람은 배경일 가능성이 확실해!"라는 그룹이고..

    이제 min-cut 알고리즘이 등장해서, 이 끈들을 끊어서 전경 그룹과 배경 그룹을 깔끔하게 나눠준다.

    즉, 전경 그룹은 춤추는 사람들, 배경 그룹은 구경하는 사람들로 완벽하게 분리해주는 거다.

     

    결론적으로, GrabCut은 파티에서 전경(춤추는 사람들)과 배경(구경하는 사람들)을 확률을 통해 분류하고 친밀도(에지 가중치)를 통해 그룹을 나눈다고 생각하면 된다. 이 과정에서 GMM과 그래프, min-cut 같은 수학적인 개념들이 서로 연결과 분리 작업을 도와주는 역할을 한다.

    '컴공지식 > 컴퓨터비전' 카테고리의 다른 글

    adaptiveThreshold 함수 코드  (0) 2024.10.02
    threshold 처리 코드  (0) 2024.10.02
    적응형 임계값(Adaptive Thresholding)이란  (0) 2024.10.02
    Global Thresholding이란  (1) 2024.10.02
    HoughLines랑 HoughLinesP의 차이  (1) 2024.09.25
Designed by Tistory.