JPEG压缩

时间:2013-03-22 17:05:00

标签: jpeg libjpeg mjpeg jpeg2000 uiimagejpegrepresentation

我正在尝试理解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处的像素值匹配。

我很困惑为什么像素值不匹配?有什么想法吗?

3 个答案:

答案 0 :(得分:2)

我刚用JPEG编解码器完成了这个实验,且像素值匹配。 Irfanview在压缩JPEG图像时可能会应用某种噪声滤波器或其他修改。没有看到编解码器的源代码,你无法知道它在做什么。您的实验是有效的,但通过使用其他人的代码来测试您的理论,您无法知道其代码中的实际内容。

答案 1 :(得分:1)

JPEG是有损压缩算法。在不同工具中压缩具有相同压缩设置的一个图像会产生不同的结果。如果需要像素到像素的结果,则需要使用无损算法之一。即你可以使用PNG

答案 2 :(得分:-3)

“每个8x8块的DC分量是从前一个块预测的。”:作者:Oli Charlesworth