제주 탈출 일지

인공지능 실습(5주차) - 이미지와 openCV 본문

인공지능

인공지능 실습(5주차) - 이미지와 openCV

귀건 2020. 10. 1. 19:50
728x90
반응형


이 내용은 머신러닝에서 입력데이터로 이미지를 사용할 때 python에서 opencv를 사용하게 되기 때문에 배우는 것.

이미지의 종류

: 바이너리, 그레이 스케일 이미지, 컬러 이미지. 크게 3가지

바이너리 이미지 : 0 또는 1로만 픽셀을 표현
그레이 스케일 이미지 : 하나의 픽셀값을 0~255로 표현
컬러 이미지 : 한 픽셀당 0~255사이의 값을 3개 조합하여 표현
(컬러 스페이스 종류 : RGB, HSV 등)

여기서 HSV는 색은 1바이트만 표현하고 나머지 바이트는 명도와 채도를 표현함. 
(이미지에서 한가지 색상만 추출하기 위해 컬러모델을 HSV로 변환하면 프로그램이 간단해지게 된다.)

이미지 데이터

는 3차원 배열로 처리한다.  형태는 [세로화소수][가로화소수][3(컬러채널)]  이다.

1920 * 1280 사진의 용량은 1920 * 1280 * 3채널 * 8bit = 약 7.4MB
(너무 크기때문에 jpg와 같은 용량 압축을 통해 가지고 있게된다.)
-> 머신러닝에서는 수없이 많은 이미지를 학습을 위해 사용하기 때문에 이미지 사이즈를 작게 다루어야 한다.

이미지를 img[3, 세로, 가로]와 같은 3차원 배열로 표현할 경우, 
-> img[0,0,0] = 255(red) , img[1,0,0] = 0 (green) , img[2,0,0] = 255 (0,0 좌표의 3채널 값)
-> img[:, 0, 0] = [255,0,255]

 

이미지를 img[세로, 가로, 3]와 같은 3차원 배열로 표현할 경우, (보통 이 방법으로 처리함)
img[0,0] = [255,0,255]

openCV에서는 일반적으로 RGB 가  아니라 BGR로 처리를 한다.

matplotlib가 openCV와 컬러채널을 인식하는 것이 BGR이 아닌 RGB로 인식하기 때문에 그에 대한 처리를 해주어야 한다.

 

아래는 실습 ipynb이다.

 

opencv.ipynb
0.96MB

728x90
반응형
Comments