사전 색 공간
개념

색 공간

gabury1

색을 숫자 좌표로 적는 방식입니다. 좌표만 적어서는 어떤 색인지 정해지지 않습니다. 그래서 그 좌표가 가리키는 색을 측정 기준에 붙들어 맵니다. 기준이 다르면 같은 숫자가 다른 색이 됩니다.

상세

지도 좌표를 떠올려 봅니다. 위도와 경도 두 숫자를 적으면 지구 위 한 자리가 정해집니다. 그 숫자는 어디를 0도로 잡았는지를 같이 알아야 뜻이 섭니다.

CIE(Commission Internationale de l'Éclairage, 국제조명위원회)의 국제 조명 용어집은 색 공간을 색을 공간에 기하학적으로 나타낸 것이라고 적습니다. 같은 항목의 주석은 색 공간이 보통 3차원이라고 덧붙입니다. W3C(World Wide Web Consortium)의 CSS(Cascading Style Sheets) Color Module Level 4 는 색 공간을 바탕이 되는 측색 모델을 기준으로 색을 조직한 것이라고 정의합니다. 그 색 공간 안의 어떤 색에도 명확하고 객관적으로 측정 가능한 뜻이 있어야 한다는 조건이 붙습니다. 같은 문서는 그래서 같은 색을 여러 색 공간으로 표현하거나 한 색 공간에서 다른 색 공간으로 옮기면서도 같아 보이게 할 수 있다고 적습니다.

용어집은 이 낱말을 한 덩어리로 두지 않고 층으로 갈라 놓았습니다. 측색 색 공간은 측색 좌표 셋으로 정의된 색 공간입니다. 기기 종속 색 공간은 실제 또는 이상화된 영상 기기의 특성으로 정의된 색 공간입니다. 이 둘은 서로 배타적이지 않습니다. 용어집은 CIE 측색과 단순한 함수 관계를 갖는 기기 종속 색 공간이 측색 색 공간으로도 분류될 수 있다고 적습니다.

층이 하나 더 있습니다. 색 공간 인코딩은 색 공간을 디지털로 부호화한 것입니다. 부호화 방법과 부호화 범위의 규정까지 여기에 들어갑니다. 용어집은 색 공간 하나를 바탕으로 부호화 방법이나 범위가 다른 여러 색 공간 인코딩을 정의할 수 있다고 적습니다. 색 공간 인코딩은 색 채널 개수와 함께 정의됩니다. 각 채널은 색 공간의 한 차원에 대응합니다. 부호화된 채널 값은 그 차원 위의 위치를 가리킵니다. 좌표를 몇 비트로 어떻게 늘어놓을지는 색 공간 자신이 아니라 이 층이 정합니다.

flowchart TD
    A["색 공간 · 색을 공간에 기하로 나타낸 것"] --> B["측색 색 공간 · 측색 좌표 셋으로 정의"]
    A --> C["기기 종속 색 공간 · 영상 기기 특성으로 정의"]
    A --> D["색 공간 인코딩 · 부호화 방법과 범위까지"]
    C -.->|"CIE 측색과 단순한 함수 관계가 있으면"| B

색 공간 하나를 못 박으려면 좌표 밖의 값이 같이 있어야 합니다. CSS Color 4 는 미리 정의된 색 공간 마다 특성표를 붙입니다. 세 원색 각각의 색도 좌표와 흰색의 색도, 전달 함수, 흰색과 검정의 휘도가 그 표의 칸입니다.

배경

색을 다루는 기기는 저마다 자기 좌표를 씁니다. 용어집이 기기 종속 색 공간을 실제 또는 이상화된 영상 기기의 특성으로 정의된 것이라고 적은 자리가 이 사정입니다. 같은 세 숫자를 적어도 그 숫자를 받는 기기가 다르면 나오는 색이 달라집니다. 적는 쪽과 보는 쪽이 서로 무엇을 기준으로 삼았는지 모르면 숫자만으로는 뜻이 서지 않습니다.

그래서 기기 밖에 기준이 필요했습니다. 사람이 어떤 색을 보았다는 것을 기기가 아니라 측정으로 못 박을 수 있어야, 서로 다른 기기의 좌표를 같은 자 위에 올려놓고 견줄 수 있습니다.

CIE 는 1931년에 기준 색 자극 [X]·[Y]·[Z] 와 세 개의 색 맞춤 함수를 채택했습니다. 용어집은 이것을 CIE 1931 표준 측색 시스템이라 부르고, 임의의 분광 분포에 대한 삼자극치를 정하는 X, Y, Z 체계라고 적습니다. 삼자극치란 주어진 삼색 체계에서 고려 대상 자극의 색을 맞추는 데 필요한 기준 색 자극의 양입니다. 용어집은 삼자극치 Y 가 휘도 값에 비례한다고 적습니다. 이 체계는 대략 1도에서 4도 사이의 각크기를 갖는 중심 시야에 적용됩니다. 그 뒤에 나온 좌표들은 이 기준에 붙어서 뜻을 얻습니다. 용어집은 CIE XYZ 삼자극치가 측색 좌표이고, CIE XYZ 삼자극치와 정확하고 가역적인 수학 관계를 갖는 RGB(Red, Green, Blue, 빨강·초록·파랑) 값도 측색 좌표라고 적습니다.

갈래

색 공간이 갈리는 자리는 네 곳입니다. 원색을 색도 위 어디에 놓았는가, 흰색을 무엇으로 잡았는가, 좌표 숫자와 빛의 세기를 잇는 전달 함수가 무엇인가, 그리고 좌표 사이의 거리가 사람 눈에 고르게 보이도록 짰는가입니다.

CIE XYZ

CSS Color 4 의 xyz 색 공간은 CIE XYZ 색 공간을 나타내고, 확산 백색의 휘도 Y 가 1.0 이 되도록 배율을 잡습니다. xyz-d50 의 기준 백색은 D50 이고, xyz-d65 와 xyz 의 기준 백색은 D65 입니다. 1.0 을 넘는 값이 허용되며 잘라내면 안 됩니다. Y 가 1.0 보다 큰 색은 확산 백색보다 밝은 색을 뜻합니다. 0 보다 작은 값은 흔치 않습니다. 다만 크로매틱 어댑테이션의 결과로 나올 수 있습니다. 이 값도 잘라내면 안 됩니다.

CIELAB

CSS Color 4 는 색의 물리적 측정값이 보통 CIE Lab* 색 공간으로 표현된다고 적습니다. 1976년에 CIE 가 만들었습니다. 흔히 Lab 이라고 줄여 부릅니다. 한 기기에서 다른 기기로 색을 변환할 때 중간 단계로도 쓰입니다. 사람 시각 실험에서 끌어낸 것이라 사람이 볼 수 있는 색 범위 전체를 담습니다.

Lab 은 명도 L 축을 가운데 둔 직교 좌표계입니다. 설계상 L 이 50% 또는 50 이면 중간 회색이고, L 의 같은 증가분이 시각적으로 같은 간격이 되도록 의도되어 있습니다. 지각적으로 균등하게 만들려는 색 공간입니다. a 축과 b 축이 색상을 나릅니다. a 축의 양의 값은 자줏빛 빨강이고 음의 값은 그 보색인 초록입니다. b 축의 양의 값은 노랑이고 음의 값은 그 보색인 파랑·보라 쪽입니다.

Oklab

CSS Color 4 는 Lab 을 개선한 공간으로 Oklab 이 최근에 개발되었다고 적습니다. 이에 대응하는 극좌표 형태는 OkLCh 라고 부릅니다. 시각적으로 비슷한 색을 모은 큰 데이터셋을 수치 최적화해서 만들었습니다. CIE LCH 에 견주어 색상 선형성과 색상 균등성, 채도 균등성이 개선되었습니다.

CIE Lab 과 갈리는 자리가 하나 더 있습니다. CIE Lab 은 확산 백색에 순응한다고 가정하지만 Oklab 은 정의하려는 색 자체에 순응한다고 가정합니다. 이는 배율 불변으로 만들려는 의도입니다. 광원은 대부분의 RGB 색 공간과 같은 D65 입니다.

RGB 색 공간

같은 세 좌표를 쓰면서 원색 색도와 백색점, 전달 함수를 다르게 잡은 것들이 있습니다. CSS Color 4 는 이들을 미리 정의된 색 공간으로 싣고 각각에 특성표를 붙였습니다.

색 공간 빨강 x, y 초록 x, y 파랑 x, y 백색점 전달 함수
srgb 0.640, 0.330 0.300, 0.600 0.150, 0.060 D65 별도 곡선
srgb-linear 0.640, 0.330 0.300, 0.600 0.150, 0.060 D65 항등
display-p3 0.680, 0.320 0.265, 0.690 0.150, 0.060 D65 srgb 와 같음
a98-rgb 0.6400, 0.3300 0.2100, 0.7100 0.1500, 0.0600 D65 256/563
prophoto-rgb 0.734699, 0.265301 0.159597, 0.840403 0.036598, 0.000105 D50 별도 곡선
rec2020 0.708, 0.292 0.170, 0.797 0.131, 0.046 D65 감마 2.40

srgb-linear 는 원색과 백색점이 srgb 와 같고 전달 함수만 선형광으로 바뀐 것이라 감마 부호화가 없습니다. display-p3 는 DCI-P3 와 같은 원색 색도를 쓰되 백색점을 D65 로 잡고 전달 곡선은 srgb 와 같은 것을 씁니다. CSS Color 4 는 요즘의 디스플레이와 텔레비전, 노트북 화면, 휴대전화 화면이 display-p3 색역 전부 또는 거의 전부를 표시할 수 있다고 적습니다. prophoto-rgb 만 백색점이 D50 입니다. rec2020 의 전달 함수는 BT.1886 에서 온 감마 2.40 입니다.

YCbCr

ITU(International Telecommunication Union, 국제전기통신연합) 전파통신부문의 BT.709 권고는 RGB 세 신호를 밝기 하나와 색차 둘로 다시 적는 식을 정합니다. 휘도 신호는 E'Y = 0.2126 E'R + 0.7152 E'G + 0.0722 E'B 이고, 아날로그 부호화의 색차 신호는 E'CB = (E'B − E'Y) / 1.8556 과 E'CR = (E'R − E'Y) / 1.5748 입니다. 좌표계를 바꿔 적는 것이라 담고 있는 색 자체가 바뀌지는 않습니다.

같은 권고는 원본 쪽 광전 변환 특성도 함께 못 박습니다. V = 1.099 L^0.45 − 0.099 를 1 ≥ L ≥ 0.018 구간에, V = 4.500 L 을 0.018 > L ≥ 0 구간에 씁니다. 원색 색도는 빨강 (0.640, 0.330), 초록 (0.300, 0.600), 파랑 (0.150, 0.060)이고 기준 백색은 D65 의 (0.3127, 0.3290)입니다. BT.2020 권고는 같은 자리를 빨강 (0.708, 0.292), 초록 (0.170, 0.797), 파랑 (0.131, 0.046)으로 잡고 기준 백색은 D65 그대로 둡니다.

예시

sRGB 전달 함수의 상수

CSS Color 4 의 색 변환 예제 코드는 sRGB 좌표와 선형광 사이를 오가는 곡선을 이렇게 적습니다.

JavaScript
// sRGB 좌표 → 선형광
if (abs <= 0.04045) { return val / 12.92; }
return sign * (Math.pow((abs + 0.055) / 1.055, 2.4));

// 선형광 → sRGB 좌표
if (abs > 0.0031308) {
  return sign * (1.055 * Math.pow(abs, 1 / 2.4) - 0.055);
}
return 12.92 * val;

0.04045 와 12.92, 0.055, 1.055, 2.4, 0.0031308 이 이 색 공간의 전달 함수를 이루는 값입니다. 색 공간 하나를 못 박는 일이 이런 상수까지 정하는 일이라는 뜻입니다.

스타일시트에 적힌 색 공간

CSS 는 색 좌표를 적을 때 어느 색 공간의 좌표인지를 함께 적습니다.

CSS
color(rec2020 0.42053 0.979780 0.00579)
lch(85.9017% 166.116 138.207)
color(display-p3 -0.350289 1.00707 -0.144209)

CSS Color 4 는 이 셋이 같은 색이라고 적습니다. rec2020 색역 안에 드는 강한 라임색입니다. 세 번째 것은 display-p3 색역 밖입니다. 빨강과 파랑이 음수이고 초록이 1 보다 크기 때문입니다. 같은 문서는 색 공간 이름을 profoto-rgb 로 잘못 적은 선언도 예로 싣습니다. 그런 색 공간은 존재하지 않으므로 선언이 무효가 됩니다. 사용 값은 불투명한 검정이 됩니다.

같은 문서의 다른 대목은 한 색을 여러 색 공간으로 옮겨 적은 것을 나란히 보입니다.

CSS
#7654CD
rgb(46.27% 32.94% 80.39%)
lab(44.36% 36.05 -58.99)
color(xyz-d50 0.2005 0.14089 0.4472)
color(xyz-d65 0.21661 0.14602 0.59452)

정확히 같은 색입니다. 좌표 숫자가 전부 다른데 가리키는 색이 하나라는 것이 색 공간이 하는 일입니다. sRGB 의 파랑은 lab(29.567% 68.298 -112.0294) 이고 sRGB 의 노랑은 lab(97.607% -15.753 93.388) 입니다.

PNG 파일 안에 박히는 색 공간

PNG(Portable Network Graphics) 명세는 이미지가 어느 색 공간으로 적혔는지를 청크에 담습니다. cICP 청크는 1바이트 부호 없는 정수 네 개로 이루어집니다.

이름 크기
Color Primaries 1바이트
Transfer Function 1바이트
Matrix Coefficients 1바이트
Video Full Range Flag 1바이트

각 칸은 ITU-T H.273 의 같은 이름 파라미터에 대응합니다. PNG 가 현재 지원하는 색 모델은 RGB 뿐이라 Matrix Coefficients 는 0 으로 두어야 합니다. sRGB 청크는 1바이트짜리 렌더링 인텐트 하나를 담습니다. 값 0 은 지각적, 1 은 상대 측색, 2 는 채도입니다. iCCP 청크는 1바이트에서 79바이트 사이의 프로파일 이름과 널 구분자 1바이트, 압축 방법 1바이트, 압축된 프로파일 본문을 담습니다.

ICC 프로파일이 거쳐 가는 색 공간

ICC(International Color Consortium) 명세는 원본 프로파일과 목적지 프로파일을 잇는 데 쓰는 색 공간을 PCS(profile connection space, 프로파일 연결 공간)라고 부릅니다. 이 명세가 전제하는 구조는 모호하지 않게 정의된 기준 색 공간을 바탕에 둡니다. ICC 는 ISO 13655 에 기반해 그 제약을 정했고, 그렇게 나온 색 공간이 PCSXYZ 와 PCSLAB 입니다. PCS 광원은 CIE 표준광 D50 의 분광 복사 분포를 갖고 nCIEXYZ 값은 X 0,9642 · Y 1,0 · Z 0,8249 입니다.

관련 항목

좌표를 붙들어 매는 측색 기준

CIE XYZ · CIE 1931 표준 측색 시스템 · 색 맞춤 함수 · 삼자극치 · 색도 · 색도 다이어그램 · 백색점 · D65 · D50 · 표준광 · 휘도

색 공간의 하위 종류

RGB · sRGB · scRGB · srgb-linear · 선형 색 공간 · display-p3 · DCI-P3 · Adobe RGB · ProPhoto RGB · Rec.709 · Rec.2020 · CIELAB · LCH · Oklab · OkLCh · YCbCr · HSL · HSV

좌표와 빛을 잇는 부호화

감마 보정 · 전달 함수 · 광전 변환 특성 · 색 공간 인코딩 · 비트 심도 · 밴딩 · 톤 매핑 · HDR · PQ · HLG

옮기고 맞추는 변환·관리

색 관리 · ICC 프로파일 · 프로파일 연결 공간 · PCSXYZ · PCSLAB · 렌더링 인텐트 · 색역 · 색역 매핑 · 색역 밖 클리핑 · 크로매틱 어댑테이션 · 색 공간 변환

적어 두는 저장소

PNG · cICP 청크 · iCCP 청크 · 프레임버퍼 · sRGB 프레임버퍼 · 알파 합성

정의하는 표준·문서

CIE · W3C · ITU · ICC · CSS Color 4 · ISO 13655 · ITU-T H.273 · BT.1886

다른 이름: color space · colour space · 색공간