안녕하세요! 오늘은 OpenCV에서 이미지를 표현하는 다양한 컬러 스페이스(Color Space)에 대해 알아보겠습니다. 단순히 눈에 보이는 색상뿐만 아니라, 컴퓨터가 영상을 더 효율적으로 처리하기 위해 사용하는 다양한 방식들을 정리했습니다.
1. BGR과 BGRA (알파 채널)
일반적으로 디지털 이미지는 RGB(Red, Green, Blue) 순서를 사용하지만, OpenCV는 BGR 순서가 기본입니다.
- BGR: 파랑, 초록, 빨강 순으로 채널을 구성합니다. (0~255 값)
- BGRA: BGR에 Alpha(A, 투명도) 채널이 추가된 방식입니다.
- A값이 0이면 완전 투명(검은색으로 표시), 255면 완전 불투명(원래 색상)입니다.
- 알파 채널은 특정 영역만 골라내는 마스크 채널로 유용하게 쓰입니다.
2. BGR을 회색조(Grayscale)로 변환하기
연산 속도를 높이기 위해 컬러 이미지를 흑백으로 변환하는 경우가 많습니다.
- 직접 계산: (B + G + R) / 3 평균값을 사용합니다. (이때 합계가 255를 넘을 수 있으므로 uint16으로 형 변환 후 연산해야 합니다.)
- OpenCV 함수: cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)를 사용하여 간단히 변환합니다.
import cv2
img = cv2.imread('yeosu.jpg')
# BGR을 그레이스케일로 변환
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imshow('Original', img)
cv2.imshow('Gray', gray)
cv2.waitKey(0)
3. HSV 방식: 색상 추출에 최적
HSV는 인간이 색을 인식하는 방식과 유사하여 특정 색상을 추출할 때 매우 강력합니다.
- H (Hue, 색조): 색의 종류 (0~179)
- S (Saturation, 채도): 색의 선명도 (0~255)
- V (Value, 명도): 색의 밝기 (0~255)
RGB 방식은 '빨간색'을 찾으려면 R, G, B 세 값을 모두 따져야 하지만, HSV는 H(색조) 값 하나만으로도 어떤 색인지 쉽게 판단할 수 있습니다.
4. YUV 방식: 밝기 정보 강조
YUV(또는 YCbCr) 방식은 방송이나 비디오 압축에서 주로 사용됩니다.
- Y (Luma): 밝기 정보
- U / V (Chroma): 색상 차이 정보
인간의 눈은 색상 변화보다 밝기 변화에 훨씬 민감합니다. 그래서 Y(밝기)에는 데이터를 많이 할당하고, U/V(색상)는 압축하여 효율을 높입니다. 조명이 변하는 환경에서 밝기 정보만 따로 떼어 분석하고 싶을 때 유용합니다.
🛠️ 자주 사용하는 컬러 변환 플래그(Flag)
cv2.cvtColor() 함수에서 사용하는 대표적인 파라미터들입니다.
| 플래그 | 설명 |
| cv2.COLOR_BGR2GRAY | BGR → 흑백 변환 |
| cv2.COLOR_BGR2HSV | BGR → HSV 변환 (색상 검출용) |
| cv2.COLOR_BGR2YUV | BGR → YUV 변환 (밝기 분석용) |
| cv2.COLOR_BGR2RGB | BGR → RGB 변환 (Matplotlib 출력용) |
🚀 마치며
이미지 분석의 목적에 따라 적절한 컬러 스페이스를 선택하는 것이 중요합니다. 단순히 보는 용도라면 BGR이면 충분하지만, 특정 물체를 추적하거나 조명 환경에 대응해야 한다면 HSV나 YUV를 적극적으로 활용해 보시기 바랍니다.
궁금하신 점은 댓글로 남겨주세요! :)
반응형
'컴퓨터 과학 > 👀 컴퓨터 비전' 카테고리의 다른 글
| 🖼️ [OpenCV 기초] 이미지 연산과 합성 (블렌딩, 마스킹) (0) | 2026.01.07 |
|---|---|
| 🌓 [OpenCV 기초] 스레시홀딩(Thresholding)과 오츠의 알고리즘 (0) | 2026.01.07 |
| 📸 [OpenCV 기초] 이미지 내 관심영역(ROI) 표시 및 활용하기 (0) | 2026.01.07 |
| 🖱️ [OpenCV 기초] 창 관리와 인터랙티브한 이벤트 처리 (키보드 & 마우스) (0) | 2026.01.07 |
| 📸 [OpenCV 기초] 이미지 위에 자유롭게 도형 그리기 (1) | 2026.01.07 |