
JPEG 品質 80 と 90 の差はどこに出るのか ― DCT・量子化・ファイルサイズのしくみ
JPEG の「品質 80」 と「品質 90」 は、 80% と 90% のような直線的な意味ではありません。 多くのエンコーダでは、 品質値は量子化テーブルを作るためのつまみであり、 画質・ファイルサイズ・ノイズの出方は画像の内容によって大きく変わります。
この記事では、 JPEG が DCT で画像を周波数に分け、 量子化で情報を捨て、 ハフマン符号で短くする流れを整理します。 既存の WebP / AVIF / JPEG 比較記事 の続編として、 「なぜ JPEG は写真に強く、 文字や線画に弱いのか」 まで踏み込みます。
JPEG は写真を 8×8 ブロックに分けて考える
JPEG の基本単位は 8×8 ピクセルのブロックです。 各ブロックは DCT (離散コサイン変換) によって、 明るさの平均成分と細かな変化成分に分解されます。
- 低周波: なだらかな明るさ・色の変化。 人間が気づきやすい
- 高周波: 細かい模様・ノイズ・エッジ。 捨てても気づきにくい場合が多い
写真は空、 肌、 壁、 ぼけた背景のように低周波成分が多く、 JPEG と相性が良い。 逆にスクリーンショット、 細い文字、 図表、 UI アイコンは鋭いエッジが多く、 JPEG の苦手分野です。
画質を決める主役は「量子化」
DCT そのものは、 ほぼ可逆な変換です。 JPEG で情報が大きく失われるのは、 次の量子化です。 DCT 係数を量子化テーブルの値で割り、 整数に丸めます。
量子化後の係数 = round(DCT係数 ÷ 量子化ステップ)
量子化ステップが大きいほど、 細かな違いは同じ値に丸められます。 これがファイルサイズを小さくする代わりに、 ブロックノイズ、 モスキートノイズ、 グラデーションの段差を生む原因です。
JPEG の設計思想は、 人間の視覚が細かな高周波や色差の変化に鈍いことを利用するものです。 だから量子化テーブルは、 低周波ほど細かく、 高周波ほど粗くなる傾向を持ちます。
量子化テーブルは「どの周波数をどれだけ捨てるか」の地図
8×8 ブロックを DCT すると、 左上に近い係数ほど大まかな明るさの変化、 右下に近い係数ほど細かい模様やエッジを表します。 量子化テーブルも同じ 8×8 で、 それぞれの係数をどれだけ粗く丸めるかを指定します。
左上の DC 成分はブロック全体の平均に近いため、 ここを粗くしすぎると明るさが大きく崩れます。 一方、 右下側の高周波は細部なので、 写真では多少捨てても気づきにくい。 そのため標準的な輝度テーブルでは、 左上の値は小さく、 右下の値は大きく設定されています。
ただし、 文字・罫線・UI・イラストでは高周波が重要です。 エッジのすぐ周辺に波紋のようなノイズが出る「モスキートノイズ」 は、 本来くっきり残したい高周波を粗く丸めた結果として目立ちます。 写真向けの前提を、 文字入り画像にそのまま当てはめると破綻しやすい理由です。
品質 80 と 90 は「量子化ステップ」がかなり違う
広く使われる IJG libjpeg 系の品質スケールでは、 品質 Q が 50 以上の場合、 おおまかに次の係数で標準量子化テーブルを縮小します。
scale = 200 − 2 × Q
Node.js で標準的な輝度量子化テーブルをこの式に通すと、 次のようになります。
| 品質 | scale | 左上DC | 右下高周波 | 平均ステップ |
|---|---|---|---|---|
| 80 | 40 | 6 | 40 | 23.08 |
| 90 | 20 | 3 | 20 | 11.50 |
| 95 | 10 | 2 | 10 | 5.77 |
品質 80 から 90 に上げると、 この例では量子化ステップがほぼ半分になります。 つまり細部をより細かく残す一方、 係数がゼロになりにくくなり、 ハフマン符号化後のデータ量も増えます。 90 から 95 が重く感じるのも、 さらに半分近くまで丸めを弱めるからです。
品質値はエンコーダごとに同じ意味ではない
注意したいのは、 「品質 85」 がすべてのソフトで同じ量子化テーブルを意味するわけではないことです。 IJG libjpeg、 mozjpeg、 Photoshop、 ブラウザ内 Canvas、 画像最適化サービスでは、 量子化テーブル、 色差サブサンプリング、 トレリス量子化、 メタデータ処理が異なります。
そのため、 あるツールの品質 80 と別ツールの品質 80 を厳密に比較してはいけません。 比較するなら、 同じ画像を同じエンコーダで複数品質に書き出し、 目視とファイルサイズの両方で判断するのが安全です。
画像圧縮ツール のような実用ツールでも、 品質値は「目標画質」 ではなく「圧縮の強さを調整するつまみ」 と考えると、 期待外れが少なくなります。
ゼロが増えるほど軽くなる ― ファイルサイズが変わる理由
量子化後の DCT 係数は、 右下側の高周波ほど 0 になりやすくなります。 JPEG はこの係数をジグザグ順に並べ、 0 が続く部分を短く表現し、 最後にハフマン符号化でさらに短くします。
つまりファイルサイズを大きく左右するのは、 単に「画質値を何にしたか」 ではなく、 量子化後にどれだけ 0 が増えるかです。 空や壁のようになだらかな写真は高周波が少ないため、 品質を下げても 0 が増えやすく、 サイズが落ちやすい。 木の葉、 髪、 砂利、 布目のような細部が多い写真は、 同じ品質値でも係数が残りやすく、 あまり軽くならないことがあります。
品質 90 から 95 に上げると急に重く感じるのは、 量子化ステップが小さくなり、 本来 0 になっていた細かな係数が残るためです。 画質差が小さく見えても、 エンコードされる係数の数は大きく変わることがあります。
品質比較は「同じ画像・同じエンコーダ」で見る
JPEG の品質値を比較するときは、 条件を固定しないと判断を誤ります。 たとえば、 あるサービスの品質 80 と別ソフトの品質 90 を比べても、 量子化テーブル、色差サブサンプリング、メタデータ削除、プログレッシブ JPEG の有無が違えば、 数字だけでは優劣を決められません。
実務では、 まず同じ元画像を用意し、 同じエンコーダで 75 / 80 / 85 / 90 / 95 のように書き出します。 そのうえで、 ファイルサイズ、拡大時のノイズ、実際の表示サイズでの見え方を並べて確認します。 100% 拡大で気になる差が、 スマホの実表示では見えないこともあります。
見る場所も重要です。 JPEG 劣化は、 空や肌のなだらかな部分ではブロック境界や階調段差として、 文字や線画ではエッジ周辺のにじみとして、 草木や髪では細部のつぶれとして出ます。 画像の中央だけでなく、 エッジ、文字、暗部、グラデーションをそれぞれ確認すると、 品質値の選択が安定します。
クロマサブサンプリング ― 色を間引くもう一つの圧縮
JPEG では RGB をそのまま扱うのではなく、 多くの場合 YCbCr に変換します。 Y は明るさ、 Cb / Cr は色差です。 人間の目は明るさの解像度には敏感ですが、 色差の細かな変化には比較的鈍い。 そこで色差だけを間引く クロマサブサンプリング が使われます。
- 4:4:4: 色差を間引かない。 文字や図版に強いが重い
- 4:2:2: 横方向の色差を半分にする
- 4:2:0: 横・縦方向で色差を間引く。 写真向きで軽い
写真では 4:2:0 でも気づきにくいことが多い一方、 赤い文字、 UI の細線、 図表の色境界ではにじみが目立ちます。 「品質を上げたのに文字がぼやける」 と感じる場合、 量子化よりサブサンプリングが原因のことがあります。
実用の目安 ― 写真は 80〜85、文字入りは別形式も検討
最終的な目安は画像の内容で変わります。
- 写真: 品質 80〜85 前後から試す。 Web では十分なことが多い
- 商品写真: 85〜90。 細部や質感を見せたい場合は高め
- スクリーンショット・図表: JPEG より PNG / WebP lossless / AVIF を検討
- 文字入りバナー: JPEG なら 4:4:4 や高品質、 可能なら別形式
- 再編集前提: JPEG を何度も保存し直さない。 元データを残す
JPEG は古い形式ですが、 デコード互換性、 写真との相性、 実装の成熟度はいまも強力です。 ただし「品質 90 なら安全」 ではありません。 何を捨てているかを理解し、 写真・文字・線画で形式を使い分けるのが、 ファイルサイズと見た目の最短距離です。
再保存に弱い ― JPEG は編集用の中間形式ではない
もう一つ重要なのが、 JPEG は保存するたびに量子化が入り直すことです。 いったん失った高周波や色差情報は戻らないため、 JPEG を開いて少し編集し、 もう一度 JPEG として保存する作業を繰り返すと、 ブロック境界や文字のにじみが蓄積します。
写真を公開用に一度だけ書き出すなら JPEG は今でも有力です。 しかし、 切り抜き、文字入れ、色補正、再圧縮を何度も行う素材は、 元画像を PNG、TIFF、PSD、または可逆 WebP などで残し、 最後の配信用だけ JPEG にするほうが安全です。
特にブログやECの商品画像では、 CMS 側で再圧縮されることがあります。 手元で品質 90 にしても、 アップロード後に別の品質・別のサブサンプリングで再エンコードされれば結果は変わります。 最終表示画像を実際にダウンロードして確認するのが、 いちばん確実なチェックです。
参考文献・ソース
記事作成に関する注記
本記事は AI(大規模言語モデル)を編集補助として活用して作成しています。 公開前に編集者が内容を確認していますが、事実誤認・仕様の解釈ミス・最新情報との齟齬が含まれる可能性があります。 重要な判断を行う際は、本文中の一次ソースや公式ドキュメントを必ずご自身でご確認ください。 誤りにお気づきの場合は、お問い合わせフォームよりご連絡いただけると助かります。


