관리 메뉴

클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지

에지와 영역 6 - 대화식 분할 본문

인공지능/컴퓨터 비전

에지와 영역 6 - 대화식 분할

huenuri 2024. 11. 10. 10:22

오늘은 부모님이 오셔서 새벽 공부를 하다 말고 집 정리도 하고 이것저것 하느라 새벽 공부를 별로 많이 하지 못했다. 어제 수학과 영어 공부는 쉬었는데 오늘은 꼭 할 생각이다. 

예배를 드리러 가기 전까지 조금 시간이 있어 공부를 마저 해보며 이 단원의 개념 학습을 마칠 예정이다. 빠르게 학습하면 충분히 할 수 있을 것 같다.

 

지금까지 다룬 분할 알고리즘은 자동으로 영상 전체를 여러 영역으로 나눈다. 때로 한 물체의 분할에만 관심이 있는 경우가 있다. 예를 들어 의사는 엑스레이 영상에서 특정 장기만 분할하면 된다. 이런 상황에서 사용자는 분할 알고리즘이 필요로 하는 초기 정보를 기꺼이 입력할 것이다.

초기 정보를 가지고 반자동으로 동작하는 분할 알고리즘은 사용자의 의도에 맞게 출체를 분할한다.


 

 

 

1. 능동 외곽선

 

1987년에 Kass는 능동 외곽선 알고리즘을 발표했다. 사용자가 물체 내부에 초기 곡선을 지정하면 곡선을 점점 확장하면서 물체 외곽선으로 접근하는 방법이다.  곡선이 꿈틀대면서 에너지마 최소인 상태를 찾아가기 때문에 스네이크라는 별명을 얻었다.

 

 

 

 


 

 

 

 

2. GrabCut

네터워크 흐름은 여러 지점을 거치는 물이나 전기 흐름을 그래프로 표현하고 병목 지점을 찾아 하름을 개선하는 문제로서 아주 오래 전부터 연구되었다. Greig는 네트워크 흐름 알고리즘을 영상 복원에 활용하는 발상을 제시하여 컴퓨터 비전 분야로 끌어들였다. 한동안 별로 주목을 받지 못하다가 10여 년이 지나 스테레오와 영역 분할 등의 여러 문제에 활발히 적용되기 시작했다.

 

현자까지 널리 쓰이는 연구는 GrabCut 알고리즘이다. GrabCut에서는 사용자가 붓으로 물체와 배경을 초기 지정한다. 프로그램 4-7의 실행 결과에 사람이 붓칠한 영상이 있는데 파란색은 물체, 빨간색은 배경을 나타낸다. 파란 화소는 물체, 빨간 화소는 배경이 확실하니 이들 화소를 가지고 물체 히스토그램과 배경 히스토그램을 만든다. 나머지 화소들은 두 히스토그램과 유사성을 따져 물체일 확률과 배경일 확률을 추정하고 물체 영역과 배경 영역을 갱신한다.

 

 

 

GraabCut으로 물체 분할

프로그램 4-7은 사용자가 붓칠한 정보를 이용하여 GrabCut으로 물체를 분할한다. 영상에 붓칠하는 기능은 2장에서 실습한 프로그램 2-9를 다시 활용한다.

 

8행은 붓칠한 정보를 표시하는데 쓸 img_show 객체를 만든다. 원본 영상 img는 분할 알고리즘을 위해 원래 내용을 유지해야 하므로 img를 복사해 별도 배열 img_show를 만든다. 

11~12행은 사용자의 붓칠에 따라 물체인지 배경인지에 대한 정보를 기록할 배열 mask를 만든다. 

42행은 painting 콜백 함수를 등록한다. 16행은 왼쪽 버튼을 클력했을 때 쓸 파란색과 오른쪽 버튼을 클릭했을 때 쓸 빨간색을 정의하는데, 파란색은 물체를 칠하고 빨간색은 배경을 칠한다. 

 

GrabCut을이용해 물체 분할하기

 

 

 

원본 이미지에 페인팅을 사용해 물체는 파란색으로 배경은 빨간색으로 표시해주었다. 그리고 q를 누르면 물체와 배경이 분할된다.

 

 

 

 

 

대체로 분할이 잘 되었다. 이제 실행 결과를 분석해보자. 사용자가 붓칠한 정보를 보고 선수와 배경을 어느 정도 구분했다. 하지만 일부 배경이 잘 분할되지 않았고 파란색 유니폼을 입은 팔 부분이 조금 잘리기도 했다.

 


 

 

학습을 마치고

물체를 분할하는 실습은 무척 재미있었다. 아직 수식과 분할하는 과정은 이해하지 못했지만 이 부분은 나중에 공부하다보면 알게 될 것 같다. 

이제 다음 포스트에서 영역 특징에 대해서 공부해보겠다.