以下、本発明の実施の形態について図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態に係る画像処理装置の構成例および処理例を示す図である。図1に示す画像処理装置1は、記憶部2および演算部3を有する。記憶部2は、例えば、RAM(Random Access Memory)、HDD(Hard Disk Drive)などの記憶装置として実現される。演算部は、例えば、プロセッサとして実現される。
記憶部2は、第1画像10に設定された複数の特徴領域のそれぞれの特徴を示す複数のビット列を記憶する。以下、これらのビット列を「第1ビット列」と記載する。また、記憶部2は、第2画像20に設定された複数の特徴領域のそれぞれの特徴を示す複数のビット列を記憶する。以下、これらのビット列を「第2ビット列」と記載する。なお、このようにビット列で表すことが可能な特徴量としては、例えば、BRIEF、ORB(Oriented FAST and Rotated BRIEF)、CARD(Compact And Real-time Descriptors)などがある。
演算部3は、第1画像10の各特徴領域と類似する類似特徴領域を、第2画像20の特徴領域の中から探索する。この探索の際に、演算部3は、記憶部2に記憶されたビット列を参照しながら次のような処理を実行する。
演算部3は、第1画像10の各特徴領域についての第1ビット列と、第2画像20の特徴領域の中から第1画像10の特徴領域ごとに1つ以上選択された選択特徴領域についての第2ビット列とを組み合わせる。そして、演算部3は、組み合わされた第1ビット列と第2ビット列との間のハミング距離に基づいて、第1画像10内の各特徴領域と類似する類似特徴領域を、第2画像20の特徴領域の中から探索する。
例えば、演算部3は、第1画像10における1つの特徴領域についての第1ビット列と、この特徴領域に対して第2画像20から選択された選択特徴領域のそれぞれについての第2ビット列との間のハミング距離を計算する。そして、演算部3は、ハミング距離が最も小さくなった選択特徴領域を、第1画像10の上記特徴領域に類似する類似特徴領域であると判定する。
また、演算部3は、上記のように、第1画像10の特徴領域ごとに、第2画像20の特徴領域から選択特徴領域を選択する際に、次のような条件にしたがって選択特徴領域を選択する。演算部3は、第2画像20の特徴領域のうち、第2ビット列のノルムが第1画像10における処理対象の特徴領域についての第1ビット列のノルムから所定の第1範囲に含まれ、かつ、第2ビット列における所定の部分領域のビット列のノルムが、処理対象の特徴領域についての第1ビット列における同じ部分領域のビット列のノルムから所定の第2範囲に含まれる特徴領域を、処理対象の特徴領域に対応する選択特徴領域として選択する。
例えば、図1に示すように、第1画像10の特徴領域11に類似する類似特徴領域を第2画像20内の特徴領域の中から探索する場合を考える。また、特徴領域11についてのビット列のノルムを64とし、そのビット列における所定の部分領域のビット列のノルムを32とする。なお、これ以後の第1の実施の形態の説明では、特徴を示すビット列における所定の部分領域のビット列のノルムを「部分ノルム」と呼ぶ。
ここで、上記の第1範囲を、第1ビット列のノルムからプラスマイナス1の範囲とし、上記の第2範囲を、第1ビット列の部分ノルムからプラスマイナス1の範囲とする。この場合、演算部3は、第2画像20内の特徴領域の中から、第2ビット列のノルムが62〜64に含まれ、かつ、第2ビット列の部分ノルムが31〜33に含まれる特徴領域を、選択特徴領域として選択する。
図1の例では、第2画像20から特徴領域21〜23が選択特徴領域として選択されたものとする。この場合、演算部3は、第1画像の特徴領域11と、第2画像の特徴領域21〜23のそれぞれとの間のハミング距離を計算する。具体的には、演算部3は、特徴領域11の特徴を示すビット列11aと、特徴領域21,22,23のそれぞれの特徴を示すビット列21a,22a,23aとの間のハミング距離を計算する。そして、演算部3は、特徴領域21〜23のうち、ハミング距離が最も小さい特徴領域を、特徴領域11に類似する類似特徴領域と判定する。
上記のようなノルムおよび部分ノルムに基づく条件を用いて選択特徴領域が選択されることで、第1画像10の各特徴領域についての第1ビット列との間でハミング距離の計算が行われる第2画像の特徴領域が、選択特徴領域として選択されたものだけに限定される。これにより、第1画像10の各特徴領域と第2画像20のすべての特徴領域とを組み合わせて第1ビット列と第2ビット列との間のハミング距離を計算する場合と比較して、ハミング距離の計算回数を減少させることができる。
また、上記のようなノルムおよび部分ノルムを用いた条件が用いられることにより、第1画像10と第2画像20との間では、ビット列のノルムおよび部分ノルムがともに近い特徴領域同士が組み合わされる。そして、組み合わされた特徴領域間でのみ、第1ビット列と第2ビット列とのハミング距離の計算が行われる。
ここで、2つのビット列のノルムが近い場合、それらのビット列間のハミング距離も近い可能性が高い。このことから、ビット列のノルムが近い特徴領域同士でのみ第1ビット列と第2ビット列とのハミング距離が計算されることで、ハミング距離が異なる可能性の高い特徴領域同士でのハミング距離の計算が実行されなくなる。その結果、計算量を低減しながらも、特徴領域間の類似判定精度を維持できる可能性が高くなる。
さらに、2つのビット列の部分ノルムが近い場合、それらのビット列間のハミング距離も近い可能性が高い。このことから、ビット列の部分ノルムが近い特徴領域同士でのみ第1ビット列と第2ビット列とのハミング距離が計算されることによっても、ハミング距離が異なる可能性の高い特徴領域同士でのハミング距離の計算が実行されなくなる。その結果、計算量を低減しながらも、特徴領域間の類似判定精度を維持できる可能性が高くなる。
したがって、ビット列のノルムだけでなく部分ノルムに基づく上記条件を用いて選択特徴領域が選択されることで、ノルムだけに基づく条件を用いた場合と比較して、特徴領域間の類似判定精度を維持しつつ、ハミング距離の計算量をさらに低減することができる。
また、ビット列のノルムについては、ノルムのとり得る範囲の中央値付近に分布が集中するという性質がある。このため、第1画像10の全特徴領域と第2画像20の全特徴領域とを組み合わせてハミング距離を計算した場合、それらの組み合わせの中には、ビット列のノルムが互いに中央値付近となる特徴領域の組み合わせが大きな割合で含まれることになる。
これに対し、ビット列のノルムだけでなく部分ノルムに基づく上記条件を用いて選択特徴領域が選択されることで、第1画像10と第2画像20との間でのビット列のノルムが中央値付近となる特徴点の組み合わせ数が大幅に減少する。その結果、ハミング距離の計算量を大幅に削減することが可能となる。
[第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では、キー画像内の各特徴点の局所特徴量が登録された特徴量管理テーブル133aと、対象画像内の各特徴点の局所特徴量が登録された特徴量管理テーブル133bとが例示されている。
画像処理装置は、特徴量管理テーブル133aに登録された各局所特徴量のノルムを計算する。そして、画像処理装置は、特徴量管理テーブル133aに登録された局所特徴量を、例えば、ノルムの値が小さい順に並び替える。同様に、画像処理装置は、特徴量管理テーブル133bに登録された各局所特徴量のノルムを計算する。そして、画像処理装置は、特徴量管理テーブル133bに登録された局所特徴量を、例えば、ノルムの値が小さい順に並び替える。
次に、画像処理装置は、キー画像の各局所特徴量と対象画像の各局所特徴量とのハミング距離を計算することで、キー画像の各特徴領域と類似する対象画像の特徴領域を探索する。このとき、キー画像の各特徴領域に対する対象画像の特徴領域の探索範囲は、対象画像の特徴領域のうち、局所特徴量のノルムの値が、キー画像の特徴領域についての局所特徴量のノルムと近い特徴領域に限定される。すなわち、キー画像から選択された局所特徴量とハミング距離の計算が行われる計算対象の局所特徴量は、対象画像の局所特徴量のうち、算出されたノルムの値がキー画像から選択された局所特徴量のノルムを中心とした一定範囲に含まれる局所特徴量に限定される。
例えば、図9において、キー画像の特徴領域についての局所特徴量251から算出されるノルムは、3であるとする。ここで、探索範囲を決めるノルムの範囲をプラスマイナス1とすると、キー画像の局所特徴量251との間でハミング距離の計算が行われる計算対象は、対象画像の局所特徴量のうち、ノルムが2から4までとなる局所特徴量に限定される。
以上のようにハミング距離の計算対象がノルムに応じて限定されることで、キー画像の各局所特徴量と対象画像のすべての局所特徴量との組み合わせについてハミング距離が計算される場合と比較して、ハミング距離の計算量を低減することができる。
また、ビット列同士のハミング距離は、ビット列間で値が異なるビットの数を示す。一方、ビット列のノルムは、ビット列に含まれる1の数を示す。このため、ノルムが近いビット列同士では、各ビット列に含まれる1の数が近いことから、ハミング距離が小さくなる可能性が高い。一方、ノルムが異なるビット列同士では、各ビット列に含まれる1の数が異なることから、ハミング距離が大きくなる可能性が高い。したがって、上記のようにハミング距離の計算対象がノルムに応じて限定された場合でも、ハミング距離に基づく特徴領域の類似判定精度が低下する可能性は低い。
次に、上記の第2の比較例における問題点について説明する。
局所特徴量のノルムの値は、0から、局所特徴量の次元数(最大値)までの整数となる。例えば、局所特徴量が128ビットのビット列として表される場合、ノルムは0から128までの値をとり得る。また、ノルムの値は、次の図10の例のように、ノルムがとり得る範囲の中央値付近に集中して分布する傾向がある。
図10は、ノルムのヒストグラムの例を示す図である。図10のヒストグラムは、128ビットのビット列に基づくノルムの分布の例を示す。例えば、ある撮像画像における各局所特徴量のノルムが算出された場合、ノルムの値の出現個数は図10のように分布する。この図10に示すように、ノルムの値の出現個数は、ノルムの範囲の中央値(図10の例では“64”)付近に極端に集中することが多い。
これは、次のような理由による。ノルムが小さいビット列では、1の数より0の数の方が多い。また、ノルムが大きいビット列では、0の数より1の数の方が多い。一方、ノルムが中央値付近となるビット列では、1の数と0の数とがほぼ同数となる。この場合、1と0との組み合わせによって生成可能なビット列のパターン数は、1と0との数が大きく異なる場合に生成可能なビット列のパターン数より多くなる。このため、ノルムが中央値付近となるビット列の数は、ノルムが相対的に小さいビット列や大きいビット列より多くなってしまう。
通常、キー画像と対象画像のどちらについても、上記のようなノルムの分布の傾向が見られる。このため、上記の第2の比較例のようにハミング距離の計算対象がノルムに応じて限定された場合でも、キー画像と対象画像との間では、ノルムが中央値付近となる局所特徴量同士の組み合わせが多くなり、それらの組み合わせによるハミング距離の計算回数が多くなってしまう。
ハミング距離の計算回数は、キー画像と対象画像の両方においてノルムが近い局所特徴量の数のかけ算によって算出される。このため、ノルムがある値となる局所特徴量の数が2倍になると、ノルムがその値となる局所特徴量の組み合わせ数は4倍になる。このように、ノルムの値がノルムの範囲の中央値付近に集中して分布すると、ノルムが中央値付近となる局所特徴量同士の組み合わせが指数関数的に増加し、それらの組み合わせによるハミング距離の計算回数が膨大になる。その結果、ハミング距離の計算対象をノルムに応じて限定したにもかかわらず、計算効率の向上効果が低いという問題がある。
また、上記のように、ノルムが中央値付近となるようなビット列のパターン数は多い。このため、ノルムが中央値付近となる局所特徴量の組み合わせの中には、ハミング距離が大きい局所特徴量の組み合わせが潜在的に含まれ得る。これは、ハミング距離の計算対象をハミング距離が小さいもの同士に限定するという目的に反する。その意味では、ノルムが中央値付近となる局所特徴量同士を組み合わせてハミング距離を計算する処理は、無駄が多いと言える。
このような問題に対し、第2の実施の形態では、各局所特徴量のビット列のノルムが中央値付近となる特徴領域間で探索を行う場合に、ビット列全体のノルムだけでなく、ビット列の一部分のノルムも利用して、ハミング距離の計算対象をさらに限定する。これにより、ノルムが中央値付近となる局所特徴量の組み合わせ数を減少させ、それらの組み合わせによるハミング距離の計算回数を減少させる。
図11は、部分ノルムの計算方法について示す図である。以下の説明では、局所特徴量を示すビット列のうち、所定の一部領域を抽出した部分ビット列のノルムを「部分ノルム」と呼ぶ。図11の例では、128ビットのビット列のうち、上位から64ビットの部分ビット列のノルムを部分ノルムとしている。
なお、以下の説明では、局所特徴量を示すビット列全体のノルムを単に「ノルム」と呼ぶ。図11の例では、ビット列全体での1の数がP個だったとすると、ビット列のノルムはPである。また、上位から64ビットの部分ビット列での1の数がQ個だったとすると、部分ノルムはQである。
図12は、ノルムおよび部分ノルムのヒストグラムの例を示す図である。図12のグラフ261は、図10に例示した128ビットのビット列に基づくノルムの分布を示すヒストグラムである。一方、図12のグラフ262は、それらのビット列のうち、ノルムが64となるビット列のみから計算された部分ノルムの分布を示すヒストグラムの例である。このグラフ262に示すように、各ビット列のノルムが同じ64の場合でも、それらのビット列に基づく部分ノルムは必ずしも同じ値にはならず、ある程度分散する。したがって、対象画像内の特徴領域のうち、キー画像内の特徴領域と局所特徴量の距離計算を行う対象の特徴領域を、部分ノルムがほぼ同じになる特徴領域に限定することで、計算対象をさらに減少させることができる。
図13は、第2の実施の形態における対応点の探索処理例を示す図である。画像処理装置100は、上記の第2の比較例と同様に、キー画像および対象画像のそれぞれの特徴点の局所特徴量をノルムの大きさ順に並び替えた後、ノルムが中央値付近となる局所特徴量だけを、部分ノルムの大きさ順にさらに並び替える。そして、画像処理装置100は、キー画像の特徴領域のうち、局所特徴量のノルムが中央値付近となる特徴領域について、対象画像からハミング距離の計算対象として特定する特徴領域を、局所特徴量の部分ノルムが近い特徴領域だけに限定する。
例えば、図13に示すように、画像処理装置100は、キー画像の特徴領域の局所特徴量のうち、ノルムが64となる局所特徴量についての計算対象を、対象画像の特徴領域の局所特徴量のうち、ノルムが63〜65となる局所特徴量に限定する。このとき、画像処理装置100は、ノルムが64となるキー画像の局所特徴量のうち部分ノルムが32となる局所特徴量についての計算対象を、ノルムが63〜65となる対象画像の局所特徴量のうち部分ノルムが31〜33となる局所特徴量にさらに限定する。
ここで、ビット列同士の複数のペアのうち、ハミング距離が同じになるビット列のペアについては、部分ビット列のハミング距離もペア間で近い値になる可能性が高い。また、前述のように、ノルムが近いビット列同士ではハミング距離が小さくなる可能性が高い。これらのことから、部分ノルムが近いビット列同士でもハミング距離が小さくなる可能性が高い。したがって、上記のようにハミング距離の計算対象が部分ノルムに応じて限定された場合でも、ハミング距離に基づく特徴領域の類似判定精度が大きく低下する可能性は低い。
換言すると、部分ノルムの差が大きいビット列同士では、ハミング距離が大きくなる可能性が高い。このため、このようなビット列同士のハミング距離の計算の実行を回避することで、無駄な計算が行われなくなり、特徴領域の類似判定精度をある程度維持しながら計算に要する時間を短縮することができる。
なお、ビット列同士の複数のペアについて互いにハミング距離が同じである場合に、各ペアについて部分ビット列のハミング距離も同じになる可能性は、部分ビット列のビット数が大きいほど高くなる。このため、部分ノルムが計算される部分ビット列のビット数が大きいほど、特徴領域の類似判定精度は高くなる。その一方、部分ビット列のビット数が大きいほど、計算量の削減効果は低くなる。このように類似判定精度と計算量削減効果とのバランスを考慮すると、部分ビット列のビット数は、例えば、ビット列の全ビット数の半数程度に設定される。
図14は、画像処理装置が備える処理機能の構成例を示すブロック図である。画像処理装置100は、記憶部110、画像取得部121、特徴量算出部122、特徴量ソート部123および画像認識部124を有する。
記憶部110は、画像処理装置100が備える記憶装置(例えば、RAM102またはHDD103の記憶領域として実装される。記憶部110には、画像データ111、画素ペア管理テーブル112および特徴量管理テーブル113が記憶される。画像データ111は、撮像画像のデータを示す。画素ペア管理テーブル112には、図4に示したように、各画素ペアを構成する第1画素および第2画素の座標が登録される。特徴量管理テーブル113は、撮像画像ごとに用意される。特徴量管理テーブル113には、少なくとも、撮像画像内の各特徴点に対応する局所特徴量が登録される。
なお、記憶部110には、他に、図6に示した投票マップ114が記憶されてもよい。
画像取得部121、特徴量算出部122、特徴量ソート部123および画像認識部124の処理は、例えば、所定のプログラムがプロセッサ101に実行されることによって実現される。
画像取得部121は、撮像画像の画像データ111を取得して記憶部110に格納する。例えば、画像取得部121は、撮像画像の画像データ111を可搬型記録媒体106aを介して、あるいはネットワーク107aを介して取得する。
特徴量算出部122は、画像データ111および画素ペア管理テーブル112を参照しながら、撮像画像内の各特徴点についての局所特徴量を算出し、算出した局所特徴量を対応する特徴量管理テーブル113に登録する。
特徴量ソート部123は、各撮像画像の特徴点に対応する局所特徴量を、ノルムの大きさ順に並び替える。また、特徴量ソート部123は、ノルムが所定範囲に含まれる局所特徴量については、さらに、部分ノルムの大きさ順に並び替える。
画像認識部124は、キー画像の選択操作を受け付け、選択されたキー画像以外の撮像画像(対象画像)の中からキー画像と類似する類似画像を検索する。
図15は、特徴量管理テーブルの構成例を示す図である。特徴量管理テーブル113は、撮像画像ごとに用意される。
特徴量管理テーブル113には、撮像画像内の特徴点ごとにレコードが登録される。各レコードには、ID、特徴点座標、局所特徴量、ノルムおよび部分ノルムが登録される。IDは、撮像画像内の特徴点を識別するための識別番号を示す。特徴点座標は、特徴点の座標を示す。局所特徴量の項目には、特徴点の局所特徴量を示すビット列が登録される。ノルムの項目には、局所特徴量から算出されたノルムが登録される。部分ノルムの項目には、局所特徴量のビット列のうちの部分ビット列から算出されたノルムが登録される。
次に、画像処理装置100の処理についてフローチャートを用いて説明する。
図16は、特徴量算出処理の例を示すフローチャートである。
[ステップ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に戻り、他の撮像画像が選択される。一方、全撮像画像について処理済みの場合、図16の処理は終了される。
以上の図16の処理により、各撮像画像に対応する特徴量管理テーブル113に、各特徴点に対応する局所特徴量が登録される。
なお、図16の処理は、次の図17,図18の処理が実行される画像処理装置100とは別の装置において実行されてもよい。この場合、画像処理装置100は、図16の処理が実行された装置から、特徴量管理テーブル113の内容を取得する。
図17,図18は、画像検索処理の例を示すフローチャートである。
まず、ステップS21〜S30では、撮像画像ごとに、特徴量管理テーブル113に登録された局所特徴量がノルムおよび部分ノルムに応じて並び替えられる。
[ステップS21]特徴量ソート部123は、撮像画像を1つ選択する。
[ステップS22]特徴量ソート部123は、選択した撮像画像内の各特徴点について、局所特徴量のノルムを算出する。特徴量ソート部123は、算出したノルムを、選択した撮像画像に対応する特徴量管理テーブル113に登録する。
[ステップS23]特徴量ソート部123は、選択した撮像画像に含まれる特徴点を、算出したノルムの大きさ順に並び替える。ここでは、特徴点は、ノルムが小さい順に並び替えられるものとする。また、ここでは、特徴量ソート部123は、選択した撮像画像に対応する特徴量管理テーブル113のレコードを、算出したノルムが小さい順に並び替えるものとする。
[ステップS24]特徴量ソート部123は、ノルムの値を示す変数NrTを所定の下限値NrMinに設定する。
[ステップS25]特徴量ソート部123は、特徴量管理テーブル113から、ノルムがNrTの特徴点に対応するレコードをすべて選択する。
[ステップS26]特徴量ソート部123は、ステップS25で選択した各レコードに登録された局所特徴量に基づいて、特徴点ごとに部分ノルムを算出する。特徴量ソート部123は、算出した部分ノルムを、ステップS21で選択した撮像画像に対応する特徴量管理テーブル113における、対応する特徴点のレコードに登録する。
[ステップS27]特徴量ソート部123は、NrTを1だけインクリメントする。
[ステップS28]特徴量ソート部123は、NrTが所定の上限値NrMaxより大きいかを判定する。NrTがNrMax以下である場合、ステップS25の処理が実行される。一方、NrTがNrMaxより大きい場合、ステップS29の処理が実行される。
なお、NrMinからNrMaxまでの範囲には、少なくとも、ノルムの中央値が含まれるものとする。例えば、NrMinは、ノルムの中央値から一定値だけ小さい値に設定され、NrMaxは、ノルムの中央値から同じ一定値だけ大きい値に設定される。
[ステップS29]特徴量ソート部123は、特徴量管理テーブル113のレコードのうち、ステップS25で選択済みのすべてのレコードについて、部分ノルムの大きさ順に並び替える。ここでは、これらのレコードは部分ノルムが小さい順に並び替えられるものとする。
[ステップS30]特徴量ソート部123は、全撮像画像について処理済みかを判定する。処理済みでない撮像画像がある場合、ステップS21に戻り、他の撮像画像が選択される。一方、全撮像画像について処理済みの場合、図18のステップS31の処理が実行される。
次に、ステップS31〜S40では、図17の処理によってレコードが並び替えられた特徴量管理テーブル113を参照しながら、キー画像に類似する類似画像をキー画像以外の撮像画像(対象画像)の中から特定する処理が実行される。
[ステップS31]画像認識部124は、ユーザからのキー画像の選択入力操作を受け付ける。
[ステップS32]画像認識部124は、選択されたキー画像以外の撮像画像(対象画像)の中から、対象画像を1つ選択する。
[ステップS33]画像認識部124は、キー画像の特徴点を1つ選択する。このステップS33では、具体的には、キー画像に対応する特徴量管理テーブル113の先頭から順に、1つの特徴点に対応するレコードが選択される。
[ステップS34]画像認識部124は、ステップS32で選択された対象画像の特徴点の中から、ハミング距離の計算対象とする特徴点を特定する。このステップS34では、ハミング距離の計算対象とする特徴点が少なくともノルムに基づいて限定される。なお、ステップS34の処理の詳細については図19で説明する。
[ステップS35]画像認識部124は、対象画像に対応する特徴量管理テーブル113のレコードのうち、ステップS34で特定された特徴点に対応するレコードを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は、画面上に検索された類似画像のファイル名やサムネイル画像を表示させる。
図19は、ハミング距離の計算対象とする特徴点の特定処理例を示すフローチャートである。なお、この処理では、図18のステップS33で選択された、キー画像の特徴点についての局所特徴量のノルムをNrAとし、その局所特徴量の部分ノルムをPnrAとする。
[ステップS41]画像認識部124は、NrAがNrMin+d以上NrMax−d以下の範囲に含まれるかを判定する。なお、dは、あらかじめ設定された設定値であり、0以上の整数とされる。例えば、d=1に設定される。NrAが上記範囲に含まれない場合、ステップS42の処理が実行され、NrAが上記範囲に含まれる場合、ステップS43の処理が実行される。
[ステップS42]画像認識部124は、ステップS32で選択された対象画像の特徴点の中から、局所特徴量のノルムがNrA−d以上NrA+d以下の範囲に含まれる特徴点を、ハミング距離の計算対象として特定する。
[ステップS43]画像認識部124は、まず、ステップS32で選択された対象画像の特徴点の中から、局所特徴量のノルムがNrA−d以上NrA+d以下の範囲に含まれる特徴点を抽出する。そして、画像認識部124は、抽出した特徴点の中から、局所特徴量の部分ノルムがPnrA−e以上PnrA+e以下の範囲に含まれる特徴点を、ハミング距離の計算対象として特定する。なお、eは、あらかじめ設定された設定値であり、0以上の整数とされる。例えば、e=1に設定される。
なお、ステップS43でNrAがNrMin+d以上NrMax−d以下の範囲に含まれないと判定された場合には、対象画像の特徴点のうち局所特徴量のノルムがNrA−d以上NrA+d以下の範囲に含まれる特徴点については、部分ノルムが算出されていない。したがって、ステップS43の判定処理により、部分ノルムを用いて計算対象を特定できるか否かが判定される。
ここで、前述のように、NrMinからNrMaxまでの範囲には、ノルムの中央値が含まれる。したがって、図19の処理によれば、キー画像の特徴点についての局所特徴量のノルムが中央値付近である場合に、ステップS43の処理が実行されて、局所特徴量の部分ノルムに基づいてハミング距離の計算対象が限定される。
図10を用いて説明したように、局所特徴量のノルムが中央値付近になる特徴点は、キー画像および対象画像のどちらにおいても多くなる。このため、キー画像におけるこのような特徴点と対象画像におけるこのような特徴点との組み合わせの数は膨大な数になる。しかし、図19の処理により、このような膨大な数の特徴点の組み合わせの中から、ハミング距離の計算に利用される特徴点の組み合わせが部分ノルムに基づいて絞り込まれる。したがって、ハミング距離の計算回数を減少させ、画像検索処理に要する時間を大幅に短縮することができる。
なお、上記の各実施の形態に示した装置(画像処理装置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などの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。