以下、本発明の実施の形態について図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態に係る画像処理装置の構成例および処理例を示す図である。図1に示す画像処理装置1は、記憶部2および演算部3を有する。記憶部2は、例えば、RAM(Random Access Memory)、HDD(Hard Disk Drive)などの記憶装置として実現される。演算部は、例えば、プロセッサとして実現される。
記憶部2は、第1画像および第2画像のそれぞれに複数設定された特徴領域の特徴を示すビット列を記憶する。なお、このようにビット列で表すことが可能な特徴量としては、例えば、BRIEF、ORB(Oriented Fast and Rotated BRIEF)、CARD(Compact And Real-time Descriptors)などがある。
図1の例では、記憶部2には、第1画像の特徴量10aと第2画像の特徴量20aとが記憶される。第1画像の特徴量10aには、第1画像の特徴領域ごとのビット列が含まれ、第2画像の特徴量20aには、第2画像の特徴領域ごとのビット列が含まれている。
演算部3は、第1画像の各特徴領域と類似する類似特徴領域を、第2画像の特徴領域の中から特定する。この特定のために、演算部3は、記憶部2に記憶されたビット列を参照しながら次のような処理を実行する。
演算部3は、ビット列のビット位置から、所定値が設定された数が所定の閾値以上である特定ビット位置を特定する。所定値とは、1または0である。以下、第1の実施の形態では、所定値を1とする。また、閾値は、第1画像および第2画像におけるすべての特徴領域の総数の1/2より大きい値に設定される。
演算部3は、第1画像および第2画像におけるすべての特徴領域のビット列における、上記の特定ビット位置の値を反転する。これにより、これらすべての特徴領域にそれぞれ対応する変換ビット列が生成される。
図1の例では、第1画像および第2画像の全ビット列のビット位置のうち、上位から2ビット目において、1の値が全体の半数を超えたとする。この場合、演算部3は、全ビット列における2ビット目の値を反転する(ステップS1)。これにより、各ビット列は変換ビット列に変換される。なお、図1において、第1画像の特徴量10bは、第1画像の特徴量10aに含まれる各ビット列に対応する各変換ビット列を含む。また、第2画像の特徴量20bは、第2画像の特徴量20aに含まれる各ビット列に対応する各変換ビット列を含む。
次に、演算部3は、第1画像のそれぞれの特徴領域と類似する類似特徴領域を、第2画像の特徴領域の中から特徴領域間の変換ビット列のハミング距離に基づいて探索する「探索処理」を実行する。例えば、演算部3は、第1画像のある特徴領域の変換ビット列と、第2画像に含まれる1以上の特徴領域のそれぞれの変換ビット列とのハミング距離を計算する。そして、演算部3は、ハミング距離の算出結果に基づいて類似特徴領域を特定する。
この探索処理では、演算部3は、第1画像の各特徴領域についてハミング距離の計算対象とする第2画像の特徴領域を、変換ビット列のノルムが第1画像の各特徴領域についての変換ビット列のノルムから一定範囲に含まれる特徴領域に限定する。ここで、変換ビット列のノルムとは、変換ビット列に含まれる1の数を示す。
例えば、図1において、第1画像のある特徴領域(以下、「対象特徴領域」と記載する)についての変換ビット列11のノルムが2であったとする。演算部3は、変換ビット列11と、第2画像の1以上の特徴領域に対応する変換ビット列とのハミング距離を計算することで、第2画像の特徴領域の中から対象特徴領域に類似する類似特徴領域を探索する。このとき、演算部3は、ハミング距離の計算対象とする第2画像の特徴領域を、変換ビット列のノルムが2から一定範囲に含まれる特徴領域に限定する。
例としてこの一定範囲をプラスマイナス1の範囲とし、図1の例では、第2画像の各特徴領域に対応する変換ビット列のうち、変換ビット列21,22のみがノルムが1〜3に含まれるものとする。この場合、演算部3は、変換ビット列11と第2画像の全変換ビット列とのハミング距離を計算するのではなく、変換ビット列11と変換ビット列21とのハミング距離、および、変換ビット列11と変換ビット列22とのハミング距離のみを計算する(ステップS2)。
ここで、ビット列同士のハミング距離は、ビット列間で値が異なるビットの数を示す。一方、ビット列のノルムは、ビット列に含まれる1の数を示す。このため、ノルムが近いビット列同士では、各ビット列に含まれる1の数が近いことから、ハミング距離が小さくなる可能性が高い。一方、ノルムが異なるビット列同士では、各ビット列に含まれる1の数が異なることから、ハミング距離が大きくなる可能性が高い。したがって、上記の探索処理のように、ハミング距離の計算対象がノルムに応じて限定された場合でも、ハミング距離に基づく類似特徴領域の探索精度が低下する可能性は低い。すなわち、上記の探索処理によれば、類似特徴領域の探索精度を維持しつつ、ハミング距離の計算回数を減らし、処理全体に要する時間を短縮することができる。
ただし、ノルムについては、ノルムの値の分布が、ノルムがとり得る範囲の中央値付近に極端に集中しやすいという性質がある。この性質から、例えば、ビット反転処理が施される前のビット列を用いて上記のような探索処理が実行された場合には、第1画像と第2画像との間で、ビット列のノルムが中央値付近となる特徴領域の組み合わせ数が多くなる。このため、それらの組み合わせによるハミング距離の計算回数が多くなってしまう。この場合、ハミング距離の計算対象をノルムに応じて限定したにもかかわらず、計算効率の向上効果が低い。
このような問題に対し、第1の実施の形態に係る画像処理装置1は、上記のようにビット反転処理を施した変換ビット列を用いて探索処理を行う。ビット反転処理では、1の数が少なくとも全体の半数を超えるビット位置が特定ビット位置として特定される。そして、第1画像および第2画像におけるすべての特徴領域のビット列における特定ビット位置の値を反転され、変換ビット列が生成される。
このようなビット反転処理により、特定ビット位置における1の値が減少し、その結果、全変換ビット列における1の値が減少する。これにより、変換ビット列に基づくノルムの分布は、ノルムの中央値からより小さい領域に分散するようになり、ノルムの度数のピーク値は減少する。したがって、探索処理において、ビット列のノルムが中央値付近をとる特徴領域の組み合わせ数が減少し、それらの組み合わせによるハミング距離の計算回数が減少する。
ここで、ビット反転処理により、ノルムの中央値付近以外の範囲では特徴領域同士の組み合わせ数は増加する。しかし、ビット反転処理によってノルムの分布が分散することで、変換ビット列に基づくノルムのヒストグラムでは、度数が減少した各ノルムでの度数の減少数より、度数が増加した各ノルムでの度数の増加数の方が大きくなりやすい。しかも、このようなノルムの分布の変化が、第1画像と第2画像の両方において発生する。このため、全体としてはハミング距離の計算回数が大きく減少する可能性が高い。
したがって、第1の実施の形態によれば、第1画像内の各特徴領域と類似する類似特徴領域を第2の画像内の特徴領域から探索する処理における計算量を削減することができ、その処理に要する時間が短縮され、処理効率が向上する。
また、第1画像および第2画像のすべての特徴領域に対応するビット列について、同じビット位置の値が反転されたとしても、ビット反転後の変換ビット列を用いたハミング距離の計算結果は、ビット反転前のビット列を用いたハミング距離の計算結果と変わらない。このため、上記のように変換ビット列を用いて探索処理が行われた場合でも、類似特徴領域の特定精度に変化はない。
なお、以上の第1の実施の形態では、特定ビット位置を特定する際に計数される所定値を1としたが、この値を0とすることもできる。この場合、上記のようなビット反転処理により、特定ビット位置における0の値が減少し、その結果、全変換ビット列における0の値がビット反転処理前より減少する。これにより変換ビット列に基づくノルムの分布は、ノルムの中央値からより大きい領域に分散するようになり、ノルムの度数のピーク値は減少する。したがって、所定値を1とした場合と同様の効果が得られる。
[第2の実施の形態]
次に、第2の実施の形態として、複数の撮像画像の中からキー画像が選択され、キー画像以外の撮像画像からキー画像と類似するシーンの撮像画像を検索する画像処理装置について説明する。なお、第2の実施の形態では、画像の特徴量としてBRIEFを用いるが、例えば、ORB、CARDなどの他の種類のバイナリ特徴量を用いることもできる。
図2は、第2の実施の形態に係る画像処理装置のハードウェア構成例を示す図である。第2の実施の形態に係る画像処理装置100は、例えば、図2に示すようなコンピュータとして実現される。
画像処理装置100は、プロセッサ101によって装置全体が制御されている。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えばCPU(Central Processing Unit)、MPU(Micro Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、またはPLD(Programmable Logic Device)である。またプロセッサ101は、CPU、MPU、DSP、ASIC、PLDのうちの2以上の要素の組み合わせであってもよい。
プロセッサ101には、バス108を介して、RAM102と複数の周辺機器が接続されている。
RAM102は、画像処理装置100の主記憶装置として使用される。RAM102には、プロセッサ101に実行させるOS(Operating System)プログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM102には、プロセッサ101による処理に必要な各種データが格納される。
バス108に接続されている周辺機器としては、HDD103、グラフィック処理装置104、入力インタフェース105、読み取り装置106および通信インタフェース107がある。
HDD103は、画像処理装置100の補助記憶装置として使用される。HDD103には、OSプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、SSD(Solid State Drive)などの他の種類の不揮発性記憶装置を使用することもできる。
グラフィック処理装置104には、表示装置104aが接続されている。グラフィック処理装置104は、プロセッサ101からの命令にしたがって、画像を表示装置104aに表示させる。表示装置としては、CRT(Cathode Ray Tube)を用いた表示装置や液晶表示装置などがある。
入力インタフェース105には、入力装置105aが接続されている。入力インタフェース105は、入力装置105aから出力される信号をプロセッサ101に送信する。入力装置105aとしては、キーボードやポインティングデバイスなどがある。ポインティングデバイスとしては、マウス、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
読み取り装置106には、可搬型記録媒体106aが脱着される。読み取り装置106は、可搬型記録媒体106aに記録されたデータを読み取ってプロセッサ101に送信する。可搬型記録媒体106aとしては、光ディスク、光磁気ディスク、半導体メモリなどがある。
通信インタフェース107は、ネットワーク107aを介して他の装置との間でデータの送受信を行う。
以上のようなハードウェア構成によって、画像処理装置100の処理機能を実現することができる。
ところで、上記の画像処理装置100の記憶装置(例えば、HDD103)には、複数の撮像画像のデータが記憶される。これらの撮像画像は、撮像装置によって撮像された画像である。これらの撮像画像のデータは、例えば、可搬型記録媒体106aを用いて画像処理装置100の記憶装置に格納されてもよいし、あるいは、ネットワーク107aを介して画像処理装置100の記憶装置に格納されてもよい。
画像処理装置100では、写真管理ソフトウェアが実行されることで次のような処理が行われる。ユーザの入力操作により、記憶装置内の複数の撮像画像からキー画像が選択される。すると、画像処理装置100は、記憶装置内の複数の撮像画像のうちキー画像を除く撮像画像(以下、「対象画像」と呼ぶ)から、キー画像と類似するシーンの撮像画像を抽出する。例えば、キー画像に含まれる対象物と同じ対象物が写っていると推定される対象画像が、キー画像と類似するシーンの撮像画像として抽出される。これにより、ユーザは、例えば、素材として必要な画像を画像処理装置100内から検索したり、同じイベントの開催時の写真を集めて自動的に整理することができる。したがって、ユーザに利便性や娯楽性を提供することができる。
このような画像処理装置100は、例えば、パーソナルコンピュータ、スマートフォンなどのユーザによって操作される端末装置として実現される。また、画像処理装置100は、ネットワーク上のサーバ装置として実現されてもよい。この場合、撮像画像のデータは、例えば、ユーザの端末装置からネットワークを介して画像処理装置100にアップロードされる。
なお、画像処理装置100の画像検索機能は、上記のような撮像画像の管理の他、例えば、プレゼンテーション資料などの文書コンテンツの管理に利用することもできる。例えば、画像処理装置100の記憶装置に複数の文書のデータが記憶され、これらの中からキー文書が選択される。画像処理装置100は、例えば、文書表示時の見た目がキー文書と似ている文を含む文書をその他の文書の中から抽出することもできるし、あるいは、キー文書と同じ画像や表、グラフなどを含む文書をその他の文書の中から抽出することもできる。これにより、文書を探すための作業時間を低減できる。また、過去の文書資産の再利用が推進され、業務の効率化を図ることもできる。
次に、画像検索処理の比較例について説明し、比較例での問題点について説明する。そして、その後、第2の実施の形態での画像検索処理の詳細について説明する。
図3は、画像検索処理の第1の比較例を示すフローチャートである。図3に示す比較例では、図3のステップS101,S102でBRIEFの局所特徴量が算出され、ステップS103以後の処理でキー画像と類似する対象画像が局所特徴量に基づいて抽出される。
[ステップS101]画像処理装置は、各撮像画像上に複数の特徴点を設定する。ここでは例として、撮像画像上に等間隔(例えば、24画素間隔)で特徴点を設定するDense Samplingを用いる。
[ステップS102]画像処理装置は、各撮像画像の各特徴点についての局所特徴量を算出する。
BRIEFは、各特徴点を中心とする一定領域(以下、「特徴領域」と呼ぶ)ごとの局所特徴量として算出される。特徴領域は、例えば、特徴点を中心とする48画素四方の矩形領域とされる。また、特徴領域の内部には、複数の画素ペアがあらかじめ設定される。ある特徴点の局所特徴量は、対応する特徴領域内の各画素ペアの輝度差の符号を組み合わせて構成されたビット列として算出される。
ここで、図4は、画素ペア管理テーブルの構成例を示す図である。画素ペアを構成する各画素の座標は、画素ペア管理テーブル112にあらかじめ登録されている。図4に示すように、画素ペア管理テーブル112には、画素ペアを識別するためのIDと、画素ペアを構成する第1画素および第2画素の各座標とが登録される。画素ペアは、例えば、ランダムに設定される。画素ペア管理テーブル112に登録された画素ペアの情報は、すべての特徴領域に対して共通に適用される。
図5は、局所特徴量を算出する処理の例を示す図である。図5では、撮像画像200における各特徴点の局所特徴量を特徴量管理テーブル131に登録する処理の例を示す。なお、特徴量管理テーブル131は、撮像画像ごとに作成されるものとする。
例えば、撮像画像200に設定された特徴点201の局所特徴量は、次のようにして算出される。画像処理装置は、特徴点201に対応する特徴領域202について、各画素ペアの輝度差を計算する(ステップS102a)。なお、画素ペアの輝度差は、例えば、画素ペア管理テーブル112における第1画素の輝度値から第2画素の輝度値を減算することで得られる。
画像処理装置は、算出された輝度差の符号に応じたビット値を組み合わせることでビット列203を生成する(ステップS102b)。例えば、画像処理装置は、画素ペア順に、輝度差が正値の場合にはビット値“1”を、輝度差が0以下の場合にはビット値“0”をビット列に付加する。図4のようにM組の画素ペアが設定されている場合、Mビットのビット列が生成される。画像処理装置は、生成されたビット列203を、特徴点201の局所特徴量として特徴量管理テーブル131に登録する(ステップS102c)。
このようにして、撮像画像200に対応する特徴量管理テーブル131には、撮像画像200に設定された各特徴点についての局所特徴量が登録される。
以下、図3に戻って説明する。
[ステップS103]画像処理装置は、ユーザの操作入力に応じて撮像画像からキー画像を選択する。
[ステップS104]画像処理装置は、キー画像以外の撮像画像(対象画像)の中から1つを選択する。
[ステップS105]画像処理装置は、キー画像の特徴点を1つ選択する。
[ステップS106]画像処理装置は、ステップS104で選択した対象画像から、ステップS105でキー画像から選択した特徴点に類似する特徴点(対応点)を探索する。この処理では、画像処理装置は、キー画像から選択した特徴点の局所特徴量と、対象画像の各特徴点の局所特徴量とのハミング距離を計算し、対象画像の特徴点のうちハミング距離が最小の特徴点を、類似度が最も高い対応点として抽出する。
[ステップS107]画像処理装置は、ステップS105で選択した特徴点とステップS106で探索された対応点とが一致するように対象画像にキー画像を重ねた場合の、対象画像におけるキー画像の中心位置を推定する。画像処理装置は、対象画像の各画素のうち、推定された中心位置の画素に対して投票する。なお、実際には、画像処理装置は、例えば、推定された中心位置を中心とした所定領域(例えば、10画素四方の矩形領域)に含まれる各画素に投票してもよい。
[ステップS108]画像処理装置は、キー画像の全特徴点について処理済みかを判定する。処理済みでない特徴点がある場合、ステップS105の処理が実行される。全特徴点について処理済みの場合、ステップS109の処理が実行される。
[ステップS109]画像処理装置は、ステップS104で選択した対象画像の各画素についての投票数の最大値が所定の閾値を超えている場合、この対象画像をキー画像に類似する画像と判定する。一方、画像処理装置は、投票数の最大値が閾値以下の場合、この対象画像をキー画像に類似しない画像と判定する。
[ステップS110]画像処理装置は、全対象画像について処理済みかを判定する。処理済みでない対象画像がある場合、ステップS104の処理が実行される。一方、全対象画像について処理済みの場合、画像処理装置は、ステップS109でキー画像に類似すると判定された対象画像の識別情報を出力して、画像検索処理を終了する。
ここで、図6は、投票処理を説明するための図である。図6では、キー画像200aの特徴点201と類似する対象画像210の対応点を探索する処理の例を示す。画像処理装置は、例えば、キー画像200aの特徴点201の局所特徴量と、対象画像210の各特徴点の局所特徴量とのハミング距離を計算することで、対応点を探索する(ステップS106a)。
キー画像200aの特徴点201と類似する対応点として、対象画像210の特徴点211が抽出されたものとする。このとき、画像処理装置は、特徴点201と特徴点211(対応点)とが一致するように対象画像210にキー画像200aを重ねた場合の、対象画像210におけるキー画像200aの中心位置204を推定する(ステップS107a)。
ここで、対象画像の横幅および高さの画素数をそれぞれwi,hiとし、キー画像の横幅および高さの画素数をそれぞれwr,hrとする。キー画像の特徴点(xr,yr)に対応する対象画像の対応点として対象画像の特徴点(xi,yi)が探索されたとすると、対象画像におけるキー画像の中心点の位置(xv,yv)は、次の式(1−1),(1−2)を用いて算出される。
xv=xi・xr+(wr/2) ・・・(1−1)
yv=yi・yr+(hr/2) ・・・(1−2)
図6の特徴点201と特徴点211との対応関係に基づいて対象画像210におけるキー画像200aの中心位置として画素214が推定されたとすると、画像処理装置は、対象画像210の画素のうち、画素214に対して投票する。この投票処理には、例えば、対象画像210の各画素に対応するエントリを有する投票マップ114が用いられる。投票マップ114の各エントリの初期値は0とされる。図6の処理では、投票マップ114における画素214に対応するエントリに1が加算される(ステップS107b)。
なお、実際には、画像処理装置は、例えば、画素214を中心とした所定領域(例えば、10画素四方の矩形領域)に含まれる各画素に投票してもよい。これにより、キー画像200aと対象画像210との違いに対してあるロバストな認識処理を行うことが可能になる。
図7は、投票結果に基づく類似画像の判定処理について説明するための図である。図7に示す投票マップ114aは、図6に示すような処理がキー画像200aの各特徴点について実行された後の投票マップ114の状態を示す。画像処理装置は、投票マップ114aにおける各画素についての投票数のうちの最大値を抽出し、この最大値が所定の閾値を超えているかを判定する。
ここで、キー画像200aと対象画像210とに同じ対象物が写っている場合、キー画像200aの特徴点と対象画像210の対応点との位置関係が、キー画像の特徴点間で同じ場合が多い。この場合、投票マップ114aにおける同じ画素に対応するエントリに投票数が集中する。一方、キー画像200aと対象画像210との関連性が低い場合、キー画像200aの特徴点と対象画像210の対応点との位置関係が、キー画像の特徴点間で異なる場合が多い。この場合、投票マップ114aにおいて投票数が分散する。
したがって、投票マップ114aにおける投票数の最大値が閾値を超えた場合には、投票数が同じ画素に集中していると推定されるため、キー画像200aと対象画像210とに同じ対象物が写っている可能性が高いと判断できる。このことから、画像処理装置は、投票数の最大値が閾値を超えた場合、対象画像210をキー画像200aに類似する画像であると判定する。
なお、実際には、対象画像210における特徴点の数によって投票数の最大値が影響を受けることから、例えば、対象画像210における特徴点の数で投票数を除算するなどの正規化処理が行われた上で、閾値との比較が行われることが望ましい。
ところで、上記の第1の比較例では、図3のステップS106での特徴点同士のハミング距離の計算時間が膨大であるという問題がある。これは、キー画像内のすべての特徴点と対象画像内のすべての特徴点との組み合わせについてハミング距離が計算されるためである。例えば、各画像の特徴点数が1000個の場合、1000000回のハミング距離の計算が行われる。このようなハミング距離の計算時間は、画像検索処理全体に要する時間の8割以上を占める場合があり、この計算時間を短縮できれば画像検索処理全体に要する時間を大幅に短縮できる。
そこで、次の第2の比較例では、前述のNOMを利用してハミング距離計算に要する時間を短縮する。具体的には、キー画像および対象画像の各特徴点の局所特徴量が、各局所特徴量のノルムによって分類される。そして、キー画像の1つの特徴点に対する対応点の探索範囲がノルムの近いものだけに限定される。これにより、ハミング距離の計算の際の特徴点の組み合わせ数が減少し、その計算時間が短縮される。
図8は、画像検索処理の第2の比較例を示すフローチャートである。図8の処理は、図3に示した第2の比較例の処理を次のように変形したものである。図8の処理では、図3のステップS102とステップS103との間に、ステップS121が実行される。また、図3のステップS106の代わりにステップS122が実行される。以下、ステップS121,S122についてのみ説明し、図3と同じ処理が実行される処理ステップについては説明を省略する。
[ステップS121]画像処理装置は、撮像画像ごとに次のような処理を行う。画像処理装置は、撮像画像内の各特徴点について、局所特徴量のノルムを計算する。バイナリ値のビット列のノルムは、ビット列に含まれる1の数として計算される。画像処理装置は、撮像画像内の特徴点を、局所特徴量のノルムが小さい順に並び替える。
[ステップS122]画像処理装置は、ステップS104で選択した対象画像の特徴点から、対応するノルムの値が、キー画像におけるステップS105で選択した特徴点に対応するノルムを中心とした一定範囲に含まれる特徴点を特定する。一定範囲としては、例えば、プラスマイナス1の範囲とされる。画像処理装置は、キー画像の特徴点に対する対応点の探索範囲を特定した特徴点に限定して、対応点の探索を行う。すなわち、画像処理装置は、キー画像の特徴点の局所特徴量と、対象画像から特定した各特徴点の局所特徴量とのハミング距離を計算する。そして、画像処理装置は、算出されたハミング距離が最少の特徴点を対応点として抽出する。
図9は、特徴量管理テーブルの構成例を示す図である。第2の比較例では、例えば、図9に示すような特徴量管理テーブル113が用いられる。特徴量管理テーブル113は、撮像画像ごとに用意される。
特徴量管理テーブル113には、撮像画像内の特徴点ごとにレコードが登録される。各レコードには、ID、特徴点座標、局所特徴量およびノルムが登録される。IDは、撮像画像内の特徴点を識別するための識別番号を示す。特徴点座標は、特徴点の座標を示す。局所特徴量の項目には、特徴点の局所特徴量を示すビット列が登録される。ノルムの項目には、局所特徴量から算出されたノルムが登録される。
図8のステップS102では、算出された局所特徴量が対応する特徴量管理テーブル113における対応するレコードに登録される。そして、ステップS121では、例えば、特徴量管理テーブル113におけるレコードが算出されたノルムの大きさにしたがって並び替えられる。
図10は、第2の比較例における対応点の探索処理例を示す図である。図10では、キー画像内の各特徴点の局所特徴量が登録された特徴量管理テーブル113aと、対象画像内の各特徴点の局所特徴量が登録された特徴量管理テーブル113bとが例示されている。
画像処理装置は、特徴量管理テーブル113aに登録された各局所特徴量のノルムを計算する。そして、画像処理装置は、特徴量管理テーブル113aに登録された局所特徴量を、例えば、ノルムの値が小さい順に並び替える。同様に、画像処理装置は、特徴量管理テーブル113bに登録された各局所特徴量のノルムを計算する。そして、画像処理装置は、特徴量管理テーブル113bに登録された局所特徴量を、例えば、ノルムの値が小さい順に並び替える。
次に、画像処理装置は、キー画像の各局所特徴量と対象画像の各局所特徴量とのハミング距離を計算することで、キー画像の各特徴領域と類似する対象画像の特徴領域を探索する。このとき、キー画像の各特徴領域に対する対象画像の特徴領域の探索範囲は、対象画像の特徴領域のうち、局所特徴量のノルムの値が、キー画像の特徴領域についての局所特徴量のノルムと近い特徴領域に限定される。すなわち、キー画像から選択された局所特徴量とハミング距離の計算が行われる計算対象の局所特徴量は、対象画像の局所特徴量のうち、算出されたノルムの値がキー画像から選択された局所特徴量のノルムを中心とした一定範囲に含まれる局所特徴量に限定される。
例えば、図10において、キー画像の特徴領域についての局所特徴量251から算出されるノルムは、3であるとする。ここで、探索範囲を決めるノルムの範囲をプラスマイナス1とすると、キー画像の局所特徴量251との間でハミング距離の計算が行われる計算対象は、対象画像の局所特徴量のうち、ノルムが2から4までとなる局所特徴量に限定される。
以上のようにハミング距離の計算対象がノルムに応じて限定されることで、キー画像の各局所特徴量と対象画像のすべての局所特徴量との組み合わせについてハミング距離が計算される場合と比較して、ハミング距離の計算量を低減することができる。
また、ビット列同士のハミング距離は、ビット列間で値が異なるビットの数を示す。一方、ビット列のノルムは、ビット列に含まれる1の数を示す。このため、ノルムが近いビット列同士では、各ビット列に含まれる1の数が近いことから、ハミング距離が小さくなる可能性が高い。一方、ノルムが異なるビット列同士では、各ビット列に含まれる1の数が異なることから、ハミング距離が大きくなる可能性が高い。したがって、上記のようにハミング距離の計算対象がノルムに応じて限定された場合でも、ハミング距離に基づく特徴領域の類似判定精度が低下する可能性は低い。
次に、上記の第2の比較例における問題点について説明する。
局所特徴量のノルムの値は、0から、局所特徴量の次元数(最大値)までの整数となる。例えば、局所特徴量が128ビットのビット列として表される場合、ノルムは0から128までの値をとり得る。また、ノルムの値は、次の図11の例のように、ノルムがとり得る範囲の中央値付近に集中して分布する傾向がある。
図11は、ノルムのヒストグラムの例を示す図である。例えば、ある撮像画像における各局所特徴量のノルムが算出された場合、ノルムの値の出現個数は図11のように分布する。この図11に示すように、ノルムの値の出現個数は、ノルムの範囲の中央値(図11の例では“64”)付近に極端に集中することが多い。
これは、次のような理由による。ノルムの値が小さいビット列では、1の数より0の数の方が多い。また、ノルムの値が大きいビット列では、0の数より1の数の方が多い。一方、ノルムの値が中央値付近となるビット列では、1の数と0の数とがほぼ同数となる。この場合、1と0との組み合わせによって生成可能なビット列のパターン数は、1と0との数が大きく異なる場合に生成可能なビット列のパターン数より多くなる。このため、ノルムの値が中央値付近となるビット列の数は、ノルムの値が相対的に小さいビット列や大きいビット列より多くなってしまう。
通常、キー画像と対象画像のどちらについても、上記のようなノルムの分布の傾向が見られる。このため、上記の第2の比較例のようにハミング距離の計算対象がノルムに応じて限定された場合でも、キー画像と対象画像との間では、ノルムが中央値付近となる局所特徴量同士の組み合わせが多くなり、それらの組み合わせによるハミング距離の計算回数が多くなってしまう。
ハミング距離の計算回数は、キー画像と対象画像の両方においてノルムが近い局所特徴量の数のかけ算によって算出される。このため、ノルムがある値となる局所特徴量の数が2倍になると、ノルムがその値となる局所特徴量の組み合わせ数は4倍になる。このように、ノルムの値がノルムの範囲の中央値付近に集中して分布すると、ノルムが中央値付近となる局所特徴量同士の組み合わせが指数関数的に増加し、それらの組み合わせによるハミング距離の計算回数が膨大になる。その結果、ハミング距離の計算対象をノルムに応じて限定したにもかかわらず、計算効率の向上効果が低いという問題がある。
また、上記のように、ノルムの値が中央値付近となるようなビット列のパターン数は多い。このため、ノルムの値が中央値付近となる局所特徴量の組み合わせの中には、ハミング距離が大きい局所特徴量の組み合わせが潜在的に含まれ得る。これは、ハミング距離の計算対象をハミング距離が小さいもの同士に限定するという目的に反する。その意味では、ノルムが中央値付近となる局所特徴量同士を組み合わせてハミング距離を計算する処理は、無駄が多いと言える。
このような問題に対し、第2の実施の形態では、ハミング距離の計算の対象となるすべての局所特徴量において同じ位置のビット値が反転されても、ハミング距離の計算結果は変化しない、という性質を利用して、第2の比較例の処理が次のように変形される。第2の実施の形態に係る画像処理装置100は、上記の性質に基づき、ハミング距離計算に用いるすべての局所特徴量における適切な位置のビット値をあらかじめ反転することより、局所特徴量に含まれる1のビット数を減少させる。これにより、ノルムの分布がノルムの中央値から小さい方向に分散するように変化させ、ノルムの中央値付近に対するノルムの分布の集中度合いを軽減する。その結果、ノルムが中央値付近をとる局所特徴量の組み合わせ数を減少させ、それらの組み合わせによるハミング距離の計算回数を減少させる。
図12は、局所特徴量のビット反転処理の例を示す図である。図12では、1番目からN番目までの各撮像画像に対応する特徴量管理テーブル113_1,113_2,・・・,113_Nの例を示す。特徴量管理テーブル113_1,113_2,・・・,113_Nでは、説明をわかりやすくするため、局所特徴量の値がビットごとに表されている。
画像処理装置100は、全撮像画像における全局所特徴量について、ビットごとに1の数を計数する。図12の例では、ビットごとの1の計数値が集計テーブル115に登録されている。画像処理装置100は、1の数が全局所特徴量の数(総特徴点数)の1/2を超えるビットを特定し、全局所特徴量における特定したビットのビット値を反転する。図12の例では、1の数が全局所特徴量の数の1/2を超えたビットとして、上位から2番目のビットが特定されたものとする。この場合、画像処理装置100は、全局所特徴量における上位から2番目のビットのビット値を反転する。
このようなビット反転が施された局所特徴量では、ビット反転前と比較して0の数が増加している。このため、これらの局所特徴量のノルムの分布は、ビット反転前と比較して、ノルムの中央値から小さい方向に分散し、ノルムの度数のピーク値も減少する。
図13は、ビット反転処理によるノルムの分布の変化の例を示す図である。なお、図13では、説明をわかりやすくするため、局所特徴量のビット数や特徴点数が少ない場合の例を示している。
グラフ221aは、あるキー画像の局所特徴量に基づくノルムのヒストグラムの例を示す。また、グラフ222aは、ある対象画像の局所特徴量に基づくノルムのヒストグラムの例を示す。グラフ221a,222aでは、いずれもノルムの中央値付近に分布が集中している。このようなキー画像と対象画像との間で類似特徴領域の探索が行われた場合、ハミング距離の計算回数は、4×5+8×9+6×4=116(回)となる。
一方、グラフ221b,222bは、上記手順でキー画像および対象画像の全局所特徴量についてビット反転処理が施された後におけるヒストグラムの例を示す。すなわち、グラフ221bは、キー画像についてのビット反転処理後の局所特徴量に基づくノルムのヒストグラムの例を示し、グラフ222bは、対象画像についてのビット反転処理後の局所特徴量に基づくノルムのヒストグラムの例を示す。
グラフ221bでは、グラフ221aと比較して、ノルムが中央値となる局所特徴量の数が8から5に大きく減少し、その分だけ、ノルムが中央値より小さい領域に分散して分布している。グラフ222bでも、グラフ222aと比較して、ノルムが中央値となる局所特徴量の数が9から6に大きく減少し、その分だけ、ノルムが中央値より小さい領域に分散して分布している。
このようにビット反転後の局所特徴量を用いた場合のハミング距離の計算回数は、1×0+2×2+3×3+3×4+5×6+4×3=67(回)となり、ビット反転前より大幅に減少する。すなわち、ビット反転により局所特徴量同士の組み合わせ数が減少し、それによってハミング距離の計算回数が減少する。したがって、ハミング距離の計算に要する時間が短縮され、その計算効率が向上する。
なお、図13,図14に示したように、本実施の形態の画像処理装置100は、ビットごとに1の数を計数するものとするが、1の数の代わりに0の数を計数してもよい。この場合、画像処理装置100は、0の数が全局所特徴量の数(総特徴点数)の1/2を超えるビットを特定し、全局所特徴量における特定したビットのビット値を反転する。このようにしてビット反転が施された後の局所特徴量に基づくノルムは、その中央値より大きい領域に分散して分布する。これにより、ビット反転後の局所特徴量を用いた場合のハミング距離の計算回数は、1の数を計数した場合と同様に減少する。
図14は、画像処理装置が備える処理機能の構成例を示すブロック図である。画像処理装置100は、記憶部110、画像取得部121、特徴量算出部122、特徴量変更部123および画像認識部124を有する。
記憶部110は、画像処理装置100が備える記憶装置(例えば、RAM102またはHDD103の記憶領域として実装される。記憶部110には、画像データ111、画素ペア管理テーブル112および特徴量管理テーブル113が記憶される。画像データ111は、撮像画像のデータを示す。画素ペア管理テーブル112には、図4に示したように、各画素ペアを構成する第1画素および第2画素の座標が登録される。特徴量管理テーブル113は、撮像画像ごとに用意される。特徴量管理テーブル113には、図9に示したように、撮像画像内の各特徴点に対応するID、特徴点座標、局所特徴量およびノルムが登録される。
なお、記憶部110には、他に、図6に示した投票マップ114や、図12に示した集計テーブル115が記憶されてもよい。
画像取得部121、特徴量算出部122、特徴量変更部123および画像認識部124の処理は、例えば、所定のプログラムがプロセッサ101に実行されることによって実現される。
画像取得部121は、撮像画像の画像データ111を取得して記憶部110に格納する。例えば、画像取得部121は、撮像画像の画像データ111を可搬型記録媒体106aを介して、あるいはネットワーク107aを介して取得する。
特徴量算出部122は、画像データ111および画素ペア管理テーブル112を参照しながら、撮像画像内の各特徴点についての局所特徴量を算出し、算出した局所特徴量を対応する特徴量管理テーブル113に登録する。
特徴量変更部123は、全撮像画像の全特徴点に対応する局所特徴量についてビットごとに1の数を計数し、1の数が総特徴点数の1/2を超えるビットを特定する。特徴量変更部123は、全局所特徴量における特定したビットのビット値を反転する。さらに、特徴量変更部123は、ビット反転処理後の各局所特徴量のノルムを計算し、撮像画像ごとに、局所特徴量をノルムが小さい順に並び替える。
画像認識部124は、キー画像の選択操作を受け付け、選択されたキー画像以外の撮像画像の中からキー画像と類似する類似画像を検索する。
次に、画像処理装置100の処理についてフローチャートを用いて説明する。
図15は、特徴量算出処理の例を示すフローチャートである。
[ステップS11]特徴量算出部122は、各撮像画像上に複数の特徴点を設定する。例えば、撮像画像上に等間隔(例えば、24画素間隔)で特徴点を設定するDense Samplingが用いられる。特徴量算出部122は、各撮像画像に対応する特徴量管理テーブル113に、設定した各特徴点についてのレコードを作成し、作成した各レコードにIDおよび特徴点座標を登録する。
[ステップS12]特徴量算出部122は、撮像画像を1つ選択する。
[ステップS13]特徴量算出部122は、ステップS12で選択した撮像画像から特徴点を1つ選択する。
[ステップS14]特徴量算出部122は、ステップS13で選択した特徴点を中心とした一定範囲の特徴領域において、画素ペア管理テーブル112に基づく画素ペアごとに輝度差を計算する。輝度差は、画素ペアを構成する画素のうち、第1画素の輝度値から第2画素の輝度値を減算することで算出される。
[ステップS15]特徴量算出部122は、算出された各画素ペアの輝度差の符号に応じた値を画素ペアの順にビット列に付加する。例えば、輝度差が正値の場合はビット値“1”が付加され、輝度差が0以下の場合はビット値“0”が付加される。これにより、ステップS13で選択した特徴点に対応する局所特徴量を示すビット列が算出される。特徴量算出部122は、算出したビット列を特徴量管理テーブル113における対応するレコードに登録する。
[ステップS16]特徴量算出部122は、撮像画像内の全特徴点について処理済みかを判定する。処理済みでない特徴点がある場合、ステップS13に戻り、他の特徴点が選択される。一方、全特徴点について処理済みの場合、ステップS17の処理が実行される。
[ステップS17]特徴量算出部122は、全撮像画像について処理済みかを判定する。処理済みでない撮像画像がある場合、ステップS12に戻り、他の撮像画像が選択される。一方、全撮像画像について処理済みの場合、図15の処理は終了される。
以上の図15の処理により、各撮像画像に対応する特徴量管理テーブル113に、各特徴点に対応する局所特徴量が登録される。
なお、図15の処理は、次の図16,図17の処理が実行される画像処理装置100とは別の装置において実行されてもよい。この場合、画像処理装置100は、図15の処理が実行された装置から、特徴量管理テーブル113の内容を取得する。
図16,図17は、画像検索処理の例を示すフローチャートである。
まず、ステップS21〜S26において、局所特徴量のビット反転処理が実行される。
[ステップS21]特徴量変更部123は、ビット列におけるビットの位置を示す変数bを0に初期化する。
[ステップS22]全撮像画像の総特徴点数をLとする。特徴量変更部123は、L個の特徴点のそれぞれに対応する局所特徴量のビットのうち、上位からb番目のビットを参照する。特徴量変更部123は、全局所特徴量における上位からb番目のビットにセットされた1の個数S(b)を算出する。
[ステップS23]特徴量変更部123は、算出された1の個数S(b)が、L/2より大きいかを判定する。S(b)がL/2より大きい場合、ステップS24の処理が実行され、S(b)がL/2以下の場合、ステップS25の処理が実行される。なお、ステップS23での判定閾値は、L/2より大きい値とされてもよい。
[ステップS24]特徴量変更部123は、特徴量管理テーブル113において、L個のすべての局所特徴量におけるb番目のビットを反転する。
[ステップS25]特徴量変更部123は、変数bを1だけインクリメントする。
[ステップS26]特徴量変更部123は、変数bの値が局所特徴量のビット数(特徴領域内の画素ペア数)Mと一致するかを判定する。変数bの値がビット数より小さい場合、すなわち、処理済みでないビットが残っている場合には、ステップS22の処理が実行される。一方、変数bの値がビット数と一致する場合、すなわち、全ビットについて処理済みの場合には、ステップS27の処理が実行される。
次に、ステップS27〜S30では、ステップS24のビット反転が施された特徴量管理テーブル113を参照しながら、ノルムに応じた局所特徴量の並び替え処理が実行される。
[ステップS27]特徴量変更部123は、撮像画像を1つ選択する。
[ステップS28]特徴量変更部123は、選択した撮像画像内の各特徴点について、局所特徴量のノルムを算出する。特徴量変更部123は、算出したノルムを、選択した撮像画像に対応する特徴量管理テーブル113に登録する。
[ステップS29]特徴量変更部123は、選択した撮像画像に含まれる特徴点を、算出したノルムの大きさ順に並び替える。ここでは、特徴点は、ノルムが小さい順に並び替えられるものとする。また、ここでは、特徴量変更部123は、選択した撮像画像に対応する特徴量管理テーブル113のレコードを、算出したノルムが小さい順に並び替えるものとする。
[ステップS30]特徴量変更部123は、全撮像画像について処理済みかを判定する。処理済みでない撮像画像がある場合、ステップS27に戻り、他の撮像画像が選択される。一方、全撮像画像について処理済みの場合、図17のステップS31の処理が実行される。
次に、ステップS31〜S40では、ステップS29でレコードが並び替えられた特徴量管理テーブル113を参照しながら、キー画像に類似する類似画像をキー画像以外の撮像画像の中から特定する処理が実行される。
[ステップS31]画像認識部124は、ユーザからのキー画像の選択入力操作を受け付ける。
[ステップS32]画像認識部124は、選択されたキー画像以外の撮像画像(対象画像)の中から、対象画像を1つ選択する。
[ステップS33]画像認識部124は、キー画像の特徴点を1つ選択する。このステップS33では、具体的には、キー画像に対応する特徴量管理テーブル113の先頭から順に、1つの特徴点に対応するレコードが選択される。
[ステップS34]画像認識部124は、ハミング距離の計算対象とするノルムの範囲を特定する。具体的には、画像認識部124は、ステップS33で選択した特徴点のレコードからノルムの値を取得する。ここで、取得したノルムの値をnとする。画像認識部124は、n−dからn+dまでの範囲をハミング距離の計算対象とするノルムの範囲とする。なお、dは0以上の整数であり、例えば1とされる。
[ステップS35]画像認識部124は、対象画像に対応する特徴量管理テーブル113のレコードのうち、登録されたノルムがn−dからn+dまでの値であるレコードを1つずつ選択する。画像認識部124は、対象画像に対応する特徴量管理テーブル113から選択したレコード内の局所特徴量と、ステップS33で選択したレコード内の局所特徴量とのハミング距離を計算する。画像認識部124は、対象画像に対応する特徴量管理テーブル113から選択したレコードのうち、ハミング距離が最小のレコードに対応する特徴点を、類似度が最も高い対応点として抽出する。
[ステップS36]画像認識部124は、ステップS33で選択した特徴点と、ステップS35で抽出された対応点とが一致するように対象画像にキー画像を重ねた場合の、対象画像におけるキー画像の中心点の位置を推定する。この処理では、前述した式(1−1),(1−2)を用いて中心点の位置が算出される。
画像認識部124は、対象画像の画素のうち、算出された中心点の位置に対応する画素に投票する。例えば、画像認識部124は、対象画像の各画素をマッピングした投票マップ114のエントリのうち、算出された中心点の位置に対応するエントリの投票数を1だけインクリメントする。なお、投票先の画素は、中心点の位置に対応する画素だけでなく、その画素を中心とした一定範囲内の各画素とされてもよい。
[ステップS37]画像認識部124は、キー画像内の全特徴点について処理済みかを判定する。処理済みでない特徴点がある場合、ステップS33に戻り、他の特徴点が選択される。一方、全特徴点について処理済みの場合、ステップS38の処理が実行される。
[ステップS38]画像認識部124は、対象画像の各画素に対する投票数の最大値が所定の閾値を超えたかを判定する。画像認識部124は、投票数の最大値が閾値を超えた場合に、対象画像を類似画像であると判定し、投票数の最大値が閾値以下の場合に、対象画像を類似画像でないと判定する。
なお、このステップS38では、画像認識部124は、例えば、投票数に基づいてキー画像と対象画像との間の類似度を算出することもできる。
[ステップS39]画像認識部124は、全対象画像について処理済みかを判定する。処理済みでない対象画像がある場合、ステップS32に戻り、他の対象画像が選択される。一方、全対象画像について処理済みの場合、ステップS40の処理が実行される。
[ステップS40]画像認識部124は、類似画像の検索結果を出力する。例えば、画像認識部124は、画面上に検索された類似画像のファイル名やサムネイル画像を表示させる。
以上説明した第2の実施の形態では、ハミング距離計算に用いるすべての局所特徴量について、1の数が全特徴点数の半数を超えるビットのビット値が反転される。これにより、局所特徴量のビット列における1の数が減少し、0の数が増加する。このようにビット反転が施された局所特徴量のノルムの分布は、ビット反転が施されていない場合と比較して、ノルムがとり得る範囲の中央値における度数が減少し、その中央値から小さい範囲に分散する。その結果、キー画像の特徴点の対応点の探索範囲を、対象画像の特徴点のうちノルムが近い特徴点に限定したとき、ノルムが中央値付近をとる特徴点同士の組み合わせ数が減少し、その分だけハミング距離の計算回数が減少する。
ここで、ビット反転処理により、ノルムの中央値付近以外の範囲では特徴点同士の組み合わせ数は増加する。しかしながら、ビット反転を行わない場合にはノルムの中央値付近での集中度合いが極端に高かったことから、ビット反転処理後の特徴量に基づくノルムのヒストグラムでは、特徴点の度数が減少した各ノルムでの度数の減少数より、特徴点の度数が増加した各ノルムでの度数の増加数の方が大きくなりやすい。しかも、このようなノルムの分布の変化が、キー画像と対象画像の両方において発生する。このため、全体としてはハミング距離の計算回数が大きく減少する可能性が高い。したがって、第2の実施の形態によれば、対象画像がキー画像と類似するかを判定するための処理に要する時間が短縮され、処理効率が向上する。
また、検索処理に利用するすべての撮像画像について事前にビット反転処理を施し、その後にキー画像に類似する類似画像を他の撮像画像から検索する手順としたことにより、処理効率をさらに向上させることができる。
なお、例えば、撮像画像の数が少ない場合には、1枚のキー画像の局所特徴量と1枚の対象画像の局所特徴量との間で、次のようにしてビット反転処理が行われてもよい。画像処理装置100は、キー画像の各局所特徴量に基づいて、1(または0)の数がキー画像内の総特徴点数の1/2を超えるビットを特定する。また、画像処理装置100は、対象画像の各局所特徴量に基づいて、1(または0)の数が対象画像内の総特徴点数の1/2を超えるビットを特定する。そして、画像処理装置100は、キー画像と対象画像の両方において、1(または0)の数が各画像内の総特徴点数の1/2を超えたビットを特定し、両画像の全局所特徴量における特定したビットの値を反転する。これにより、キー画像と対象画像の両方について、ノルムの分布を、その中央値より小さい(または大きい)領域の方向に確実に分散させることができるようになり、ハミング距離の計算数を確実に低減することが可能になる。
上記のような1枚のキー画像の局所特徴量と1枚の対象画像の局所特徴量との間でのビット反転処理は、撮像画像の数が少ない場合に有効である。しかし、撮像画像の数が多くなるほど、画像の組み合わせごとに、1(または0)の数が各画像内の総特徴点数の1/2を超えたビットを特定してビット反転するという処理の負荷が相対的に大きくなり、処理効率が低下する。このため、撮像画像が多いほど、図16,図17の処理のように全撮像画像内の局所特徴点について一度にビット反転処理を行う方が、処理効率が高くなる。
なお、上記の各実施の形態に示した装置(画像処理装置1,100)の処理機能は、コンピュータによって実現することができる。その場合、各装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc-Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。光磁気記録媒体には、MO(Magneto-Optical disk)などがある。
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。