image - 无损JPEG文件写入

标签 image image-processing jpeg lossless-compression

我有一个关于 JPEG 文件写入的问题。假设我有一个 PNG 文件 example.png,并且我想将文件格式更改为 JPEG 而不会丢失任何信息。目前,我有两个解决方案:

  • 方案一:用MATLAB进行文件格式转换

    I = imread('example.png');

    imwrite(I,'example.jpg','Mode','lossless');

    II = imread('example.jpg');

    不同 = I-II;

    最大值(不同(:))

    此解决方案可以生成无损 JPEG 文件。然而,这个解决方案的问题在于
    原始图像中的某些信息(例如 DPI 分辨率)可能会丢失。此外,该
    生成的输出图像无法通过流行的图像查看器(如 IrfanView 和 Windows)查看
    画。
  • 解决方案2:使用IrfanView 软件。
    使用IrfanView 程序的“另存为”功能,我们可以非常方便地更改文件格式。但是,虽然我在保存 JPEG 文件时设置了“最佳质量 100”选项,但输出图像也会显示一些信息丢失。对于所有像素,这两个图像之间的差异不为零。

  • 因此,我想知道我应该怎么做才能解决问题。任何想法将不胜感激。

    最佳答案

    这个问题没有解决方案(截至 2018 年)。

    如果您希望 JPEG 文件在大多数图像查看器中可用,则无法避免使用有损压缩。

    通常支持的 JPEG 版本基于 DCT 压缩,根据定义,它执行会导致一些精度损失的转换和​​舍入。

    很少支持另一种无损 JPEG 压缩方法 JPEG-LS。

    还有 JPEG-XT 扩展,它是有损图像 + 层的组合,用于重建无损原始。它在 JPEG 图像查看器中正常失败,但它甚至更新,我不知道它是否已在任何地方实现。

    如果您确实需要无损,请使用 PNG。使用 JPEG,您可以获得的最佳效果是 RGB 色彩空间中质量=100(实际上不是 100%)的最小有损 JPEG。

    关于image - 无损JPEG文件写入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15006430/

    相关文章:

    android - 根据屏幕宽度制作android Translate动画

    python - 图像大小调整和空间改变之间的区别

    python - 如何用灰色噪声掩盖图像?

    image - 如何在 sencha touch 中创建这样的图像查看器?

    c++ - 将 Median Cut 减色算法的输出调色板应用于源图像

    matlab - 过滤霍夫变换以仅在Matlab中查找水平线和垂直线

    cuda - CUDA 中的 JPEG 库

    windows - 在 Windows 上使用一条命令更改文件夹中所有文件的扩展名

    jpeg - 解析 JPEG SOS 标记

    python - 图像到 0,1 文本