JA EN
体系画像圧縮
·★ 会員·14分で読めます

WebP・AVIF・JPEG XL — 画像コーデック世代交代

JPEGより明らかに効率の良い後継が3つも出たのに、Webの画像はいまだJPEGだらけです。新顔3つの出自、なぜ静止画コーデックが動画コーデックから生まれるのか、そして「性能で勝っても共通語は死なない」という構造を、比較の作法と配信の実装まで含めて追います。

対象textタスクcompression

共通語は、性能では死なない

国際会議の共通語は英語のままです。もっと規則的で覚えやすい人工言語はいくつも作られましたが、入れ替わりませんでした。新しい言語の性能が低いからではなく、すでに全員が英語を話せてしまっているからです。

画像フォーマットも同じです。JPEGは1992年の規格で、そのあと明らかに効率で上回る後継が3つ登場しました。それでもWebに置かれた写真の多くは、いまだにJPEGです。

この記事では、①新顔3つの正体、②なぜ静止画コーデックが動画コーデックから生まれるのか、③それでもJPEGが死なない理由、を順に見ます。JPEGの中身(DCTと量子化)はJPEGはなぜ劣化するのかで扱ったので、ここは「その次」から始めます。

新顔は3つ、出自はバラバラ

WebP(Google・2010年)。非可逆モードの正体は、動画コーデック VP8のキーフレームをそのまま静止画に流用したものです。2012年に、まったく別アルゴリズムの可逆モードが追加されました。1つの容れ物に2つの別コーデックが同居しています。

AVIF(AOMedia・2019年)。AV1のキーフレームを、HEIF(ISOBMFF)という、これも動画由来の容器に入れたものです。系譜としてはH.264からAV1への続きにあたります。

JPEG XL(ISO/IEC 18181・2021〜2022年)。GoogleのPIKとCloudinaryのFUIFを統合し、静止画のために一から設計されました。動画由来でない唯一の新顔です。

WebP AVIF JPEG XL
出自 VP8のキーフレーム AV1のキーフレーム 静止画専用設計
ビット深度 8bit 8/10/12bit 高ビット深度・HDR
最大寸法 16383×16383 AV1のレベル制限+タイル分割 実質無制限
立ち位置 外せない最低ライン Web配信の主力 保管・入稿

静止画コーデックが動画から生まれる理由

動画の先頭フレーム(Iフレーム)は、前のフレームを一切参照できません。裏を返せば、それ単体で完結した静止画コーデックです。動画コーデックを1つ作ると、高性能な静止画コーデックがおまけで手に入る、という構造になっています。

しかもそのIフレームには、動画のために注ぎ込まれた最適化がそのまま乗っています。再帰的なブロック分割、何十通りものイントラ予測方向、ループ内フィルタ、文脈適応の算術符号化。同じ物量を静止画専用にゼロから積み上げるのは、費用対効果が合いません。

そして決定的なのがハードウェアです。新しい画像形式の最大の壁は「相手の端末が復号できるか」で、ソフトウェア復号は電池と発熱を食います。スマホのSoCに載ったAV1デコーダは、AVIFの復号にほぼそのまま使える。既存の動画デコーダに相乗りできるのは、それだけで巨大な近道です。Appleが写真の既定形式にしたHEICも同じ型で、HEVCのIフレーム+HEIF容器です。

裏返すと、静止画フォーマットの世代交代の周期は動画側の都合で決まっているということでもあります。動画コーデックが1世代進むたびに、その静止画版が普及の足場ごと付いてくる。逆に、動画由来でない形式は、ハードウェア対応もブラウザ実装も自力で勝ち取らなければなりません。この差は後半で、JPEG XLの置かれた立場としてはっきり効いてきます。

「品質80」は横に並べられない

非可逆コーデックはどれも、最後に量子化で情報を捨てます。捨てる粗さを決めるのが品質パラメータですが、その目盛りの意味はコーデックごとに別物です。cwebp -q 80avifenc -q 80cjxl -d 1 の間に対応関係はありません。それどころか向きすら違い、WebPやAVIFの -q は大きいほど高画質、JPEG XLの -d小さいほど高画質です。

だから「同じ設定で比べた」という比較は、そもそも何も比べていません。使えるのは、コーデックに依存しない共通の物差しだけです。まず出力側の物差しとして、1画素あたりのビット数(bpp)を横軸に取ります。

bpp=8×(ファイルサイズのバイト数)W×H\mathrm{bpp} = \frac{8 \times (\text{ファイルサイズのバイト数})}{W \times H}

WW は横の画素数、HH は縦の画素数です。要するに「1画素を平均何ビットで表せたか」。同じ被写体を同じ見た目まで持っていったとき、bppが小さいほうが強いコーデックだ、という素直な尺度になります。

FIG 1量子化を粗くすると、どの順番で情報が失われるかをその場で確かめられます。新しいコーデックがやっているのは「同じ量を捨てても崩れにくくする」ことです

「AVIFはJPEGより30%小さい」の30%はどこから出てくるのでしょうか。

この先にあるもの

§

ここから先は会員限定です

解説記事371本・教科書26章・学生モード48単元・論文精読6本が、月額¥490ですべて読み放題になります。新しい解説は毎日3本ずつ増えます。いつでも解約でき、解約後も期間の終わりまで読めます。

会員の方はログインすると続きが表示されます

コメント

コメントにはログインが必要です