brunch

왜 명도는 색상 모델마다 다르게 적용될까

색상 모델이 명도를 구하는 공식

by 김한솔

빛은 파장(Spectrum)으로 움직이며, 이 파장에 따라 색이 결정되고 우리 눈은 각 파장을 다른 색으로 인식한다. 인간의 눈이 관측할 수 있는 400~750nm 파장을 가시광선이라고 하며, 사람의 눈은 원추세포를 통해 이 가시광선을 색으로 인지한다. 청색원추세포는 420-440nm의 파장을 파란색으로, 녹색원추세포는 534-545mn의 파장을 초록색으로, 적색원추세포는 564-580nm의 파장을 붉은색으로 인식한다. 우리가 무지개에서 볼 수 있듯이 빨주노초파남보의 색상은 가장 긴 파장에서 짧은 파장 순으로 배열된다. 간상세포는 색은 인식하지 못하지만 어두운 빛을 인식할 수 있다. 이것이 바로 색체 과학의 기본 원리다.





색상 모델(Color Model)


이 색체 과학에서 색상 모델은 가시 스펙트럼의 현상을 개념화하고 인간의 색각(색에 대한 주관적 감각)을 체계화하는 방법론이다. 또한 색상을 숫자 튜플(셀 수 있는 수량에 대한 순서 있는 열거)로 표현할 수 있는 시스템이기도 하다.


색상 모델은 색을 여러 방식으로 표현한다. 인간의 색각을 원통형 좌표로 모델화하는 방식이 있고, 가산 및 감산 혼합을 이용해 모델화하는 방식도 있다. 이러한 모델들은 일반적으로 세 가지나 네 가지 요소로 구성된다. 예를 들어 RGB에서는 R(Red), G(Green), B(Blue)를, HSL에서는 H(Hue), S(Saturation), L(Lightness)를 구성 요소로 하여 색상을 표현한다. 그리고 각 속성값은 정해진 범위의 숫자로 표시된다. (RGB는 0~255, HSL은 H는 0~360도, S와 L은 0~100%) 쉬운 이해를 위해 몇 가지 대표적인 색상 모델을 알아보자.



CIE XYZ(CIE1931) Color System

