1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Jpegエンコーダのサブサンプリングとインターレースの挙動 Photoshop / ImageMagick / MozJPEG / Guetzli

Posted at

Jpegの品質は指定できても、サブサンプリング因子(4:4:44: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
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?