(57)【要約】【課題】画像から特徴点を抽出する処理が不要であり、ノイズに対して耐性のある画像探索が可能となるハッシュ値生成方法及び装置、並びにプログラムを提供する。【解決手段】画像に対して特定の画素数の領域である窓の位置を決定する窓位置決定工程(S14)と、窓内に含まれる画素値からハッシュ値を生成するハッシュ値生成工程（S18）と、画像に対する窓の位置を移動させる工程であって、異なる位置の窓同士で窓の一部が重なり合う移動量によって窓の位置を順次に移動させる窓位置移動工程（S24）と、を含み、窓の位置を異ならせた複数の位置における各位置でハッシュ値の生成を行うことにより、画像から複数のハッシュ値を生成する。【選択図】図１
2016129005.tif 000002
【特許請求の範囲】
【請求項１】
画像に対して特定の画素数の領域である窓の位置を決定する窓位置決定工程と、
前記画像の前記窓内に含まれる画素値からハッシュ値を生成するハッシュ値生成工程と、
前記画像に対する前記窓の位置を移動させる工程であって、異なる位置の前記窓同士で前記窓の一部が重なり合う移動量によって前記窓の位置を順次に移動させる窓位置移動工程と、を含み、
前記窓の位置を異ならせた複数の位置における各位置で前記ハッシュ値生成工程による前記ハッシュ値の生成を行うことにより、前記画像から複数の前記ハッシュ値を生成するハッシュ値生成方法。
【請求項２】
前記ハッシュ値生成工程は、前記窓内の画素を全て使って前記ハッシュ値を生成する請求項１に記載のハッシュ値生成方法。
【請求項３】
Ｎが３以上の整数である場合に、
前記ハッシュ値生成工程は、前記窓内の各画素の画素値を２値化又はＮ値化した値を並べて前記ハッシュ値を生成する請求項１又は２に記載のハッシュ値生成方法。
【請求項４】
前記ハッシュ値生成工程は、前記窓内の画素の一部である特定の画素を使って前記ハッシュ値を生成する請求項１に記載のハッシュ値生成方法。
【請求項５】
前記特定の画素は、前記窓内に複数個定められており、
前記複数個の前記特定の画素同士は、互いに規定の画素数以上離れて離散的に配置されている請求項４に記載のハッシュ値生成方法。
【請求項６】
Ｎが３以上の整数である場合、
前記ハッシュ値生成工程は、前記特定の画素の画素値を２値化又はＮ値化した値を並べて前記ハッシュ値を生成する請求項５に記載のハッシュ値生成方法。
【請求項７】
前記窓に含まれる画素値の分布に基づき、前記ハッシュ値の生成の要否を判断する判断工程を含み、
前記判断工程により前記ハッシュ値の生成が不要であると判断された場合に、前記不要であると判断された前記窓の位置での前記ハッシュ値生成工程による前記ハッシュ値の生成の処理を不実施とする請求項１から６のいずれか一項に記載のハッシュ値生成方法。
【請求項８】
前記判断工程は、前記窓に含まれる画素の全ての画素値が同じ値である場合に、前記ハッシュ値の生成が不要であると判断する請求項７に記載のハッシュ値生成方法。
【請求項９】
前記画像はカラー画像であり、前記カラー画像を表す複数の成分の成分ごとに値が定められた画素値を有する画像データとなっており、
前記ハッシュ値生成工程は、前記窓に含まれる画素の前記成分ごとの値を基に、前記複数の成分を代表する一つの代表値を求め、前記代表値を使って前記ハッシュ値を生成する請求項１から８のいずれか一項に記載のハッシュ値生成方法。
【請求項１０】
前記複数の成分は、赤の成分を示すＲ成分、緑の成分を示すＧ成分、及び青の成分を示すＢ成分の成分ごとに値が定められた画素値を有する画像のデータであり、
Ｒ成分の値とＧ成分の値とＢ成分の値とを、予め定めた比率で混合加算して得られるグレイの値を前記代表値として用いる請求項９に記載のハッシュ値生成方法。
【請求項１１】
前記複数の成分のうち、いずれか一つの成分の値を前記代表値として用いる請求項９に記載のハッシュ値生成方法。
【請求項１２】
画像に対して特定の画素数の領域である窓の位置を決定する窓位置決定部と、
前記画像の前記窓内に含まれる画素値からハッシュ値を生成するハッシュ値生成部と、
前記画像に対する前記窓の位置を移動させる窓位置移動処理部であって、異なる位置の前記窓同士で前記窓の一部が重なり合う移動量によって前記窓の位置を順次に移動させる窓位置移動処理部と、を有し、
前記窓の位置を異ならせた複数の位置における各位置で前記ハッシュ値生成部による前記ハッシュ値の生成を行うことにより、前記画像から複数の前記ハッシュ値を生成するハッシュ値生成装置。
【請求項１３】
コンピュータを、
画像に対して特定の画素数の領域である窓の位置を決定する窓位置決定部と、
前記画像の前記窓内に含まれる画素値からハッシュ値を生成するハッシュ値生成部と、
前記画像に対する前記窓の位置を移動させる窓位置移動処理部であって、異なる位置の前記窓同士で前記窓の一部が重なり合う移動量によって前記窓の位置を順次に移動させる窓位置移動処理部として機能させ、
前記窓の位置を異ならせた複数の位置における各位置で前記ハッシュ値生成部による前記ハッシュ値の生成を行うことにより、前記画像から複数の前記ハッシュ値を生成する装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はハッシュ値生成方法及び装置、並びにプログラムに係り、特に、画像探索に用いるハッシュ値を生成する技術に関する。
【背景技術】
【０００２】
画像探索の分野において、探索対象の画像が１枚与えられた場合に、登録済みの大量の画像の中から、探索対象の画像と似た画像を効率よく探し出すことが求められている。具体的な適用例として、例えば、特許文献１には、紙幣や有価証券に代表される各種の紙文書の真偽を判定する技術が記載されている。特許文献１によれば、紙を形成する繊維質材料の絡み具合のランダム性に起因して得られるランダム画像を用いることで、固体の真偽判定を行っている。特許文献１で提案されている真偽判定方法は、基準データとして登録された画像群の全てに対して、１枚ずつ、判定対象の画像との相関係数を求めることにより真偽判定を行う。
【０００３】
特許文献１に記載の紙文書の真偽判定を行う用途では、真性物の基準データである画像群の中から、判定対象の画像と似た画像を効率よく探し出すことが必要とされる。
【０００４】
画像を効率よく探索するために、ハッシュ値を用いる手法が提案されている（特許文献２参照）。特許文献２では、文書画像から単語領域の重心を示す特徴点を複数個抽出して、特徴点間の幾何的な関係からハッシュ値を求める手法が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第４１０３８２６号明細書
【特許文献２】特開２００９−７００６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１に記載の発明によれば、簡単かつ高精度に真偽判定を行うことができる。しかし、特許文献１に記載の手法だけでは、登録する画像数に比例して照合時間がかかるという欠点がある。
【０００７】
その一方、効率のよい画像探索を行うために提案されている特許文献２に記載の手法は、１枚の文書画像から各単語領域の重心を示す多数の特徴点を抽出する処理が必要となる。画像内から特徴点を抽出する処理は、画像の位置ずれなどのノイズの影響を受けやすい。特許文献２に記載の手法は、抽出された特徴点からハッシュ値を求めるため、ノイズの影響でハッシュ値も変動しやすく、ノイズ耐性が低いという欠点がある。さらに、特許文献１の用途で想定しているランダム画像のように、際立った特徴の少ない画像は特徴点の抽出が困難であり、かかる画像に関して、特許文献２に記載の技術を適用することはできない。
【０００８】
本発明はこのような事情に鑑みてなされたもので、画像から特徴点を抽出する処理が不要であり、ノイズに対して耐性のある画像探索が可能となるハッシュ値生成方法及び装置、並びにプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
前記目的を達成するために、次の発明態様を提供する。
【００１０】
第１態様に係るハッシュ値生成方法は、画像に対して特定の画素数の領域である窓の位置を決定する窓位置決定工程と、画像の窓内に含まれる画素値からハッシュ値を生成するハッシュ値生成工程と、画像に対する窓の位置を移動させる工程であって、異なる位置の窓同士で窓の一部が重なり合う移動量によって窓の位置を順次に移動させる窓位置移動工程と、を含み、窓の位置を異ならせた複数の位置における各位置でハッシュ値生成工程によるハッシュ値の生成を行うことにより、画像から複数のハッシュ値を生成するハッシュ値生成方法である。
【００１１】
第１態様によれば、窓内に含まれる画素値を使ってハッシュ値を生成するため、画像から特徴点を抽出する処理が不要である。また、窓の一部が重なり合う移動量によって窓の位置を順次に移動させて画像を走査して、異なる窓位置でそれぞれハッシュ値を生成することにより１枚の画像から複数のハッシュ値を得るため、ノイズに対してロバスト性がある。
【００１２】
第２態様として、第１態様のハッシュ値生成方法において、ハッシュ値生成工程は、窓内の画素を全て使ってハッシュ値を生成する構成とすることができる。
【００１３】
第３態様として、第１態様又は第２態様のハッシュ値生成方法において、Ｎが３以上の整数である場合に、ハッシュ値生成工程は、窓内の各画素の画素値を２値化又はＮ値化した値を並べてハッシュ値を生成する構成とすることができる。
【００１４】
第４態様として、第１態様のハッシュ値生成方法において、ハッシュ値生成工程は、窓内の画素の一部である特定の画素を使ってハッシュ値を生成する構成とすることができる。
【００１５】
第５態様として、第４態様のハッシュ値生成方法において、特定の画素は、窓内に複数個定められており、複数個の特定の画素同士は、互いに規定の画素数以上離れて離散的に配置されている構成とすることができる。
【００１６】
第６態様として、第５態様のハッシュ値生成方法において、Ｎが３以上の整数である場合、ハッシュ値生成工程は、特定の画素の画素値を２値化又はＮ値化した値を並べてハッシュ値を生成する構成とすることができる。
【００１７】
第７態様として、第１態様から第６態様のいずれか一態様のハッシュ値生成方法において、窓に含まれる画素値の分布に基づき、ハッシュ値の生成の要否を判断する判断工程を含み、判断工程によりハッシュ値の生成が不要であると判断された場合に、不要であると判断された窓の位置でのハッシュ値生成工程によるハッシュ値の生成の処理を不実施とする構成とすることができる。
【００１８】
第８態様として、第７態様のハッシュ値生成方法において、判断工程は、窓に含まれる画素の全ての画素値が同じ値である場合に、ハッシュ値の生成が不要であると判断する構成とすることができる。
【００１９】
「同じ値」とは、完全に一致する場合のみならず、予め「同じ値」と見做す誤差の許容範囲を定めておき、許容範囲内の誤差がある場合についても「同じ値」として取り扱うことができる。
【００２０】
第９態様として、第１態様から第８態様のいずれか一態様のハッシュ値生成方法において、画像はカラー画像であり、カラー画像を表す複数の成分の成分ごとに値が定められた画素値を有する画像データとなっており、ハッシュ値生成工程は、窓に含まれる画素の成分ごとの値を基に、複数の成分を代表する一つの代表値を求め、代表値を使ってハッシュ値を生成する構成とすることができる。
【００２１】
第１０態様として、第９態様のハッシュ値生成方法において、複数の成分は、赤の成分を示すＲ成分、緑の成分を示すＧ成分、及び青の成分を示すＢ成分の成分ごとに値が定められた画素値を有する画像のデータであり、Ｒ成分の値とＧ成分の値とＢ成分の値とを、予め定めた比率で混合加算して得られるグレイの値を代表値として用いる構成とすることができる。
【００２２】
第１１態様として、第９態様のハッシュ値生成方法において、複数の成分のうち、いずれか一つの成分の値を代表値として用いる構成とすることができる。
【００２３】
第１２態様に係るハッシュ値生成装置は、画像に対して特定の画素数の領域である窓の位置を決定する窓位置決定部と、画像の窓内に含まれる画素値からハッシュ値を生成するハッシュ値生成部と、画像に対する窓の位置を移動させる窓位置移動処理部であって、異なる位置の窓同士で窓の一部が重なり合う移動量によって窓の位置を順次に移動させる窓位置移動処理部と、を有し、窓の位置を異ならせた複数の位置における各位置でハッシュ値生成部によるハッシュ値の生成を行うことにより、画像から複数のハッシュ値を生成するハッシュ値生成装置である。
【００２４】
第１２態様のハッシュ値生成装置において、第２態様から第１１態様で特定したハッシュ値生成方法の特定事項と同様の事項を適宜組み合わせることができる。その場合、ハッシュ値生成方法において特定される処理や動作の工程（ステップ）は、これに対応する処理や動作を担う手段としての処理部や機能部の要素として把握することができる。
【００２５】
第１３態様に係るプログラムは、コンピュータを、画像に対して特定の画素数の領域である窓の位置を決定する窓位置決定部と、画像の窓内に含まれる画素値からハッシュ値を生成するハッシュ値生成部と、画像に対する窓の位置を移動させる窓位置移動処理部であって、異なる位置の窓同士で窓の一部が重なり合う移動量によって窓の位置を順次に移動させる窓位置移動処理部として機能させ、窓の位置を異ならせた複数の位置における各位置でハッシュ値生成部によるハッシュ値の生成を行うことにより、画像から複数のハッシュ値を生成する装置として機能させるためのプログラムである。
【００２６】
第１３態様のプログラムにおいて、第２態様から第１１態様で特定したハッシュ値生成方法の特定事項と同様の事項を適宜組み合わせることができる。その場合、ハッシュ値生成方法において特定される処理や動作の工程（ステップ）は、これに対応する処理や動作を行うプログラムの「機能」の要素として把握することができる。
【発明の効果】
【００２７】
本発明によれば、画像内から特徴点の抽出が不要である。したがって、画像の種類によらず、ハッシュ値を効率よく生成することができる。また、本発明によれば、画像内を窓で走査しながら各窓位置でハッシュ値を求め、一つの画像から複数のハッシュ値を求めるため、ノイズに対して耐性がある。
【図面の簡単な説明】
【００２８】
【図１】図１は本発明の実施形態に係るハッシュ値生成方法が採用されたハッシュ登録処理の手順を示すフローチャートである。
【図２】図２は画像と窓の関係を示す説明図である。
【図３】図３は画素値からハッシュ値を生成する方法の一例を示す説明図である。
【図４】図４（Ａ）は窓における画素の配列順番の定め方の例を示す図であり、図４（Ｂ）は窓内における各画素の｛０，１｝に正規化された画素値の例を示す図である。
【図５】図５（Ａ）〜（Ｃ）は画像における窓の移動例を模式的に示した説明図である。
【図６】図６は一つの画像３０から７８４個のハッシュ値が生成されることを模式的に示した説明図である。
【図７】図７はハッシュ表に画像ＩＤ（Identification）を登録する処理の説明図である。
【図８】図８は登録対象の画像群の例を示す図である。
【図９】図９はハッシュ表に複数の画像ＩＤを登録する処理を模式的に示した説明図である。
【図１０】図１０はハッシュ登録処理によって得られるハッシュ表の概念図である。
【図１１】図１１は画像探索処理のフローチャートである。
【図１２】図１２は探索対象画像から求めた複数のハッシュ値とハッシュ表とを比較する処理の概念図である。
【図１３】図１３は本実施形態によるハッシュを用いた探索結果の例である。
【図１４】図１４（Ａ）は窓内の２値化された画素値をすべて使ってハッシュ値を生成する例を示す模式図であり、図１４（Ｂ）は窓内の４値化された画素値をすべて使ってハッシュ値を生成する例を示す模式図である。
【図１５】図１５は窓内における特定の画素の画素値を使用してハッシュ値を生成する例を示す説明図である。
【図１６】図１６は画像を縮小する処理の説明図である。
【図１７】図１７はハッシュ値を生成しない画素の集まりを含む画像の例を示す図である。
【図１８】図１８は図１７に示す画像においてハッシュ値を生成しない窓位置とハッシュ値を生成する窓位置の例を示す説明図である。
【図１９】図１９はハッシュ値の生成の要否判断を含んだハッシュ登録処理のフローチャートである。
【図２０】図２０は第一実施形態に係るハッシュ値生成装置の構成を示すブロック図である。
【図２１】図２１は第二実施形態に係るハッシュ値生成装置の構成を示すブロック図である。
【図２２】図２２は第三実施形態に係るハッシュ値生成装置の構成を示すブロック図である。
【図２３】図２３は画像探索サービスを提供するシステムの構成例を示すブロック図である。
【図２４】図２４は画像探索サービスを提供するシステムの他の構成例を示すブロック図である。
【図２５】図２５は画像の特徴点を利用したパノラマ合成の処理の概念図である。
【図２６】図２６は本発明の他の実施形態による画像間の対応付けの処理の説明図である。
【発明を実施するための形態】
【００２９】
以下、添付図面にしたがって本発明を実施するための形態について詳説する。
【００３０】
＜ハッシュ値生成方法の概要＞
本発明の実施形態に係るハッシュ値生成方法が適用される画像探索方法は、登録画像のハッシュ値と画像ＩＤ（identification）をハッシュ表に登録するハッシュ登録処理のステップと、探索対象画像からハッシュ値を求めて、ハッシュ表を利用して画像の探索を行う画像探索処理のステップと、に分けることができる。
【００３１】
ハッシュ登録処理は、登録画像を取得し、取得した登録画像から複数のハッシュ値を生成して、ハッシュ表に画像ＩＤを登録する処理である。画像ＩＤは、複数の画像を識別するために画像ごとに定義される識別符号である。「ＩＤ」はidentificationの略語表記である。画像探索処理に先行して、ハッシュ登録処理を行い、ハッシュ表に登録画像の画像ＩＤを登録しておく。そして、画像探索処理の際には、探索対象画像から複数のハッシュ値を生成した後、ハッシュ表と比較を行い、ハッシュ値の合致数が最も多い画像ＩＤを、探索対象画像に似た画像として判定する。
【００３２】
ハッシュ登録処理及び画像探索処理のそれぞれにおいて、本発明の実施形態に係るハッシュ値生成方法が用いられる。ここでは、登録画像のハッシュ値をハッシュ表に登録するハッシュ登録処理と、ハッシュ表を利用して画像の探索を行う画像探索処理とに分けて説明する。
【００３３】
［ハッシュ登録処理について］
図１は本発明の実施形態に係るハッシュ値生成方法が採用されたハッシュ登録処理の手順を示すフローチャートである。図１に示すフローチャートの各工程の処理は、コンピュータのハードウエアとソフトウエアの組み合わせによって実現することができる。ソフトウエアは、プログラムと同義である。
【００３４】
ハッシュ登録処理は、まず、画像取得工程（ステップＳ１２）にて画像を取得する。ここで取得される画像が登録画像である。画像のサイズやデータ形式については、特に制限はない。画像のサイズの一例として、３２×３２画素のサイズとすることができる。画像のデータ形式の一例として、８ビットの階調で表される白黒画像とすることができる。他の例として、画像は、ＲＧＢの各色８ビットの階調で表されるカラー画像とすることができる。ＲＧＢのＲはRed（赤）を表し、ＧはGreen（緑）を表し、ＢはBlue（青）を表している。
【００３５】
また、画像は、連続調画像に限らず、連続調画像をハーフトーン処理して得られるドット配置画像とすることができる。ドット配置画像は、ドット画像、ハーフトーン画像、又は、ドットデータなどの用語と同義である。ドット配置画像は、ドットのオンオフを示す二値の量子化による画像データである二値画像、又は、ドットサイズの種類に対応した多値の量子化による画像データである多値画像を用いてもよい。例えば、ドットサイズの種類として、大ドット、中ドット、及び小ドットの３種類のドットサイズを制御できる場合には、これら３種類のドット種とドットオフ（ドット無し）の区別を含む４値のドット配置画像となる。
【００３６】
画像取得工程（ステップＳ１２）により取得される画像には、固有の識別符号である画像ＩＤが定められ、画像ＩＤによって各画像を他の画像と区別して管理することができる。画像ＩＤの簡単な例として、本実施形態では、登録される画像に整数による番号を付与する。ただし、画像ＩＤの定め方はこの例に限らず、特に制限はない。
【００３７】
次いで、取得した画像における窓の位置を決定する（ステップＳ１４）。「窓」は、画像内における演算処理の対象として注目する特定の画素数の領域を規定する窓関数に相当するものである。演算処理の対象として着目する画像領域を「着目領域」という。窓は画像のサイズよりも小さな画像領域を規定する。
【００３８】
Ｍ、Ｎ、ｍ及びｎがいずれも自然数であって、ｍ＜Ｍ、かつ、ｎ＜Ｎを満たす場合に、画像のサイズをＭ行Ｎ列の画素配列によるＭ×Ｎ画素とし、窓のサイズはｍ行ｎ列の画素内列によるｍ×ｎ画素とすることができる。ここでは、簡単な例として、画像のサイズが３２×３２画素であり（Ｍ＝Ｎ＝３２）、窓のサイズが５×５画素（ｍ＝ｎ＝５）である場合を例示する。画像に対して窓の位置を変えることで、画像から切り取られる画像範囲が変わる。画像における窓の位置を「窓位置」という。画像から窓によって切り取って得られる画像の一部を「部分画像」という。画像内で窓を移動させ、それぞれの窓位置で得られる部分画像の処理を行うことを「走査」と表現する。
【００３９】
図２は画像と窓の関係を示す説明図である。図２では画像のサイズが３２×３２画素である画像３０の例が示されており、この画像３０に対して、窓のサイズが５×５画素である窓３２を移動させて画像３０の全体を走査する様子が示されている。
【００４０】
本実施形態では、画像３０全体から一つの（単一の）ハッシュ値を生成するのではく、画像３０から窓３２によって切り取られる部分画像から一つのハッシュ値を得る。そして、画像３０に対して窓３２の位置を少しずつ移動させ、各窓位置で切り取られる部分画像の各々からハッシュ値を生成することにより、最終的には一つの画像３０から複数のハッシュ値が得られる。
【００４１】
以下、具体例を用いて詳細に説明する。
【００４２】
図２に示した画像３０は、８ビット（２５６階調）のグレイ画像であり、画像内容は際立った特徴のないランダム画像となっている。グレイ画像は白黒画像と同義である。本例では、窓３２の初期位置として、画像３０の左上隅の位置に定める。ただし、窓３２の初期位置は、この例に限らず、適宜設定することが可能である。
【００４３】
次いで、窓３２に含まれる画素値を取得する（図１のステップＳ１６）。窓３２によって切り取られる画像領域のすべての画素から画素値を取得してもよいし、一部の画素から画素値を取得してもよい。ここでは、５×５画素の窓３２内に含まれる全２５画素の各画素の画素値を取得する例を説明する。
【００４４】
次いで、ステップＳ１６で取得した画素値からハッシュ値を生成する（ステップＳ１８）。窓３２によって規定される画像領域の画素値からハッシュ値を生成する方法としては様々な方法があり得る。
【００４５】
図３は画素値からハッシュ値を生成する方法の一例を示す説明図である。この例では、窓３２によって切り取られた５×５画素の画像からハッシュ値を生成するために、画像を正規化する。画素値の取り得る値の範囲が０から２５５である場合を［０，２５５］と記載する。［０，２５５］の画素値を簡単に正規化するために、０から１２７の値は「０」とし、１２８から２５５の値は「１」とする。このような二値化の処理により、２５６階調で表されていた各画素値は、「０」又は「１」に正規化される。画素値を「０」又は「１」に正規化することを、｛０，１｝に正規化すると記載する。
【００４６】
窓３２内には全部で２５画素が含まれており、各画素が｛０，１｝に正規化されることになる。そして、｛０，１｝に正規化された２５次元の点からハッシュ値を求める。
【００４７】
具体的には、図３に示すように、｛０，１｝に正規化された各画素値の並びをそのままハッシュ値の生成に利用することができる。図３の例では、窓３２内における５×５画素のそれぞれ正規化された画素値を画素の配列順に並べて５×５桁（＝２５桁）の２進数とし、得られた値を１０進数に直してハッシュ値としている。
【００４８】
図４（Ａ）は窓３２における画素の配列順番の定め方の例を示す図であり、図４（Ｂ）は、窓３２内における各画素の｛０，１｝に正規化された画素値の例を示す図である。なお、図４（Ｂ）は、図３に示した窓３２の位置における部分画像に正規化された画素値の例である。本例では図４（Ａ）に示すように、窓３２内における画素の配列順に１から２５までの並び順番が定められている。図４（Ｂ）に示された画像の画素値を図４（Ａ）の並び順に沿って並べて、ハッシュ値を生成すると、図３に例示したものとなる。ただし、画素値の並べ方については、図４（Ａ）に例示した配列順番に限定されず、様々な配列順番のルールを定めることができる。
【００４９】
窓のサイズがｍ×ｎ画素の場合、｛０，１｝に正規化された画素値から作られるハッシュ値のバリエーションは、２の（ｍ×ｎ）乗となる。したがって、ｍ×ｎ≦１６の場合、ハッシュキーは１６bit＝２byte（unsigned short int）で表現できる。１６＜ｍ×ｎ≦３２の場合、ハッシュキーは３２bit＝４byte（unsigned int）で表現できる。この値は、メモリの使用量に効いてくる。
【００５０】
上述のようにして、窓３２に含まれる画素値からハッシュ値を生成し（図１のステップＳ１８）、ハッシュ表にハッシュ値と関連付けて画像ＩＤを登録する（ステップＳ２０）。ハッシュ表の具体例は後述するが、ハッシュ表におけるキー（Key）はハッシュ値、バリュー（Value）は画像ＩＤである。
【００５１】
次いで、画像３０の全面の走査を完了したか否かの判定を行う（ステップＳ２２）。画像３０内に、窓３２による走査が行われていない未走査の領域が存在する場合には、ステップＳ２２でＮｏ判定となる。ステップＳ２２でＮｏ判定となった場合は、窓３２の位置を移動し（ステップＳ２４）、ステップＳ１４に戻る。
【００５２】
窓３２の位置を変えて、ステップＳ１４からステップＳ２４の処理を繰り返すことにより、各窓位置で切り取られた部分画像から、それぞれハッシュ値が生成され、ハッシュ表に画像ＩＤが登録される。
【００５３】
図５（Ａ）〜（Ｃ）は、画像３０における窓３２の移動例を模式的に示した説明図である。図５（Ａ）において画像３０の左上隅に設定された窓３２の初期位置から、窓３２の位置を順次移動させ、画像３０の全面を走査する。
【００５４】
説明の便宜上、画像３０の横方向をｘ方向とし、画像の縦方向をｙ方向とする。画像３０の横方向とは、Ｍ行Ｎ列の画素配列における行方向であり、画像の水平方向、又は、画像の幅方向と同義である。画像の縦方向とは、Ｍ行Ｎ列の画素配列における列方向であり、画像の垂直方向、又は、画像の高さ方向と同義である。
【００５５】
一般にＭ×Ｎ画素の画像の上を、ｍ×ｎ画素の窓を１画素ずつずらして画像全面を走査した場合の窓位置の総数は、（画像幅−窓幅＋１）×（画像高−窓高＋１）で表される。画像幅は画像のｘ方向の長さである。画像高は画像のｙ方向の長さである。窓幅は窓のｘ方向の長さである。窓高は窓のｙ方向の長さである。画像幅、画像高、窓幅及び窓高はいずれも、画素を単位として表すことができ、画素の数で表される。すなわち、画像幅はＮであり、画像高はＭである。窓幅はｎであり、窓高はｍである。
【００５６】
３２×３２画素の画像３０上を、５×５画素の窓３２を１画素ずつ窓位置をずらして画像全面を走査すると、２８×２８箇所の窓位置が考えられる。つまり、一つの画像３０から２８×２８＝７８４個のハッシュ値が生成される。
【００５７】
ただし、一つの画像３０から生成するハッシュ値の個数を減らすために、窓３２の位置を複数画素ずつずらすという工夫をしてもよい。すなわち、ＳｘとＳｙが自然数を表し、窓３２をｘ方向に移動させる際の窓３２の移動量の単位をＳｘ画素とし、窓３２をｙ方向に移動させる際の窓３２の移動量の単位をＳｙ画素とする場合に、Ｓｘは１≦Ｓｘ＜ｎを満たし、かつ、Ｓｙは１≦Ｓｙ＜ｍを満たすことを条件に、ＳｘとＳｙを定めることができる。このような窓３２の移動量の制約条件は、異なる位置の窓同士で窓３２の一部が重なり合う移動量によって、窓３２の位置を順次に移動させて走査を行うことを意味している。
【００５８】
図６は一つの画像３０から７８４個のハッシュ値が生成されることを模式的に示した説明図である。３２×３２画素の画像３０上を、５×５画素の窓３２を１画素ずつ位置をずらして画像全面を走査し、各窓位置でハッシュ値を生成することにより、一つの画像３０から２８×２８＝７８４個のハッシュ値が生成される。
【００５９】
図７は、ハッシュ表に画像ＩＤを登録する処理の説明図である。図７における左側がキーとなるハッシュ値、右側がバリューの画像ＩＤを示している。ここでは、画像ＩＤ＝１の画像から生成したハッシュ値と、画像ＩＤ＝１を関連付けて登録する様子が示されている。
【００６０】
窓位置を移動させて各窓位置でハッシュ値が生成される都度、図７に示すように、ハッシュ値に紐付けされる画像ＩＤを登録していく。
【００６１】
図１のステップＳ１４からステップＳ２４で説明したループを繰り返して画像３０に対して窓３２の位置を順次移動させ、画像３０の全面の走査が完了すると、図１のステップＳ２２でＹｅｓ判定となり、ステップＳ２６に進む。
【００６２】
ステップＳ２６では、登録対象の全ての画像について、ハッシュ表への登録処理が完了したか否かの判定を行う。未処理の画像が存在する場合には、ステップＳ２６でＮｏ判定となり、ステップＳ１２に戻り、次の画像のハッシュ登録処理を行う。
【００６３】
図８は登録対象の画像群の例を示している。ここでは、画像ＩＤ＝１から１６の画像例を示しているが、登録対象の画像の枚数については、特に制限はない。
【００６４】
図９は画像ＩＤ＝１から順番に、各画像について図１のフローチャートによるハッシュ登録処理が行われることを模式的に示した説明図である。
【００６５】
図６及び図７で説明した画像ＩＤ＝１の画像の登録処理と同様の処理が、画像ＩＤ＝２、画像ＩＤ＝３・・・について実施される。最終的には、登録対象である全ての画像の画像ＩＤがハッシュ表に登録される。登録対象の全画像分について、ハッシュ表への登録処理が完了すると、図１のステップＳ２６でＹｅｓ判定となり、ハッシュ登録処理を終了する。
【００６６】
図１におけるステップＳ１４が「窓位置決定工程」の一形態に相当し、ステップＳ１８が「ハッシュ値生成工程」の一形態に相当する。ステップＳ２４が「窓位置移動工程」の一形態に相当する。図１におけるステップＳ１４からステップＳ２４の一連の処理を、ハッシュ登録処理におけるハッシュの生成アルゴリズムとして把握することができる。
【００６７】
図１０はハッシュ登録処理によって得られるハッシュ表の概念図である。図１０において「＊」は、画像ＩＤを示す番号の記載を省略表記したものであり、実際のハッシュ表では該当する画像ＩＤが記録される。
【００６８】
窓３２のサイズが小さい方が、ハッシュ表のメモリ使用量が少ない。メモリ使用量を抑えるためには窓３２のサイズをｍ×ｎ≦１６とすることが好ましい。
【００６９】
その一方で、窓３２のサイズが大きいほど、ハッシュ値の衝突が少なくなる。「衝突」とは、同じハッシュ値に対して、複数の画像ＩＤが対応付けられることをいう。衝突が少ないとは、同じハッシュ値に対応する画像ＩＤの数が少ないことを意味する。
【００７０】
また、窓３２のサイズが大きくなるほど、一つの画像から生成されるハッシュ値の個数が少なくなる。
【００７１】
本実施形態によれば、窓３２内の画素の並びをそのまま、ハッシュ値に変換できるため、計算コストが少ないという利点がある。
【００７２】
［画像探索処理について］
次に画像探索処理を説明する。ハッシュ表が得られていることを前提に、画像探索が行われる。
【００７３】
図１１は画像探索処理のフローチャートである。まず、探索対象とする画像を取得する（ステップＳ３２）。ステップＳ３２の画像取得処理にて取得される画像を「探索対象画像」と呼ぶ。探索対象画像を「画像Ｘ」と表す。
【００７４】
ステップＳ３４からステップＳ３８の各工程は、図１のステップＳ１４からステップＳ１８の各工程と同様である。取得した画像における窓の位置を決定し（ステップＳ３４）、決定した窓位置の窓に含まれる画素値を取得する（ステップＳ３６）。窓のサイズは、ハッシュ登録処理（図１参照）で用いた窓のサイズと同等のものとする。そして、ステップＳ３６で取得された画素値からハッシュ値を生成する（ステップＳ３８）。ステップＳ３８のハッシュ値の生成方法については、図１のステップＳ１８で用いるハッシュ値の生成方法と同等の処理アルゴリズムが適用される。
【００７５】
図１１のステップＳ３８で生成されたハッシュ値をメモリに記録し（ステップＳ４０）、ステップＳ４２に進む。ステップＳ４２では、画像Ｘの全面の走査を完了したか否かの判定を行う（ステップＳ４２）。画像Ｘ内に、窓３２による走査が行われていない未走査の領域が存在する場合には、ステップＳ４２でＮｏ判定となる。ステップＳ４２でＮｏ判定となった場合は、窓３２の位置を移動し（ステップＳ４４）、ステップＳ３４に戻る。
【００７６】
窓３２の位置を変えて、ステップＳ３４からステップＳ４４の処理を繰り返すことにより、各窓位置で切り取られた部分画像から、それぞれハッシュ値が生成され、ハッシュ値が記録される。
【００７７】
図１１のステップＳ３４からステップＳ４４で説明したループを繰り返して画像Ｘに対して窓３２の位置を順次移動させ、画像Ｘの全面の走査が完了すると、図１１のステップＳ４２でＹｅｓ判定となり、ステップＳ４６に進む。
【００７８】
ステップＳ４６では、ハッシュ表とハッシュ値の比較が行われる。
【００７９】
図１２は画像Ｘから求めた複数のハッシュ値とハッシュ表とを比較する処理の概念図である。画像Ｘから複数個のハッシュ値が得られる。画像Ｘから得られる複数のハッシュ値のそれぞれについて、ハッシュ表のハッシュ値を参照し、ハッシュ表における同じハッシュ値に投票する。「投票」とは、ハッシュ表の中の該当するハッシュ値に、画像Ｘから生成したハッシュ値と同じハッシュ値であることを示す情報を付する処理である。
【００８０】
図１２において画像Ｘを表す「Ｘ」のセルが付加されたハッシュ値が、画像Ｘから生成されたハッシュ値であることを示している。つまり、「Ｘ」のセルが付されたハッシュ値が「投票されたハッシュ値」である。
【００８１】
ハッシュ表の中で投票されたハッシュ値の各ハッシュ値に対応する画像ＩＤ群をすべて集め、出現数が最も多い画像ＩＤの画像を探索対象画像に似た画像として扱う。
【００８２】
すなわち、ハッシュ表には、画像Ｘのハッシュ値と一致するハッシュ値が存在する。その一致するハッシュ値の出現数が最も多い画像ＩＤの画像を、画像Ｘに最も似た画像であると判断する。画像Ｘから生成されるハッシュ値の出現数が最も多い画像ＩＤを探索解とする場合に限らず、ロバスト性を高めるために、出現数が多い画像ＩＤのうち上位の複数の画像ＩＤを提示するという形態もあり得る。
【００８３】
すなわち、出現数が最も多い、第１位だけを探索解とすることもできるが、上位のｋ位の結果を返し、探索範囲をｋ個に絞って、絞られたｋ個に対してさらに精密にチェックするという使い方もできる。ｋは２以上の整数を表す。
【００８４】
図１３は本実施形態によるハッシュを用いた探索結果の例である。図１３は探索画像のハッシュ値と同じハッシュ値を持つ画像ＩＤを抽出して、出現数で画像ＩＤをソートしたものである。出現数の多い順に上位１０位まで示したものとなっている。
【００８５】
こうして、得られた探索結果が出力される（図１１のステップＳ４８）。探索結果の出力方法として、例えば、ディスプレイに結果を表示させる態様がある。また、探索結果の情報を他の信号処理部に提供する態様がある。
【００８６】
図１１におけるステップＳ３４が「窓位置決定工程」の一形態に相当し、ステップＳ４８が「ハッシュ値生成工程」の一形態に相当する。ステップＳ４４が「窓位置移動工程」の一形態に相当する。図１１におけるステップＳ３４からステップＳ４４の一連の処理を、画像探索処理におけるハッシュの生成アルゴリズムとして把握することができる。
【００８７】
本実施形態によれば、窓３２の位置を少しずつずらしながら、画像全面を走査して複数のハッシュ値を生成するため、登録画像と探索対象画像の位置が多少ずれていても、画像探索が可能である。
【００８８】
本実施形態では、１枚の画像から生成される複数個のハッシュ値が、登録画像のハッシュ値とすべて一致していなくても、合致するハッシュ値の個数に注目して、近い画像を探索するため、ノイズに対する耐性がある、つまり、ノイズに対してロバスト性がある。
【００８９】
＜ハッシュ値生成方法に関する具体的態様のバリエーション＞
ハッシュ値を生成する具体的な手法の例を図３で説明したが、ここでは他の手法を含めて整理する。
【００９０】
（１）窓内の画素をすべて使う場合
［例１−Ａ］ｍ×ｎ画素の窓に含まれるすべての画素の各画素値を、順に２値化して、画素の配列順に並べてハッシュ値を求める。この例１−Ａに示した方法は、図３で説明した方法である。図１４（Ａ）に示すように、ｍ×ｎ桁の二進数で表されるハッシュ値が得られる。この場合、ハッシュ値は２（ｎ×ｍ）ビットのデータで表される。
【００９１】
［例１−Ｂ］ｍ×ｎ画素の窓に含まれるすべての画素の各画素値を、順にＮ値化して、画素の配列順に並べてハッシュ値を求める。ここでのＮは３以上の整数を表す。Ｎ値化とは、最大階調を１００％とする場合に、（１００／Ｎ）％刻みで画素値を正規化することである。一例として、８ビット（０〜２５５）階調の画素値について、４値化する場合は、０以上６４未満の値を０に、６４以上１２８未満の値を１に、１２８以上１９２未満の値を２に、１２９以上の値を３にそれぞれ正規化する。
【００９２】
図１４（Ｂ）に示した例は、窓のサイズを２×２画素とした例である。各画素の位置を行番号ｉと列番号ｊを用いて（ｉ，ｊ）で表し、各画素の画素値をＢ（ｉ，ｊ）で表すことにする。ここでは、ｉは１又は２であり、ｊは１又は２である。図１４（Ｂ）においてＢ（１，１）＝２５５、Ｂ（１，２）＝０、Ｂ（２，１）＝１８０、及びＢ（２，２）＝５０であるとする。この場合、各画素値を４値に正規化すると、（２５５，０，１８０，５０）の各値は（３，０，２，１）に変換される。
【００９３】
こうしてＮ値（ここではＮ＝４）に正規化した画素値を並べて、Ｎ進法として扱い、Ｎ進法の値を１０進法の表記にすることができる。
【００９４】
なお、Ｎを２以上の整数とし、ｉが１≦ｉ≦ｎを満たす整数（ｉ＝1,2,…ｎ）であり、ｊが１≦j≦ｍを満たす整数（ｊ＝1,2…ｍ）であるとして取り扱うことにより、例１−Ａの手法についても、例１−Ｂと同様に、Ｎ値化という取り扱いで把握することができる。
【００９５】
（２）窓内の特定の画素を使う場合
［例２］ｍ×ｎ画素の窓に含まれる画素の一部の画素値を、順に２値化して、これらを並べてハッシュ値を求める。２値化のルールについては、図３で説明した方法を採用することができる。図１５は１６×１６画素の窓を用意して、ｘ方向及びｙ方向のそれぞれの方向について４画素ごとに画素値を取得する例を示している。画素値を取得する画素が「特定の画素」に該当する。
【００９６】
窓内から画素値を取得する「特定の画素」の定め方については、図１５の例に限らない。ｔｘを２以上（ｎ−１）以下の整数とし、ｔｙを２以上（ｍ−１）以下の整数とする場合、ｘ方向についてｔｘ画素ごとに、かつ、ｙ方向についてｔｙ画素ごとに、画素値を取得する構成とすることができる。
【００９７】
すなわち、複数個の特定の画素同士は、互いに規定の画素数以上離れて離散的に配置されている構成とすることができる。ｔｘとｔｙは「規定の画素数」に相当する。
【００９８】
例２の方法は、例１−Ａ及び例１−Ｂで説明した方法と異なり、窓内の近傍の画素に依存したハッシュ値ではなく、離れた画素同士の関係が反映されることになる。
【００９９】
例２の方法に関して、画素値を２値化した値を利用する構成に代えて、例１−Ｂで説明した例と同様に、画素値をＮ値化したものを用いてハッシュ値を生成することができる。
【０１００】
（３）画像を縮小して縮小画像に対して、上記の（１）又は（２）の手法を適用する。
【０１０１】
図１６は画像を縮小する処理の説明図である。ここでは説明を簡単にするために８×８画素の画像から４×４画素の画像に縮小する例が示されている。
【０１０２】
８×８画素の元画像４０を２×２画素のブロックで格子状に分割し、ブロック内の画素値の平均値又は代表値を求めて、ブロック位置に対応する画素の画素値とする。これにより、各ブロックを一つ画素とする縮小画像４４が得られる。代表値の定め方には、各種の方法があり得る。ブロック内における画素値の中央値を代表値としてもよいし、ブロック内における特定の画素位置の画素値を代表値としてもよい。画像を縮小する縮小処理のアルゴリズムについては、公知の方法を採用することができる。
【０１０３】
この手法を用いることで、元画像４０のサイズが大きい場合でも、使用するメモリの容量を抑え、発明の実施形態に係るハッシュ値生成方法を適用することができる。
【０１０４】
縮小画像を利用することにより、大量の写真画像の中から、探索対象の似た写真画像を効率よく見つけ出すということも可能である。
【０１０５】
画像を縮小する処理は、図１のステップＳ１２で説明した画像取得工程の前に実施してもよいし、ステップＳ１２による画像取得工程の後であって、ステップＳ１４の前に実施してもよい。
【０１０６】
（４）窓の形状について
窓の形状は、四角形に限らず、円や多角形など、各種の形状の窓を用いることができる。
【０１０７】
＜ハッシュ値生成の更なる効率化について＞
ハッシュ値の生成をより一層効率化する方法の例について説明する。
【０１０８】
［１］ハッシュ値を生成しない画素の集まりについて
図１７は画像の中央部分に画像要素である文字の絵柄が集中して配置され、文字の周囲は広い範囲で同じ色の均一な背景となっている。ここでは背景の色として白色を例示している。例えば、図１７に示すように、画像内の広範囲で同じ色又は似た色が塗られているような画像における画素の集まりからハッシュ値を得ることは、効率的とは言えない場合がある。そこで、窓に含まれる画素値の分布によってハッシュ値を生成するか否かの判断を行う態様が好ましい。
【０１０９】
例えば、窓内のすべての画素の画素値が同じ値である場合には、ハッシュ値を生成しないようにする。図１８に示すように、背景が白色の均一な画像領域における窓３２Ａは、ハッシュ値を非生成とする。一方、文字その他の絵柄を含んだ画像領域における窓３２Ｂはハッシュ値を生成する。こうすることで、背景が白の部分のハッシュ値が無駄に生成されることを回避することができる。
【０１１０】
窓に含まれる画素値の分布によってハッシュ値の生成の要否を判断する際の判断基準として、ハッシュ値の生成を不実施とする条件は、窓内から得られる各画素の画素値の差が閾値以下であることとして定めることができる。画素値の差が閾値以下であるとは、画素値の差が許容範囲として規定された閾値以下であることに相当する。
【０１１１】
窓内における画素値の差が閾値以下となる「一様な領域」を抽出するための条件である。「一様な領域」とは、領域内の色が一様である領域を意味している。「一様」という用語は、厳密に一定である場合に限らず、許容できるばらつきや誤差を含む意味で用いる。
【０１１２】
窓内における色の差についての許容範囲として定める閾値は、例えば、ＣＭＹＫ値のばらつきの許容範囲としてΔＣＭＹＫ値の値を定めておくことができる。また、第１の抽出用閾値は、Ｃ、Ｍ、Ｙ、Ｋの色毎に、ばらつきの許容範囲としてΔＣ値、ΔＭ値、ΔＹ値、ΔＫ値の各値を定めておくことも可能である。
【０１１３】
例えば、Ｃ，Ｍ，Ｙ，Ｋの各色８ビット（０〜２５５）で表されるＣＭＹＫ画像について、Ｃ，Ｍ，Ｙ，Ｋの各色成分において、各画素値の差が「５」以下であれば、「同じ値」の範囲として取り扱う。５／２５５が約０．０２であるから、目安の一例として、画素値の差が２％以内である場合に「同じ値」の範囲として取り扱うように定めることができる。
【０１１４】
図１９はハッシュ値の生成の要否判断を含んだハッシュ登録処理のフローチャートである。図１９において図１で説明したフローチャートと同一の工程には同一のステップ番号を付し、その説明は省略する。図１９のフローチャートでは、図１で説明したフローチャートのステップＳ１６とステップＳ１８の間に、ハッシュ値の生成の要否を判断する判断工程（ステップＳ１７）が追加されている。
【０１１５】
ステップＳ１７では、ステップＳ１６で得た画素値の分布を基に、ハッシュ値の生成の要否を判断する。ハッシュ値を生成しないと判断する判断基準の例として、例えば、窓内の画素値がすべて同じ値であること、又は、窓内の画素値のばらつきが予め定めた許容範囲内であること、とすることができる。
【０１１６】
ステップＳ１７にて、ハッシュ値を生成する判断した場合はステップＳ１８に進み、画素値からハッシュ値を生成する。その一方、ステップＳ１７にて、ハッシュ値を生成しないと判断した場合は、ハッシュ値を生成する演算処理を省略して、ステップＳ２４に進む。
【０１１７】
これにより、無駄なハッシュ値の生成が回避され、演算時間を短縮することができ、効率のよいハッシュ値の生成が可能である。図１９のステップＳ１７が「判断工程」の一形態に相当する。図１９のステップＳ１４からステップＳ２４の一連の工程がハッシュ登録処理におけるハッシュの生成アルゴリズムとして把握することができる。
【０１１８】
図１９はハッシュ登録処理のフローチャートであるが、図１１で説明した画像探索処理のフローチャートについても、図１９と同様にハッシュ値の生成要否の判断を加える構成とすることができる。
【０１１９】
［２］カラー画像からハッシュ値を生成する場合について
例えば、ＲＧＢ画素の並びからハッシュ値を生成する場合、Ｒ値、Ｇ値及びＢ値のそれぞれからハッシュ値を生成してもよいが、グレイ画像と比較するとデータ量が３倍になってしまう。そこで、データ量を削減する観点から、Ｒ，Ｇ，Ｂそれぞれの画素に対して、予め定めた計算式にしたがって計算を行った結果としての信号値に対してハッシュ値を生成させる。
【０１２０】
計算式の一例として、例えば、gray＝0.3×Ｒ＋0.59×Ｇ＋0.11×Ｂといった計算式がＮＴＳＣ規格に存在する。ＮＴＳＣはNational Television System Committeeの略語表記である。このような簡単な計算式を利用するなどして、ＲＧＢの３種類の値で表されるカラー画像を１種類の値に変換することで、効率よくハッシュ値を生成することができる。
【０１２１】
ＮＴＳＣ規格による上記の計算式に限らず、Ｒ成分の値とＧ成分の値とＢ成分の値とを、予め定めた比率で混合加算して得られるグレイの値を代表値として用いることができる。
【０１２２】
カラー画像からデータ量を削減してハッシュ値を生成する方法は、上記の例の他に、ＣＭＹＫ画像のＫ値のみを利用する態様、Ｌａｂ画像のＬ値のみを利用する態様、又は、ＲＧＢ画像のＧ値のみを利用する態様など、ハッシュ値の生成に利用する信号の成分を、カラー画像における一部の信号の成分に制限することもできる。Ｌａｂ画像とは、各画素の信号値がＬ＊ａ＊ｂ＊表色系の色空間の座標値で記述される画像データを意味する。Ｌａｂ画像におけるＬ＊の値をＬ値と表記している。ＲＧＢ画像においてＧ値のみを利用するという態様は、人間の視覚が緑色（green）に対して感度が強いことを考慮したものであ
る。
【０１２３】
［３］画像にディザリングをかけることで画像のデータを２値化する例について
図３の説明では、画素値の２値化に際して、［０，２５５］の値を、０から１２７は「０」に、１２８から２５５は「１」に変換したが、２値化の方法はこの例に限らない。２値化の処理方法については、誤差拡散ディザリングという手法を利用することができる。「誤差拡散ディザリング」は、ハーフトーン処理の手法の一つである誤差拡散法を利用して画像データを２値化する方法である。この方法は、画素の値を２値化した際に発生する量子化誤差を周囲の未量子化画素に配分する。つまり、誤差拡散ディザリングは、画素の近傍の関係も考慮して０又は１に変換する手法である。
【０１２４】
このような手法を使用して、画像の２値化を行い、得られた２値画像を窓で走査することにより、各窓位置からハッシュ値を生成する構成とすることができる。
【０１２５】
画像の２値化処理（すなわち、正規化の処理）は、ステップＳ１２の前に実施してもよいし、ステップＳ１２の後であってステップＳ１４の前に実施してもよい。
【０１２６】
［４］画像に平滑化フィルタをかける例について
与えられた画像に対して、画像の鮮鋭度を低下させる画像処理フィルタをかけることで、ノイズ耐性を向上させることができる。「画像の鮮鋭度を低下させる」とは、画像を平滑化することを意味し、いわゆる、画像をぼかすような処理を行うことを意味する。かかる機能を有する画像処理フィルタを平滑化フィルタという。平滑化フィルタとして、例えば、ガウシアン関数のフィルタや、視覚特性関数のフィルタなどを用いることができる。
【０１２７】
このような画像処理フィルタをかけることにより、画素値の変化が少なくなる。したがって、上記の［１］で説明したハッシュ値を生成しない工夫と組み合わせることで、ハッシュ値生成時間の短縮を図ることができる。
【０１２８】
画像ぼかし、すなわち、画像の平滑化を行うフィルタのサイズによって、ハッシュ値を計算する窓の最適なサイズを選択するように、フィルタのサイズと窓のサイズを連動させることもできる。
【０１２９】
なお、上述の［１］から［４］に例示した更なる効率化の工夫と、「ハッシュ値生成方法に関する具体的態様のバリエーション」として説明した（１）から（４）の内容は、適宜組み合わせることができる。
【０１３０】
＜ハッシュ値生成装置の構成例＞
次に、ハッシュ値生成装置の構成例について説明する。
【０１３１】
図２０は第一実施形態に係るハッシュ値生成装置１００の構成を示すブロック図である。図２０に示すハッシュ値生成装置１００は、ハッシュ登録処理に用いられる装置である。ハッシュ値生成装置１００は、画像取得部１０２と、窓位置決定部１０４と、窓位置移動処理部１０６と、ハッシュ値生成部１０８を備える。また、ハッシュ値生成装置１００は、ハッシュ表記憶部１１０を備える構成とすることができる。ハッシュ値生成装置１００は、１台のコンピュータ、又は複数台のコンピュータの組み合わせによって実現することができ、各部（符号１０２〜１１０）の機能はコンピュータのハードウエアとソフトウエアの組み合わせによって実現することができる。
【０１３２】
画像取得部１０２は、画像データを取り込むインターフェース部である。画像取得部１０２は、外部又は装置内の他の信号処理部から画像を取り込むデータ入力端子で構成することができる。画像取得部１０２として、有線又は無線の通信インターフェース部を採用してもよいし、メモリカードなどの可搬型の外部記憶媒体の読み書きを行うメディアインターフェース部を採用してもよく、若しくは、これら態様の適宜の組み合わせであってもよい。
【０１３３】
図２０の窓位置決定部１０４は、画像における窓３２の位置を決定する。窓位置移動処理部１０６は、画像内で窓３２を重複させて少しずつ窓位置を移動させる処理を行う。窓位置移動処理部１０６は窓位置決定部１０４と連携して、窓３２の位置を制御し、画像全面の走査を行う。
【０１３４】
ハッシュ値生成部１０８は、窓３２の位置ごとに、窓内の画素の画素値からハッシュ値の生成を行う。また、ハッシュ値生成部１０８は、生成したハッシュ値と画像ＩＤをハッシュ表に記録する処理を行う。ハッシュ表記憶部１１０は、ハッシュ値生成部１０８で生成されたハッシュ値と、対応する画像ＩＤとの関係が記述したハッシュ表を記憶する記憶部である。
【０１３５】
画像取得部１０２は、図１で説明したステップＳ１２の処理を行う。窓位置決定部１４４は、図１で説明したステップＳ１４の処理を行う。ハッシュ値生成部１０８は、図１で説明したステップＳ１６及びステップＳ１８の処理を行う。また、ハッシュ値生成部１０８とハッシュ表記憶部１１０は、図１で説明したステップＳ２０の処理を行う。窓位置移動処理部１０６は、図１で説明したステップＳ２２の判断とステップＳ２４の処理を行う。
【０１３６】
図２１は第二実施形態に係るハッシュ値生成装置１５０の構成を示すブロック図である。図２１において図２０で説明した構成と同一又は類似する要素には同一の符号を付しその説明は省略する。図２１に示したハッシュ値生成装置１５０は、図１８で説明したように、窓内の画素値の分布を基にハッシュ値の生成の要否を判断する機能を備える。ハッシュ値生成装置１５０は、図２０で説明した構成に加えて、画素値分布検出部１５２と、ハッシュ値生成要否判断部１５４とを備える。
【０１３７】
画素値分布検出部１５２は、窓位置決定部１０４により決定された窓位置の窓に含まれている画素値の分布を検出する。ハッシュ値生成要否判断部１５４は、画素値分布検出部１５２による検出結果を、予め定められている判断基準に照らして、ハッシュ値を生成するか否かを判断する。ハッシュ値生成要否判断部１５４がハッシュ値を生成すると判断した場合には、その判断結果がハッシュ値生成部１０８に通知され、ハッシュ値生成部１０８によるハッシュ値の生成が行われる。
【０１３８】
その一方、ハッシュ値生成要否判断部１５４がハッシュ値を生成しないと判断した場合には、その判断結果が窓位置移動処理部１０６に通知され、ハッシュ値生成部１０８によるハッシュ値の生成を実施することなく、次の窓位置への移動が行われる。
【０１３９】
画素値分布検出部１５２は、図１９で説明したステップＳ１６の処理を行う。ハッシュ値生成要否判断部１５４は、図１９で説明したステップＳ１７の判断を行う。
【０１４０】
図２２は、第三実施形態に係るハッシュ値生成装置２００の構成を示すブロック図である。図２２に示すハッシュ値生成装置２００は、画像探索処理に用いられる装置である。ハッシュ値生成装置２００は、画像取得部２０２と、窓位置決定部２０４と、窓位置移動処理部２０６と、ハッシュ値生成部２０８と、ハッシュ値記憶部２１０と、画像探索処理部２１２と、探索結果出力部２１４とを備える。また、ハッシュ値生成装置２００は、ハッシュ表記憶部１１０を備える構成とすることができる。
【０１４１】
ハッシュ値生成装置２００は、１台のコンピュータ、又は複数台のコンピュータの組み合わせによって実現することができ、各部（符号２０２〜２１４、及び１１０）の機能はコンピュータのハードウエアとソフトウエアの組み合わせによって実現することができる。
【０１４２】
画像取得部２０２は、探索対象の画像を取り込むインターフェース部である。画像取得部２０２は、外部又は装置内の他の信号処理部から画像を取り込むデータ入力端子で構成することができる。画像取得部２０２として、有線又は無線の通信インターフェース部を採用してもよいし、メモリカードなどの可搬型の外部記憶媒体の読み書きを行うメディアインターフェース部を採用してもよく、若しくは、これら態様の適宜の組み合わせであってもよい。
【０１４３】
窓位置決定部２０４は、探索対象画像における窓３２の位置を決定する。窓位置移動処理部２０６は、画像内で窓３２を重複させて少しずつ窓位置を移動させる処理を行う。窓位置移動処理部２０６は窓位置決定部２０４と連携して、窓３２の位置を制御し、画像全面の走査を行う。
【０１４４】
ハッシュ値生成部２０８は、窓３２の位置ごとに、窓内の画素の画素値からハッシュ値の生成を行う。また、ハッシュ値生成部２０８は、生成したハッシュ値をハッシュ値記憶部２１０に記憶する。ハッシュ値記憶部２１０は、ハッシュ値生成部２０８で生成されたハッシュ値を記憶する記憶部である。
【０１４５】
画像探索処理部２１２は、ハッシュ値記憶部２１０に記憶されたハッシュ値の情報と、ハッシュ表記憶部１１０に記憶されたハッシュ表の情報とを用いて画像の探索処理を行う。
【０１４６】
ハッシュ表記憶部１１０は、図２０又は図２１で説明したハッシュ表記憶部１１０と同等のものであってもよいし、図２０又は図２１で説明したハッシュ表記憶部１１０に記憶されているハッシュ表と同じデータが格納された別の記憶部であってもよい。
【０１４７】
探索結果出力部２１４は、画像探索処理部２１２による探索結果を出力する処理を行う。探索結果出力部２１４は、探索結果を表示する表示装置を含む構成とすることができる。また、探索結果出力部２１４は、探索結果の情報を装置の外部又は装置内の他の信号処理部に提供する信号出力端子とすることができる。
【０１４８】
画像取得部２０２は、図１１で説明したステップＳ３２の処理を行う。窓位置決定部２４４は図１１で説明したステップＳ３４の処理を行う。ハッシュ値生成部２０８は、図１１で説明したステップＳ３６及びステップＳ３８の処理を行う。また、ハッシュ値生成部２０８とハッシュ値記憶部２１０は、図１１で説明したステップＳ４０の処理を行う。窓位置移動処理部２０６は、図１１で説明したステップＳ４２の判断とステップＳ４４の処理を行う。画像探索処理部２１２は、図１１で説明したステップＳ４６の処理を行う。探索結果出力部２１４は、図１１で説明したステップＳ４８の処理を行う。
【０１４９】
なお、図２２に示したハッシュ値生成装置２００において、さらに、図２１で説明した例と同様に、画素値分布検出部１５２とハッシュ値生成要否判断部１５４とを付加する構成も可能である。
【０１５０】
図２０又は図２１で説明したハッシュ登録処理の機能と、図２２で説明した画像探索処理の機能をそれぞれ、別々の装置構成とすることも可能であるし、ハッシュ登録処理の機能と画像探索処理の機能とを一つの装置に両方搭載することも可能である。
【０１５１】
＜システム構成例＞
図２３は画像探索サービスを提供するシステムの構成例を示すブロック図である。図２３に示した画像探索システム３００は、画像登録サーバ３０２と画像探索処理サーバ３０４とが電気通信回線３０６に接続されている。画像登録サーバ３０２は画像データベース３１２と、ハッシュ値生成装置３１４とハッシュ表記憶部３１６とを備える。画像データベース３１２には、登録された画像のデータが蓄積される。ハッシュ値生成装置３１４は、図２０で説明したハッシュ値生成装置１００又は図２１で説明したハッシュ値生成装置１５０と同様のハッシュ値生成機能を有する。ハッシュ表記憶部３１６には、ハッシュ値生成装置３１４で生成されたハッシュ表が記憶される。
【０１５２】
画像探索処理サーバ３０４はハッシュ値生成装置３２４を備えている。ハッシュ値生成装置３２４は、図２２で説明したハッシュ値生成装置２００と同様のハッシュ値生成機能を有する。
【０１５３】
端末装置３３０は、電気通信回線３０６を介して画像探索処理サーバ３０４に画像の探索要求を送信し、画像探索サーバ３０４から探索結果の回答を受け取る。端末装置３３０は通信部３３２と、入力部３３４と、制御部３３６と、表示部３３８とを備える。通信部３３２は電気通信回線３０６に接続して情報の受け渡しを行うための通信インターフェース部である。入力部３３４は、探索対象画像３４０のデータを取り込む入力インターフェース部である。制御部３３６は端末装置３３０の動作を制御する。表示部３３８は、画像探索サーバ３０４から受信した探索結果の情報を表示する。
【０１５４】
端末装置３３０としては、例えば、パーソナルコンピュータ、タブレット端末、携帯電話、スマートフォン、又は、通信機能付きのデジタルカメラなど、各種の形態があり得る。
【０１５５】
端末装置３３０から、探索対象画像３４０のデータと、探索要求のリクエストが電気通信回線３０６を通じて画像探索処理サーバ３０４に送られる。画像探索処理サーバ３０４は、端末装置３３０から受け取った探索対象画像３４０について、ハッシュ値生成装置３２４と協働して、図１９で説明したフローチャートにしたがってハッシュ値の生成を行い、ハッシュ表記憶部３１６のハッシュ表を参照して画像探索を行う。そして、探索結果を端末装置３３０に返す。探索結果は端末装置３３０の表示部３３８に表示される。
【０１５６】
図２４は画像探索サービスを提供するシステムの他の構成例を示すブロック図である。図２４に示した画像探索システム３５０において、図２３で説明した構成と同一又は類似する要素には同一の符号を付し、その説明は省略する。
【０１５７】
図２４に示した画像探索システム３５０は、ハッシュ登録処理と画像探索処理の両方の処理についてハッシュ値の生成処理を行うハッシュ値生成装置３５４を備えている。
【０１５８】
ハッシュ値生成装置３５４は、画像登録サーバ３０２と連携して、登録画像からハッシュ値を生成し、ハッシュ表をハッシュ表記憶部３１６に登録する。また、ハッシュ値生成装置３５４は、画像探索処理サーバ３０４と連携し、端末装置３３０から受け取った探索対象画像３４０からハッシュ値を生成し、ハッシュ表を参照して投票を行う。
【０１５９】
システムのバリエーションは様々な構成が可能であり、図２３及び図２４で説明した例に限らない。
【０１６０】
図２３及び図２４で説明した画像探索システムの機能は、クラウドコンピューティングシステムによって実現することも可能である。
【０１６１】
＜窓のサイズについて＞
窓のサイズを例えば８×４画素のように大きくした場合、ハッシュ表が長くなるため、ハッシュの衝突は極めて少なくなる。ただし、その分、必要なハッシュキーのバリエーションも多くなることとなり、ハッシュキーを定義する分、大量のメモリ容量が必要となる。
【０１６２】
窓のサイズを大きくしすぎると、例えばノイズを含む画像を対象にする場合に、窓に含まれるノイズを含んだ画像が、元の画像の画素値とすべて一致する可能性が下がるため、誤検出が発生しやすくなると考えられる。
【０１６３】
実験により探索精度とメモリ使用量を考慮すると４×４画素の窓のサイズで十分ではあるが、もし、大容量のメモリを使うことが可能であるならば、５×５画素の窓のサイズが好適であると考えられる。
【０１６４】
＜画像の種類について＞
上述した実施形態では、ランダム画像を例に説明したが、発明が適用される画像の種類は、特に限定されない。特許文献１の用途で想定されるようなランダム性を有する画像に限らず、文書画像、若しくは、写真画像、又はこれらの組み合わせなど、様々な画像について、本発明を適用することができる。
【０１６５】
＜他の応用例について＞
近年、ＳＩＦＴ(Scale-Invariant Feature Transform)やＳＵＲＦ(Speeded Up Robust Features)に代表される特徴点検出の技術が進歩しており、検出された特徴点を使った研究が進んでいる。例えば、パノラマ合成などはその技術の一つと言える。パノラマ合成は、２枚の画像に対し、それぞれの画像から特徴点を見つけた後、各特徴点同士の対応をとることで、画像と画像をどうつなぐかを決めている。なお、特徴点の検出は、特徴点の抽出と同義である。
【０１６６】
図２５は画像の特徴点を利用したパノラマ合成の処理の概念図である。２枚の画像のうちの一つである画像Ａについて特徴点検出の処理が行われ、画像Ａから複数の特徴点ＰＡが検出される。同様に、２枚の画像のうちの他の一つである画像Ｂについて特徴点検出の処理が行われ、画像Ｂから複数の特徴点ＰＢが検出される。そして、画像Ａから検出された特徴点ＰＡと、画像Ｂから検出された特徴点ＰＢの特徴点同士の対応付けが行われる。画像Ａの特徴点ＰＡに対応する画像Ｂの特徴点ＰＢを見つけ出す処理を、特徴点の対応点探索処理という。
【０１６７】
対応する特徴点同士を破線で結んで図示した。画像Ａと画像Ｂの画像間で対応付けられた特徴点同士を重ね合わせて画像Ａと画像Ｂとを繋ぎ合わせることにより、パノラマ合成画像が得られる。
【０１６８】
図２５に示したようなパノラマ合成の処理の場合、特徴点の対応点探索処理において、特徴点の持つ特徴量同士を比較することで、似た特徴点を探す手法が従来採用されてきた。しかし、特徴点の数が多いと、その分、計算時間が増大してしまう。
【０１６９】
そこで、本発明で提案する画像ハッシュの処理を使うことで、画像間の対応付けの処理時間を削減することができる。
【０１７０】
図２６は本発明の他の実施形態による画像間の対応付け処理の説明図である。図２６に示すように、画像Ａに対して、窓３２の位置を順次に移動させる走査を行い、各位置で窓３２内に含まれる画素値からハッシュ値を生成する処理が行われる。画像Ａに対して窓３２の位置を少しずつ変えながら、各窓位置でハッシュ値を生成する方法については、図２で説明した例と同様である。
【０１７１】
画像Ａにおける窓３２の位置を表すインデックスをｋＡとし、位置ｋＡにおける窓３２内の画素値から生成されるハッシュ値をＨＡ（ｋＡ）とする。ｋＡは、例えば、０以上の整数とすることができる。画像Ａに対して窓３２の位置ｋＡごとにハッシュ値ＨＡ（ｋＡ）が算出される。
【０１７２】
同様に、画像Ｂに対して、窓３２の位置を順次に移動させる走査を行い、各位置で窓３２内に含まれる画素値からハッシュ値を生成する処理が行われる。画像Ｂにおける窓３２の位置を表すインデックスをｋＢとし、位置ｋＢにおける窓３２内の画素値から生成されるハッシュ値をＨＢ（ｋＢ）とする。ｋＢは、例えば、０以上の整数とすることができる。画像Ｂに対して窓３２の位置ｋＢごとにハッシュ値ＨＢ（ｋＢ）が算出される。
【０１７３】
こうして、画像Ａと画像Ｂのそれぞれの画像全体に対して、ハッシュ値ＨＡ（ｋＡ）とＨＢ（ｋＢ）を求め、ハッシュ値ＨＡ（ｋＡ）とＨＢ（ｋＢ）を基に、画像Ａと画像Ｂの画像間で対応する窓３２の位置関係を把握する。
【０１７４】
図２６では、画像ＡについてＷＡの符号を付した窓と、画像ＢについてＷＢの符号を付した窓とが対応しており、対応する窓同士を破線で結んで図示した。画像Ａと画像Ｂの画像間で対応付けられた窓ＷＡと窓ＷＢを重ね合わせて画像Ａと画像Ｂとを繋ぎ合わせることにより、パノラマ合成画像が得られる。
【０１７５】
この実施形態によれば、特徴点検出の処理などを実施することなく、ハッシュ値を利用して対応窓のマッチングを行う。これにより、図２５で説明した手法に比べて、マッチングの処理を高速化することができ、処理時間の短縮化が可能である。
【０１７６】
＜コンピュータをハッシュ値生成装置として機能させるプログラムについて＞
上述の各実施形態で説明したハッシュ値の生成機能をコンピュータに実現させるためのプログラムをＣＤ−ＲＯＭ（Compact Disc read-only memory）や磁気ディスクその他のコンピュータ可読媒体（有体物たる非一時的な情報記憶媒体）に記録し、情報記憶媒体を通じてプログラムを提供することが可能である。このような情報記憶媒体にプログラムを記憶させて提供する態様に代えて、インターネットなどの通信ネットワークを利用してプログラム信号をダウンロードサービスとして提供することも可能である。
【０１７７】
また、上述の実施形態で説明したハッシュ値生成機能及び画像探索処理機能の一部又は全部をアプリケーションサーバやクラウドコンピューティングによって実現し、通信ネットワークを通じて処理機能を提供するサービスを行うことも可能である。
【０１７８】
さらに、このプログラムをコンピュータに組み込むことにより、コンピュータにハッシュ値生成装置の各機能を実現させることができ、上述の実施形態で説明したハッシュ値生成機能を含むハッシュ登録機能及び／又は画像探索機能を実現することができる。
【０１７９】
＜実施形態の利点＞
（１）本発明の実施形態によれば、画像から特徴点を抽出する処理が不要である。したがって、ランダム画像のように際立った特徴の少ない画像についてもハッシュ値を生成することができ、画像の種類によらず、ハッシュ値の生成が可能である。
【０１８０】
（２）本実施形態によれば、画像内を窓で走査しながら各窓位置でハッシュ値を求め、一つの画像から複数のハッシュ値を求めるため、ノイズに対して耐性がある。探索対象画像と、登録画像の位置関係が多少ずれていても、探索対象画像に近い登録画像を探し出すことができる。
【０１８１】
（３）本実施形態によれば、窓内の画素値からハッシュ値を生成するため、従来方法に比べて、ハッシュ値計算の演算コストが少ないという利点がある。
【０１８２】
（４）本実施形態によれば、特徴点を抽出することなく、短時間で画像のマッチングを行うことができる。
【０１８３】
以上説明した本発明の実施形態は、本発明の趣旨を逸脱しない範囲で、適宜構成要件を変更、追加、削除することが可能である。本発明は以上説明した実施形態に限定されるものでは無く、本発明の技術的思想内で当該分野の通常の知識を有するものにより、多くの変形が可能である。
【符号の説明】
【０１８４】
３０…画像、３２…窓、１００…ハッシュ値生成装置、１０４…窓位置決定部、１０６…窓位置移動処理部、１０８…ハッシュ値生成部、１１０…ハッシュ表記憶部、１５０…ハッシュ値生成装置、１５２…画素値分布検出部、１５４…ハッシュ値生成要否判断部、２００…ハッシュ値生成装置、２１２…画像探索処理部、２１４…探索結果出力部、３００…画像探索システム、３４０…探索対象画像
【図１】
2016129005.tif 000003
【図４】
2016129005.tif 000004
【図５】
2016129005.tif 000005
【図７】
2016129005.tif 000006
【図１０】
2016129005.tif 000007
【図１１】
2016129005.tif 000008
【図１２】
2016129005.tif 000009
【図１３】
2016129005.tif 000010
【図１７】
2016129005.tif 000011
【図１８】
2016129005.tif 000012
【図１９】
2016129005.tif 000013
【図２０】
2016129005.tif 000014
【図２１】
2016129005.tif 000015
【図２２】
2016129005.tif 000016
【図２３】
2016129005.tif 000017
【図２４】
2016129005.tif 000018
【図２５】
2016129005.tif 000019
【図２６】
2016129005.tif 000020
【図２】
2016129005.tif 000021
【図３】
2016129005.tif 000022
【図６】
2016129005.tif 000023
【図８】
2016129005.tif 000024
【図９】
2016129005.tif 000025
【図１４】
2016129005.tif 000026
【図１５】
2016129005.tif 000027
【図１６】
2016129005.tif 000028