少しだけ読んで考えたこと

この本の中には数学的な背景の話が、そこそこいっぱい書かれているので、かなり厳密な議論がなされている。もちろん端折っているのだけれど。さらに、ただの線形代数とかではなくて、そこに誤差の議論やらオーダーの議論等が書かれている。良い本だと思う。
ただ問題はあって、なにぶん時代が古い。僕が生まれる前である。ここに出てくるコンピュータはIBM 360だったりする。浮動小数点の表記方法も驚きである。IEEEの規格なんてまだ先なのだから仕方が無い。
例えば浮動小数点の表記方法であれば僕は良く知っているし(というより、もう見たくない)、現在の状況についてもかなり分かるので問題は無い。ただ、今後の議題となる数値計算については正直分からないことが多いはずで、そこに古い時代の話が書かれていた場合はそれを理解せずに読むことになる。
古典としての価値はあるのだろうけれども、さらに良い手法についての存在を知らないのは致命的だ。もちろん、例えば相対論やら量子論やらをやる前に古典(ニュートン)力学の分野をきちんと把握することは重要なのだろうけれども、数値計算の分野がどこまでそれに該当するかは不明だ。
で、さらに実はこの本を使って解こうと思っていた問題が、考えてみると一瞬で解けることが分かった。こうなるとあえてこの本を読む必要があるかは不明。もっと良い本があれば、明日S田先生に聞いてみたい。
さて、それはさておき、解こうと思っていた問題について少し。画像のRGB値に対して、グレイスケールは以下の式で表される。

R * 0.298912 + G * 0.586611 + B * 0.114478

正直、この係数にどこまでの精度があるのかは知らないけれども、この係数の根拠と言うのは、人間の目にそのように見えるというだけの理由である。
ただ、コンピュータで画像処理を行うときに、必ずしもこの係数が上記のものである必要は無い。というより、例えばRGB値が大きく異なる二つの点があったとする。例えば(255, 0, 0)と(0, 128, 0)だと考えればいい。明らかに緑っぽい色だけれども、これを上の式に当てはめると同じような値が出てきてしまうことが分かるだろう。で、この二点を区別する必要がある場合には、上記の式は使えない。
では、これをどのようにすれば良いかと言えば、一般化された式である

R * a + G * b + B * c   s.t. a + b + c = 1

と言うものに対して、最適な値を決定すればよい。
で、今日考えた内容はこのabcは全て0以上であると言う条件を付加する必要があるかどうか、という問題。いや、確かに付加しないとまずいような気はする。Grayscale値が負になるなんて本来はあってはならない。さらに、場合によると解が無限大とかにもなりかねない。だけれども、もし仮にそうでないという前提があれば?ひょっとしてこのa, b, cの値は負でも良いのでは無いだろうか。
これについてはまた考えなくてはならないだろうなあ。