CIE色度図プロッター(色度座標・色域カバー率計算)

RGB・HEX・xy・XYZ・色温度から色度座標と主波長を計算し、色度図に描く。sRGB・P3・BT.2020 の色域判定とカバー率も

色の値から CIE 色度座標(xy・u′v′)と主波長を計算し、色度図に描く。画面の色なら HEX・RGB、測色計の値なら xy か XYZ、照明なら色温度で入れる。

よく使う例

入力のしかた

同じ (255, 0, 0) でも、色空間が違えば色度は変わる。

結果

xyx 0.6400 / y 0.3300
sRGB内

#FF0000

sRGB に変換した色見本

x / y(CIE 1931)

0.6400 / 0.3300

u′ / v′(CIE 1976)

0.4507 / 0.5229

X

41.24

Y

21.26

Z

1.93

主波長・刺激純度だけに効く(色度座標そのものは変わらない)。LED のデータシートの主波長は E(等エネルギー白)基準のことが多い。

主波長

611.3 nm

白色点から見た単色光の方向

刺激純度

91.7 %

スペクトル軌跡への近さ

色域の内外

✓ sRGB✓ Adobe RGB✓ P3✓ BT.2020✓ NTSC

色度図

0.00.10.20.30.40.50.60.70.80.00.10.20.30.40.50.60.70.80.9xy460480500520540560580600620700

図に描く色域(タップで切り替え)

白い馬蹄形がスペクトル軌跡(単色光)、底辺の破線が純紫軌跡。× が白色点、○ が入力した色。点線は白色点から主波長への補助線。

手持ちのディスプレイの色域

標準色域の比較表

色域対sRGB xy対sRGB u′v′NTSC比対軌跡 xy対軌跡 u′v′
sRGB100.0%100.0%70.8%33.5%33.2%
Adobe RGB134.9%116.7%95.5%45.2%38.8%
P3135.7%125.6%96.1%45.5%41.7%
BT.2020189.1%172.3%133.9%63.4%57.3%
NTSC141.2%114.7%100.0%47.3%38.1%

「対軌跡」はスペクトル軌跡(380〜700nm)の内側に対する面積比。よく見る「sRGB は全色域の約36%」のような数字は計算の前提が書かれておらず、この表の値(xy・u′v′ とも約33%)とは一致しない。

CIE 1931 2°視野の等色関数(CVRL)で計算している。画面に出す色見本は sRGB に丸めた近似で、P3 や BT.2020 の色をそのまま表示しているわけではない。

PR

📘 色を測る・合わせるための道具と本

関連ツール

「NTSC 72%」「sRGB 99%」「DCI-P3 95%」——色度図の三角形で数字をそろえる

家電量販店のモニター売り場で、値札の横に「NTSC 72%」「sRGB 99%」「DCI-P3 95%」と並んでいる。隣の機種は「Adobe RGB 100%」。どれも%なのに、どれがいちばん色が広いのか、説明を読んでも決めきれない。こういう場面、あるよね。

実はこれらの数字は、すべて同じ1枚の図の上の話だ。CIE 色度図と呼ばれる馬蹄形の図に、ディスプレイの赤・緑・青の3点を打つと三角形ができる。「NTSC 72%」も「DCI-P3 95%」も、その三角形どうしを比べた数字にすぎない。ただし比べ方が2通りある。三角形の面積の比なのか、基準の三角形を**どれだけ覆っているか(カバー率)**なのか。さらに図そのものも2種類ある。昔からの xy 色度図か、人の目の感じ方に近づけた u′v′ 色度図か。この2つの選び方次第で、まったく同じパネルの数字が10ポイント以上動く。

このツールは、HEX・RGB・xy・XYZ・色温度のどれからでも色度座標を計算して色度図に点を打ち、主波長と刺激純度、sRGB・Adobe RGB・P3・BT.2020・NTSC の内外を一度に出す。仕様書に載っている原色の座標を入れれば、面積比とカバー率を xy と u′v′ の両方で並べて見せる。カタログの%が何を比べた数字なのか、自分の手で確かめられる。

なぜ作ったのか——%の正体が書かれていない

きっかけはノートPCの買い替えだった。候補の1台は「NTSC 72%」、もう1台は「sRGB 100%」、3台目は「DCI-P3 95%」。写真の現像に使うつもりだったので、どれが自分の用途に足りるのかを知りたかった。ところが調べるほど分からなくなった。

まず、日本語で色度座標を計算して、その場で色度図に描いてくれるブラウザのツールがほとんど見つからない。研究者が公開している JavaScript のツール群はあるが、目的は教育や研究で、仕様書の数字を確かめる使い方は想定されていない。英語のツールは xy への変換や色域の図まではあっても、自分のパネルの原色を入れてカバー率を出すところまでは届かない。

次に、仕様書の「P3 カバー率」と「sRGB 比」は、名前は似ているのに別の量だ。片方は共通部分の割合、もう片方は面積の割合。それなのにどちらも同じ%で、同じ表に並んでいる。

さらに、よく聞く「P3 は sRGB より約25%広い」という説明を自分で確かめようと xy 色度図で三角形の面積を計算したら、35%広いという答えになった。25%になるのは u′v′ 色度図で計算したときだ。どちらの図の話なのかは、どこにも書かれていない。

最後に、モニターの仕様書やレビュー記事には原色の色度座標(Rx, Ry, Gx, Gy, Bx, By)が載っていることが多いのに、その6つの数字から自分のパネルのカバー率を出す手段が手元に無かった。三角形の重なりを手計算するのは現実的ではない。

だから、入力した色を図に置くところから、原色の座標からカバー率を出すところまで、1画面で済むものを作った。数字の意味がそろえば、売り場の値札は比べられるようになる。

色度図と色度座標の基礎——色の「地図」の読み方

色度図 とは——人の目の3つのセンサーから始まる

人の目の網膜には、色を感じる錐体(すいたい)という細胞が3種類ある。長い波長(赤寄り)に強く反応するもの、中くらい(緑寄り)、短い波長(青寄り)に反応するもの。目に入った光は、この3つの反応の強さの組み合わせとして脳に届く。だから、まったく違うスペクトルの光でも、3つの反応が同じなら同じ色に見える。テレビやスマホが赤・緑・青の3色だけで「あらゆる色」を表せるのはこのためだ。

1920年代、イギリスの Wright と Guild はこれを実験で確かめた。観察者に単色光を見せ、赤・緑・青の3つの光を混ぜて同じ色に見えるよう調整してもらう(等色実験)。こうして「各波長の光を3原色で作るには何をどれだけ混ぜればよいか」の表ができた。ただ、実在の3原色ではどうしてもマイナスの量が必要な波長が出る。そこで1931年に CIE(国際照明委員会)は、計算上の都合のよい「実在しない3原色」X・Y・Z を定め、どの色も正の値で表せるようにした。これが CIE 1931 XYZ 表色系で、X・Y・Z を三刺激値と呼ぶ。Y はちょうど人が感じる明るさ(輝度)に一致するよう作られている。

色度座標 計算——明るさを外して色の「方向」だけにする

同じ赤でも、明るい赤と暗い赤では X・Y・Z が全部比例して大きくなったり小さくなったりする。色みだけを見たいなら、合計で割って比にすればよい。これが色度座標だ。

x = X / (X + Y + Z)
y = Y / (X + Y + Z)
z = Z / (X + Y + Z) = 1 − x − y  // x と y が決まれば z は決まるので、2つだけ使う

この x と y を横軸・縦軸にとった平面が xy 色度図だ。明るさの情報は消えているので、真っ白も中間グレーも同じ1点に重なる。XYZ を Y=100 で測っても Y=1 で測っても色度座標は同じになるのは、比しか使っていないからだ。

xy色度図 の形——縁は虹、真ん中が白

xy 色度図を「色の地図」だと思うと分かりやすい。380nm の紫から 700nm の赤まで、単色光(虹の1本1本の色)を順に打っていくと、馬蹄形の曲線ができる。これがスペクトル軌跡で、地図でいえば海岸線にあたる。馬蹄形の底を結ぶ直線は純紫軌跡と呼ばれ、赤と紫を混ぜた赤紫の色が並ぶ。単色光には赤紫が無いので、ここだけは直線になる。

実在する光の色は、すべてこの馬蹄形の内側に入る。縁に近いほど鮮やかで、内側に入るほど白っぽい。真ん中あたりに昼光の白(D65 なら x=0.3127, y=0.3290)がある。馬蹄形の外側は、どんな光を混ぜても作れない「実在しない色度」だ。

ディスプレイの赤・緑・青の原色は、この地図の上の3点になる。3色を混ぜて作れるのは、3点を結んだ三角形の内側だけ。これが色域だ。sRGB の三角形より外にある鮮やかな緑は、sRGB のモニターでは原理的に表示できない。詳しい定義は Wikipedia「CIE 1931 色空間」 と Wikipedia「色域」 が日本語でまとまっている。軌跡のもとになる等色関数の数表は、ロンドン大学の CVRL(Colour & Vision Research Laboratory) で公開されている。

u′v′ 色度図——目の感じ方に合わせて引き伸ばした地図

xy 色度図には弱点がある。人の目が「同じくらい違う」と感じる色の差が、図の上では場所によって全然違う長さになるのだ。とくに緑の領域は図の上で大きく引き伸ばされていて、少し動いても見た目はほとんど変わらない。逆に青〜紫の領域は詰まっていて、わずかな距離で色が大きく変わる。地図でいえば、メルカトル図法で極地方が巨大に描かれるのと同じ歪みだ。

この歪みを減らすために、1976年に CIE は u′v′ 色度図(CIE 1976 UCS)を定めた。xy から次の式で変換する。

u′ = 4x / (−2x + 12y + 3)
v′ = 9y / (−2x + 12y + 3)

分子も分母も x と y の1次式なので、xy 図の直線は u′v′ 図でも直線のまま写る。つまり三角形は三角形のまま、形と大きさだけが変わる。緑の隅が縮み、青の隅が広がるので、同じ2つの三角形でも面積の比が xy と u′v′ で変わる。色域の広さを比べた数字が図によって違うのはこのためだ。u′v′ の成り立ちは Wikipedia「CIELUV」(英語)に詳しい。

