사전 sRGB
표준

sRGB

gabury1

화면에 쓰는 색을 숫자로 적을 때, 그 숫자가 어느 색을 뜻하는지 정해 놓은 표준입니다. 이게 없으면 같은 숫자가 모니터마다 다른 색으로 나옵니다. 웹은 아무 표시가 없는 색을 이걸로 칩니다.

쉽고 빠른 이해

무슨 일을 하는 물건인가 — 화면에 쓰는 색을 숫자 세 개로 적을 때, 그 숫자가 어느 색인지를 기기와 무관하게 정해 놓은 표준입니다. 예를 들어 빨강이 정확히 어느 색인지는 좌표 (0.64, 0.33) 으로 못박혀 있습니다. 웹페이지에 지정된 색이나 다른 색 정보가 안 붙은 이미지는 별다른 표시가 없으면 이 표준의 색으로 다뤄집니다.

왜 이렇게 하나 — 이게 없으면 같은 숫자가 모니터마다 다른 색으로 나옵니다. 빨강·초록·파랑을 나타내는 방식이 기기마다 달라서 색이 기기를 건너 믿을 만하게 재현되지 않았기 때문입니다.

어떻게 도나

  1. 빨강·초록·파랑 세 원색이 각각 정확히 어느 색인지를 좌표로 못박습니다.
  2. 세 원색이 모두 최대일 때 나오는 흰색을 못박습니다.
  3. 파일에 적힌 숫자와 실제 빛의 세기를 오가는 변환식을 못박습니다.

대가 — 색을 이 세 원색이 만들 수 있는 범위 안에 가둡니다. 그 범위 밖의 색은 숫자로 담을 때 대개 그대로 버려집니다. 웹에서는 표시 없는 색과 이미지가 기본으로 이 표준을 따르지만, 비디오에는 적용되지 않습니다.

상세

RGB(Red, Green, Blue, 빨강·초록·파랑) 색 공간은 색을 이 세 좌표로 나타냅니다. 색 공간이란 색을 세 개 이상의 좌표로 수치화하는 모델이라고 원 제안 문서(1996년에 나온 제안 명세로, 지금은 뒤에 나올 표준 문서가 이를 대신합니다)가 정의합니다. sRGB(standard RGB, 표준 RGB)는 그 세 숫자가 어느 색을 뜻하는지를 기기에 안 묶이게 못 박은 색 공간입니다. 원 제안 문서는 이것을 개인용 컴퓨터 디스플레이의 평균 성능에 기댄 측색(색을 사람 눈에 보이는 대로 수치로 재는 일)적 RGB 규격이라고 적습니다.

못 박는 것은 넷입니다.

무엇 정하는 내용
원색 색도 좌표 빨강·초록·파랑 각각이 색 지도 위 정확히 어느 점(x·y 좌표)인가
백색점 세 원색이 모두 최대 세기일 때 나오는 색
전달함수 파일에 적힌 숫자와 빛의 세기 사이를 오가는 변환
참조 뷰잉 조건 어떤 환경에서 본다고 가정하는가

