修复损坏的jpg文件


11

嗨,我确定有人问过很多类似的问题,但是经过大量搜索后,我没有发现任何描述我的情况的帖子。

我有一些jpg文件,它们在某个点之后颜色有些错误,而且每个像素都向左移动。我认为这是因为在更改时缺少一些字节。我尝试使用vi编辑文件,但似乎无法找出丢失的字节在哪里,而且vi使用起来非常复杂。我也尝试过nano,但是它不是二进制安全的。

这是有问题的图像之一:

在此处输入图片说明

所以我想问你两个问题:

  1. 如何在Linux中修复此类映像?
  2. 如何在Linux下的二进制文本编辑器中安全地打开和编辑文件?

编辑: 使用hexedit我发现从位置0x27F000到0x27F403只有一个0xff,从0x27F404到0x27FFFF只有零0x00。这使得像这样:

    0027EFF0   F8 83 C3 E2  09 35 AF 13  44 6E C5 FD  C7 EF 23 E8  .....5..Dn....#.
    0027F000   FF FF FF FF  FF FF FF FF  FF FF FF FF  FF FF FF FF  ................
    [...]
    0027F400   FF FF FF FF  00 00 00 00  00 00 00 00  00 00 00 00  ................
    [...]
    0027FFF0   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................
    00280000   8F 39 6E 47  4F 43 5F 36  7C 73 66 F1  0D AE AD AF  .9nGOC_6|sf.....

用随机数更改这些字节可以消除图像移位,但是仍然存在颜色问题。

有人可以指出一些有关jpeg编码的文档,这样我就可以弄清楚如何知道8x8块在哪里结束。

我想知道为什么位置如此精确(0x27F000至0x27FFFF),这可能是我的摄像头或使用的存储卡的错误吗?


我曾经在大量图像上发生过这种情况。我最终删除了它们,真的很可惜。我很想知道您是否能成功地修理这些,您的工作艰巨。
dtmland

是的,这是一个耻辱,我正在尝试弄清此jpeg文件是如何编码的,这只是我必须删除的8x4000px行。在此文件中,准确的4KB损坏为4.4MB,小于0.1%!!!
福尔克(Falk)2013年

Answers:


2

有关http://en.wikipedia.org/wiki/JPEG#Entropy_coding的Wikipedia文章,有很多信息-与您当前问题最相关的是此信息:

先前的量化DC系数用于预测当前的量化DC系数。两者之间的差异被编码,而不是实际值。63个量化的AC系数的编码不使用这种预测差异。

图像其余部分的颜色偏移是由单个不良的DC系数引起的,该系数会级联到所有其余部分。您可能能够找到可靠地影响颜色的较小区域(可能是一个字节,可能是两个字节-实际上可能是一些位序列),并为此尝试了许多不同的值。

在图形编辑器中简单地修复图像可能会更容易-看起来像您发布的图像,除了平移(和环绕)之外,其亮度可能更低,您可以选择区域并使用“色阶”工具。其他人涉及颜色偏移,通过查看颜色通道中的分解(JPG可能是RGB或Y'CbCr)并单独固定每个通道(可能交换通道),您也许可以获得足够好的结果。

编辑:糟糕,我没有看到您的问题多大了。好吧,这可能对您或其他人有用。


非常感谢,不在乎问题的年代,还有图像等等。
Falk 2015年

我认为相机没有想到这种情况真是太可惜了,他们应该每n(例如32)行块放置一些关键块。另一个问题是,我什至不知道像Huffman这样有损压缩之后是否进行了无损压缩。我宁愿玩一些字节,也不愿使用图形编辑器打开图像:首先,大多数都不希望打开这些图像,其次,我认为我无法找到一些滑块来进行精确的校正。@ Random832谢谢,如果您还知道其他,请告诉我。
2015年


0

你试过了photorec吗?您可以像这样在Ubuntu上安装它:

sudo apt-get install testdisk

使用以下方法检查手册:

man photorec

photorec像这样从终端运行:

photorec

它将要求您选择源和目标,然后尝试自动恢复jpg文件。

为避免损坏原稿,建议您使用以下dd命令进行复印。祝好运!


1
嗨,photorec旨在从损坏的文件系统中恢复文件,在我看来,文件系统很好,但图像已损坏,因此情况完全不同。
Falk

3
嗨,正如我之前写的,文件系统没有任何问题,是JPEG文件出错了,还是要感谢。
福尔克

1
我知道photorec的工作原理,这不是我所需要的,它只会照原样复制图片而无需修复。
Falk

1
我只是想帮忙。您会输入,所以您没有尝试?我实际上是在SD卡上运行它,是的,它可以复制它们,但它也可以固定它们。可以忍受尝试吧?如果不值得尝试,祝您好运。我要说的是它确实为我修复了它。为了避免无休止的讨论,我不会再作任何回应。
文森特·格里斯

1
我不会尝试,因为要使用设备作为参数来运行photorec,我的jpg文件在我的硬盘上就可以了。这只是一种不同的情况。就像我说的谢谢。
Falk

-1

我只是使用Photorec从损坏的SD卡中恢复图片。尽管它没有恢复所有文件,但在恢复大量文件方面做得很好。话虽如此,MP4视频已恢复,但无法打开。已恢复了一些JPEG文件,但也无法查看它们或将它们真正弄乱了,如该线程开头提供的示例。Photorec不能修复它们。

底线:Photorec旨在从损坏的文件系统中检索丢失的文件,但显然不做任何事情来恢复损坏的文件的内容。


嗨,Wander,我知道photorec,但这不是我想要的。它不会修复损坏的文件。
Falk
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.