1. 조명 조건의 중요성
- 카메라는 대상 물체 자체가 아니라, 물체에 반사된 빛(light) 을 포착한다.
- 불균일하거나 부족한 조명 아래서는 동일한 물체도 완전히 다른 모습으로 찍히며, 이로 인해 알고리즘(예: 물체 인식, 엣지 검출)의 성능이 크게 저하될 수 있다.
- 따라서 이상적인 조명 조건( 높은 대비(High Contrast), 일관성(Generalizable), 안정성(Stable) )을 먼저 확보해야함. 열악한 조명을 보완하기 위해 코드를 작성하는 것보다 조명 조건을 제어하거나 적어도 인지하는 것이 훨씬 더 유익하고 쉽다.
2. 주요 컬러 스페이스
(1) RGB

- 구성: Red, Green, Blue 채널(각 0–255)
- 특징: 사람 눈에 익숙한 가산적 색 공간이지만, 색 조작이나 색 범위 지정에는 직관적이지 않음
- 변환: OpenCV는 내부적으로 BGR 순서를 사용하므로, 명시적 변환 없이 바로 사용 가능
(2) HSV

- 각 채널의 의미:
- Hue (H, 색상) [0-179]
- 색상의 종류를 나타내는 값으로, 색상환(0°–360°) 상의 각도로 표현됨
- 예: 0°=빨강, 60°=노랑, 120°=초록, 180°=청록, 240°=파랑, 300°=자홍
- OpenCV에서는 이 각도를 0–179 범위의 정수로 축소하여 저장(즉, 실제 각도 = H×2).
- Saturation (S, 채도) [0-255]
- “색의 순도”를 나타내는 값으로, 0에 가까울수록 색상이 없고(무채색), 255에 가까울수록 순색에 가까워집니다.
- 값이 0이면, value값에 따라 흰색, 회색, 검정색이 됨.
- Value (V, 명도/밝기) [0-255]
- 픽셀의 밝기를 나타내며, 0=검정, 255=가장 밝음(순수 색으로 볼 때 흰색에 가까움).
- 원뿔 좌표계에서 꼭대기(흰색)와 바닥(검정)을 구분하는 축입니다.
- Hue (H, 색상) [0-179]
- 장점:
- 색상(H)과 명암(V)을 분리해 다루므로, “특정 색상”만 쉽게 추출·추적 가능
- RGB → HSV 변환 :
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
(3) L*a*b*

- 구성:
- L채널 (Lightness, 밝기) : 흰색 ↔ 검은색
- a채널 (녹색↔빨강 축)
- b채널 (파랑↔노랑 축)
- 특징:
- 사람의 지각 방식을 모사하여, 색 간 거리가 실제 눈으로 보는 차이를 의미 있게 반영
- 색상 비교, 배경 보정, 컬러 매니지먼트에 유리
- RGB → LAB 변환 :
lab = cv2.cvtColor(image, cv2.COLOR_BGR2LAB)
4.4 Grayscale (회색조)

- 구성: 단일 채널, 픽셀 값 [0–255]
- 특징:
- 색 정보를 버리고 밝기만 남김 → 메모리 절약, 연산 효율 향상
- 얼굴 인식, 물체 검출 등 색이 필요 없는 작업에 사용
- RGB → LAB 변환 :
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
3. 요약 및 활용 팁
- 조명을 먼저 확보하고, 그다음에 적절한 색 공간을 선택하기.
- HSV는 색상 추적에, L*a*b*는 색 비교·균일성 유지에, Grayscale은 색 불필요 작업에 최적.
- cv2.cvtColor 하나로 다양한 변환이 가능하니, 실험을 통해 최적 환경을 찾아 보기.
출처
OpenCV Color Spaces ( cv2.cvtColor ) - PyImageSearch
In this tutorial, you will learn about color spaces in OpenCV, the cv2.cvtColor function, and the importance of lighting conditions/environments when building a computer vision and image processing pipeline. A dataset with images in various color spaces is
pyimagesearch.com
'PyImageSearch' 카테고리의 다른 글
| OpenCV - Image Gradients(엣지검출) (0) | 2025.06.13 |
|---|---|
| OpenCV - Thresholding(이진화) (0) | 2025.06.12 |
| OpenCV - 블러처리 (2) | 2025.06.12 |
| OpenCV - Morphological Operations(형태학적 연산) (0) | 2025.06.11 |
| OpenCV : 기본함수들 (0) | 2025.06.09 |