OpenCV

KANOTYPE WIKI
이동: 둘러보기, 검색
OpenCV
OpenCV Logo with text.png
개발자(팀) Intel Corporation
Willow Garage
Itseez
초기 릴리즈 1999년
최신버전 2.4.8 (2013/12/31)
플랫폼 크로스 플랫폼
종류 라이브러리
라이센스 BSD license
홈페이지 http://opencv.org/

OpenCV (Open Source Computer Vision Library)는 인텔이 개발한 실시간 컴퓨터 비전 라이브러리이다. 현재는 Willow Garage과 Itseez가 서포트하고 있다. 라이브러리는 BSD라이선스하에 무료로 이용가능하다며 다양한 플랫폼을 지원한다. 주로 실시간 화상처리에 중점을 두고 있다. 시스템이 인텔 IPP(Integrated Performance Primitives)를 지원할 경우, 하드웨어 가속을 이용하여 좀더 향상된 속도로 이용할 수 있다.

역사

공식 개발 시작은 1999년. OpenCV 프로젝트는 인텔의 CPU를 이용한 실시간 레이 트레이싱과 3D 디스플레이 처리등을 포함하는 여러 프로젝트들 중의 하나였다. 주요 개발자들은 인텔 러시아 소속의 최적화 전문가들과 퍼포먼스 라이브러리 팀들이다. 초기 OpenCV의 목표는 컴퓨터 비전 분야의 최적화된 기본 인프라를 무료로 제공하는 것이었지, 결코 처음부터 새롭게 라이브러리를 구축하는것이 아니었다. 이러한 기본 코드들을 제공함으로서 연구자나 개발자들은 좀더 알아보기 쉽고, 견고한 어플리케이션을 개발할 수 있게 되었다. 또한 OpenCV를 이용하여 개발된 소프트웨어에게 어떠한 대가도 요구하지 않는다.

OpenCV의 첫 알파 버전은 2000년 IEEE Conference on Computer Vision and Pattern Recognition에서 공개되었으며, 2001년부터 2005년까지 5개의 베타 버전이 공개되었다. 첫 정식 릴리즈는 2006년. 2008년 중반, 로봇 회사인 Willow Garage의 지원을 받기 시작하여 현재까지도 Willow Garage가 OpenCV를 지원하고있다. 버전 1.1의 조기 릴리즈 버전은 2008년 8월에 공개되었다.

두번째 정식 릴리즈는 2009년 10월. OpenCV 2는 C++인터페이스로의 변화, 좀더 쉬운 사용, 더 안정적인 타입 체크 패턴, 새 기능들, 기존 기능의 멀티코어를 이용한 고속화 등의 변화가 있었다. 공식적인 업데이트는 현재 6개월에 한번씩이며 현재는 독립된 러시아 팀이 개발을 하고있다.

2012년 8월, 비영리 재단 OpenCV.org이 유저 사이트와 개발자사이트를 지원하기 시작했다.

어플리케이션 분야

OpenCV는 다음과 같은 분야의 기능들을 포함하고 있다.

  • 2D, 3D 특징점 툴킷
  • 자체 운동(Egomotion) 추정
  • 얼굴 인식 시스템
  • 제스쳐 인식
  • 인간-컴퓨터 상호작용 (Human–computer interaction, HCI)
  • 모바일 로보틱스
  • 모션 이해
  • 물체 식별
  • 세그멘테이션과 인식
  • 스테레오 비전 (2개의 카메라를 이용한 거리 추정)
  • Structure from Motion (SFM)
  • 모션 트래킹
  • 증강현실

또한 이러한 기능들을 지원하기위해 다음과 같은 통계적 기계학습 라이브러리도 포함하고있다.

  • Boosting (meta-algorithm)
  • Decision tree learning
  • Gradient boosting trees
  • Expectation-maximization algorithm
  • k-nearest neighbor algorithm
  • Naive Bayes classifier
  • Artificial neural networks
  • Random forest
  • Support vector machine (SVM)

Programming language[edit]

프로그래밍 언어

OpenCV는 C++로 작성되었으며 주요 인터페이스로 C++를 사용한다. 하지만 아직 초기의 C 인터페이스를 사용하는 부분도 약간이지만 남아있다. 현재 Pyhton과 Java, MATLAB/OCTAVE의 완전한 인터페이스(래퍼)가 있다. C#[1]이나 Ruby와같은 다른 언어들로의 래퍼도 현재 다양한 유저들에 의해 개발되고 있다.

모든 새 알고리즘들과 기능들은 C++인터페이스를 이용하여 개발된다. 2010년 9월부터 CUDA 기반의 GPU 인터페이스도 개발되기 시작했다. 또한 OpenCL 기반의 GPU 인터페이스 역시 2012년 9월부터 개발중이다.[2]

운영체제 지원

OpenCV는 Windows, Android[3], Maemo, FreeBSD, OpenBSD, iOS, BlackBerry, Linux, OS X등에서 작동한다. 주요 OS를 위한 빌드는 공식 홈페이지에서 내려받을 수 있다. 직접 빌드할 시에는 CMake를 사용한다.

Windows 필요 라이브러리

카메라와 관련된 일부 기능들을 Windows에서 사용하기 이해서는 DirectShow SDK에 있는 기본 클래스들이 필요하다. 이것은 Microsoft Platform SDK(혹은 DirectX SDK 8.0 에서 9.0c)안에 있는 Samples\Multimedia\DirectShow\BaseClasses에서 찾을 수 있다.

주석

  1. opencvsharp등.
  2. OpenCL-accelerated Computer Vision API Reference: http://docs.opencv.org/modules/ocl/doc/ocl.html
  3. Android port: http://opencv.willowgarage.com/wiki/AndroidExperimental