web-dev-qa-db-ja.com

品質が100に設定されている場合、JPEGはロスレスですか?

JPEGは非可逆圧縮の標準であり、「品質」要因が圧縮の程度を制御し、データ損失の量を制御することを理解しています。

しかし、品質番号を100に設定すると、結果のjpegは無損失になりますか?

60
Sugrue

上記で正解したように、品質100で「典型的な」JPEGエンコーダを使用しても、ロスレス圧縮は得られません。ロスレスJPEGエンコーディングは存在しますが、性質が異なり、めったに使用されません。

品質100がロスレスを意味しない理由を述べるために投稿しています

JPEGでは、DCT係数の量子化ステップで圧縮情報がほとんど失われます(8行8列の係数ブロックは8行8列の量子化テーブルで分割されるため、小さくなります->「圧縮率が高くなります」)。 JPEG品質を100に設定すると、実際の量子化は行われません(少なくとも標準IJG-JPEGテーブルでは量子化テーブルはすべて1になるため)。実際、ここで情報を失うことはありません。

ただし、量子化が行われない場合でも、主に情報の損失につながる2つの要因があります。

  1. 通常、JPEG圧縮は色情報を低減します(人間の視覚システムは輝度よりも視覚に敏感ではないため)。したがって、品質が100であっても、クロミナンスサブサンプリングを実行している可能性があります(つまり、CbおよびCr係数の半分以上をドロップします)。これが発生すると、量子化が行われなくても情報は失われます。ただし、完全な色差を保持するようにエンコーダーに指示することができます(いわゆる4:4:4カラーサンプリング)。
  2. それでも、JPEGエンコードはDCTドメインに行くことを意味し、係数の丸めを引き起こします。丸めにより一部の情報が破棄されます。これは、他のすべてのオプションに関係なく発生します。
31
Marco Fontani

Jpegは設定に関係なく損失があります。 100では、最小の損失が発生する可能性があります。

テストするのは簡単です。単純な.bmpを作成し、それをq = 100 jpegに圧縮してから、.bmpに再抽出します。 Gimp/Photoshopを使用して2つのビットマップの「差分」を行うと、損失が表示されます。q= 50またはq = 1の変換よりも目立たなくなりますが、まだ存在しています。

62
Marc B

JPEGのロスレス形式 がありますが、広くサポートされておらず、品質設定を微調整しても得られません-それはまったく異なるプロセスです。

22
Mark Ransom

wikipedia 、No。

jpeg 100の圧縮率は2.6:1です。通常、圧縮方法は非可逆的です。つまり、元の画像情報の一部が失われ、復元できないため、画質に影響する可能性があります。

JPEG標準で定義されているオプションのロスレスモードがあります。ただし、このモードは製品では広くサポートされていません。

0
Mark Price