본문 바로가기
Programing

영상처리 입문

by xuswns 2026. 5. 6.

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