728x90

1. 개요

색 공간(Color Space) 변환은 이미지가 표현되는 색의 구조를 다른 체계로 바꾸는 과정을 의미합니다. 일반적으로 우리가 사용하는 디지털 이미지는 RGB(Red, Green, Blue) 기반이지만, 상황에 따라 HSV, LAB, YCrCb 등 다양한 색 공간을 사용해야 합니다. OpenCV에서는 cv2.cvtColor() 함수를 통해 이미지의 색 공간을 손쉽게 전환할 수 있으며, 이는 색상 기반 객체 추적, 조명 변화에 강한 영상 분석, 피부 톤 분류 등 여러 영상처리 작업에서 필수적인 기능입니다.

2. OpenCV 색 공간 변환

OpenCV는 cv2.cvtColor(src, code) 형태로 색상 변환을 지원합니다. 여기서 src는 입력 이미지이며, code는 변환 타입을 의미합니다. 주요 변환 코드는 다음과 같습니다.

● RGB ↔ BGR
OpenCV는 기본적으로 BGR 채널 순서를 사용하므로 RGB 이미지와 상호 변환이 자주 필요합니다.
- cv2.COLOR_BGR2RGB
- cv2.COLOR_RGB2BGR

● BGR ↔ Gray
컬러 이미지를 명암 이미지로 변환합니다. 다양한 필터링·에지 검출 전처리로 활용됩니다.
- cv2.COLOR_BGR2GRAY

● BGR ↔ HSV
HSV는 조명 변화에 강하며 색 기반 객체 추적에 널리 사용됩니다.
- cv2.COLOR_BGR2HSV
- cv2.COLOR_HSV2BGR

● BGR ↔ LAB
LAB은 사람의 시각 특성을 반영한 색 공간으로 색 분석·이미지 향상에 활용됩니다.
- cv2.COLOR_BGR2LAB
- cv2.COLOR_LAB2BGR

● BGR ↔ YCrCb
밝기(Y)와 색차(Cr, Cb) 정보로 구성되며 피부 톤 분리에 유용합니다.
- cv2.COLOR_BGR2YCrCb
- cv2.COLOR_YCrCb2BGR

3. 예제 코드 (Python)

import cv2

# 이미지 불러오기
img = cv2.imread('sample.jpg')

# BGR → HSV 변환
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

# BGR → LAB 변환
lab = cv2.cvtColor(img, cv2.COLOR_BGR2LAB)

# BGR → Gray 변환
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 결과 확인
cv2.imshow("Original", img)
cv2.imshow("HSV", hsv)
cv2.imshow("LAB", lab)
cv2.imshow("GRAY", gray)
cv2.waitKey(0)
cv2.destroyAllWindows()
728x90

+ Recent posts