(57)【要約】      （修正有）【課題】断片化されたＪＰＥＧ画像の断片化ポイントおよび継続ポイントを、そのＪＰＥＧ画像を再構成する目的で見つける方法及び装置を提供する。【解決手段】複数の連続したデータセクタにおいて、ＪＰＥＧファイル署名を備えるデータセクタから、再構成されるべきＪＰＥＧ画像に対応するＪＰＥＧサムネイルを抽出しＳ３０４、続くデータセクタから、再構成されるべきＪＰＥＧ画像のデータセクタ、および第一の断片化ポイントデータセクタを決定しＳ３０６、第一の断片化ポイントデータセクタに対応するリスタートマーカ値に基づいて、複数の候補データセクタを選択しＳ３０８、継続ポイントデータセクタを決定しＳ３１０、候補データセクタを、再構成されるべきＪＰＥＧ画像のデータセクタに追加することで、データセクタの候補集合を形成しＳ３１２、候補データセクタをさらなるデータセクタを決定する継続ポイントデータセクタとして選択するＳ３１８。【選択図】図３
2017022690.tif 000002
【特許請求の範囲】
【請求項１】
複数の連続したデータセクタを備えるデータセクタの集積（１００、２００）から、断片化されたＪＰＥＧ画像を再構成する際に使用する方法（３００）であり、前記複数の連続したデータセクタの少なくともいくつかが、各リスタートマーカ値を備える方法であって、
ａ）前記複数の連続したデータセクタにおいて、ＪＰＥＧファイル署名を備えるデータセクタ（１０２）の位置を特定すること（Ｓ３０２）と、
ｂ）前記ＪＰＥＧファイル署名を備える前記データセクタおよび少なくとも一つの続くデータセクタから、再構成されるべきＪＰＥＧ画像に対応するＪＰＥＧサムネイルを抽出すること（Ｓ３０４）と、
ｃ）前記ＪＰＥＧファイル署名を備える前記データセクタに続くデータセクタから、前記再構成されるべきＪＰＥＧ画像に属するデータセクタ、および第一の断片化ポイントデータセクタを決定すること（Ｓ３０６）であって、前記第一の断片化ポイントデータセクタはリスタートマーカ値に対応することと、
ｄ）前記第一の断片化ポイントデータセクタに対応する前記リスタートマーカ値に基づいて、各リスタートマーカ値を備える前記複数のデータセクタの前記少なくともいくつかにおいて、複数の候補データセクタを選択すること（Ｓ３０８）と、
ｅ）各候補データセクタについて継続ポイントデータセクタを決定すること（Ｓ３１０）と、
ｆ）少なくとも前記候補データセクタを、前記再構成されるべきＪＰＥＧ画像に属する前記データセクタに追加することで、データセクタの候補集合を形成すること（Ｓ３１２）と、
ｇ）前記データセクタの候補集合および前記ＪＰＥＧサムネイルを適合度関数のパラメータとして使用することで、前記候補データセクタの適合度スコアを算出すること（Ｓ３１４）と、
ｈ）前記算出された適合度スコアの中で最も高い適合度スコアを有する前記候補データセクタを、前記再構成されるべきＪＰＥＧ画像に属するさらなるデータセクタを決定するための継続ポイントデータセクタとして選択すること（Ｓ３１８）と、を備える方法。
【請求項２】
前記ステップｃ）は、
データセクタが先行するデータセクタのリスタートマーカ値に続かないリスタートマーカ値を備えることを決定することと、
データセクタが低いエントロピーデータを備えることを決定することと、のうち、少なくとも一つを備える、請求項１に記載の方法。
【請求項３】
前記ステップｆ）は、
前記候補データセクタに続くデータセクタから、同じＪＰＥＧ画像に属するデータセクタ、および第二の断片化ポイントデータセクタを決定することであって、前記同じＪＰＥＧ画像に属する前記データセクタは、前記候補セクタを備えることと、
前記同じＪＰＥＧ画像に属する前記データセクタを、前記再構成されるべきＪＰＥＧ画像に属する前記データセクタに追加することによって、前記データセクタの候補集合を形成することと、を備える、請求項１−２のいずれかに記載の方法。
【請求項４】
同じＪＰＥＧ画像に属するデータセクタ、および第二の断片化ポイントデータセクタを決定するステップは、
データセクタが先行するデータセクタのリスタートマーカ値に続かないリスタートマーカ値を備えることを決定することと、
データセクタが低いエントロピーデータを備えることを決定することと、のうち、少なくとも一つを備える、請求項３に記載の方法。
【請求項５】
前記ステップｇ）は、前記データセクタの候補集合を復号化して、候補ＪＰＥＧ画像を形成することを備え、前記適合度関数は、前記候補ＪＰＥＧ画像を前記ＪＰＥＧサムネイルと比較することを備える、請求項１乃至４のいずれか一項に記載の方法。
【請求項６】
前記ステップｇ）は、前記ＪＰＥＧサムネイルのサイズに合うよう前記候補ＪＰＥＧ画像をスケール変更することを備える、請求項５に記載の方法。
【請求項７】
前記ステップｇ）は、前記候補ＪＰＥＧ画像および前記ＪＰＥＧサムネイルをグレースケールに変換することを備え、
前記適合度関数は、前記候補ＪＰＥＧ画像の各画素と前記ＪＰＥＧサムネイルの対応する画素との間の差を算出すること、および前記差を閾値と比較し、前記閾値を満たす各差のカウンタ値を増やすことを備え、前記適合度スコアは、前記カウンタ値に対応する、請求項６に記載の方法。
【請求項８】
前記ステップｇ）は、前記候補ＪＰＥＧ画像および前記ＪＰＥＧサムネイルをグレースケールに変換することを備え、
前記適合度関数は、前記候補ＪＰＥＧ画像の画素と前記ＪＰＥＧサムネイルの対応する画素と間の差を算出すること、前記算出された差を第一の閾値と比較して前記第一の閾値を満たさない各差のカウンタ値を増やすことを備え、前記差の算出および比較は、前記カウンタ値が第二の閾値を超える場合は行われず、前記適合度スコアは、前記カウンタ値が前記閾値を超える場合は第一の値に設定され、前記カウンタ値が前記第二の閾値を超えない場合は前記第一の値よりも高い第二の値に設定される、請求項６に記載の方法。
【請求項９】
各リスタートマーカ値を備える前記複数の連続したデータセクタの前記少なくともいくつかを、複数のリストに分類するステップをさらに備え、各リストはリスタートマーカ値に対応し、それぞれが前記リスタートマーカ値を備える複数のデータセクタを備え、
前記ステップｄ）は、前記断片化ポイントデータセクタの前記リスタートマーカ値に基づいてリストを選択することを備え、前記複数の候補データセクタは、前記選択されたリスト内の前記複数のデータセクタを備える、請求項１乃至８のいずれか一項に記載の方法。
【請求項１０】
前記複数の連続したデータセクタの各データセクタのエントロピー値を算出するステップをさらに備え、前記複数の候補セクタのそれぞれは、閾値エントロピー値を超えるエントロピー値を有する、請求項１乃至９のいずれか一項に記載の方法。
【請求項１１】
各リスタートマーカ値を備える前記複数の連続したデータセクタの前記少なくともいくつかを、複数のリストに分類する前記ステップは、前記閾値エントロピー値を超えるエントロピー値を有するデータセクタのみを分類することを備える、請求項９に従属する請求項１０に記載の方法。
【請求項１２】
ステップｄ）−ｈ）は、前記再構成されるべきＪＰＥＧ画像に属する全てのデータセクタが決定されるまで、前記第二の断片化ポイントデータセクタおよび任意のさらなるデータの断片化ポイントを探して繰り返される、請求項３もしくは、請求項３に従属する請求項４乃至１０のいずれか一項に記載の方法。
【請求項１３】
処理能力を有する装置によって実行されると、請求項１乃至１１のいずれか一項に記載の方法を実行するよう適応された命令を有するコンピュータ可読記憶媒体を備える、コンピュータプログラム製品。
【請求項１４】
複数の連続したデータセクタを備えるデータセクタの集積（１００、２００）から、断片化されたＪＰＥＧ画像を再構成する際に使用する装置であり、前記複数の連続したデータセクタの少なくともいくつかが、各リスタートマーカ値を備える装置であって、
ａ）前記複数の連続したデータセクタにおいて、ＪＰＥＧファイル署名を備えるデータセクタ（１０２）の位置を特定（Ｓ３０２）し、
ｂ）前記ＪＰＥＧファイル署名を備える前記データセクタおよび少なくとも一つの続くデータセクタから、再構成されるべきＪＰＥＧ画像に対応するＪＰＥＧサムネイルを抽出（Ｓ３０４）し、
ｃ）前記ＪＰＥＧファイル署名を備える前記データセクタに続くデータセクタから、前記再構成されるべきＪＰＥＧ画像に属するデータセクタ、および第一の断片化ポイントデータセクタを決定（Ｓ３０６）し、前記第一の断片化ポイントデータセクタはリスタートマーカ値に対応し、
ｄ）前記第一の断片化ポイントデータセクタに対応する前記リスタートマーカ値に基づいて、各リスタートマーカ値を備える前記複数のデータセクタの前記少なくともいくつかにおいて、複数の候補データセクタを選択（Ｓ３０８）し、
ｅ）各候補データセクタについて継続ポイントデータセクタを決定（Ｓ３１０）し、
ｆ）少なくとも前記候補データセクタを、前記再構成されるべきＪＰＥＧ画像に属する前記データセクタに追加することで、データセクタの候補集合を形成（Ｓ３１２）し、
ｇ）前記データセクタの候補集合および前記ＪＰＥＧサムネイルを適合度関数のパラメータとして使用することで、前記候補データセクタの適合度スコアを算出（Ｓ３１４）し、
ｈ）前記算出された適合度スコアの中で最も高い適合度スコアを有する前記候補データセクタを、前記再構成されるべきＪＰＥＧ画像に属するさらなるデータセクタを決定するための継続ポイントデータセクタとして選択（Ｓ３１８）するよう適合される、装置。
【請求項１５】
前記ステップｃ）は、
リスタートマーカを有するセクタ以降に通過したＭＣＵの数が、ＤＲＩタグの値よりも多いことを決定することと、
リスタートマーカを有する二つのセクタの間を通過したＭＣＵの数が、ＤＲＩタグの値よりも少ないことを決定することと、のうち、少なくとも一つを備える、請求項１に記載の方法。
【請求項１６】
前記ステップｆ）は、少なくとも前記候補データセクタの前のＭＣＵの数に対応した追加のデータセクタを、前記再構成されるべきＪＰＥＧ画像に属する前記データセクタに追加することを備え、前記ＭＣＵの数は、前記ＤＲＩタグの前記値と、リスタートマーカ値を有する二つのセクタの間を通過した前記ＭＣＵの決定された数との間の差に対応する、請求項１５に記載の方法。
【請求項１７】
前記ステップｃ）は、少なくとも一つのハフマンテーブルに対応する少なくとも一つのＤＨＴマーカを解析することと、リスタートマーカを持たないデータセクタ内で見つかったビットパターンが前記少なくとも一つのハフマンテーブル内に存在しないことを決定することと、を備える、請求項１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、断片化されたファイルの復元に関する。特に、本発明は、断片化されたＪＰＥＧ画像の断片化ポイントおよび継続ポイントを、そのＪＰＥＧ画像を再構成する目的で見つけることに関する。
【背景技術】
【０００２】
デジタル記憶媒体の採用が増え続けるのに伴い、より高精度なデータ復元および法科学復元製品へのニーズもまた増えている。多くのファイルシステムおよび記憶装置は、データを多くのクラスタに分割することによって、および各ファイルのデータを格納するために使用されるクラスタのリスト（ファイルテーブル）を維持することによって、データを格納する。例えば、ファイルシステムＦＡＴ−３２においては、ファイル名を有するルートテーブルのエントリは、ファイルの第一のクラスタを指示し、それは続いて次のクラスタを指示するなどして、ファイルの最後のクラスタまで指示する。ファイルがアクセスされると、データは続いてこのクラスタのリストから検索される。同様に、ファイルの削除は概して、ファイルテーブルからファイルのエントリを除去することによって認識される。従来のデータ復旧および法科学製品は、ファイルシステムを分析することによって、およびファイルシステムによって指示されたデータを抽出することによってデータを復旧しようと試みる。従来の復旧技術は、ファイルシステムが破損している、存在しない、もしくはエントリが紛失している場合、データの復旧に失敗する。所謂“ファイルカービング”が、ディスクの“割り当てられない”スペース（ファイルシステムによって指示されないディスクのエリア）からファイルを復旧するために導入された。
【０００３】
ファイルは、データセクタの連続体に格納されない場合、“断片化された”とされる（“データセクタ”という用語の意味は、“クラスタ”もしくは“データブロック”を含むと意図される）。例えば、ファイルの断片化は、ファイルがディスク上の連続したデータセクタに正しい順で格納されない場合に起こるとされる。言い換えれば、ファイルが断片化されると、ファイルの始めからファイルの終わりまでのデータセクタの順は、部分的におよび／または不正確なファイルの再構築につながる。
【０００４】
法科学の観点から復旧するのが興味深いファイルの一つは、ＪＰＥＧ画像である。ＪＰＥＧ画像は多くのデータを含みうるため、ＪＰＥＧ画像が断片化されるリスクは相当なものでありうる。Ｍａｒｉｎ  Ｋａｒｒｅｓａｎｄ著の“Ｃｏｍｐｌｅｔｉｎｇ  ｔｈｅ  Ｐｉｃｔｕｒｅ−Ｆｒａｇｍｅｎｔｓ  ａｎｄ  Ｂａｃｋ  Ａｇａｉｎ”は、ＪＰＥＧ画像を再構成する方法を提案しており、ＪＰＥＧ画像のデータセクタに含まれるＲＳＴマーカが、ＪＰＥＧ画像を再構成する際に組み合わされるのが可能なデータセクタを決定するために使用される。ＪＰＥＧ圧縮は周波数領域にデータを格納することから成るため、データの二つのセクタの組み合わせは、データの別個のセクタのＤＣ計数を比較することによって有効になる。
【０００５】
しかしながら、これは複雑な方法であり、周波数領域のデータはユーザが把握することが不可能であるため、例えば結果の正確さを手動で確かめるのが難しいことがある。
【０００６】
こうした文脈の中で、本発明の実施形態が生じる。
【発明の概要】
【０００７】
上記に鑑みて、本発明の目的は、上述の欠点の一つもしくはいくつかを、解消するもしくは少なくとも減らすことである。概して、上記の目的は、付属の独立クレームによって達成される。
【０００８】
第一の態様によれば、本発明は、少なくともいくつかが各リスタートマーカ値を備える複数の連続したデータセクタを備えるデータセクタの集積から、断片化されたＪＰＥＧ画像を再構成する際に使用する方法によって実現される。
【０００９】
データセクタは概して、５１２バイトからなるが、異なるタイプのメモリは、他のサイズのデータセクタを備えうる。
【００１０】
リスタートマーカ（ＲＳＴ）は、ＪＰＥＧファイルフォーマットの特徴であり、画像の断片化もしくは破損を検出するのに使用することができる。ＲＳＴ０−ＲＳＴ７と呼ばれる八つの異なるＲＳＴ値があり、１６進数で０ｘＦＦＤ０−０ｘＦＦＤ７と表される。リスタートマーカを使用するＪＰＥＧファイルは、場合によって一つまたは複数のＲＳＴ値を備えないデータセクタすなわちＪＰＥＧ最小符号化単位（ＭＣＵ）、それから次のＲＳＴ値を備えるデータセクタなどが続く、ＲＳＴ値を備えるデータセクタを有する。ＲＳＴ７の後は、次のマーカはＲＳＴ０である。いくつかのＲＳＴマーカ値が一つのデータセクタ内に存在しうることもまた可能である。
【００１１】
本方法は、複数の連続したデータセクタの中で、ＪＰＥＧファイル署名を備えるデータセクタの位置を特定することを備える。
【００１２】
次に、ＪＰＥＧファイル署名を備えるデータセクタおよび少なくとも一つの連続したデータセクタから、再構成されるべきＪＰＥＧ画像に対応するＪＰＥＧサムネイルが抽出されうる。サムネイル画像は、ＪＰＥＧファイルに含まれる小さい画像であり、例えば１６０×１２８画素サイズなど、概して解像度が低い。サムネイルは、メイン画像、すなわち再構成されるべき画像の小さいバージョンである。それらは概して、ＪＰＥＧファイルの最初の数キロバイトに位置しており、断片化されていないサムネイルを取得する可能性は、断片化されていないメイン画像を抽出する可能性よりもはるかに高い。尚、ＪＰＥＧサムネイルは、ＪＰＥＧファイル署名を備えるデータセクタに続くデータセクタからのみ抽出されうる。言い換えれば、ＪＰＥＧファイル署名を備えるデータセクタは、いくつかの実施形態において、ＪＰＥＧサムネイルを構成するデータを何れも備えないことがありうる。ほとんどの場合、ＪＰＥＧサムネイルは、ファイルの第一のセクタ、すなわちＪＰＥＧファイル署名を備えるデータセクタ内では始まらない。通常は、タイムスタンプ、アパチャー設定、および場合によってはＧＰＳ座標等の他のＥＸＩＦメタデータが、実際のサムネイルの前に現れる。
【００１３】
本方法はさらに、ＪＰＥＧファイル署名を備えるデータセクタに続くデータセクタから、再構成されるべきＪＰＥＧ画像に属するデータセクタ、および第一の断片化ポイントデータセクタを決定することを備え、第一の断片化ポイントデータセクタは、リスタートマーカ値に対応する。
【００１４】
例えば、まずＳｔａｒｔ  ｏｆ  Ｓｃａｎ（ＳｏＳ）１６進値を備えるセクタの位置が特定される。ＪＰＥＧ画像ファイルでは、画像の符号化データは、ＳｏＳセクタの直後に来る。ＳｏＳセグメントの後、第一の断片化ポイントデータセクタまでの、および第一の断片化ポイントデータセクタを含む全てのデータセグメントは、再構成されるべきＪＰＥＧ画像に属すると決定される。
【００１５】
断片化は、メモリ内のデータの集積、この場合は再構成されるべきＪＰＥＧ画像が、例えば複数の連続したデータセクタなどの連続した順にない多くの断片に分解される際に起こる。
【００１６】
本明細書で使用されるように、“第一の断片化ポイントデータセクタ”という用語は、連続したデータセクタの中の、再構成されるべきＪＰＥＧ画像に属さないと決定されたデータセクタに先行する最後のデータセクタを意味すると解するべきである。
【００１７】
概して、ＪＰＥＧ符号化画像においては、ＲＳＴマーカを備えるデータセクタには、ＲＳＴマーカを備えない一つまたは複数のデータセクタ、すなわちＪＰＥＧ最小符号化単位（ＭＣＵ）が続く。ＲＳＴマーカを備えない一つまたは複数のデータセクタの数は、ＪＰＥＧ画像で変わりうる。先に述べたように、よくあることではないが、一つのデータセクタ内で複数のＲＳＴマーカに遭遇する可能性がある。リスタートマーカの間のＭＣＵの数を定義するＤＲＩと呼ばれるＪＰＥＧマーカが存在する。ＭＣＵはそれ自体のサイズを変更可能であるため、リスタートマーカ間のバイト（もしくはセクタ）の量を容易に予測できる方法はない。第一の断片化ポイントデータセクタがＲＳＴマーカ値を備えないデータセクタであると決定された場合、第一の断片化ポイントデータセクタは、ＲＳＴマーカを備える直前のデータセクタのリスタートマーカ値に対応すると決定される。複数のＲＳＴマーカが、ＲＳＴマーカを備える直前のデータセクタに存在する場合は、第一の断片化ポイントデータセクタは、複数のＲＳＴマーカの最後の値に対応すると決定される。
【００１８】
本方法はさらに、第一の断片化ポイントデータセクタに対応するリスタートマーカ値に基づいて、各リスタートマーカ値を備える前記少なくともいくつかの複数のデータセクタの中から、複数の候補データセクタを選択することを備えうる。データセクタがいくつかのＲＳＴマーカを備える場合は、データセクタの第一のＲＳＴマーカは、候補データセクタを選択する際に使用される。
【００１９】
本方法の次のステップは、各候補データセクタについて、継続ポイントデータセクタを決定することである。
・少なくとも候補データセクタを、再構成されるべきＪＰＥＧ画像に属するデータセクタに追加することによって、データセクタの候補集合を形成する。
・データセクタの候補集合およびＪＰＥＧサムネイルを適合度関数のパラメータとして使用して、候補データセクタの適合度スコアを算出する。
【００２０】
言い換えれば、各候補データセクタは、再構成されるべきＪＰＥＧ画像に属すると既に決定されたデータセクタに適合するかどうかをテストされ、このテストは、断片化されておらず、したがって実際の再構成されるべきＪＰＥＧ画像のダウンサンプリングしたバージョンを表すＪＰＥＧサムネイルとの比較を含む。ＪＰＥＧサムネイルをキーとして使用し、各候補データセクタの適合度スコアを算出することができる。
【００２１】
これらの算出された適合度スコアから、算出された適合度スコアの中で最も高い適合度スコアを有する候補データセクタを、再構成されるべきＪＰＥＧ画像に属するさらなるデータセクタを決定するための最良の継続ポイントデータセクタとして、有利に選択することができる。尚、“最も高い適合度スコア”という特徴は、候補データセクタおよび再構成されるべきＪＰＥＧ画像に属すると既に決定されたデータセクタの中の、最良適合に対応すると解されたい。
【００２２】
いくつかの実施形態によれば、再構成されるべきＪＰＥＧ画像に属するデータセクタ、および第一の断片化ポイントデータセクタを決定するステップは、
・データセクタが、先行するデータセクタのリスタートマーカ値に続かないリスタートマーカ値を備えることを決定すること。
・データセクタが、低いエントロピーデータを備えることを決定すること。
のうち、少なくとも一つを備える。
【００２３】
例えば、ＲＳＴ３を備えるデータセクタに、ＲＳＴマーカを持たない多くのデータセクタが続き、それからＲＳＴ１を備えるデータセクタが続く場合、ＲＳＴ１マーカを有するデータセクタの直前のデータセクタは、第一の断片化ポイントデータセクタと決定される。言い換えれば、ＲＳＴマーカが間違った順で現れた場合、再構成するべきＪＰＥＧ画像は、断片化されていると考えられる。
【００２４】
断片化を発見するための他の技術は、低エントロピーセクタを探すことである。ＪＰＥＧファイルの（ＳＯＳマーカの後の）メイン領域は、高いエントロピーデータを含むべきである。データセクタが低いエントロピーを有する場合、これは、そのデータセクタが再構成されるべきＪＰＥＧ画像の一部ではないことを示し、低いエントロピーデータを有するデータセクタの直前のデータセクタが、第一の断片化ポイントデータセクタであると決定される。
【００２５】
断片化ポイントが到達されたかを決定するために、上述のＤＲＩタグの値を使用することもまた可能でありうる。いくつかの実施形態によれば、再構成されるべきＪＰＥＧ画像に属するデータセクタ、および第一の断片化ポイントデータセクタを決定するステップは、
・ＲＳＴマーカが見つけられてから通過したＭＣＵの数が、ＤＲＩタグの値よりも多いことを決定すること。
・二つのＲＳＴマーカの間を通過したＭＣＵの数が、ＤＲＩタグの値よりも少ないことを決定すること。
のうち、少なくとも一つを備えうる。
【００２６】
例えば、ＤＲＩタグが、ＲＳＴマーカを備えるデータセクタには二つのＭＣＵが続くべきであると定義し、しかし二つより多い（例えば三つの）ＭＣＵが、ＲＳＴマーカを有するデータセクタに続くと（例えばハフマン復号化を用いて）決定される場合は、第一の断片化ポイントデータセクタは、第二のＭＣＵに対応するデータセクタであると決定されうる。
【００２７】
他の例としては、ＤＲＩタグが、ＲＳＴマーカを備えるデータセクタには四つのＭＣＵが続くべきであると定義し、しかし、次のＲＳＴマーカが見つかる前に二つ（すなわち四つより少ない）のＭＣＵのみが通過すると決定される場合は、第一の断片化ポイントデータセクタは、第二のＭＣＵに対応するデータセクタであると決定されうる。概して、ＲＳＴマーカの間（もしくは少なくとも後）を通過するＭＣＵの数を数えることによって、およびこの数をＤＲＩタグの値と比較することによって、断片化ポイントが到達されたことを発見されうる。
【００２８】
ＤＲＩタグの値はまた、候補データセクタのために継続ポイントデータセクタを決定する際に使用されうる。例えば、断片化ポイントデータセクタが、二つのＭＣＵが欠けていることを決定することによって見つけられた場合、継続ポイントは、継続ポイントデータセクタに対応するＲＳＴマーカを含むセクタの前に、二つのＭＣＵに対応するセクタをまた含むことによってバックトラックされうる。
【００２９】
いくつかの実施形態によれば、継続ポイントデータセクタを決定するステップは、少なくとも候補データセクタの前のＭＣＵの数に対応した追加のデータセクタを、再構成されるべきＪＰＥＧ画像に属するデータセクタに追加することで、データセクタの候補集合を形成することを少なくとも備え、ＭＣＵの数は、ＤＲＩタグの値と、二つのＲＳＴマーカの間を通過したＭＣＵの決定された数との間の差に対応しうる。追加の数は、前記差より少ない、もしくは同等でありうる。
【００３０】
断片化ポイントが到達されたを決定するために、ハフマンテーブルを調べることが可能でありうる。概して、ＪＰＥＧ符号化画像では、ＤＨＴ（Ｄｅｆｉｎｅ  Ｈｕｆｆｍａｎ  Ｔａｂｌｅ）マーカによって特定される一つまたは多くのハフマンテーブルを使用して、前記ＤＨＴマーカを解析してハフマン木を再構築する、もしくは（可能であれば）ハフマンテーブルを直接使用することで、最小符号化単位（ＭＣＵ）が、復号化される。ＭＣＵ（すなわちＲＳＴマーカを持たないデータセクタ）を復号化する試みが為され、ＭＣＵのビットパターンが、使用されたハフマン木（またはテーブル）に存在しないとわかった場合、これは、断片化ポイントが到達されたことを示しうる。
【００３１】
いくつかの実施形態によれば、再構成されるべきＪＰＥＧ画像に属するデータセクタ、および第一の断片化ポイントデータセクタを決定するステップは、少なくとも一つのハフマンテーブルに対応する少なくとも一つのＤＨＴマーカを解析するステップと、ＲＳＴマーカを持たないデータセクタ内で見つかったビットパターンが前記少なくとも一つのハフマンテーブル内に存在しないことを決定するステップとを、少なくとも備えうる。
【００３２】
いくつかの実施形態によれば、データセクタの候補集合を形成するステップは、候補データセクタに続くデータセクタから、同じＪＰＥＧ画像に属するデータセクタ、および第二の断片化ポイントデータセクタを決定することを備え、同じＪＰＥＧ画像に属するデータセクタは、候補セクタを備え、同じＪＰＥＧ画像に属するデータセクタを、再構成されるべきＪＰＥＧ画像に属するデータセクタに追加することによって、データセクタの候補集合を形成しうる。
【００３３】
そのため、第一の断片化ポイントデータセクタを決定するための同じアルゴリズムが、候補データセクタを起点としていくつのセクタが同じＪＰＥＧ画像の一部でありうるかを見つけるために、およびそれから、ＪＰＥＧサムネイルとの比較を含む適合度スコアの最終的な算出に先立って、それらのセクタのすべてを、再構成されるべきＪＰＥＧ画像に属するデータセクタに追加するために、ここで使用されうる。本実施形態は、ＪＰＥＧ画像を再構成するためのアルゴリズムの速度を上げうる。
【００３４】
いくつかの実施形態によれば、同じＪＰＥＧ画像に属するデータセクタ、および第二の断片化ポイントデータセクタを決定するステップは、
・データセクタが直前のデータセクタのリスタートマーカ値に続かないリスタートマーカ値を備えることを決定すること。
・データセクタが低いエントロピーデータを備えることを決定すること。
のうち、少なくとも一つを備える。
【００３５】
そのため、第一の断片化ポイントデータセクタを決定するための同じアルゴリズムが、第二の断片化ポイントデータセクタを決定するために使用されうる。第一の断片化ポイントデータセクタを決定するための、ＤＲＩマーカ、もしくはＤＨＴマーカおよび対応するハフマンテーブルを使用する上述の実施形態は、第二の断片化ポイントデータセクタを決定するためにも採用されうる。
【００３６】
いくつかの実施形態によれば、適合度スコアを算出するステップは、データセクタの候補集合を復号化して、候補ＪＰＥＧ画像を形成することを備え、適合度関数は、候補ＪＰＥＧ画像をＪＰＥＧサムネイルと比較することを備える。本実施形態は、アルゴリズムからの結果の正確さの手動による証明を容易にし、また、再構成されるべきＪＰＥＧ画像に属すると決定されたデータセクタのいくつかが実際は再構成されるべきＪＰＥＧ画像に属していない場合、もしくは、再構成されるべきＪＰＥＧ画像に属するべきであるいくつかのデータセクタをアルゴリズムが見落とした場合に対して頑強でありうる適合度関数を提供する。
【００３７】
いくつかの実施形態によれば、適合度スコアを算出するステップは、ＪＰＥＧサムネイルのサイズに合うよう候補ＪＰＥＧ画像をスケール変更することを備える。これは、適合度関数の回答における画素、すなわちＪＰＥＧサムネイルが、ＪＰＥＧ画像を候補ＪＰＥＧ画像の大きさにスケール変更することにより“作り上げられない”ため、有利である。そうではなく、候補ＪＰＥＧ画像が、ＪＰＥＧサムネイルの大きさにスケールダウンされる。好ましくは、そのようなスケールダウン動作は、バイリニアもしくはバイキュービック補間を用いて行われる。これはまた、例えば候補ＪＰＥＧ画像内の前の欠けたデータセクタによる、候補ＪＰＥＧ画像の小さなエラーが、適合度スコアに大きな影響を与えないことをさらに促進する。
【００３８】
いくつかの実施形態によれば、適合度スコアを算出するステップは、候補ＪＰＥＧ画像およびＪＰＥＧサムネイルをグレースケールに変換することを備える。
【００３９】
いくつかの実施形態によれば、適合度関数は、候補ＪＰＥＧ画像の各画素とＪＰＥＧサムネイルの対応する画素との間の差を算出すること、およびその差を閾値と比較し、閾値を満たす各差のカウンタ値を増やすことを備え、適合度スコアは、カウンタ値に対応しうる。グレースケールで画素間の比較を行うことによって、そのような比較の速度は、カラーで比較を行うのに比べて上がりうる。適合度スコアはまた、容易に解され、容易に算出されうる。候補ＪＰＥＧ画像およびＪＰＥＧサムネイルの対応する画素間のいくらかの差を許容することによって、スケール変更もしくは補完エラー（例えばルーティングエラー）は無視されうる。
【００４０】
いくつかの実施形態によれば、適合度関数は、候補ＪＰＥＧ画像の画素とＪＰＥＧサムネイルの対応する画素と間の差を算出すること、および算出された差を第一の閾値と比較して第一の閾値を満たさない各差のカウンタ値を増やすことを備え、差の算出および比較は、カウンタ値が第二の閾値を超える場合は行われず、適合度スコアは、カウンタ値が閾値を超える場合は第一の値に設定され、カウンタ値が第二の閾値を超えない場合は第一の値よりも高い第二の値に設定されうる。グレースケールで画素間の比較を行うことによって、そのような比較の速度は、カラーで比較を行うのに比べて上がりうる。候補ＪＰＥＧ画像およびＪＰＥＧサムネイルの対応する画素間のいくらかの差を許容することによって、スケール変更もしくは補完エラーは無視されうる。さらに、多すぎる場合に（例えば画像の画素の数の１／１６もしくは１／１０（もしくは任意の他の適切な分数）より多くが第一の閾値を超える差になった場合）、候補ＪＰＥＧ画像とＪＰＥＧサムネイルとの間の画素の比較を中止することによって、適合度関数の計算量は減りうる。
【００４１】
本実施形態によれば、適合度スコアは、上述のカウンタ値が第二の閾値を超えない場合、第一の閾値を満たす差の数に設定されうる。
【００４２】
いくつかの実施形態によれば、本方法は、各リスタートマーカ値を備える複数の連続したデータセクタの前記少なくともいくつかを、複数のリストに分類するステップをさらに備え、各リストはリスタートマーカ値に対応し、それぞれがリスタートマーカ値を備える複数のデータセクタを備える。このステップを行うことによって、複数の候補データセクタを選択するステップは、断片化ポイントデータセクタのリスタートマーカ値に基づいてリストを選択することを備え、複数の候補データセクタは、選択されたリスト内の複数のデータセクタを備えうる。本実施形態は、ＲＳＴマーカを備えるデータセクタを、一スイープで一回、フィルタリングおよび分類し、これによって特定の断片化ポイントデータセクタのために適切な候補データセクタを見つける速度が上がりうる。
【００４３】
いくつかの実施形態によれば、特定のリストの一つのデータセクタが継続ポイントデータセクタとして使用された際は、このセクタは、データセクタの集積のさらなる継続ポイントを決定するスピードを上げるために、対応するリストから除かれうる
いくつかの実施形態によれば、本方法は、複数の連続したデータセクタの各データセクタのエントロピー値を算出するステップをさらに備え、複数の候補セクタのそれぞれは、閾値エントロピー値を超えるエントロピー値を有する。上述のように、ＪＰＥＧ画像の一部であるデータセクタは概して、高いエントロピーデータを備える。さらに、ＲＳＴマーカは、データセクタの集積の中で全くの偶然で現れうる２バイト１６進数である。本実施形態は、ＲＳＴマーカが全くの偶然で現れるそのようなデータセクタを、候補データセクタのリストから有利に除きうる。
【００４４】
いくつかの実施形態によれば、各リスタートマーカ値を備える複数の連続したデータセクタの前記少なくともいくつかを、複数のリストに分類するステップは、閾値エントロピー値を超えるエントロピー値を有するデータセクタのみを分類することを備える。本実施形態は、こうして、ＲＳＴマーカが全くの偶然で現れるデータセクタを候補データセクタとして有するリスクをさらに減らす。
【００４５】
いくつかの実施形態によれば、上述の方法は、さらなる断片化ポイントデータセクタが第二の断片化ポイントデータセクタの後に見つかった場合は、再構成されるべきＪＰＥＧ画像に属するさらなるデータセクタを見つけるために本方法が繰り返されるように、再帰的に行うことができる。言い換えれば、再構成されるべきＪＰＥＧ画像が二つより多い断片でセクタの集積の中に格納された場合、本方法は、断片３、４等を見つけるために再び行われる。
【００４６】
第二の態様では、本発明は、処理能力を有する装置によって実行されると第一の態様による方法を実行するよう適応された命令を有するコンピュータ可読記憶媒体を備えるコンピュータプログラム製品を提供する。
【００４７】
第三の態様では、本発明は、断片化されたＪＰＥＧ画像を、複数の連続したデータセクタを備えるデータセクタの集積から再構成する際に使用される装置を提供し、複数の連続したデータセクタの少なくともいくつかは、各リスタートマーカ値を備え、装置は、
・複数の連続したデータセクタにおいて、ＪＰＥＧファイル署名を備えるデータセクタの位置を特定し、
・ＪＰＥＧファイル署名を備えるデータセクタおよび少なくとも一つの続くデータセクタから、再構成されるべきＪＰＥＧ画像に対応するＪＰＥＧサムネイルを抽出し、
・ＪＰＥＧファイル署名を備えるデータセクタに続くデータセクタから、再構成されるべきＪＰＥＧ画像に属するデータセクタ、および第一の断片化ポイントデータセクタを決定し、第一の断片化ポイントデータセクタはリスタートマーカ値に対応し、
・第一の断片化ポイントデータセクタに対応するリスタートマーカ値に基づいて、各リスタートマーカ値を備える複数のデータセクタの前記少なくともいくつかにおいて、複数の候補データセクタを選択し、
・各候補データセクタについて継続ポイントデータセクタを決定し、
○少なくとも候補データセクタを、再構成されるべきＪＰＥＧ画像に属するデータセクタに追加することでデータセクタの候補集合を形成し、
○データセクタの候補集合およびＪＰＥＧサムネイルを適合度関数のパラメータとして使用することで候補データセクタの適合度スコアを算出し、
・算出された適合度スコアの中で最も高い適合度スコアを有する候補データセクタを、再構成されるべきＪＰＥＧ画像に属するさらなるデータセクタを決定するための継続ポイントデータセクタとして選択する、
よう、適応される。
【００４８】
第二および第三の態様は、概して、第一の態様と同じ特徴および利点を有しうる。
【００４９】
概して、クレームで使われる全ての用語は、本明細書において別段の指定がない限り、技術分野におけるそれらの通常の意味にしたがって解釈されるべきである。一つ／一つの／その［要素、装置、構成要素、手段、ステップ、等］についての全ての言及は、別段の指定がない限り、要素、装置、構成要素、手段、ステップ、等の少なくとも一つの例に言及しているとして、オープンに解釈されるべきである。
【図面の簡単な説明】
【００５０】
本発明の、上記の、並びに追加の目的、特徴、および利点は、下記の例示的および非限定的な本発明の実施形態の詳細な説明を通し、付属の図面を参照して、より良く理解されるであろう。図面では、同じ参照番号が同様の要素に使用される。
【図１】再構成されるべきＪＰＥＧ画像を備えるデータセクタの集積の一例。
【図２】断片化されたＪＰＥＧ画像の画像データを備えるデータセクタの集積の一例。
【図３】データセクタの集積から、断片化されたＪＰＥＧ画像を再構成する際に使用する方法の一例。
【発明を実施するための形態】
【００５１】
本発明は、ハードディスクまたはフラッシュダンプから、断片化されたＪＰＥＧ画像をを再構成する際に使用される方法および装置を提案し、ハードディスクまたはフラッシュダンプは、データセクタの集積を備える。例えばＮＡＮＤフラッシュストレージ等のいくつかのフラッシュストレージは、データセクタ（例えば５１２バイトまたは２０４８バイトのデータ）をページに編成し、各ページは、スペア領域またはスペアコラムと呼ばれる例えば１６または６４バイトの付加データと関連する。尚、そのようなスペア領域は、本発明で説明されるようなデータセクタと見なされないことに留意されたい。いくつかの実施形態によれば、これらのスペアコラムは、再構成されるべきＪＰＥＧ画像の任意の検索に先立って、フィルタリングして除かれる。例えばｅＭＭＣフラッシュストレージ等の他のタイプのフラッシュストレージはスペアコラムを備えず、したがって上述のフィルタリング動作は、これらには必要でない。ハードディスクまたはフラッシュストレージは、携帯電話、コンピュータ、もしくは同様のコンピューティング装置のメモリでありうる。
【００５２】
断片化されたＪＰＥＧ画像を再構成する際に使用する方法が、ここで図１−３に関連して説明される。尚、図１−２のデータセクタの集積は、本発明をより簡単に説明するために単純化されていることに留意されたい。
【００５３】
再構成されるべきＪＰＥＧ画像の検索は、ダンプファイル（ハードディスク、フラッシュダンプ等）を、断片化されたＪＰＥＧ画像を再構成する際に使用される装置のメモリにロードすることで始まる。ダンプファイルは、複数の連続したデータセクタ１００、２００を備えるデータセクタの集積を備える。装置は、いくつかの実施形態によると、第一に複数の連続したデータセクタ１００、２００をステップ実行し、例えばＪＰＥＧファイル署名に対応する１６進値で始まる各セクタのリストを作成するよう構成されうる。図１では、ＪＰＥＧファイル署名もしくはＪＰＥＧヘッダは、第一のセクタ１０２で見つかる。１６進値は、０ｘＦＦ  ０ｘＤ８  ０ｘＦＦでありうる。言い換えれば、断片化されたＪＰＥＧ画像を再構成する際に使用する方法は、複数の連続したデータセクタの中から、ＪＰＥＧファイル署名を備えるデータセクタ１０２の位置を特定Ｓ３０２することで始まりうる。
【００５４】
本方法の次のステップは、ＪＰＥＧファイル署名を備えるデータセクタ１０２および少なくとも一つの連続したデータセクタ１０４、１０６から、再構成されるべきＪＰＥＧ画像に対応するＪＰＥＧサムネイルを抽出Ｓ３０４することである。上述のように、サムネイルは概してＪＰＥＧファイルの最初の数キロバイトで位置を特定されるが、それは、サムネイルは概して、ＪＰＥＧファイル署名を備えるデータセクタ１０２に続く一つまたは複数のデータセクタで位置を特定されることを意味する。いくつかの実施形態によれば、ＪＰＥＧサムネイルのデータの一部は、ＪＰＥＧファイル署名と同じデータセクタ１０２に具備される。
【００５５】
ＪＰＥＧサムネイルが抽出できると、ＪＰＥＧ画像に対応する、ＪＰＥＧ画像に属するデータの検索を始めることができる。本方法は、続けて、Ｓｔａｒｔ  ｏｆ  Ｓｃａｎ（ＳｏＳ）マーカを備えるデータセクタ１０８が見つかるまでステップを進めうる。このデータセクタ１０８の後、ＪＰＥＧ画像の画像データが見つかりうる。これは、ＪＰＥＧファイル署名を備えるデータセクタ１０２に続くデータセクタ１０４−１０８、２００から、再構成されるべきＪＰＥＧ画像に属するデータセクタを決定できること、また再構成されるべきＪＰＥＧ画像の任意の既存の断片化ポイントも決定できることを意味する。
【００５６】
断片化は、例えば、空きメモリが小さなブロックに分けられ、割り当てメモリが間に差し挟まれる際に起こりうる。例えばＪＰＥＧ画像が空きメモリに格納されると、ＪＰＥＧ画像の画像データは空きメモリのいくつかのブロックに分割されうる。法科学的状況では、ファイルシステムはよく破損し、よって、ＪＰＥＧ画像の画像データを見つけることができるメモリのブロック間のポインタがなくなるため、カービング技術が必要になる。しかしながら、ＪＰＥＧ画像の全ての断片を見つける課題は尚解決する必要があり、本発明は、この課題への解決策を提供しうる。
【００５７】
そこで、再構成されるべきＪＰＥＧ画像に属するデータセクタを決定する際は、本方法は、第一の断片化ポイントデータセクタが見つかるＳ３０６まで、ＳｏＳマーカを備えるデータセクタ１０８に続くセクタをステップ実行することを備えうる。そのような断片化ポイントデータセクタは、例えば、データセクタが低いエントロピーデータを備えると決定された場合に見つけられうるが、これはＪＰＥＧ画像の画像データは概して高いエントロピーを有するためである。図２では、２１０と称されるデータセクタは、そのような低いエントロピーデータを備えると決定される。データセクタが低いまたは高いエントロピーデータを備えるかを決定するためのコード例は、以下のようになる。
【００５８】
bool
isHighEntropy(BYTE* data)
{
DWORD counters[256];
memset(counters,0,sizeof(counters));
for(DWORD
i=0;i<SECTOR_SIZE;i++)
counters[data[i]]++;
DWORD max=0;
for(DWORD i=0;i<256;i++)
if(counters[i]>ENTROPY_FACTOR)
return false;
}
【００５９】
こうして、第一の断片化ポイントデータセクタ２０８は、低いエントロピーデータを備えるデータセクタ２１０の直前にあるデータセクタ２０８であると決定Ｓ３０６される。これはつまり、ＳｏＳマーカ１０８と、低いエントロピーデータを備えるデータセクタ２１０との間の全てのデータセクタ２０２−２０８が、再構成されるべきＪＰＥＧ画像に属すると決定されることを意味する。
【００６０】
しかしながら、再構成されるべきＪＰＥＧ画像のすべての画像データが見つかったわけではない。これは、例えばＪＰＥＧサムネイルとの比較から、もしくは、最後の二つのバイトの再構成されるべきＪＰＥＧ画像が、ＪＰＥＧ規格に従ったＪＰＥＧ符号化画像の終端を定義する値０ｘＦＦ  ０ｘＤ９を有するかを決定することによって、決定することができる。その結果、そこからＪＰＥＧ画像の次の断片が始まる継続ポイントデータセクタを見つけることが必要になりうる。これは、ＪＰＥＧ符号化画像で使用されるＲＳＴマーカ値を利用することによって為すことができる。図２で説明される例では、第一の断片化ポイントデータセクタ２０８は、ＲＳＴ２マーカ値を備えるが、上述のように、第一の断片化ポイントデータセクタがＲＳＴマーカ値を備えない場合は、第一の断片化ポイントデータセクタは、ＲＳＴマーカを備える、最初に先行するデータセクタのリスタートマーカ値に対応すると決定される。そして第一の断片化ポイントデータセクタ２０８に対応するリスタートマーカ値ＲＳＴ２に基づいて、複数のデータセクタのうち各リスタートマーカ値を備える前記少なくともいくつかの中で、複数の候補データセクタが選択Ｓ３０８される。候補セクタはしたがって、ＲＳＴ２に続くＲＳＴマーカ値を備えるべきであり、それはつまり、候補セクタはＲＳＴ３マーカ値を備えるべきであることを意味する。図２では、これは２１８および２２８と称されるセクタに対応する。
【００６１】
尚、いくつかの実施形態によれば、本方法は、各リスタートマーカ値を備えるデータセクタを、複数のリストに分類することを備え、これは、ＪＰＥＧ画像の任意の再構成が行われるのに先立って、フラッシュダンプ（ハードドライブ等）のデータセクタの全体の集積について有利に為されうる。これらの八つのリストのそれぞれは、リスタートマーカ値に対応する。言い換えれば、データセクタの集積のすべてのデータセクタをステップ実行することおよび各ＲＳＴマーカ値の検索によって、八つのリストは作成され、ＲＳＴ０−７に対応しうる。そのようなデータセクタが見つかると、このデータセクタは、対応するリストに加えられる。
【００６２】
そしてこれらのリストは、複数の候補データセクタを選択Ｓ３０８するために使用されうる。すなわち、断片化ポイントデータセクタのリスタートマーカ値に基づいたリストが選択され、複数の候補データセクタは、この場合、選択されたリストの複数のデータセクタを備えうる。図１−２に示した、および上述の例では、リストは二つの候補データセクタ２１８、２２８を備えうる。
【００６３】
いくつかの実施形態によれば、高いエントロピーデータを備えるデータセクタのみが、候補セクタとして選択されうる。上述のように、ＪＰＥＧ画像データを備えるデータセクタは、概して高いエントロピーを有する。そのため、そのような高いエントロピーデータを有する候補データセクタのみを選択することが、ＪＰＥＧ画像を再構成するためのより効率的な方法を提供しうる。言い換えれば、例えばＲＳＴ３マーカ値を備える第二のデータセクタ２２８が低いエントロピーデータを備えた場合、このセクタは候補データセクタとしては使用されない。有利には、高い（すなわち、閾値エントロピー値を超える）エントロピーデータを備えるデータセクタのみが、複数のリストに分類され、リストはそれから候補データセクタを決定するために使用されうる。いくつかの実施形態によれば、断片化されたＪＰＥＧ画像を再構成する際に使用する方法は、最初にデータセクタの集積を一つずつステップ実行するステップと、各セクタのエントロピーを算出するステップと、全ての高エントロピーセクタを特定の高エントロピーリストに入れるステップと、を備える。それから、この特定の高エントロピーリストに基づき、特定の高エントロピーリストのデータセクタを一つずつステップ実行して、ＲＳＴマーカ値を備える各データセクタを対応するリストに加えることによって、上述の八つのＲＳＴリストが作成されうる。
【００６４】
候補データセクタ２１８、２２８が選択Ｓ３０８された後に、継続ポイントデータセクタが決定Ｓ３１０される。これは、各候補データセクタ２１８、２２８について、少なくとも候補データセクタ２１８、２２８を、再構成されるべきＪＰＥＧ画像に属するデータセクタ２０２−２０８に追加することでデータセクタの候補集合を形成することによって為される。これは、図１−２で説明される例において、データセクタの二つの候補集合が形成されることを意味する。セクタ２０２−２０８および少なくとも第一の候補データセクタ２１８を含む一集合と、セクタ２０２−２０８および少なくとも第二の候補データセクタ２２８を含む一集合である。
【００６５】
いくつかの実施形態によれば、再構成されるべきＪＰＥＧ画像に属するデータセクタに追加されるのは、候補データセクタのみではない。その代わりに、各候補データセクタについて、候補セクタに続き、同じＪＰＥＧ画像に属するデータセクタが決定される。これは、候補データセクタに続くデータセクタをステップ実行し、第二の断片化ポイントデータセクタを探すことによって為される。言い換えれば、ＪＰＥＧ画像の完全な断片が、再構成されるべきＪＰＥＧ画像に追加され、データセクタの候補集合を形成Ｓ３１２する。多くの場合、追加される完全な断片は、再構成されるべきＪＰＥＧ画像とは異なるＪＰＥＧ画像に属するが、追加される全部の断片が、再構成されるべきＪＰＥＧ画像に属する場合もある。第二の断片化ポイントデータセクタは、第一の断片化ポイントデータセクタと同じ方法で、すなわち、データセクタが、先行するデータセクタのリスタートマーカ値に続かないリスタートマーカ値を備えることを決定すること、もしくはデータセクタが低いエントロピーデータを備えることを決定することによって、見つかりうる。図２の例では、ＲＳＴマーカ値を備えないセクタ２２０、２２２、２２６が、高いエントロピーデータをを備え、セクタ２２４が、正しいＲＳＴマーカ値、すなわち、先行するデータセクタ２１８のＲＳＴマーカ値であるＲＳＴ３に続くＲＳＴ４を備えるため、２１８−２２６と称されるセクタは、同じＪＰＥＧ画像に属すると決定される。しかしながら、２２８と称されるセクタは、正しくない、先行するデータセクタ２２４のリスタートマーカ値に続かないＲＳＴマーカ値（ＲＳＴ３）を備える。そのため、第二の断片化ポイントデータセクタは、２２６と称されるデータセクタであると決定される。これは、データセクタの第一の候補集合は、２０２−２０８、および２１８−２２６と称されるセクタを備えることを意味する。第二の候補データセクタについては、２３２と称されるデータセクタが、低いエントロピーデータを備えると決定され、それは、データセクタの第二の候補集合は、２０２−２０８および２２８−２３０と称されるセクタを備えることを意味する。
【００６６】
次のステップは、データセクタの候補集合およびＪＰＥＧサムネイルを適合度関数のパラメータとして使用して、各候補データセクタの適合度スコアを算出Ｓ３１４することである。適合度関数は、ＪＰＥＧサムネイルのデータを候補データセクタと比較し、複数の候補データセクタのうち、どれが継続ポイントデータセクタとして使用されるべきかを選択Ｓ３１８するのに使用することが出来る適合度スコアを返す、任意の関数でありうる。適合度関数は、例えば、ＪＰＥＧ符号化サムネイルの周波数成分を、候補データセクタのＪＰＥＧ符号化データと比較しうる。適合度関数はまた、データセクタの候補集合を復号化して候補ＪＰＥＧ画像を形成することを備え、適合度関数は、候補ＪＰＥＧ画像の画素データをＪＰＥＧサムネイルの画素データと比較することを備えうる。この比較は、ＪＰＥＧサムネイルを候補ＪＰＥＧ画像のサイズにスケール変更すること、もしくは、候補ＪＰＥＧ画像をＪＰＥＧサムネイルのサイズに合うようにスケール変更することを備えうる。
【００６７】
いくつかの実施形態によれば、適合度関数は、候補ＪＰＥＧ画像およびＪＰＥＧサムネイルを、グレースケール画像に変換することを備える。
【００６８】
例として、グレースケール画像を比較して適合度スコアを提供する二つの適合度関数がここで示される。これらの両方の例において、候補ＪＰＥＧ画像は、ＪＰＥＧサムネイルのサイズに合うようにスケール変更される。
【００６９】
第一の適合度関数は、候補ＪＰＥＧ画像の各画素とＪＰＥＧサムネイルの対応する画素との間の差を算出することと、その差を閾値と比較して、閾値を満たす各差のカウンタ値を増やすことと、を備え、適合度スコアは、カウンタ値に対応する。
【００７０】
DWORD
GetItemScore(HBITMAP current, int cx, int cy, vector<BYTE> &thumbVec)
{
//Shrink "real" pic
if (current)
{
HBITMAP newPic;
if (ShrinkPic(current, cx, cy,
newPic))
{
vector<BYTE>
newVect;
//2 thumb sized grayscale
pictures for comparison
if
(PicTo16Greyscale(newPic, newVect))
{
DWORD similarity = 0;
for (int z = 0; z <
newVect.size(); z++)
{
if (thumbVec[z] ==
newVect[z])
similarity++;
}
DeleteObject(newPic);
return similarity;
}
}
}
return 0;
}
【００７１】
上記の例では、閾値はゼロに設定されており、すなわちカウンタ値は、サイズ変更された候補ＪＰＥＧ画像の画素値が、ＪＰＥＧサムネイルの対応する画素値と等しい場合のみ増加するが、実施形態によれば、本方法のこの部分は、
【００７２】
If  (fabs(thumbVec[z]  -  newVect[z])  <  difference_threshold)
similarity++;
【００７３】
に変更されうる。“差閾値”は、グレースケール画像で可能なグレースケール値の数に依る任意の適切な値に設定される。概して、グレースケール画像は、２５６のグレースケール値を備えうるが、１６の値を使用することもまた可能である。
【００７４】
これはまた、第二の適合度関数にも適用される。
【００７５】
第二の適合度関数は、候補ＪＰＥＧ画像の画素とＪＰＥＧサムネイルの対応する画素との間の差を算出することと、算出された差を第一の閾値と比較して、第一の閾値を満たさない各差のカウンタ値を増やすことと、を備え、差を算出することおよび比較することは、カウンタ値が第二の閾値を超える場合は行われず、適合度スコアは、カウンタ値が閾値を超える場合は第一の値に設定され、カウンタ値が第二の閾値を超えない場合は、第一の値よりも高い第二の値に設定される。本実施形態による適合度スコアは、上述のカウンタ値が第二の閾値を超えない場合に、第一の閾値を満たす差の数に設定されうる。
【００７６】
DWORD  GetItemScore(HBITMAP  current,  int cx,  int cy,  vector<BYTE>  &thumbVec)
{
//Shrink
"real" pic
if
(current)
{
HBITMAP
newPic;
if
(ShrinkPic(current, cx, cy, newPic))
{
vector<BYTE>
newVect;
if  (PicTo16Greyscale(newPic,  newVect))
//2 thumb
sized grayscale pictures for comparison
{
DWORD
similarity = 0;
DWORD
diffs = 0;
DWORD
threshold = cx*cy / 16;
for (int
z = 0; z < newVect.size(); z++)
{
if
(thumbVec[z] == newVect[z])
similarity++;
else
diffs++;
if
(diffs>threshold)
{
break;
}
}
DeleteObject(newPic);
return
similarity;
}
}
}
return 0;
}
【００７７】
本実施形態では、第二の閾値は、サムネイル画像の画素の数の１／１６、すなわち、（ｃｙ＊ｃｘ）／１６に設定される。ｃｙは、画像のｙ方向におけるサムネイル画像のサイズであり、ｃｘは、画像のｘ方向におけるサムネイル画像のサイズであるが、他の閾値は１／５、１／１０、もしくは１／２０のように用いられうる。
【００７８】
適合度スコアはこのように、データセクタのさらなる候補集合が存在しなくなる（図３のステップS３１６で決定される）まで、データセクタの第一の候補集合について、およびデータセクタの全ての他の候補集合について算出される。
【００７９】
上述の例によれば、適合度関数および適合度スコアは、第一の候補データセクタ２１８もしくは第二の候補データセクタ２２８が、再構成されるべきＪＰＥＧ画像の第二の断片の始まりであるかを決定するために使用される。  言い換えれば、再構成されるべきＪＰＥＧ画像に属するさらなるデータセクタを決定するために、算出された適合度スコアの中で最も高い適合度スコアを有する候補データセクタが継続ポイントデータセクタとして選択Ｓ３１８される。  選択された継続ポイントデータセクタは、したがって、再構成されるべきＪＰＥＧ画像の第二の断片の始まりである。
【００８０】
当業者に理解されるように、上述の方法はそれから、必要であれば、すなわち再構成されるべきＪＰＥＧ画像が二つより多い断片を備えていれば、再構成されるべきＪＰＥＧ画像のさらなる断片を見つけるために使うことができる。言い換えれば、（例えばＪＰＥＧサムネイルとの比較によって）再構成されるべき画像が完全に再構成されていないと決定Ｓ３２０された場合、再構成されるべきＪＰＥＧ画像に属する全てのデータセクタが決定されるまで、Ｓ３０８-Ｓ３１８のステップが繰り返される。
【００８１】
例として、ＪＰＥＧ画像を再構成するための方法のさらなる特定の実施形態をここに説明する。再構成アルゴリズムは、１２のステップを備える：
１．ダンプファイルをメモリにロードする。
２．ファイルを、一度に一セクタずつステップ実行し、ｈｅｘ  ０ｘＦＦ  ０ｘＤ８  ０ｘＦＦのＪＰＥＧファイル署名で始まる各セクタのリストを作る。このリストをＪＰＥＧＳＴＡＲＴＳと呼ぶ。
３．ファイルを、一度に一セクタずつステップ実行し、各セクタのエントロピーを算出する。全ての高エントロピーセクタを、ＨＩＧＨＥＮＴＲＯＰＹＳＥＣＴＯＲＳというリストに入れる。
４．ダンプ中の異なるリスタートマーカを有するセクタを追跡するために、ＲＳＴ０ＬＩＳＴ、ＲＳＴ１ＬＩＳＴ、ＲＳＴ１ＬＩＳＴ、ＲＳＴ２ＬＩＳＴ、ＲＳＴ３ＬＩＳＴ、ＲＳＴ４ＬＩＳＴ、ＲＳＴ５ＬＩＳＴ、ＲＳＴ６ＬＩＳＴおよびＲＳＴ７ＬＩＳＴという八つのリストを作成する。ファイルを、一度に一セクタずつステップ実行し、八つの異なるリスタートマーカを探す。一つが見つかると、それを適切なリストに加える。
５．ＪＰＥＧＳＴＡＲＴＳの各エントリについて、サムネイルがこのセクタおよびこれに続くセクタから抽出できるかを確認する。各成功したサムネイル抽出について、６ステップ前進し、その後、アルゴリズムは終了する。
６．現在の再構成されるべきＪＰＥＧについて、ＳＯＳマーカにステップを進め、低いエントロピーセクタに遭遇するか、もしくはリスタートマーカのミスマッチが検出されるまで、セクタずつ継続する。
７．この時点で、アルゴリズムは、ダンプでＪＰＥＧ抽出を継続するのに最良のポジションを選ぶ必要がある。最後の正しいマーカがＲＳＴ４だった場合、ＲＳＴ５ＬＩＳＴのセクタの一つを選択する必要がある。アルゴリズムは、最後の正しくカービングされたリスタートマーカプラス１を必要とする（ＲＳＴ７は、ＲＳＴ０に回り込む）。
８．適切なリスタートマーカリストが選択されたら、アルゴリズムは、リストのどの要素が断片化されたＪＰＥＧの最良の継続かを選ぶ必要がある。各エントリについて、低いエントロピーセクタに遭遇するか、もしくはリスタートマーカのミスマッチが検出されるまで、セクタずつ継続して、断片の長さを取得する。
９．再構成されるべきＪＰＥＧの始めからのデータを有するバッファを作成する。現在調べられている断片のデータを追加する。
１０．上述したバッファのＪＰＥＧを復号化する。それをサムネイル画像のサイズに縮小する。これをＣＡＲＶＥＤＰＩＣと呼ぶ。
１１．適合度関数を使って、サムネイルをＣＡＲＶＥＤＰＩＣと比較し、適合度スコアを取得する。
１２．最良の適合度スコアを有する断片を、ファイルの継続として選択する。
【００８２】
本開示のさらなる実施形態は、上記の明細書を検討すれば、当業者には明らかになるであろう。本明細書および図面は実施形態および例を開示するが、この開示はこれらの特定の例に制限されない。多くの変更および変形が、付属のクレームによって定義される本開示の範囲を逸脱することなく為すことができる。クレームに見られる任意の参照記号は、クレームの範囲を限定するとは解されない。
【００８３】
上記の明細書に開示したシステム及び方法は、ソフトウェア、ファームウェア、ハードウェアまたはそれらの組み合わせとして実装されうる。ハードウェアの実装において、上記の説明で述べられる機能的なユニット間もしくはステージ間のタスクの分割は、必ずしも物理的なユニットへの分割に対応せず、逆に、一つの物理的な構成要素は複数の機能を有してよく、一つのタスクはいくつかの物理的な構成要素によって協働して実行されてよい。ある構成要素もしくは全ての構成要素は、デジタル信号プロセッサまたはマイクロプロセッサによって実行されるソフトウェアとして実装されうるか、もしくはハードウェアとしてまたは用途特定集積回路として実装されうる。そのようなソフトウェアは、コンピュータ記憶媒体（もしくは非一時媒体）および通信媒体（もしくは一時媒体）を備えうるコンピュータ可読媒体に配布されうる。当業者には既知のように、コンピュータ記憶媒体という用語は、コンピュータ可読インストラクション、データ構造、プログラムモジュール、もしくは他のデータ等の情報を記憶するための任意の方法もしくは技術に実装される、揮発性および不揮発性両方の、リムーバブルおよび非リムーバブル媒体を含む。コンピュータ記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）または他の光学ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気記憶装置、もしくは所望の情報を格納するのに使用することができ、コンピュータによってアクセスできる任意の他の媒体を含むが、それらに限定されない。さらに、通信媒体が、概して、コンピュータ可読インストラクション、データ構造、プログラムモジュール、もしくは他のデータを、搬送波または他の移送機構等の変調データ信号で具現し、任意の情報配達媒体を含むことは、当業者には既知である。
【図１】
2017022690.tif 000003
【図２】
2017022690.tif 000004
【図３】
2017022690.tif 000005
【外国語明細書】
2017022690000001.pdf