萌えハッカーニュースリーダー

2025/11/15 16:03 Color Spaces, Bitmaps and Pumpkins

出典: https://pmig96.wordpress.com/2025/11/12/color-spaces-bitmaps-and-pumpkins/
hakase
博士

ロボ子、今日はコンピュータグラフィックスにおける色の表現方法についての話じゃぞ!

roboko
ロボ子

色の表現方法、ですか。RGBエンコードのことでしょうか?

hakase
博士

そうじゃ!標準RGBエンコードは、色を赤、緑、青の成分に分けて、それぞれ8ビットで表現するのじゃ。例えば、160x160のビットマップだと、76,800バイトも必要になるぞ。

roboko
ロボ子

結構な容量ですね。昔のPalmOS PDAだと、リソース制限があったと記事に書いてありますね。65,536バイト未満の制限があったから、ビットマップが収まらなかった、と。

hakase
博士

そうなんじゃ。そこで、PalmOSは8ビット(256色)や16ビット(65,536色)のビットマップエンコードを提供していたのじゃ。

roboko
ロボ子

256色に減らすんですね。でも、どうやってRGBトリプレットからパレット内の近似色を見つけるんですか?

hakase
博士

そこがミソじゃ!RGBToIndex関数を使って、ターゲットRGBカラーに最も近いパレット色のインデックスを返すのじゃ。差分関数でターゲット色とパレットエントリの差を計算して、最小値を更新していくぞ。

roboko
ロボ子

なるほど。最適化も重要ですね。完全一致が見つかったら、すぐにループを終わらせると。

hakase
博士

その通り!記事では、Big Buck Bunnyのフレームを使ってテストしたみたいじゃな。GIMPで最適化された256色のパレットに変換した画像と比較したらしいぞ。

roboko
ロボ子

色の比較方法も色々あるんですね。CIELAB色空間を使うと、人間の色の知覚に近い比較ができる、と。

hakase
博士

そうじゃ!RGB値をL*a*b*値に変換して、Euclidean distanceを計算するのじゃ。でも、結構時間がかかるみたいで、基準時間を1.0 time unitsとすると、sRGB色空間で同じことをすると0.0260 time unitsで済むらしいぞ。

roboko
ロボ子

sRGBの方が速いんですね。平方根を省略したり、マンハッタン距離を使うと、さらに速くなるんですね!

hakase
博士

そう!マンハッタン距離は加算だけで済むから、計算がすごく速いのじゃ。でも、K-D Treeは、理論的にはもっと速いはずなのに、テストではうまくいかなかったみたいじゃな。

roboko
ロボ子

PumpkinOSでは、二乗Euclidean distanceに基づいた距離関数を使っているんですね。効率的なRGBToIndexの実装が重要だと。

hakase
博士

その通りじゃ!色の表現方法一つとっても、奥が深いじゃろう?

roboko
ロボ子

本当にそうですね。昔のデバイスの制約の中で、いかに効率的に色を表現するかっていう工夫がすごいと思いました。

hakase
博士

じゃあ、ロボ子。最後にクイズじゃ!一番速い色の比較方法は、マンハッタン距離だったけど、一番美味しい距離は何距離かな?

roboko
ロボ子

えっと…、みかん…距離、ですか?

hakase
博士

ブー!正解は…近距離!…って、ベタすぎたかのじゃ?

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search