特開2017-22690(P2017-22690A)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ マイクロ システメーション アクティエボラーグの特許一覧

特開2017-22690断片化されたJPEG画像を再構成する際に使用する方法および装置
<>
  • 特開2017022690-断片化されたJPEG画像を再構成する際に使用する方法および装置 図000003
  • 特開2017022690-断片化されたJPEG画像を再構成する際に使用する方法および装置 図000004
  • 特開2017022690-断片化されたJPEG画像を再構成する際に使用する方法および装置 図000005
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】特開2017-22690(P2017-22690A)
(43)【公開日】2017年1月26日
(54)【発明の名称】断片化されたJPEG画像を再構成する際に使用する方法および装置
(51)【国際特許分類】
   H04N 1/41 20060101AFI20170105BHJP
   G11B 20/10 20060101ALI20170105BHJP
【FI】
   H04N1/41 B
   G11B20/10 G
【審査請求】未請求
【請求項の数】17
【出願形態】OL
【外国語出願】
【全頁数】21
(21)【出願番号】特願2016-86641(P2016-86641)
(22)【出願日】2016年4月23日
(31)【優先権主張番号】15167080.9
(32)【優先日】2015年5月11日
(33)【優先権主張国】EP
(71)【出願人】
【識別番号】516123723
【氏名又は名称】マイクロ システメーション アクティエボラーグ
【氏名又は名称原語表記】MICRO SYSTEMATION AB
(74)【代理人】
【識別番号】100105795
【弁理士】
【氏名又は名称】名塚 聡
(74)【代理人】
【識別番号】100105131
【弁理士】
【氏名又は名称】井上 満
(72)【発明者】
【氏名】クリストファー、ロサール
(57)【要約】      (修正有)
【課題】断片化されたJPEG画像の断片化ポイントおよび継続ポイントを、そのJPEG画像を再構成する目的で見つける方法及び装置を提供する。
【解決手段】複数の連続したデータセクタにおいて、JPEGファイル署名を備えるデータセクタから、再構成されるべきJPEG画像に対応するJPEGサムネイルを抽出しS304、続くデータセクタから、再構成されるべきJPEG画像のデータセクタ、および第一の断片化ポイントデータセクタを決定しS306、第一の断片化ポイントデータセクタに対応するリスタートマーカ値に基づいて、複数の候補データセクタを選択しS308、継続ポイントデータセクタを決定しS310、候補データセクタを、再構成されるべきJPEG画像のデータセクタに追加することで、データセクタの候補集合を形成しS312、候補データセクタをさらなるデータセクタを決定する継続ポイントデータセクタとして選択するS318。
【選択図】図3
【特許請求の範囲】
【請求項1】
複数の連続したデータセクタを備えるデータセクタの集積(100、200)から、断片化されたJPEG画像を再構成する際に使用する方法(300)であり、前記複数の連続したデータセクタの少なくともいくつかが、各リスタートマーカ値を備える方法であって、
a)前記複数の連続したデータセクタにおいて、JPEGファイル署名を備えるデータセクタ(102)の位置を特定すること(S302)と、
b)前記JPEGファイル署名を備える前記データセクタおよび少なくとも一つの続くデータセクタから、再構成されるべきJPEG画像に対応するJPEGサムネイルを抽出すること(S304)と、
c)前記JPEGファイル署名を備える前記データセクタに続くデータセクタから、前記再構成されるべきJPEG画像に属するデータセクタ、および第一の断片化ポイントデータセクタを決定すること(S306)であって、前記第一の断片化ポイントデータセクタはリスタートマーカ値に対応することと、
d)前記第一の断片化ポイントデータセクタに対応する前記リスタートマーカ値に基づいて、各リスタートマーカ値を備える前記複数のデータセクタの前記少なくともいくつかにおいて、複数の候補データセクタを選択すること(S308)と、
e)各候補データセクタについて継続ポイントデータセクタを決定すること(S310)と、
f)少なくとも前記候補データセクタを、前記再構成されるべきJPEG画像に属する前記データセクタに追加することで、データセクタの候補集合を形成すること(S312)と、
g)前記データセクタの候補集合および前記JPEGサムネイルを適合度関数のパラメータとして使用することで、前記候補データセクタの適合度スコアを算出すること(S314)と、
h)前記算出された適合度スコアの中で最も高い適合度スコアを有する前記候補データセクタを、前記再構成されるべきJPEG画像に属するさらなるデータセクタを決定するための継続ポイントデータセクタとして選択すること(S318)と、を備える方法。
【請求項2】
前記ステップc)は、
データセクタが先行するデータセクタのリスタートマーカ値に続かないリスタートマーカ値を備えることを決定することと、
データセクタが低いエントロピーデータを備えることを決定することと、のうち、少なくとも一つを備える、請求項1に記載の方法。
【請求項3】
前記ステップf)は、
前記候補データセクタに続くデータセクタから、同じJPEG画像に属するデータセクタ、および第二の断片化ポイントデータセクタを決定することであって、前記同じJPEG画像に属する前記データセクタは、前記候補セクタを備えることと、
前記同じJPEG画像に属する前記データセクタを、前記再構成されるべきJPEG画像に属する前記データセクタに追加することによって、前記データセクタの候補集合を形成することと、を備える、請求項1−2のいずれかに記載の方法。
【請求項4】
同じJPEG画像に属するデータセクタ、および第二の断片化ポイントデータセクタを決定するステップは、
データセクタが先行するデータセクタのリスタートマーカ値に続かないリスタートマーカ値を備えることを決定することと、
データセクタが低いエントロピーデータを備えることを決定することと、のうち、少なくとも一つを備える、請求項3に記載の方法。
【請求項5】
前記ステップg)は、前記データセクタの候補集合を復号化して、候補JPEG画像を形成することを備え、前記適合度関数は、前記候補JPEG画像を前記JPEGサムネイルと比較することを備える、請求項1乃至4のいずれか一項に記載の方法。
【請求項6】
前記ステップg)は、前記JPEGサムネイルのサイズに合うよう前記候補JPEG画像をスケール変更することを備える、請求項5に記載の方法。
【請求項7】
前記ステップg)は、前記候補JPEG画像および前記JPEGサムネイルをグレースケールに変換することを備え、
前記適合度関数は、前記候補JPEG画像の各画素と前記JPEGサムネイルの対応する画素との間の差を算出すること、および前記差を閾値と比較し、前記閾値を満たす各差のカウンタ値を増やすことを備え、前記適合度スコアは、前記カウンタ値に対応する、請求項6に記載の方法。
【請求項8】
前記ステップg)は、前記候補JPEG画像および前記JPEGサムネイルをグレースケールに変換することを備え、
前記適合度関数は、前記候補JPEG画像の画素と前記JPEGサムネイルの対応する画素と間の差を算出すること、前記算出された差を第一の閾値と比較して前記第一の閾値を満たさない各差のカウンタ値を増やすことを備え、前記差の算出および比較は、前記カウンタ値が第二の閾値を超える場合は行われず、前記適合度スコアは、前記カウンタ値が前記閾値を超える場合は第一の値に設定され、前記カウンタ値が前記第二の閾値を超えない場合は前記第一の値よりも高い第二の値に設定される、請求項6に記載の方法。
【請求項9】
各リスタートマーカ値を備える前記複数の連続したデータセクタの前記少なくともいくつかを、複数のリストに分類するステップをさらに備え、各リストはリスタートマーカ値に対応し、それぞれが前記リスタートマーカ値を備える複数のデータセクタを備え、
前記ステップd)は、前記断片化ポイントデータセクタの前記リスタートマーカ値に基づいてリストを選択することを備え、前記複数の候補データセクタは、前記選択されたリスト内の前記複数のデータセクタを備える、請求項1乃至8のいずれか一項に記載の方法。
【請求項10】
前記複数の連続したデータセクタの各データセクタのエントロピー値を算出するステップをさらに備え、前記複数の候補セクタのそれぞれは、閾値エントロピー値を超えるエントロピー値を有する、請求項1乃至9のいずれか一項に記載の方法。
【請求項11】
各リスタートマーカ値を備える前記複数の連続したデータセクタの前記少なくともいくつかを、複数のリストに分類する前記ステップは、前記閾値エントロピー値を超えるエントロピー値を有するデータセクタのみを分類することを備える、請求項9に従属する請求項10に記載の方法。
【請求項12】
ステップd)−h)は、前記再構成されるべきJPEG画像に属する全てのデータセクタが決定されるまで、前記第二の断片化ポイントデータセクタおよび任意のさらなるデータの断片化ポイントを探して繰り返される、請求項3もしくは、請求項3に従属する請求項4乃至10のいずれか一項に記載の方法。
【請求項13】
処理能力を有する装置によって実行されると、請求項1乃至11のいずれか一項に記載の方法を実行するよう適応された命令を有するコンピュータ可読記憶媒体を備える、コンピュータプログラム製品。
【請求項14】
複数の連続したデータセクタを備えるデータセクタの集積(100、200)から、断片化されたJPEG画像を再構成する際に使用する装置であり、前記複数の連続したデータセクタの少なくともいくつかが、各リスタートマーカ値を備える装置であって、
a)前記複数の連続したデータセクタにおいて、JPEGファイル署名を備えるデータセクタ(102)の位置を特定(S302)し、
b)前記JPEGファイル署名を備える前記データセクタおよび少なくとも一つの続くデータセクタから、再構成されるべきJPEG画像に対応するJPEGサムネイルを抽出(S304)し、
c)前記JPEGファイル署名を備える前記データセクタに続くデータセクタから、前記再構成されるべきJPEG画像に属するデータセクタ、および第一の断片化ポイントデータセクタを決定(S306)し、前記第一の断片化ポイントデータセクタはリスタートマーカ値に対応し、
d)前記第一の断片化ポイントデータセクタに対応する前記リスタートマーカ値に基づいて、各リスタートマーカ値を備える前記複数のデータセクタの前記少なくともいくつかにおいて、複数の候補データセクタを選択(S308)し、
e)各候補データセクタについて継続ポイントデータセクタを決定(S310)し、
f)少なくとも前記候補データセクタを、前記再構成されるべきJPEG画像に属する前記データセクタに追加することで、データセクタの候補集合を形成(S312)し、
g)前記データセクタの候補集合および前記JPEGサムネイルを適合度関数のパラメータとして使用することで、前記候補データセクタの適合度スコアを算出(S314)し、
h)前記算出された適合度スコアの中で最も高い適合度スコアを有する前記候補データセクタを、前記再構成されるべきJPEG画像に属するさらなるデータセクタを決定するための継続ポイントデータセクタとして選択(S318)するよう適合される、装置。
【請求項15】
前記ステップc)は、
リスタートマーカを有するセクタ以降に通過したMCUの数が、DRIタグの値よりも多いことを決定することと、
リスタートマーカを有する二つのセクタの間を通過したMCUの数が、DRIタグの値よりも少ないことを決定することと、のうち、少なくとも一つを備える、請求項1に記載の方法。
【請求項16】
前記ステップf)は、少なくとも前記候補データセクタの前のMCUの数に対応した追加のデータセクタを、前記再構成されるべきJPEG画像に属する前記データセクタに追加することを備え、前記MCUの数は、前記DRIタグの前記値と、リスタートマーカ値を有する二つのセクタの間を通過した前記MCUの決定された数との間の差に対応する、請求項15に記載の方法。
【請求項17】
前記ステップc)は、少なくとも一つのハフマンテーブルに対応する少なくとも一つのDHTマーカを解析することと、リスタートマーカを持たないデータセクタ内で見つかったビットパターンが前記少なくとも一つのハフマンテーブル内に存在しないことを決定することと、を備える、請求項1に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、断片化されたファイルの復元に関する。特に、本発明は、断片化されたJPEG画像の断片化ポイントおよび継続ポイントを、そのJPEG画像を再構成する目的で見つけることに関する。
【背景技術】
【0002】
デジタル記憶媒体の採用が増え続けるのに伴い、より高精度なデータ復元および法科学復元製品へのニーズもまた増えている。多くのファイルシステムおよび記憶装置は、データを多くのクラスタに分割することによって、および各ファイルのデータを格納するために使用されるクラスタのリスト(ファイルテーブル)を維持することによって、データを格納する。例えば、ファイルシステムFAT−32においては、ファイル名を有するルートテーブルのエントリは、ファイルの第一のクラスタを指示し、それは続いて次のクラスタを指示するなどして、ファイルの最後のクラスタまで指示する。ファイルがアクセスされると、データは続いてこのクラスタのリストから検索される。同様に、ファイルの削除は概して、ファイルテーブルからファイルのエントリを除去することによって認識される。従来のデータ復旧および法科学製品は、ファイルシステムを分析することによって、およびファイルシステムによって指示されたデータを抽出することによってデータを復旧しようと試みる。従来の復旧技術は、ファイルシステムが破損している、存在しない、もしくはエントリが紛失している場合、データの復旧に失敗する。所謂“ファイルカービング”が、ディスクの“割り当てられない”スペース(ファイルシステムによって指示されないディスクのエリア)からファイルを復旧するために導入された。
【0003】
ファイルは、データセクタの連続体に格納されない場合、“断片化された”とされる(“データセクタ”という用語の意味は、“クラスタ”もしくは“データブロック”を含むと意図される)。例えば、ファイルの断片化は、ファイルがディスク上の連続したデータセクタに正しい順で格納されない場合に起こるとされる。言い換えれば、ファイルが断片化されると、ファイルの始めからファイルの終わりまでのデータセクタの順は、部分的におよび/または不正確なファイルの再構築につながる。
【0004】
法科学の観点から復旧するのが興味深いファイルの一つは、JPEG画像である。JPEG画像は多くのデータを含みうるため、JPEG画像が断片化されるリスクは相当なものでありうる。Marin Karresand著の“Completing the Picture−Fragments and Back Again”は、JPEG画像を再構成する方法を提案しており、JPEG画像のデータセクタに含まれるRSTマーカが、JPEG画像を再構成する際に組み合わされるのが可能なデータセクタを決定するために使用される。JPEG圧縮は周波数領域にデータを格納することから成るため、データの二つのセクタの組み合わせは、データの別個のセクタのDC計数を比較することによって有効になる。
【0005】
しかしながら、これは複雑な方法であり、周波数領域のデータはユーザが把握することが不可能であるため、例えば結果の正確さを手動で確かめるのが難しいことがある。
【0006】
こうした文脈の中で、本発明の実施形態が生じる。
【発明の概要】
【0007】
上記に鑑みて、本発明の目的は、上述の欠点の一つもしくはいくつかを、解消するもしくは少なくとも減らすことである。概して、上記の目的は、付属の独立クレームによって達成される。
【0008】
第一の態様によれば、本発明は、少なくともいくつかが各リスタートマーカ値を備える複数の連続したデータセクタを備えるデータセクタの集積から、断片化されたJPEG画像を再構成する際に使用する方法によって実現される。
【0009】
データセクタは概して、512バイトからなるが、異なるタイプのメモリは、他のサイズのデータセクタを備えうる。
【0010】
リスタートマーカ(RST)は、JPEGファイルフォーマットの特徴であり、画像の断片化もしくは破損を検出するのに使用することができる。RST0−RST7と呼ばれる八つの異なるRST値があり、16進数で0xFFD0−0xFFD7と表される。リスタートマーカを使用するJPEGファイルは、場合によって一つまたは複数のRST値を備えないデータセクタすなわちJPEG最小符号化単位(MCU)、それから次のRST値を備えるデータセクタなどが続く、RST値を備えるデータセクタを有する。RST7の後は、次のマーカはRST0である。いくつかのRSTマーカ値が一つのデータセクタ内に存在しうることもまた可能である。
【0011】
本方法は、複数の連続したデータセクタの中で、JPEGファイル署名を備えるデータセクタの位置を特定することを備える。
【0012】
次に、JPEGファイル署名を備えるデータセクタおよび少なくとも一つの連続したデータセクタから、再構成されるべきJPEG画像に対応するJPEGサムネイルが抽出されうる。サムネイル画像は、JPEGファイルに含まれる小さい画像であり、例えば160×128画素サイズなど、概して解像度が低い。サムネイルは、メイン画像、すなわち再構成されるべき画像の小さいバージョンである。それらは概して、JPEGファイルの最初の数キロバイトに位置しており、断片化されていないサムネイルを取得する可能性は、断片化されていないメイン画像を抽出する可能性よりもはるかに高い。尚、JPEGサムネイルは、JPEGファイル署名を備えるデータセクタに続くデータセクタからのみ抽出されうる。言い換えれば、JPEGファイル署名を備えるデータセクタは、いくつかの実施形態において、JPEGサムネイルを構成するデータを何れも備えないことがありうる。ほとんどの場合、JPEGサムネイルは、ファイルの第一のセクタ、すなわちJPEGファイル署名を備えるデータセクタ内では始まらない。通常は、タイムスタンプ、アパチャー設定、および場合によってはGPS座標等の他のEXIFメタデータが、実際のサムネイルの前に現れる。
【0013】
本方法はさらに、JPEGファイル署名を備えるデータセクタに続くデータセクタから、再構成されるべきJPEG画像に属するデータセクタ、および第一の断片化ポイントデータセクタを決定することを備え、第一の断片化ポイントデータセクタは、リスタートマーカ値に対応する。
【0014】
例えば、まずStart of Scan(SoS)16進値を備えるセクタの位置が特定される。JPEG画像ファイルでは、画像の符号化データは、SoSセクタの直後に来る。SoSセグメントの後、第一の断片化ポイントデータセクタまでの、および第一の断片化ポイントデータセクタを含む全てのデータセグメントは、再構成されるべきJPEG画像に属すると決定される。
【0015】
断片化は、メモリ内のデータの集積、この場合は再構成されるべきJPEG画像が、例えば複数の連続したデータセクタなどの連続した順にない多くの断片に分解される際に起こる。
【0016】
本明細書で使用されるように、“第一の断片化ポイントデータセクタ”という用語は、連続したデータセクタの中の、再構成されるべきJPEG画像に属さないと決定されたデータセクタに先行する最後のデータセクタを意味すると解するべきである。
【0017】
概して、JPEG符号化画像においては、RSTマーカを備えるデータセクタには、RSTマーカを備えない一つまたは複数のデータセクタ、すなわちJPEG最小符号化単位(MCU)が続く。RSTマーカを備えない一つまたは複数のデータセクタの数は、JPEG画像で変わりうる。先に述べたように、よくあることではないが、一つのデータセクタ内で複数のRSTマーカに遭遇する可能性がある。リスタートマーカの間のMCUの数を定義するDRIと呼ばれるJPEGマーカが存在する。MCUはそれ自体のサイズを変更可能であるため、リスタートマーカ間のバイト(もしくはセクタ)の量を容易に予測できる方法はない。第一の断片化ポイントデータセクタがRSTマーカ値を備えないデータセクタであると決定された場合、第一の断片化ポイントデータセクタは、RSTマーカを備える直前のデータセクタのリスタートマーカ値に対応すると決定される。複数のRSTマーカが、RSTマーカを備える直前のデータセクタに存在する場合は、第一の断片化ポイントデータセクタは、複数のRSTマーカの最後の値に対応すると決定される。
【0018】
本方法はさらに、第一の断片化ポイントデータセクタに対応するリスタートマーカ値に基づいて、各リスタートマーカ値を備える前記少なくともいくつかの複数のデータセクタの中から、複数の候補データセクタを選択することを備えうる。データセクタがいくつかのRSTマーカを備える場合は、データセクタの第一のRSTマーカは、候補データセクタを選択する際に使用される。
【0019】
本方法の次のステップは、各候補データセクタについて、継続ポイントデータセクタを決定することである。
・少なくとも候補データセクタを、再構成されるべきJPEG画像に属するデータセクタに追加することによって、データセクタの候補集合を形成する。
・データセクタの候補集合およびJPEGサムネイルを適合度関数のパラメータとして使用して、候補データセクタの適合度スコアを算出する。
【0020】
言い換えれば、各候補データセクタは、再構成されるべきJPEG画像に属すると既に決定されたデータセクタに適合するかどうかをテストされ、このテストは、断片化されておらず、したがって実際の再構成されるべきJPEG画像のダウンサンプリングしたバージョンを表すJPEGサムネイルとの比較を含む。JPEGサムネイルをキーとして使用し、各候補データセクタの適合度スコアを算出することができる。
【0021】
これらの算出された適合度スコアから、算出された適合度スコアの中で最も高い適合度スコアを有する候補データセクタを、再構成されるべきJPEG画像に属するさらなるデータセクタを決定するための最良の継続ポイントデータセクタとして、有利に選択することができる。尚、“最も高い適合度スコア”という特徴は、候補データセクタおよび再構成されるべきJPEG画像に属すると既に決定されたデータセクタの中の、最良適合に対応すると解されたい。
【0022】
いくつかの実施形態によれば、再構成されるべきJPEG画像に属するデータセクタ、および第一の断片化ポイントデータセクタを決定するステップは、
・データセクタが、先行するデータセクタのリスタートマーカ値に続かないリスタートマーカ値を備えることを決定すること。
・データセクタが、低いエントロピーデータを備えることを決定すること。
のうち、少なくとも一つを備える。
【0023】
例えば、RST3を備えるデータセクタに、RSTマーカを持たない多くのデータセクタが続き、それからRST1を備えるデータセクタが続く場合、RST1マーカを有するデータセクタの直前のデータセクタは、第一の断片化ポイントデータセクタと決定される。言い換えれば、RSTマーカが間違った順で現れた場合、再構成するべきJPEG画像は、断片化されていると考えられる。
【0024】
断片化を発見するための他の技術は、低エントロピーセクタを探すことである。JPEGファイルの(SOSマーカの後の)メイン領域は、高いエントロピーデータを含むべきである。データセクタが低いエントロピーを有する場合、これは、そのデータセクタが再構成されるべきJPEG画像の一部ではないことを示し、低いエントロピーデータを有するデータセクタの直前のデータセクタが、第一の断片化ポイントデータセクタであると決定される。
【0025】
断片化ポイントが到達されたかを決定するために、上述のDRIタグの値を使用することもまた可能でありうる。いくつかの実施形態によれば、再構成されるべきJPEG画像に属するデータセクタ、および第一の断片化ポイントデータセクタを決定するステップは、
・RSTマーカが見つけられてから通過したMCUの数が、DRIタグの値よりも多いことを決定すること。
・二つのRSTマーカの間を通過したMCUの数が、DRIタグの値よりも少ないことを決定すること。
のうち、少なくとも一つを備えうる。
【0026】
例えば、DRIタグが、RSTマーカを備えるデータセクタには二つのMCUが続くべきであると定義し、しかし二つより多い(例えば三つの)MCUが、RSTマーカを有するデータセクタに続くと(例えばハフマン復号化を用いて)決定される場合は、第一の断片化ポイントデータセクタは、第二のMCUに対応するデータセクタであると決定されうる。
【0027】
他の例としては、DRIタグが、RSTマーカを備えるデータセクタには四つのMCUが続くべきであると定義し、しかし、次のRSTマーカが見つかる前に二つ(すなわち四つより少ない)のMCUのみが通過すると決定される場合は、第一の断片化ポイントデータセクタは、第二のMCUに対応するデータセクタであると決定されうる。概して、RSTマーカの間(もしくは少なくとも後)を通過するMCUの数を数えることによって、およびこの数をDRIタグの値と比較することによって、断片化ポイントが到達されたことを発見されうる。
【0028】
DRIタグの値はまた、候補データセクタのために継続ポイントデータセクタを決定する際に使用されうる。例えば、断片化ポイントデータセクタが、二つのMCUが欠けていることを決定することによって見つけられた場合、継続ポイントは、継続ポイントデータセクタに対応するRSTマーカを含むセクタの前に、二つのMCUに対応するセクタをまた含むことによってバックトラックされうる。
【0029】
いくつかの実施形態によれば、継続ポイントデータセクタを決定するステップは、少なくとも候補データセクタの前のMCUの数に対応した追加のデータセクタを、再構成されるべきJPEG画像に属するデータセクタに追加することで、データセクタの候補集合を形成することを少なくとも備え、MCUの数は、DRIタグの値と、二つのRSTマーカの間を通過したMCUの決定された数との間の差に対応しうる。追加の数は、前記差より少ない、もしくは同等でありうる。
【0030】
断片化ポイントが到達されたを決定するために、ハフマンテーブルを調べることが可能でありうる。概して、JPEG符号化画像では、DHT(Define Huffman Table)マーカによって特定される一つまたは多くのハフマンテーブルを使用して、前記DHTマーカを解析してハフマン木を再構築する、もしくは(可能であれば)ハフマンテーブルを直接使用することで、最小符号化単位(MCU)が、復号化される。MCU(すなわちRSTマーカを持たないデータセクタ)を復号化する試みが為され、MCUのビットパターンが、使用されたハフマン木(またはテーブル)に存在しないとわかった場合、これは、断片化ポイントが到達されたことを示しうる。
【0031】
いくつかの実施形態によれば、再構成されるべきJPEG画像に属するデータセクタ、および第一の断片化ポイントデータセクタを決定するステップは、少なくとも一つのハフマンテーブルに対応する少なくとも一つのDHTマーカを解析するステップと、RSTマーカを持たないデータセクタ内で見つかったビットパターンが前記少なくとも一つのハフマンテーブル内に存在しないことを決定するステップとを、少なくとも備えうる。
【0032】
いくつかの実施形態によれば、データセクタの候補集合を形成するステップは、候補データセクタに続くデータセクタから、同じJPEG画像に属するデータセクタ、および第二の断片化ポイントデータセクタを決定することを備え、同じJPEG画像に属するデータセクタは、候補セクタを備え、同じJPEG画像に属するデータセクタを、再構成されるべきJPEG画像に属するデータセクタに追加することによって、データセクタの候補集合を形成しうる。
【0033】
そのため、第一の断片化ポイントデータセクタを決定するための同じアルゴリズムが、候補データセクタを起点としていくつのセクタが同じJPEG画像の一部でありうるかを見つけるために、およびそれから、JPEGサムネイルとの比較を含む適合度スコアの最終的な算出に先立って、それらのセクタのすべてを、再構成されるべきJPEG画像に属するデータセクタに追加するために、ここで使用されうる。本実施形態は、JPEG画像を再構成するためのアルゴリズムの速度を上げうる。
【0034】
いくつかの実施形態によれば、同じJPEG画像に属するデータセクタ、および第二の断片化ポイントデータセクタを決定するステップは、
・データセクタが直前のデータセクタのリスタートマーカ値に続かないリスタートマーカ値を備えることを決定すること。
・データセクタが低いエントロピーデータを備えることを決定すること。
のうち、少なくとも一つを備える。
【0035】
そのため、第一の断片化ポイントデータセクタを決定するための同じアルゴリズムが、第二の断片化ポイントデータセクタを決定するために使用されうる。第一の断片化ポイントデータセクタを決定するための、DRIマーカ、もしくはDHTマーカおよび対応するハフマンテーブルを使用する上述の実施形態は、第二の断片化ポイントデータセクタを決定するためにも採用されうる。
【0036】
いくつかの実施形態によれば、適合度スコアを算出するステップは、データセクタの候補集合を復号化して、候補JPEG画像を形成することを備え、適合度関数は、候補JPEG画像をJPEGサムネイルと比較することを備える。本実施形態は、アルゴリズムからの結果の正確さの手動による証明を容易にし、また、再構成されるべきJPEG画像に属すると決定されたデータセクタのいくつかが実際は再構成されるべきJPEG画像に属していない場合、もしくは、再構成されるべきJPEG画像に属するべきであるいくつかのデータセクタをアルゴリズムが見落とした場合に対して頑強でありうる適合度関数を提供する。
【0037】
いくつかの実施形態によれば、適合度スコアを算出するステップは、JPEGサムネイルのサイズに合うよう候補JPEG画像をスケール変更することを備える。これは、適合度関数の回答における画素、すなわちJPEGサムネイルが、JPEG画像を候補JPEG画像の大きさにスケール変更することにより“作り上げられない”ため、有利である。そうではなく、候補JPEG画像が、JPEGサムネイルの大きさにスケールダウンされる。好ましくは、そのようなスケールダウン動作は、バイリニアもしくはバイキュービック補間を用いて行われる。これはまた、例えば候補JPEG画像内の前の欠けたデータセクタによる、候補JPEG画像の小さなエラーが、適合度スコアに大きな影響を与えないことをさらに促進する。
【0038】
いくつかの実施形態によれば、適合度スコアを算出するステップは、候補JPEG画像およびJPEGサムネイルをグレースケールに変換することを備える。
【0039】
いくつかの実施形態によれば、適合度関数は、候補JPEG画像の各画素とJPEGサムネイルの対応する画素との間の差を算出すること、およびその差を閾値と比較し、閾値を満たす各差のカウンタ値を増やすことを備え、適合度スコアは、カウンタ値に対応しうる。グレースケールで画素間の比較を行うことによって、そのような比較の速度は、カラーで比較を行うのに比べて上がりうる。適合度スコアはまた、容易に解され、容易に算出されうる。候補JPEG画像およびJPEGサムネイルの対応する画素間のいくらかの差を許容することによって、スケール変更もしくは補完エラー(例えばルーティングエラー)は無視されうる。
【0040】
いくつかの実施形態によれば、適合度関数は、候補JPEG画像の画素とJPEGサムネイルの対応する画素と間の差を算出すること、および算出された差を第一の閾値と比較して第一の閾値を満たさない各差のカウンタ値を増やすことを備え、差の算出および比較は、カウンタ値が第二の閾値を超える場合は行われず、適合度スコアは、カウンタ値が閾値を超える場合は第一の値に設定され、カウンタ値が第二の閾値を超えない場合は第一の値よりも高い第二の値に設定されうる。グレースケールで画素間の比較を行うことによって、そのような比較の速度は、カラーで比較を行うのに比べて上がりうる。候補JPEG画像およびJPEGサムネイルの対応する画素間のいくらかの差を許容することによって、スケール変更もしくは補完エラーは無視されうる。さらに、多すぎる場合に(例えば画像の画素の数の1/16もしくは1/10(もしくは任意の他の適切な分数)より多くが第一の閾値を超える差になった場合)、候補JPEG画像とJPEGサムネイルとの間の画素の比較を中止することによって、適合度関数の計算量は減りうる。
【0041】
本実施形態によれば、適合度スコアは、上述のカウンタ値が第二の閾値を超えない場合、第一の閾値を満たす差の数に設定されうる。
【0042】
いくつかの実施形態によれば、本方法は、各リスタートマーカ値を備える複数の連続したデータセクタの前記少なくともいくつかを、複数のリストに分類するステップをさらに備え、各リストはリスタートマーカ値に対応し、それぞれがリスタートマーカ値を備える複数のデータセクタを備える。このステップを行うことによって、複数の候補データセクタを選択するステップは、断片化ポイントデータセクタのリスタートマーカ値に基づいてリストを選択することを備え、複数の候補データセクタは、選択されたリスト内の複数のデータセクタを備えうる。本実施形態は、RSTマーカを備えるデータセクタを、一スイープで一回、フィルタリングおよび分類し、これによって特定の断片化ポイントデータセクタのために適切な候補データセクタを見つける速度が上がりうる。
【0043】
いくつかの実施形態によれば、特定のリストの一つのデータセクタが継続ポイントデータセクタとして使用された際は、このセクタは、データセクタの集積のさらなる継続ポイントを決定するスピードを上げるために、対応するリストから除かれうる
いくつかの実施形態によれば、本方法は、複数の連続したデータセクタの各データセクタのエントロピー値を算出するステップをさらに備え、複数の候補セクタのそれぞれは、閾値エントロピー値を超えるエントロピー値を有する。上述のように、JPEG画像の一部であるデータセクタは概して、高いエントロピーデータを備える。さらに、RSTマーカは、データセクタの集積の中で全くの偶然で現れうる2バイト16進数である。本実施形態は、RSTマーカが全くの偶然で現れるそのようなデータセクタを、候補データセクタのリストから有利に除きうる。
【0044】
いくつかの実施形態によれば、各リスタートマーカ値を備える複数の連続したデータセクタの前記少なくともいくつかを、複数のリストに分類するステップは、閾値エントロピー値を超えるエントロピー値を有するデータセクタのみを分類することを備える。本実施形態は、こうして、RSTマーカが全くの偶然で現れるデータセクタを候補データセクタとして有するリスクをさらに減らす。
【0045】
いくつかの実施形態によれば、上述の方法は、さらなる断片化ポイントデータセクタが第二の断片化ポイントデータセクタの後に見つかった場合は、再構成されるべきJPEG画像に属するさらなるデータセクタを見つけるために本方法が繰り返されるように、再帰的に行うことができる。言い換えれば、再構成されるべきJPEG画像が二つより多い断片でセクタの集積の中に格納された場合、本方法は、断片3、4等を見つけるために再び行われる。
【0046】
第二の態様では、本発明は、処理能力を有する装置によって実行されると第一の態様による方法を実行するよう適応された命令を有するコンピュータ可読記憶媒体を備えるコンピュータプログラム製品を提供する。
【0047】
第三の態様では、本発明は、断片化されたJPEG画像を、複数の連続したデータセクタを備えるデータセクタの集積から再構成する際に使用される装置を提供し、複数の連続したデータセクタの少なくともいくつかは、各リスタートマーカ値を備え、装置は、
・複数の連続したデータセクタにおいて、JPEGファイル署名を備えるデータセクタの位置を特定し、
・JPEGファイル署名を備えるデータセクタおよび少なくとも一つの続くデータセクタから、再構成されるべきJPEG画像に対応するJPEGサムネイルを抽出し、
・JPEGファイル署名を備えるデータセクタに続くデータセクタから、再構成されるべきJPEG画像に属するデータセクタ、および第一の断片化ポイントデータセクタを決定し、第一の断片化ポイントデータセクタはリスタートマーカ値に対応し、
・第一の断片化ポイントデータセクタに対応するリスタートマーカ値に基づいて、各リスタートマーカ値を備える複数のデータセクタの前記少なくともいくつかにおいて、複数の候補データセクタを選択し、
・各候補データセクタについて継続ポイントデータセクタを決定し、
○少なくとも候補データセクタを、再構成されるべきJPEG画像に属するデータセクタに追加することでデータセクタの候補集合を形成し、
○データセクタの候補集合およびJPEGサムネイルを適合度関数のパラメータとして使用することで候補データセクタの適合度スコアを算出し、
・算出された適合度スコアの中で最も高い適合度スコアを有する候補データセクタを、再構成されるべきJPEG画像に属するさらなるデータセクタを決定するための継続ポイントデータセクタとして選択する、
よう、適応される。
【0048】
第二および第三の態様は、概して、第一の態様と同じ特徴および利点を有しうる。
【0049】
概して、クレームで使われる全ての用語は、本明細書において別段の指定がない限り、技術分野におけるそれらの通常の意味にしたがって解釈されるべきである。一つ/一つの/その[要素、装置、構成要素、手段、ステップ、等]についての全ての言及は、別段の指定がない限り、要素、装置、構成要素、手段、ステップ、等の少なくとも一つの例に言及しているとして、オープンに解釈されるべきである。
【図面の簡単な説明】
【0050】
本発明の、上記の、並びに追加の目的、特徴、および利点は、下記の例示的および非限定的な本発明の実施形態の詳細な説明を通し、付属の図面を参照して、より良く理解されるであろう。図面では、同じ参照番号が同様の要素に使用される。
図1】再構成されるべきJPEG画像を備えるデータセクタの集積の一例。
図2】断片化されたJPEG画像の画像データを備えるデータセクタの集積の一例。
図3】データセクタの集積から、断片化されたJPEG画像を再構成する際に使用する方法の一例。
【発明を実施するための形態】
【0051】
本発明は、ハードディスクまたはフラッシュダンプから、断片化されたJPEG画像をを再構成する際に使用される方法および装置を提案し、ハードディスクまたはフラッシュダンプは、データセクタの集積を備える。例えばNANDフラッシュストレージ等のいくつかのフラッシュストレージは、データセクタ(例えば512バイトまたは2048バイトのデータ)をページに編成し、各ページは、スペア領域またはスペアコラムと呼ばれる例えば16または64バイトの付加データと関連する。尚、そのようなスペア領域は、本発明で説明されるようなデータセクタと見なされないことに留意されたい。いくつかの実施形態によれば、これらのスペアコラムは、再構成されるべきJPEG画像の任意の検索に先立って、フィルタリングして除かれる。例えばeMMCフラッシュストレージ等の他のタイプのフラッシュストレージはスペアコラムを備えず、したがって上述のフィルタリング動作は、これらには必要でない。ハードディスクまたはフラッシュストレージは、携帯電話、コンピュータ、もしくは同様のコンピューティング装置のメモリでありうる。
【0052】
断片化されたJPEG画像を再構成する際に使用する方法が、ここで図1−3に関連して説明される。尚、図1−2のデータセクタの集積は、本発明をより簡単に説明するために単純化されていることに留意されたい。
【0053】
再構成されるべきJPEG画像の検索は、ダンプファイル(ハードディスク、フラッシュダンプ等)を、断片化されたJPEG画像を再構成する際に使用される装置のメモリにロードすることで始まる。ダンプファイルは、複数の連続したデータセクタ100、200を備えるデータセクタの集積を備える。装置は、いくつかの実施形態によると、第一に複数の連続したデータセクタ100、200をステップ実行し、例えばJPEGファイル署名に対応する16進値で始まる各セクタのリストを作成するよう構成されうる。図1では、JPEGファイル署名もしくはJPEGヘッダは、第一のセクタ102で見つかる。16進値は、0xFF 0xD8 0xFFでありうる。言い換えれば、断片化されたJPEG画像を再構成する際に使用する方法は、複数の連続したデータセクタの中から、JPEGファイル署名を備えるデータセクタ102の位置を特定S302することで始まりうる。
【0054】
本方法の次のステップは、JPEGファイル署名を備えるデータセクタ102および少なくとも一つの連続したデータセクタ104、106から、再構成されるべきJPEG画像に対応するJPEGサムネイルを抽出S304することである。上述のように、サムネイルは概してJPEGファイルの最初の数キロバイトで位置を特定されるが、それは、サムネイルは概して、JPEGファイル署名を備えるデータセクタ102に続く一つまたは複数のデータセクタで位置を特定されることを意味する。いくつかの実施形態によれば、JPEGサムネイルのデータの一部は、JPEGファイル署名と同じデータセクタ102に具備される。
【0055】
JPEGサムネイルが抽出できると、JPEG画像に対応する、JPEG画像に属するデータの検索を始めることができる。本方法は、続けて、Start of Scan(SoS)マーカを備えるデータセクタ108が見つかるまでステップを進めうる。このデータセクタ108の後、JPEG画像の画像データが見つかりうる。これは、JPEGファイル署名を備えるデータセクタ102に続くデータセクタ104−108、200から、再構成されるべきJPEG画像に属するデータセクタを決定できること、また再構成されるべきJPEG画像の任意の既存の断片化ポイントも決定できることを意味する。
【0056】
断片化は、例えば、空きメモリが小さなブロックに分けられ、割り当てメモリが間に差し挟まれる際に起こりうる。例えばJPEG画像が空きメモリに格納されると、JPEG画像の画像データは空きメモリのいくつかのブロックに分割されうる。法科学的状況では、ファイルシステムはよく破損し、よって、JPEG画像の画像データを見つけることができるメモリのブロック間のポインタがなくなるため、カービング技術が必要になる。しかしながら、JPEG画像の全ての断片を見つける課題は尚解決する必要があり、本発明は、この課題への解決策を提供しうる。
【0057】
そこで、再構成されるべきJPEG画像に属するデータセクタを決定する際は、本方法は、第一の断片化ポイントデータセクタが見つかるS306まで、SoSマーカを備えるデータセクタ108に続くセクタをステップ実行することを備えうる。そのような断片化ポイントデータセクタは、例えば、データセクタが低いエントロピーデータを備えると決定された場合に見つけられうるが、これはJPEG画像の画像データは概して高いエントロピーを有するためである。図2では、210と称されるデータセクタは、そのような低いエントロピーデータを備えると決定される。データセクタが低いまたは高いエントロピーデータを備えるかを決定するためのコード例は、以下のようになる。
【0058】
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;
}
【0059】
こうして、第一の断片化ポイントデータセクタ208は、低いエントロピーデータを備えるデータセクタ210の直前にあるデータセクタ208であると決定S306される。これはつまり、SoSマーカ108と、低いエントロピーデータを備えるデータセクタ210との間の全てのデータセクタ202−208が、再構成されるべきJPEG画像に属すると決定されることを意味する。
【0060】
しかしながら、再構成されるべきJPEG画像のすべての画像データが見つかったわけではない。これは、例えばJPEGサムネイルとの比較から、もしくは、最後の二つのバイトの再構成されるべきJPEG画像が、JPEG規格に従ったJPEG符号化画像の終端を定義する値0xFF 0xD9を有するかを決定することによって、決定することができる。その結果、そこからJPEG画像の次の断片が始まる継続ポイントデータセクタを見つけることが必要になりうる。これは、JPEG符号化画像で使用されるRSTマーカ値を利用することによって為すことができる。図2で説明される例では、第一の断片化ポイントデータセクタ208は、RST2マーカ値を備えるが、上述のように、第一の断片化ポイントデータセクタがRSTマーカ値を備えない場合は、第一の断片化ポイントデータセクタは、RSTマーカを備える、最初に先行するデータセクタのリスタートマーカ値に対応すると決定される。そして第一の断片化ポイントデータセクタ208に対応するリスタートマーカ値RST2に基づいて、複数のデータセクタのうち各リスタートマーカ値を備える前記少なくともいくつかの中で、複数の候補データセクタが選択S308される。候補セクタはしたがって、RST2に続くRSTマーカ値を備えるべきであり、それはつまり、候補セクタはRST3マーカ値を備えるべきであることを意味する。図2では、これは218および228と称されるセクタに対応する。
【0061】
尚、いくつかの実施形態によれば、本方法は、各リスタートマーカ値を備えるデータセクタを、複数のリストに分類することを備え、これは、JPEG画像の任意の再構成が行われるのに先立って、フラッシュダンプ(ハードドライブ等)のデータセクタの全体の集積について有利に為されうる。これらの八つのリストのそれぞれは、リスタートマーカ値に対応する。言い換えれば、データセクタの集積のすべてのデータセクタをステップ実行することおよび各RSTマーカ値の検索によって、八つのリストは作成され、RST0−7に対応しうる。そのようなデータセクタが見つかると、このデータセクタは、対応するリストに加えられる。
【0062】
そしてこれらのリストは、複数の候補データセクタを選択S308するために使用されうる。すなわち、断片化ポイントデータセクタのリスタートマーカ値に基づいたリストが選択され、複数の候補データセクタは、この場合、選択されたリストの複数のデータセクタを備えうる。図1−2に示した、および上述の例では、リストは二つの候補データセクタ218、228を備えうる。
【0063】
いくつかの実施形態によれば、高いエントロピーデータを備えるデータセクタのみが、候補セクタとして選択されうる。上述のように、JPEG画像データを備えるデータセクタは、概して高いエントロピーを有する。そのため、そのような高いエントロピーデータを有する候補データセクタのみを選択することが、JPEG画像を再構成するためのより効率的な方法を提供しうる。言い換えれば、例えばRST3マーカ値を備える第二のデータセクタ228が低いエントロピーデータを備えた場合、このセクタは候補データセクタとしては使用されない。有利には、高い(すなわち、閾値エントロピー値を超える)エントロピーデータを備えるデータセクタのみが、複数のリストに分類され、リストはそれから候補データセクタを決定するために使用されうる。いくつかの実施形態によれば、断片化されたJPEG画像を再構成する際に使用する方法は、最初にデータセクタの集積を一つずつステップ実行するステップと、各セクタのエントロピーを算出するステップと、全ての高エントロピーセクタを特定の高エントロピーリストに入れるステップと、を備える。それから、この特定の高エントロピーリストに基づき、特定の高エントロピーリストのデータセクタを一つずつステップ実行して、RSTマーカ値を備える各データセクタを対応するリストに加えることによって、上述の八つのRSTリストが作成されうる。
【0064】
候補データセクタ218、228が選択S308された後に、継続ポイントデータセクタが決定S310される。これは、各候補データセクタ218、228について、少なくとも候補データセクタ218、228を、再構成されるべきJPEG画像に属するデータセクタ202−208に追加することでデータセクタの候補集合を形成することによって為される。これは、図1−2で説明される例において、データセクタの二つの候補集合が形成されることを意味する。セクタ202−208および少なくとも第一の候補データセクタ218を含む一集合と、セクタ202−208および少なくとも第二の候補データセクタ228を含む一集合である。
【0065】
いくつかの実施形態によれば、再構成されるべきJPEG画像に属するデータセクタに追加されるのは、候補データセクタのみではない。その代わりに、各候補データセクタについて、候補セクタに続き、同じJPEG画像に属するデータセクタが決定される。これは、候補データセクタに続くデータセクタをステップ実行し、第二の断片化ポイントデータセクタを探すことによって為される。言い換えれば、JPEG画像の完全な断片が、再構成されるべきJPEG画像に追加され、データセクタの候補集合を形成S312する。多くの場合、追加される完全な断片は、再構成されるべきJPEG画像とは異なるJPEG画像に属するが、追加される全部の断片が、再構成されるべきJPEG画像に属する場合もある。第二の断片化ポイントデータセクタは、第一の断片化ポイントデータセクタと同じ方法で、すなわち、データセクタが、先行するデータセクタのリスタートマーカ値に続かないリスタートマーカ値を備えることを決定すること、もしくはデータセクタが低いエントロピーデータを備えることを決定することによって、見つかりうる。図2の例では、RSTマーカ値を備えないセクタ220、222、226が、高いエントロピーデータをを備え、セクタ224が、正しいRSTマーカ値、すなわち、先行するデータセクタ218のRSTマーカ値であるRST3に続くRST4を備えるため、218−226と称されるセクタは、同じJPEG画像に属すると決定される。しかしながら、228と称されるセクタは、正しくない、先行するデータセクタ224のリスタートマーカ値に続かないRSTマーカ値(RST3)を備える。そのため、第二の断片化ポイントデータセクタは、226と称されるデータセクタであると決定される。これは、データセクタの第一の候補集合は、202−208、および218−226と称されるセクタを備えることを意味する。第二の候補データセクタについては、232と称されるデータセクタが、低いエントロピーデータを備えると決定され、それは、データセクタの第二の候補集合は、202−208および228−230と称されるセクタを備えることを意味する。
【0066】
次のステップは、データセクタの候補集合およびJPEGサムネイルを適合度関数のパラメータとして使用して、各候補データセクタの適合度スコアを算出S314することである。適合度関数は、JPEGサムネイルのデータを候補データセクタと比較し、複数の候補データセクタのうち、どれが継続ポイントデータセクタとして使用されるべきかを選択S318するのに使用することが出来る適合度スコアを返す、任意の関数でありうる。適合度関数は、例えば、JPEG符号化サムネイルの周波数成分を、候補データセクタのJPEG符号化データと比較しうる。適合度関数はまた、データセクタの候補集合を復号化して候補JPEG画像を形成することを備え、適合度関数は、候補JPEG画像の画素データをJPEGサムネイルの画素データと比較することを備えうる。この比較は、JPEGサムネイルを候補JPEG画像のサイズにスケール変更すること、もしくは、候補JPEG画像をJPEGサムネイルのサイズに合うようにスケール変更することを備えうる。
【0067】
いくつかの実施形態によれば、適合度関数は、候補JPEG画像およびJPEGサムネイルを、グレースケール画像に変換することを備える。
【0068】
例として、グレースケール画像を比較して適合度スコアを提供する二つの適合度関数がここで示される。これらの両方の例において、候補JPEG画像は、JPEGサムネイルのサイズに合うようにスケール変更される。
【0069】
第一の適合度関数は、候補JPEG画像の各画素とJPEGサムネイルの対応する画素との間の差を算出することと、その差を閾値と比較して、閾値を満たす各差のカウンタ値を増やすことと、を備え、適合度スコアは、カウンタ値に対応する。
【0070】
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;
}
【0071】
上記の例では、閾値はゼロに設定されており、すなわちカウンタ値は、サイズ変更された候補JPEG画像の画素値が、JPEGサムネイルの対応する画素値と等しい場合のみ増加するが、実施形態によれば、本方法のこの部分は、
【0072】
If (fabs(thumbVec[z] - newVect[z]) < difference_threshold)
similarity++;
【0073】
に変更されうる。“差閾値”は、グレースケール画像で可能なグレースケール値の数に依る任意の適切な値に設定される。概して、グレースケール画像は、256のグレースケール値を備えうるが、16の値を使用することもまた可能である。
【0074】
これはまた、第二の適合度関数にも適用される。
【0075】
第二の適合度関数は、候補JPEG画像の画素とJPEGサムネイルの対応する画素との間の差を算出することと、算出された差を第一の閾値と比較して、第一の閾値を満たさない各差のカウンタ値を増やすことと、を備え、差を算出することおよび比較することは、カウンタ値が第二の閾値を超える場合は行われず、適合度スコアは、カウンタ値が閾値を超える場合は第一の値に設定され、カウンタ値が第二の閾値を超えない場合は、第一の値よりも高い第二の値に設定される。本実施形態による適合度スコアは、上述のカウンタ値が第二の閾値を超えない場合に、第一の閾値を満たす差の数に設定されうる。
【0076】
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;
}
【0077】
本実施形態では、第二の閾値は、サムネイル画像の画素の数の1/16、すなわち、(cycx)/16に設定される。cyは、画像のy方向におけるサムネイル画像のサイズであり、cxは、画像のx方向におけるサムネイル画像のサイズであるが、他の閾値は1/5、1/10、もしくは1/20のように用いられうる。
【0078】
適合度スコアはこのように、データセクタのさらなる候補集合が存在しなくなる(図3のステップS316で決定される)まで、データセクタの第一の候補集合について、およびデータセクタの全ての他の候補集合について算出される。
【0079】
上述の例によれば、適合度関数および適合度スコアは、第一の候補データセクタ218もしくは第二の候補データセクタ228が、再構成されるべきJPEG画像の第二の断片の始まりであるかを決定するために使用される。 言い換えれば、再構成されるべきJPEG画像に属するさらなるデータセクタを決定するために、算出された適合度スコアの中で最も高い適合度スコアを有する候補データセクタが継続ポイントデータセクタとして選択S318される。 選択された継続ポイントデータセクタは、したがって、再構成されるべきJPEG画像の第二の断片の始まりである。
【0080】
当業者に理解されるように、上述の方法はそれから、必要であれば、すなわち再構成されるべきJPEG画像が二つより多い断片を備えていれば、再構成されるべきJPEG画像のさらなる断片を見つけるために使うことができる。言い換えれば、(例えばJPEGサムネイルとの比較によって)再構成されるべき画像が完全に再構成されていないと決定S320された場合、再構成されるべきJPEG画像に属する全てのデータセクタが決定されるまで、S308-S318のステップが繰り返される。
【0081】
例として、JPEG画像を再構成するための方法のさらなる特定の実施形態をここに説明する。再構成アルゴリズムは、12のステップを備える:
1.ダンプファイルをメモリにロードする。
2.ファイルを、一度に一セクタずつステップ実行し、hex 0xFF 0xD8 0xFFのJPEGファイル署名で始まる各セクタのリストを作る。このリストをJPEGSTARTSと呼ぶ。
3.ファイルを、一度に一セクタずつステップ実行し、各セクタのエントロピーを算出する。全ての高エントロピーセクタを、HIGHENTROPYSECTORSというリストに入れる。
4.ダンプ中の異なるリスタートマーカを有するセクタを追跡するために、RST0LIST、RST1LIST、RST1LIST、RST2LIST、RST3LIST、RST4LIST、RST5LIST、RST6LISTおよびRST7LISTという八つのリストを作成する。ファイルを、一度に一セクタずつステップ実行し、八つの異なるリスタートマーカを探す。一つが見つかると、それを適切なリストに加える。
5.JPEGSTARTSの各エントリについて、サムネイルがこのセクタおよびこれに続くセクタから抽出できるかを確認する。各成功したサムネイル抽出について、6ステップ前進し、その後、アルゴリズムは終了する。
6.現在の再構成されるべきJPEGについて、SOSマーカにステップを進め、低いエントロピーセクタに遭遇するか、もしくはリスタートマーカのミスマッチが検出されるまで、セクタずつ継続する。
7.この時点で、アルゴリズムは、ダンプでJPEG抽出を継続するのに最良のポジションを選ぶ必要がある。最後の正しいマーカがRST4だった場合、RST5LISTのセクタの一つを選択する必要がある。アルゴリズムは、最後の正しくカービングされたリスタートマーカプラス1を必要とする(RST7は、RST0に回り込む)。
8.適切なリスタートマーカリストが選択されたら、アルゴリズムは、リストのどの要素が断片化されたJPEGの最良の継続かを選ぶ必要がある。各エントリについて、低いエントロピーセクタに遭遇するか、もしくはリスタートマーカのミスマッチが検出されるまで、セクタずつ継続して、断片の長さを取得する。
9.再構成されるべきJPEGの始めからのデータを有するバッファを作成する。現在調べられている断片のデータを追加する。
10.上述したバッファのJPEGを復号化する。それをサムネイル画像のサイズに縮小する。これをCARVEDPICと呼ぶ。
11.適合度関数を使って、サムネイルをCARVEDPICと比較し、適合度スコアを取得する。
12.最良の適合度スコアを有する断片を、ファイルの継続として選択する。
【0082】
本開示のさらなる実施形態は、上記の明細書を検討すれば、当業者には明らかになるであろう。本明細書および図面は実施形態および例を開示するが、この開示はこれらの特定の例に制限されない。多くの変更および変形が、付属のクレームによって定義される本開示の範囲を逸脱することなく為すことができる。クレームに見られる任意の参照記号は、クレームの範囲を限定するとは解されない。
【0083】
上記の明細書に開示したシステム及び方法は、ソフトウェア、ファームウェア、ハードウェアまたはそれらの組み合わせとして実装されうる。ハードウェアの実装において、上記の説明で述べられる機能的なユニット間もしくはステージ間のタスクの分割は、必ずしも物理的なユニットへの分割に対応せず、逆に、一つの物理的な構成要素は複数の機能を有してよく、一つのタスクはいくつかの物理的な構成要素によって協働して実行されてよい。ある構成要素もしくは全ての構成要素は、デジタル信号プロセッサまたはマイクロプロセッサによって実行されるソフトウェアとして実装されうるか、もしくはハードウェアとしてまたは用途特定集積回路として実装されうる。そのようなソフトウェアは、コンピュータ記憶媒体(もしくは非一時媒体)および通信媒体(もしくは一時媒体)を備えうるコンピュータ可読媒体に配布されうる。当業者には既知のように、コンピュータ記憶媒体という用語は、コンピュータ可読インストラクション、データ構造、プログラムモジュール、もしくは他のデータ等の情報を記憶するための任意の方法もしくは技術に実装される、揮発性および不揮発性両方の、リムーバブルおよび非リムーバブル媒体を含む。コンピュータ記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)または他の光学ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気記憶装置、もしくは所望の情報を格納するのに使用することができ、コンピュータによってアクセスできる任意の他の媒体を含むが、それらに限定されない。さらに、通信媒体が、概して、コンピュータ可読インストラクション、データ構造、プログラムモジュール、もしくは他のデータを、搬送波または他の移送機構等の変調データ信号で具現し、任意の情報配達媒体を含むことは、当業者には既知である。
図1
図2
図3
【外国語明細書】
2017022690000001.pdf