OpenCV 비전 실무3장 · 디지털 영상과 색공간 변환12 / 21← 이전목차다음 →MetaContents

3장. 디지털 영상과 색공간 변환

색공간 고르는 기준

등산할 때는 등고선이 있는 등산 지도를, 운전할 때는 내비게이션을, 지하철을 탈 때는 노선도를 봅니다. 같은 땅인데 하려는 일에 따라 편한 지도가 다릅니다. 색공간도 "무엇을 하려는가"로 고릅니다.

밝기만 필요하면 Gray, 색으로 고르면 HSV, 보여 주려면 RGB, 색 차이를 재려면 Lab 을 고른다는 비교 그림

네 상자는 하려는 일과 그에 맞는 색공간입니다. 어느 상자로 가든 출발점은 OpenCV 가 읽은 BGR 그림이고, cv2.cvtColor 한 번이면 바꿀 수 있습니다. 여기서 지도의 종류가 색공간이고, 등산·운전 같은 목적이 영상처리의 할 일입니다.

할 일에 맞는 색공간

하려는 일고를 색공간까닭이 과정에서
테두리 찾기, 글자 읽기, 밝기 분석Gray색이 필요 없고 숫자가 1/3 로 줄어 빠르다8장, 11장
특정 색 물건 고르기HSV색이 H 하나로 정해지고 그늘에 덜 흔들린다이 장, 13장
화면에 보여 주기, 다른 라이브러리에 넘기기RGBMatplotlib 과 대부분의 라이브러리가 RGB 를 쓴다모든 장
두 색이 얼마나 다른지 재기Lab숫자 차이가 사람 눈의 차이에 가깝다색 품질 검사
밝기만 다듬고 색은 그대로 두기YCrCb, Lab밝기 채널만 고치고 되돌린다5장
파일로 저장하기BGRcv2.imwrite 가 BGR 을 기대한다모든 장
Python
# 하려는 일 → 색공간을 사전으로 적어 두고 찾아 쓴다
choose = {
    "테두리 찾기": "GRAY",
    "빨간 사과 고르기": "HSV",
    "화면에 띄우기": "RGB",
    "색 차이 재기": "Lab",
}
for job, space in choose.items():
    print(f"{job:10} → cv2.COLOR_BGR2{space}")

주의할 점

  • 색공간을 바꾼 그림을 Matplotlib 에 그대로 넣으면 이상한 색으로 보입니다. HSV 그림의 세 숫자를 R, G, B 로 읽기 때문입니다. 볼 때는 채널 하나씩 흑백으로 보거나 BGR 로 되돌린 뒤 RGB 로 바꿉니다.
  • 바꿀 때마다 반올림이 생기므로 BGR → HSV → BGR 로 돌아오면 몇몇 칸이 1~2 다를 수 있습니다. 원본은 따로 두고 필요할 때 다시 바꿉니다.
← 이전 절3장 · 그 밖의 색공간다음 절 →3장 · 실습 지도