Open Source를 기반으로 한 영상분석

Open Source를 기반으로 한 영상분석

2765
     

 

 
     
 
 
 

 

 

 

      장상원 CBS 기술연구소

 


우리 주변을 보면 스마트폰 열풍이 대단하다. 직장인뿐만 아니라 대학생도 이제 스마트란 단어에 익숙해져 있다. 이 열풍을 주도한 업체는 검색1위 업체 구글과 하드웨어 업체 애플이다. 이들이 스마트폰 시장에 뛰어들면서 안드로이드폰과 아이폰을 만들며 이 같은 열풍을 이끌고 있는데, 다양한 이유가 있겠지만 분명한 것은 이들이 개방이란 정책을 썼기 때문이다. 애플의 경우 어플리케이션(이하 어플) 개발에 필요한 SDK(Software Development Kit)를 무료로 제공하여 많은 어플 개발자의 참여를 유도했고, 구글 또한 OS(안드로이드)를 포함한 SDK까지 무료로 개방하여 개발자뿐만 아니라 하드웨어 업체까지 안드로이드 진영으로 끌어들이고 있다. 이런 개방의 물결에 스마트폰하고는 또 다른 영역이지만 영상의 Open CV(Computer Vision) 오픈소스가 있어 소개하고자 한다.

Open CV는 “Open Source Computer Vision Library”의 약자로서, 인텔사에서 1999년부터 꾸준히 개발해 공개한 오픈소스 컴퓨터 비전 라이브러리다. 인텔사의 주도하에서 실시간 컴퓨터 비전 라이브러리를 목표로 했기 때문에 다른 오픈소스 라이브러리보다 더 체계화 되어 있고 기초 영상처리부터 고급 수준의 영상처리까지 상당한 양의 알고리즘들이 함수로 구현되어 있는 것이 장점이다. 또한 인텔 CPU에서 사용하는 경우 속도의 향상을 볼 수 있는 IPP(Intel Performance Primitives)를 지원한다. 인텔에서는 개방정책을 펴고 있지만 IPP 기능을 사용하려면 인텔 CPU를 사용해야 하기에 아마도 인텔과 개발자가 서로 윈윈하는 정책을 펼치는 것 같다. 그럼 Open CV를 가지고 할 수 있는 것은 무엇인가?

첫째로, 문자나 물체 인식 기능이다. 많이 사용하는 곳이 차량 주차장에 들어오는 차량번호를 자동으로 인식하여 데이터베이스에 저장하고 시간을 관리하는 곳이다. 아래 [그림]은 카메라를 통해 들어오는 영상의 번호판 부분을 인식하여 차량번호를 문자로 저장 및 화면에 빨간 글씨로 표현하는 기능을 Open CV를 통해 구현한 것이다. 또한 물체인식 기능을 사용해 하여 차선을 검출한다던지, 신호등 색깔을 판별하거나 표지판을 인식할 수도 있다.

  

   
 

 
 

 

[문자인식 예]

 

 

둘째로, 얼굴 인식 기능이다. 동영상 중에 사람얼굴이 나오면 얼굴 부분만 이미지로 저장하여 기존 DB에 저장된 A라는 인물과 비교한다. 어느 정도 일치하면 이 영상을 ‘A출현’이라는 메타데이터를 저장할 수 있다. 얼굴인식은 100% 정확하지 않지만 계속해서 기술이 발전하면 영화와 같이 CCTV로 어떤 사람이 어디에 있는지 정확하게 컴퓨터가 분석해 내지 않을까 하는 무서운 상상을 해본다.

셋째로, 증강현실 분야다. 예를 들어 쇼핑몰 분야를 소개하면, 소비자가 웹캠이 달린 PC나 스마트폰에서 증강현실이 적용된 어플을 실행한다. 그리고 웹캠을 통해 비춰진 자기 모습을 확인하고 가상의 옷을 고르면 자기 몸에 맞는 사이즈의 옷이 입혀진다. 그리고 모션 캡처를  이용해 손동작으로 옷의 색깔을 바꾸고 다른 옷으로 교체도 쉽게 가능하다. 이렇게 마음대로 입어본 옷이 마음에 들면 구매도 가능하고 페이스북에 올려 다른 사람의 의견을 물어볼 수 있다.

 

   
 

 

 

 

 

   

 

[증강현실이 적용된 쇼핑몰 예]

 

 

 

 

이밖에도 Open CV를 응용할 분야는 무궁무진하다. 방송사의 경우 아카이브 분야에 활용할 수 있는데, 예를 들어 방송에 내보낸 영상을 실시간으로 분석을 한다고 가정하자. 그 영상 중에 특정 문자(예를 들어 교회이름)가 나오면 텍스트로 저장하여 그 영상의 원본 메타데이터에 교회이름을 자동으로 추가할 수 있다. 또한 얼굴인식 기능을 이용하여 누가 출현했는지도 저장 가능하다. 즉, 아카이브의 주요 기능인 메타데이터를 컴퓨터가 알아서 저장할 수 있다. 

 

이런 다양한 기능을 제공하는 Open CV는 C++로 컴파일로 돼 있지만 C#등과 같은 닷넷 프로그램 언어로 개발 가능하도록 Wrapping된 버전이 여러 개발자포럼에서 공개되어 있다. 현재 기능이 추가되면서 2.2버전까지 나왔으며 버전이 올라갈 때마다 고급기능이 추가되고 스마트폰에 인식 가능한 Wrapping 버전도 나왔다. 꼭 Open CV 뿐만 아니라 다양한 오픈소스가 있으며 개발자는 이를 활용함에 따라 응용분야는 계속해서 넓어질 것이다.