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

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

빛의 삼원색과 RGB

캄캄한 무대에 빨강, 초록, 파랑 조명 세 개를 비춘다고 해 봅시다. 빨강과 초록 조명이 겹친 곳은 노랗게, 세 조명이 모두 겹친 곳은 하얗게 빛납니다. 조명을 더할수록 밝아집니다. 컴퓨터 화면의 점 하나하나가 이 세 조명이고, RGB 는 세 조명을 얼마나 세게 켰는지 적은 숫자입니다.

빨강, 초록, 파랑 빛의 원이 겹쳐 노랑, 자홍, 청록, 흰색이 되는 그림

검은 바탕에 세 빛의 원을 겹쳤습니다. 두 빛이 겹친 곳은 노랑(빨강+초록), 자홍(빨강+파랑), 청록(초록+파랑)이 되고, 가운데 세 빛이 모두 겹친 곳은 흰색입니다. 여기서 무대 조명 하나가 채널 하나이고, 조명의 세기가 0~255 의 숫자입니다. 물감은 반대입니다. 물감은 섞을수록 빛을 더 많이 빨아들여 어두워집니다.

색 숫자 표

색RGB어떻게 섞였나
검정000모든 조명을 껐다
빨강25500빨강 조명만 가득
초록02550초록 조명만 가득
파랑00255파랑 조명만 가득
노랑2552550빨강 + 초록
자홍2550255빨강 + 파랑
청록0255255초록 + 파랑
흰색255255255세 조명을 모두 가득
회색128128128세 조명을 같은 세기로 반쯤

세 숫자가 모두 같으면 색이 없는 회색이 됩니다. 숫자가 클수록 밝은 회색, 작을수록 어두운 회색입니다.

Python
import numpy as np

# 빛 두 개를 겹치는 것은 숫자를 더하는 것과 같다. 255 를 넘지 않게 np.clip 으로 자른다
red = np.array([255, 0, 0])      # R, G, B 순서
green = np.array([0, 255, 0])
yellow = np.clip(red + green, 0, 255)
print(yellow)                    # 결과: [255 255   0] → 노랑

# 세 숫자가 같으면 회색이다
gray = np.array([128, 128, 128])
print(len(set(gray.tolist())) == 1)   # 결과: True

주의할 점

  • 학교에서 배운 "물감의 삼원색"(자홍, 노랑, 청록)과 헷갈리지 않습니다. 화면과 카메라는 빛의 삼원색으로 색을 만듭니다.
  • 같은 RGB 숫자라도 모니터마다 조금 다르게 보일 수 있습니다. 색을 정확히 견줄 때는 눈보다 숫자를 믿습니다.
← 이전 절3장 · 비트 깊이와 데이터형다음 절 →3장 · RGB 와 BGR