我正在尝试理解JPEG压缩过程并执行以下步骤来验证一些事项。
我使用输入图像img1.jpg并使用IrfanView压缩它,比如质量= 50(img1_compress.jpg)。
然后我从输入图像img1.jpg中裁剪出一个小块(在X,Y = 16,16处大小为8x8的block.jpg)并使用相同的质量参数值(50)对其进行压缩。我们称之为block_compress.jpg。
现在,当我将此块的像素值与完全压缩图像中的像素值进行比较时,它们不匹配。
为了澄清,block_compress.jpg中位置0,0处的像素值应与img1_compress.jpg中位置16,16处的像素值匹配。
我很困惑为什么像素值不匹配?有什么想法吗?
答案 0 :(得分:2)
我刚用JPEG编解码器完成了这个实验,且像素值匹配。 Irfanview在压缩JPEG图像时可能会应用某种噪声滤波器或其他修改。没有看到编解码器的源代码,你无法知道它在做什么。您的实验是有效的,但通过使用其他人的代码来测试您的理论,您无法知道其代码中的实际内容。
答案 1 :(得分:1)
JPEG是有损压缩算法。在不同工具中压缩具有相同压缩设置的一个图像会产生不同的结果。如果需要像素到像素的结果,则需要使用无损算法之一。即你可以使用PNG
答案 2 :(得分:-3)
“每个8x8块的DC分量是从前一个块预测的。”:作者:Oli Charlesworth