QOI

QOI (Quite OK Image Format): 高速でシンプルな可逆画像圧縮フォーマット



QOIは、Dominic Szablewski氏によって開発された、24ビットまたは32ビットカラーのラスター画像を可逆圧縮するための新しい画像フォーマットです。2021年11月に公開され、その高速な処理速度とシンプルな実装で注目を集めています。

開発の目的と特徴



QOIの開発目標は、PNGよりも実装が容易で、高速に処理できるオープンソースの可逆圧縮方式を提供することでした。そして、その目標は達成されています。多くのベンチマークテストで、PNGと比較してエンコード速度は20~50倍、デコード速度は3~4倍の高速性を示しています。

QOIはパブリックドメイン(CC0)ライセンスで公開されているため、自由に使用・改変・再配布が可能です。このオープンソースの性質と高いパフォーマンスが、QOIの普及を後押ししています。

ソフトウェアとプログラミング言語の対応



QOIはすでに多くの画像処理ソフトウェアやプログラミング言語でサポートされています。

ネイティブサポート: ImageMagickIrfanView (4.60以降)、FFmpeg (5.1以降)、GraphicConverter (11.8以降)など
コミュニティプラグイン: GIMP、Paint.NET、XnViewなど
プログラミング言語実装: Rust、PythonJavaC++、C#など

これらの幅広いサポートにより、QOIは様々な環境で容易に利用できるようになっています。

ファイルフォーマット



QOIファイルは、以下の構造で構成されています。

1. ヘッダー (14バイト): ファイルの種類や画像のサイズなどのメタデータを含みます。
2. データチャンク: 画像データを符号化して格納します。
3. 終端マーカー (8バイト): ファイルの終わりを示します。

ヘッダーの色空間やチャンネル情報は、符号化方法には影響しません。

符号化方法



QOIは、効率的な可逆圧縮を実現するために、複数の符号化手法を組み合わせています。画像の符号化は、行順で左から右、上から下に処理されます。エンコーダは、直前のピクセルの値を記憶し、その情報に基づいて次のピクセルを圧縮します。主な符号化手法は以下の通りです。

QOI_OP_RUN: 直前のピクセル値の繰り返しをランレングス圧縮します。
QOI_OP_INDEX: 直前に出現したピクセルのインデックスを指定することで圧縮します。64個のピクセルをキャッシュして、同じピクセルが出現した際にインデックスを使用します。
QOI_OP_DIFF: 直前のピクセルとのRGB値の差分を符号化します。
QOI_OP_LUMA: 緑チャンネルを基準として、赤と青のチャンネルの差分を符号化します。
QOI_OP_RGB/QOI_OP_RGBA: RGB/RGBA値を直接符号化します。

これらの手法を組み合わせることで、画像データの冗長性を効果的に削減し、高圧縮率を実現しています。

各チャンクは2ビットまたは8ビットのタグで始まり、それにデータビットが続きます。データビットは全て左端に最上位ビットが配置されています。ファイルの終端は特定のバイトパターンでマークされます。

まとめ



QOIは、高速な処理速度、シンプルな実装、そしてオープンソースという利点を兼ね備えた、魅力的な画像フォーマットです。その高いパフォーマンスと将来性から、今後ますます多くの場面で利用されることが期待されます。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。