主波長と刺激純度——白から見てどの方向か、縁にどれだけ近いか

色度図の上の1点は、白色点からの「方向」と「距離」でも言い表せる。白色点から入力した点に向けて半直線を伸ばし、スペクトル軌跡にぶつかったところの波長が主波長だ。その色が「どの単色光の色み」かを表す。白色点から入力点までの距離を、白色点から軌跡までの距離で割ったものが刺激純度で、0%なら白、100%なら単色光そのもの。

刺激純度 = |白色点→入力点| / |白色点→軌跡との交点| × 100 [%]

赤紫の色は、半直線が先に純紫軌跡にぶつかってしまい、単色光の波長が決まらない。そのときは半直線を逆向きに伸ばして軌跡と交わる波長を補色主波長として示す。どちらも「白」の取り方で値が変わる量で、定義は CIE の Colorimetry, 4th Edition(CIE 015:2018) による。

面積比とカバー率、xy と u′v′——数字の読み違いで起きること

仕様書の%を読み違えると、買い物や仕事の判断がずれる。押さえる軸は2本だ。

面積比とカバー率は別の量

「sRGB 比」「NTSC 比」は、三角形の面積どうしの比だ。どこにあるかは問わず、大きさだけを比べる。一方「sRGB カバー率」は、基準の sRGB の三角形のうち何%を手持ちの三角形が覆っているかを表す。

この違いが表に出る典型が、NTSC (1953) の原色だ。面積は sRGB の 141.19%(xy)もあるのに、sRGB カバー率は 96.65% で100%に届かない。sRGB の青の頂点 (0.15, 0.06) が、NTSC の三角形のわずかに外へはみ出すからだ。面積が広いことは、基準を全部覆っていることを意味しない。「NTSC 比◯%」の大きいパネルが、sRGB の濃い青を出しきれないことは普通に起こる。

同じパネルでも xy と u′v′ で数字が変わる

P3 の三角形の面積は、xy で計算すると sRGB の 135.65%、u′v′ で計算すると 125.56% になる。差はほぼ10ポイント。メーカーAが xy、メーカーBが u′v′ で書いていたら、同じパネルでもBのほうが狭く見える。仕様書にどちらの図で計算したかが書いてあることは少ない。

読み違いが起こす実害

よくある失敗は、「NTSC 72%」のノートPCを「sRGB 相当だから写真の色校正に使える」と判断してしまうことだ。72%は面積の比で、sRGB を全部覆っている保証にはならない。sRGB の端にある濃い緑や青が画面に出ないまま補正を詰めると、印刷所や他人の画面で見たときに色が転ぶ。

逆向きの事故もある。動画の納品規格が ITU-R BT.709(原色は sRGB と同じ)なのに、P3 の広い画面だけを見て彩度を上げていくと、画面では気持ちよく見えた緑や赤が、納品先の BT.709 のモニターでは頭打ちになって階調が潰れる。sRGB の規格は IEC 61966-2-1、BT.709 と BT.2020 は ITU-R の勧告 で原色の座標まで定められているので、自分の画面がどの三角形を出せるのかを先に確かめておくのが安全だ。

もう1つ、LED のデータシートにある「主波長 525nm」は、色度図の上の方向を表す主波長のことで、スペクトルがいちばん強い波長(ピーク波長)とは別物だ。ピーク波長だけで部品を比べると、並べて点けたときの色の違いを説明できない。

活躍する場面——モニター選びから LED の測色まで

モニターやノートPCを買う前に。 レビュー記事やメーカーの資料に原色の色度座標が載っていれば、それを入れるだけで sRGB・Adobe RGB・P3・BT.2020 のカバー率と面積比が出る。「DCI-P3 95%」がカバー率なのか面積比なのか書かれていないときも、両方を並べれば当たりがつく。

写真や動画を納品する前に。 作品に使った鮮やかな色の RGB を入れて、sRGB の三角形の外に出ていないかを見る。外に出ていれば、sRGB の画面では近い色に丸められてしまう。Web 用・印刷用・動画用で、どこまで攻めてよいかの線引きに使える。

LED や照明の測色値を確かめるときに。 測色計や分光器が出す xy や XYZ をそのまま入れれば、色度図のどこにあるか、主波長が何 nm か、白色点からどれだけ離れているかが分かる。データシートの主波長と実測を突き合わせる用途にも向く。

デザインの指定色が Display P3 だったときに。 iPhone や Mac で作られたデザインの HEX が Display P3 の値だと、同じ数字でも sRGB の画面では別の色になる。色空間を切り替えて色度座標を比べれば、どれだけずれるのかが数字で見える。

基本の使い方——3ステップで色を地図に置く

① 入力のしかたを選んで値を入れる。 手元の数字の種類で選ぶ。画面の色なら HEX か RGB(あわせて sRGB・Display P3・Adobe RGB・BT.2020 のどの色空間の値かを選ぶ)、測色計の値なら xy か XYZ、照明の色なら色温度(K)だ。XYZ は Y=100 でも Y=1 でも同じ結果になる。

