JP5976115B2 - 画像検索方法 - Google Patents

画像検索方法 Download PDF

Info

Publication number
JP5976115B2
JP5976115B2 JP2014532187A JP2014532187A JP5976115B2 JP 5976115 B2 JP5976115 B2 JP 5976115B2 JP 2014532187 A JP2014532187 A JP 2014532187A JP 2014532187 A JP2014532187 A JP 2014532187A JP 5976115 B2 JP5976115 B2 JP 5976115B2
Authority
JP
Japan
Prior art keywords
hash
feature vector
query
image
hash code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2014532187A
Other languages
English (en)
Other versions
JP2015501017A (ja
Inventor
バリー ジェイムス ドレイク,
バリー ジェイムス ドレイク,
アラン バレブ トニソン,
アラン バレブ トニソン,
スコット アレキサンダー ラドキン,
スコット アレキサンダー ラドキン,
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Publication of JP2015501017A publication Critical patent/JP2015501017A/ja
Application granted granted Critical
Publication of JP5976115B2 publication Critical patent/JP5976115B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/50Information retrieval; Database structures therefor; File system structures therefor of still image data
    • G06F16/56Information retrieval; Database structures therefor; File system structures therefor of still image data having vectorial format
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/50Information retrieval; Database structures therefor; File system structures therefor of still image data
    • G06F16/58Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
    • G06F16/583Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually using metadata automatically derived from the content
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/12Edge-based segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/149Segmentation; Edge detection involving deformable models, e.g. active contour models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/2163Partitioning the feature space
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Software Systems (AREA)
  • Library & Information Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Processing Or Creating Images (AREA)

Description

本発明は、高次元類似探索に関し、特にコンテンツベースの画像探索の分野に関する。
特に画像のデータベースが大きい場合及びクエリ画像が要求されたデータベース画像が劣化したものである場合のコンテンツベースの画像探索の問題に対処するために多くの方法が提案されている。
提案された方法の多くは特徴ベクトルを使用する。特徴ベクトルは、画像の一部を示す数値の配列である。新しい特徴ベクトルが受信されると、多くの場合、データベースから同様の特徴ベクトルを検索できることが有用である。同様の特徴ベクトルは、受信された特徴ベクトルと関連付けられた画像の類似画像を示す。
データベースが小さく且つ類似性関数の計算が高速である場合、網羅的探索法が使用される。網羅的探索は、クエリ画像と関連付けられたクエリベクトルとデータベースの各レコードとの類似性を計算する。特にデータベースのサイズが大きくなる様な多くの応用例では、そのような網羅的探索は処理が遅すぎる。コンテンツベースの画像探索に関する問題の1つは、クエリ画像の特徴ベクトルに一致する特徴ベクトルをデータベースにおいてどのように迅速に発見するかである。多くの方法が提案されているが、提案された方法の各々の欠点は、制限があったりあるいは不正確であったりすることである。
ハッシュベースの戦略は、最も高速且つ正確な方法を提供する。ハッシュベースの方法は、データベースの各ベクトルに対するハッシュコードを計算することと、ハッシュテーブルにおいてレコードをエントリと関連付けるためにハッシュコードを使用することとを含む。クエリ時間において、ハッシュコードは、クエリベクトルに対して計算され、ハッシュテーブルにおいて一致するレコードを迅速に発見するために使用される。この戦略を効果的にするために、ハッシュ関数は「局所性鋭敏型」であるべきであり、これは、関数が互いに近接するベクトルに対して同一のハッシュコードを返送することを意味する。局所性鋭敏型ハッシュ関数は、特徴空間を各々が特定のハッシュコードと関連付けられる領域に区分する。
ハッシュベースの方法と共存する1つの問題は、どんなハッシュ関数に対しても近接するが異なるハッシュコードを返送する2つのベクトルが常に存在することである。これは、2つのベクトルが区分境界の両側に配置され且つ偽陰性一致(false-negative matches)の問題を招く場合に生じる。類似ベクトルのそれぞれのハッシュコードが異なるために方法が類似ベクトルを発見できない場合、偽陰性一致が起こる。
この問題に対する1つの既知の方法は、ハッシュ関数毎に無作為に選択されたパラメータを有する多数のハッシュ関数を使用する局所性鋭敏型ハッシュ(LSH)である。データベースの各特徴ベクトルは、全てのハッシュ関数を使用してハッシュされ、対応するハッシュテーブルに記録される。クエリベクトルが与えられる場合、全てのハッシュ関数は、格納されたレコードにアクセスするために使用される。各ハッシュ関数が異なるため、使用されるハッシュ関数の数の増加と共に偽陰性一致の可能性は低下する。しかし、ハッシュ関数の数の増加により、ハッシュを格納するために必要とされるメモリの量及びハッシュテーブルを探索するのにかかる時間も増加する。ハッシュ関数の数を変更することにより、選択されるメモリと、速度と、精度との間の妥協が可能になるが、LSHは、高次元特徴ベクトルと共に使用される場合に高い精度を実現するために多くのハッシュ関数を必要とする。LSHの拡張機能は、各ハッシュコードへの割り当ての数を均衡させるハッシュ関数を選択することにより、精度と速度との間の妥協を更に可能にする。レコードの割り当てを均衡させるハッシュコードの次元毎のハッシュ関数、並びに類似性及びハッシュ関数のエントロピーの保存を共に最適化するハッシュ関数を選択することにより、均衡が実現される。LSH拡張機能の欠点は、ハッシュ関数が訓練フェーズの間に選択され、且つ訓練データの分布に従ってレコードの割り当てを均衡させることである。均衡の有効性は、訓練データと比較して更なるデータの分布の何らかの変動により低下する。このメモリに対する要求は、高次元ベクトルの大きなデータベースに適用される場合にLSHの有用性を制限している。
別の方法は、探索ステップで処理される偽陰性一致の問題を有する単一のハッシュ関数を使用するPointPerturbation法である。クエリベクトルが与えられる場合、ハッシュテーブルにアクセスして候補となるレコードの第1のリストを取得する。無作為の僅かな摂動を元のクエリ点に適用することにより、多数のプローブが生成される。各プローブはハッシュテーブルにアクセスするために使用され、検索されたレコードは候補となるレコードのリストに追加される。元のクエリ点から更なるプローブを生成する処理は、複数回繰り返される。使用されるプローブの数の増加と共に偽陰性一致の可能性が低下するため、LSHを使用するよりメモリに対する要求は低く、プローブの数を変更することにより速度と精度との間の妥協を管理する。PointPerturbation法の欠点は、クエリベクトルに対して必要とされるプローブの数である。単一のクエリベクトルに対して高い精度を実現するためにより多くのプローブが必要とされるため、ベクトルの次元数が増加するにつれ、PointPerturbation法はより低速になる。
別のハッシュ法はハッシュの摂動である。ハッシュの摂動は、クエリ毎に多数のプローブを実行するが、クエリ点を無作為に摂動する必要があるという問題を回避するという点でPointPerturbation法に類似する。代わりに、この方法は、元のクエリ点のハッシュコードを直接摂動する。ハッシュ関数が多くの小さなハッシュコードから構成されるハッシュコードを生成するため、これは可能になる。この場合、より小さなハッシュコードの各々は、厳密に特徴ベクトルの1つの座標の関数である。この方法の先の一実現例はグリッドファイルである。グリッドファイル方法は、各次元を量子化することで可能なベクトルの空間にわたりグリッドを形成し、各グリッドセルをベクトルがセル内にあるレコードと関連付ける。クエリ点が与えられる場合、クエリ点のクエリ半径内のグリッドセルを決定する。次に、点を一致させるためにアクセスされたグリッドセルと関連付けられたレコードを確認する。しかし、この方法は高次元空間に対して時間がかかる。それは、n次元空間が与えられる場合に1つのクエリに対するアクセスされたグリッドセルの数が2次だからである。各次元が個別にハッシュされる時、ハッシュコードは空間の矩形領域と関連付けられ、クエリは、ハッシュセルの結合から構成される矩形領域を範囲に含む。極端に、各次元は単一のビットにハッシュされる。その場合、ベクトルに対するハッシュコードは、各座標からのビットの連結である。従って、n次元ベクトルによりnビットのハッシュコードが得られる。第1のハッシュコードにおいて1ビット以上をフリップすることにより、更なるクエリハッシュコードが生成される。
ハッシュの摂動に関する1つの問題は、各次元が個別にハッシュされることである。ハッシュ関数は空間を矩形領域に区分する。クエリ点が領域の端に近接する場合、偽陰性を回避するために2個のプローブが必要とされる。高次元ベクトル(大きなn)の場合、必要とされるプローブの数は、ハッシュにより行われる高速化を大幅に制限する。これは、クエリ毎のプローブの数を減少することで改善されるが、これにより精度も低下する。
格子理論は、A及びDとして知られている格子を使用して点の摂動及びハッシュの摂動に適用されている。これにより、ボロノイ領域内のクエリ点の場所に基づくクエリに対するプローブを決定する方法が得られた。関連ベクトルを有するレコードがデータベースに追加される場合、ベクトルが配置されるボロノイ領域を決定し、レコードを対応する格子点と関連付ける。例えば1つの方法は、格子点と関連付けられたハッシュコードを使用する。クエリベクトルが受信される場合、クエリベクトルに最近接する格子点は、格子点と関連付けられたレコードにアクセスするために使用される。クエリに対する更なるプローブは、クエリ点からボロノイ領域の壁までの距離を計算することで決定される。距離が十分に短い場合、壁の反対側の格子点はプローブとして使用される。しかし、ベクトルが大きな次元数を有する場合、ボロノイ領域の壁の数は非常に多く、クエリ点から壁までの距離の計算は遅くなる。従って、この方法は、高次元ベクトルを有し且つ正確で高速なクエリを必要とするシステムには適さない。
無作為のハッシュ関数の場合、均衡された割り当てを実現するために二元チェーニングが適用される。一対のハッシュ関数を使用するため、2つのハッシュコードを各オブジェクトに提供する。挿入時、貪欲法は既存の登録数が最も少ないハッシュコードを選択する。検索時、双方のクエリハッシュコードは、オブジェクトを検索するために使用される。無作為のハッシュ関数を有する不均衡なハッシュの割り当てと比較して、いずれかのハッシュコードに対して予想される最大登録数は、二元チェーニングアルゴリズムを使用することで激減する。
従って、コンテンツベースの画像探索のために改善された方法及びシステムを提供する必要がある。
本発明の目的は、既存の構成の1つ以上の欠点を実質的に克服すること又は少なくとも改善することである。
本発明の第1の態様によると、ハッシュコードを画像の一部に紐付ける方法が提供される。方法は、多次元格子の複数の格子点を選択して、画像の一部を示す特徴ベクトルの周囲に最小の囲み領域を形成するステップと、分布基準に従って選択された複数の格子点から格子点を決定するステップであり、決定された格子点は、最小の囲み領域及び特徴ベクトルのクエリ半径距離内に配置された最小の囲み領域に隣接する格子の領域に共通であり、特徴ベクトルは、クエリベクトルのクエリ半径内に配置される場合に一致していると考えられるステップと、特徴ベクトルを決定された格子点に割り当てるステップと、決定された格子点と関連付けられたハッシュコードと画像の一部との間の紐付けを格納するステップとを備える。
本発明の第2の態様によると、ハッシュコードを画像の一部に紐付けるシステムが提供される。システムは、コンピュータプログラムを格納する記憶装置と、プログラムを実行するプロセッサとを備える。プログラムは、多次元格子の複数の格子点を選択して、画像の一部を示す特徴ベクトルの周囲に最小の囲み領域を形成する方法ステップと、分布基準に従って選択された複数の格子点から格子点を決定する方法ステップであり、決定された格子点は、最小の囲み領域及び特徴ベクトルのクエリ半径距離内に配置された最小の囲み領域に隣接する格子の領域に共通であり、特徴ベクトルは、クエリベクトルのクエリ半径内に配置される場合に一致していると考えられる方法ステップと、特徴ベクトルを決定された格子点に割り当てる方法ステップと、決定された格子点と関連付けられたハッシュコードと画像の一部との間の紐付けを格納する方法ステップとを実行するコードを含む。
本発明の第3の態様によると、ハッシュコードを画像の一部に紐付ける方法を実行するようにプロセッサに指示するコンピュータプログラムを記録したコンピュータ可読記憶媒体が提供される。コンピュータプログラムは、多次元格子の複数の格子点を選択して、画像の一部を示す特徴ベクトルの周囲に最小の囲み領域を形成するステップと、分布基準に従って選択された複数の格子点から格子点を決定するステップであり、決定された格子点は、最小の囲み領域及び特徴ベクトルのクエリ半径距離内に配置された最小の囲み領域に隣接する格子の領域に共通であり、特徴ベクトルは、クエリベクトルのクエリ半径内に配置される場合に一致していると考えられるステップと、特徴ベクトルを決定された格子点に割り当てるステップと、決定された格子点と関連付けられたハッシュコードと画像の一部との間の紐付けを格納するステップとを実行するコードを含む。
本発明の第4の態様によると、ハッシュテーブルの格納及び検索の方法であって、少なくとも1つのレコードを格納するために登録フェーズを実行するステップであり、前記格納されたレコード毎に、前記登録フェーズが、特徴ベクトル及びハッシュテーブルの現在の状態に基づいてレコードと関連付けられた特徴ベクトルに対するハッシュコードを生成するステップと、レコードをハッシュテーブルの生成されたハッシュコードと関連付けるステップとを含むステップと、前記ハッシュテーブルから前記格納されたレコードの少なくとも1つを検索するためにクエリフェーズを実行するステップであり、前記クエリフェーズが、探索基準を満たす特徴ベクトルと関連付けられる前記ハッシュテーブルのハッシュコードを識別するステップと、前記識別されたハッシュコードの少なくとも1つに割り当てられた少なくとも1つのレコードを検索するステップとを含むステップとを備える方法が提供される。
本発明の第5の態様によると、コンピュータプログラムを格納する記憶装置と、プログラムを実行するプロセッサとを備えるハッシュテーブルの格納及び検索のシステムが提供される。プログラムは、少なくとも1つのレコードを格納するために登録フェーズを実行する方法ステップであり、前記格納されたレコード毎に、前記登録フェーズが、特徴ベクトル及びハッシュテーブルの現在の状態に基づいてレコードと関連付けられた特徴ベクトルに対するハッシュコードを生成するステップと、レコードをハッシュテーブルの生成されたハッシュコードと関連付けるステップとを含む方法ステップと、前記ハッシュテーブルから前記格納されたレコードの少なくとも1つを検索するためにクエリフェーズを実行する方法ステップであり、前記クエリフェーズが、探索基準を満たす特徴ベクトルと関連付けられる前記ハッシュテーブルのハッシュコードを識別するステップと、前記識別されたハッシュコードの少なくとも1つに割り当てられた少なくとも1つのレコードを検索するステップとを含む方法ステップとを実行するコードを含む。
本発明の第6の態様によると、ハッシュテーブルの格納及び検索の方法を実行するようにプロセッサに指示するコンピュータプログラムを記録したコンピュータ可読記憶媒体が提供され、前記コンピュータプログラムは、少なくとも1つのレコードを格納するために登録フェーズを実行するステップであり、前記格納されたレコード毎に、前記登録フェーズが、特徴ベクトル及びハッシュテーブルの現在の状態に基づいてレコードと関連付けられた特徴ベクトルに対するハッシュコードを生成するステップと、レコードをハッシュテーブルの生成されたハッシュコードと関連付けるステップとを含むステップと、前記ハッシュテーブルから前記格納されたレコードの少なくとも1つを検索するためにクエリフェーズを実行するステップであり、前記クエリフェーズが、探索基準を満たす特徴ベクトルと関連付けられる前記ハッシュテーブルのハッシュコードを識別するステップと、前記識別されたハッシュコードの少なくとも1つに割り当てられた少なくとも1つのレコードを検索するステップとを含むステップとを実行するコードを含む。
本発明の別の態様によると、上述の方法のうちのいずれか1つを実現する装置が提供される。
本発明の別の態様によると、上述の方法のうちのいずれか1つを実現するコンピュータプログラムを記録したコンピュータ可読媒体を含むコンピュータプログラム製品が提供される。
本発明の他の態様も開示される。
図1は、画像と、画像部分と、画像部分と関連付けられた特徴ベクトルとを示す図である。 図2は、ベクトル、クエリ点及びクエリ半径の空間的解釈を示す図である。 図3は、本発明の一実施形態に係るハッシュ法を示すフローチャートである。 図4は、レコードと関連付けられた所定のベクトルに対するハッシュ領域の空間的解釈の一例を示す図である。 図4は、レコードと関連付けられた所定のベクトルに対するハッシュ領域の空間的解釈の一例を示す図である。 図5Aは、2次元特徴空間の囲み領域内に配置された特徴ベクトルの配列を示す図である。 図5Bは、2次元特徴空間の囲み領域内に配置された特徴ベクトルの配列を示す図である。 図6は、図3のハッシュ法において使用されたような候補となる格子点を選択する方法を示すフローチャートである。 図7は、図3のハッシュ法の1つ以上のステップで使用されるハッシュ決定方法を示すフローチャートである。 図8は、図3のハッシュ法において使用される別の格子候補点選択方法を示すフローチャートである。 図9は、ハッシュテーブルのクエリ方法を示すフローチャートである。 図10は、所定のクエリベクトルに対するハッシュ領域の空間的解釈を示す図である。 図11は、2次元特徴空間の囲み領域における特徴ベクトルを示す図である。 図12Aは、2次元特徴空間における格子点への特徴ベクトルの割り当てを示す図である。 図12Bは、2次元特徴空間における格子点への特徴ベクトルの割り当てを示す図である。 図13Aは、説明した構成を実施する汎用コンピュータシステムの概略ブロック図である。 図13Bは、説明した構成を実施する汎用コンピュータシステムの概略ブロック図である。 図14Aは、検索システムの登録フェーズ及びクエリフェーズを示す図である。 図14Bは、検索システムの登録フェーズ及びクエリフェーズを示す図である。 図14Cは、検索システムの登録フェーズ及びクエリフェーズを示す図である。
次に、以下の図面を参照して、本発明の少なくとも1つの実施形態を説明する。
いずれか1つ以上の添付の図面において、同一の参照番号を有するステップ及び/又は特徴を参照する場合、それに反する意図が示されない限り、これらのステップ及び/又は特徴は、本明細書のために同一の機能又は動作を有する。
本発明は、レコードの格納及び検索に関する。説明される構成は、n次元特徴ベクトルと関連付けられたレコードを効率的に検索するためにハッシュテーブルを作成し且つそれにアクセスするために検索システムにおいて使用される。検索されたレコードのベクトルは、所定のクエリベクトルの特定のクエリ半径内に配置される。システムが構成される時にクエリ半径が既知の場合に偽陰性を最低限にするためにシステムを使用できるため、これは偽陰性の損失が大きい場合に特に有用である。
第1に、登録フェーズは1つ以上のレコードの格納に関する。第2に、クエリフェーズは、探索基準に従って格納されたレコードの1つ以上の検索に関する。登録フェーズは、特徴ベクトル及びハッシュテーブルの現在の状態に基づいて特徴ベクトルに対するハッシュコードを生成する。次に、登録フェーズは、特徴ベクトルと関連付けられたレコードをハッシュテーブルの生成されたハッシュコードと関連付ける。第2に、クエリフェーズは、探索基準を満たすベクトルが使用するハッシュコードを識別する。
本発明に係る検索システムは、各々が特徴ベクトル及びレコードと関連付けられる画像と関連付けられたレコードを格納及び検索するように実現される。特徴ベクトルは、対応するレコードを格納するために重要なものとして使用される。レコードは画像に関する情報を含む。情報は、対応する特徴ベクトル、画像、画像の一部、画像のサブサンプルバージョン、所有者情報、アクセス情報、印刷情報又はそれらのあらゆる組合せ等を含むが、それに限定されない。
本発明に係る検索システムは、テキスト、テキストの一部又はペーパーフィンガープリントの検索等の撮影以外の適応例に対しても実現されてもよい。
本発明の一態様は、ハッシュコードを画像の一部に紐付ける方法、システム及びコンピュータプログラムを提供する。多次元格子の複数の格子点を選択して、画像の一部を示す特徴ベクトルの周囲に最小の囲み領域を形成する。分布基準に従って選択された複数の格子点から格子点を決定する。決定された格子点は、最小の囲み領域及び特徴ベクトルのクエリ半径距離内に配置された最小の囲み領域に隣接する格子の領域に共通である。特徴ベクトルは、クエリベクトルのクエリ半径内に配置される場合に一致していると考えられる。特徴ベクトルを決定された格子点に割り当て、決定された格子点と関連付けられたハッシュコードと画像の一部との間の紐付けを格納する。
本発明の別の態様は、ハッシュテーブルの格納、並びに検索の方法、システム及びコンピュータプログラムを提供する。少なくとも1つのレコードをハッシュテーブルに格納するために登録フェーズを実行し、ハッシュテーブルから格納されたレコードの少なくとも1つを検索するためにクエリフェーズを実行する。格納されたレコード毎に、登録フェーズは、特徴ベクトル及びハッシュテーブルの現在の状態に基づいてレコードと関連付けられた特徴ベクトルに対するハッシュコードを生成し、レコードをハッシュテーブルの生成されたハッシュコードと関連付ける。クエリフェーズは、探索基準を満たす特徴ベクトルと関連付けられるハッシュテーブルに対するハッシュコードを識別し、識別されたハッシュコードの少なくとも1つに割り当てられた少なくとも1つのレコードを検索する。
図14Aは、レコード1405及び点[1.0, 0.1]の形式の関連特徴ベクトル1410を示す。登録フェーズは、点及びハッシュテーブル1415の現在の状態の座標に基づいて特徴ベクトル1410に対するハッシュコード1420を生成する。図14Bは、ハッシュテーブル1415の生成されたハッシュコード1420と関連付けられるレコード1405を示す。図14Cは、クエリベクトル1425を一致させる点が使用するハッシュテーブル1415のハッシュコード1430、1440、1450を識別するために点[1.1, 0.0]の形式のクエリベクトル1425が使用されるクエリフェーズを示す。
格子を使用してハッシュ関数が規定される本発明の少なくとも1つの実施形態を説明する。A系は、A格子系に関して規定される。格子Aは、以下のように規定される。
={p∈Z(n+1)|Σ=0}
は、座標の整数を作成するようにR(n+1)に組み込まれるn次元格子である。Aの両数(dual)はA であり、同様に、同一のn次元部分空間の内部に組み込まれる。A は、以下により規定される。
={p∈R(n+1)|Σ=0,∀q∈A,p・q∈Z}
関連特徴ベクトルを有するレコードが受信される場合、隣接する格子点が選択され、ベクトルに対するハッシュコードを決定するために使用される。隣接する格子点は、ベクトルを含むドローネ領域のコーナーに対応する格子の点である。任意であるが特定の格子が与えられる場合、格子の各ドローネ領域は、互いにある所定の範囲内にあるコーナーを有する。従って、隣接する格子点は、ベクトルのある所定の範囲内にある格子の点である。しかし、ベクトルのある所定の範囲内の全ての格子点が「隣接する格子点」であるというのは不確かである。ハッシュコードは格子点に紐付けられ、格子点を決定し且つ格子点からハッシュコードを決定するためにハッシュコードを使用することも可能である。その結果、ハッシュコード及び格子点は、同一の情報を示し、区別なく使用される。一実施形態において、格子点はハッシュコードである。別の実施形態は、ハッシュコードを決定するために関数を格子点に適用する。レコードは、ハッシュテーブルを使用してハッシュコードと関連付けられる。クエリベクトルが受信される場合、囲みドローネ領域のコーナーの格子点が配置され、配置された格子点の各々に対応するクエリハッシュコードが決定される。ハッシュテーブルは、各クエリハッシュコードと関連付けられたレコードを検出するために使用される。
本発明の実施形態は、本発明の趣旨及び範囲から逸脱することなくA格子以外の多次元格子を適用することで実施されてもよいことが当業者により明らかとなるだろう。例えば、A格子、D格子、D格子、Z格子及びリーチ格子が使用されてもよい。
図13A及び図13Bは、説明される種々の構成を実施する汎用コンピュータシステム1300を示す。
図13Aに示されるように、コンピュータシステム1300は、コンピュータモジュール1301と、キーボード1302、マウスポインタデバイス1303、スキャナ1326、カメラ1327及びマイク1380等の入力装置と、プリンタ1315、表示装置1314及びスピーカ1317を含む出力装置とを備える。外部変復調器(モデム)送受信機デバイス1316は、接続1321を介して通信ネットワーク1320と通信するためにコンピュータモジュール1301により使用される。通信ネットワーク1320は、インターネット、セルラ電気通信ネットワーク等のワイドエリアネットワーク(WAN)又は専用WANである。接続1321が電話線である場合、モデム1316は従来の「ダイヤルアップ」モデムである。あるいは、接続1321が大容量(例えば、ケーブル)接続である場合、モデム1316はブロードバンドモデムである。無線モデムは、通信ネットワーク1320に無線接続するために更に使用される。
一般にコンピュータモジュール1301は、少なくとも1つのプロセッサユニット1305と、メモリユニット1306とを備える。例えばメモリユニット1306は、半導体ランダムアクセスメモリ(RAM)及び半導体読み出し専用メモリ(ROM)を有する。コンピュータモジュール1301は、ビデオディスプレイ1314、スピーカ1317及びマイク1380に結合するオーディオ−ビデオインタフェース1307と、キーボード1302、マウス1303、スキャナ1326、カメラ1327及び必要に応じてジョイスティック又は他のヒューマンインタフェースデバイス(不図示)に結合する入出力(I/O)インタフェース1313と、外部モデム1316及びプリンタ1315用のインタフェース1308とを含む複数のI/Oインタフェースを更に備える。いくつかの実現例において、モデム1316は、インタフェース1308等のコンピュータモジュール1301内に組み込まれる。コンピュータモジュール1301は、接続1323を介してコンピュータシステム1300がローカルエリアネットワーク(LAN)として知られているローカルエリア通信ネットワーク1322に接続できるようにするローカルネットワークインタフェース1311を更に有する。図13Aに示されるように、ローカル通信ネットワーク1322は、一般にいわゆる「ファイアウォール」デバイス又は同様の機能性を備えるデバイスを含むワイドネットワーク1320に接続1324を介して更に結合する。ローカルネットワークインタフェース1311は、EthernetTM回路カード、BluetoothTM無線装置又はIEEE802.11無線装置を備えるが、多数の他の種類のインタフェースがインタフェース1311に対して実現される。
I/Oインタフェース1308及び1313は、直列接続性及び並列接続性のいずれか一方又は双方を提供する。一般に直列接続性は、USB(Universal Serial Bus)規格に従って実現され、対応するUSBコネクタ(不図示)を有する。記憶装置1309が提供され、一般に記憶装置1309はハードディスクドライブ(HDD)1310を含む。フロッピディスクドライブ及び磁気テープドライブ(不図示)等の他の記憶装置が更に使用されてもよい。光ディスクドライブ1312は、一般に、データの不揮発性ソースとして動作するように提供される。例えば、光ディスク(例えば、CD−ROM、DVD、Blu−ray DiscTM)、USB−RAM、ポータブルな外部ハードドライブ及びフロッピディスク等のポータブルメモリ装置は、システム1300に対する適切なデータソースとして使用される。
コンピュータモジュール1301の構成要素1305〜1313は、一般に、結果として当業者に既知であるコンピュータシステム1300の動作の従来のモードから得られる方法で相互接続バス1304を介して通信する。例えばプロセッサ1305は、接続1318を使用してシステムバス1304に結合される。同様に、メモリ1306及び光ディスクドライブ1312は、接続1319によりシステムバス1304に結合される。説明した構成を実施するコンピュータの例には、IBM−PC及び互換性のあるもの、Sun Sparcstations、Apple MacTM又は同様のコンピュータシステムが含まれる。
ハッシュコードを画像の一部に紐付ける方法、並びにハッシュコードの格納及び検索の方法は、コンピュータシステム1300を使用して実現される。本明細書において説明される図1〜図12及び図14A〜図14Cの処理は、コンピュータシステム1300内で実行可能な1つ以上のソフトウェアアプリケーションプログラム1333として実現される。特に、ハッシュコードを画像の一部に紐付ける方法のステップ、並びにハッシュコードの格納及び検索の方法は、コンピュータシステム1300内で実行されるソフトウェア1333中の命令1331(図13Bを参照)により実施される。ソフトウェア命令1331は、各々が1つ以上の特定のタスクを実行する1つ以上のコードモジュールとして形成される。ソフトウェアは2つの別個の部分に更に分割され、第1の部分及び対応するコードモジュールは紐付ける方法、格納する方法及び検索する方法を実行し、第2の部分及び対応するコードモジュールは、第1の部分とユーザとの間のユーザインタフェースを管理する。
例えばソフトウェアは、以下に説明する記憶装置を含むコンピュータ可読媒体に格納される。ソフトウェアは、コンピュータ可読媒体からコンピュータシステム1300にロードされ、コンピュータシステム1300により実行される。そのようなソフトウェア又はコンピュータ可読媒体に記録されているコンピュータプログラムを有するコンピュータ可読媒体は、コンピュータプログラム製品である。コンピュータシステム1300においてコンピュータプログラムを使用することにより、ハッシュコードを画像の一部に紐付けること、並びにハッシュコードの格納及び検索に有利な1つ以上の装置を実施することが好ましい。
一般にソフトウェア1333は、HDD1310又はメモリ1306に格納又は記録される。ソフトウェアは、コンピュータ可読媒体からコンピュータシステム1300にロードされ、コンピュータシステム1300により実行される。従って、例えばソフトウェア1333は、光ディスクドライブ1312により読み出される光学的に読み出し可能なディスク記憶媒体(例えば、CD−ROM)1325上に格納される。そのようなソフトウェア又コンピュータプログラムを記録したコンピュータ可読媒体は、コンピュータプログラム製品である。コンピュータシステム1300においてコンピュータプログラムを使用することにより、ハッシュコードを画像の一部に紐付けること、並びにハッシュコードの格納及び検索に有利な1つ以上の装置を実施することが好ましい。
いくつかの例において、アプリケーションプログラム1333は、1つ以上のCD−ROM1325上でユーザが符号化したものに供給されて対応するドライブ1312を介して読み出されるか、あるいはユーザによりネットワーク1320又は1322から読み出される。また、ソフトウェアは、他のコンピュータ可読媒体からコンピュータシステム1300に更にロードされてよい。コンピュータ可読記憶媒体は、実行及び/又は処理するために記録された命令及び/又はデータをコンピュータシステム1300に提供するあらゆる非一時的な有形記憶媒体を示す。そのような記憶媒体の例には、フロッピディスク、磁気テープ、CD−ROM、DVD、Blu−ray Disc、ハードディスクドライブ、ROM又は集積回路、USBメモリ、光磁気ディスク、あるいは例えばPCMCIAカード等のコンピュータ可読カードが含まれ、そのようなデバイスは、コンピュータモジュール1301の内部又は外部にある。ソフトウェア、アプリケーションプログラム、命令及び/又はデータをコンピュータモジュール1301に提供することに更に関係する一時的又は非一時的なコンピュータ可読伝送媒体の例には、無線送信チャネル又は赤外線送信チャネル及び別のコンピュータ又はネットワーク化されたデバイスへのネットワーク接続、並びに電子メール送信及びウェブサイト上等に記録された情報を含むインターネット又はイントラネットが含まれる。
上述したアプリケーションプログラム1333の第2の部分及び対応するコードモジュールは、ディスプレイ1314上にレンダリングされるかあるいは表される1つ以上のグラフィカルユーザインタフェース(GUI)を実現するように実行される。一般にキーボード1302及びマウス1303を操作することにより、コンピュータシステム1300及びアプリケーションのユーザは、GUIと関連付けられたアプリケーションに制御コマンド及び/又は入力を提供するように機能的に適応可能な方法でインタフェースを操作する。他の形式の機能的に適応可能なユーザインタフェース、例えばスピーカ1317を介して出力された音声プロンプト及びマイク1380を介して入力されたユーザボイスコマンドを利用するオーディオインタフェースが更に実現されてもよい。
図13Bは、プロセッサ1305及び「メモリ」1334を示す詳細な概略ブロック図である。メモリ1334は、図13Aのコンピュータモジュール1301がアクセスする全てのメモリモジュール(HDD1309及び半導体メモリ1306を含む)の論理的な集合を示す。
コンピュータモジュール1301の電源が最初に投入される場合、power−on self−test(POST)プログラム1350が実行する。一般にPOSTプログラム1350は、図13Aの半導体メモリ1306のROM1349に格納される。ソフトウェアを格納するROM1349等のハードウェアデバイスは、ファームウェアと呼ばれる場合もある。POSTプログラム1350は、コンピュータモジュール1301内のハードウェアを調査して適切に機能することを保証し、一般に、正しく動作するために、プロセッサ1305、メモリ1334(1309、1306)及び一般にROM1349に更に格納された基本入出力システムソフトウェア(BIOS)モジュール1351をチェックする。POSTプログラム1350が正常に実行したら、BIOS1351は図13Aのハードディスクドライブ1310を起動する。ハードディスクドライブ1310を起動することにより、ハードディスクドライブ1310上に常駐するブートストラップローダプログラム1352がプロセッサ1305を介して実行する。これにより、オペレーティングシステム1353は、RAMメモリ1306にロードされると動作を開始する。オペレーティングシステム1353は、プロセッサ1305により実行可能なシステムレベルのアプリケーションであり、プロセッサ管理、メモリ管理、デバイス管理、ストレージ管理、ソフトウェアアプリケーションインタフェース及び汎用ユーザインタフェースを含む種々のハイレベルな機能を遂行する。
オペレーティングシステム1353は、メモリ1334(1309、1306)を管理し、コンピュータモジュール1301上で実行する処理又はアプリケーションの各々が別の処理に割り当てられたメモリと衝突することなく実行する十分なメモリを有することを保証する。また、図13Aのシステム1300で使用可能な種々のメモリは、各処理が効率的に実行できるように適切に使用されなければならない。従って、集約メモリ1334は、メモリの特定の部分が割り当てられる方法を示すことを意図するのではなく(特に記載されない限り)、コンピュータシステム1300によりアクセス可能なメモリの概略図及びそのようなメモリが使用される方法を提供する。
図13Bに示されるように、プロセッサ1305は、制御ユニット1339、演算論理装置(ALU)1340及びキャッシュメモリと呼ばれる場合もあるローカルメモリ又は内部メモリ1348を含む多数の機能モジュールを含む。一般にキャッシュメモリ1348は、レジスタ部に複数の記憶レジスタ1344〜1346を含む。1つ以上の内部バス1341は、これらの機能モジュールを機能的に相互接続する。一般にプロセッサ1305は、接続1318を使用してシステムバス1304を介して外部デバイスと通信する1つ以上のインタフェース1342を更に有する。メモリ1334は、接続1319を使用してバス1304に結合される。
アプリケーションプログラム1333は、条件付き分岐命令及びループ命令を含む一連の命令1331を含む。プログラム1333は、プログラム1333を実行する場合に使用されるデータ1332も含む。命令1331及びデータ1332は、それぞれ、記憶場所1328、1329、1330及び1335、1336、1337に格納される。命令1331及び記憶場所1328〜1330の相対的なサイズに依存して、特定の命令は、記憶場所1330に示された命令により示されたように単一の記憶場所に格納される。あるいは、命令は、記憶場所1328及び1329に示された命令部分により示されたように、各々が別個の記憶場所に格納される多数の部分にセグメント化される。
一般にプロセッサ1305は、そこで実行される命令の集合を与えられる。プロセッサ1105は、命令の別の集合を実行することにより自身が反応する後続の入力を待つ。各入力は、入力装置1302、1303の1つ以上により生成されたデータ、ネットワーク1320、1302のうちの一方を介して外部ソースから受信したデータ、記憶装置1306、1309のうちの一方から検索されたデータ又は対応する読み取り装置1312に挿入された記憶媒体1325から検索されたデータを含む多数のソースのうちの1つ以上から提供され、その全てを図13Aに示す。いくつかの例において、命令の集合を実行した結果、データが出力される。実行することは、データ又は変数をメモリ1334に格納することも含む。
開示されるハッシュコードの紐付け、格納及び検索の構成は、対応する記憶場所1355、1356、1357においてメモリ1334に格納される入力変数1354を使用する。ハッシュコードの紐付け、格納及び検索の構成は、対応する記憶場所1362、1363、1364においてメモリ1334に格納される出力変数1361を生成する。中間変数1358は、記憶場所1359、1360、1366及び1367に格納される。
図13Bのプロセッサ1305を参照すると、レジスタ1344、1345、1346、演算論理装置(ALU)1340及び制御ユニット1339は、プログラム1333を構成する命令集合において命令毎に「取り込み、復号化及び実行」サイクルを実行するのに必要なマイクロ動作のシーケンスを実行するように共に動作する。取り込み、復号化及び実行サイクルの各々は、以下を含む。
(a)記憶場所1328、1329、1330からの命令1331を取り込むかあるいは読み取る取り込み動作
(b)制御ユニット1339が取り込まれている命令を判定する復号化動作
(c)制御ユニット1339及び/又はALU1340が命令を実行する実行動作
その後、次の命令に対する更なる取り込み、復号化及び実行サイクルが実行される。同様に、制御ユニット1339が値を記憶場所1332に格納するかあるいは書き込むことにより、格納サイクルが実行される。
図1〜図12及び図14A〜図14Cの処理におけるステップ又はサブ処理の各々は、プログラム1333の1つ以上の部分と関連付けられ、プログラム1333の示された部分に対して命令集合において命令毎に取り込み、復号化及び実行サイクルを実行するように共に動作するプロセッサ1305のレジスタ部1344、1345、1347、ALU1340及び制御ユニット1339により実行される。
あるいは、ハッシュコードを画像の一部に紐付ける方法、並びにハッシュコードの格納及び検索の方法は、格子点を選択し、分布基準に従って格子点を決定し、特徴ベクトルを決定された格子点に割り当て、決定された格子点と関連付けられたハッシュコードと画像の一部との間の紐付けを格納し、登録フェーズを実行し、且つクエリフェーズを実行する機能又はサブ機能を実行する1つ以上の集積回路等の専用ハードウェアで実現されてもよい。そのような専用ハードウェアは、グラフィックプロセッサ、デジタル信号プロセッサ又は1つ以上のマイクロプロセッサ及び連想メモリを備える。
図1及び図6を参照して、画像検索を含む検索システムの一実施形態を説明する。図1は、データベース280のハッシュテーブルに格納されるレコード200と関連付けられる画像100を示す。レコード200は画像に関する情報を含む。画像100は、画像100と関連付けられた特徴ベクトル210が決定される画像100の領域110を識別するように、「SIFT」(Scale Invariant Feature Transform)等の画像特徴抽出器により処理される。その後、特徴ベクトル210は、データベース280に格納され、画像レコード200と関連付けられる。
画像レコードは画像に関する情報を含む。例えば画像レコードは、画像にアクセスするためのjpeg、あるいはファイル名又はリソースロケータ等の何らかの形式で画像の画素値を記録する。画像レコードは、所有者の詳細又は画像を含む処理に関する情報を含む。例えば画像レコードは、画像を印刷したユーザ又は画像が印刷された場所及び時間に関する情報を含む。画像レコードは、特徴ベクトル又は特徴ベクトルのある圧縮バージョン、あるいは特徴ベクトルを示す何らかの識別子を記録する。図1の特徴ベクトル210等の画像から生成された特徴ベクトルは、図2の特徴空間表現に示される。尚、特徴ベクトルは、図2の特徴空間260等の空間における点として処理される。そのため、「ベクトル」、「特徴ベクトル」及び「点」という用語は、本発明の実施形態において画像の一部を示す数値の配列を示すために区別なく使用される。ベクトルが点として処理される時、2つのベクトル間の相違の基準が2つの対応する点の間の距離として処理されるため、距離は2つのベクトル間とすることができる。
図2は、2つのレコード200及び220が格納されるデータベース280を示す。2つのレコード200及び220は、不図示の第1の画像及び第2の画像と関連付けられる。レコード200及び220は、第1の画像及び第2の画像のそれぞれに関する同一の種類の情報を格納する。一例において、レコード200は、第1の画像に対する最後の印刷日を格納し、レコード220は、第2の画像に対する最後の印刷日を格納する。あるいは、レコード200及び220は、第1の画像及び第2の画像のそれぞれに関する異なる種類の情報を格納してもよい。レコード200及び220は、それぞれ特徴ベクトル210及び230と関連付けられる。ベクトル210及び230は、特徴空間260における空間的解釈を有する。データベースに格納された何らかの類似画像を探索するために画像が使用される場合、クエリベクトル240は、探索のために使用されているクエリ画像から生成された特徴ベクトルである。クエリ画像に類似するデータベースに格納された画像を発見することは、そのクエリ画像から導出されたクエリベクトル240の所定の半径内のレコードを検索することで実現される。所定の半径は、クエリ点240の周囲の円形のクエリ領域270を規定するクエリ半径250により図2に示される。ベクトル210等のクエリ領域270の内側に配置されたベクトルは、クエリ点240に一致するものとして規定され、ベクトル230等のクエリ領域の外側のベクトルは、クエリ点240に一致しない。クエリ半径250は、クエリベクトルと特徴ベクトルとの間の最大許容相違の基準であると考えられる。ベクトル210がクエリ領域270内にある時、ベクトル210と関連付けられたレコード200がクエリベクトル240に応答して返送されるのに対し、ベクトル230がクエリ領域の外側にあるため、レコード220は返送されない。
従って、特徴ベクトル210は第1の画像100から導出され、特徴ベクトル240はクエリ画像(不図示)から導出される。特徴ベクトル210は、第1の画像100とクエリ画像との間の類似性の必要とされるレベルを示すクエリベクトル240の半径250内にある。このように仮定すると、レコード200は返送される。レコード200は、画像100と関連付けられたあらゆる種類の情報を格納してもよい。レコード200は、画像100と関連付けられたあらゆる種類の情報を格納してもよい。
一実施形態において、クエリ画像は、クエリ画像における色及び/又はエッジの分布を示す単一の特徴ベクトルと関連付けられる。そのような一実施形態において、一致するレコードは、色及び/又はエッジの同様の分布の画像と関連付けられたレコードである。別の実施形態において、クエリ画像は、各々が画像の一部のテクスチャに関する情報と関連付けられる多くの特徴ベクトルを有する。本実施形態において、一致するレコードを採点する(例えば、投票により)ために集約される多くの一致があるため、高スコアのレコードは、部分的にクエリ画像と同一に見える画像と関連付けられたレコードである。
一致しないレコードが返送される場合、それを偽陽性誤りと呼ぶ。一致するレコードが返送されない場合、それを偽陰性誤りと呼ぶ。多くの適応例において、偽陽性一致と偽陰性一致との影響の間には非対称がある。候補の後続の網羅的チェックにより偽陽性が除去されるため、偽陽性率が適切に低いと仮定すると、偽陽性一致は許容可能である。後続の処理が損失を回復できないため、偽陰性一致に対する影響は大きい。
ハッシュテーブルの更新
図3は、本発明の一実施形態に係る入力画像に対するハッシュコードを決定するハッシュ法300を示すフローチャートである。ハッシュ法300は、画像のハッシュテーブルを形成するために多数の入力画像に適用される。図9に関連して更に詳細に説明されるように、画像をハッシュテーブルに格納することにより、ハッシュテーブルから類似画像を発見するためにクエリ画像が使用される際に画像を検索できる。方法300は、プロセッサユニット1305で実行する複数の命令を含むコンピュータプログラムとして実現される。
ハッシュ法300は、開始ステップ305において開始し、入力画像を受信する画像受信ステップ310に進む。画像は、カメラ1327又はスキャナ1326を使用して撮像されても良いし、あるいは場合によっては入出力インタフェースを介してシステムのユーザにより受信及びロードされても良いし、あるいはメモリユニット1306又は記憶装置1309から検索されても良い。次に、画像は特徴ベクトル計算ステップ320へ渡され、画像の一部を示す特徴ベクトルを生成する。一実施形態において、特徴ベクトル計算ステップ320は、入力画像の一部を選択して特徴ベクトルを決定するためにSIFTアルゴリズムを使用する。あるいは、SURF(Speeded Up Robust Features)、GIST(Oliva及びTorralbaによる)、エッジヒストグラム特徴又は色ヒストグラム特徴等の特徴ベクトルを生成するために、他の特徴ベクトル計算方法が使用されてもよい。2つの類似画像間の高いマッチング精度を実現するために、画像毎にステップ320で計算されるような2つの特徴ベクトルの類似性は高くあるべきである。逆に、2つの非類似画像の場合には、2つの特徴ベクトルの類似性は低くあるべきである。画像毎に多数の特徴を使用する実施形態の場合には、この要求が緩和されるため、均衡を取れる可能性に関しては確かである。
ステップ320から格子領域選択ステップ330に進み、ステップ330において、ステップ320から計算された特徴ベクトルを入力とし、特徴ベクトルを取り囲む多次元格子の囲み領域を決定する。一実施形態において、A格子は、格子の各点が特徴ベクトルがハッシュされる点を提供する特徴空間に適用される。各特徴ベクトルが格子点の1つに割り当てられるため、特徴ベクトルを格子点の1つにハッシュすることは、量子化の形式であると考えられる。ハッシュのために格子点を選択する最も簡単な方法は、最近接の格子点を選択することであるが、これにより、ハッシュコードを不均衡に使用することになる。図11を参照して、特徴空間において使用される格子の構成を以下に説明する。n次元特徴空間の場合、格子領域選択ステップ330は、特徴ベクトルを含む囲み領域としてドローネ領域を規定するn+1個のA格子点を決定する。ドローネ領域は、格子点により形成された特徴ベクトルの周囲の最小の囲み領域である。格子領域選択ステップ330は、特徴ベクトルを含むAドローネ領域のコーナーである格子点を決定する既知の方法のいずれかにより決定される。Aドローネ領域は適合しており、原点に触れるいずれかのドローネ領域の座標は、その座標の順列により標準的なドローネ領域から取得される。これは、点を取り囲むドローネ領域を効率的に決定するために利用される。例えば第1のコーナーポイントは、特徴ベクトルの各座標を一番近い整数値に丸めて、座標の合計が0であり、且つ変更される座標が第1のコーナーポイントと入力特徴ベクトルとの間の最小差異の結果得られる座標であるようにいくつかの座標から1を加算又は減算することで決定される。次に、残りのn個のコーナーポイントの各々は、ベクトルを第1のコーナーポイントに加算することで決定され、加算されたベクトルの座標がi/(n+1)又はi/(n+1)−1であるため、座標は全ての合計をゼロに落ち着かせる。加算されたベクトルのどの座標がi/(n+1)であるか及びi/(n+1)−1であるかを選択することは、第1のコーナーポイントと特徴ベクトルとの差異の座標のソート順により決定される。ベクトルvは、k/(n+1)に等しい最初のn+1−k個の座標及びk/(n+1)−1に等しい最後のk個の座標を有するベクトルであると規定される。ドローネ領域のk番目のコーナーはc+ρ−1(v)として計算され、式中、cは第1のコーナーであり、ρは差異を増加順序でソートする順列であり、ρ−1(v)は、1〜nのkの値毎にρの逆数をvの座標の次数に適用することで得られるベクトルを示す。
次に、2次元特徴空間に配置された特徴ベクトル210を示す図4Aを参照して、格子領域選択ステップ330の一例を説明する。A格子は、点410、420及び430等の複数の格子点を形成するために特徴空間に適用されている。図4Aは、格子点420の周囲に配置されるボロノイ領域440等の格子点の周囲のボロノイ領域も示す。格子点のボロノイ領域は、格子における他のいかなる点より格子点に近接する全ての点から構成される。各ボロノイ領域は、多数の平面又は3次元を超える超曲面に面し、各面は、隣接する2つの格子点の間の境界を規定する。特徴ベクトルのハッシュコードを決定することは、特徴ベクトルが配置されるボロノイ領域を決定することに相当する。ボロノイ領域の各コーナーを「穴」と呼び、それは多数のボロノイ領域が接触する場所である。
上述したようにレコード200と関連付けられた特徴ベクトル210が、3つの格子点410、420、430により形成された三角形のドローネ領域450内に配置されることが示される。ドローネ領域は、他のどんな穴からも遠くない穴である全ての点から構成される。ドローネ領域の頂点(すなわち、コーナー)は、穴において接触するボロノイ領域の格子点である。他の格子点はドローネ領域に含まれない。従って、ドローネ領域は、その頂点の格子点により示される。
ドローネ領域450が特徴ベクトル210を含むため、図4Aに示される特徴ベクトル210に適用される場合、格子領域選択ステップ330は、領域450を形成する格子点を返送する。ドローネ領域450は、特徴ベクトル210を取り囲む格子の点から形成された最小の領域である。
図3に戻ると、格子領域選択ステップ330で決定された格子点は、格子候補選択ステップ340へ渡される。格子候補選択ステップ340の目的は、特徴ベクトルに対するハッシュコードとして使用するための候補である格子点を囲み領域から選択することである。特徴ベクトルのクエリ距離内に配置されたあらゆる未来のクエリベクトルに対して、ハッシュ検索関数が特徴ベクトルのハッシュ値を含む囲み領域を返送する場合、囲み領域における格子点は有効な候補であると考えられる。そのため、ハッシュ値をハッシュテーブルに追加する処理には、一致するハッシュ検索処理が必要である。図9を参照してハッシュ検索方法を以下に説明する。格子候補選択ステップ340の出力は、特徴ベクトルが割り当てられる候補となる格子点の集合、すなわち候補となるハッシュ値の集合である。格子候補選択ステップ340の動作を図6及び図4Bに関連して以下に更に詳細に説明する。
次に、図4Bを参照して、一例として格子候補選択ステップの動作を説明する。図4Bは、図4Aのドローネ領域450を更に詳細に示す。特徴ベクトル210が、点410及び420により規定された平面460にまでも及ぶクエリ半径250を有する領域450内に配置されることが示される。クエリ半径250は、あらゆる未来のクエリ点が類似画像の特徴ベクトルとして特徴ベクトル250を返送することを予想する領域を規定する。クエリ半径は、一般にハッシュテーブルをクエリするために規定されるが、ハッシュテーブルの構成中にクエリ半径を使用することにより、クエリ半径の影響を考慮してハッシュテーブルを構成できる。クエリ半径250が現在のドローネ領域450を越えて隣接ドローネ領域470にまでも及ぶため、特徴ベクトル210は、現在のドローネ領域及び隣接ドローネ領域の双方に対して使用可能な格子点にハッシュされるべきである。点430が平面460の反対側に配置された隣接ドローネ領域470の部分とはなり得ないため、格子候補選択ステップは、候補となる格子点の集合から点430を除外すべきである。従って、格子点バリデータは、候補となる格子点の集合から格子点430を除外すべきである。
図5A及び図5Bは、2次元特徴空間のドローネ領域500内に配置された特徴ベクトルのより可能な配置を示す。図5Aは、特徴ベクトル550がドローネ領域500の中心にある状況を示す。特徴ベクトル550と関連付けられたクエリ半径540は、領域500のいずれの側も越えて拡張しない。このような状況において、領域500内に配置された全てのクエリ点が特徴ベクトル550を返送すべきであるため、格子点510、520及び530は、格子候補選択ステップにより、特徴ベクトル550に対するハッシュコードの生成に使用するために可能な格子点であると考えられる。
図5Bは、特徴ベクトル560がドローネ領域500の格子点510に近接して配置されるために、特徴ベクトル560と関連付けられたクエリ半径540が双方の平面535及び515を横切ることを示す。その結果、特徴ベクトル560は、領域500又は平面535及び515の反対側に配置された不図示の隣接領域に配置されたクエリベクトルに類似する特徴ベクトルであると考えられる。これらの3つの領域のうちの1つに配置されたいずれかのクエリベクトルは、特徴ベクトル560のハッシュを返送すべきである。領域500及び隣接領域に共通の唯一の格子点は、格子点510である。
図3に戻ると、ハッシュ法300は、格子候補選択ステップ340から候補となる格子点を受信するハッシュコード選択ステップ350に進む。ハッシュコード選択ステップ350の目的は、特徴ベクトルに対するハッシュコードとして候補となる格子点から単一の格子コードを選択することである。好適な実施形態において、ハッシュコード選択ステップ350は、事前に各格子点と関連付けられているレコードの数を決定するために格子候補点の各格子点を検査する。次に、ハッシュコード選択ステップ350は、関連特徴ベクトルの数が最も少ない格子点に対して特徴ベクトルを量子化し、格子点と関連付けられたハッシュ値を使用する。あるいは、特徴ベクトルは候補となる格子点の1つに無作為に割り当てられてもよく、それにより、事前に各格子点と関連付けられている特徴ベクトルの数を決定する必要がなくなる。ハッシュコードを選択する更に別の方法は、選択される格子点がレコードの重心から最も遠く離れているために格子にわたり関連レコードの分布を拡散する傾向があるように、候補となる格子点から格子点を選択する方法である。
ハッシュ法300は、ステップ350からハッシュ挿入ステップ360に進み、ステップ360において、選択されたハッシュコードは画像レコードに紐付けられる。これにより、決定された格子点と関連付けられた選択されたハッシュコードと特徴ベクトルにより示された画像の一部との間の紐付けを格納する。その後、この情報は、ハッシュ検索段階で使用するためにハッシュテーブルに記録される。ステップ360から終了ステップ365に進み、ハッシュ法300は終了する。
格子候補選択
次に、図3の格子候補選択ステップ340で使用されるような格子候補選択方法600を示す図6を参照して、図3の格子候補選択ステップ340を説明する。格子候補選択方法600の目的は、特徴ベクトルを含む囲み領域のどの格子点が特徴ベクトルに対するハッシュコードとして適しているかを決定することである。方法は、開始ステップ605において開始し、候補となる格子点の集合を初期化して空にする初期化ステップ610に進む。方法600の残りのステップは、全ての格子点が処理されるまで囲み領域の各格子点に渡ってループする。ループ制御ステップ620は、全ての格子点が処理されているかをテストする。全ての格子点が処理されている、すなわち「yes」の場合、終了ステップ終了630に進み、候補選択方法は中断し、候補となる格子点の集合が返送される。ステップ620で全ての格子点が処理されているわけではない、すなわち「no」の場合、囲み領域から未処理の格子点を選択する選択ステップ640に進む。
平面決定ステップ650は、囲み領域から超平面を決定する。超平面は、選択された未処理の点を除く囲み領域の全ての格子点を通過する平面である。図4Bの例において、選択された点が格子点430である場合、超平面は平面460である。
図6に戻ると、平面決定ステップ650から距離計算ステップ660に進む。距離計算ステップ660は、特徴ベクトルから超平面までの垂直距離を計算する。超平面の格子点を通過する超平面の単位法線を決定することと、特徴ベクトルと超平面のいずれかの点とが異なる法線のドット積を計算することとにより、垂直距離が計算される。法線は、特異値分解等の方法を使用して計算される。この距離の計算は遅いが、時間は、ハッシュテーブルを更新する時間に影響を及ぼすだけで、システムのリコール速度を決定するハッシュテーブルをクエリする時間には影響を及ぼさない。垂直距離が決定されると、垂直距離をクエリ半径と比較する距離テストステップ670に進む。距離テストステップ670は、クエリ半径が特徴ベクトルから拡張し、超平面を通過して隣接領域に移るかを判定する。クエリ半径が超平面を介して隣接領域まで拡張する場合、選択された点は、隣接領域に共通ではないため、特徴ベクトルに対するハッシュコードとしては適さない。クエリ半径が超平面を介して隣接領域に拡張しない場合、クエリ半径が拡張する何れの隣接領域も、共通の点において選択された点を有する。垂直距離がクエリ距離以下である、すなわちNoであるとステップ670が判定すると、ループ制御ステップ620に戻り、処理すべき残りの格子点がまだ残っていないかを判定する。しかし、ステップ670で垂直距離がクエリ距離より長い、すなわちYesの場合、ハッシュコード追加ステップ680に進む。
ハッシュコード追加ステップ680は、選択された点に対するハッシュコードを決定し、そのハッシュコードを候補となる格子点の集合に追加する。上述したように、ハッシュコード及び格子点は、ハッシュコードを有することにより、格子点を決定できるように紐付けられる。ハッシュコード及び格子点が事実上同一であるため、ハッシュコードが格子点からの情報を使用することも可能である。ハッシュコード追加ステップ680は、点のハッシュコードを決定する既知の方法を使用する。最も標準的なソフトウェアライブラリは、JavaにおけるArrays.hashCode方法等の適切な関数を提供する。あるいは、格子点を整数でラベル付けする既知の方法のいずれかは、特徴ベクトルが格子点として量子化される点として使用されてもよい。例えば格子座標ベクトルで格子点を示すことにより、数値の配列を格子点に対するハッシュコードとして使用することも可能である。格子座標ベクトルは、格子に対する生成器から構成される基礎に関して格子点の座標を使用する格子点に対して構成される。この場合、ツリー構造又は格子座標ベクトルをレコードと関連付ける当該技術分野において知られている他の構造としてハッシュテーブルを示すことが可能である。
第1の別の格子候補選択
次に、図7のハッシュ決定方法700を参照して、別の格子候補選択方法を説明する。ハッシュ決定方法700は、囲み領域を形成する全ての格子点を処理することなくハッシュ値を選択できるという利点により、図3の格子候補選択ステップ340及びハッシュコード選択ステップ350の双方を置換する。方法は、既に格子点と関連付けられているレコードの数に基づく順序で囲み領域の全てのハッシュコードを処理することで作用する。第1の適切な点が特徴点のハッシュコードとして使用される結果、特徴点は、割り当てられた特徴ベクトルの数が最も少ない適切な格子点に割り当てられる。
ハッシュ決定方法700は、開始ステップ705において開始し、クエリベクトルの周囲の囲み領域を規定する全ての点を受信する格子点受信ステップ710に進む。次に、数判定ステップ720は、既に各点と関連付けられているレコードの数を判定するように、囲み領域の一部を形成する各格子点を処理する。これは、図3のハッシュコード選択ステップ350で上述した同一の処理であるが、720の数判定ステップは、囲み領域の全ての格子点の数を判定する。格子数は、数が最も少ない未処理の格子点を選択する点選択ステップ730で使用される。格子点が選択されると、点は、特徴ベクトルを格子点にハッシュすることが許容されるかを確認される。点選択ステップ730は、適切な格子点が発見されるまで継続するループの始点である。
点線の輪郭で示されたオプションの最近接の点のテスト735は、選択された格子点が特徴ベクトルに最近接する格子点であるかを判定するために次に実行される。選択された点が最近接の点である、すなわちYesの場合、ハッシュ決定方法700は、以下に説明するハッシュステップ770に飛び、そうではない場合には、処理は継続する。本発明の別の実施形態において、特徴ベクトルに最近接する格子点は、クエリ点から囲み領域における各点までの距離を計算することで決定される(図3のステップ330)で決定されたように)。オプションの最近接の点のテスト735が含まれない場合、又はステップ735で選択された点が特徴ベクトルに最近接する格子点ではない、すなわちNoの場合、ハッシュ決定方法700は、図6の平面決定ステップ650及び距離計算ステップ660と同一である2つのステップに継続する。最初に、平面決定ステップ740は、選択された格子点を除く囲み領域の全ての格子点に基づいて平面を形成する。次に、距離計算ステップ750は、平面から入力特徴ベクトルまでの垂直距離を計算する。その後、計算された距離をクエリ半径と比較する距離ステップ760に進む。クエリ半径が特徴ベクトルから平面までの計算された距離より長い、すなわちYesの場合、選択された点は特徴ベクトルをハッシュするのに適さない。この場合、ハッシュ決定方法700は、未処理の点が選択される点選択ステップ730に戻る。クエリ半径が計算された距離以下である、すなわちNoの場合、クエリ半径は平面にまでも及ばず、選択された点は特徴ベクトルをハッシュするのに適する。このような状況は、格子のパラメータが正しく選択されている時にいずれかの囲み領域の少なくとも1つの格子点に対して生じるはずである。格子に対する正確なパラメータを選択することに関するより多くの情報を以下に説明する。この場合、ステップ760からステップ770に進む。
ハッシュ決定方法700は、ハッシュコード選択ステップ350と同様に実行されるハッシュステップ770に進む。ハッシュステップ770は、選択された格子点を入力とし、入力特徴ベクトルに対するハッシュ値を出力として生成する。ステップ770から終了ステップ780に進み、方法700は終了する。
第2の別の格子候補選択
図6の格子候補選択方法600は、図8の選択方法800として代わりに実現されてもよい。選択方法800は、格子候補選択方法600と同一の入力及び出力を有し、開始ステップ805において開始して、最小の囲み領域を規定する全ての格子点を受信する格子候補受信ステップ810に進む。その後、全ての格子点は、リスト形成ステップ820で格子点候補リストをポピュレートするために使用される。候補リストは、コンピュータ1300のメモリ1306又は記憶装置1039に格納される。
選択方法800は、囲み領域の全ての面がテストされるループ段階を開始する。ループ段階は、囲み領域の全ての面が処理されているかを判定する面処理テスト830において開始する。全ての面が処理されている、すなわちYesの場合、選択方法800は、終了ステップ880に進んで終了する。しかし、ステップ830で全ての面が処理されていない、すなわちNoの場合、未処理の面のうちの1つを選択する面選択ステップ840に進む。次に、距離計算ステップ850は、選択された面から特徴ベクトルまでの垂直距離を計算する。これは、図6の距離計算ステップ660のために使用された同一の処理である。計算された距離は、距離テスト860でクエリ半径と比較される。距離がクエリ半径以上、すなわちNoの場合、選択方法800は、面処理ステップ830に戻り、処理すべき囲み領域の面がこれ以上あるかを確認する。ステップ860で距離がクエリ半径より短い、すなわちYesの場合、改良リストステップ870に進み、格子点候補リストを改良する。候補リストは、既存の候補リストと平面を規定する囲み領域の一部であるあらゆる格子点との交点を決定することで改良される。候補リストが囲み領域の全ての格子点である場合、面を形成する格子点との交点は、面の全ての格子点となる。面及び候補リストの双方に共通の点だけが交点により返送される。交点関数の動作により、候補リスト上の点の数が減少する。選択方法800が完了すると、候補リストは、上述したように、更なる処理のためにハッシュ法300において使用される。候補リストは、少なくとも1つの格子点及びせいぜい最小の囲み領域を規定する格子点を含む。
ハッシュテーブルのクエリ
次に、図9を参照して、ハッシュテーブルのクエリ方法900を説明する。ハッシュテーブルのクエリ方法900は、クエリ画像を受信し、ハッシュテーブルに格納されたレコードを探索することであらゆる類似画像を探索する。画像の類似性は、クエリ半径のサイズにより判定され、クエリ半径が長くなるにつれ、類似すると考えられる画像の数は増加する。ハッシュテーブルのクエリ方法900は、同一の特徴空間及びハッシュ法300のために使用された格子を使用する。好適な一実施形態において、使用された格子はA格子である。
ハッシュテーブルのクエリ方法900は、開始ステップ905において開始し、クエリ画像を受信する画像受信ステップ910に進む。クエリ画像からクエリベクトルを計算するクエリベクトル計算ステップ920に進む。一実現例において、クエリベクトル計算ステップ920は、ハッシュ法300とハッシュテーブルのクエリ方法900との間に一貫した結果を提供するために特徴ベクトル計算ステップ320で使用された同一の処理を使用する。いくつかの適応例において、ステップ920で使用されたクエリベクトル計算処理は、特徴ベクトル計算ステップ320で使用された処理と異なってもよい。例えば、可能なクエリ画像の集合に何らかの既知の偏り又は規則性がある場合、クエリベクトル計算ステップはそれを利用するように変更される。一例として、全てのクエリ画像が低品質のウェブカメラから得られるのに対し、データベース画像が高品質のデジタル写真である場合、ベクトル計算ステップは異なる。次に、クエリベクトルは、クエリベクトルを取り囲む領域を決定する格子領域選択ステップ930に渡される。一実現例において、格子領域選択ステップ930は、ハッシュ法300の格子領域選択ステップ330に関連して上述したのと同一の処理を使用する。
次に、囲み領域1000内に配置されたクエリベクトル240を示す図10を参照して、格子領域選択ステップ930の動作を説明する。囲み領域1000は、3つの格子点1010、1020及び1030により規定されたドローネ領域である。図10の図は、例示にすぎず、2次元の例を示す。一般に、本発明の実施形態は、n次元ベクトルに適用可能であり、その場合、格子選択ステップ730は、クエリベクトルを含むドローネ領域を規定するn+1個のA格子点を提供する。
図9に戻ると、囲み領域を規定する選択された格子点は、ステップ930からレコード検索ステップ940に進む。レコード検索ステップ940は、クエリハッシュコードのリストを生成するように各格子点を処理し、囲み領域の各格子点に対するクエリハッシュコードがある。クエリハッシュコードは、候補選択方法600のハッシュコード追加ステップ680でハッシュコードを生成するために適用された同一の方法を使用して生成される。その後、クエリハッシュコードは、ハッシュテーブルからハッシュコードと関連付けられた画像レコードを検索するために使用される。その結果、囲み領域の格子点は、ハッシュ法300において格子点と関連付けられている画像レコードを検索するために使用される。検索された画像レコードの集合は、単にクエリベクトルの周囲のクエリ半径内に配置された特徴と関連付けられたものより大きい。これは、特徴ベクトルがクエリベクトルからクエリ半径より離れた場合でも、含まれた格子点と関連付けられるようになった特徴ベクトルと関連付けられたいくつかのレコードが存在するためである。しかし、検索された画像の集合は、クエリ半径内に配置された全ての画像及び追加画像を含む。追加画像は、後続の処理段階を使用して除外されるか、あるいは検索された画像の集合は、類似画像の集合として適切に使用するのに十分に小さい。これらの類似画像は、類似性の検査のためにユーザに提示される。ユーザは、検索された画像の各々を検討して、画像を類似画像として受容又は拒絶する。
格子のサイジング
上述したように、本発明の一実施形態は、特徴ベクトルに対するハッシュコードを提供するためにA格子の点を使用する。A格子がどのように構成されるかは、画像検索システムの正確な動作にとって重要である。特徴ベクトル1180がドローネ領域1100の中心に配置される図5Aに類似した状況を示す図11の2次元特徴空間を考える。特徴ベクトル1180から拡張するクエリ半径1170が使用されている。格子点間隔に対するクエリ半径1170のサイズのため、クエリ半径1170は、囲み領域1100の全ての3つの平面1115、1125及び1135を越えて隣接ドローネ領域1140、1150及び1160に拡張する。このような状況において、隣接領域1140、1150及び1160のいずれかに配置されたクエリベクトルは、特徴ベクトル1180と関連付けられた画像を類似画像として返送すべきである。しかし、4つ全ての領域1100、1140、1150及び1160に共通の格子点を発見することは不可能である。その結果、検索システムは正確に動作できない。このことから、格子のサイジングとクエリ半径との間に関連があることは明らかである。一実施形態において、クエリ半径に等しい半径を有する球がドローネセルの内部に適合するならば、格子は可能な限り密である。これは、ドローネセルの内半径がクエリ半径rに等しいように格子をサイジングすることに相当する。格子点の間の最短距離の半分は、パッキング半径1190として知られている。それは、格子点を中心位置とするオーバラップしていない球体の最大半径に対応する。格子の尺度は、パッキング半径に関して規定される。パッキング半径rho及び次元数nを有するA格子の場合、格子は、r*sqrt((n+1)*(n/2))/rhoによる乗算を使用してサイズ変更される。同等に、内半径をrに等しくするために、パッキング半径はr*sqrt((n+1)*(n/2))に設定されるべきである。
本発明の一実施形態はA格子を使用するが、他の種類の格子が同等に使用されてもよい。しかし、Z、A、D及びD等の他の格子系の場合、高い精度を保証するため、ドローネセルが大きいために多くの偽陽性一致が返送されることとなり、クエリ時間が長くなる。Z格子等のいくつかの格子系の場合、ドローネセルが多数の格子点から構成されるために多数のクエリハッシュコードが作成され、クエリ時間が長くなる。リーチ格子等のいくつかの格子は、この問題を回避するが、所定の特徴ベクトルに対する囲みドローネ領域を決定するために時間のかかる方法を必要とするため、同様にクエリ時間が長くなる。
利点
格子を有する2次元特徴空間を示す図12A及び図12Bにおいて、検索システムの利点が示される。図12Aにおいて、8個のレコードが格子点と関連付けられており、そのうちの2つのレコードが各格子点1220、1230、1250及び1260と関連付けられる。図12Bは、当該特徴点に依存してハッシュ法300を使用して生じる別のハッシュ結果を示す。このような状況において、レコードのいくつかは、図12Aにおいて使用されなかった格子点と関連付けられている。例えば格子点1220は、図12Aにおいて2つのレコードを有するが、図12Bでは1つのレコードしか有さない。格子点1220と関連付けられた第2のレコードは、代わりに点1210と関連付けられる。これは、2つの格子点1210と1220との間に形成された平面から特徴ベクトルまでの距離がクエリ半径より短かった場合に行われる。図12Bにおいて使用された各格子点は、図12Aにおける2つのレコードの平均と比較して1.3個のレコードを平均する。検索システムの利点は、全ての関連画像レコードが配置されることを保証しつつ所定のクエリベクトルに対してより少ない画像レコードが返送される時に現れる。レコードとハッシュコードとの間に1つの関連付けしか格納されないため、格子の使用は、LSH等の多数の登録戦略よりもメモリ効率が良い。
別の実施形態
画像用の検索システムが上述されたが、他の種類のデータを検索するためにそのシステムを使用することも可能である。例えば特徴ベクトルは、テキスト又はテキストの一部に対して生成される。テキストに対して特徴ベクトルを生成する1つの方法は、テキストのいわゆるBag−Of−Words表現を使用することである。特徴ベクトルは、各単語又は単語列を単語又は列又は単語の頻度に設定された座標値を有する次元とみなすことにより、Bag−Of−Wordsから生成される。その場合、これは主成分分析(PCA)等の次元縮小を受ける恐れがあり、テキストに対して特徴ベクトルを生成する。検索システムは、サンプルテキストを含むクエリを使用することにより、テキストと関連付けられたレコードに迅速にアクセスするために使用される。別の適応例において、特徴ベクトルはペーパーフィンガープリントであってもよい。ペーパーフィンガープリントは、繊維構造から紙を識別するために使用される数値の配列である。検索システムは、ペーパーフィンガープリントを含むクエリを使用することにより、個々の紙と関連付けられたレコードに迅速にアクセスするために使用される。
ハッシュ法の別の一実施形態は別の囲み領域を使用する。1つの代替例は、頂点が格子点ではなく穴である囲み領域を規定するためにボロノイセルを使用する。別の実施形態において、格子領域選択方法330は、特徴ベクトルの周囲のボロノイ領域を規定する「穴」を決定する。これらの穴は格子点の代わりに使用され、図8に示された候補選択方法は、ボロノイセルの面からの特徴ベクトルの距離に従って候補となる穴を選択するために適用される。ステップ350は、候補選択ステップにより選択された穴に対応するハッシュコードを選択する。図9のクエリ処理は変化はなく、クエリベクトルを含む領域は同一の方法を使用して決定され、囲み領域の各点に対するハッシュコードと関連付けられたレコードが検索される。図4Aの格子を検査することにより、ドローネセルの場合の3個の点と比較して、2次元のボロノイセルが不図示の6個の格子点から形成されることを示す。尚、この別の本実施形態は主な実施形態と機能的に同等である。しかし、囲み領域の特性は各式において異なる。
検索システムの別の一実施形態は、ハッシュコード選択ステップ350及びハッシュ挿入ステップ360の間に再ハッシュ技術を使用する。別の本実施形態において、ハッシュコードは、別のハッシュコードのリストが維持されている間に特徴ベクトルに対して選択される。レコードがハッシュテーブルに挿入される際、別のハッシュコードもレコードに紐付けられる。別のハッシュコードをハッシュテーブルに含むことにより、レコードを再配分できる。1つのハッシュコードがコードと関連付けられた多数のレコードを有することが分かる場合、ハッシュコードと関連付けられたレコードのいくつかは、別のハッシュコードに再配分される。再ハッシュ技術により、後続のハッシュテーブルの処理中に多数の関連レコードを有するハッシュコードを変更できる。更なる代替例が別のハッシュコードを格納することを省略する代わりに、再配分処理は、レコードに対する別のハッシュコードを決定するためにハッシュ法300を再度適用する。
産業上の利用可能性
説明した構成は、コンピュータ産業及びデータ処理産業、並びに特に画像処理産業に対して適用可能である。
上記の記述は本発明のいくつかの実施形態のみを説明し、本発明の範囲及び趣旨から逸脱せずに、いくつかの実施形態に対して変形及び/又は変更を行なうことができる。実施形態は、限定するものではなく例示するものである。
本明細書に関して、「備える」という用語は、「主に含むが、単独で必要ではない」、あるいは「有する」又は「含む」ことを意味し、「のみから構成される」ことを意味しない。「備える」の語形変化は、それに対応して意味の変化を示す。

