新規記事投稿 フォロー記事投稿 記事のキャンセル
From: Akitaka HOSOMI <hosomi@ga2.so-net.ne.jp>
Subject: 計算のさせ方
Date: 1999/05/12 05:52:51

妙なことで、わしなんかに相談されてもなぁ ...... ほにゃほにゃほにゃ〜〜


用途にもよるが、CCD カメラのカラー映像を RGB で PC のシステムメモリへ
撮り込めるキャプチャカードがある。

キャプチャした際、あとに続く処理のために、色の刺激値の変換をしておきた
い場合もあるだろさ( RGB → XYZ )。

     X = 0.412391 * R + 0.357584 * G + 0.180481 * B
     Y = 0.212639 * R + 0.715169 * G + 0.072192 * B
     Z = 0.019331 * R + 0.119195 * G + 0.950532 * B

 XYZ 系は、修正 RGB 系などとも呼ばれており、L*a*b* 表色系への通過点だ。

で、こんなヤヤこしい行列演算をやらせたいのかも知れないが、わたしゃ、当
人ではないので、動機についてのホントのところは、よくわからんよ。


でもねぇ、こんな浮動小数の計算を、ピクセル毎に、毎回、律儀に行ってたん
じゃ、処理なんか遅くて当たり前だって。

ほとんどの場合、キャプチャした時点で、RGB は各 8-bit に量子化されてる
から、係数と掛け算する項なんぞは、予め計算しておいて、その場で、テーブ
ル変換してやるのじゃ。その方が、ナンボか早いぞよ。

さらには、64 KB のテーブルなんてのを予め作成しておけば、

     0.412391 * R + 0.357584 * G

っつう計算も、1 回のテーブル変換で済んじまうんだぞ。


なんだか、このまま放っとくと、

     L = 116 * Power(Y/Yn,1/3) - 16

なんてのも、生真面目に毎回計算させそうな勢いなので、わたしゃ、ちょっと
心配してますよ。


本で扱ってるような実数の世界とは違うさ、 0 〜 255 までの整数が扱えりゃ、
それでええのよ、このばやいは。

ほれほれ、もそっと、肩の力を抜いてぇ .... コーヒーでも、どう?