[OpenCV] 01. 컴퓨터 비전과 영상의 이해
참조 : OpenCV 4로 배우는 컴퓨터 비전과 머신 러닝_길벗_황선규
1. 컴퓨터 비전 개요
컴퓨터 비전에서 주로 활용하는 영상 정보
밝기, 색상, 모양, 텍스처(texture) 등
-> 머신 러닝 알고리즘을 함께 사용 -> 사물 인지
- 컴퓨터 비전과 영사 처리의 경계를 나누는 건 애매
-> 혼용해서 사용
FOV : 카메라가 볼 수 있는 영역 (가로, 세로 길이가 어느 정도인지)
이미지 라이브러리
머신 비전(machine vision)
공장에서는 제품의 검사, 측정, 불량 판정 등의 목적으로 컴퓨터 비전이 널리 사용
공장 자동화에 주로 사용되는 컴퓨터 비전 시스템
다양한 산업 분야에서 사용
2. 영상의 구조와 표현 방법
영상의 획득과 표현 방법
피사체 : 카메라로 사진 찍을 때, 그 대상의 되는 풍경/사물
렌즈 : 카메라 바깥에서 들어온 빛을 굴절시켜 이미지 센서로 모아주는 역할
픽셀 : 영상을 구성하는 최소 단위 (밝기, 색상)
좌표 시작은 0부터
$$ a_{j, i} $$
j 번재 행, i 번째 열에 위치한 행렬 원소
(i, j) 좌표에 위치한 픽셀
행렬은 수학적 표현 -> 0부터가 아닌 1부터 시작
3. 그레이스케일 영상과 컬러 영상
주로 그레이스케일 영상(grayscale image)과 트루컬러 영상(truecolor image) 사용
그레이스케일 영상
오직 밝기 정보만으로 구성된 영상 like 흑백사진. (회색조 영상)
현장에서는 주로 그레이 스케일 사용
트루컬러 영상 (컬러 영상)
다양한 색상을 표현할 수 있는 영상 like 컬러 사진
보통 R(red), G(green), B(blue) 세 개의 색상 성분 조합
그레이스케일 레벨
- 그레이스케일 영상에서 픽셀이 가질 수 있는 값의 범위
- 8비트 = 0~255 사이의 정수 범위
- 큰 값일수록 밝음, 작은 값일수록 어두움
- C/C++에선 보통 unsigned char 자료형 사용
- 즉, 1바이트(byte) & 부호 없는 8비트(bit) 정수
- 여러 운영 체제와 라이브러리에서는 unsigned char 자료형 이름을 재정의하여 사용
typedef unsigned char BYTE;
typedef unsigned char uint8_t;
typedef unsigned char uchar;
- BYTE는 주로 윈도우 운영 체제에서 사용하는 이름 재정의 방식
- uint8_t는 리눅스에서 사용
- OpenCV 라이브러리에서는 uchar 사용
- 0 ~ 255 사이의 정수 값 표현엔 주로 uchar 자료형
- 트루컬러 영상에서 한 픽셀은 unsigned char 자료형 3개