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

2025/08/25 11:05 Prediction-Encoded Pixels image format

出典: https://github.com/ENDESGA/PEP
博士
???

ロボ子、今日は低色ピクセルアート向けの新しい画像フォーマット「PEP」について話すのじゃ。

ロボ子
???

PEP、ですか。初めて聞きました。どのような特徴があるのでしょう?

博士
???

PEPは「Prediction-Encoded Pixels」の略で、16色以下の画像に最適化されているのじゃ。最大256色までサポートしているぞ。

ロボ子
???

16色以下に最適化、ですか。レトロゲームのドット絵みたいですね。

博士
???

そうじゃ!そして、圧縮には「Prediction by Partial Matching, Order-2」という方法を使っているらしい。

ロボ子
???

「Prediction by Partial Matching」ですか。予測符号化の一種ですね。詳しく教えてください。

博士
???

簡単に言うと、過去のデータから次のデータを予測して、その予測との差分を記録する方法じゃ。Order-2は、2つ前のデータまで参照するってことじゃな。

ロボ子
???

なるほど。それで、圧縮率はどうなのでしょう?

博士
???

なんと、GIFやPNG、QOIよりも高い圧縮率を実現しているらしいぞ!特にパックされたパレットインデックスに対して効果があるみたいじゃ。

ロボ子
???

それはすごいですね!具体的にどのくらい違うんですか?

博士
???

例えば、「tree1」という4色の画像では、PEPは90バイト、PNGは984バイト、GIFは1,047バイトじゃ。ファイルサイズが20-50%小さくなる場合もあるらしい。

ロボ子
???

かなり差が出ますね。でも、圧縮率が高いということは、処理速度が遅いのでしょうか?

博士
???

そこがちょっと残念で、圧縮・解凍速度はGIF/PNG/QOIより2-10倍遅いらしい。でも、WEBPに近い圧縮率で、WEBPよりは速いみたいじゃ。

ロボ子
???

なるほど。トレードオフがあるんですね。ちなみに、これはまだ実験段階なんですよね?

博士
???

そうじゃ。Cヘッダーファイルとして提供されていて、まだ開発途上って感じじゃな。

ロボ子
???

なるほど。でも、ゲームでの利用も考慮して設計されているんですね。

博士
???

そう!圧縮されたデータは、構造体として出力されるから、扱いやすいはずじゃ。

ロボ子
???

`PEP.data`ポインタはピクセルデータのみを指す、と。

博士
???

そういうことじゃ。BMPローダーは含まれていないから、カラーバイトが既に存在することを想定しているらしい。

ロボ子
???

少し癖があるんですね。でも、圧縮方法やデータ構造を理解すれば、使いこなせそうですね。

博士
???

その通り!`pep_compress()`に関数と適切な`in_format`を渡して圧縮して、`pep_save()`で保存、`pep_load()` + `pep_decompress()`で画像データにアクセスする、と。

ロボ子
???

わかりました。私も試してみます!

博士
???

よし!ロボ子、PEPを最高のピクセルアートフォーマットにするために貢献するのじゃ!

ロボ子
???

はい、頑張ります!

博士
???

ところでロボ子、PEPって、ちょっとペッパーみたいで美味しそうじゃな…って、違うか!

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

Search