【问题标题】:Lossless JPEG file writing无损JPEG文件写入
【发布时间】:2013-02-07 00:33:21
【问题描述】:

我有一个关于 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”选项,但输出图像也显示出一些信息丢失。对于所有像素,这两个图像之间的差异并非为零。

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

【问题讨论】:

  • 解决您的问题很容易:保留PNG图像。
  • Jpeg2000 是一种无损 jpeg 文件格式,但遗憾的是几乎没有软件支持 jpeg2000。 .png 和 .gif 是无损文件的最佳选择。
  • 您的第一个假设需要改变。 “正常”JPEG 图像使用有损压缩格式。正如@mmgp 所说,留在PNG 是一个不错的选择。如果您正在寻找更好的压缩比,那么您将需要放弃无损的想法。

标签: image image-processing jpeg lossless-compression


【解决方案1】:

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

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

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

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

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

如果您真的需要无损,请使用 PNG。使用 JPEG,您可以获得的最佳效果是 RGB 颜色空间中质量为 100(实际上并不是 100%)的 RGB 色彩空间中的最低损失 JPEG。

【讨论】:

    猜你喜欢
    • 2016-11-18
    • 1970-01-01
    • 2014-09-28
    • 1970-01-01
    • 2015-03-10
    • 1970-01-01
    • 2013-06-15
    • 2019-01-09
    • 1970-01-01
    相关资源
    最近更新 更多