无损JPEG文件写入

时间:2013-02-21 15:47:28

标签: image image-processing jpeg lossless-compression

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

  • 解决方案1:使用MATLAB执行文件格式转换

    I = imread('example.png');

    imwrite(I 'example.jpg', '模式', '无损');

    II = imread('example.jpg');

    不同= I-II;

    MAX(不同(:))

    此解决方案可以生成无损JPEG文件。但是,这个解决方案的问题在于  原始图像中的某些信息(如DPI分辨率)可能会丢失。而且,  生成的输出图像无法被流行的图像查看器(如IrfanView和Windows)查看  油漆

  • 解决方案2:使用IrfanView软件。   使用IrfanView程序的“另存为”功能,我们可以非常轻松地更改文件格式。但是,虽然我在保存JPEG文件时设置了“最佳质量100”选项,但输出图像也显示一些信息丢失。对于所有像素,这两个图像之间的差异不为零。

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

1 个答案:

答案 0 :(得分:1)

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

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

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

很少支持替代的无损JPEG压缩方法JPEG-LS。

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

如果你真的需要无损,请使用PNG。使用JPEG,你可以得到的最好的是在RGB色彩空间中质量= 100的最低损耗JPEG(这不是100%)。