SW/영상처리

OpenCV) OpenCV및 디지털 영상처리 기초

공대싱구 2023. 1. 22. 17:36

23.01.22 집필 (미완)

 

-----------------

 

 

OpenCV

open source computer vision library의 약자로, 영상처리에 사용하는 오픈소스 라이브러리다.

BSD(Berkely Software Distribution)라이센스를 따르므로 상업적으로 이용해도 된다는 장점이 있다.

개발 가능 언어로는 C/C++, Python, java 등이 있는데, 이 블로그에서는 mainly하게는 Python을 다룰 것이고, 필요한 경우에는 C/C++로 설명이 되어있을 것이다.

 

 

Computer Vision

컴퓨터에게 vision처리 능력을 부여하는 것이다. 컴퓨터는 이 시각정보를 바탕으로 사물을 판단할 수 있다.

영상처리 분야는 굉장히 오래전부터 연구, 개발되어 온 분야다. 그 만큼 알고리즘이나 딥러닝 분야로 이미 연구되어있는 부분이 많고, 알고리즘 또한 라이브러리로 가져다가 쓰면 될 정도로 많은 알고리즘이 개발되어있다.

 

 

Digital Image Proccessing

아래와 같이 디지털 이미지는 2차원 행렬 형태의 픽셀로 표현되어 각 x, y좌표에 해당하는 위치의 이미지 데이터를 수치화시켜 나타낸다. 이 때, 디지털영상 이기 위해서는, x, y, f의 값이 모두 유한하고 이산적이어야 한다.

 

 

openCV를 활용해 영상처리를 하는 경우에는, 각 픽셀의 데이터 값을 행렬로 나열한다. (numpy를 같이 자주 사용하는이유)

이 때,  Image가 Gray Scale이면, 아래와 같이 f(x,y)가 하나의 값과 대조되지만,  COLOR의 경우에는, 해당 픽셀의 값이 빛의 3원색에 따라 Red, Green, Blue의 값이 필요하다. 

따라서 openCV에서 COLOR image를 읽는 경우, 한 픽셀에 최소 세 가지의 값이 들어가야 한다. 따라서 아래와 같이 축이 하나 더 생긴다. OpenCV에서는 이를 3차 배열로 인식하게 되고, C축에 해당하는 값의 순서는 특이하게도, Red, Green, Blue의 순서가 아닌, Blue, Green, Red의 형태 즉, BGR로 사용한다.

 

openCV에 COLOR Image data를 인식하게 되면, 아래와 같은 배열이 생성된다.