デジタルカメラ画像のヘッダー修復例ここでは、デジタルカメラ画像のヘッダー(SOIからSOSまで)とイメージデータの先頭が無くなってしまった、言わば最悪な状態の修復例を説明します。普通はJPEGヘッダーが壊れたり無くなってしまったりした場合、復元は出来ません。条件付きですが何が写っているかまでは修復出来たケースが何件かあり、大事な写真画像なら試す価値は有るかと思います。修復ファイルの条件=カメラが出力した未加工のファイルもし、同じ時期に撮影した写真や、同じフォルダーにある写真など、破損したファイルと条件が同じファイルが複数有れば、それらをJpegAnalyzerで見比べて下さい。以下の点が共通なら、それらのファイルのヘッダーを使って修復出来るかもしれません。******デジタルカメラから直接出力されたJPEGファイルは、全メーカー共通の固定ハフマンテーブルを使います。画像に内蔵のテーブル(鍵)が無くても、固定ハフマンテーブル(合鍵)で復号出来ます。加工ソフトで処理をした際にハフマンテーブルの最適化を行うと、画像固有のテーブルになります。画像固有のハフマンテーブルが破損してしまうと鍵を紛失したのと同じく復元は不可能です。デジタルカメラから出力されたJPEGファイルだと画像のサイズは僅か数パターンしか有りません。サイズが判らなくても画像が表示されるか全パターン試す事が出来ます。リサイズやトリミング処理したファイルは、画像サイズが判らなくなると気が遠くなりそうな数を試さなくてはならず、探すのは無理とは言わないまでもかなりの労力を要します。解析パターンの確認これから修復方法を説明するのは以下の2種類のどちらかのパターンの場合です。メニューの設定>マーカ・セグメント誤検出防止の下半分の設定を全てOFFで解析して下さい。JPEGファイルの中間部分が残っている場合、このような表示になります。◆JPEGファイルの後半部分が残っている場合、このような表示になります。以下のようにRSTが検出される場合はツールメニューのヘッダー修復機能を使って下さい。該当するリストの場合、イメージデータのサイズ(ファイルサイズ)を確認して下さい。少ないと修復してもまともな絵にはなりません。人物が写った写真で足元しか残っていない写真なんて修復出来たとしてもいらないですよね?同じ条件で撮った正常ファイルと比べて何割程度画像データが残っているか見積もって修復するかどうか決めて下さい。次に、データが本当にイメージデータかどうか判断して下さい。JPEGイメージデータは圧縮されていますのでランダムなコードが並びます。ダンプ表示をさせ、データの特徴を見ながら、スクロールしたりページ送りをしてファイル全体の状態を見て判断します。.Jヨ1.2..」,ロ。<--ASCII表示部-->【16進表示部】ポイント1:FF00の有無イメージデータはファイルに記録される際、0x00から0xFEまではそのままですが、0xFFはマーカと間違わないように0xFF00に変換して記録されます。そのためJPEGイメージデータでは他のバイナリーデータと比べ0xFF00というコードが頻発する特徴があります。JPEG以外のバイナリーファイルでは0xFF00(白文字)はダンプ画面1ページに1回有るか無いか程度の割合ですが、JPEGイメージデータの場合、1ページに10件前後記録されます。ポイント2:マーカの有無イメージデータの先頭にはSOS(0xFFDA)が、終わりにはEOI(0xFFD9)が記録されています。リスタートインタバル処理されたイメージだと、RST(0xFFD0〜0xFFD7)が間を置いて記録されます。それ以外のマーカ(赤文字の0xFF??)が記録されている場合、イメージデータではありません。【ASCII表示部】2〜3文字の単語なら偶然揃うことも有りますが、それより長い何か意味の有る文字が書かれている場合、イメージデータではありません。作業を何度か繰り返す事になるので、JpegAnalyzerの多重起動機能を使い、2つ起動させると効率良く作業出来ます。同じカメラから出力された正常なJPEGファイルからヘッダー部分をコピーします。正常なファイルを読み取り、SOIからSOSまでを選択し、コピーを選びます。次に破損ファイルを読み取り、先頭の"不明な領域"となっている行を選択し、領域貼り付けを選びます。この時点で解析エラーは出なくなると思いますが、エラーが表示されたらエラーの内容を調べて原因を除きます。"EOIがありません"というエラーはこの時点は支障無く無視してかまいません。プレビュー画像の状態確認プレビューボタンを押し、画像の状態を見て判断します。次のステップに進みます砂嵐のような画像ハフマンテーブルが合っていない可能性がありますTVのチュニングがずれたような画像SOF(画像サイズやサンプリング比)が合っていない可能性があります影や輪郭のような絵が出る量子化テーブルが合っていない可能性がありますうまくいかない場合、以下の点を変えてやりなおして下さい。・コピーするヘッダー用のファイルを変えてみる・イメージデータの先頭を1バイト削除してみる全体的に明るさや色がおかしくなっている場合イメージデータのDC成分は先頭に直接の値、継続するデータは前のデータの差分となります。先頭のデータが失われている為、差分データしか無い訳です。本来その位置に記録されるDC成分の直接値と実際に記録されている差分値が一致すればいのですが、一致するのは偶然です。後で加工ソフトを通す事になるのですが、加工ソフトで修正出来るものなら修正で直した方が確実です。加工ソフトで修正出来そうも無い場合、まともな絵が出るまでイメージデータの先頭を1バイトづつ削除して下さい。*****"と表示された行から右クリックし、ダンプを選びます。ダンプ画面のイメージデータの先頭が反転しますから、その部分にマウスを当てて右クリック"1byte削除"を選びます。削除しますか?のメッセージにOKを返します。以下の点が考えられます。いずれも修復は無理ですので諦めて下さい。・ハフマンコードが最適化されている・イメージデータが間引き的に間欠状態で破損している・JPEGのイメージデータではない写真の一部と判る画像になったらこの画像の見えている状態を少し説明しておきます。ファイルはバイト単位で記録されていますが、JPEGのイメージデータはビット単位に記録されています。よって、イメージデータの先頭が欠けた状態では、ハフマンコードの途中のビットから始まる事になります。ハフマンコードの同期が合わない状態が先頭データで何度か繰り返されるうちに偶然に同期が合い、その後はデータが破損していない限りデータの最後まで同期が合った状態が続くという感じになっています。先頭のデータ数バイトは全く絵になっていないのですが、削除すると同期合わせのプロセスが変わり、絵の開始位置が変わってしまいます。データが左端から始まるとは限りません。ずれていると、写真を縦半分に分けて右と左を逆にしたような絵になります。これ以降はJpegAnalyzerで処理出来ません。EOIが無ければEOIを付けて一旦保存し、画像加工ソフトでトリミングしたり左右を入れ替えたりして修復して下さい。左右を入れ替える場合、右にくる画像がサンプリング比が4:2:2の場合8ドット、4:2:0の場合16ドット上にずれますので、下げて貼り合わせて下さい。再圧縮することになりますが、その時点で正常なイメージデータになるので画像が劣化する分は諦めて下さい。画像データ先頭に同期の合っていないビットデータがある為、ソフトによってはエラーになったり表示内容が変わったりする場合が有ります。エラーデータの扱いはソフトにより異なるので、そう言った場合はソフトを変えて試して下さい。最後に、始めて修復をされる場合、何をするにしても半信半疑だと思います。一度正常な画像のヘッダー部分を含む先頭データをバイナリーエディターなどでをカットし、擬似破損ファイルを作って修復の練習をするといいでしょう。実績が出来るので自信を持って処理を進められます。