Claims (23)

  1. ハッシュコードを画像の一部に紐付ける方法であって、
    多次元格子の複数の格子点を選択して、前記画像の一部を示す特徴ベクトルの周囲に最小の囲み領域を形成するステップと、
    分布基準に従って前記選択された複数の格子点から格子点を決定するステップと、
    前記特徴ベクトルを前記決定された格子点に割り当てるステップと、
    前記決定された格子点と関連付けられたハッシュコードと、前記画像の一部と、の間の紐付けを格納するステップと、
    を備え
    前記決定された格子点は、前記最小の囲み領域及び前記特徴ベクトルのクエリ半径距離内に配置された前記最小の囲み領域に隣接する前記格子の領域に共通であり、
    前記特徴ベクトルは、クエリベクトルの前記クエリ半径内に配置される場合に一致している
    ことを特徴とする方法。
  2. 前記分布基準は、前記複数の格子点の少なくとも1つに既に割り当てられている多数の特徴ベクトルの数に基づくことを特徴とする請求項1記載の方法。
  3. 前記決定するステップは、
    前記複数の格子点の各格子点に既に割り当てられている多数の特徴ベクトルの数を決定するサブステップと、
    前記決定された数に基づいて前記複数の格子点から格子点を選択するサブステップと、
    前記選択された格子点を除く前記複数の格子点の格子点から形成された平面を決定するサブステップと、
    前記決定された平面から前記選択された格子点までの距離を計算するサブステップと、
    前記計算された距離を前記クエリ半径と比較するサブステップと、
    前記比較に基づいて、前記選択された格子点を前記決定された格子点として使用するサブステップと
    を含むことを特徴とする請求項2記載の方法。
  4. 前記クエリベクトルはクエリ画像の一部を示すことを特徴とする請求項1記載の方法。
  5. 前記クエリ半径は、前記クエリ画像の一部と、一致していると考えられる別の画像と、の間の最大相違の基準であることを特徴とする請求項4記載の方法。
  6. 前記最小の囲み領域は、前記多次元格子のドローネ領域であることを特徴とする請求項1記載の方法。
  7. コンピュータプログラムを格納する記憶装置と、
    前記プログラムを実行するプロセッサと
    を備え、ハッシュコードを画像の一部に紐付けるシステムであって、
    前記プログラムは、
    多次元格子の複数の格子点を選択して、前記画像の一部を示す特徴ベクトルの周囲に最小の囲み領域を形成する方法ステップと、
    分布基準に従って前記選択された複数の格子点から格子点を決定する方法ステップと、
    前記特徴ベクトルを前記決定された格子点に割り当てる方法ステップと、
    前記決定された格子点と関連付けられたハッシュコードと、前記画像の一部と、の間の紐付けを格納する方法ステップと
    を実行するコードを含み、
    前記決定された格子点は、前記最小の囲み領域及び前記特徴ベクトルのクエリ半径距離内に配置された前記最小の囲み領域に隣接する前記格子の領域に共通であり、
    前記特徴ベクトルは、クエリベクトルの前記クエリ半径内に配置される場合に一致している
    ことを特徴とするシステム。
  8. ハッシュコードを画像の一部に紐付ける方法を実行するようにプロセッサに指示するコンピュータプログラムを記録したコンピュータ可読記憶媒体であって、前記コンピュータプログラムは、
    多次元格子の複数の格子点を選択して、前記画像の一部を示す特徴ベクトルの周囲に最小の囲み領域を形成するステップと、
    分布基準に従って前記選択された複数の格子点から格子点を決定するステップと、
    前記特徴ベクトルを前記決定された格子点に割り当てるステップと、
    前記決定された格子点と関連付けられたハッシュコードと、前記画像の一部と、の間の紐付けを格納するステップと
    を実行するコードを含み、
    前記決定された格子点は、前記最小の囲み領域及び前記特徴ベクトルのクエリ半径距離内に配置された前記最小の囲み領域に隣接する前記格子の領域に共通であり、
    前記特徴ベクトルは、クエリベクトルの前記クエリ半径内に配置される場合に一致している
    ことを特徴とするコンピュータ可読記憶媒体。
  9. ハッシュテーブルの格納及び検索の方法であって、
    少なくとも1つのレコードを格納するために登録フェーズを実行する登録ステップと、
    前記ハッシュテーブルから前記格納されたレコードのうち少なくとも1つを検索するためにクエリフェーズを実行する検索ステップと
    を備え
    前記登録ステップは、前記格納されたレコード毎に、
    多次元格子の格子点により形成された特徴ベクトルの周囲の最小の囲み領域であるドローネ領域を該多次元格子から選択するステップと、
    前記ドローネ領域から候補となる格子点を識別するステップと、
    前記候補となる格子点のうち1つを前記特徴ベクトルに対するハッシュコードとして選択するステップと、
    前記レコードを前記ハッシュテーブルの前記ハッシュコードと関連付けるステップと
    を含み、
    前記検索ステップは、
    探索基準を満たす特徴ベクトルと関連付けられる前記ハッシュテーブルのハッシュコードを識別するステップと、
    前記識別されたハッシュコードのうち少なくとも1つに割り当てられた少なくとも1つのレコードを検索するステップと
    を含むことを特徴とする方法。
  10. 前記ドローネ領域は、n次元特徴空間に対してn+1個の格子点を含むことを特徴とする請求項記載の方法。
  11. 前記多次元格子は、A格子、D格子、A*格子、D*格子、Z格子、及びリーチ格子から構成される格子のグループから選択されることを特徴とする請求項記載の方法。
  12. 前記候補となる格子点のうちの1つを前記特徴ベクトルに対するハッシュコードとして選択する前記ステップは、前記候補となる格子点の各々に割り当てられた多数の特徴ベクトルに基づくことを特徴とする請求項記載の方法。
  13. 各特徴ベクトルは、画像の一部、テキスト、又はペーパーフィンガープリントから導出されることを特徴とする請求項9記載の方法。
  14. 前記探索基準は、クエリベクトル及びクエリ半径により規定されたクエリ領域に基づいており、
    また、前記識別されたハッシュコードは前記クエリ領域内に配置されることを特徴とする請求項9記載の方法。
  15. 前記クエリベクトルはクエリ画像から導出されることを特徴とする請求項14記載の方法。
  16. コンピュータプログラムを格納する記憶装置と、
    前記プログラムを実行するプロセッサと
    を備えるハッシュテーブルの格納及び検索のシステムであって、前記プログラムは、
    少なくとも1つのレコードを格納するために登録フェーズを実行する登録ステップと、
    前記ハッシュテーブルから前記格納されたレコードのうち少なくとも1つを検索するためにクエリフェーズを実行する検索ステップと
    を実行するコードを含み、
    前記登録ステップは、前記格納されたレコード毎に、
    多次元格子の格子点により形成された特徴ベクトルの周囲の最小の囲み領域であるドローネ領域を該多次元格子から選択するステップと、
    前記ドローネ領域から候補となる格子点を識別するステップと、
    前記候補となる格子点のうち1つを前記特徴ベクトルに対するハッシュコードとして選択するステップと、
    前記レコードを前記ハッシュテーブルの前記ハッシュコードと関連付けるステップと
    を含み、
    前記検索ステップは、
    探索基準を満たす特徴ベクトルと関連付けられる前記ハッシュテーブルのハッシュコードを識別するステップと、
    前記識別されたハッシュコードのうち少なくとも1つに割り当てられた少なくとも1つのレコードを検索するステップと
    を含む
    ことを特徴とするシステム。
  17. ハッシュテーブルの格納及び検索の方法を実行するようにプロセッサに指示するコンピュータプログラムを記録したコンピュータ可読記憶媒体であって、前記コンピュータプログラムは、
    少なくとも1つのレコードを格納するために登録フェーズを実行する登録ステップと、
    前記ハッシュテーブルから前記格納されたレコードのうち少なくとも1つを検索するためにクエリフェーズを実行する検索ステップと
    を実行するコードを含み、
    前記登録ステップは、前記格納されたレコード毎に、
    多次元格子の格子点により形成された特徴ベクトルの周囲の最小の囲み領域であるドローネ領域を該多次元格子から選択するステップと、
    前記ドローネ領域から候補となる格子点を識別するステップと、
    前記候補となる格子点のうち1つを前記特徴ベクトルに対するハッシュコードとして選択するステップと、
    前記レコードを前記ハッシュテーブルの前記ハッシュコードと関連付けるステップと
    を含み、
    前記検索ステップは、
    探索基準を満たす特徴ベクトルと関連付けられる前記ハッシュテーブルのハッシュコードを識別するステップと、
    前記識別されたハッシュコードのうち少なくとも1つに割り当てられた少なくとも1つのレコードを検索するステップと
    を含む
    ことを特徴とするコンピュータ可読記憶媒体。
  18. ハッシュコードを画像の一部に紐付けてハッシュテーブルに格納する方法であって、
    前記画像の一部を示す特徴ベクトルに基づいて複数のハッシュコードの候補を選択するステップと、
    前記選択された複数のハッシュコードの候補の中から、既に紐付けられている特徴ベクトルが最も少ないハッシュコードを、前記画像の一部に紐付けるべきハッシュコードとして決定するステップと、
    前記決定されたハッシュコードと、前記画像の一部と、の間の紐付けを前記ハッシュテーブルに格納するステップと
    を備えることを特徴とする方法。
  19. 前記複数のハッシュコードの候補は、前記特徴ベクトルの配置された多次元特徴空間において、該特徴ベクトルを囲む領域を構成する複数の格子点の中から、該特徴ベクトルの位置に基づいて決定されることを特徴とする請求項18記載の方法。
  20. 前記複数のハッシュコードの候補は、前記特徴ベクトルの配置された多次元特徴空間において、該特徴ベクトルを囲む領域を構成する複数の格子点の中から、前記特徴ベクトルの位置を中心とした所定の半径で規定される領域に基づいて決定されることを特徴とする請求項19記載の方法。
  21. 前記特徴ベクトルを囲む領域はドローネ領域であることを特徴とする請求項19記載の方法。
  22. ハッシュコードを画像の一部に紐付けてハッシュテーブルに格納する装置であって、
    前記画像の一部を示す特徴ベクトルに基づいて複数のハッシュコードの候補を選択する手段と、
    前記選択された複数のハッシュコードの候補の中から、既に紐付けられている特徴ベクトルが最も少ないハッシュコードを、前記画像の一部に紐付けるべきハッシュコードとして決定する手段と、
    前記決定されたハッシュコードと、前記画像の一部と、の間の紐付けを前記ハッシュテーブルに格納する手段と
    を備えることを特徴とする装置。
  23. ハッシュコードを画像の一部に紐付けてハッシュテーブルに格納するコンピュータを、
    前記画像の一部を示す特徴ベクトルに基づいて複数のハッシュコードの候補を選択する手段、
    前記選択された複数のハッシュコードの候補の中から、既に紐付けられている特徴ベクトルが最も少ないハッシュコードを、前記画像の一部に紐付けるべきハッシュコードとして決定する手段、
    前記決定されたハッシュコードと、前記画像の一部と、の間の紐付けを前記ハッシュテーブルに格納する手段
    として機能させるためのコンピュータプログラム。
