ここに「プログレッシブ」オプションがあることに気付くまで、いくつかのBMPファイルを最高品質(Q = 100)でJPEG形式に変換しようとしています。
私のBMPファイルの1つは2.9MBです。プログレッシブなしでJPEG形式に変換した後、新しいファイルサイズは338.2KBで、プログレッシブを使用すると、新しいファイルサイズは283.2KBになります。
このプログレッシブJPEGの目的に関するウィキペディアの記事を読みましたが、通常のJPEGと比較すると、プログレッシブJPEGの品質が低下するのでしょうか、それとも同じになるのでしょうか。
いくつかの素敵な投稿があります ここ プログレッシブ圧縮が優れている理由を説明しているようで、プログレッシブJPEGでは圧縮データがより効率的に順序付けられているという事実とブロック状の画像データに帰着しているようですとノイズは別々に分離され、圧縮されます。
以下の重要な部分を強調しました。それらは私がこれまでにできたよりもよく説明しています。
結果として、プログレッシブJPEGはより良い圧縮であると思いますが、画質に大きな変化はありません。
プログレッシブJPEGには、2つの異なるコーディング機能があります。
- スペクトル選択
- 逐次比較
あなたが説明するのは、最初の機能(最初にDC、次にACバンド)です。ただし、プログレッシブJPEGのコーディング効率が異なる主な理由は2番目の機能です。 逐次比較では、最初に係数の上位ビット(低精度、粗い画像)を格納し、次に下位ビット(高精度、詳細画像)を格納します。通常の画像では、ノイズは下位ビットに集中しています。したがって、ハフマンエンコーダは、ノイズが少ない高ビット範囲でのシンボルコーディングでより効率的になります。したがって、逐次近似コーディングは分離します。画像からのノイズ、そしてそれがより良いコーディング効率の理由です(ノイズはほとんど圧縮できません)。
画像のノイズ(詳細)が多いほど、プログレッシブJPEGのコーディング効率が向上します。画像のノイズ(ぼやけ)が少ないほど、シーケンシャル(非プログレッシブ)JPEGのコーディング効率が向上します。
ほとんどのプログレッシブJPEGコーダーは、スペクトル選択コーディングと逐次比較コーディングを組み合わせて使用することに注意してください。コーディング効率を高めるには、主に逐次比較が適切であり、画像のクラスに最適な逐次比較パラメータ(精度を分離するポイント-JPEG標準のAh/Al)を見つけることができます。たとえば、画像に最適なポイントAl = 4を見つけることがありました(下位4ビットは個別にコード化されています)。
プログレッシブJPEGの利点は、送信時に画像をオンザフライで表示している場合、画像全体の近似値を非常にすばやく確認でき、待機時間が長くなるにつれて品質が徐々に向上することです。これは、画像を上から下にゆっくり表示するよりもはるかに優れています。欠点は、各スキャンがベースラインJPEGファイル全体とほぼ同じ量の計算を必要とすることです。
画像はまったく同じである必要があり、表示するためにより多くの処理が必要です。