生の画像を jpeg 画像にエンコードする際に、8x8 データ ユニットがレベル シフトされ、2-D DCT を使用して変換され、量子化され、ハフマン エンコードされます。
最初に行 DCT を実行し、次に列 DCT を実行し、結果を最も近い整数に丸めました。このブロックを量子化モジュールに送りました。量子化中に、次の Q テーブルを使用しました。これらの表は、品質係数 99 に対して IJG によって推奨されています。
輝度テーブル1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1
1 1
1 1 2 2 1
1 1 1 1 2 2 2
1 1 1 2 2 2 2
1 1 2 2 2 2 2 2
1 2 2 2 2 2 2 2
1 1 1 1 2 2 2 2
1 1 1 1 2 2 2 2
1 1 2 2 2 2
1 1 2 2 2 2 2 2 2 2 2 2 2
2 2 2 2 2
2 2
2 2 2 2 2 2 2 2 2 2 2 2
2 2 2 2
「2」で割っている間の量子化中に、結果をゼロから四捨五入しました。例: 11/2 = 6. したがって、デコード中の逆量子化中にすべての奇数に +1 のエラーが追加されます。
別のセットアップでは、丸め手法を変更しました。ここでは、結果をゼロに丸めています。例: 11/2 = 5. したがって、復号化中の逆量子化中にすべての奇数に -1 のエラーが追加されます。
2 番目のケースでは、ファイル サイズが非常に小さくなり (768x512 画像の場合、ほぼ 100 kb 小さくなります)、PSNR が大きくなります。2 で量子化すると「1」であるすべての AC 係数が 1 ではなく 0 になるということで、ファイル サイズが小さいことを説明できました。したがって、RLE はファイル サイズを小さくします。しかし、エンコードの画質が向上している理由を説明することはできません。2 ~ 3 dB 増加しており、テストしたすべての画像で発生しています。
私の主張は、DCT は基本的に A * DCTmatrix のどちらの側でも等しいエラーであるため、等しい損失が生じるはずです。しかし、ここではそうではありません。