Jpegの品質
は指定できても、サブサンプリング因子(4:4:4
や4:2:0
など)まで指定できるアプリケーションは多くありません。
そこでアプリケーションやエンコーダごとに、デフォルトでサブサンプリングと、ついでにインターレースがどう決められるか調査しました。
結論
サブサンプリングについてパラメータを省略すると、エンコーダの挙動は次のようになりました。
入力ファイルによる違いはなく、同様の結果が得られました。
- Photoshop
- 品質
50
まで4:2:0
、品質51
から4:4:4
- インターレース
なし
- サブサンプリング因子は指定不可・
プログレッシブ
は指定可(最適化
との併用不可)
- 品質
- ImageMagick
- 品質
89
まで4:2:0
、品質90
から4:4:4
- インターレース
なし
-
-sampling-factor
と-interlace
オプションで指定可(convert
コマンド)
- 品質
- MozJPEG
- 品質に関わらず
4:2:0
- インターレース
なし
-
-sample
と-progressive
オプションで指定可(cjpeg
コマンド)
- 品質に関わらず
- Guetzli
- 品質に関わらず
4:4:4
- インターレース
なし
- サブサンプリング因子・インターレースともに指定不可のよう(
guetzli
コマンドのヘルプに見当たらず)
- 品質に関わらず
MozJPEGはプログレッシブになる気がしていましたが、勘違いだったようです。
元画像
元画像はいくつか用意しました。画像の質や解像度による変化があるかもと思ったからです。
写真
はぱくたそさんから拝借して正方形にトリミングしました。
ノイズ
は1ピクセルごとにランダムな色が並ぶものです。画像圧縮が最も嫌がりそうなエントロピーの大きいデータです。一方、フラット
は白一色の画像で、モザイク
はその中間の30ピクセル四方のランダムな色の並びです。
480x480
写真 | ノイズ | モザイク | フラット |
---|---|---|---|
解像度のバリエーション
1000x1000 | 2000x2000 |
---|---|
変換処理
品質Q
(0〜100)を変数に元ファイルSRC
から変換先JpegファイルDEST
変換を行います。作業はmacOSで行いました。
- Photoshop
- CC 2018 (19.0)
-
Web用に保存(従来)
機能を利用 - オプションは最適化あり・プログレッシブなし(最適化との併用不可)
- こちらの記事を参考にJSXを作成
- ImageMagick
- 7.0.8-14 (Homebrew)
convert -quality Q SRC DEST
- MozJPEG
- 3.3.1 (Homebrew)
- PNG入力に対応していないのでTGAを経由
convert SRC SRC.tga
cjpeg -quality Q -targa SRC.tga DEST
- Guetzli
- 1.0.1 (Homebrew)
- Q=84〜100
guetzli --quality Q SRC DEST