JP2014532187A 2011-09-30 2012-09-25 画像検索方法 Active JP5976115B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
AU2011226985A AU2011226985B2 (en) 2011-09-30 2011-09-30 Image retrieval method
AU2011226985 2011-09-30
PCT/AU2012/001154 WO2013044295A1 (en) 2011-09-30 2012-09-25 Image retrieval method

Publications (2)

Publication Number Publication Date
JP2015501017A JP2015501017A (ja) 2015-01-08
JP5976115B2 true JP5976115B2 (ja) 2016-08-23

Family

ID=47994014

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014532187A Active JP5976115B2 (ja) 2011-09-30 2012-09-25 画像検索方法

Country Status (4)

Country Link
US (1) US10289702B2 (ja)
JP (1) JP5976115B2 (ja)
AU (2) AU2011226985B2 (ja)
WO (1) WO2013044295A1 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9141676B2 (en) * 2013-12-02 2015-09-22 Rakuten Usa, Inc. Systems and methods of modeling object networks
US20170039222A1 (en) * 2014-04-29 2017-02-09 Farrow Norris Pty Ltd Method and system for comparative data analysis
US10157178B2 (en) * 2015-02-06 2018-12-18 International Business Machines Corporation Identifying categories within textual data
CN104820696B (zh) * 2015-04-29 2018-06-05 山东大学 一种基于多标签最小二乘哈希算法的大规模图像检索方法
US10885098B2 (en) * 2015-09-15 2021-01-05 Canon Kabushiki Kaisha Method, system and apparatus for generating hash codes
GB2551504A (en) * 2016-06-20 2017-12-27 Snell Advanced Media Ltd Image Processing
US20190147620A1 (en) * 2017-11-14 2019-05-16 International Business Machines Corporation Determining optimal conditions to photograph a point of interest
US10991120B2 (en) * 2017-11-14 2021-04-27 Samsung Electronics Co., Ltd. Method and apparatus for processing a plurality of undirected graphs
KR20210042752A (ko) * 2019-10-10 2021-04-20 삼성전자주식회사 이미지 백업을 수행하는 컴퓨팅 시스템 및 이미지 백업 방법
US11507616B2 (en) 2020-09-03 2022-11-22 General Electric Company Inspection systems and methods including image retrieval module
US11727052B2 (en) 2020-09-03 2023-08-15 General Electric Company Inspection systems and methods including image retrieval module

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6122628A (en) * 1997-10-31 2000-09-19 International Business Machines Corporation Multidimensional data clustering and dimension reduction for indexing and searching
JP2002539528A (ja) * 1999-03-05 2002-11-19 キヤノン株式会社 データベース注釈付け及び検索
JP4284288B2 (ja) * 2005-03-10 2009-06-24 株式会社東芝 パターン認識装置及びその方法
WO2007015228A1 (en) * 2005-08-02 2007-02-08 Mobixell Networks Content distribution and tracking
US7949186B2 (en) * 2006-03-15 2011-05-24 Massachusetts Institute Of Technology Pyramid match kernel and related techniques
TW200818981A (en) * 2006-08-30 2008-04-16 Sumitomo Chemical Co Organic electroluminescence device
KR101247891B1 (ko) 2008-04-28 2013-03-26 고리츠다이가쿠호징 오사카후리츠다이가쿠 물체 인식용 화상 데이터베이스의 작성 방법, 처리 장치 및 처리용 프로그램
US8422793B2 (en) * 2009-02-10 2013-04-16 Osaka Prefecture University Public Corporation Pattern recognition apparatus
AU2012202352A1 (en) * 2012-04-20 2013-11-07 Canon Kabushiki Kaisha Method, system and apparatus for determining a hash code representing a portion of an image