② 色度座標と色度図を読む。 xy と u′v′ の色度座標、XYZ、主波長と刺激純度、5つの色域それぞれの内か外かが表示される。色度図には馬蹄形のスペクトル軌跡と色域の三角形、白色点、入力した点が描かれ、xy と u′v′ の図を切り替えられる。主波長の基準にする白色点は D65・D50・A・C・E・DCI から選べる。白色点を変えて動くのは主波長・刺激純度だけで、色度座標そのものは変わらない。

③ 必要なら手持ちのディスプレイの色域を調べる。 手持ちのディスプレイの色域を調べる項目をオンにして、仕様書の原色の座標(赤・緑・青の x と y)を入れる。sRGB・Adobe RGB・P3・BT.2020・NTSC の原色を流し込むこともできる。sRGB に対する面積比、NTSC 比、4つの色域のカバー率が、xy と u′v′ の両方で並ぶ。

具体的な使用例・検証データ——10ケースで読み方を確かめる

ここからは実際に入力した値と、その結果の読み方を10ケース並べる。特記がなければ白色点は D65 だ。

ケース1: sRGB の赤 #FF0000

  • 入力: HEX #FF0000(sRGB)
  • 結果: x=0.6400, y=0.3300、u′=0.4507, v′=0.5229、Y=21.26、主波長 611.3nm、刺激純度 91.7%
  • 解釈: sRGB の赤の原色そのものなので、xy は規格の座標 (0.64, 0.33) にぴったり乗る。純度が100%に届かないのは、sRGB の赤がスペクトル軌跡から少し内側にあるからで、「画面の真っ赤」でも単色光ほど鮮やかではないことが数字で分かる。

ケース2: マゼンタ #FF00FF は補色主波長で表す

  • 入力: HEX #FF00FF(sRGB)
  • 結果: x=0.3209, y=0.1542、主波長は出ず、補色主波長 549.1nm、刺激純度 68.8%
  • 解釈: 赤紫は単色光に無い色なので、白色点から伸ばした半直線は純紫軌跡にぶつかる。反対側に伸ばすと 549.1nm の緑に当たる。sRGB の緑 #00FF00 の主波長も同じ 549.1nm になる。マゼンタは赤と青の和、白は赤・緑・青の和なので、マゼンタと緑は白色点をはさんで一直線に並ぶ。補色の関係が図の上の位置関係そのものだと分かる例だ。

ケース3: Display P3 の赤 (255, 0, 0) は sRGB の外

  • 入力: RGB 255, 0, 0(Display P3)
  • 結果: x=0.6800, y=0.3200、主波長 614.9nm、刺激純度 100%、sRGB の外・Adobe RGB の外・P3 の内側
  • 解釈: 同じ「255, 0, 0」でも、色空間が Display P3 なら sRGB の赤 (0.64, 0.33) より外側の点になる。sRGB の画面では表示しきれないので、色見本は近い色に丸めて描き、その旨の注記が出る。iPhone で作ったデザインの赤が、他の画面でくすんで見える理由がこれだ。

ケース4: Adobe RGB の緑 (0, 255, 0) は P3 にも入らない

  • 入力: RGB 0, 255, 0(Adobe RGB)
  • 結果: x=0.2100, y=0.7100、主波長 534.6nm、刺激純度 83.8%、sRGB の外・P3 の外・BT.2020 の内側
  • 解釈: 「P3 は Adobe RGB より新しくて広い」と思われがちだが、緑の頂点だけ見ると Adobe RGB (0.21, 0.71) のほうが P3 (0.265, 0.69) より外にある。印刷や写真で Adobe RGB の緑を使い切ったデータは、P3 のディスプレイでも出しきれない。広さの比較は面積1つでは決まらず、どの隅が出ているかで変わる。

ケース5: BT.2020 の緑は単色光そのもの

  • 入力: RGB 0, 255, 0(BT.2020)
  • 結果: x=0.1700, y=0.7970、主波長 531.99nm、刺激純度 100%
  • 解釈: ITU-R BT.2020 は緑の原色を 532nm の単色光と定めている。計算した主波長は 531.99nm で、規格の値と 0.01nm しか違わない。BT.2020 の三角形の頂点がスペクトル軌跡に乗っていることを、数字で確認できる。

ケース6: 同じ xy でも白色点で主波長と純度が変わる

  • 入力: xy (0.45, 0.41)
  • 結果(白色点 D65): 主波長 583.9nm、刺激純度 61.1%
  • 結果(白色点 A): 主波長 580.8nm、刺激純度 3.5%
  • 解釈: 白熱電球の白(A光源、x=0.44757, y=0.40745)のすぐそばの色なので、A を基準にすると「ほぼ白」、昼光の D65 を基準にすると「かなり鮮やかな黄橙」になる。主波長と刺激純度は「どの白から見たか」込みの量で、色度座標 (0.45, 0.41) 自体はどちらでも同じだ。電球色の照明の下で色を語るなら A、昼光の下なら D65 と、場面に合わせて白を選ぶ意味がここにある。

