2009-04-10[n年前へ]
■分光スペクトル・色処理用のMathematica 7.0用ライブラリ
以前、「光スペクトル操作用のMathematicaライブラリ」というものを作りました。また、その習作として「スペクトル処理で遊ぶためのMathematicaノートブック」というノートブックを書いたことがあります。さまざまなスペクトル分布と持つ可視光を重ね合わせたり、塗り重ねたりしたとき、どんな色に見えるかを簡単に計算できる、しかもなるべく単純でいて応用しやすいようにしたい、と思いながら書いてみたライブラリです。
たとえば、D65光源のもとで、赤紫色の絵具を重ね塗りしていったときの色の変化を CIE Lab 空間のグラフで眺めるには
labPlot[ Map[lab,Table[ transmissionSpector[D65, magentaFilter, d], {d,0,10.0,0.1}] ] ];というコードを書けば良い、という具合です。ちなみに、「スペクトルデータ」はすべて純関数で表現する仕様にしてあるので、上記のコード中のD65もmagentaFilterも実体としては「関数」です。そのため、波長の離散化も不要ですし、((D65[#]+D50[#])/2)&といったような数式風に書けば、D65とD50の平均のような照明光を表現することもできます。
ちなみに、このライブラリはMathematica 5.2で作ってみたものです。最近、Mathematica 7.0も使いだしました。すると、グラフィックス関連の関数の機能変更がたくさんあって、以前のライブラリでは表示関係のライブラリが動作しないことに気付きました。そこで、Mathematica 7.0用の「光スペクトル操作用のMathematicaライブラリ for Mathematica 7.0」を(まずは)適当に作ってみました。それが、ColorLib_amature on 7.0.nb (263kB)になります。
ところで、Mathematica 7.0では、インタラクティブなアプリケーションも簡単に作成できるということなので、ColorLib_amature on 7.0.nbを使って、「D65光源の下で、白色紙の上にシアン色とマジェンタ色を塗り重ねていくとどんなスペクトルになるか」を表示するインタラクティブ・アプリケーションを作ってみました。その動作画面が、下の動画になります。上のスライダーがシアンを塗り重ねる量で、下のスライダーがマゼンタを塗り重ねる量を示しています。それぞれのスライダーを動かすと、「どんなスペクトルになるか」がグリグリと表示されます。
さて、次回は、Mathematicaで作ったアプリケーションを誰でも使える形にして配布できるようにしてみたい、と思います。