본문 바로가기

PyImageSearch

OpenCV - Color Spaces

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=가장 밝음(순수 색으로 볼 때 흰색에 가까움).
      • 원뿔 좌표계에서 꼭대기(흰색)와 바닥(검정)을 구분하는 축입니다.
  • 장점:
    • 색상(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. 요약 및 활용 팁

  1. 조명을 먼저 확보하고, 그다음에 적절한 색 공간을 선택하기.
  2. HSV는 색상 추적에, L*a*b*는 색 비교·균일성 유지에, Grayscale은 색 불필요 작업에 최적.
  3. cv2.cvtColor 하나로 다양한 변환이 가능하니, 실험을 통해 최적 환경을 찾아 보기.

 


출처

https://pyimagesearch.com/2021/04/28/opencv-color-spaces-cv2-cvtcolor/?_ga=2.44841700.1773329974.1749613563-254784589.1749433426

 

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