Also Published As

Publication number Publication date
US10289702B2 (en) 2019-05-14
JP2015501017A (ja) 2015-01-08
US20140236963A1 (en) 2014-08-21
AU2014201891B2 (en) 2015-05-07
AU2011226985A1 (en) 2013-04-18
AU2011226985B2 (en) 2014-05-01
AU2014201891A1 (en) 2014-04-17
WO2013044295A1 (en) 2013-04-04

Similar Documents

Publication Publication Date Title
JP5976115B2 (ja) 画像検索方法
US20200356901A1 (en) Target variable distribution-based acceptance of machine learning test data sets
AU2012202352A1 (en) Method, system and apparatus for determining a hash code representing a portion of an image
US9053386B2 (en) Method and apparatus of identifying similar images
Yagoubi et al. Massively distributed time series indexing and querying
US7613701B2 (en) Matching of complex nested objects by multilevel hashing
US10878087B2 (en) System and method for detecting malicious files using two-stage file classification
US8872828B2 (en) Method for generating a graph lattice from a corpus of one or more data graphs
US11100073B2 (en) Method and system for data assignment in a distributed system
EP3292481B1 (en) Method, system and computer program product for performing numeric searches
JP6607061B2 (ja) 情報処理装置、データ比較方法、およびデータ比較プログラム
US20210149924A1 (en) Clustering of data records with hierarchical cluster ids
US10885098B2 (en) Method, system and apparatus for generating hash codes
US20210263903A1 (en) Multi-level conflict-free entity clusters
CN104933096A (zh) 数据库的异常键识别方法、装置与数据系统
CN110083731B (zh) 图像检索方法、装置、计算机设备及存储介质
CN111783088A (zh) 一种恶意代码家族聚类方法、装置和计算机设备
US11755671B2 (en) Projecting queries into a content item embedding space
JP2014048989A (ja) BoF表現生成装置及びBoF表現生成方法
US20220172455A1 (en) Systems and methods for fractal-based visual searching
CN115544257A (zh) 网盘文档快速分类方法、装置、网盘及存储介质
CN110321435B (zh) 一种数据源划分方法、装置、设备和存储介质
US20240095244A1 (en) Method and information processing device
EP3588349B1 (en) System and method for detecting malicious files using two-stage file classification
CN118035180A (zh) 元数据补全方法及装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151002

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151201

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160621

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160719

R151 Written notification of patent or utility model registration

Ref document number: 5976115

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151