ケース7: スペクトル軌跡の外は「実在しない」

  • 入力: xy (0.05, 0.90)
  • 結果: 軌跡の外、主波長・刺激純度とも出ない、どの色域にも入らない
  • 解釈: 馬蹄形の外側の点で、どんな光を混ぜても作れない色度だ。測色値を入れてここに来たら、x と y の取り違えや、XYZ の並び順の打ち間違いを疑うのが先になる。

ケース8: P3 パネルの面積比とカバー率

  • 入力: 手持ちの原色に DCI-P3(赤 0.680, 0.320/緑 0.265, 0.690/青 0.150, 0.060)
項目xyu′v′
面積比(対 sRGB)135.65%125.56%
NTSC 比96.08%—
sRGB カバー率100%100%
Adobe RGB カバー率88.25%93.62%
BT.2020 カバー率71.73%72.85%
  • 解釈: 「P3 は sRGB より約25%広い」は u′v′ の数字で、xy なら35%広い。sRGB は丸ごと覆っているが、Adobe RGB は緑の隅が足りずに88%台にとどまる。

ケース9: sRGB パネルの NTSC 比は 70.83%

  • 入力: 手持ちの原色に sRGB(赤 0.64, 0.33/緑 0.30, 0.60/青 0.15, 0.06)
  • 結果: NTSC 比 70.83%、P3 カバー率は xy で 73.72%・u′v′ で 79.64%、Adobe RGB カバー率は xy で 74.13%・u′v′ で 85.71%
  • 解釈: よく言われる「sRGB ≒ NTSC 72%」は、この 70.83% を丸めた目安だ。同じ sRGB パネルの P3 カバー率でも、xy と u′v′ で6ポイント近く違う。「P3 カバー率◯%」を比べるときは、どちらの図で計算したかがそろっていないと意味がない。

ケース10: NTSC (1953) は面積が広いのに sRGB を覆いきれない

  • 入力: 手持ちの原色に NTSC(赤 0.67, 0.33/緑 0.21, 0.71/青 0.14, 0.08)
項目xyu′v′
面積比(対 sRGB)141.19%114.69%
sRGB カバー率96.65%89.96%
P3 カバー率89.93%82.27%
  • 解釈: 面積は sRGB の1.4倍あるのに、sRGB カバー率は100%にならない。sRGB の青の頂点 (0.15, 0.06) が NTSC の三角形の外にはみ出すためだ。しかも u′v′ では青の隅が拡大されるので、欠けの割合が 89.96% まで大きく見える。面積比が100%を超えているのにカバー率が足りない組み合わせでは、「面積比とカバー率は別の数字」という注意も表示される。

仕組み・アルゴリズム——入力から色度図とカバー率まで

候補手法の比較

カバー率の計算には2つのやり方がある。1つは図の上に細かい格子点(または乱数の点)をばらまき、基準の三角形に入った点のうち手持ちの三角形にも入る点を数えるモンテカルロ法。実装は簡単だが、点の数で精度が決まり、99.98% と 100% のような差を安定して見分けるには膨大な点が要る。もう1つは、2つの三角形の共通部分を多角形として厳密に切り出す方法だ。三角形はどちらも凸なので、Sutherland–Hodgman のクリッピング で共通部分が正確に求まり、面積は靴ひも公式で出る。誤差は浮動小数点の丸めだけなので、こちらを採った。u′v′ のカバー率も、上で触れたとおり三角形が三角形のまま写るので、頂点だけを u′v′ に変換して同じ切り出しをかければよい。

主波長の計算では、スペクトル軌跡の数表を 5nm 刻みにするか 1nm 刻みにするかを比べた。D65 から各波長の方向に純度 30/60/90% の点を作って総当たりで比べると、5nm 表を線形補間した主波長と 1nm 表との差は、480〜650nm では最大 0.2nm だが、418nm 付近で 0.5nm、軌跡が密に詰まる赤端の 698nm 付近では 1.2nm に広がった。そこで CVRL の CIE 1931 2° 視野の等色関数(1nm)から 380〜700nm の 321点を機械的に生成し、そのまま使っている。

計算フロー

1. 入力 → XYZ(Y=100 にそろえる)
   HEX/RGB: 0〜255 を 0〜1 に → 伝達関数の逆で線形化 → 行列 M を掛ける
   xy     : X = x/y×100, Y = 100, Z = (1−x−y)/y×100
   XYZ    : そのまま
   色温度 : 黒体軌跡の近似式(Kim et al. 2002)で xy → 上と同じ
2. XYZ → xy → u′v′(基礎の節の式)
3. スペクトル軌跡・5つの色域の三角形に対する内外判定
4. 白色点からの半直線と軌跡の交点 → 主波長(補色主波長)・刺激純度
5. 原色の入力があれば、三角形の面積比とカバー率(xy・u′v′)

RGB の線形化は色空間ごとに違う。sRGB と Display P3 は IEC 61966-2-1 の区分関数(暗部が直線、それ以外が2.4乗)、Adobe RGB は 563/256 乗の純粋なべき乗、BT.2020 は ITU-R BT.2020 の伝達関数(OETF)の逆関数を使う。たとえば sRGB の 128, 128, 128 は線形化すると約0.2159 になり、Y=21.59 という中間グレーの輝度率が出る。画面の「真ん中の明るさ」は物理的な光の量では2割ほどしかない。

