(57)【特許請求の範囲】
【請求項１】
第１画像および第２画像のそれぞれに複数設定された特徴領域の特徴を示すビット列を記憶する記憶部と、
演算部と、
を有し、
前記演算部は、
前記ビット列のビット位置から、所定値が設定された数が、前記第１画像および前記第２画像におけるすべての特徴領域の総数の１／２より大きい所定閾値以上である特定ビット位置を特定し、
前記第１画像および前記第２画像におけるすべての特徴領域の前記ビット列における前記特定ビット位置の値を反転することで、当該すべての特徴領域についての変換ビット列を生成し、
前記第１画像のそれぞれの特徴領域と類似する類似特徴領域を、前記第２画像の特徴領域の中から特徴領域間の前記変換ビット列のハミング距離に基づいて探索する探索処理を実行し、前記探索処理では、前記第１画像の各特徴領域についてハミング距離の計算対象とする前記第２画像の特徴領域を、前記変換ビット列のノルムが前記第１画像の各特徴領域についての前記変換ビット列のノルムから一定範囲に含まれる特徴領域に限定する、
画像処理装置。
【請求項２】
前記記憶部は、複数の前記第２画像のそれぞれに複数設定された特徴領域の特徴を示す前記ビット列を記憶し、
前記演算部は、
前記特定ビット位置の特定では、前記所定値が設定された数が、前記第１画像および複数の前記第２画像におけるすべての特徴領域の総数の１／２より大きい所定の判定閾値以上であるビット位置を前記特定ビット位置として特定し、
前記変換ビット列の生成では、前記第１画像および複数の前記第２画像におけるすべての特徴領域の前記ビット列における前記特定ビット位置の値を反転することで、当該すべての特徴領域についての前記変換ビット列を生成し、
前記探索処理では、前記第１画像のそれぞれの特徴領域と類似する前記類似特徴領域を、複数の前記第２画像のそれぞれにおける特徴領域の中から探索する、
請求項１記載の画像処理装置。
【請求項３】
前記演算部は、さらに、
前記第１画像の特徴領域ごとに、前記第１画像の特徴領域と対応する前記類似特徴領域との位置関係に基づいて前記第２画像に含まれる前記第１画像の位置を特定し、
前記位置の特定結果に基づいて、前記第１画像と前記第２画像との類似性に基づく情報を出力する、
請求項１記載の画像処理装置。
【請求項４】
第１画像および第２画像のそれぞれに複数設定された特徴領域の特徴を示すビット列を記憶する記憶部から前記ビット列を取得可能な画像処理装置が、
前記ビット列のビット位置から、所定値が設定された数が、前記第１画像および前記第２画像におけるすべての特徴領域の総数の１／２より大きい所定閾値以上である特定ビット位置を特定し、
前記第１画像および前記第２画像におけるすべての特徴領域の前記ビット列における前記特定ビット位置の値を反転することで、当該すべての特徴領域についての変換ビット列を生成し、
前記第１画像のそれぞれの特徴領域と類似する類似特徴領域を、前記第２画像の特徴領域の中から特徴領域間の前記変換ビット列のハミング距離に基づいて探索する探索処理を実行し、前記探索処理では、前記第１画像の各特徴領域についてハミング距離の計算対象とする前記第２画像の特徴領域を、前記変換ビット列のノルムが前記第１画像の各特徴領域についての前記変換ビット列のノルムから一定範囲に含まれる特徴領域に限定する、
画像探索方法。
【請求項５】
第１画像および第２画像のそれぞれに複数設定された特徴領域の特徴を示すビット列を記憶する記憶部から前記ビット列を取得可能なコンピュータに、
前記ビット列のビット位置から、所定値が設定された数が、前記第１画像および前記第２画像におけるすべての特徴領域の総数の１／２より大きい所定閾値以上である特定ビット位置を特定し、
前記第１画像および前記第２画像におけるすべての特徴領域の前記ビット列における前記特定ビット位置の値を反転することで、当該すべての特徴領域についての変換ビット列を生成し、
前記第１画像のそれぞれの特徴領域と類似する類似特徴領域を、前記第２画像の特徴領域の中から特徴領域間の前記変換ビット列のハミング距離に基づいて探索する探索処理を実行し、前記探索処理では、前記第１画像の各特徴領域についてハミング距離の計算対象とする前記第２画像の特徴領域を、前記変換ビット列のノルムが前記第１画像の各特徴領域についての前記変換ビット列のノルムから一定範囲に含まれる特徴領域に限定する、
処理を実行させる画像探索プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像探索装置、画像探索方法および画像探索プログラムに関する。
【背景技術】
【０００２】
近年、様々な分野で画像のマッチング技術が広く利用されている。画像同士のマッチング方法の例として、第１画像の特徴点における特徴量（以下、「局所特徴量」と呼ぶ）と、第２画像の特徴点における局所特徴量とを比較して、第１画像の特徴点に対応する第２画像の特徴点（以下、「対応点」と呼ぶ）を探索する手法が利用される。探索により発見された対応点の集合を統計処理することで第２画像における第１画像の存在や第１画像の位置を認識できる。
【０００３】
また、上記のような対応点の探索に利用される局所特徴量をバイナリコードで表す方法がある。その代表例として、ＢＲＩＥＦ（Binary Robust Independent Elementary Features）がある。ＢＲＩＥＦは、特徴点の周囲に設定された複数の画素ペアのそれぞれについて計算された画素間の輝度差に基づく局所特徴量で表現される。例えば、輝度差の符号（正負）に対応するビット値の集合が局所特徴量として利用される。このように局所特徴量をバイナリコードで表す方法では、ハミング距離による高速な計算によって特徴点同士の類似度を算出できるというメリットがある。
【０００４】
一方、多次元の特徴量の最近傍探索を高速に行う方法として、特徴量をノルムの順にソートし、探索範囲をノルムの近いものだけに限定する“ＮＯＭ（Norm Ordering Matching）”という方法が提案されている。
【０００５】
なお、ベクトル量子化による画像符号化技術の例として、エッジ部分のビットマップパターンごとに作成されたコードブック内でベクトルをノルム順に並べ替え、ベクトル量子化のマッチング処理を行う際に当該ベクトルのノルムの近傍のみを探索するようにした画像符号化方法が提案されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平１１−８８４８号公報
【非特許文献】
【０００７】
【非特許文献１】M. Calonder, V. Lepetit, C. Strecha, and P. Fua., "BRIEF: Binary Robust Independent Elementary Features", In Proceedings of the European Conference on Computer Vision (ECCV), 2010
【非特許文献２】Mohamed Yousef and Khaled F. Hussain, "Fast exhaustive-search equivalent pattern matching through norm ordering" Journal of Visual Communication and Image Representation, vol. 24, no. 5, pp. 592？601, 2013
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ここで、ＢＲＩＥＦのようなバイナリコードで表された局所特徴量を用いた画像マッチング処理に、上記のＮＯＭを適用した場合を考える。この場合、第１画像および第２画像のそれぞれの局所特徴量がノルムごとに分類されるが、いずれの画像についても、局所特徴量のノルムが、ノルムがとり得る範囲の中央値付近（例えば、局所特徴量が１２８ビットの場合、ノルム“６４”の付近）となる特徴点が極端に多くなりやすい傾向がある。このため、第１画像と第２画像との間で、局所特徴量のノルムが中央値付近となる特徴点同士の組み合わせ数が多くなり、これらの特徴点同士のハミング距離の計算量が多くなってしまう。その結果、ＮＯＭを適用したにもかかわらず、計算効率の向上効果が低いという問題がある。
【０００９】
１つの側面では、本発明は、画像間で類似する特徴領域を探索する際の計算量を削減することが可能な画像探索装置、画像探索方法および画像探索プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
１つの案では、次のような画像処理装置が提供される。この画像処理装置は、記憶部と演算部とを有する。記憶部は、第１画像および第２画像のそれぞれに複数設定された特徴領域の特徴を示すビット列を記憶する。演算部は、ビット列のビット位置から、所定値が設定された数が、第１画像および第２画像におけるすべての特徴領域の総数の１／２より大きい所定閾値以上である特定ビット位置を特定する。また、演算部は、第１画像および第２画像におけるすべての特徴領域のビット列における特定ビット位置の値を反転することで、これらのすべての特徴領域についての変換ビット列を生成する。また、演算部は、第１画像のそれぞれの特徴領域と類似する類似特徴領域を、第２画像の特徴領域の中から特徴領域間の変換ビット列のハミング距離に基づいて探索する探索処理を実行する。この探索処理では、演算部は、第１画像の各特徴領域についてハミング距離の計算対象とする第２画像の特徴領域を、変換ビット列のノルムが第１画像の各特徴領域についての変換ビット列のノルムから一定範囲に含まれる特徴領域に限定する。
【００１１】
また、１つの案では、上記の画像処理装置と同様の処理が実行される画像探索方法が提供される。
さらに、１つの案では、上記の画像処理装置と同様の処理をコンピュータに実行させる画像探索プログラムが提供される。
【発明の効果】
【００１２】
１つの側面では、画像間で類似する特徴領域を探索する際の計算量を削減することができる。
【図面の簡単な説明】
【００１３】
【図１】第１の実施の形態に係る画像処理装置の構成例および処理例を示す図である。
【図２】第２の実施の形態に係る画像処理装置のハードウェア構成例を示す図である。
【図３】画像検索処理の第１の比較例を示すフローチャートである。
【図４】画素ペア管理テーブルの構成例を示す図である。
【図５】局所特徴量を算出する処理の例を示す図である。
【図６】投票処理を説明するための図である。
【図７】投票結果に基づく類似画像の判定処理について説明するための図である。
【図８】画像検索処理の第２の比較例を示すフローチャートである。
【図９】特徴量管理テーブルの構成例を示す図である。
【図１０】第２の比較例における対応点の探索処理例を示す図である。
【図１１】ノルムのヒストグラムの例を示す図である。
【図１２】局所特徴量のビット反転処理の例を示す図である。
【図１３】ビット反転処理によるノルムの分布の変化の例を示す図である。
【図１４】画像処理装置が備える処理機能の構成例を示すブロック図である。
【図１５】特徴量算出処理の例を示すフローチャートである。
【図１６】画像検索処理の例を示すフローチャート（その１）である。
【図１７】画像検索処理の例を示すフローチャート（その２）である。
【発明を実施するための形態】
【００１４】
以下、本発明の実施の形態について図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態に係る画像処理装置の構成例および処理例を示す図である。図１に示す画像処理装置１は、記憶部２および演算部３を有する。記憶部２は、例えば、ＲＡＭ（Random Access Memory）、ＨＤＤ（Hard Disk Drive）などの記憶装置として実現される。演算部は、例えば、プロセッサとして実現される。
【００１５】
記憶部２は、第１画像および第２画像のそれぞれに複数設定された特徴領域の特徴を示すビット列を記憶する。なお、このようにビット列で表すことが可能な特徴量としては、例えば、ＢＲＩＥＦ、ＯＲＢ（Oriented Fast and Rotated BRIEF）、ＣＡＲＤ（Compact And Real-time Descriptors）などがある。
【００１６】
図１の例では、記憶部２には、第１画像の特徴量１０ａと第２画像の特徴量２０ａとが記憶される。第１画像の特徴量１０ａには、第１画像の特徴領域ごとのビット列が含まれ、第２画像の特徴量２０ａには、第２画像の特徴領域ごとのビット列が含まれている。
【００１７】
演算部３は、第１画像の各特徴領域と類似する類似特徴領域を、第２画像の特徴領域の中から特定する。この特定のために、演算部３は、記憶部２に記憶されたビット列を参照しながら次のような処理を実行する。
【００１８】
演算部３は、ビット列のビット位置から、所定値が設定された数が所定の閾値以上である特定ビット位置を特定する。所定値とは、１または０である。以下、第１の実施の形態では、所定値を１とする。また、閾値は、第１画像および第２画像におけるすべての特徴領域の総数の１／２より大きい値に設定される。
【００１９】
演算部３は、第１画像および第２画像におけるすべての特徴領域のビット列における、上記の特定ビット位置の値を反転する。これにより、これらすべての特徴領域にそれぞれ対応する変換ビット列が生成される。
【００２０】
図１の例では、第１画像および第２画像の全ビット列のビット位置のうち、上位から２ビット目において、１の値が全体の半数を超えたとする。この場合、演算部３は、全ビット列における２ビット目の値を反転する（ステップＳ１）。これにより、各ビット列は変換ビット列に変換される。なお、図１において、第１画像の特徴量１０ｂは、第１画像の特徴量１０ａに含まれる各ビット列に対応する各変換ビット列を含む。また、第２画像の特徴量２０ｂは、第２画像の特徴量２０ａに含まれる各ビット列に対応する各変換ビット列を含む。
【００２１】
次に、演算部３は、第１画像のそれぞれの特徴領域と類似する類似特徴領域を、第２画像の特徴領域の中から特徴領域間の変換ビット列のハミング距離に基づいて探索する「探索処理」を実行する。例えば、演算部３は、第１画像のある特徴領域の変換ビット列と、第２画像に含まれる１以上の特徴領域のそれぞれの変換ビット列とのハミング距離を計算する。そして、演算部３は、ハミング距離の算出結果に基づいて類似特徴領域を特定する。
【００２２】
この探索処理では、演算部３は、第１画像の各特徴領域についてハミング距離の計算対象とする第２画像の特徴領域を、変換ビット列のノルムが第１画像の各特徴領域についての変換ビット列のノルムから一定範囲に含まれる特徴領域に限定する。ここで、変換ビット列のノルムとは、変換ビット列に含まれる１の数を示す。
【００２３】
例えば、図１において、第１画像のある特徴領域（以下、「対象特徴領域」と記載する）についての変換ビット列１１のノルムが２であったとする。演算部３は、変換ビット列１１と、第２画像の１以上の特徴領域に対応する変換ビット列とのハミング距離を計算することで、第２画像の特徴領域の中から対象特徴領域に類似する類似特徴領域を探索する。このとき、演算部３は、ハミング距離の計算対象とする第２画像の特徴領域を、変換ビット列のノルムが２から一定範囲に含まれる特徴領域に限定する。
【００２４】
例としてこの一定範囲をプラスマイナス１の範囲とし、図１の例では、第２画像の各特徴領域に対応する変換ビット列のうち、変換ビット列２１，２２のみがノルムが１〜３に含まれるものとする。この場合、演算部３は、変換ビット列１１と第２画像の全変換ビット列とのハミング距離を計算するのではなく、変換ビット列１１と変換ビット列２１とのハミング距離、および、変換ビット列１１と変換ビット列２２とのハミング距離のみを計算する（ステップＳ２）。
【００２５】
ここで、ビット列同士のハミング距離は、ビット列間で値が異なるビットの数を示す。一方、ビット列のノルムは、ビット列に含まれる１の数を示す。このため、ノルムが近いビット列同士では、各ビット列に含まれる１の数が近いことから、ハミング距離が小さくなる可能性が高い。一方、ノルムが異なるビット列同士では、各ビット列に含まれる１の数が異なることから、ハミング距離が大きくなる可能性が高い。したがって、上記の探索処理のように、ハミング距離の計算対象がノルムに応じて限定された場合でも、ハミング距離に基づく類似特徴領域の探索精度が低下する可能性は低い。すなわち、上記の探索処理によれば、類似特徴領域の探索精度を維持しつつ、ハミング距離の計算回数を減らし、処理全体に要する時間を短縮することができる。
【００２６】
ただし、ノルムについては、ノルムの値の分布が、ノルムがとり得る範囲の中央値付近に極端に集中しやすいという性質がある。この性質から、例えば、ビット反転処理が施される前のビット列を用いて上記のような探索処理が実行された場合には、第１画像と第２画像との間で、ビット列のノルムが中央値付近となる特徴領域の組み合わせ数が多くなる。このため、それらの組み合わせによるハミング距離の計算回数が多くなってしまう。この場合、ハミング距離の計算対象をノルムに応じて限定したにもかかわらず、計算効率の向上効果が低い。
【００２７】
このような問題に対し、第１の実施の形態に係る画像処理装置１は、上記のようにビット反転処理を施した変換ビット列を用いて探索処理を行う。ビット反転処理では、１の数が少なくとも全体の半数を超えるビット位置が特定ビット位置として特定される。そして、第１画像および第２画像におけるすべての特徴領域のビット列における特定ビット位置の値を反転され、変換ビット列が生成される。
【００２８】
このようなビット反転処理により、特定ビット位置における１の値が減少し、その結果、全変換ビット列における１の値が減少する。これにより、変換ビット列に基づくノルムの分布は、ノルムの中央値からより小さい領域に分散するようになり、ノルムの度数のピーク値は減少する。したがって、探索処理において、ビット列のノルムが中央値付近をとる特徴領域の組み合わせ数が減少し、それらの組み合わせによるハミング距離の計算回数が減少する。
【００２９】
ここで、ビット反転処理により、ノルムの中央値付近以外の範囲では特徴領域同士の組み合わせ数は増加する。しかし、ビット反転処理によってノルムの分布が分散することで、変換ビット列に基づくノルムのヒストグラムでは、度数が減少した各ノルムでの度数の減少数より、度数が増加した各ノルムでの度数の増加数の方が大きくなりやすい。しかも、このようなノルムの分布の変化が、第１画像と第２画像の両方において発生する。このため、全体としてはハミング距離の計算回数が大きく減少する可能性が高い。
【００３０】
したがって、第１の実施の形態によれば、第１画像内の各特徴領域と類似する類似特徴領域を第２の画像内の特徴領域から探索する処理における計算量を削減することができ、その処理に要する時間が短縮され、処理効率が向上する。
【００３１】
また、第１画像および第２画像のすべての特徴領域に対応するビット列について、同じビット位置の値が反転されたとしても、ビット反転後の変換ビット列を用いたハミング距離の計算結果は、ビット反転前のビット列を用いたハミング距離の計算結果と変わらない。このため、上記のように変換ビット列を用いて探索処理が行われた場合でも、類似特徴領域の特定精度に変化はない。
【００３２】
なお、以上の第１の実施の形態では、特定ビット位置を特定する際に計数される所定値を１としたが、この値を０とすることもできる。この場合、上記のようなビット反転処理により、特定ビット位置における０の値が減少し、その結果、全変換ビット列における０の値がビット反転処理前より減少する。これにより変換ビット列に基づくノルムの分布は、ノルムの中央値からより大きい領域に分散するようになり、ノルムの度数のピーク値は減少する。したがって、所定値を１とした場合と同様の効果が得られる。
【００３３】
［第２の実施の形態］
次に、第２の実施の形態として、複数の撮像画像の中からキー画像が選択され、キー画像以外の撮像画像からキー画像と類似するシーンの撮像画像を検索する画像処理装置について説明する。なお、第２の実施の形態では、画像の特徴量としてＢＲＩＥＦを用いるが、例えば、ＯＲＢ、ＣＡＲＤなどの他の種類のバイナリ特徴量を用いることもできる。
【００３４】
図２は、第２の実施の形態に係る画像処理装置のハードウェア構成例を示す図である。第２の実施の形態に係る画像処理装置１００は、例えば、図２に示すようなコンピュータとして実現される。
【００３５】
画像処理装置１００は、プロセッサ１０１によって装置全体が制御されている。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、またはＰＬＤ（Programmable Logic Device）である。またプロセッサ１０１は、ＣＰＵ、ＭＰＵ、ＤＳＰ、ＡＳＩＣ、ＰＬＤのうちの２以上の要素の組み合わせであってもよい。
【００３６】
プロセッサ１０１には、バス１０８を介して、ＲＡＭ１０２と複数の周辺機器が接続されている。
ＲＡＭ１０２は、画像処理装置１００の主記憶装置として使用される。ＲＡＭ１０２には、プロセッサ１０１に実行させるＯＳ（Operating System）プログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、プロセッサ１０１による処理に必要な各種データが格納される。
【００３７】
バス１０８に接続されている周辺機器としては、ＨＤＤ１０３、グラフィック処理装置１０４、入力インタフェース１０５、読み取り装置１０６および通信インタフェース１０７がある。
【００３８】
ＨＤＤ１０３は、画像処理装置１００の補助記憶装置として使用される。ＨＤＤ１０３には、ＯＳプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、ＳＳＤ（Solid State Drive）などの他の種類の不揮発性記憶装置を使用することもできる。
【００３９】
グラフィック処理装置１０４には、表示装置１０４ａが接続されている。グラフィック処理装置１０４は、プロセッサ１０１からの命令にしたがって、画像を表示装置１０４ａに表示させる。表示装置としては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置などがある。
【００４０】
入力インタフェース１０５には、入力装置１０５ａが接続されている。入力インタフェース１０５は、入力装置１０５ａから出力される信号をプロセッサ１０１に送信する。入力装置１０５ａとしては、キーボードやポインティングデバイスなどがある。ポインティングデバイスとしては、マウス、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００４１】
読み取り装置１０６には、可搬型記録媒体１０６ａが脱着される。読み取り装置１０６は、可搬型記録媒体１０６ａに記録されたデータを読み取ってプロセッサ１０１に送信する。可搬型記録媒体１０６ａとしては、光ディスク、光磁気ディスク、半導体メモリなどがある。
【００４２】
通信インタフェース１０７は、ネットワーク１０７ａを介して他の装置との間でデータの送受信を行う。
以上のようなハードウェア構成によって、画像処理装置１００の処理機能を実現することができる。
【００４３】
ところで、上記の画像処理装置１００の記憶装置（例えば、ＨＤＤ１０３）には、複数の撮像画像のデータが記憶される。これらの撮像画像は、撮像装置によって撮像された画像である。これらの撮像画像のデータは、例えば、可搬型記録媒体１０６ａを用いて画像処理装置１００の記憶装置に格納されてもよいし、あるいは、ネットワーク１０７ａを介して画像処理装置１００の記憶装置に格納されてもよい。
【００４４】
画像処理装置１００では、写真管理ソフトウェアが実行されることで次のような処理が行われる。ユーザの入力操作により、記憶装置内の複数の撮像画像からキー画像が選択される。すると、画像処理装置１００は、記憶装置内の複数の撮像画像のうちキー画像を除く撮像画像（以下、「対象画像」と呼ぶ）から、キー画像と類似するシーンの撮像画像を抽出する。例えば、キー画像に含まれる対象物と同じ対象物が写っていると推定される対象画像が、キー画像と類似するシーンの撮像画像として抽出される。これにより、ユーザは、例えば、素材として必要な画像を画像処理装置１００内から検索したり、同じイベントの開催時の写真を集めて自動的に整理することができる。したがって、ユーザに利便性や娯楽性を提供することができる。
【００４５】
このような画像処理装置１００は、例えば、パーソナルコンピュータ、スマートフォンなどのユーザによって操作される端末装置として実現される。また、画像処理装置１００は、ネットワーク上のサーバ装置として実現されてもよい。この場合、撮像画像のデータは、例えば、ユーザの端末装置からネットワークを介して画像処理装置１００にアップロードされる。
【００４６】
なお、画像処理装置１００の画像検索機能は、上記のような撮像画像の管理の他、例えば、プレゼンテーション資料などの文書コンテンツの管理に利用することもできる。例えば、画像処理装置１００の記憶装置に複数の文書のデータが記憶され、これらの中からキー文書が選択される。画像処理装置１００は、例えば、文書表示時の見た目がキー文書と似ている文を含む文書をその他の文書の中から抽出することもできるし、あるいは、キー文書と同じ画像や表、グラフなどを含む文書をその他の文書の中から抽出することもできる。これにより、文書を探すための作業時間を低減できる。また、過去の文書資産の再利用が推進され、業務の効率化を図ることもできる。
【００４７】
次に、画像検索処理の比較例について説明し、比較例での問題点について説明する。そして、その後、第２の実施の形態での画像検索処理の詳細について説明する。
図３は、画像検索処理の第１の比較例を示すフローチャートである。図３に示す比較例では、図３のステップＳ１０１，Ｓ１０２でＢＲＩＥＦの局所特徴量が算出され、ステップＳ１０３以後の処理でキー画像と類似する対象画像が局所特徴量に基づいて抽出される。
【００４８】
［ステップＳ１０１］画像処理装置は、各撮像画像上に複数の特徴点を設定する。ここでは例として、撮像画像上に等間隔（例えば、２４画素間隔）で特徴点を設定するＤｅｎｓｅ  Ｓａｍｐｌｉｎｇを用いる。
【００４９】
［ステップＳ１０２］画像処理装置は、各撮像画像の各特徴点についての局所特徴量を算出する。
ＢＲＩＥＦは、各特徴点を中心とする一定領域（以下、「特徴領域」と呼ぶ）ごとの局所特徴量として算出される。特徴領域は、例えば、特徴点を中心とする４８画素四方の矩形領域とされる。また、特徴領域の内部には、複数の画素ペアがあらかじめ設定される。ある特徴点の局所特徴量は、対応する特徴領域内の各画素ペアの輝度差の符号を組み合わせて構成されたビット列として算出される。
【００５０】
ここで、図４は、画素ペア管理テーブルの構成例を示す図である。画素ペアを構成する各画素の座標は、画素ペア管理テーブル１１２にあらかじめ登録されている。図４に示すように、画素ペア管理テーブル１１２には、画素ペアを識別するためのＩＤと、画素ペアを構成する第１画素および第２画素の各座標とが登録される。画素ペアは、例えば、ランダムに設定される。画素ペア管理テーブル１１２に登録された画素ペアの情報は、すべての特徴領域に対して共通に適用される。
【００５１】
図５は、局所特徴量を算出する処理の例を示す図である。図５では、撮像画像２００における各特徴点の局所特徴量を特徴量管理テーブル１３１に登録する処理の例を示す。なお、特徴量管理テーブル１３１は、撮像画像ごとに作成されるものとする。
【００５２】
例えば、撮像画像２００に設定された特徴点２０１の局所特徴量は、次のようにして算出される。画像処理装置は、特徴点２０１に対応する特徴領域２０２について、各画素ペアの輝度差を計算する（ステップＳ１０２ａ）。なお、画素ペアの輝度差は、例えば、画素ペア管理テーブル１１２における第１画素の輝度値から第２画素の輝度値を減算することで得られる。
【００５３】
画像処理装置は、算出された輝度差の符号に応じたビット値を組み合わせることでビット列２０３を生成する（ステップＳ１０２ｂ）。例えば、画像処理装置は、画素ペア順に、輝度差が正値の場合にはビット値“１”を、輝度差が０以下の場合にはビット値“０”をビット列に付加する。図４のようにＭ組の画素ペアが設定されている場合、Ｍビットのビット列が生成される。画像処理装置は、生成されたビット列２０３を、特徴点２０１の局所特徴量として特徴量管理テーブル１３１に登録する（ステップＳ１０２ｃ）。
【００５４】
このようにして、撮像画像２００に対応する特徴量管理テーブル１３１には、撮像画像２００に設定された各特徴点についての局所特徴量が登録される。
以下、図３に戻って説明する。
【００５５】
［ステップＳ１０３］画像処理装置は、ユーザの操作入力に応じて撮像画像からキー画像を選択する。
［ステップＳ１０４］画像処理装置は、キー画像以外の撮像画像（対象画像）の中から１つを選択する。
【００５６】
［ステップＳ１０５］画像処理装置は、キー画像の特徴点を１つ選択する。
［ステップＳ１０６］画像処理装置は、ステップＳ１０４で選択した対象画像から、ステップＳ１０５でキー画像から選択した特徴点に類似する特徴点（対応点）を探索する。この処理では、画像処理装置は、キー画像から選択した特徴点の局所特徴量と、対象画像の各特徴点の局所特徴量とのハミング距離を計算し、対象画像の特徴点のうちハミング距離が最小の特徴点を、類似度が最も高い対応点として抽出する。
【００５７】
［ステップＳ１０７］画像処理装置は、ステップＳ１０５で選択した特徴点とステップＳ１０６で探索された対応点とが一致するように対象画像にキー画像を重ねた場合の、対象画像におけるキー画像の中心位置を推定する。画像処理装置は、対象画像の各画素のうち、推定された中心位置の画素に対して投票する。なお、実際には、画像処理装置は、例えば、推定された中心位置を中心とした所定領域（例えば、１０画素四方の矩形領域）に含まれる各画素に投票してもよい。
【００５８】
［ステップＳ１０８］画像処理装置は、キー画像の全特徴点について処理済みかを判定する。処理済みでない特徴点がある場合、ステップＳ１０５の処理が実行される。全特徴点について処理済みの場合、ステップＳ１０９の処理が実行される。
【００５９】
［ステップＳ１０９］画像処理装置は、ステップＳ１０４で選択した対象画像の各画素についての投票数の最大値が所定の閾値を超えている場合、この対象画像をキー画像に類似する画像と判定する。一方、画像処理装置は、投票数の最大値が閾値以下の場合、この対象画像をキー画像に類似しない画像と判定する。
【００６０】
［ステップＳ１１０］画像処理装置は、全対象画像について処理済みかを判定する。処理済みでない対象画像がある場合、ステップＳ１０４の処理が実行される。一方、全対象画像について処理済みの場合、画像処理装置は、ステップＳ１０９でキー画像に類似すると判定された対象画像の識別情報を出力して、画像検索処理を終了する。
【００６１】
ここで、図６は、投票処理を説明するための図である。図６では、キー画像２００ａの特徴点２０１と類似する対象画像２１０の対応点を探索する処理の例を示す。画像処理装置は、例えば、キー画像２００ａの特徴点２０１の局所特徴量と、対象画像２１０の各特徴点の局所特徴量とのハミング距離を計算することで、対応点を探索する（ステップＳ１０６ａ）。
【００６２】
キー画像２００ａの特徴点２０１と類似する対応点として、対象画像２１０の特徴点２１１が抽出されたものとする。このとき、画像処理装置は、特徴点２０１と特徴点２１１（対応点）とが一致するように対象画像２１０にキー画像２００ａを重ねた場合の、対象画像２１０におけるキー画像２００ａの中心位置２０４を推定する（ステップＳ１０７ａ）。
【００６３】
ここで、対象画像の横幅および高さの画素数をそれぞれｗｉ，ｈｉとし、キー画像の横幅および高さの画素数をそれぞれｗｒ，ｈｒとする。キー画像の特徴点（ｘｒ，ｙｒ）に対応する対象画像の対応点として対象画像の特徴点（ｘｉ，ｙｉ）が探索されたとすると、対象画像におけるキー画像の中心点の位置（ｘｖ，ｙｖ）は、次の式（１−１），（１−２）を用いて算出される。
ｘｖ＝ｘｉ・ｘｒ＋（ｗｒ／２）      ・・・（１−１）
ｙｖ＝ｙｉ・ｙｒ＋（ｈｒ／２）      ・・・（１−２）
図６の特徴点２０１と特徴点２１１との対応関係に基づいて対象画像２１０におけるキー画像２００ａの中心位置として画素２１４が推定されたとすると、画像処理装置は、対象画像２１０の画素のうち、画素２１４に対して投票する。この投票処理には、例えば、対象画像２１０の各画素に対応するエントリを有する投票マップ１１４が用いられる。投票マップ１１４の各エントリの初期値は０とされる。図６の処理では、投票マップ１１４における画素２１４に対応するエントリに１が加算される（ステップＳ１０７ｂ）。
【００６４】
なお、実際には、画像処理装置は、例えば、画素２１４を中心とした所定領域（例えば、１０画素四方の矩形領域）に含まれる各画素に投票してもよい。これにより、キー画像２００ａと対象画像２１０との違いに対してあるロバストな認識処理を行うことが可能になる。
【００６５】
図７は、投票結果に基づく類似画像の判定処理について説明するための図である。図７に示す投票マップ１１４ａは、図６に示すような処理がキー画像２００ａの各特徴点について実行された後の投票マップ１１４の状態を示す。画像処理装置は、投票マップ１１４ａにおける各画素についての投票数のうちの最大値を抽出し、この最大値が所定の閾値を超えているかを判定する。
【００６６】
ここで、キー画像２００ａと対象画像２１０とに同じ対象物が写っている場合、キー画像２００ａの特徴点と対象画像２１０の対応点との位置関係が、キー画像の特徴点間で同じ場合が多い。この場合、投票マップ１１４ａにおける同じ画素に対応するエントリに投票数が集中する。一方、キー画像２００ａと対象画像２１０との関連性が低い場合、キー画像２００ａの特徴点と対象画像２１０の対応点との位置関係が、キー画像の特徴点間で異なる場合が多い。この場合、投票マップ１１４ａにおいて投票数が分散する。
【００６７】
したがって、投票マップ１１４ａにおける投票数の最大値が閾値を超えた場合には、投票数が同じ画素に集中していると推定されるため、キー画像２００ａと対象画像２１０とに同じ対象物が写っている可能性が高いと判断できる。このことから、画像処理装置は、投票数の最大値が閾値を超えた場合、対象画像２１０をキー画像２００ａに類似する画像であると判定する。
【００６８】
なお、実際には、対象画像２１０における特徴点の数によって投票数の最大値が影響を受けることから、例えば、対象画像２１０における特徴点の数で投票数を除算するなどの正規化処理が行われた上で、閾値との比較が行われることが望ましい。
【００６９】
ところで、上記の第１の比較例では、図３のステップＳ１０６での特徴点同士のハミング距離の計算時間が膨大であるという問題がある。これは、キー画像内のすべての特徴点と対象画像内のすべての特徴点との組み合わせについてハミング距離が計算されるためである。例えば、各画像の特徴点数が１０００個の場合、１００００００回のハミング距離の計算が行われる。このようなハミング距離の計算時間は、画像検索処理全体に要する時間の８割以上を占める場合があり、この計算時間を短縮できれば画像検索処理全体に要する時間を大幅に短縮できる。
【００７０】
そこで、次の第２の比較例では、前述のＮＯＭを利用してハミング距離計算に要する時間を短縮する。具体的には、キー画像および対象画像の各特徴点の局所特徴量が、各局所特徴量のノルムによって分類される。そして、キー画像の１つの特徴点に対する対応点の探索範囲がノルムの近いものだけに限定される。これにより、ハミング距離の計算の際の特徴点の組み合わせ数が減少し、その計算時間が短縮される。
【００７１】
図８は、画像検索処理の第２の比較例を示すフローチャートである。図８の処理は、図３に示した第２の比較例の処理を次のように変形したものである。図８の処理では、図３のステップＳ１０２とステップＳ１０３との間に、ステップＳ１２１が実行される。また、図３のステップＳ１０６の代わりにステップＳ１２２が実行される。以下、ステップＳ１２１，Ｓ１２２についてのみ説明し、図３と同じ処理が実行される処理ステップについては説明を省略する。
【００７２】
［ステップＳ１２１］画像処理装置は、撮像画像ごとに次のような処理を行う。画像処理装置は、撮像画像内の各特徴点について、局所特徴量のノルムを計算する。バイナリ値のビット列のノルムは、ビット列に含まれる１の数として計算される。画像処理装置は、撮像画像内の特徴点を、局所特徴量のノルムが小さい順に並び替える。
【００７３】
［ステップＳ１２２］画像処理装置は、ステップＳ１０４で選択した対象画像の特徴点から、対応するノルムの値が、キー画像におけるステップＳ１０５で選択した特徴点に対応するノルムを中心とした一定範囲に含まれる特徴点を特定する。一定範囲としては、例えば、プラスマイナス１の範囲とされる。画像処理装置は、キー画像の特徴点に対する対応点の探索範囲を特定した特徴点に限定して、対応点の探索を行う。すなわち、画像処理装置は、キー画像の特徴点の局所特徴量と、対象画像から特定した各特徴点の局所特徴量とのハミング距離を計算する。そして、画像処理装置は、算出されたハミング距離が最少の特徴点を対応点として抽出する。
【００７４】
図９は、特徴量管理テーブルの構成例を示す図である。第２の比較例では、例えば、図９に示すような特徴量管理テーブル１１３が用いられる。特徴量管理テーブル１１３は、撮像画像ごとに用意される。
【００７５】
特徴量管理テーブル１１３には、撮像画像内の特徴点ごとにレコードが登録される。各レコードには、ＩＤ、特徴点座標、局所特徴量およびノルムが登録される。ＩＤは、撮像画像内の特徴点を識別するための識別番号を示す。特徴点座標は、特徴点の座標を示す。局所特徴量の項目には、特徴点の局所特徴量を示すビット列が登録される。ノルムの項目には、局所特徴量から算出されたノルムが登録される。
【００７６】
図８のステップＳ１０２では、算出された局所特徴量が対応する特徴量管理テーブル１１３における対応するレコードに登録される。そして、ステップＳ１２１では、例えば、特徴量管理テーブル１１３におけるレコードが算出されたノルムの大きさにしたがって並び替えられる。
【００７７】
図１０は、第２の比較例における対応点の探索処理例を示す図である。図１０では、キー画像内の各特徴点の局所特徴量が登録された特徴量管理テーブル１１３ａと、対象画像内の各特徴点の局所特徴量が登録された特徴量管理テーブル１１３ｂとが例示されている。
【００７８】
画像処理装置は、特徴量管理テーブル１１３ａに登録された各局所特徴量のノルムを計算する。そして、画像処理装置は、特徴量管理テーブル１１３ａに登録された局所特徴量を、例えば、ノルムの値が小さい順に並び替える。同様に、画像処理装置は、特徴量管理テーブル１１３ｂに登録された各局所特徴量のノルムを計算する。そして、画像処理装置は、特徴量管理テーブル１１３ｂに登録された局所特徴量を、例えば、ノルムの値が小さい順に並び替える。
【００７９】
次に、画像処理装置は、キー画像の各局所特徴量と対象画像の各局所特徴量とのハミング距離を計算することで、キー画像の各特徴領域と類似する対象画像の特徴領域を探索する。このとき、キー画像の各特徴領域に対する対象画像の特徴領域の探索範囲は、対象画像の特徴領域のうち、局所特徴量のノルムの値が、キー画像の特徴領域についての局所特徴量のノルムと近い特徴領域に限定される。すなわち、キー画像から選択された局所特徴量とハミング距離の計算が行われる計算対象の局所特徴量は、対象画像の局所特徴量のうち、算出されたノルムの値がキー画像から選択された局所特徴量のノルムを中心とした一定範囲に含まれる局所特徴量に限定される。
【００８０】
例えば、図１０において、キー画像の特徴領域についての局所特徴量２５１から算出されるノルムは、３であるとする。ここで、探索範囲を決めるノルムの範囲をプラスマイナス１とすると、キー画像の局所特徴量２５１との間でハミング距離の計算が行われる計算対象は、対象画像の局所特徴量のうち、ノルムが２から４までとなる局所特徴量に限定される。
【００８１】
以上のようにハミング距離の計算対象がノルムに応じて限定されることで、キー画像の各局所特徴量と対象画像のすべての局所特徴量との組み合わせについてハミング距離が計算される場合と比較して、ハミング距離の計算量を低減することができる。
【００８２】
また、ビット列同士のハミング距離は、ビット列間で値が異なるビットの数を示す。一方、ビット列のノルムは、ビット列に含まれる１の数を示す。このため、ノルムが近いビット列同士では、各ビット列に含まれる１の数が近いことから、ハミング距離が小さくなる可能性が高い。一方、ノルムが異なるビット列同士では、各ビット列に含まれる１の数が異なることから、ハミング距離が大きくなる可能性が高い。したがって、上記のようにハミング距離の計算対象がノルムに応じて限定された場合でも、ハミング距離に基づく特徴領域の類似判定精度が低下する可能性は低い。
【００８３】
次に、上記の第２の比較例における問題点について説明する。
局所特徴量のノルムの値は、０から、局所特徴量の次元数（最大値）までの整数となる。例えば、局所特徴量が１２８ビットのビット列として表される場合、ノルムは０から１２８までの値をとり得る。また、ノルムの値は、次の図１１の例のように、ノルムがとり得る範囲の中央値付近に集中して分布する傾向がある。
【００８４】
図１１は、ノルムのヒストグラムの例を示す図である。例えば、ある撮像画像における各局所特徴量のノルムが算出された場合、ノルムの値の出現個数は図１１のように分布する。この図１１に示すように、ノルムの値の出現個数は、ノルムの範囲の中央値（図１１の例では“６４”）付近に極端に集中することが多い。
【００８５】
これは、次のような理由による。ノルムの値が小さいビット列では、１の数より０の数の方が多い。また、ノルムの値が大きいビット列では、０の数より１の数の方が多い。一方、ノルムの値が中央値付近となるビット列では、１の数と０の数とがほぼ同数となる。この場合、１と０との組み合わせによって生成可能なビット列のパターン数は、１と０との数が大きく異なる場合に生成可能なビット列のパターン数より多くなる。このため、ノルムの値が中央値付近となるビット列の数は、ノルムの値が相対的に小さいビット列や大きいビット列より多くなってしまう。
【００８６】
通常、キー画像と対象画像のどちらについても、上記のようなノルムの分布の傾向が見られる。このため、上記の第２の比較例のようにハミング距離の計算対象がノルムに応じて限定された場合でも、キー画像と対象画像との間では、ノルムが中央値付近となる局所特徴量同士の組み合わせが多くなり、それらの組み合わせによるハミング距離の計算回数が多くなってしまう。
【００８７】
ハミング距離の計算回数は、キー画像と対象画像の両方においてノルムが近い局所特徴量の数のかけ算によって算出される。このため、ノルムがある値となる局所特徴量の数が２倍になると、ノルムがその値となる局所特徴量の組み合わせ数は４倍になる。このように、ノルムの値がノルムの範囲の中央値付近に集中して分布すると、ノルムが中央値付近となる局所特徴量同士の組み合わせが指数関数的に増加し、それらの組み合わせによるハミング距離の計算回数が膨大になる。その結果、ハミング距離の計算対象をノルムに応じて限定したにもかかわらず、計算効率の向上効果が低いという問題がある。
【００８８】
また、上記のように、ノルムの値が中央値付近となるようなビット列のパターン数は多い。このため、ノルムの値が中央値付近となる局所特徴量の組み合わせの中には、ハミング距離が大きい局所特徴量の組み合わせが潜在的に含まれ得る。これは、ハミング距離の計算対象をハミング距離が小さいもの同士に限定するという目的に反する。その意味では、ノルムが中央値付近となる局所特徴量同士を組み合わせてハミング距離を計算する処理は、無駄が多いと言える。
【００８９】
このような問題に対し、第２の実施の形態では、ハミング距離の計算の対象となるすべての局所特徴量において同じ位置のビット値が反転されても、ハミング距離の計算結果は変化しない、という性質を利用して、第２の比較例の処理が次のように変形される。第２の実施の形態に係る画像処理装置１００は、上記の性質に基づき、ハミング距離計算に用いるすべての局所特徴量における適切な位置のビット値をあらかじめ反転することより、局所特徴量に含まれる１のビット数を減少させる。これにより、ノルムの分布がノルムの中央値から小さい方向に分散するように変化させ、ノルムの中央値付近に対するノルムの分布の集中度合いを軽減する。その結果、ノルムが中央値付近をとる局所特徴量の組み合わせ数を減少させ、それらの組み合わせによるハミング距離の計算回数を減少させる。
【００９０】
図１２は、局所特徴量のビット反転処理の例を示す図である。図１２では、１番目からＮ番目までの各撮像画像に対応する特徴量管理テーブル１１３＿１，１１３＿２，・・・，１１３＿Ｎの例を示す。特徴量管理テーブル１１３＿１，１１３＿２，・・・，１１３＿Ｎでは、説明をわかりやすくするため、局所特徴量の値がビットごとに表されている。
【００９１】
画像処理装置１００は、全撮像画像における全局所特徴量について、ビットごとに１の数を計数する。図１２の例では、ビットごとの１の計数値が集計テーブル１１５に登録されている。画像処理装置１００は、１の数が全局所特徴量の数（総特徴点数）の１／２を超えるビットを特定し、全局所特徴量における特定したビットのビット値を反転する。図１２の例では、１の数が全局所特徴量の数の１／２を超えたビットとして、上位から２番目のビットが特定されたものとする。この場合、画像処理装置１００は、全局所特徴量における上位から２番目のビットのビット値を反転する。
【００９２】
このようなビット反転が施された局所特徴量では、ビット反転前と比較して０の数が増加している。このため、これらの局所特徴量のノルムの分布は、ビット反転前と比較して、ノルムの中央値から小さい方向に分散し、ノルムの度数のピーク値も減少する。
【００９３】
図１３は、ビット反転処理によるノルムの分布の変化の例を示す図である。なお、図１３では、説明をわかりやすくするため、局所特徴量のビット数や特徴点数が少ない場合の例を示している。
【００９４】
グラフ２２１ａは、あるキー画像の局所特徴量に基づくノルムのヒストグラムの例を示す。また、グラフ２２２ａは、ある対象画像の局所特徴量に基づくノルムのヒストグラムの例を示す。グラフ２２１ａ，２２２ａでは、いずれもノルムの中央値付近に分布が集中している。このようなキー画像と対象画像との間で類似特徴領域の探索が行われた場合、ハミング距離の計算回数は、４×５＋８×９＋６×４＝１１６（回）となる。
【００９５】
一方、グラフ２２１ｂ，２２２ｂは、上記手順でキー画像および対象画像の全局所特徴量についてビット反転処理が施された後におけるヒストグラムの例を示す。すなわち、グラフ２２１ｂは、キー画像についてのビット反転処理後の局所特徴量に基づくノルムのヒストグラムの例を示し、グラフ２２２ｂは、対象画像についてのビット反転処理後の局所特徴量に基づくノルムのヒストグラムの例を示す。
【００９６】
グラフ２２１ｂでは、グラフ２２１ａと比較して、ノルムが中央値となる局所特徴量の数が８から５に大きく減少し、その分だけ、ノルムが中央値より小さい領域に分散して分布している。グラフ２２２ｂでも、グラフ２２２ａと比較して、ノルムが中央値となる局所特徴量の数が９から６に大きく減少し、その分だけ、ノルムが中央値より小さい領域に分散して分布している。
【００９７】
このようにビット反転後の局所特徴量を用いた場合のハミング距離の計算回数は、１×０＋２×２＋３×３＋３×４＋５×６＋４×３＝６７（回）となり、ビット反転前より大幅に減少する。すなわち、ビット反転により局所特徴量同士の組み合わせ数が減少し、それによってハミング距離の計算回数が減少する。したがって、ハミング距離の計算に要する時間が短縮され、その計算効率が向上する。
【００９８】
なお、図１３，図１４に示したように、本実施の形態の画像処理装置１００は、ビットごとに１の数を計数するものとするが、１の数の代わりに０の数を計数してもよい。この場合、画像処理装置１００は、０の数が全局所特徴量の数（総特徴点数）の１／２を超えるビットを特定し、全局所特徴量における特定したビットのビット値を反転する。このようにしてビット反転が施された後の局所特徴量に基づくノルムは、その中央値より大きい領域に分散して分布する。これにより、ビット反転後の局所特徴量を用いた場合のハミング距離の計算回数は、１の数を計数した場合と同様に減少する。
【００９９】
図１４は、画像処理装置が備える処理機能の構成例を示すブロック図である。画像処理装置１００は、記憶部１１０、画像取得部１２１、特徴量算出部１２２、特徴量変更部１２３および画像認識部１２４を有する。
【０１００】
記憶部１１０は、画像処理装置１００が備える記憶装置（例えば、ＲＡＭ１０２またはＨＤＤ１０３の記憶領域として実装される。記憶部１１０には、画像データ１１１、画素ペア管理テーブル１１２および特徴量管理テーブル１１３が記憶される。画像データ１１１は、撮像画像のデータを示す。画素ペア管理テーブル１１２には、図４に示したように、各画素ペアを構成する第１画素および第２画素の座標が登録される。特徴量管理テーブル１１３は、撮像画像ごとに用意される。特徴量管理テーブル１１３には、図９に示したように、撮像画像内の各特徴点に対応するＩＤ、特徴点座標、局所特徴量およびノルムが登録される。
【０１０１】
なお、記憶部１１０には、他に、図６に示した投票マップ１１４や、図１２に示した集計テーブル１１５が記憶されてもよい。
画像取得部１２１、特徴量算出部１２２、特徴量変更部１２３および画像認識部１２４の処理は、例えば、所定のプログラムがプロセッサ１０１に実行されることによって実現される。
【０１０２】
画像取得部１２１は、撮像画像の画像データ１１１を取得して記憶部１１０に格納する。例えば、画像取得部１２１は、撮像画像の画像データ１１１を可搬型記録媒体１０６ａを介して、あるいはネットワーク１０７ａを介して取得する。
【０１０３】
特徴量算出部１２２は、画像データ１１１および画素ペア管理テーブル１１２を参照しながら、撮像画像内の各特徴点についての局所特徴量を算出し、算出した局所特徴量を対応する特徴量管理テーブル１１３に登録する。
【０１０４】
特徴量変更部１２３は、全撮像画像の全特徴点に対応する局所特徴量についてビットごとに１の数を計数し、１の数が総特徴点数の１／２を超えるビットを特定する。特徴量変更部１２３は、全局所特徴量における特定したビットのビット値を反転する。さらに、特徴量変更部１２３は、ビット反転処理後の各局所特徴量のノルムを計算し、撮像画像ごとに、局所特徴量をノルムが小さい順に並び替える。
【０１０５】
画像認識部１２４は、キー画像の選択操作を受け付け、選択されたキー画像以外の撮像画像の中からキー画像と類似する類似画像を検索する。
次に、画像処理装置１００の処理についてフローチャートを用いて説明する。
【０１０６】
図１５は、特徴量算出処理の例を示すフローチャートである。
［ステップＳ１１］特徴量算出部１２２は、各撮像画像上に複数の特徴点を設定する。例えば、撮像画像上に等間隔（例えば、２４画素間隔）で特徴点を設定するＤｅｎｓｅ  Ｓａｍｐｌｉｎｇが用いられる。特徴量算出部１２２は、各撮像画像に対応する特徴量管理テーブル１１３に、設定した各特徴点についてのレコードを作成し、作成した各レコードにＩＤおよび特徴点座標を登録する。
【０１０７】
［ステップＳ１２］特徴量算出部１２２は、撮像画像を１つ選択する。
［ステップＳ１３］特徴量算出部１２２は、ステップＳ１２で選択した撮像画像から特徴点を１つ選択する。
【０１０８】
［ステップＳ１４］特徴量算出部１２２は、ステップＳ１３で選択した特徴点を中心とした一定範囲の特徴領域において、画素ペア管理テーブル１１２に基づく画素ペアごとに輝度差を計算する。輝度差は、画素ペアを構成する画素のうち、第１画素の輝度値から第２画素の輝度値を減算することで算出される。
【０１０９】
［ステップＳ１５］特徴量算出部１２２は、算出された各画素ペアの輝度差の符号に応じた値を画素ペアの順にビット列に付加する。例えば、輝度差が正値の場合はビット値“１”が付加され、輝度差が０以下の場合はビット値“０”が付加される。これにより、ステップＳ１３で選択した特徴点に対応する局所特徴量を示すビット列が算出される。特徴量算出部１２２は、算出したビット列を特徴量管理テーブル１１３における対応するレコードに登録する。
【０１１０】
［ステップＳ１６］特徴量算出部１２２は、撮像画像内の全特徴点について処理済みかを判定する。処理済みでない特徴点がある場合、ステップＳ１３に戻り、他の特徴点が選択される。一方、全特徴点について処理済みの場合、ステップＳ１７の処理が実行される。
【０１１１】
［ステップＳ１７］特徴量算出部１２２は、全撮像画像について処理済みかを判定する。処理済みでない撮像画像がある場合、ステップＳ１２に戻り、他の撮像画像が選択される。一方、全撮像画像について処理済みの場合、図１５の処理は終了される。
【０１１２】
以上の図１５の処理により、各撮像画像に対応する特徴量管理テーブル１１３に、各特徴点に対応する局所特徴量が登録される。
なお、図１５の処理は、次の図１６，図１７の処理が実行される画像処理装置１００とは別の装置において実行されてもよい。この場合、画像処理装置１００は、図１５の処理が実行された装置から、特徴量管理テーブル１１３の内容を取得する。
【０１１３】
図１６，図１７は、画像検索処理の例を示すフローチャートである。
まず、ステップＳ２１〜Ｓ２６において、局所特徴量のビット反転処理が実行される。
［ステップＳ２１］特徴量変更部１２３は、ビット列におけるビットの位置を示す変数ｂを０に初期化する。
【０１１４】
［ステップＳ２２］全撮像画像の総特徴点数をＬとする。特徴量変更部１２３は、Ｌ個の特徴点のそれぞれに対応する局所特徴量のビットのうち、上位からｂ番目のビットを参照する。特徴量変更部１２３は、全局所特徴量における上位からｂ番目のビットにセットされた１の個数Ｓ（ｂ）を算出する。
【０１１５】
［ステップＳ２３］特徴量変更部１２３は、算出された１の個数Ｓ（ｂ）が、Ｌ／２より大きいかを判定する。Ｓ（ｂ）がＬ／２より大きい場合、ステップＳ２４の処理が実行され、Ｓ（ｂ）がＬ／２以下の場合、ステップＳ２５の処理が実行される。なお、ステップＳ２３での判定閾値は、Ｌ／２より大きい値とされてもよい。
【０１１６】
［ステップＳ２４］特徴量変更部１２３は、特徴量管理テーブル１１３において、Ｌ個のすべての局所特徴量におけるｂ番目のビットを反転する。
［ステップＳ２５］特徴量変更部１２３は、変数ｂを１だけインクリメントする。
【０１１７】
［ステップＳ２６］特徴量変更部１２３は、変数ｂの値が局所特徴量のビット数（特徴領域内の画素ペア数）Ｍと一致するかを判定する。変数ｂの値がビット数より小さい場合、すなわち、処理済みでないビットが残っている場合には、ステップＳ２２の処理が実行される。一方、変数ｂの値がビット数と一致する場合、すなわち、全ビットについて処理済みの場合には、ステップＳ２７の処理が実行される。
【０１１８】
次に、ステップＳ２７〜Ｓ３０では、ステップＳ２４のビット反転が施された特徴量管理テーブル１１３を参照しながら、ノルムに応じた局所特徴量の並び替え処理が実行される。
【０１１９】
［ステップＳ２７］特徴量変更部１２３は、撮像画像を１つ選択する。
［ステップＳ２８］特徴量変更部１２３は、選択した撮像画像内の各特徴点について、局所特徴量のノルムを算出する。特徴量変更部１２３は、算出したノルムを、選択した撮像画像に対応する特徴量管理テーブル１１３に登録する。
【０１２０】
［ステップＳ２９］特徴量変更部１２３は、選択した撮像画像に含まれる特徴点を、算出したノルムの大きさ順に並び替える。ここでは、特徴点は、ノルムが小さい順に並び替えられるものとする。また、ここでは、特徴量変更部１２３は、選択した撮像画像に対応する特徴量管理テーブル１１３のレコードを、算出したノルムが小さい順に並び替えるものとする。
【０１２１】
［ステップＳ３０］特徴量変更部１２３は、全撮像画像について処理済みかを判定する。処理済みでない撮像画像がある場合、ステップＳ２７に戻り、他の撮像画像が選択される。一方、全撮像画像について処理済みの場合、図１７のステップＳ３１の処理が実行される。
【０１２２】
次に、ステップＳ３１〜Ｓ４０では、ステップＳ２９でレコードが並び替えられた特徴量管理テーブル１１３を参照しながら、キー画像に類似する類似画像をキー画像以外の撮像画像の中から特定する処理が実行される。
【０１２３】
［ステップＳ３１］画像認識部１２４は、ユーザからのキー画像の選択入力操作を受け付ける。
［ステップＳ３２］画像認識部１２４は、選択されたキー画像以外の撮像画像（対象画像）の中から、対象画像を１つ選択する。
【０１２４】
［ステップＳ３３］画像認識部１２４は、キー画像の特徴点を１つ選択する。このステップＳ３３では、具体的には、キー画像に対応する特徴量管理テーブル１１３の先頭から順に、１つの特徴点に対応するレコードが選択される。
【０１２５】
［ステップＳ３４］画像認識部１２４は、ハミング距離の計算対象とするノルムの範囲を特定する。具体的には、画像認識部１２４は、ステップＳ３３で選択した特徴点のレコードからノルムの値を取得する。ここで、取得したノルムの値をｎとする。画像認識部１２４は、ｎ−ｄからｎ＋ｄまでの範囲をハミング距離の計算対象とするノルムの範囲とする。なお、ｄは０以上の整数であり、例えば１とされる。
【０１２６】
［ステップＳ３５］画像認識部１２４は、対象画像に対応する特徴量管理テーブル１１３のレコードのうち、登録されたノルムがｎ−ｄからｎ＋ｄまでの値であるレコードを１つずつ選択する。画像認識部１２４は、対象画像に対応する特徴量管理テーブル１１３から選択したレコード内の局所特徴量と、ステップＳ３３で選択したレコード内の局所特徴量とのハミング距離を計算する。画像認識部１２４は、対象画像に対応する特徴量管理テーブル１１３から選択したレコードのうち、ハミング距離が最小のレコードに対応する特徴点を、類似度が最も高い対応点として抽出する。
【０１２７】
［ステップＳ３６］画像認識部１２４は、ステップＳ３３で選択した特徴点と、ステップＳ３５で抽出された対応点とが一致するように対象画像にキー画像を重ねた場合の、対象画像におけるキー画像の中心点の位置を推定する。この処理では、前述した式（１−１），（１−２）を用いて中心点の位置が算出される。
【０１２８】
画像認識部１２４は、対象画像の画素のうち、算出された中心点の位置に対応する画素に投票する。例えば、画像認識部１２４は、対象画像の各画素をマッピングした投票マップ１１４のエントリのうち、算出された中心点の位置に対応するエントリの投票数を１だけインクリメントする。なお、投票先の画素は、中心点の位置に対応する画素だけでなく、その画素を中心とした一定範囲内の各画素とされてもよい。
【０１２９】
［ステップＳ３７］画像認識部１２４は、キー画像内の全特徴点について処理済みかを判定する。処理済みでない特徴点がある場合、ステップＳ３３に戻り、他の特徴点が選択される。一方、全特徴点について処理済みの場合、ステップＳ３８の処理が実行される。
【０１３０】
［ステップＳ３８］画像認識部１２４は、対象画像の各画素に対する投票数の最大値が所定の閾値を超えたかを判定する。画像認識部１２４は、投票数の最大値が閾値を超えた場合に、対象画像を類似画像であると判定し、投票数の最大値が閾値以下の場合に、対象画像を類似画像でないと判定する。
【０１３１】
なお、このステップＳ３８では、画像認識部１２４は、例えば、投票数に基づいてキー画像と対象画像との間の類似度を算出することもできる。
［ステップＳ３９］画像認識部１２４は、全対象画像について処理済みかを判定する。処理済みでない対象画像がある場合、ステップＳ３２に戻り、他の対象画像が選択される。一方、全対象画像について処理済みの場合、ステップＳ４０の処理が実行される。
【０１３２】
［ステップＳ４０］画像認識部１２４は、類似画像の検索結果を出力する。例えば、画像認識部１２４は、画面上に検索された類似画像のファイル名やサムネイル画像を表示させる。
【０１３３】
以上説明した第２の実施の形態では、ハミング距離計算に用いるすべての局所特徴量について、１の数が全特徴点数の半数を超えるビットのビット値が反転される。これにより、局所特徴量のビット列における１の数が減少し、０の数が増加する。このようにビット反転が施された局所特徴量のノルムの分布は、ビット反転が施されていない場合と比較して、ノルムがとり得る範囲の中央値における度数が減少し、その中央値から小さい範囲に分散する。その結果、キー画像の特徴点の対応点の探索範囲を、対象画像の特徴点のうちノルムが近い特徴点に限定したとき、ノルムが中央値付近をとる特徴点同士の組み合わせ数が減少し、その分だけハミング距離の計算回数が減少する。
【０１３４】
ここで、ビット反転処理により、ノルムの中央値付近以外の範囲では特徴点同士の組み合わせ数は増加する。しかしながら、ビット反転を行わない場合にはノルムの中央値付近での集中度合いが極端に高かったことから、ビット反転処理後の特徴量に基づくノルムのヒストグラムでは、特徴点の度数が減少した各ノルムでの度数の減少数より、特徴点の度数が増加した各ノルムでの度数の増加数の方が大きくなりやすい。しかも、このようなノルムの分布の変化が、キー画像と対象画像の両方において発生する。このため、全体としてはハミング距離の計算回数が大きく減少する可能性が高い。したがって、第２の実施の形態によれば、対象画像がキー画像と類似するかを判定するための処理に要する時間が短縮され、処理効率が向上する。
【０１３５】
また、検索処理に利用するすべての撮像画像について事前にビット反転処理を施し、その後にキー画像に類似する類似画像を他の撮像画像から検索する手順としたことにより、処理効率をさらに向上させることができる。
【０１３６】
なお、例えば、撮像画像の数が少ない場合には、１枚のキー画像の局所特徴量と１枚の対象画像の局所特徴量との間で、次のようにしてビット反転処理が行われてもよい。画像処理装置１００は、キー画像の各局所特徴量に基づいて、１（または０）の数がキー画像内の総特徴点数の１／２を超えるビットを特定する。また、画像処理装置１００は、対象画像の各局所特徴量に基づいて、１（または０）の数が対象画像内の総特徴点数の１／２を超えるビットを特定する。そして、画像処理装置１００は、キー画像と対象画像の両方において、１（または０）の数が各画像内の総特徴点数の１／２を超えたビットを特定し、両画像の全局所特徴量における特定したビットの値を反転する。これにより、キー画像と対象画像の両方について、ノルムの分布を、その中央値より小さい（または大きい）領域の方向に確実に分散させることができるようになり、ハミング距離の計算数を確実に低減することが可能になる。
【０１３７】
上記のような１枚のキー画像の局所特徴量と１枚の対象画像の局所特徴量との間でのビット反転処理は、撮像画像の数が少ない場合に有効である。しかし、撮像画像の数が多くなるほど、画像の組み合わせごとに、１（または０）の数が各画像内の総特徴点数の１／２を超えたビットを特定してビット反転するという処理の負荷が相対的に大きくなり、処理効率が低下する。このため、撮像画像が多いほど、図１６，図１７の処理のように全撮像画像内の局所特徴点について一度にビット反転処理を行う方が、処理効率が高くなる。
【０１３８】
なお、上記の各実施の形態に示した装置（画像処理装置１，１００）の処理機能は、コンピュータによって実現することができる。その場合、各装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc-Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【０１３９】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１４０】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【符号の説明】
【０１４１】
１  画像処理装置
２  記憶部
３  演算部
１０ａ，１０ｂ  第１画像の特徴量
１１，２１，２２  変換ビット列
２０ａ，２０ｂ  第２画像の特徴量
【図１】
0006485072.tif 000002
【図２】
0006485072.tif 000003
【図３】
0006485072.tif 000004
【図４】
0006485072.tif 000005
【図５】
0006485072.tif 000006
【図６】
0006485072.tif 000007
【図７】
0006485072.tif 000008
【図８】
0006485072.tif 000009
【図９】
0006485072.tif 000010
【図１０】
0006485072.tif 000011
【図１１】
0006485072.tif 000012
【図１２】
0006485072.tif 000013
【図１３】
0006485072.tif 000014
【図１４】
0006485072.tif 000015
【図１５】
0006485072.tif 000016
【図１６】
0006485072.tif 000017
【図１７】
0006485072.tif 000018