sRGB:ウェブ標準の色空間
[1996年]]、ヒューレット・パッカードと
マイクロソフトが共同で開発したsRGB(エスアールジービー)は、モニター、プリンター、そして
World Wide Webで使用するための標準RGB色空間として誕生しました。その後、[[国際電気標準会議]によって国際標準規格として承認され、現在ではウェブにおける標準的な色空間として広く利用されています。カラープロファイルが埋め込まれていない画像データは、sRGBを色空間として想定しているのが一般的です。
sRGBの普及に大きく貢献したのは、当時のコンピューターモニターディスプレイの仕様を体系的に取り入れた点です。sRGBは、高精細テレビ放送(HDTV)のITU-R BT.709標準と同じ
原色と
白色点を採用しており、当時主流だったCRTディスプレイとの高い互換性を確保しています。さらに、一般的な家庭やオフィスの視聴環境を想定した伝達関数(ガンマ)を採用することで、幅広い環境での正確な色再現を目指しました。
sRGBの色域と原色
sRGBは、赤、緑、青の3
原色の色度を定義しています。これらの色度は、3つのチャネルのうち1つがゼロ以外で、他の2つがゼロである色で表現されます。sRGBで表現できる色の範囲は、この3
原色によって定義される三角形の色域で表され、この範囲は人間の目が知覚できる色域に十分に収まるように設定されています。通常のRGB色空間と同様、R、G、Bの値が負でない限り、この三角形の外側の色は表現できません。
sRGBの
原色はHDTV(ITU-R BT.709)から採用されており、古いカラーテレビシステム(ITU-R BT.601)の
原色とは異なります。これらの値は、sRGB開発当時の消費者向けCRTディスプレイの蛍光体の特性を反映したものであり、当時普及しつつあった
液晶ディスプレイもCRTの特性を模倣する設計が多かったことから、これらの値は幅広いディスプレイデバイスの一般的な慣行も反映していると言えるでしょう。
sRGBとCIE XYZ間の変換
sRGBからCIE XYZへの変換、そしてその逆変換について見ていきましょう。まず、sRGBの色成分値R
srgb、G
srgb、B
srgbは、0~1の範囲で表されます。デジタルデータとしては、通常0~255の8ビット数値で表現されるため、0~1の範囲に変換するには255で割る必要があります。
sRGBからCIE XYZへの変換:
最初に、sRGB値を線形値に変換します。この変換は、次の式で行われます。
`C
linear = { C
srgb / 12.92, C
srgb ≤ 0.04045; ((C
srgb + 0.055) / 1.055)^2.4, C
srgb > 0.04045 }`
ここで、CはR、G、Bのいずれかを表します。このガンマ補正を施した線形値を用いて、以下の行列を用いた線形変換によってCIE XYZ値を求めることができます。
`[X
D65, Y
D65, Z
D65]
T =
0.4124, 0.3576, 0.1805], [0.2126, 0.7152, 0.0722], [0.0193, 0.1192, 0.9505 [R
linear, G
linear, B
linear]
T`
この行列は、BT.709の
原色に基づいたものであり、2行目はBT.709-2輝度係数に対応しています。
CIE XYZからsRGBへの変換:
CIE XYZからsRGBへの変換は、まず、D65
[白色点]を基準とした線形変換から始まります。この変換には、以下の行列を使用します。
`[R
linear, G
linear, B
linear]
T =
3.2406, -1.5372, -0.4986], [-0.9689, 1.8758, 0.0415], [0.0557, -0.2040, 1.0570 [X
D65, Y
D65, Z
D65]
T`
得られた線形RGB値に、以下の式でガンマ補正を適用してsRGB値を求めます。
`C
sRGB = {12.92C
linear, C
linear ≤ 0.0031308; 1.055(C
linear1/2.4) - 0.055, C
linear > 0.0031308}`
ここで、CはR、G、Bのいずれかを表します。最後に、得られたsRGB値は通常0~1の範囲にクリップされ、必要に応じて0~255の範囲にスケーリングされます。