색상공간은 이미지를 저장하는 다양한 형태를 의미하는 용어로, 흔히 접하는 그레이스케일, RGB, CMYK 등이 이에 해당한다. 그리고 색상공간의 각 값을 색상채널이라고 부른다.
그레이스케일
이미지의 각 픽셀 값은 0 (검은색) ~255 (흰색) 사이의 값을 가진다. 엄밀히 말해서 흑백이미지와는 다르다. 흑백 이미지에서 각 픽셀은 0 혹은 255 만을 가지며 그 사이에는 값이 없다.
RGB
빨간, 녹색, 파란색 채널의 3가지 값의 조합으로 나타낸다.
- 검은색 = (0, 0, 0)
- 빨간색 = (255, 0, 0)
- 녹색 = (0, 255, 0)
- 파란색 = (0, 0, 255)
- 흰색 = (255, 255, 255)
HSV
색조hue, 채도saturation, 값value
RGB 값을 원통에 투영하는 원통형 좌표계.
https://en.wikipedia.org/wiki/HSL_and_HSV#/media/File:HSV_color_solid_cylinder_saturation_gray.png
이미지는 2D 행렬은 저장된다. 이미지는 각 채널 수만큼 여러 개의 2D 행렬을 갖는다. 다음은 RGB 이미지와 그레이스케일 이미지의 픽셀 값을 출력하는 코드다.
img.getpixel((300,300))
convert() 를 이용하여 색상공간(mode)를 변경할 수 있다. 그레이스케일을 나타내는 “L” (luminance) 과 트루 컬러 이미지를 나타내는 "RGB" 사이의 변환이 가능하다.
img.convert("L").getpixel((300,300))
그리고 다음과 같이 이미지 객체의 속성을 확인할 수 있다. 먼저 format 속성은 이미지 소스를 확인해주는 것으로 만약 파일로부터 이미지를 불러올 수 없으면 None, 그리고 파일을 열 수 없으면 IOError exception 을 반환한다. 그리고 size 속성은 2-튜플로 너비와 높이를 가진다. 그리고 mode 는 그레이스케일 이미지의 경우 “L” (luminance), 트루 컬러 이미지의 경우 “RGB”, 그리고 pre-press 이미지의 경우 “CMYK” 값을 반환한다.
print(img.format, img.size, img.mode)
이미지 깊이
픽셀의 값을 나타내는 데 사용되는 비트수로, 예를 들어 8비트의 경우 0 에서 255 까지의 값을 갖는다. 2의 8승 총 256개의 값을 가진다.
아래는 컬러 이미지를 그레이스케일로 변환하는 방법이다.
grayscale_img = img.convert("L")
imshow(np.asarray(grayscale_img))
'프로그래밍 Programming' 카테고리의 다른 글
Computer Vision (4) scikit-image 이미지 처리 기본 (0) | 2018.12.09 |
---|---|
Computer Vision (3) 이미지 변환 및 향상 (0) | 2018.12.08 |
Computer Vision (1) 이미지 읽기, 자르기, 저장 (0) | 2018.12.08 |
데비안 9 파이어폭스 설치하기 How to install latest Firefox Browser on Debian 9 Stretch Linux (0) | 2018.11.25 |
Debian 9 서버 VNC 설치 및 환경설정 How to Install and Configure VNC on Debian 9 (0) | 2018.11.24 |