【问题标题】:JPEG compressionJPEG 压缩
【发布时间】:2013-03-22 17:04:59
【问题描述】:

我正在尝试了解 JPEG 压缩过程并执行以下步骤来验证一些事情。

我获取输入图像 img1.jpg 并使用 IrfanView 对其进行压缩,例如 quality=50 (img1_compress.jpg)。

然后我从输入图像 img1.jpg 中裁剪出一个小块(在 X,Y=16,16 处大小为 8x8 的块.jpg)并使用相同的质量参数值 (50) 对其进行压缩。我们称之为 block_compress.jpg。

现在,当我将此块的像素值与完全压缩图像中的像素值进行比较时,它们不匹配。

澄清一下,block_compress.jpg 中位置 0,0 的像素值应该与 img1_compress.jpg 中位置 16,16 的像素值匹配。

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

【问题讨论】:

    标签: jpeg libjpeg mjpeg jpeg2000 uiimagejpegrepresentation


    【解决方案1】:

    我刚刚用我的 JPEG 编解码器做了这个实验,像素值匹配。 Irfanview 在压缩 JPEG 图像时可能会应用某种噪声过滤器或其他修改。如果不查看编解码器的源代码,您将无法知道它在做什么。您的实验是有效的,但是通过使用其他人的代码来测试您的理论,您无法知道他们的代码中到底发生了什么。

    【讨论】:

    • 你知道我可以用什么工具来做我的实验吗?
    • 由于我使用自己的 JPEG 编解码器,因此我没有其他人的信息。您可能想要使用 LIBJPEG,因为您可以在源代码中看到它在做什么。
    • 我明白了。我将使用它来运行我的实验。感谢您的信息:)
    • 我使用 ImageMagick 和 PNG 输入图像进行了实验,一切正常。但是,当我使用 BMP 图像进行实验时,有时会失败。我观察到的是,对于具有“灰色”颜色值的像素,它会失败。只要它是RGB,它就可以正常工作。关于这里发生了什么的任何线索?
    • 如果没有看到源代码,我真的无法推测。使用不同的文件格式时会发生各种各样的事情(例如位深度变化)。
    【解决方案2】:

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

    【讨论】:

    • 即使在这种情况下,我也使用一种工具和一张原始图像作为我的输入。
    【解决方案3】:

    “每个 8x8 块的 DC 分量是从前一个块预测的。” : 通过奥利查尔斯沃思

    【讨论】:

    • 哦,我明白了。然后我需要使用其他一些工具再次做这个实验
    • 由于 mu 结果不同,上述答案证明了结果的合理性。所以认为它是正确的。
    • 你混合了两个不同的概念。部分 JPEG 压缩是通过从一个 MCU 块到下一个 MCU 块的 DC 值的增量压缩来实现的。这与使用完成的输出像素无关,与您的实验无关。
    猜你喜欢
    • 2014-02-02
    • 2011-03-29
    • 2011-08-09
    • 1970-01-01
    • 2013-02-22
    • 2021-07-15
    • 1970-01-01
    • 1970-01-01
    • 2013-03-24
    相关资源
    最近更新 更多