実際にはパレットの最適化や誤差拡散、透明色の処理等が入るので、もう少し複雑です。
減色処理にはベクトル量子化の手法を用い、ベクトル表の生成には階層型クラスタリングアルゴリズムを使用してます。
一般にメディアンカット法などより高品位なデータが生成されますが、半端じゃない計算量が必要なので時間はかかります。
計算時間短縮の為とワンダースワンカラーのパレットは4bit精度なので、ピクセルのRGB値を8bitから4/6bitに丸めてから処理しています。
誤差の集積を防ぐため、計算自体は8bit精度で行っています。
+0 | WORD magic | "FR" リソースファイルの先頭を識別 | リソース共通ヘッダ |
+2 | WORD type | "FC" 天然色画像データを識別 | |
+4 | WORD size | ヘッダも含んだリソース全体のサイズ(16バイト単位) | |
+6 | short id | リソースID番号 | |
+8 | BYTE width | イメージの横幅(8ドット単位) | 独自追加部分 |
+9 | BYTE height | イメージの高さ(8ドット単位) | |
+A | BYTE format |
イメージのフォーマット |
|
+B | BYTE reserved | 予約 | |
+C | BYTE colorfrom | 色番号の開始位置 | |
+D | BYTE colorsize | 1パレット当たりの色数 | |
+E | BYTE palettefrom | パレット番号の開始位置 | |
+F | BYTE palettenum | パレット数 | |
+10 | BYTE palettecompress | パレットの圧縮フォーマット(0: 無圧縮) | |
+11 | BYTE imagecompress | イメージ本体の圧縮フォーマット(0: 無圧縮) | |
WORD palette | パレットデータ(必要な個数を繰り変えし) | ||
BYTE palettemap | パレットマップ(必要な個数を繰り変えし) | ||
BYTE imagebody | イメージデータ本体(必要な個数を繰り変えし) |
Copyright (C) 2001 N.Honda