壊れたjpgファイルを修復する


11

こんにちは私は似たような質問がたくさんあると確信していますが、たくさん検索した後、自分の状況を説明する投稿は見つかりませんでした。

特定のポイントの後でいくつかの色が間違っているいくつかのjpgファイルがあり、すべてのピクセルが左にシフトしています。これは、変更された時点でバイトが欠落しているためだと思います。私はviでファイルを編集しようとしましたが、不足しているバイトがどこにあるのかを見つけるのは不可能のようです。また、viの使用は非常に複雑です。nanoも試しましたが、バイナリセーフではありません。

これは問題の画像の1つです。

ここに画像の説明を入力してください

だから私はあなたに2つの質問をしたいと思います:

  1. Linuxでこのようなイメージを修復するにはどうすればよいですか?
  2. Linuxでバイナリテキストエディターでファイルを安全に開いて編集するにはどうすればよいですか?

編集: hexeditを使用して、位置0x27F000から0x27F403までは0xffが1つだけあり、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 2013年

はい、それは残念です、私はこのjpegファイルがどのようにエンコードされるかを理解しようとしています、それは私が削除しなければならない1つだけの8x4000px行です。このファイルでは、4.4MBのファイルに4KBの損傷があります。0.1%未満です!!!
フォーク2013年

回答:


2

http://en.wikipedia.org/wiki/JPEG#Entropy_codingのウィキペディアの記事には多くの情報があります-現在の問題に最も関連するのはこれです:

以前の量子化されたDC係数は、現在の量子化されたDC係数を予測するために使用されます。2つの違いは、実際の値ではなくエンコードされます。63の量子化されたAC係数のエンコードでは、このような予測差分は使用されません。

画像の残りの部分でのカラーシフトは、残りすべてにカスケードする単一の不良DC係数によって引き起こされます。色に確実に影響を与える小さな領域(おそらく1バイト、おそらく2バイト-それは実際にはいくつかのビットのシーケンス)を見つけ、そのために多数の異なる値を試すことができる場合があります。

グラフィックエディタで画像を修正する方が簡単な場合があります。シフト(およびラップアラウンド)を除いて、投稿した画像のように見えますが、単に明るさが低く、領域を選択してレベルツールを使用できます。カラーシフトがより複雑な他のツールでは、カラーチャネル(JPGはRGBまたはY'CbCrの場合がある)の分解を確認し、各チャネルを個別に修正して、チャネルを交換することで、十分な結果が得られる場合があります。

編集:おっと、あなたの質問が何歳かわかりませんでした。まあ、多分これはあなたや他の誰かに役立つでしょう。


多くの感謝は、質問の年齢を気にしないで、まだイメージといくつかを持っています。
Falk

カメラがそのような状況を想定していなかったのは残念だと思います。n(たとえば32)行のブロックごとにいくつかの重要なブロックを配置する必要があります。もう1つの問題は、ハフマンのように、非可逆圧縮の後に非可逆圧縮が適用されるかどうかさえわからないことです。グラフィックエディターで画像を開くよりも、いくつかのバイトで遊んでみたいです。最初に、ほとんどの人がこれらの画像を開きたくないので、次に、いくつかのスライダーで遊んで正確な修正を見つけることができなかったと思います。@ Random832感謝し、あなたがもっと何かを知っているなら教えてください。
フォーク

1

2)Linuxでバイナリテキストエディターでファイルを安全に開いて編集するにはどうすればよいですか?

多くの優れたバイナリエディタがここにあります:https : //stackoverflow.com/questions/839227/how-to-edit-binary-file-on-the-unix-systems

私の個人的なお気に入りは:%!xxdハックとhexeditを使用したvim です


2
わかりました、そしてもっと使いやすいものは?ナノのように。
フォーク

のような簡単なshed
Attie

0

試しましたphotorecか?次のようにしてUbuntuにインストールできます。

sudo apt-get install testdisk

マニュアルを確認してください:

man photorec

次のphotorecようにターミナルから実行するだけです:

photorec

ソースと宛先を選択し、jpgファイルを自動的に復元するように求められます。

オリジナルの損傷を防ぐために、ddコマンドを使用してコピーを作成することをお勧めします。幸運を!


1
こんにちは、photorecは破損したファイルシステムからファイルを回復するように設計されています。私の場合、ファイルシステムは問題ありませんが、画像が破損しているため、状況はまったく異なります。
2017年

3
こんにちは、先に書いたように、ファイルシステムに問題はありません。とにかく、エラーが発生したのはJPEGファイルです。
フォーク2017年

1
私はphotorecがどのように機能するかを知っています。それは私が必要とするものではありません。修復せずに画像をそのままコピーするだけです。
フォーク2017年

1
私はただ手助けしようとしています。入力するので、試しませんでしたか?私は実際にそれをSDカードで実行し、はいそれはそれらをコピーしますが、それもそれらを修正しました。試すのに害はありませんよね?試してみる価値がない場合は、幸運を祈ります。私が言っているのは、それが私のためにそれを修理したということだけです。終わりのない議論を避けるためにこれ以上返答しません。
Vincent Gerris 2017年

1
photorecはデバイスをパラメーターとして実行するようにメンテされているので、私はそれを試しません。私が持っているjpgファイルは私のhddにあり、これはまったく問題ありません。それは異なるタイプの状況です。私が言ったようにとにかくありがとう。
フォーク2017年

-1

Photorecを使用して、破損したSDカードから画像を復元しました。すべてのファイルを回復したわけではありませんが、かなりの数のファイルを回復する素晴らしい仕事をしました。とはいえ、MP4ビデオは復元されましたが、開くことができませんでした。一部のJPEGファイルは復元されましたが、このスレッドの最初に提供されたサンプルのように、表示できないか、実際にめちゃくちゃになりました。Photorecはそれらを修正しませんでした。

結論:Photorecは破損したファイルシステムから失われたファイルを取得するように設計されていますが、破損したファイルの内容を回復するために何もしません。


こんにちは、ワンダー、私はphotorecを知っていますが、それは私が探しているものではありません。破損したファイルは修正されません。
フォーク
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.