본문 바로가기
Back-end

OpenCV

by 탄이. 2019. 1. 14.

OpenCV

개요

  • OpenCV(Open Source Computer Vision)은 주로 실시간 컴퓨터 비전을 목적으로 한 프로그래밍 라이브러리이다.

  • 원래는 인텔이 개발하였으나 현재는 손을 뗀 상태다.

  • 실시간 이미지 프로세싱에 중점을 둔 라이브러리이다.

  • 인텔CPU에서 사용되는 경우 속도의 향상을 볼 수 있는 IPP(Intel Performance Primitives)를 지원한다.

  • 이 라이브러리는 윈도, 리눅스 등에서 사용 가능한 크로스 플랫폼이며 오픈소스 BSD 허가서 하에서 무료로 사용할 수 있다.

  • OpenCV는 TensorFlow , Torch / PyTorchCaffe딥러닝 프레임워크를 지원한다.

  • 영상 관련 라이브러리로서 사실상 표준의 지위를 가지고 있다.

  • 조금이라도 영상처리가 들어간다면 필수적으로 사용하게 되는 라이브러리.

  • 기능이 방대하기 때문에 OpenCV에 있는 것만 다 쓸 줄 알아도 영상처리/머신러닝의 고수 반열에 속하게 된다.

응용 기술의 예

  • 인간과 컴퓨터 상호 작용 (HCI)

    • 인간-컴퓨터 상호작용의 기본 목적은 컴퓨터를 좀 더 인간에게 쉽고 쓸모 있게 함으로써 인간과 컴퓨터 간의 상호작용을 개선하는 것이다. 좀 더 광범위하게는 아래와 같은 관심분야가 있다.

      • 인터페이스를 설계하는 방법론이나 절차의 개발 (예를 들어, 주어진 사용자 군이나 주어진 조건에 부합하여 최적화된 인터페이스를 설계하는 것)

      • 인터페이스를 구현하는 방법론 (예를 들어, 소프트웨어 툴킷이나 라이브러리, 보다 나은 알고리즘의 개발)

      • 인터페이스를 비교 평가하는 방법

      • 새로운 인터페이스나 상호 작용 기술의 개발

      • 상호작용을 설명하고 예측하는 모델이나 이론의 개발

  • 물체 인식

  • 안면 인식

  • 모바일 로보틱스

  • 제스처 인식

프로그래밍 언어

  • 3.3 버전인 현재 C++11을 공식으로 채택하고 있으며 Python도 공식적으로 지원한다.

  • 그 밖에 C#은 다양한 랩핑 라이브러리가 있지만 OpenCVSharp이 많이 쓰인다.

  • iOS와 Android도 지원하므로 사실상 JavaObjective-C도 지원하는 셈이다.

  • MATLAB 등의 프로그램들과 연계도 가능하다.

주요 알고리즘

  • 이진화(binarization)

  • 노이즈 제거

  • 외곽선 검출(edge detection)

  • 패턴인식

    • 그림, 음원, 등의 각종 선형 및 비선형 데이터 안에서 특정한 패턴을 찾아내는 것을 의미한다.

    • 즉, 쉽게 풀어서 말하자면 컴퓨터사람과 유사하게 데이터를 판단하여 어떤 데이터인지 구분해주는 기술이라고 생각하면 된다.

    • 흔히 사용하는 음성인식 검색이나 QR코드 카메라 인식 등도 패턴인식 연구 결과의 산물이다.

  • 기계학습(machine learning)

  • ROI(Region Of Interest) 설정

  • 이미지 변환(image warping)

  • 하드웨어 가속


댓글