RGB→XYZ の行列 M は、規格の数表を写すのではなく、原色の xy と白色点から毎回組み立てる。

P = [XYZ(赤) XYZ(緑) XYZ(青)]   // 各原色を Y=1 で XYZ にして列に並べる
S = P⁻¹ · XYZ(白色点)           // 3原色を全部1にしたとき白になる倍率
M = P · diag(S)

こうすると4つの色空間を同じ手順で扱える。sRGB で組み立てた行列は 0.412391 / 0.357584 / 0.180481 …となり、IEC 61966-2-1 に載っている4桁の行列と一致する。

許容幅を入れた理由

規格の原色をそのまま入れると、計算上はスペクトル軌跡のわずかに外に出るものがある。P3 の赤や BT.2020 の3原色がそうで、刺激純度を計算すると 100.02〜100.09% になる。数表の丸めと軌跡の補間による誤差だが、そのままだと規格の原色が「実在しない色度」と判定されてしまう。そこで軌跡の内外判定には xy で 1e-3 の許容幅を持たせ、その内側で100%を超えた純度は100%に丸めている。色域の三角形の内外判定にも 1e-4 の許容幅を入れ、頂点や辺の上にある原色を内側に数える。

無彩色の判定も同じ考え方だ。D65 の三刺激値 (95.047, 100, 108.883) から出る xy は (0.312727, 0.329023) で、D65 の定義値 (0.3127, 0.3290) と約 3.5×10⁻⁵ ずれる。判定の閾値を極端に小さくすると、白を入れたのに「主波長 578.7nm・純度 0.01%」という意味のない値が出る。白色点から 5×10⁻⁴ 未満の点は無彩色として、主波長と純度を出さない。

検算

いちばん強い検算は BT.2020 だ。この規格は3原色を単色光 630nm・532nm・467nm と定めている。それぞれの原色を入れて主波長を計算すると 630.02nm・531.99nm・467.10nm になり、どれも 0.1nm 以内で一致する。軌跡のデータ、交点の計算、区間内の補間の3つがそろって正しくないと、この一致は出ない。

計算例: #FF0000 から主波長まで

  1. HEX #FF0000 → R=255, G=0, B=0 → 0〜1 にすると (1, 0, 0)。sRGB の伝達関数の逆を通しても 1 は 1、0 は 0 のまま。
  2. 行列の第1列(赤の列)だけが効く: X=0.412391, Y=0.212639, Z=0.019331。Y=100 基準にそろえて X=41.24, Y=21.26, Z=1.93。
  3. 合計 64.44 で割って x=0.6400, y=0.3300。規格の赤 (0.64, 0.33) に戻る。u′v′ にすると (0.4507, 0.5229)。
  4. D65 (0.3127, 0.3290) から (0.64, 0.33) へ半直線を伸ばすと、ほぼ真横に右へ進み、スペクトル軌跡の 611nm 台の区間にぶつかる。区間内を線形補間して主波長 611.3nm。
  5. 白色点から入力点までの距離は、白色点から軌跡までの距離の 91.7%。これが刺激純度になる。

色度図ツールを並べてみて——1画面に集めたものと、色のツールどうしの役割分担

日本語で色度座標を計算できる道具がほとんど無いことは、冒頭の「なぜ作ったのか」で触れたとおりだ。ここでは、実際に見つかる道具と並べたときに何が違うのかを事実ベースで書いておく。

大学の研究者が公開している日本語の JavaScript ツールは、Yxy や u′v′ の分布を図に描くところまでは揃っている。ただ、RGB の色空間を切り替えて同じ (255, 0, 0) が図のどこに落ちるかを見比べたり、仕様書の原色からカバー率を出したりは1画面ではできない。英語圏のツールには xy 変換と色域の図を持つものが多いが、面積比とカバー率を並べ、さらに xy と u′v′ の両方で出すものは見当たらなかった。

このツールが1画面に集めたのは次の5つだ。

  • RGB・HEX の色空間を4種類から選べる。sRGB・Display P3・Adobe RGB・BT.2020 のそれぞれの伝達関数と行列で XYZ に戻すので、同じ数字の RGB でも色空間ごとに別の点として図に置ける
  • 主波長が決まらない色にも数字を返す。紫〜赤紫の色は補色主波長で表し、基準の白色点も6種類から選べる
  • 5つの色域の内外を一度に判定する。sRGB・Adobe RGB・P3・BT.2020・NTSC (1953) のどれに入るかを並べて見せる
  • 手持ちのパネルの原色から、面積比とカバー率を xy と u′v′ の両方で出す
  • スペクトル軌跡の外に出た入力を「実在しない色度」として止める。測色値の転記ミスにその場で気づける

