1. 영상의 표현법
2. 영상 파일 형식 특징
3. OpenCV
4. 색상 채널 분리와 병합
5. 색 공간 변환
1. 영상의 표현법
그레이스케일(Grayscale) 영상
흑백 사진처럼 색상 정보가 없이, 오직 밝기 정보만으로 구성된 영상이다. 밝기 정보를 256단계로 표현한다.
그레이스케일 영상의 픽셀 값 표현
밝기 성분을 0~255 범위의 정수로 표현한다.
- 0 → 완전한 검정
- 255 → 완전한 흰색
- 중간값 → 회색 계열
1Byte로 표현한다. (Python → numpy.uint8)
트루컬러(Truecolor) 영상
컬러 사진처럼 색상 정보를 가지고 있어서 다양한 색상을 표현할 수 있다. Red, Green, Blue 색 성분을 256단계로 표현한다. 256³가지의 색상을 표현 가능하다. (약 1670만 가지)
컬러 영상의 픽셀 값 표현
R, G, B 색 성분의 크기를 각각 0~255 범위의 정수로 표현한다.
- 0 → 해당 색 성분이 전혀 없음
- 255 → 해당 색 성분이 가득 함
- 예: (255, 0, 0) → 순수한 빨간색, (255, 255, 0) → 노란색
3Byte로 표현한다. (튜플, numpy.ndarray)
영상 데이터의 크기
- 그레이스케일 영상 : 가로 × 세로 Bytes
- 트루컬러 영상 : 가로 × 세로 × 3 Bytes
예를 들어 1920×1080 해상도의 컬러 사진 한 장은 압축 전 기준으로 약 6MB에 달한다.
2. 영상 파일 형식 특징
BMP
- 픽셀 데이터를 압축하지 않고 그대로 저장 → 파일 용량이 큰 편
- 파일 구조가 단순해서 별도의 라이브러리 도움 없이 파일 입출력 프로그래밍 가능
JPG
- 주로 사진과 같은 컬러 영상을 저장
- 손실 압축
- 압축률이 좋아서 파일 용량이 크게 감소한다.
- 스마트폰으로 찍은 사진 대부분이 이 형식이다.
GIF
- 256 색상 이하의 영상을 저장
- 무손실 압축
- 움직이는 GIF 지원
- 색상이 제한적이라 단순한 그래픽에 적합하다.
PNG
- Portable Network Graphics
- 무손실 압축 (컬러 영상도 무손실 압축)
- 알파 채널(투명도) 지원 → 배경이 투명한 이미지를 만들 때 사용한다.
3. OpenCV
- 컴퓨터 비전을 목적으로 하는 오픈 소스 라이브러리
- 인텔 CPU에서 사용하는 경우 속도 향상을 지원한다.
- GPU operation에 대한 지원을 명시적으로 Python과 연계해서 하지는 않는다.
OpenCV와 컬러 영상
- 컬러 영상은 3차원 numpy.ndarray로 표현. img.shape = (h, w, 3)
- OpenCV에서는 RGB 순서가 아니라 BGR 순서를 기본으로 사용한다.
- 이걸 모르면 색이 이상하게 출력되는 버그가 생기니 반드시 기억해두자.
4. 색상 채널 분리와 병합
채널 분리 함수:
cv2.split(m, mv=None) -> dst
- m : 다채널 영상으로 구성된 컬러 영상
- mv : 출력 영상
- dst : 출력 영상의 리스트

채널 병합 함수:
cv2.merge(mv, dst=None) -> dst
- mv : 입력 영상 리스트 또는 튜플
- dst : 출력 영상
5. 색 공간 변환
영상 처리에서는 특정한 목적을 위해 RGB 색 공간을 HSV, YCrCb, Grayscale 등의 다른 색 공간으로 변환하여 처리한다.
RGB → Grayscale
- 장점 : 데이터 저장 용량 감소, 데이터 처리 속도 향상
- 단점 : 색상 정보 손실
HSV 색 공간
- Hue : 색상, 색의 종류
- Saturation : 채도, 색의 탁하고 선명한 정도
- Value : 명도, 빛의 밝기
빨간색이라도 선명한 빨간색인지, 탁한 빨간색인지를 구분할 수 있어서 색상 기반의 객체 검출에 자주 활용된다.


YCrCb 색 공간
- PAL, NTSC, SECAM 등의 컬러 비디오 표준에 사용되는 색 공간
- 영상의 밝기 정보와 색상 정보를 따로 분리하여 부호화
- Y : 밝기 정보 (luma)
- Cr, Cb : 색차 (chroma)
사람 눈은 색상 변화보다 밝기 변화에 더 민감하기 때문에, 밝기와 색상을 분리해서 처리하면 더 효율적인 압축이 가능하다.

'Programing' 카테고리의 다른 글
| Pandas 기초 퀴즈 (0) | 2026.05.07 |
|---|---|
| OpenCV와 Python을 활용한 명함 이미지 보정 (0) | 2026.05.07 |
| SQLAlchemy Column vs Mapped (0) | 2026.04.30 |
| Python - Class (0) | 2026.04.17 |
| Python - List (0) | 2026.04.14 |