[ch01] Python 시작하기 - 영상의 구조와 표현
- 픽셀(pixel)이 바둑판 모양의 격자에 나열되어 있는 형태 ( 2차원 행렬)
- 픽셀: 영상의 기본 단위, picture element, 화소(畵素)

- 그레이스케일(grayscale) 영상
- 흑백 사진처럼 색상 정보가 없이 오직 밝기 정보만으로 구성된 영상
- 밝기 정보를 256단계로 표현
- 트루컬러(truecolor) 영상
- 컬러 사진처럼 색상 정보를 가지고 있어서 다양한 색상을 표현할 수 있는 영상
- Red, Green, Blue 색 성분을 256단계로 표현 → 256³ = 16,777,216 색상 표현 가능

- 그레이스케일 영상의 픽셀 값 표현
- 밝기 성분을 0 ~ 255 범위의 정수로 표현
- 프로그래밍 언어에서 표현 방법: 1Byte 사용
- C/C++ : unsigned char
- Python : numpy.uint8 (2^8 수만큼 표현 가능 : 0 ~ 255)
- 컬러 영상의 픽셀 값 표현
- R, G, B 색 성분의 크기를 각각 0 ~ 255 범위의 정수로 표현
- 0 : 해당 색 성분이 전혀 없는 상태
- 255 : 해당 색 성분이 가득 있는 상태
- 프로그래밍 언어에서 표현 방법 : 3Bytes 사용
- C/C++ : 구조체, 클래스
- Python : 튜플, numpy.ndarray

- 영상에서 주로 사용되는 좌표계

- 그레이스케일 영상에서 픽셀 값 분포의 예

- 트루컬러 영상에서의 픽셀 값 분포의 예

행렬의 오른쪽 부분에서는 빨간색의 값이 제일 크다. 반면 왼쪽 부분에서는 파란색의 값이 제일 크다.
- 영상 데이터의 크기 분석
- 그레이스케일 영상 : (가로 크기) * (세로 크기) Bytes
- 트루컬러 영상 : (가로 크기) * (세로 크기) * 3Bytes

※ 영상처리 하는데 시간이 꽤 걸린다. → 최적화 알고리즘이 중요하다!
- BMP
- 픽셀 데이터를 압축하지 않고 그대로 저장 → 파일 용량이 큰 편
- 파일 구조가 단순해서 별도의 라이브러리 도움 없이 파일 입출력 프로그래밍 가능
- JPG
- 주로 사진과 같은 컬러 영상을 저장
- 손실 압축 (lossy compression)
- 압축률이 좋아서 파일 용량이 크게 감소 → 디지털 카메라 사진 포맷으로 주로 사용
- GIF
- 256 색상 이하의 영상을 저장 → 일반 사진을 저장시 화질 열화가 심함
- 무손실 압축(lossless compression)
- 움직이는 GIF 지원
- PNG
- Portable Network Graphics
- 무손실 압축(컬러 영상도 무손실 압축)
- 알파 채널(투명도)를 지원