이 모델은 국제조명위원회(CIE, Commission Internationale de l'Eclairage)에 의해 1931년에 처음 도입되었으며, 실제로 보이는 색상을 수치적으로 표현할 수 있도록 수학적으로 설계된 첫 번째 수학적 색 공간이다. 이 모델은 인간의 시각에 대한 연구를 바탕으로 가상의 주요 색상 성분 X, Y, Z를 사용하여 모든 색상을 정의한다. 여기서 Y는 휘도(밝기)를, X와 Z는 색상의 매치를 완성하는 데 필요한 성분을 나타낸다. CIE XYZ 색공간은 이후 많은 색공간의 기초가 되었으며, CIE Lab, CIE Luv 같은 모델들이 이를 바탕으로 개발되어 더욱 진보적이고 특화된 색상 표현 및 분석 도구로 사용되고 있다.



RGB

RGB는 가장 보편적이고 널리 사용되는 모델이며 빨강(Red), 녹색(Green), 파랑(Blue)의 세 가지 기본 색상을 혼합하여 색을 표현하는 방식이다. 주로 컴퓨터 화면과 같은 디스플레이에서 이미지를 표시할 때 사용된다. RGB는 빛의 삼원색을 이용하여 색을 표현하는 가산 혼합 방식으로, 색을 섞을수록 밝아지는 특성을 가진다. 각 색상은 0에서 255 사이의 세 개의 숫자로 표현된다.

좌측은 가산 혼합 방식의 RGB, 우측은 감산 혼합 방식의 CMYK

반면 CMYK는 흰색 빛에서 빨간색, 녹색, 파란색을 빼는 감산 혼합 방식을 사용하며 시안(Cyan), 마젠타(Magenta), 노랑(Yellow), 검정(Key)의 4가지 잉크로 색상을 표현한다. 주로 종이에 대한 오프셋 인쇄에 쓰이는 잉크 체계다.



HSV, HSL

HSL과 HSV는 모두 원통형 기하학 모델이며, 색조는 0°의 빨간색에서 시작하여 120°의 녹색, 240°의 파란색을 거쳐 360°에서 다시 빨간색으로 돌아간다. 두 모델은 기본적으로 색조(Hue)와 채도(Saturation), 그리고 밝기(Value 또는 Lightness)의 세 가지 요소로 색상을 표현하지만 밝기를 표현하는 방식에서 차이를 보인다.



HSV의 'Value'는 색상의 가장 밝은 부분을 기준으로 하고, HSL의 'Lightness'는 가장 밝고 가장 어두운 부분의 중간값을 기준으로 한다. 이러한 차이로 인해 HSV는 빛의 강도를 더 직관적으로 조절할 수 있고, HSL은 더 균형 잡힌 밝기 조절이 가능하다. 또한 HSL에서는 명도가 중간값(50%)일 때 채도가 최대가 되어 색상이 가장 선명하게 나타나는 반면, HSV에서는 밝기(Value)가 높을수록 채도가 높아도 색상이 밝게 나타나 높은 채도와 밝기에서도 선명함을 유지한다.





색상 모델별 명도값의 차이


이전 글에서 우리는 적절한 명도대비율에서 명도값을 도출했다. 이렇게 구한 명도값은 각각의 색상 모델에서 어떻게 적용되는지 알아봐야 한다. RGB와 CMYK는 명도를 수치로 표현할 수 없지만 CIELAB과 HSL, HSB와 같은 모델은 명도를 수치로 나타낼 수 있다. 여기서 각 모델이 명도를 정의하는 기준을 알아보자.


HSL

HSL 색상 모델에서 명도는 Lightness로 표현되며, RGB 값의 최대값과 최소값의 평균을 사용한다.


RGB 값이 (125, 200, 75)인 색상을 예로 들어보자. 최대값 max(R,G,B)는 Green의 200을 0에서 1 사이 값으로 정규화한 0.784이고, 최소값 min(R,G,B)은 Blue의 75를 정규화한 0.294이다. 따라서 이 둘을 더해 2로 나눈 값인 0.539(53.9%)가 명도가 된다.


HSV

HSV 모델에서는 Value(또는 Brightness)를 사용해 색상의 밝기를 나타내며, RGB 값 중 최대값을 직접 사용한다.



CIELAB

CIELAB 색상 모델은 이것보다 조금 더 복잡한 계산식을 가지고 있다. 이 모델에서 명도는 L값으로 표현되며, XYZ 색상 공간으로부터 변환되어 계산된다.




여기서, Y는 관측된 색상의 상대 휘도값(밝기)이고, Yn은 참조 백색의 휘도값이다. 함수 f(t)는 다음과 같이 정의된다.


t가 0.008856 이상일 경우와 미만일 경우로 계산식이 달라진다.


공식이 이처럼 복잡한 이유는 인간의 눈이 밝기를 비선형적으로 인식한다는 특성을 반영하여 설계되었기 때문이다. 그 결과 L값은 0(완전한 검정)에서 100(참조 백색) 사이의 값으로 표현되어 명도를 나타낸다. HSL과 HSB보다 인간이 색을 인식하는 방식을 자연스럽게 구현했기 때문에 구글은 Material Design을 위해 개발한 색상 모델인 HCT(Hue, Chroma, Tone)의 T값으로 CIELAB 모델의 L값을 사용한다.


CIELAB의 L값과 HCT Tone값은 정확히 일치하지 않을 수 있으나, 설명에 따르면 색상 외관 모델인 CAM16의 색상과 채도를 CIELAB의 밝기와 결합했다고 한다. 이로 인해 HCT는 다양한 디스플레이 환경에서도 일관된 색상을 보장하며, 밝기와 채도, 색상을 직관적으로 조정할 수 있어 디자이너가 더 정밀한 색 튜닝이 가능하다. 또한 HSL과 HSB에 비해 밝기와 대비를 절대값으로 유지할 수 있어, 배경과 전경 사이의 명확한 색상 대비를 유지할 수 있다.


keyword
작가의 이전글Contrast Ratio에서 명도 추출하기