ビットマップのグレースケール化

[戻る]
ぱて 2005/06/27(月) 23:05:49
初めての質問になります。よろしくお願いします。

ビットマップの元画像データを変えないで
他のカラーパレットから参照してグレースケール化するにはどうすれば
良いでしょうか?
また、16bit以上のビットマップにカラーパレット情報を付加して
参照するようにできるのでしょうか?

VC++6.0 WinXP上で作成中です。

2005/06/28(火) 00:30:33
>ビットマップの元画像データを変えないで
>他のカラーパレットから参照してグレースケール化するにはどうすれば
>良いでしょうか?

>また、16bit以上のビットマップにカラーパレット情報を付加して
>参照するようにできるのでしょうか?

質問が二つありますが、どちらも内容が良く判りません
質問1では元画像のビットマップにはパレットがある前提なんでしょうか
質問2でのカラーパレット情報はどのようにして与えるのでしょうか?
Windows のDIB形式では8ビットカラー以下でないとパレットは存在できませんので
かなり意図が私には読み取れないのです

ぱて 2005/06/28(火) 07:35:33
情報が少なくて大変もうしわけなかったです。
他のパレットを参照するのは
8bitカラーのビットマップです。
元のパレットからとってきたRGBを参照してYUV変換してやり
その輝度値を元に0〜255まで並んだグレースケールのパレットから読み出し
たいのですが、元の格納データを書き換える方法しか分かりません。

DIB形式では8bit以下でしかパレットが存在できないのですか・・・
無理なことを聞いてすみませんでした。

ぱて 2005/06/29(水) 23:11:10
[[解決]]
失礼いたしました。

シャノン 2005/06/30(木) 00:25:12
#役に立たない情報ですが

> DIB形式では8bit以下でしかパレットが存在できないのですか・・・

16bit 以上の DIB でも、パレットを持つことはできます。
ただし、その場合でも各ピクセルは色データを表し、パレットインデックスではありま
せん。
要するに、持つことはできますが使われません。
じゃあ何故持っているのかというと、その画像を 8bit 以下に減色する際の指針を示す
ためです。
減色の際、そのパレットに含まれる色を使えば、元画像の再現率が高くなりますよ、と
いう程度のものでしかありません。

古いスレッドには追加発言できません。