원색은 Rec. ITU-R BT.709 의 기준 원색을 그대로 씁니다. 원 제안 문서는 빨강·초록·파랑 기준 원색과 표준 광원 D65 의 CIE(Commission Internationale de l'Éclairage, 국제조명위원회) 색도 좌표를 표로 싣습니다. 백색점은 D65 이고, 광원 백색의 색도는 CIE D65 의 것이라고 적습니다. CSS(Cascading Style Sheets, 캐스케이딩 스타일 시트) Color Module Level 4 는 D65 를 상관 색온도 6500 켈빈에 해당하는 주광 백색점이라고 설명합니다. 실제 값은 6504 인데, 이 색이 처음 정의된 뒤 플랑크 상수의 값이 바뀌었기 때문이라고 덧붙입니다.

색역은 세 원색의 색도와 백색점의 색도로 정해집니다. sRGB 자극값(빛의 색을 빨강·초록·파랑 세 성분의 양으로 나타낸 값)은 1931년 CIE XYZ(CIE 가 1931년에 정한, 사람 눈에 보이는 색 전부를 세 숫자로 담는 기준 색 공간) 값의 단순한 선형 결합이라고 원 제안 문서가 적습니다. 인코딩 과정에서 음수 자극값과 1.00 을 넘는 자극값은 보통 보존되지 않습니다. 그래도 이 색역은 CRT(Cathode Ray Tube, 음극선관) 모니터가 표시할 수 있는 대부분의 색을 담을 만큼 넓다고 적습니다. 색역 안의 색은 세 성분이 모두 [0, 1] 범위이고, 퍼센트 표기도 허용해서 R·G·B 에 대해 0% 는 0.0, 100% 는 1.0 입니다.

전달함수는 선형 자극값(전달함수를 아직 거치지 않은 자극값)을 비선형 sR'G'B' 값(원 제안 문서가 쓰는 표기로, 감마 보정을 거쳐 8비트 숫자로 인코딩하기 직전의 값이라는 뜻입니다)으로 바꿉니다. 그 식의 효과는 감마(신호 값과 실제 밝기 사이를 지수함수로 잇는 보정 지수) 2.2 곡선에 거의 들어맞되 정수 연산에서 역변환이 되도록 약간의 오프셋을 둔 것입니다. 그래서 감마 2.2 로 만들어진 기존 이미지, 그리고 비디오 업계와 일관성을 유지한다고 원 제안 문서는 설명합니다. 반대 방향으로 선형화를 거치고 나면 RGB 색 공간은 가산적(빛을 더할수록 밝아지는 성질)이 됩니다. 가산적이라는 것은 어떤 색이든 세 원색을 어떤 비로 섞은 합으로만 나온다는 뜻이라, 나올 수 있는 색의 범위는 세 원색의 색도가 찍는 세 점을 잇는 삼각형이 됩니다. 그래서 색역이 앞서 말한 대로 세 원색과 백색점의 색도만으로 정해집니다.

출처 문서

정본과 원 제안이 다른 문서입니다. 둘을 섞어 읽으면 고쳐지기 전 수치를 근거로 들게 됩니다. W3C(World Wide Web Consortium, 월드 와이드 웹 컨소시엄)의 제안이 먼저 나오고, IEC (International Electrotechnical Commission, 국제전기기술위원회)가 표준화하고, 개정이 한 번 붙습니다.

timeline
    title sRGB 문서의 판올림
    1996-11-05 : W3C Note 발행(제안 명세, 이후 낡음)
    1999-10-18 : IEC 61966-2-1:1999 edition 1.0 발행(표준화)
    2003-01-23 : Amendment A1:2003 edition 1.0 발행

IEC 61966-2-1

표준 정본입니다. IEC 가 냈습니다.

번호   IEC 61966-2-1:1999
제목   Multimedia systems and equipment - Colour measurement and management -
       Part 2-1: Colour management - Default RGB colour space - sRGB
발행   1999-10-18
판     edition 1.0
상태   PUBLISHED

적용 범위는 이렇게 적혀 있습니다. 컴퓨터 시스템과 그 비슷한 응용에서 쓰이는 RGB 색의 인코딩과 전달에 적용되며, 정해진 참조 조건에서 쓸 인코딩 변환을 정의함으로써 그렇게 한다는 것입니다. 2014년 1월 자 정오표의 내용이 이 사본에 포함되어 있다고 IEC 가 덧붙입니다. W3C 의 CSS Color 명세 3판은 이 표준을 인용할 때 ISBN(International Standard Book Number, 국제표준도서번호) 2-8318-4989-6, ICS(International Classification for Standards, 국제표준분류) 코드 33.160.60 과 37.080, TC(Technical Committee, 기술위원회) 100, 51쪽으로 적습니다. A1(Amendment 1의 표기):2003 으로 개정된 판이라는 한정도 함께 붙입니다.

개정판이 하나 붙어 있습니다. IEC 61966-2-1:1999/AMD1(Amendment 1):2003 이고 2003-01-23 에 발행된 edition 1.0, 상태는 PUBLISHED 입니다. 무엇을 바꿨는지는 발행처 페이지에 실려 있지 않습니다.

W3C Note (1996) — 표준이 아니라 제안

W3C 가 낸 「A Standard Default Color Space for the Internet - sRGB」 입니다. Version 1.10, 1996년 11월 5일. 저자는 Michael Stokes (Hewlett-Packard), Matthew Anderson(Microsoft), Srinivasan Chandrasekar(Microsoft), Ricardo Motta(Hewlett-Packard) 입니다.

이 문서는 스스로 지위를 밝혀 둡니다. 이 문서는 낡았고 역사적 목적으로만 여기 남겨 둔다고 적습니다. sRGB 를 표준 기본 색 공간으로 삼자는 제안 명세로 발행되었다고 밝힙니다. 그 뒤 sRGB 는 IEC 안에서 IEC 61966-2-1 로 표준화되었습니다. 표준화 과정에서 반올림 오차로 생긴 작은 수치 오류가 고쳐졌고, 뷰잉 조건도 명확해졌다고 적습니다. 올바른 식은 International Color Consortium 웹사이트에서 구할 수 있다고 안내합니다.

그래서 이 문서의 식과 수치를 그대로 옮기면 고쳐지기 전 값을 근거로 드는 것입니다. 역사와 배경을 읽는 데는 이 문서가 쓸모 있지만, 올바른 식과 수치는 앞서 적었듯 International Color Consortium 웹사이트에서 구해야 합니다.

태그 없는 색의 기본 색 공간

여기부터가 요구 강도가 갈리는 자리입니다. MUST 는 어기면 표준을 안 지킨 것이고, SHOULD 는 이유가 있으면 어겨도 되며, MAY 는 해도 되고 안 해도 되는 것입니다.

CSS Color Module Level 4 의 「Color Spaces of Untagged Colors」 절이 MUST 로 못 박습니다. 호환성을 위해, HTML(HyperText Markup Language, 하이퍼텍스트 마크업 언어)에 지정된 색과 태그 없는 이미지는 달리 지정되지 않는 한 sRGB 색 공간에 있는 것으로 다루어야 한다고 적습니다. 태그 없는 이미지란 그 이미지 포맷이 정한 방식으로 색 프로파일이 명시적으로 배정되지 않은 이미지입니다. 이 규칙은 태그 없는 비디오에는 걸리지 않습니다. 태그 없는 비디오는 ITU(International Telecommunication Union, 국제전기통신연합)가 정한 색 공간에 있다고 전제해야 하기 때문입니다.

같은 명세는 sRGB 가 CSS 의 기본 색 공간이고 모든 레거시 색 함수가 이것을 쓴다고 적습니다. 아래에서 정의하는 미리 정의된 sRGB 색 공간은 rgb() 같은 레거시 sRGB 색에 쓰이는 것과 같다고도 밝힙니다.

PNG(Portable Network Graphics) 3판의 11.3.2.5 절은 SHOULD 로 적습니다. sRGB 청크(PNG 파일 안에서 이 정보를 담는 조각)가 있으면 이미지 샘플은 sRGB 색 공간을 따르며, 지정된 렌더링 인텐트(색을 다른 기기나 색역에 맞출 때 어떤 우선순위로 조정할지 International Color Consortium 이 정의해 둔 방식이고, 아래 예시 절 표에 값 넷이 있습니다)를 써서 표시되어야 한다는 것입니다.

같은 절이 구현에 맡긴 자리도 하나 있습니다. sRGB 청크나 iCCP 청크(색 프로파일 자체를 통째로 담는 청크)를 모르는 레거시 시스템은 오늘날 드물지만, 그런 시스템을 받쳐야 할 때 sRGB 청크를 쓰는 PNG 인코더는 호환을 위해 gAMA 청크(감마 값 하나만 담는 청크)를 함께 쓰기로 할 수 있고 cHRM 청크(색도 좌표를 담는 청크)는 선택입니다.

예시

원색과 백색점의 색도 좌표

원 제안 문서의 TABLE 0.2 입니다. Rec. ITU-R BT.709 기준 원색과 CIE 표준 광원의 색도입니다. 열마다 x·y·z 세 값이 있는데, 상세에서 말한 색도 좌표는 이 중 x·y 둘이고 셋을 더하면 항상 1이 되어서 z 는 x·y 로 정해지는 값입니다.

         Red      Green    Blue     D65
x        0.6400   0.3000   0.1500   0.3127
y        0.3300   0.6000   0.0600   0.3290
z        0.0300   0.1000   0.7900   0.3583

CSS Color Module Level 4 도 같은 숫자를 적습니다. 빨강 0.640 / 0.330, 초록 0.300 / 0.600, 파랑 0.150 / 0.060, 백색점 D65 입니다. 앞서 출처 문서 절은 원 제안 문서의 식과 수치를 그대로 옮기면 고쳐지기 전 값을 근거로 들 수 있다고 적었지만, 이 원색·백색점 좌표는 지금 표준인 CSS Color Module Level 4 도 똑같이 적고 있어 고쳐지지 않은 값임을 이 대조로 확인할 수 있습니다. 같은 명세의 백색점 표는 D65 를 x 0.312700, y 0.329000, 상관 색온도 6504K 로, D50(또 다른 CIE 표준 광원)을 x 0.345700, y 0.358500, 5003K 로 적습니다.

참조 뷰잉 조건

원 제안 문서의 TABLE 0.1 입니다. 색을 정할 때 어떤 관람 환경을 전제했는지가 여기 값으로 박혀 있습니다. 이 표의 D65 y 값(0.3291)은 앞서 원색·백색점 표의 값(0.3290)과 살짝 다릅니다. 원 제안 문서 자신이 두 표에 서로 다른 값을 적어 두었고, 어느 쪽이 반올림 오차인지는 문서에 나와 있지 않습니다.

Luminance level                       80 cd/m2
Illuminant White                      x = 0.3127, y = 0.3291 (D65)
Image surround                        20% reflectance
Encoding Ambient Illuminance Level    64 lux
Encoding Ambient White Point          x = 0.3457, y = 0.3585 (D50)
Encoding Viewing Flare                1.0%
Typical Ambient Illuminance Level     200 lux
Typical Ambient White Point           x = 0.3457, y = 0.3585 (D50)
Typical Viewing Flare                 5.0%

CSS Color Module Level 4 는 같은 자리를 흰색 휘도(자극값과는 다른 값입니다 — 자극값이 빨강·초록·파랑 각 성분의 크기라면, 휘도는 그 색이 전체로 내는 밝기입니다) 80.0 cd/m2, 검정 휘도 0.20 cd/m2, 이미지 상태 display-referred(화면에 그대로 뿌릴 값이라는 뜻으로, 실제 장면의 빛 세기 그대로는 아니라는 뜻입니다)로 적습니다. 이 값들이 못박혀 있어야 같은 숫자가 같은 색으로 보인다고 전제할 수 있습니다 — 보는 환경이 이 조건과 다르면 그 전제가 깨집니다.

전달함수의 상수

원 제안 문서는 이 식을 그림으로 실었습니다. CSS Color Module Level 4 가 같은 전달함수를 코드로 다시 정의합니다. 감마 인코딩된 성분 c 를 선형 광량 성분 cl(상세에서 말한 선형 자극값을, 코드에서 부르는 이름입니다)로 되돌리는 방향입니다.

JavaScript
let sign = c < 0? -1 : 1;
let abs = Math.abs(c);
if (abs <= 0.04045) {
    cl = c / 12.92;
}
else {
    cl = sign * (Math.pow((abs + 0.055) / 1.055, 2.4));
}

경계값은 0.04045 입니다. 그 아래는 12.92 로 나누는 직선 구간이고, 위는 0.055 를 더해 1.055 로 나눈 뒤 2.4 를 지수로 올리는 곡선 구간입니다.

CSS 의 color(srgb …) 표기

CSS
color(srgb 0.691 0.139 0.259)
color(srgb-linear 0.435 0.017 0.055)

CSS Color Module Level 4 는 이 둘이 같은 색이라고 적습니다. srgb-linear 는 srgb 와 같되 전달함수가 선형 광량이라는 점만 다릅니다. 감마 인코딩이 없어서 cl = c 입니다. 같은 색이 두 표기에서 다른 숫자로 적히는 것이 전달함수가 하는 일입니다.

PNG 의 sRGB 청크

청크 내용은 1바이트짜리 렌더링 인텐트 하나입니다. 값은 넷이 정의돼 있습니다.

값 이름 명세가 적은 쓰임
0 Perceptual 사진처럼, 측색 정확도를 내주더라도 출력 기기 색역에 잘 적응하는 쪽이 나은 이미지
1 Relative colorimetric 로고처럼, 출력 기기 백색점 기준으로 색 겉보기를 맞춰야 하는 이미지
2 Saturation 차트와 그래프처럼, 색상과 밝기를 내주더라도 채도를 지키는 쪽이 나은 이미지
3 Absolute colorimetric 다른 출력 기기용 이미지의 교정쇄처럼, 절대 측색을 지켜야 하는 이미지

배경

International Color Consortium(ICC, 국제색채컨소시엄)은 열린 시스템에서 색을 주고받는 문제에 해법을 내놨습니다. 그런데 ICC 프로파일 형식이 모든 상황을 다 푸는 것은 아니었습니다. ICC 방식은 입력 색 공간의 프로파일을 그 이미지에 붙여 다니게 합니다. 고급 사용자에게는 맞는 방식입니다. 그러나 그만한 유연성과 통제가 필요 없는 사용자가 넓게 있었고, 기존 파일 포맷 대부분은 색 프로파일 임베딩을 지원하지 않으며 앞으로도 지원하지 않을 수 있습니다. 게다가 파일에 여분의 데이터를 덧붙이는 것 자체를 꺼리게 만드는 용도도 넓게 있었습니다.

그 빈자리를 RGB 모니터 색 공간들이 제각기 메우려 들었습니다. 원 제안 문서는 이것을 지침도 표준화 시도도 별로 없는 난립이라고 적습니다. 운영체제는 전통적으로 특정 색 공간을, 대개 RGB 를 지원한다고 선언하는 식으로 색을 다뤄 왔습니다. 그런데 RGB 가 기기마다 달라서 색이 기기를 건너 믿을 만하게 재현되지 않았습니다. 표준과 비표준 RGB 모니터 공간 여럿을 하나의 표준 RGB 색 공간으로 합칠 필요가 있었다는 것이 제안의 출발점 입니다. 그렇게 할 수 있다고 본 근거는 관찰 셋이었습니다. 대부분의 컴퓨터 모니터는 핵심 색 특성이, 곧 인광체(전자빔을 맞으면 빛을 내는 화면 코팅 물질) 색도와 전달함수가 서로 비슷하다는 것입니다. RGB 공간은 성능 제약이 가장 심한 기기인 디스플레이·스캐너· 디지털카메라의 네이티브 공간이라는 것입니다. RGB 공간은 간단한 방법으로 기기 독립적으로 만들 수 있고, 소수의 응용을 빼면 충분히 넓은 색역을 나타낼 수 있다는 것입니다. 소프트웨어와 하드웨어 설계자에게 이 제안 공간의 가장 중요한 대목은 2.2 CRT 감마라고 원 제안 문서는 짚습니다. 감마 보정이 혼란에 둘러싸인 주제인 경향이 있어서 몇 문단을 따로 쓸 값어치가 있다는 말과 함께입니다.

그래서 Hewlett-Packard 와 Microsoft 는 이미지에 ICC 프로파일을 지고 다니는 부담 없이 대부분의 사용자 요구에 맞추는 색 관리 방식을 제안했습니다. 운영체제와 인터넷에 표준 색 공간 지원을 더하는 것입니다. 고른 공간은 Rec. ITU-R BT.709 와 일관되면서 그보다 더 촘촘하게 정의한 파생입니다. 1990년 4월에 HDTV(High Definition Television, 고선명 텔레비전) 제작과 프로그램 교환용 캘리브레이션된 비선형 RGB 공간으로 만장 일치 세계 합의를 얻은 공간이었습니다. 제안에는 스타일시트 구문도 함께 실렸습니다. 스타일시트에 정의된 모든 페이지 요소는 임베드된 ICC 프로파일이 달리 가리키지 않는 한 sRGB 색 공간에 있다고 가정하자는 것입니다.

관련 항목

이 색 공간을 재는 지표

색 공간 · 색역 · 색도 좌표 · 백색점 · 원색 · 자극값 · CIE XYZ · D65 · D50 · 상관 색온도 · 휘도 · 인광체 색도 · 감마 보정 · 전달함수 · 선형 광량

이 색 공간을 다른 기기로 옮기는 수단

색 관리 · ICC 프로파일 · 렌더링 인텐트 · 색 프로파일 임베딩 · 측색 · 기기 독립 · 시야 플레어 · International Color Consortium

이 색 공간을 인용하는 문서

CSS Color Module Level 4 · PNG

이 표준을 낸 기관

IEC · W3C

원색이 파생된 표준과 그 발행 기구

Rec. ITU-R BT.709 · ITU

색이 이 표준을 기본값으로 받는 언어

HTML

전달함수만 다른 색 공간

srgb-linear

원 제안이 근거로 든 기기

CRT · 디스플레이 · 스캐너 · 디지털카메라

다른 이름: standard RGB · IEC 61966-2-1