Rad*_*yan 5 jpeg lossless images conversion
假设我有一个之前以 JPEG 格式压缩的图像的无损版本(例如,如果您在 mspaint 中打开 JPEG 图像并将其另存为 BMP,我知道在此过程中会丢失一些元数据,但这不是我关心的)
我想知道是否可能以及如何将其转换回 JPEG 格式而不损失图像质量,这意味着每个像素都完全相同?
编辑:我完全理解将 JPEG 图像转换为无损格式不会给我带来任何额外的质量。我问这个是因为:我有一个从 SWF 文件中提取的 PNG 文件。最初(在 SWF 文件中)对象是 JPEG 图像 + alpha 通道,其文件大小比我拥有的 PNG 文件要小得多。我想要原始格式(JPEG + Alpha 通道),但我不再拥有原始 SWF 文件的任何副本(而且我也未能在网上找到一份副本),因此我无法重做提取过程。
小智 5
本质上,您要问的是 JPEG 图像的解码过程是否可以逆转。这与传统 JPEG 编码器的意图非常不同,我不知道有任何软件可以实现这一点。从数学上讲,这是可能的*,只要图像在编码后没有应用变换或其他修改,但从编程上讲,这有多困难?
第一个问题是颜色空间 - JPEG 使用子采样(在一组像素上采样的颜色)yCbCr,而位图是 RGB。这些色彩空间之间的转换(以及任何伽玛调整中)不可避免的损失会引入噪声。要解决的第二个问题是 JPEG 将图像数据记录为宏块(NxN 大小的子图像),这必须从解码器的输出图像中推断出来。关于 JPEG 格式和编码过程的更深入的解释可以在这里找到:http://www.guillermito2.net/stegano/jsteg/
为了创建原始 JPEG 数据的近似值,我们需要找到宏块的子采样、大小和对齐方式,以及用于对其进行编码的离散余弦变换 (DCT) 系数。其余部分与普通 JPEG 编码过程相同。我想到的一种天真的实现是“有根据的猜测和检查”:假设使用一些常见的 JPEG 实现来创建图像,并尝试应用它们,直到发现 DCT 具有“类似 JPEG”的结果(通常为零)高频)。
之后,微调系数以获得与原始图像(即压缩图像的位图)相比的最小误差。此过程仍然会导致错误和文件大小之间的权衡,但对于实际目的来说它应该足够接近。
来源:之前的工作验证 DNx 和 ProRes 视频编解码器,这些编解码器将类似 JPEG 的编码应用于每个单独的帧(反转解码帧的软件将是一个非常有趣且可能有用的副项目)。
* 存在一组输入数据,当通过原始 JPEG 解码器时将产生相同的输出,但是任何重建都不太可能成为原始文件的字节副本(忽略元数据),因为信息在解码过程中丢失过程。
| 归档时间: |
|
| 查看次数: |
4223 次 |
| 最近记录: |