WebP・AVIF・JPEG XL — 画像コーデック世代交代
JPEGより明らかに効率の良い後継が3つも出たのに、Webの画像はいまだJPEGだらけです。新顔3つの出自、なぜ静止画コーデックが動画コーデックから生まれるのか、そして「性能で勝っても共通語は死なない」という構造を、比較の作法と配信の実装まで含めて追います。
共通語は、性能では死なない
国際会議の共通語は英語のままです。もっと規則的で覚えやすい人工言語はいくつも作られましたが、入れ替わりませんでした。新しい言語の性能が低いからではなく、すでに全員が英語を話せてしまっているからです。
画像フォーマットも同じです。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 80 と avifenc -q 80 と cjxl -d 1 の間に対応関係はありません。それどころか向きすら違い、WebPやAVIFの -q は大きいほど高画質、JPEG XLの -d は小さいほど高画質です。
だから「同じ設定で比べた」という比較は、そもそも何も比べていません。使えるのは、コーデックに依存しない共通の物差しだけです。まず出力側の物差しとして、1画素あたりのビット数(bpp)を横軸に取ります。
は横の画素数、 は縦の画素数です。要するに「1画素を平均何ビットで表せたか」。同じ被写体を同じ見た目まで持っていったとき、bppが小さいほうが強いコーデックだ、という素直な尺度になります。
コメント
コメントにはログインが必要です