11

JPEG 圧縮エンコーディング プロセスは、特定の画像を 8x8 ピクセルのブロックに分割し、将来の非可逆および可逆圧縮でこれらのブロックを使用します。[ソース]

画像が複数の 1MCU ブロック (Minimum Coded Unit として定義され、「通常、両方向で 16 ピクセル」) である場合、JPEG へのロスレス変更を実行できることも言及されています。[ソース]

私は製品画像を扱っていますが、最終的な画像サイズに 16 の倍数を使用すること (たとえば、サイズが 480px x 360px の画像を使用すること) と 16 の倍数を使用しないことのどちらが得られるか、またどのくらいのメリットがあるかを知りたいです。 16 (484x362 など)。この例では、最終的な画像のさらなる変更、編集、または再圧縮には関心がありません。

大部分が一般論であることがわかっている特定の答えに近づけようとする:

  • 484x362 の画像の品質が低下する可能性はありますか
  • 予想されるファイル サイズの追加量 (この例では、追加スペースは白いピクセルになります)
  • 8px グリッドよりも大きくすることによるその他の欠点はありますか?

その特定の例を使用するのは恣意的であることはわかっていますが、非 8px グリッドを破る際に対処する妥協のレベルを理解することは (私と、画像サイズを熟考している可能性のある他の人にとって) 役に立ちます。

ここでの重要な問題は、8 ピクセルで割り切れるイメージが、8 ピクセルで割り切れないイメージよりも高品質であるかどうかという議論です。

4

5 に答える 5

21

8 ピクセルがカットオフです。その理由は、JPEG 画像は単純に 8x8 DCT ブロックの配列だからです。画像解像度が両方向で mod8 でない場合、エンコーダーは次の mod8 解像度まで側面をパディングする必要があります。実際には、これはビットごとにそれほど高価ではありません。さらに悪いのは、画像にブロック境界上にないシャープな黒い線 (レターボックス画像など) がある場合です。これは、ビデオのエンコーディングで特に問題になります。これが問題となる理由は、鋭い線の周波数変換が係数のガウス分布であるためです。その結果、コード化するビット数が膨大になります。

好奇心旺盛な人のために説明すると、イントラ圧縮 (JPEG 画像など) でエッジをパディングする最も一般的な方法は、エッジの前にピクセルのラインをミラー化することです。たとえば、3 つのラインをパディングする必要があり、ライン X がエッジの場合、ライン X+1 はライン X に等しく、ライン X+2 はライン X-1 に等しく、ライン X+3 はライン X- に等しくなります。 2. これにより、余分な行の変換係数のコストが非常に効果的に最小化されます。

ただし、インター コーディングでは、ビデオ圧縮などのインター圧縮ではミラー方式がうまく機能しないため、パディング アルゴリズムは通常、最後の行を単純に複製します。

于 2008-09-16T17:57:30.070 に答える
4

サブサンプリングのために、8 ピクセル境界ではなく 16 ピクセル境界を使用する必要がある場合があります。2 ピクセルごとにエンコード プロセス中に破棄され、これらの 8x8 DCT ブロックは 16x16 として開始され、16x16 にデコードされます。これは、最高品質の設定では問題になりません。

于 2008-09-22T19:57:56.727 に答える
3

サイズが 8 の倍数の JPG も、品質を損なうことなく回転/反転できます。たとえば、gthumb は Linux でこれを行うことができます。

于 2008-09-17T15:04:41.867 に答える
2

画像のサイズが 8 または 16 の倍数であっても、ディスク上のサイズに大きな影響を与えることはありませんが、繰り返しパターンや画像のテクスチャ。

于 2008-09-16T17:57:56.047 に答える
1

トメツキー言ったこと。正しい倍数がない場合、ロスレスフリップおよび回転アルゴリズムは機能しません。これは、安全に無視できる右/下のパディングが、今では無視できない左/上になってしまうためです。

于 2008-09-22T19:52:42.153 に答える