質問: 波長からrgb変換 ある波長(または波長域)の光の色をディスプレイ上で再現するとしたら、 そのrgb値(またはcmyなど)はどのように求めればいいのでしょうか。 そもそも機械的に算出できる数式などあるのでしょうか。 どなたかご存知の方、ご教授下さい。
回答: #1さんの示されたリンクの18、19ページに載っている式は、xyz表色系からrgbへの変換公式です。 ですから、xyzの値がわかっていれば、rgbの値は求まるわけです。 しかし、問題は、計算の元となるxyzをどう求めるかです。 #1さんの示されたリンクの10ページにxyzを求める式があります。 ところが、積分の中にあるx(λ)、y(λ)、z(λ)(λは波長です)という関数(等色関数)は、数式で表わすことの出来ない、経験則による関数です。 たしかに、ディスプレイの性能評価に用いられる分光計でも、機器レンズに入射した光の色のxyz値が瞬時にわかるようになっています。 では、xyzは、どのように求まったか?という疑問が発生します。 その答えは、数値表です。 等色関数の数値表は、色彩科学の専門書に載っています。 (ネットで数値表を探しましたが、残念ながら見つかりませんでした) 要するに、xyzを求める式は、いかにも格好よい積分で表わされていますが、 その実体は、波長を例えば1ナノメートル区切りにして、各波長の等色関数を既定の数値表から探してきて、それと、光源のその波長における強度とを掛け算したものを求め、それを可視光の全ての波長について地道に足し算したものなのです。 以上は、光源の光が単波長でなく、色々な波長が混ざっているときの話ですが、 単波長については、実は、xyz表色系のグラフ(色度図)の中に、そのものズバリの波長値が書いてある場合があります。 #1さんの示されたリンクの中の図にも書いてありますが、ちょっと読みにくいので、別のリンクを紹介しましょう。 下記リンクの、上から2番目と3番目の図です。 http://www.shokabo.co.jp/sp_opt/spectrum/color3/color-d.htm ↓ 色度図の外周部分のうち、放物線に似た形でカーブしているところがありますが、そこに書いてある数値が波長を示しています。 ちなみに、外周部分のうち、直線になっている部分がありますが、そこは、現実にはない波長です。 色度図外周に近づくほど彩度が高い色(いわば原色、純色)であり、逆に、混色することによって色度図中央に近づくほど、彩度が低くなって白に近づいていきます。 なお、xyz値からの計算を経由せず、いきなりrgbの等色関数を示した数値表(グラフ)もあります。 下記は海外サイトですが、そのグラフが書かれています。 http://en.wikipedia.org/wiki/cie_1931_color_space (the cie 1931 rgb color matching functions というタイトルのグラフです。) 拡大版は下記。 http://upload.wikimedia.org/wikipedia/commons/3/36/cie1931_rgbcmf.png 以上ですが、 文献を探すとかの手間ひまかけず、とりあえず単波長についてxyzないしはrgbの値を求めたい、という目的であれば、上記で説明した図から眼で拾う方法しかなさそうです。