行列で色の値をを変換しよう

 コンピューター上で色を表現するには、しばしば、RGBという変数が用いられています。

 Rは赤(red)、Gは緑(green)、Bは青(blue)である。光の3原色と言われています。例えば、それぞれの変数を256段階で指定することによって、さまざまな色を表現しています。

 一方、人間の表現する色の場合には、色相(と鮮やかさと明るさ)で表現する場合が多いと、私は感じています。すなわち、ある色を見た場合には、「明るい赤」とか、「深い青」などど言うことが多いと思います。つまり、「黄色」を表現するのに光の三原色を用いて「緑+青」などとは表現しないということです。

 いま、ロボットのセンサーなどで、「RGB」3原色のそれぞれの光の量が測定されたとします。それを、人間が表現する場合に表現しやすい「色相」などの表現にするにはどうすれば良いでしょうか。これをする変換に「HSI変換」があります。

それは次の計算式で表されます。行列の積は大丈夫ですか?

ここで、arctanはtanの逆関数です。

Hは色相で、赤、だいだい、黄、、、というものを表します。MとMの比を角度に直しています。

MとMは中間パラメータです。

Sは鮮やかさです。大きいほど鮮やかということです。例えばRGBの3つの値が全て等しかったとすると、MとMも0になります。すると、このSも0になります。そしてこの値が0の場合には、その色は黒かグレーか白です。(グレーにもいろいろな明るさがありますが、、、)

で、その明るさはIです。R+G+Bです。

 

数学を学習する

英語学習リンク集

戻る