(57)【特許請求の範囲】
【請求項１】
多数のリファレンス画像の中から、クエリ画像に類似したリファレンス画像を検索する画像検索装置であって、
ハッシュ値毎に、バイナリ特徴ベクトルの量子化に用いるハッシュコードブックを記憶するハッシュコードブック記憶手段と、
前記ハッシュ値毎に、情報量（エントロピー）の高いビット番号集合を記憶するビット番号コードブック記憶手段と、
前記クエリ画像及び前記リファレンス画像からバイナリ特徴ベクトルの集合を抽出する局所特徴抽出手段と、
前記ハッシュコードブック記憶手段を用いて、前記バイナリ特徴ベクトルに、最も類似するハッシュ値を出力するハッシュ手段と、
前記ビット番号コードブック記憶手段における当該ハッシュ値のビット番号集合を参照して、前記バイナリ特徴ベクトルから部分ビット列を選択するビット列生成手段と、
前記ハッシュ値毎に、前記リファレンス画像のビット列を対応付けて記憶する転置インデックス記憶手段と、
前記転置インデックス記憶手段を用いて、前記クエリ画像のビット列からリファレンス画像を検索する検索手段と
を有することを特徴とする画像検索装置。
【請求項２】
多数のリファレンス画像における大量のバイナリ特徴ベクトルをクラスタリングし、クラスタ毎の代表バイナリ特徴ベクトルと、その識別子であるハッシュ値とを、前記ハッシュコードブック記憶手段へ記憶させるハッシュコードブック生成手段を更に有することを特徴とする請求項１に記載の画像検索装置。
【請求項３】
前記ハッシュコードブック生成手段は、クラスタリングに、k-means法又はk-medoids法を用いることを特徴とする請求項２に記載の画像検索装置。
【請求項４】
同一ハッシュ値の１つのクラスタに含まれる多数のバイナリ特徴ベクトルについて、当該ビットの情報量が高く、且つ、当該ビットと他のビットとの間で相関が小さいビット番号を並べたビット番号列を導出し、ハッシュ値毎のそのビット番号列を前記ビット番号コードブック記憶手段へ記憶させるビット番号コードブック生成手段を更に有することを特徴とする請求項２又は３に記載の画像検索装置。
【請求項５】
前記ビット番号コードブック生成手段は、前記ビット番号列に、１つのビット番号ずつ収容するために、
同一ハッシュ値の１つのクラスタに含まれる多数のバイナリ特徴ベクトルについて、各ビット（０／１）の平均値が０．５に近いビット（情報量が高いビット）から順に並べた仮ビット番号列を生成し、
前記仮ビット番号列の上位ビットから順に、既にビット番号列に収容された他のビットと間の相関係数の絶対値が所定閾値以下であれば、当該上位ビットのビット番号を前記ビット番号列に収容し、これを前記ビット番号列が所定数となるまで収容する
ことを特徴とする請求項４に記載の画像検索装置。
【請求項６】
前記転置インデックス記憶手段は、リファレンス画像について、ハッシュ値LIDn毎に、リファレンス画像識別子と前記ビット列との複数の組を、リスト形式で対応付けた転置インデックスを登録したものである
ことを特徴とする請求項１から５のいずれか１項に記載の画像検索装置。
【請求項７】
前記検索手段は、
クエリ画像についてハッシュ値LIDn及びの複数の組を入力し、
前記クエリ画像のハッシュ値とビット列の各組について、当該ハッシュ値に対応する転置インデックスのリストを取得し、
前記クエリ画像ビット列と、取得したリスト中に含まれるリファレンス画像のビット列との間の非類似度を算出し、
前記非類似度が低いほど高くなるスコア値を算出し、
当該リファレンス画像毎に該スコア値を累積加算し、
前記スコア値が最も高くなるリファレンス画像を検索結果として出力する
ことを特徴とする画像検索装置。
【請求項８】
前記検索手段は、非類似度が小さい上位所定件数(K)に相当するスコア値のみを当該リファレンス画像に累積加算することを特徴とする請求項７に記載の画像検索装置。
【請求項９】
前記検索手段について、前記上位所定件数(K)は、予め設定された固定数か、又は、予め設定された非類似度に関する閾値THに基づいて当該非類似度が閾値TH以下となる非類似度の数であることを特徴とする請求項７に記載の画像検索装置。
【請求項１０】
前記検索手段における、前記上位所定件数(K)のうちi件目に対応する加算スコアについて、K番目の非類似度が、i番目の非類似度と比較して大きい場合に、加算スコアの値が大きく設定される
ことを特徴とする請求項７に記載の画像検索装置。
【請求項１１】
前記検索手段について、前記上位所定件数(K)のうちi件目に対応する加算スコアは、
（１）K番目の非類似度の二乗からi番目の非類似度の二乗を引いたものとするか、
（２）K番目の非類似度の二乗とi番目の非類似度の二乗の比から1を引いたものとするか、
（３）K番目の非類似度とi番目の非類似度の比の二乗から1を引いたものとするか、又は、
（４）K番目の非類似度とi番目の非類似度の比から1を引いたものの二乗とする
ことを特徴とする請求項７に記載の画像検索装置。
【請求項１２】
前記局所特徴抽出手段は、ＯＲＢ(Oriented FAST and Rotated BRIEF)、ＦＲＥＡＫ(Fast Retina Keypoint)、又はＢＲＩＳＫ (Binary Robust Independent Elementary Features)に基づくバイナリ特徴ベクトルを抽出する、
ことを特徴とする請求項１から１１のいずれか１項に記載の画像検索装置。
【請求項１３】
多数のリファレンス画像の中から、クエリ画像に類似したリファレンス画像を検索する装置に搭載されたコンピュータを機能させるプログラムであって、
ハッシュ値毎に、バイナリ特徴ベクトルの量子化に用いるハッシュコードブックを記憶するハッシュコードブック記憶手段と、
前記ハッシュ値毎に、情報量（エントロピー）の高いビット番号集合を記憶するビット番号コードブック記憶手段と、
前記クエリ画像及び前記リファレンス画像からバイナリ特徴ベクトルの集合を抽出する局所特徴抽出手段と、
前記ハッシュコードブック記憶手段を用いて、前記バイナリ特徴ベクトルに、最も類似するハッシュ値を出力するハッシュ手段と、
前記ビット番号コードブック記憶手段における当該ハッシュ値のビット番号集合を参照して、前記バイナリ特徴ベクトルから部分ビット列を選択するビット列生成手段と、
前記ハッシュ値毎に、前記リファレンス画像のビット列を対応付けて記憶する転置インデックス記憶手段と、
前記転置インデックス記憶手段を用いて、前記クエリ画像のビット列からリファレンス画像を検索する検索手段と
してコンピュータを機能させることを特徴とするプログラム。
【請求項１４】
装置を用いて、多数のリファレンス画像の中から、クエリ画像に類似したリファレンス画像を検索する方法であって、
当該装置は、
ハッシュ値毎に、バイナリ特徴ベクトルの量子化に用いるハッシュコードブックを記憶するハッシュコードブック記憶部と、
前記ハッシュ値毎に、情報量（エントロピー）の高いビット番号集合を記憶するビット番号コードブック記憶部と、
前記ハッシュ値毎に、前記リファレンス画像のビット列を対応付けて記憶する転置インデックス記憶部と
を有し、
前記クエリ画像及び前記リファレンス画像からバイナリ特徴ベクトルの集合を抽出する第１のステップと、
前記ハッシュコードブック記憶部を用いて、前記バイナリ特徴ベクトルに、最も類似するハッシュ値を出力する第２のステップと、
前記ビット番号コードブック記憶部における当該ハッシュ値のビット番号集合を参照して、前記バイナリ特徴ベクトルから部分ビット列を選択する第３のステップと、
前記転置インデックス記憶部を用いて、前記クエリ画像のビット列からリファレンス画像を検索する第４のステップと
を有することを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バイナリ特徴ベクトルを用いて画像を検索する技術に関する。
【背景技術】
【０００２】
近年、局所特徴点に基づいた画像認識や検索技術が注目されている。物体認識に用いる特徴ベクトルの抽出アルゴリズムとしては、回転やスケールの変化にロバストな、例えばＳＩＦＴ(Scale-Invariant Feature Transform)（例えば非特許文献１参照）やＳＵＲＦ(Speeded Up Robust Features)が用いられる。例えばＳＩＦＴの場合、１枚の画像からは１２８次元の特徴ベクトルの集合が抽出される。ＳＩＦＴとは、スケールスペースを用いて特徴的な局所領域を解析し、そのスケール変化及び回転に不変となる特徴ベクトルを記述する技術である。一方で、ＳＵＲＦの場合、ＳＩＦＴよりも高速処理が可能であって、１枚の画像から６４次元の特徴ベクトルの集合が抽出される。ＳＩＦＴは、処理コストが高く且つリアルタイムマッチングが困難であるのに対し、ＳＵＲＦは、積分画像を利用することによって処理を高速化している。
【０００３】
一方で、スマートフォンやタブレット端末のような携帯端末が普及する中で、コンテンツ検索処理に対して、更なる省メモリ化及び高速マッチング化が要求されてきている。特に、拡張現実感（Augmented Reality, AR）の用途における画像認識の技術分野によれば、リアルタイムに処理するべく、ＳＩＦＴやＳＵＲＦよりも更に高速にコンテンツを検索することが要求される。このため、バイナリ特徴ベクトル抽出アルゴリズムであるＦＡＳＴ(Features from Accelerated Segment Test)（例えば非特許文献２参照）やＦＲＥＡＫ(Fast Retina Keypoint)（例えば非特許文献３参照）が注目されている。これは、ＳＩＦＴやＳＵＲＦよりも高速に特徴ベクトルが抽出でき、更に抽出される特徴ベクトルもコンパクトにすることができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−２８２５８１号公報
【非特許文献】
【０００５】
【非特許文献１】J. Sivic et al., "Video Google: A Text Retrieval Approach toObject Matching in Videos," in Proc. ICCV, 2003.
【非特許文献２】E. Rublee, V. Rabaud, K. Konolige, and G. Bradski, "ORB: Anefficient alternative to SIFT or SURF," in Proc. ICCV, 2011.
【非特許文献３】A. Alahi, R. Ortiz, and P. Vandergheynst, "FREAK: Fast RetinaKeypoint," in Proc. CVPR, 2012.
【非特許文献４】「相関係数」、[online]、［平成２５年８月３１日検索］、インターネット＜URL:http://ja.wikipedia.org/wiki/%E7%9B%B8%E9%96%A2%E4%BF%82%E6%95%B0＞
【発明の概要】
【発明が解決しようとする課題】
【０００６】
スマートフォンのような携帯端末によれば、撮影したクエリ画像に類似するリファレンス画像を直ぐに検索できるアプリケーションがある。一方で、画像検索（認識）技術によれば、認識対象となる大量のリファレンス情報を、データベースとして予め保持しておく必要がある。そのために、スマートフォンにインストールされる画像検索用アプリケーション自体も、リファレンス情報のデータベースを持つ必要がある。
【０００７】
しかしながら、大量のリファレンス画像を認識しようとするほど、そのデータベースも大容量となり、結果的にそのアプリケーションのサイズ自体も大きくなる。これに対し、ユーザとしては、比較的メモリ容量が小さいスマートフォンに、大容量のアプリケーションをインストールすることに抵抗感を生じやすい。また、データベースが大容量となるほど、画像検索アプリケーションで検索に要する演算処理量（及び演算時間）も大きくなる。
【０００８】
勿論、スマートフォンにインストールされた画像検索用アプリケーションが、ネットワークを介して逐次にデータベースファイルのみをダウンロードすることもできる。しかしながら、データベースファイルの容量が大きくなるほど、そのダウンロードに要する時間も長くなり、結果的にユーザビリティを損なう可能性がある。
【０００９】
そこで、本発明によれば、リファレンス情報のデータベースをできる限り小容量とすると共に、画像検索時の演算処理量も少なくすることができる画像検索装置、プログラム及び方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明によれば、多数のリファレンス画像の中から、クエリ画像に類似したリファレンス画像を検索する画像検索装置であって、
ハッシュ値毎に、バイナリ特徴ベクトルの量子化に用いるハッシュコードブックを記憶するハッシュコードブック記憶手段と、
ハッシュ値毎に、情報量（エントロピー）の高いビット番号集合を記憶するビット番号コードブック記憶手段と、
クエリ画像及びリファレンス画像からバイナリ特徴ベクトルの集合を抽出する局所特徴抽出手段と、
ハッシュコードブック記憶手段を用いて、バイナリ特徴ベクトルに、最も類似するハッシュ値を出力するハッシュ手段と、
ビット番号コードブック記憶手段における当該ハッシュ値のビット番号集合を参照して、バイナリ特徴ベクトルから部分ビット列を選択するビット列生成手段と、
ハッシュ値毎に、リファレンス画像のビット列を対応付けて記憶する転置インデックス記憶手段と、
転置インデックス記憶手段を用いて、クエリ画像のビット列からリファレンス画像を検索する検索手段と
を有することを特徴とする。
【００１１】
本発明の画像検索装置における他の実施形態によれば、
多数のリファレンス画像における大量のバイナリ特徴ベクトルをクラスタリングし、クラスタ毎の代表バイナリ特徴ベクトルと、その識別子であるハッシュ値とを、ハッシュコードブック記憶手段へ記憶させるハッシュコードブック生成手段を更に有することも好ましい。
【００１２】
本発明の画像検索装置における他の実施形態によれば、
ハッシュコードブック生成手段は、クラスタリングに、k-means法又はk-medoids法を用いることも好ましい。
【００１３】
本発明の画像検索装置における他の実施形態によれば、
同一ハッシュ値の１つのクラスタに含まれる多数のバイナリ特徴ベクトルについて、当該ビットの情報量が高く、且つ、当該ビットと他のビットとの間で相関が小さいビット番号を並べたビット番号列を導出し、ハッシュ値毎のそのビット番号列をビット番号コードブック記憶手段へ記憶させるビット番号コードブック生成手段を更に有することも好ましい。
【００１４】
本発明の画像検索装置における他の実施形態によれば、
ビット番号コードブック生成手段は、ビット番号列に、１つのビット番号ずつ収容するために、
同一ハッシュ値の１つのクラスタに含まれる多数のバイナリ特徴ベクトルについて、各ビット（０／１）の平均値が０．５に近いビット（情報量が高いビット）から順に並べた仮ビット番号列を生成し、
仮ビット番号列の上位ビットから順に、既にビット番号列に収容された他のビットと間の相関係数の絶対値が所定閾値以下であれば、当該上位ビットのビット番号をビット番号列に収容し、これをビット番号列が所定数となるまで収容することも好ましい。
【００１５】
本発明の画像検索装置における他の実施形態によれば、
転置インデックス記憶手段は、リファレンス画像について、ハッシュ値LIDn毎に、リファレンス画像識別子とビット列との複数の組を、リスト形式で対応付けた転置インデックスを登録したものであることも好ましい。
【００１６】
本発明の画像検索装置における他の実施形態によれば、
検索手段は、
クエリ画像についてハッシュ値LIDn及びの複数の組を入力し、
クエリ画像のハッシュ値とビット列の各組について、当該ハッシュ値に対応する転置インデックスのリストを取得し、
クエリ画像ビット列と、取得したリスト中に含まれるリファレンス画像のビット列との間の非類似度を算出し、
非類似度が低いほど高くなるスコア値を算出し、
当該リファレンス画像毎に該スコア値を累積加算し、
スコア値が最も高くなるリファレンス画像を検索結果として出力することも好ましい。
【００１７】
本発明の画像検索装置における他の実施形態によれば、
検索手段は、非類似度が小さい上位所定件数(K)に相当するスコア値のみを当該リファレンス画像に累積加算することも好ましい。
【００１８】
本発明の画像検索装置における他の実施形態によれば、
検索手段について、上位所定件数(K)は、予め設定された固定数か、又は、予め設定された非類似度に関する閾値THに基づいて当該非類似度が閾値TH以下となる非類似度の数であることも好ましい。
【００１９】
本発明の画像検索装置における他の実施形態によれば、
検索手段における、上位所定件数(K)のうちi件目に対応する加算スコアについて、K番目の非類似度が、i番目の非類似度と比較して大きい場合に、加算スコアの値が大きく設定されることも好ましい。
【００２０】
本発明の画像検索装置における他の実施形態によれば、
検索手段について、上位所定件数(K)のうちi件目に対応する加算スコアは、
（１）K番目の非類似度の二乗からi番目の非類似度の二乗を引いたものとするか、
（２）K番目の非類似度の二乗とi番目の非類似度の二乗の比から1を引いたものとするか、
（３）K番目の非類似度とi番目の非類似度の比の二乗から1を引いたものとするか、又は、
（４）K番目の非類似度とi番目の非類似度の比から1を引いたものの二乗とする
ことも好ましい。
【００２１】
本発明の画像検索装置における他の実施形態によれば、
局所特徴抽出手段は、ＯＲＢ(Oriented FAST and Rotated BRIEF)、ＦＲＥＡＫ(Fast Retina Keypoint)、又はＢＲＩＳＫ(Binary Robust Independent Elementary Features)に基づくバイナリ特徴ベクトルを抽出することも好ましい。
【００２２】
本発明によれば、多数のリファレンス画像の中から、クエリ画像に類似したリファレンス画像を検索する装置に搭載されたコンピュータを機能させるプログラムであって、
ハッシュ値毎に、バイナリ特徴ベクトルの量子化に用いるハッシュコードブックを記憶するハッシュコードブック記憶手段と、
ハッシュ値毎に、情報量（エントロピー）の高いビット番号集合を記憶するビット番号コードブック記憶手段と、
クエリ画像及びリファレンス画像からバイナリ特徴ベクトルの集合を抽出する局所特徴抽出手段と、
ハッシュコードブック記憶手段を用いて、バイナリ特徴ベクトルに、最も類似するハッシュ値を出力するハッシュ手段と、
ビット番号コードブック記憶手段における当該ハッシュ値のビット番号集合を参照して、バイナリ特徴ベクトルから部分ビット列を選択するビット列生成手段と、
ハッシュ値毎に、リファレンス画像のビット列を対応付けて記憶する転置インデックス記憶手段と、
転置インデックス記憶手段を用いて、クエリ画像のビット列からリファレンス画像を検索する検索手段と
してコンピュータを機能させることを特徴とする。
【００２３】
本発明によれば、装置を用いて、多数のリファレンス画像の中から、クエリ画像に類似したリファレンス画像を検索する方法であって、
当該装置は、
ハッシュ値毎に、バイナリ特徴ベクトルの量子化に用いるハッシュコードブックを記憶するハッシュコードブック記憶部と、
ハッシュ値毎に、情報量（エントロピー）の高いビット番号集合を記憶するビット番号コードブック記憶部と、
ハッシュ値毎に、リファレンス画像のビット列を対応付けて記憶する転置インデックス記憶部と
を有し、
クエリ画像及びリファレンス画像からバイナリ特徴ベクトルの集合を抽出する第１のステップと、
ハッシュコードブック記憶部を用いて、バイナリ特徴ベクトルに、最も類似するハッシュ値を出力する第２のステップと、
ビット番号コードブック記憶部における当該ハッシュ値のビット番号集合を参照して、バイナリ特徴ベクトルから部分ビット列を選択する第３のステップと、
転置インデックス記憶部を用いて、クエリ画像のビット列からリファレンス画像を検索する第４のステップと
を有することを特徴とする。
【発明の効果】
【００２４】
本発明の画像検索装置、プログラム及び方法によれば、リファレンス情報のデータベースをできる限り小容量とすると共に、画像検索時の演算処理量も少なくすることができる。
【図面の簡単な説明】
【００２５】
【図１】本発明における画像検索装置の機能構成図である。
【図２】本発明における検索情報配信サーバの機能構成図である。
【図３】図２の検索情報配信サーバと通信可能な端末の機能構成図である。
【図４】本発明における画像検索処理を表す説明図である。
【図５】本発明におけるビット列の生成を表す説明図である。
【図６】転置インデックス登録部のデータ構造を表す説明図である。
【図７】検索部における処理を表す説明図である。
【図８】本発明における検索部の処理を表すフローチャートである。
【発明を実施するための形態】
【００２６】
以下、本発明の実施の形態について、図面を用いて詳細に説明する。
【００２７】
図１は、本発明における画像検索装置の機能構成図である。
図２は、本発明における検索情報配信サーバの機能構成図である。
図３は、図２の検索情報配信サーバと通信可能な端末の機能構成図である。
【００２８】
画像検索装置１は、大量のリファレンス画像（検索対象画像）を予め入力し、データベース（コードブックやインデックス）を生成し蓄積している。そのために、以下のように２つの実施の形態に区分できる。
（１）画像検索装置（単体）：図１のように、画像検索装置１は、ユーザから多数のリファレンス画像を入力し、そのリファレンス画像に対するデータベースを生成し蓄積する。そして、画像検索装置１は、ユーザからクエリ画像（検索キー画像）を入力し、データベースを用いてそのクエリ画像に対するリファレンス画像を検索し、そのリファレンス画像の検索結果をユーザに対して出力する。
【００２９】
（２）サーバ−クライアント・システム：図２のように、検索情報配信サーバ２は、大量のリファレンス画像を入力し、そのリファレンス画像に対するデータベースを生成し蓄積する。
クライアントとしての端末１は、ネットワークを介して検索情報配信サーバ２から、そのデータベース情報をダウンロードする。そのデータベース情報は、端末１の記憶領域（メモリ空間やディスク空間）に蓄積される。
そして、図３のように、端末１は、ユーザからクエリ画像を入力し、データベースを用いてそのクエリ画像に対するリファレンス画像を検索し、そのリファレンス画像の検索結果をユーザに対して出力する。
【００３０】
図１と、図２及び図３とは、異なるシステム構成となるが、各機能構成部は全く同じである。以下では、代表的に図１を参照して説明する。
【００３１】
図１によれば、画像検索装置１は、ハッシュコードブック記憶部１０１と、ビット番号コードブック記憶部１０２と、転置インデックス記憶部１０３と、局所特徴抽出部１１と、ハッシュ部１２と、ビット列生成部１３と、検索部１４と、ハッシュコードブック生成部１５と、ビット番号コードブック生成部１６とを有する。これら機能構成部は、装置に搭載されたコンピュータを機能させる画像検索用プログラムを実行することによって実現される。例えばスマートフォンで画像を検索する場合、画像検索装置１は、インストール可能な画像検索アプリケーションであってもよい。また、これら機能構成部の処理の流れは、装置を用いた画像検索方法としても理解できる。
【００３２】
図４は、本発明における画像検索処理を表す説明図である。以下では、適宜、図４を参照して説明する。
【００３３】
［局所特徴抽出部１１］
局所特徴抽出部１１は、クエリ画像及びリファレンス画像から、局所特徴のバイナリ特徴ベクトルの集合を抽出する。本発明によれば、バイナリ特徴ベクトルの抽出アルゴリズムとして、ＯＲＢ(Oriented FAST and Rotated BRIEF)又はＦＲＥＡＫ(Fast Retina Keypoint)を用いる。ＯＲＢの場合、１つのコンテンツから２５６ビットのバイナリ特徴ベクトルの集合が抽出される。例えば、高速にマッチングを実行するべく、バイナリコードによる特徴記述としてＢＲＩＥＦ(Binary Robust Independent Elementary Features)がある。本発明によれば、ＢＲＩＥＦに回転不変性を導入した特徴記述をすることができる「ＯＲＢ」を用いる。特に、ＯＲＢによれば、ＳＩＦＴやＳＵＲＦと比較して、同等以上の精度を保持すると共に、数百倍の高速化を実現することができる。
【００３４】
ＯＲＢは、「特徴点検出処理」と「特徴ベクトル記述処理」との２つのステップから構成される。
【００３５】
（特徴点検出処理）
ＯＲＢの特徴点検出処理によれば、高速にキーポイントを検出するためにＦＡＳＴを用いる。また、ＦＡＳＴでは、スケール変化に対してロバストではないため、画像を複数のサイズに変換し、それぞれのサイズの画像から特徴点を抽出する。
また、既存のＦＡＳＴには、回転不変性を得るためのキーポイントのオリエンテーション算出のアルゴリズムがない。そのために、ＯＲＢでは、回転不変性を得るべくOriented FASTを採用している。オリエンテーションを基準として特徴記述をすることによって、入力画像が回転していても、同一なキーポイントは同一な特徴量となって検出することができる。そのために、キーポイントの中心とパッチの輝度の重心の方向ベクトルを用いる。
【００３６】
（特徴ベクトル記述処理）
次に、ＯＲＢにおける特徴ベクトル記述処理によれば、検出された特徴点毎に、ＢＲＩＥＦ特徴ベクトル記述子によってバイナリ特徴ベクトルが抽出される。これらは、特徴点周辺の２箇所のピクセルの輝度の大小関係から求められる。
ＢＲＩＥＦは、バイナリコードによってキーポイントの特徴量記述を実行することができる。ＳＩＦＴやＳＵＲＦによれば、特徴量記述に高次元の実数を用いていた。しかしながら、高次元の実数を用いた場合、メモリ容量の増加と類似度計算の増加と問題となる。そこで、ＯＲＢに基づくＢＲＩＥＦを用いることによって、バイナリコードによって特徴記述することで省メモリ化し、類似度計算にハミング距離を用いることで処理コストの抑制を実現する。
ＢＲＩＥＦによれば、パッチ内においてランダムに選択された２点の輝度差の符号からバイナリコードを生成する。選択するピクセルは、キーポイント位置を中心としたガウス分布に従ってランダムに選択する。ここで、ＯＲＢは、更に高精度にマッチングをさせるために、学習を用いてピクセルを選択している。選択するピクセル位置は、ペアのビット分散が大きく且つＮ組のペアの相関が低い場合に、特徴記述能力が高いバイナリコードとして、特徴記述に使用する。Ｎ組のペアは、Greedyアルゴリズムを用いて絞り込む。
【００３７】
［ハッシュコードブック記憶部１０１］
ハッシュコードブック記憶部１０１は、ハッシュ値ｓ毎に、バイナリ特徴ベクトルの量子化に用いるハッシュコードブックを記憶する。図４によれば、コードブックは、バイナリ特徴ベクトルＢと同一ビット長のコードベクトルＢ1〜ＢSを保存したものである。ＯＲＢのバイナリ特徴ベクトルの場合、例えば２５６ビット長である。
【００３８】
［ハッシュコードブック生成部１５］
ハッシュコードブック生成部１５は、多数のリファレンス画像における大量のバイナリ特徴ベクトルをクラスタリングする。クラスタリングには、ハミング距離を用いたk-medoids法を用いてもよいし、単純にk-means法を用いてもよい。ハッシュコードブック生成部１５は、クラスタ毎の代表バイナリ特徴ベクトルをコードベクトルとし、その識別子であるハッシュ値を対応付けて、ハッシュコードブック記憶部１０１へ記憶させる。
【００３９】
［ハッシュ部１２］
ハッシュ部１２は、ハッシュコードブック記憶部１０１を用いて、局所特徴抽出部１１から出力されたバイナリ特徴ベクトルＢに、最も類似するコードベクトルＢsのハッシュ値LIDを出力する。ハッシュ部１２は、バイナリ特徴ベクトルが類似していれば高い確率で同一のハッシュ値を返すことができる。そのために、同一のハッシュ値を持つバイナリ特徴ベクトルのみをマッチングすることによって高速化を実現できる。
【００４０】
「最も類似した」とは、例えばハミング距離が最も近いものであってもよい。
LID＝argmins ham（Ｂ,Ｂs）
ham（ｘ,ｙ）：ｘとｙとのハミング距離
ハッシュ部１２は、クエリ画像のn（n=1〜N）番目のバイナリ特徴ベクトルのハッシュ値LIDn（＝s）を、ビット列生成部１３へ出力する。
【００４１】
データベースの検索時間は、特徴ベクトルのマッチングに多くの時間がかかることを考慮して、最も類似した特徴ベクトルとのみマッチングすることで高速化を実現する。
【００４２】
［ビット番号コードブック記憶部１０２］
ビット番号コードブック記憶部１０２は、ハッシュ値s毎に、情報量（エントロピー）の高いビット番号集合を記憶する。ビット番号集合は、例えば６４個である。図４によれば、ハッシュ値毎に、バイナリ特徴ベクトルのビット位置を表すビット番号が、情報量の高い順に登録されている。尚、ここで、情報量が高いビット番号の集合が登録されていればよく、必ずしも情報量が高い順である必要はない。
【００４３】
［ビット列生成部１３］
ビット列生成部１３は、ビット番号コードブック記憶部１０２における当該ハッシュ値sのビット番号集合Ｃｓを参照して、バイナリ特徴ベクトルＢから部分ビット列（例えば６４ビット）を選択する。このビット列は、ビット番号集合Ｃsに記述されているビット番号の位置のビットのみを、バイナリ特徴ベクトルＢから取り出して並べたものである。これによって、入力されたバイナリ特徴ベクトルよりも短いビット列が生成されることとなる。これは、バイナリ特徴ベクトル間の識別に寄与するビット列のみを生成し、それ以外のビットを捨てることを意味する。そのビット列のみをコードブックとしてデータベースに保存することによって、データベース自体の容量を小さくすることができると共に、画像検索時の演算処理量も少なくすることができる。
【００４４】
バイナリ特徴ベクトルＢから、ハッシュ値LIDとビット列RCとの組が得られる。
（LID, RC）
LID：log2Ｓビット（Ｓは、ハッシュコードブック記憶部のコードブック数）
RC：L・log2Ｆビット（Ｆは、ビット番号コードブック記憶部のコードブック数）
【００４５】
そして、ビット列生成部１３は、以下の２つの方向で出力する。
（１）当該クエリ画像のバイナリ特徴ベクトルについては、ハッシュ値LIDn毎に、ビット列RCの複数の組を、検索部１４へ出力する。
（２）当該リファレンス画像のバイナリ特徴ベクトルについては、ハッシュ値LIDn毎に、ビット列RCの複数の組を、転置インデックス登録部１０３へ出力する。
尚、LIDnにおけるnは、入力画像のn（n=1〜N）番目のバイナリ特徴ベクトルを表す。
【００４６】
［ビット番号コードブック生成部１６］
ビット番号コードブック生成部１６は、ハッシュ値毎にビット番号列を生成し、そのビット番号列を、ビット番号コードブック記憶部１０２へ記憶させる。ハッシュ値毎にビット列の分布が異なるため、それらの分布に適したビット番号列のコードブックを作成する。その「ビット番号列」は、同一ハッシュ値の１つのクラスタに含まれる多数のバイナリ特徴ベクトルについて、当該ビットの情報量が高く、且つ、当該ビットと他のビットとの間で相関が小さいビット番号を並べたものである。
【００４７】
図５は、本発明におけるビット列の生成を表す説明図である。
【００４８】
ハッシュ値毎に、以下のステップでビット番号列が生成される。
（Ｓ５１）バイナリ特徴ベクトルの全ビットの総当たりで、ビット間の相関係数を算出する。例えばＯＲＢの場合、図５のように２５６ビットの総当たりの相関係数が算出される（例えば非特許文献４参照）。相関係数は、−１〜１の値を取る。i番目のビットとj番目のビットと間の相関係数を、例えば以下では８つのベクトルを用いて算出する例を表す。
（0, 0, 0, 0, 1, 1, 1, 1）
↑ベクトル１のiビット目
↑ベクトル２のiビット目
↑ベクトル３のiビット目
・・・・・
↑ベクトル８のiビット目
（1, 1, 1, 1, 0, 0, 0, 0）
↑ベクトル１のjビット目
↑ベクトル２のjビット目
↑ベクトル３のjビット目
・・・・・
↑ベクトル８のjビット目
この場合、以下のように相関係数が算出される。
（0, 0, 0, 0, 1, 1, 1, 1）<->（1, 1, 1, 1, 0, 0, 0, 0）  相関係数＝-１
同様に、他の例によれば、以下のように相関係数が算出される。
（0, 0, 0, 0, 1, 1, 1, 1）<->（0, 0, 0, 1, 1, 1, 1, 0）  相関係数＝0.5
（0, 0, 0, 0, 1, 1, 1, 1）<->（0, 0, 1, 1, 1, 1, 0, 0）  相関係数＝0
【００４９】
（Ｓ５２）同一ハッシュ値の１つのクラスタに含まれる多数のバイナリ特徴ベクトルについて、ビット番号毎の平均値を算出する。ここで、平均値から、以下のような関係が想定される。
平均値が０に近いほど、両方のビットが”０”である確率が高い。
平均値が０．５に近いほど、両方のビットが反転する確率が高い。
（一方のビットが”１”である場合に、他方のビットが”０”となりやすい）
平均値が１に近いほど、両方のビットが”１”である確率が高い。
【００５０】
（Ｓ５３）各ビット（０／１）の平均値が０．５に近いビット（情報量が高いビット）から順に並べた「仮ビット番号列」を生成する。
【００５１】
（Ｓ５４）仮ビット番号列の上位ビットから順に、既にビット番号列に収容された他のビットと間の相関係数の絶対値が所定閾値以下であれば、当該上位ビットのビット番号をビット番号列に１ビットずつ収容する。これは、ビット間の相関が高いビット同士を選択しないようにすることを意味する。これをビット番号列が所定数（例えば６４ビット）となるまで収容する。
【００５２】
［転置インデックス記憶部１０３］
転置インデックス記憶部１０３は、ハッシュ値LIDn毎に、画像識別子RIDとビット列RCとの組（RID,RCn）をリストとして登録したものである。
【００５３】
図６は、転置インデックス登録部のデータ構造を表す説明図である。
【００５４】
リファレンス画像RIDには、ハッシュ値LIDnとビット列RCnとの複数の組が対応付けられている。
RID  ->  （LID1,RC1）（LID2,RC2）・・・（LIDn,RCn）・・・（LIDN,RCN）
組（LID,RC）毎に、その画像識別子RIDとビット列RCとの組（RID,RC）を、転置インデックスにおけるそのハッシュ値LIDに連結して登録する。
LID1  ->  （RID,RC）（RID,RC）（RID,RC）・・・
LID2  ->  （RID,RC）（RID,RC）（RID,RC）・・・
・・・
LIDn  ->  （RID,RC）（RID,RC）（RID,RC）・・・
・・・
【００５５】
［検索部１４］
検索部１４は、転置インデックス記憶部１０３を用いて、クエリ画像のビット列からリファレンス画像を検索する。入力されるクエリ画像は、ハッシュ値LIDn及びビット列QCnの複数の組からなる。
クエリ符号  ->（LID1,QC1）（LID2,QC2）・・・（LIDn,QCn）・・・（LIDN,QCN）
【００５６】
図７は、検索部における処理を表す説明図である。
図８は、本発明における検索部の処理を表すフローチャートである。
【００５７】
検索部１４は、以下の処理ステップを、リファレンス画像毎に実行し（Ｓ４）、最終的に、最も高いスコア値のリファレンス画像を検索結果として出力する（Ｓ５）。
score[]＝0                                                        （Ｓ０）
for each i＝１〜N
転置インデックスのLIDi番目のリストを取得                      （Ｓ１）
リスト中の組（RID1, RC1）〜（RIDM, RCM）について
クエリ画像に基づく組（QCi, RCj）の距離Ｄijを算出し、
距離と画像識別子の組（Ｄij, RIDj）を作成する            （Ｓ２）
Ｄijを昇順にソートする                                        （Ｓ３）
上位K番目までの組Ｄi'j'を選択する
for each k＝1〜K
k番目のＤi'j'について、score［RCj'］＋＝Ｓ（Ｄi'j',Ｄ）
end for
end for
【００５８】
（Ｓ８０）最初に、初期設定として、変数score[]＝０とする。
【００５９】
検索部１４は、以下のＳ１〜Ｓ３の処理を、入力されたクエリ画像に基づくハッシュ値とビット列の組（LIDi, QCi）毎に、繰り返し実行する（i＝1〜N）。
【００６０】
（Ｓ８１）クエリ画像の各ハッシュ値とビット列の組（LIDi,QCi）について、当該ハッシュ値LIDiに対応する転置インデックスのリスト（RIDj,RCj）・・・を取得する。
【００６１】
（Ｓ８２）転置インデックスの当該ハッシュ値LIDiに並ぶリストの分だけ、以下の処理を繰り返し実行する（j＝1〜M）。
クエリ画像のビット列QCiと、取得したリスト中のリファレンス画像の各ビット列RCjとの間の距離Ｄijを算出する。そして、その距離Ｄijと画像識別子RIDjとの組（Ｄij, RIDj）を作成する。
【００６２】
（Ｓ８３）次に、距離Ｄijと画像識別子RIDjとの組（Ｄij, RIDj）を、距離が短い順（昇順）にソートする。
【００６３】
そして、距離が短い上位所定件数(K)のみを選択する。距離が短いとは、類似度が高いことを意味する。また、上位所定件数(K)は、予め設定された固定数であってもよい。又は、予め設定された距離に関する閾値THに基づいて当該距離が閾値TH以下となる距離の数であってもよい。
【００６４】
具体的には、上位K件の複数の組（Ｄij, RIDj）について、距離が短いほど高くなるスコア値を算出し、それらスコア値を累積加算する。具体的には、k番目の距離Ｄi'j'及びK番目の距離Ｄを用いて、以下のいずれかによって、スコア値を算出する。
Ｓ(Ｄi'j',Ｄ)：k番目の距離を持つ画像への投票スコア値
（１）k番目の距離の二乗から、i番目の距離の二乗を引いたものとする
Ｓ(Ｄi'j',Ｄ)＝Ｄ2−Ｄi'j'2
（２）k番目の距離の二乗とi番目の距離の二乗の比から、1を引いたものとする
Ｓ(Ｄi'j',Ｄ)＝Ｄ2／Ｄi'j'2−１
（３）k番目の距離とi番目の距離の比の二乗から、1を引いたものとする
Ｓ(Ｄi'j',Ｄ)＝(Ｄ／Ｄi'j')2−１
（４）k番目の距離とi番目の距離の比から1を引いたものの二乗とする
Ｓ(Ｄi'j',Ｄ)＝(Ｄ／Ｄi'j'−１)2
【００６５】
（Ｓ８４）当該リファレンス画像毎に該スコア値を累積加算する。次のリファレンス画像について、Ｓ１〜Ｓ３を繰り返す。
【００６６】
（Ｓ８５）最終的に、スコア値が最も高くなるリファレンス画像を、検索結果として出力する。
【００６７】
以上、詳細に説明したように、本発明の画像検索装置、システム、プログラム及び方法によれば、リファレンス情報のデータベースをできる限り小容量とすると共に、画像検索時の演算処理量も少なくすることができる。
【００６８】
前述した本発明の種々の実施形態について、本発明の技術思想及び見地の範囲の種々の変更、修正及び省略は、当業者によれば容易に行うことができる。前述の説明はあくまで例であって、何ら制約しようとするものではない。本発明は、特許請求の範囲及びその均等物として限定するものにのみ制約される。
【符号の説明】
【００６９】
１  画像検索装置、端末
１０１  ハッシュコードブック記憶部
１０２  ビット番号コードブック記憶部
１０３  転置インデックス記憶部
１１  局所特徴抽出部
１２  ハッシュ部
１３  ビット列生成部
１４  検索部
１５  ハッシュコードブック生成部
１６  ビット番号コードブック生成部
２  検索情報配信サーバ
【図１】
0006041439.tif 000002
【図２】
0006041439.tif 000003
【図３】
0006041439.tif 000004
【図４】
0006041439.tif 000005
【図５】
0006041439.tif 000006
【図６】
0006041439.tif 000007
【図７】
0006041439.tif 000008
【図８】
0006041439.tif 000009