如何通过更换MCU来修复JPEG?

问题描述 投票:0回答:0

从我损坏的微型 SD 卡中,许多 JPEG 文件已损坏,如下图所示。幸运的是,我备份了其中一些文件。所以我可以比较一些原始文件和损坏文件之间的十六进制。

JPEG图像文件由许多MCU(Minimum Coded Unit)组成,大小为8×8、16×8或16×16像素的块。

(引自http://anderspedersen.net/jpegrepair/

由于 JPEG 文件的压缩方式,MCU 中的错误是 可能传播到剩余的图像数据,要么取代 图像或改变颜色。 JPEG Repair Shop 让您可以 删除和插入 MCU 并自动修复颜色错误。

有一个 Windows 程序,JPEG Repair Shop,它利用了这个想法。

有几个问题我不能使用这个软件。

  • 我更喜欢在 Linux 上工作。
  • 这不是自动的。我们必须手动逐一单击每个 JPEG 文件。有 1,000 个 JPEG 文件需要修复。
  • 我的 JPEG 文件被多个 MCU 损坏。我尝试手动修复我的一个文件。单击几下无法修复它。只有通过脚本自动化流程才可行

我确实找到了一些关于解码和恢复 JPEG 文件的好资源:

使用 Python 理解和解码 JPEG 图像 Yasoob Khalid

这是一篇很好的文章,教我们写一个JPEG解码器。

Husrev T. Sencar 和 Nasir Memon 对具有缺失片段的 JPEG 文件的识别和恢复

这篇优秀的研究论文投资于从损坏的硬盘中恢复 JPEG 片段。老实说,我只是浏览了这篇论文。在我的情况下,这可能有点矫枉过正。我的原始文件和损坏的文件大小相同。所以我想我没有丢失片段,而是有几百位丢失了。

我想编写一个 Linux 脚本或程序来用虚拟 MCU 替换损坏的 MCU,以便可以正确显示以下未损坏的 MCU。 这正是 JPEG Repair Shop 所做的,但是是以自动化的方式。

理想情况下,我们可以通过 JPEG 文件中的 HEX 来检测每个 MCU。但是在 another stackoverflow thread 他说:

检测 MCU 边界的唯一真正方法是熵解码 扫一扫

我在想,Linux世界应该已经有很多JPEG解码器了。例如,使用 ImageMagick 将 JPEG 转换为位图实际上是在解码吗?在 Yasoob Khalid 的文章之后,我是否需要编写一个新的解码器? JPEG 文件解码后(使用现有的解码器,或 ImageMagick,或 Yasoob Khalid 的),如何用虚拟 MCU 替换某个 MCU?

image jpeg corrupt
© www.soinside.com 2019 - 2024. All rights reserved.