QOI圧縮を検証
QOI圧縮とは
QOI は Quite OK Image の略らしいです(どうなんですかねこのネーミング)。
先日(2021/12/20)、ファイルフォーマット規定の ver1.0 が発表されました。
https://phoboslab.org/log/2021/12/qoi-specification
このQOI圧縮、なかなか興味深いので掘ってみます。
特徴
この圧縮方式の特徴は、とにかく実行速度が速いこと。ソースを見ればわかりますが、非常にシンプルなプログラムで、一見して「こりゃ速いよね」とわかります。コードも小さいしワークも少ないので、広範囲のIoT機器で実装できそう。ゲーム実装でも有効な場面は多いと思います。
そんな話を適当に流したい、そんな方は
https://voicy.jp/channel/2462/252474
こちらに概要を伝えた10分弱の音声解説を置きました。(BGMは外せます。スマホでVoicyアプリを入れるのがよいでしょう)
実験
githubより
を落として、そこにある qoi.h を #include してね、というそれだけ。Makefileすらありません。その qoi.h もシンプル。このオリジナルはC言語ですが、有志によりすでにさまざまな言語にポーティングされているようです。
サイズ検証
サンプルの qoiconv をビルドして、いくつかの画像を試してサイズを確認しました。
使用した画像は https://samplelib.com/sample-png.html といらすとやさんから拝借しています。最後のノイズ画像は自作です。数値はバイト数と圧縮率で、注目すべき圧縮率に緑・青で色をつけています。
いちばん右のカラム QUI(pre) というのは、このフォーマットが規定するひと月ほど前に公開された前バージョンのQOI圧縮です。その時点でも調査していたので併記しました。1.0になってもコンセプトは変わりませんが、実装はかなり変わっていて、圧縮率にも差が出ています。
考察
おおむね、写真のような画像に関してはPNGのほうが圧縮率が高いのがわかります。いっぽうでイラスト調の画像ではQOI圧縮に軍配が上がります。
赤のベタ塗り画像に関してはQOIはかなり負けています。これはQOIの前バージョンと大きく変わったポイントです。ベタ画像はそもそも縮むので、そこで極端に小さくしなくても良かろう、ということでしょう、同意できるところです。
ホワイトノイズに関しては、どの圧縮でも元の画像よりも大きくなりますね。意外とPNGは、ノイズでも大きくなりませんね。
まとめ
圧縮率だけを比較すればPNGなのでしょうけど、encodeも含む速度で有利となると、QOI圧縮の利用範囲は広そうです。画像によってはPNGよりも縮みます。
なにより、この2021年になって新しい画像圧縮が、こんなシンプルな形で登場したことに驚きました。
Author And Source
この問題について(QOI圧縮を検証), 我々は、より多くの情報をここで見つけました https://qiita.com/yuji_yasuhara/items/98973742caafc82c2696著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .