JPEGは写真を64マスに分けて軽くする。圧縮の中をのぞく

JPEG圧縮の大まかな流れ
1 色を明るさと色差へ分ける
2 8×8画素ごとに変換
3 細かな変化を粗く量子化
4 規則性を符号化

画素をそのまま一個ずつ捨てるわけではない

JPEGではRGBの色を、主に明るさと二つの色差へ変換します。人の視覚は明るさの細部に比べ、色の細部へ鈍感なため、色差の解像度を減らしても違いが目立ちにくいのです。

次に画像を通常8×8画素のブロックへ分け、離散コサイン変換で、ゆっくり変わる模様と細かく変わる模様の組合せとして表します。

品質設定は、量子化の強さを変える

細かな変化をどれだけ大まかな数字へ丸めるかが量子化です。強く丸めるとゼロが増えてよく圧縮できますが、輪郭の周りのにじみや8×8のブロック境界が見えやすくなります。

アプリの品質80と別のアプリの品質80が同じとは限りません。JPEG規格は品質スライダーの数値を標準化しておらず、各実装が量子化表との対応を決めます。

保存を繰り返すたび、丸め直される

JPEGを開いて再びJPEG保存すると、復元された画素をもう一度変換・量子化します。編集途中は可逆形式や元データで保ち、最後の配布時にJPEG化すると劣化の積み重ねを避けられます。

参考資料