ミス発覚

数日前の日記(id:succeed:20060526)において、
 (\vec{x}, \vec{y}) = (a'  x_R  y_R, b'  x_G  y_G, c'  x_B  y_B)  s.t. \sqrt{a'} + \sqrt{b'} + \sqrt{c'} = 1
ということを書いた。書いたのだが、実は間違っているのではないだろうか、と今さっき気づいた。
この背景にあるのは、 GrayVector(\vec{x}) = (a \ast x_R, b \ast x_G, c \ast x_B)   s.t. a + b + c = 1という式だ。確かに、GrayScaleとの兼ね合いを考えると多少正しいような気がするのだが、やっぱりおかしい。
何がおかしいかといえば、(255, 255, 255)という色のベクトルの大きさが一定にならない。すなわち、最大のベクトル長が一定でないというのは、あまり良くないだろう。
これを修正するためには、 (a \ast x_R, b \ast x_G, c \ast x_B)   s.t. a^2 + b^2 + c^2 = 1というようなa, b, cを求めればよくなる。
そうなると、結局のところ、
 (\vec{x} \ast \vec{y}) = (a' \ast x_R \ast y_R + b' \ast x_G \ast y_G + c' \ast x_B \ast y_B)   s.t. a' + b' + c' = 1
というa', b', c'を求めることになる。 \sqrt{a'} + \sqrt{b'} + sqrt{c'} = 1というような奇妙な式を使わなくて良い。
今日の発表資料に追記しなくては。