既存の色のツールとは、扱う範囲で役割を分けている。光源の色温度から色度座標を出す色温度の変換ツールは、このツールの色温度入力と同じ近似式(Kim et al., 2002)を共有していて、同じ K を入れれば同じ xy が出る。2色の差を Lab で測るのは色差ΔEのツール、マンセル値や日塗工の番号との行き来はマンセル変換、混色の配合を試すのは色混合シミュレーター、画面上の色を拾うのはスポイト、文字と背景の読みやすさはコントラストチェッカーの担当だ。どれも sRGB の中の色を扱っている。sRGB の外側、つまり色度図そのものと色域の境目を見るのが、このツールの持ち場になる。

17人の目から始まった色度図——NTSC 比と BT.2020 の赤をめぐる小話

色度図の馬蹄形は17人の等色実験で決まった

世界中のディスプレイの仕様書が拠りどころにしている CIE 1931 の等色関数は、1920年代後半に行われた2つの実験を合わせて作られた。ロンドンの Imperial College で W. D. Wright が調べた観察者は10人、英国立物理学研究所(NPL)で J. Guild が調べたのは7人。合わせて17人の目が、いまの色度図の馬蹄形を決めている(CIE 1931 color space - Wikipedia)。

たった17人で大丈夫なのかと思うが、Guild は論文の中で、2つのグループの結果が予想以上によく一致したので、どちらも「標準的な目」にかなり近いはずだと書いている。1964年には視野を広くとった 10° の標準観測者も作られたが、ディスプレイの規格や仕様書の色度座標はいまも 1931 年の 2° 視野が基準で、このツールもそれに従っている。

もう誰も映していない NTSC の原色が、仕様書に残り続ける

NTSC (1953) の原色は、カラーテレビ放送を始めるにあたってブラウン管の蛍光体を想定して決めた値だ。ところが当時の赤の蛍光体は暗く、動くものに尾を引くような残像も出た。1950年代の終わりには、受像機の蛍光体は鮮やかさを削って明るさを取る方向へ流れ、米国の放送用モニターはのちに SMPTE C という一回り狭い原色にそろえられた(NTSC - Wikipedia(Colorimetry の節))。1953年の三角形をそのまま映す画面は、早いうちにほとんど無くなっている。

それでも液晶パネルの仕様書には「NTSC 比 72%」が残っている。比較の物差しとして一度定着した呼び方は、物差しの元になった機械が消えても残るものらしい。最近は sRGB 比や P3 カバー率を併記するメーカーが増えたが、手ごろなノートPCほど NTSC 比だけが載っていることがある。ちなみに NTSC (1953) の白は C 光源で、このツールの白色点の選択肢に「C(旧昼光)」が残っているのはそのためだ。

BT.2020 は P3 をまるごとは包んでいない

4K/8K 放送や HDR の BT.2020 は、3原色を単色光そのものの位置に置いた大きな三角形で、ほかの色域はすべて中に収まると思われがちだ。実際 sRGB と Adobe RGB は 100% 包まれる。ところが P3 のカバー率は 99.98% で、ほんのわずかに足りない(規格は ITU-R BT.2020)。

はみ出すのは P3 の赤だ。P3 の赤はほぼスペクトル軌跡の上、つまり馬蹄形の縁に乗っている。一方 BT.2020 の赤と緑の頂点も縁の上にあり、その間の辺は縁の2点を結ぶ弦になる。馬蹄形の縁はわずかに外へふくらんでいるので、弦は縁よりほんの少し内側を通り、縁に貼りついた P3 の赤がその外へ顔を出す。図の上では線が重なって見分けられないほどの差で、数字にして初めて分かる種類のずれだ。

「sRGB は人が見える色の約36%」は何の36%か

ネットでよく見かける「sRGB は人の目に見える色の35.9%」という数字も、前提が書かれていないことが多い。まず色度図は明るさを外した図なので、そこでの面積の比は「色の数」の比ではない。そのうえで馬蹄形に対する面積比として計算し直してみると、このツールの標準色域の比較表では xy で測っても u′v′ で測っても35.9%より小さく、しかも2つの数字は互いに近い。軌跡を何 nm で打ち切るかも、xy では赤と紫の隅に点が寄り集まるのでほとんど効かない。35.9%がどの前提から出た数字なのかは再現できなかったので、このツールの比較表では「前提が書かれておらず、表の値とは一致しない数字」として注記するに留めている。

仕様書の色域の%を読むときのコツ

  • %の隣にある言葉を先に探す。 「カバー率」「coverage」なら共通部分の比、「比」「ratio」「area」なら面積の比だ。「(CIE1976)」「u′v′」と添えてあれば u′v′ の図、「(CIE1931)」「xy」なら xy の図で測っている。2つの数字の違いそのものは上の「面積比とカバー率」の節で扱ったので、ここでは見分け方だけ書いておく。どちらの図か書いていなければ、仕様書の原色を手持ちの色域に入れて xy と u′v′ の欄を見比べ、仕様書の%に近いほうがメーカーの使った図だと推定できる
  • 小数点以下の差で製品を選ばない。 仕様書の原色は小数3桁で書かれるのが普通で、末尾の桁を丸めただけでカバー率の小数点以下は動く。測り方や個体差でも同じくらいは動くので、カタログの1%前後の差で優劣はつけないほうがいい
  • 色見本の明るさは当てにしない。 HEX と RGB 以外の入力では、色見本は色度だけを見せるために明るさを目いっぱい上げて描いている。XYZ の Y を小さく入れても見本は暗くならない。また見本は sRGB に丸めた近似なので、P3 の画面で見ても P3 の色にはならない
  • 自分の画面を測るなら、赤・緑・青を1色ずつ全面に出す。 測色計で原色の xy を取るときは、純色の赤・緑・青をそれぞれ画面いっぱいに表示し、OS やブラウザのカラーマネジメントを通らない状態で測る。通ってしまうと、パネル本来の原色ではなく sRGB に寄せたあとの色を測ることになり、広色域のパネルほど狭く出る

