Computer Vision Theory : Computer Vision이란?
Computer Vision이란?
컴퓨터 비전(Computer Vision)
이란 컴퓨터나 기계가 시각적인 역할을 처리할 수 있도록 연구하는 분야입니다.
컴퓨터 비전과 관련된 기술은 이미 주변에서 쉽게 찾아볼 수 있습니다.
스마트폰 카메라 기능에서 사용되는 얼굴 인식이나 파노라마 이미지 생성등을 비롯해 객체 인식, 영상 복원 등 이미지나 영상에 관련된 기술 등이 있습니다.
컴퓨터 비전은 카메라나 스캐너 등 영상 입출력 매체를 통하여 입력 받은 이미지나 영상에서 물체 (Object)
, 전경 (Foreground)
, 배경 (Background)
등 물체와 주변 환경에 대한 데이터를 분석하여 유의미한 정보를 생성하는 기술입니다.
이러한 정보 생성은 특정한 목적을 가지고 수행되며, 인공지능의 한 분야로 볼 수 있습니다.
컴퓨터 비전은 영상 처리(Image Processing)
을 통하여 필요한 정보를 생성합니다.
영상 처리(Image Processing)는 컴퓨터 그래픽스(Computer Graphics) 및 컴퓨터 비전과 아주 가깝게 맞닿아 있습니다.
먼저 컴퓨터 그래픽스는 컴퓨터를 이용해 실세계의 영상을 조작하거나 새로운 영상을 만들어내는 기술을 가리킵니다.
물체의 모양을 단순화하는 것부터 3차원 컴퓨터 그래픽스, 컴퓨터 애니메이션, 렌더링 등이 컴퓨터 그래픽스에 해당합니다.
영상 처리의 경우 입력된 영상 안에서 정보를 추출하거나 인식하는 것을 의미한다면 컴퓨터 비전은 입력된 영상의 객체나 패턴의 인식과 이해를 더 중점적으로 연구하는 분야입니다.
즉, 컴퓨터의 시각적인 능력에 판단 능력을 부여하여 데이터 (이미지, 동영상)를 가공
및 해석
하는데 사용됩니다.
OpenCV
OpenCV
는 Open Source Computer Vision Library
약어로 오픈 소스 컴퓨터 비전 라이브러리입니다.
실시간 이미지 프로세싱에 중점을 둔 라이브러리로서, BSD 라이선스하에 배포되어 학술적 용도 외에도 상업적 용도로도 사용할 수 있습니다.
또한 기업에서도 코드를 사용하고 수정할 수 있습니다.
Intel에서 최초로 개발했으며, 크로스 플랫폼(Cross-Platform)으로 설계되었습니다.
C/C++, Python, Java 등의 프로그래밍 언어와 Window, macOS, Linux, Android, iOS, FreeBSD 등의 운영체제를 공식적으로 지원합니다.
또한, C#에서는 OpenCvSharp의 형태로 OpenCV를 사용할 수 있습니다.
OpenCV는 계산 효율성과 실시간 처리에 중점을 두고 설계됬습니다.
500가지가 넘는 알고리즘이 최적화돼 있으며, 이 알고리즘을 구성하거나 지원하는 함수는 알고리즘 수의 10배가 넘습니다.
OpenCV를 활용하여 물체인식
, 얼굴인식
, 제스처 인식
을 비롯하여 자율 주행 자동차, OCR 판독기, 불량검사기 등에 활용할 수 있습니다.
OpenCV는 영상 처리가 들어가는 프로그램이라면 가히 필수적으로 사용하게 되는 라이브러리입니다.
OpenCV는 컴퓨터 비전과 관련된 전문적인 지식, 이론, 수학적 지식을 깊게 알지 못해도 OpenCV에서 지원하는 함수를 통해 컴퓨터 비전에 손쉽게 활용할 수 있습니다.
OpenCV가 등장하면서 비전 전문가가 아니어도 컴퓨터 비전을 활용할 수 있게 되어 학생, 연구원, 프로그래머 등 많은 사람들이 사용하고 있습니다.
C.V.에서의 하드웨어 & 소프트웨어의 역할
컴퓨터는 하드웨어와 소프트웨어로 구성되어 있습니다. 성능이 좋은 소프트웨어를 구동하기 위해서는 당연히 성능이 좋은 하드웨어가 필요합니다.
슈퍼 컴퓨터를 사용하는 이유도 이와 같습니다. 슈퍼 컴퓨터는 계산 속도가 매우 빠르고 많은 자료를 오랜 시간 동안 꾸준히 처리할 수 있기 때문입니다.
그렇다면, 영상 처리에서 하드웨어와 소프트웨어의 역할은 각각 무엇일까요?
하드웨어의 역할은 컴퓨터의 성능과 카메라의 성능이며 소프트웨어의 역할은 영상 처리를 할 알고리즘입니다.
알고리즘을 매우 정확하게 구현했다 하여도 이를 처리할 컴퓨터와 카메라의 성능이 좋지 않다면 결과는 오랜 시간 계산하여 처리하게 되고 정확도도 떨어지게 됩니다.
컴퓨터의 성능은 영상 처리에서 알고리즘 처리 속도와 관련이 있으며 카메라의 성능은 정확도와 관련이 있습니다.
컴퓨터의 성능이 나쁘다면 그 만큼 계산 속도가 늘어나거나 실행조차 할 수 없습니다.
카메라의 성능이 나쁘다면 실제 물체는 붉은색이지만 카메라에서는 주황색으로 보일 수 있으며 녹색도 연두색으로 보일 수 있습니다.
영상 처리를 하기 위한 실질적인 데이터는 카메라나 불러온 이미지를 통해 얻습니다.
당연히 이미지의 크기가 크고 색상을 정확히 표현해냈다면 이미지 크기만큼의 데이터와 정확한 색상 데이터를 얻어낼 수 있습니다.
물론, 하드웨어의 성능이 좋다 해서 알고리즘의 결과도 좋아지지는 않습니다.
앞에서 설명했던 예시와 같이 정확한 알고리즘을 구현해야 하기 때문입니다.
제작할 프로그램 설계를 효율적으로 진행하고 완성하기 위한 작업의 첫 걸음은 프로그램이 어떤 목적을 가지고 어떤 역할을 할지 정확하게 파악하는 것입니다.
이것은 카메라의 성능의 선택과 알고리즘의 구성 선택에 필연적인 영향을 미칩니다.
단순한 작업을 반복하고 정확도가 큰 비중을 차지 하지 않는 프로그램이라면 적합한 카메라의 성능과 알고리즘을 사용하여 더 적은 비용과 빠른 시간으로 원하는 프로그램을 만들 수 있습니다.
만약 프로그램을 작성 도중 카메라의 성능을 변경시킨다면 일부 알고리즘을 수정하거나 모든 알고리즘을 수정하는 일이 발생할 수 있습니다.
그렇게 된다면 초기에 계획했던 비용과 시간이 늘어나게 됩니다. 프로그램의 목적을 정확히 파악하고 영상 처리에 필요한 적합한 하드웨어와 소프트웨어를 선택해야합니다.
- Writer by : 윤대희
댓글 남기기