山本ワールド
CIE1931xyz色度図
概要
モニターの色域を表現するときによく用いられるCIE1931xy色度図について記述しました。
色度図上でカーソルを動かすとxy座標値とsRGB値を表示するようにしました。
sRGBで着色していますのでsRGBを超える色領域については不正確となります。
SVGをベースに着色はSVGでは非常に時間が係るためcanvasを使用しています。 塗りつぶしはピクセル単位で描画していますが拡大しても意外と粗さは目立ちません。
またブラウザによっては座標の読み取りができない場合があります。
色温度とxyの表はセルごとに背景を着色しています。印刷時には着色が無効となります。
スペクトル軌跡の表示は5nmステップのデーターを使用しています。直線で結ぶと特に左上部がカクカクになります。
前後の点から各点の接線を算出し接線同士の交点を2次ベージェ曲線の制御点としています。
ユーザーが入力した値に応じで計算過程を示すようにしてみました。
なお、ここで表示して色は各種条件で色が異なって見えますのでご了承ください。
event.clientX及びevent.clientYをサポートしていないため。
2017/04/02 Google Chrome 57.0.2987.133(64bit/32bit)では正常動作しました。
2017/04/02 IE11(64bit/32bit)では正常動作しました。
色度図上でカーソルを動かすとxy座標値とsRGB値を表示するようにしました。
sRGBで着色していますのでsRGBを超える色領域については不正確となります。
SVGをベースに着色はSVGでは非常に時間が係るためcanvasを使用しています。 塗りつぶしはピクセル単位で描画していますが拡大しても意外と粗さは目立ちません。
またブラウザによっては座標の読み取りができない場合があります。
色温度とxyの表はセルごとに背景を着色しています。印刷時には着色が無効となります。
スペクトル軌跡の表示は5nmステップのデーターを使用しています。直線で結ぶと特に左上部がカクカクになります。
前後の点から各点の接線を算出し接線同士の交点を2次ベージェ曲線の制御点としています。
ユーザーが入力した値に応じで計算過程を示すようにしてみました。
なお、ここで表示して色は各種条件で色が異なって見えますのでご了承ください。
動作確認
2017/04/02 Firefox 52.0.2(32bit)ではxy色度図上でマウスカーソルの座標を読み取る機能が動作しませんでした。event.clientX及びevent.clientYをサポートしていないため。
2017/04/02 Google Chrome 57.0.2987.133(64bit/32bit)では正常動作しました。
2017/04/02 IE11(64bit/32bit)では正常動作しました。
実行中の環境
CIE1931XYZ表色系 色度図
CIE1931rgb色度図をもとにX軸とY軸を新規に設定したものがXYZ色度図です。
表示例を以下に示します。
モニター等の色域(しきいき)を表現するときに用いられます。
ここではx,yを可変させて該当する色を表示してみました。
x,y,zはx+y+z=1となるようにX,Y,Zを正規化したものである。
色温度を6500kとした場合は以下の行列によって計算できる。
XYZ→sRGB(D65)
行列の積の計算方法は以下のとおりである。
よって、XYZ→sRGB(D65)は以下の式で計算できる。
sRGB(D65)→XYZ行列を逆行列にすればよい。
上式の逆行列は以下のように計算できる。
R,G,Bそれぞれの値が0.0031308以下の場合
R,G,Bそれぞれの値が0.0031308を超える場合
R,G,Bの値が1を超えた場合は1に設定する。
xyzからXYZが得られるので色が計算できる。
プランク(Planck)の公式
絶対温度T(K)の黒体の分光放射強度{単位面積から法線方向単位立体角に放射されるパワー(W)}=
プランク定数
ボルツマン定数
光速
上記のグラフは余りにもエネルギーの範囲が広いので550nmの値を基準に比率で表した図が以下のグラフです。
xyの二次元座標に色度を表したものが以下の図です。
三角形の領域はRGBで表現できる領域を示します。着色部の外線の馬蹄部分はスペクトル軌跡です。
以下が各色の座標値です。
横の数字は波長を示しています。
三角形の内側を通る曲線は色温度を示しています。
参考文献
表示例を以下に示します。
モニター等の色域(しきいき)を表現するときに用いられます。
ここではx,yを可変させて該当する色を表示してみました。
x,y,zはx+y+z=1となるようにX,Y,Zを正規化したものである。
XYZ-xyz変換
xyz→XYZ変換
Yを与えればXYZ→sRGB変換(線形)
変換は想定する色温度によって変化する。色温度を6500kとした場合は以下の行列によって計算できる。
XYZ→sRGB(D65)
sRGB(D65)→XYZ行列を逆行列にすればよい。
sRGB変換(γ補正)
モニター等は色の値と明るさがリニアでないためγ補正を行う。ここではRの例を示す。G,Bも同様に計算する。R,G,Bそれぞれの値が0.0031308以下の場合
R,G,Bそれぞれの値が0.0031308を超える場合
R,G,Bの値が1を超えた場合は1に設定する。
0~255に変換する
一般にR,G,Bはそれぞれ8bitで表されれるので255を乗じる。Adobe RGB(D65)
Adobe RGB(1998) Color Image Encoding波長から色を取得する。
等色関数の引数に求めたい波長を設定すればx,y,zが算出できる。xyzからXYZが得られるので色が計算できる。
スペクトル軌跡
単純に等色関数をx,yが軌跡の各点の座標となる。色温度から色を取得する。
プランク(Planck)の公式より波長(λ)からエルギー量が計算できる。波長を変化させて各々のエネルギー量を計算すればスペクトルが計算できる。一般的には可視光である380nm~780nmについて実施する。各波長のエネルギー量に等色関数を乗じて加算するとX,Y,Zそれぞれが算出できる。プランク(Planck)の公式
絶対温度T(K)の黒体の分光放射強度{単位面積から法線方向単位立体角に放射されるパワー(W)}=
プランク定数
ボルツマン定数
光速
三角形の領域はRGBで表現できる領域を示します。着色部の外線の馬蹄部分はスペクトル軌跡です。
以下が各色の座標値です。
色域 | 白色点 | R | G | B | |||
---|---|---|---|---|---|---|---|
x | y | x | y | x | y | ||
sRGB | D65 | 0.640 | 0.330 | 0.300 | 0.600 | 0.150 | 0.06 |
Adobe RGB | D65 | 0.640 | 0.330 | 0.210 | 0.710 | 0.150 | 0.06 |
NTSC | C | 0.670 | 0.330 | 0.210 | 0.710 | 0.140 | 0.08 |
三角形の内側を通る曲線は色温度を示しています。
色温度(k) | x | y | R | G | B |
---|
色彩工学入門 北出版株式会社
XYZ→xyY変換の計算過程
xyY→XYZ変換の計算過程
XYZ→RGB変換の計算過程
RGB→XYZ変換の計算過程
Copyright (C) 2012 山本ワールド All Rights Reserved.