(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）などがある。
【０１３５】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１３６】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【符号の説明】
【０１３７】
１  画像処理装置
２  記憶部
３  演算部
１０  第１画像
１１，２１，２２，２３  特徴領域
１１ａ，２１ａ，２２ａ，２３ａ  ビット列
２０  第２画像
【図１】
0006485084.tif 000002
【図２】
0006485084.tif 000003
【図３】
0006485084.tif 000004
【図４】
0006485084.tif 000005
【図５】
0006485084.tif 000006
【図６】
0006485084.tif 000007
【図７】
0006485084.tif 000008
【図８】
0006485084.tif 000009
【図９】
0006485084.tif 000010
【図１０】
0006485084.tif 000011
【図１１】
0006485084.tif 000012
【図１２】
0006485084.tif 000013
【図１３】
0006485084.tif 000014
【図１４】
0006485084.tif 000015
【図１５】
0006485084.tif 000016
【図１６】
0006485084.tif 000017
【図１７】
0006485084.tif 000018
【図１８】
0006485084.tif 000019
【図１９】
0006485084.tif 000020