色度座標・色域カバー率のよくある質問

仕様書に原色の色度座標が載っていないときはどうすればいいか

手がかりは2つある。ひとつはモニターのレビュー記事やメーカーの技術資料に載っている実測値で、赤・緑・青の xy が表になっていればそのまま手持ちの色域に入れられる。もうひとつは標準の色域の原色を呼び出して仮の値にする方法で、「DCI-P3 95%」としか書いていないパネルなら、P3 の原色を入れておけば他の色域との関係の見当はつく(実物はそれより少し狭い)。逆に、仕様書の「sRGB 比◯%」や「P3 カバー率◯%」から原色を逆算することはできない。面積やカバー率が同じになる三角形は、形を変えていくらでも作れるからだ。

色温度を入れただけなのに「補色主波長」が出たのはなぜか

紫〜赤紫の側の色は単色光に無いので、反対側の波長(補色主波長)で表す。読み方は「その波長の光と反対の方向に色が寄っている」だ。意外なのは白に近い色でも出ることで、色温度 6504K を白色点 D65 で見ると、補色主波長 543.9nm・刺激純度 2.2% になる。D65 は黒体の軌跡よりわずかに緑寄りの位置にあるので、6504K の黒体はそこから見るとほんの少しだけ赤紫側に寄るからだ。純度が数%しかなければ、色の向きを示しているだけで、見た目はほぼ白と読んでいい。

測色計の値(Yxy や XYZ)はそのまま入れていいか

そのまま入れていい。Yxy で出てくる測色計なら、x と y だけを xy の入力に入れればよく、Y(輝度)は色度には効かない。XYZ で出てくるなら3つとも XYZ の入力に入れる。Y が 1 基準でも 100 基準でも cd/m² の絶対値でも、比が同じなら同じ色度になる(各値の上限は 10000)。気をつけたいのは2点。測色計の観測者が 10° 視野に設定されていると、このツールの 2° 視野の軌跡と前提がずれる。もうひとつは X と Y、x と y の取り違えで、軌跡の外に出たと表示されたら、まず転記を疑ってほしい。

主波長を出すときの白色点はどれを選べばいいか

白色点を替えても xy・u′v′・色域の判定は変わらず、動くのは主波長と刺激純度だけだ。画面の色を見るなら D65 のままでいい(sRGB・P3・Adobe RGB・BT.2020 はどれも白が D65)。LED のデータシートの主波長と突き合わせるなら、等エネルギー白の E を基準にしていることが多いので E に切り替える(Dominant wavelength - Wikipedia)。データシートの注記に基準の白が書いてあればそれに合わせる。基準しだいで純度は何倍も変わるので、主波長を他人の数字と比べるときは、どの白から見た値かを必ずそろえたい(使用例の「同じ xy でも白色点で主波長と純度が変わる」ケースがその典型だ)。

入力した色や手持ちのパネルの原色は、どこかに送られるのか

送られない。計算はすべて開いているブラウザの中で完結していて、入力した HEX・RGB・測色値・原色の座標をサーバーに送ったり、どこかに保存したりはしていない。発売前の製品の原色や、社内で測ったパネルの実測値を入れても外には出ないので、仕様の検討段階の数字でも気にせず試せる。色度図や結果をほかの人と共有したいときは、結果をコピーして自分で渡す形になる。

まとめ:%の正体は、馬蹄形の上の三角形

仕様書の「NTSC 72%」も「sRGB 比」も「P3 カバー率」も、同じ色度図の上に置いた三角形どうしの関係だ。このツールは、色1つの座標と主波長、手持ちのパネルの色域を同じ図に置き、面積比とカバー率を xy と u′v′ で並べる。

光源の色温度から色度を出すなら色温度⇄色度・RGB変換ツール、2色の差を数値で比べるなら色差ΔE計算ツール(CIE76 / CIEDE2000)、マンセル値や塗料の番号に置き換えるならHEX⇄マンセル⇄日塗工 変換、混色の配合を試すなら色混合シミュレーターが向いている。画面の色を拾うのはスポイトカラーピッカー、文字の読みやすさの確認はWCAGコントラストチェッカーの担当だ。

使っていて気になった点や、追加してほしい色域があればお問い合わせページから気軽に送ってほしい。

M

Mahiro

Mahiro Appの開発者。モニターを買い替えるたびに『NTSC 72%』『sRGB 100%』『DCI-P3 95%』を並べて迷っていた。三角形を自分で描いてみたら、数字の意味がやっと揃った。

運営者情報を見る

© 2026 CIE色度図プロッター