以下に添付図面を参照しながら、本発明の実施形態について説明する。なお、本明細書及び図面において実質的に同一の機能を有する要素については、同一の符号を付することにより重複説明を省略する場合がある。
<1.第1実施形態>
図1を参照しながら、第1実施形態について説明する。図1は、第1実施形態に係る情報処理装置の一例を示した図である。図1に例示した情報処理装置10は、第1実施形態に係る情報処理装置の一例である。
図1に示すように、情報処理装置10は、記憶部11及び計算部12を有する。
記憶部11は、RAM(Random Access Memory)などの揮発性記憶装置、或いは、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性記憶装置である。計算部12は、CPU(Central Processing Unit)やDSP(Digital Signal Processor)などのプロセッサである。但し、計算部12は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの電子回路であってもよい。計算部12は、例えば、記憶部11又は他のメモリに記憶されたプログラムを実行する。
記憶部11は、一部が重複する複数の画像領域の各々に共通の配置規則で配置される複数の画素ペアのうち、画像領域が重複する重複領域において各画像領域に配置された各画素ペアの位置が一致するように設定した配置規則を表す配置情報を記憶する。
例えば、画像領域Ain1の右半分の領域(右領域R2)と、画像領域Ain2の左半分の領域(左領域R1)とが重複するように設定されている場合、画像領域Ain1の右領域R2及び画像領域Ain2の左領域R1が上記の重複領域(図1でハッチングを付した領域)に該当する。また、画像領域Ar1の右領域R2と、画像領域Ar2の左領域R1とが重複するように設定されている場合、画像領域Ar1の右領域R2及び画像領域Ar2の左領域R1が上記の重複領域に該当する。
図1の例において、記憶部11は、右領域R2に各画素が配置される画素ペアの情報と、左領域R1に各画素が配置される画素ペアの情報と、領域R1、R2にそれぞれ1つずつ画素が配置される画素ペアの情報とを配置情報として記憶している。以下、領域R1、R2にそれぞれ1つずつ画素が配置される画素ペアの集合をA群、左領域R1に各画素が配置される画素ペアの集合をB群、右領域R2に各画素が配置される画素ペアの集合をC群と表現する。
配置情報が示す配置規則は、B群の画素ペアとC群の画素ペアとが同じ配置となるように設定される。例えば、この配置規則に従って画像領域Ain1、Ain2に画素ペアを配置した場合、画像領域Ain1の右領域R2に配置される画素ペアの位置と、画像領域Ain2の左領域R1に配置される画素ペアの位置とが一致する。画像領域Ar1、Ar2に画素ペアを配置した場合も同様である。
計算部12は、画像領域に配置規則で配置された各画素ペアの特徴量の組を当該画像領域の特徴量として利用する。また、計算部12は、第1の画像に設定された各画像領域の特徴量と第2の画像に設定された各画像領域の特徴量との距離に基づいて第1の画像と第2の画像との類否を判定する。
特徴量としては、例えば、BRIEF、SIFT、SURF、CARD(Compact And Realtime Descriptors)、FREAK、BRISK(Binary Robust Invariant Scalable Keypoints)などが利用可能である。例えば、BRIEFを利用する場合、画素ペアの2つの画素における輝度差の符号(正負)に基づくビット値が、画素ペアの特徴量となる。輝度差の符号(正負)と、特徴量となるビット値とは予め対応付けられている。また、各画素ペアの特徴を表すビット値を並べたビット列(特徴量の組)は、各画素ペアが配置された画像領域の特徴を表す特徴量となる。
図1の例において、画像領域Ain1の特徴量Qin1は、A群の画素ペアの特徴量を並べたビット列と、B群の画素ペアの特徴量を並べたビット列と、C群の画素ペアの特徴量を並べたビット列とを結合したビット列で表現されている。また、画像領域Ain2の特徴量Qin2は、A群の画素ペアの特徴量を並べたビット列と、B群の画素ペアの特徴量を並べたビット列と、C群の画素ペアの特徴量を並べたビット列とを結合したビット列で表現されている。
画像領域Ain1が第1の画像に設定された画像領域であり、画像領域Ar1が第2の画像に設定された画像領域であるとすると、計算部12は、特徴量Qin1、Qr1の距離を計算する。このとき、計算部12は、A群のビット列同士の距離dA11、B群のビット列同士の距離dB11、C群のビット列同士の距離dC11を計算し、距離dA11、dB11、dC11の和を特徴量Qin1、Qr1の距離とする。
同様に、計算部12は、他の画像領域(例えば、画像領域Ain2、Ar2)の組についても距離を計算する。例えば、計算部12は、特徴量Qin2、Qr2の距離を計算する。このとき、計算部12は、A群のビット列同士の距離dA22、B群のビット列同士の距離dB22、C群のビット列同士の距離dC22を計算し、距離dA22、dB22、dC22の和を特徴量Qin2、Qr2の距離とする。そして、計算部12は、計算した距離に基づいて第1の画像と第2の画像との類否を判定する。
但し、計算部12は、重複領域に位置する画素ペアの特徴量に関する計算結果を記憶部11に格納し、当該画素ペアと同じ位置にある、他の画像領域における画素ペアの特徴量に関する計算の際に記憶部11に格納した計算結果を利用する。
例えば、画像領域Ain1、Ar1の距離を計算する場合(比較#1)、計算部12は、C群の画素ペアに関する距離dC11を計算する。その後、画像領域Ain2、Ar2の距離を計算する場合(比較#2)、計算部12は、B群の画素ペアに関する距離dB22を求めることになる。
画像領域Ain1に配置されたC群の画素ペアと、画像領域Ain2に配置されたB群の画素ペアとは同じ位置に設定される。そのため、画像領域Ain1に配置されたC群の画素ペアの特徴を表すビット列と、画像領域Ain2に配置されたB群の画素ペアの特徴を表すビット列とは同じビット列となる。同様に、画像領域Ar1に配置されたC群の画素ペアの特徴を表すビット列と、画像領域Ar2に配置されたB群の画素ペアの特徴を表すビット列とは同じビット列となる。
従って、距離dC11と距離dB22とは同じ値になる。そこで、計算部12は、距離dC11を計算した際に、その計算結果を記憶部11に格納する。そして、距離dB22を計算する際に、その計算を省略して記憶部11に格納しておいた距離dC11を利用する。つまり、計算部12は、画像領域Ain2、Ar2の距離を計算する際、距離dA22、dC22を計算し、dA22、dC22、dC11の和を特徴量Qin2、Qr2の距離とする。このように、重複領域に関する一部の計算結果を記憶部11に格納しておき、以後の計算に利用することで、距離計算の計算量を低減することが可能になる。
第1及び第2の画像に設定された画像領域同士の距離計算にかかる負荷が低減されることで、少ない計算量で高速に最小距離の画像領域の組を抽出することができ、対応する特徴点の探索にかかる処理負荷を低減することが可能になる。
以上、第1実施形態について説明した。
<2.第2実施形態>
次に、第2実施形態について説明する。
[2−1.システム]
図2を参照しながら、第2実施形態に係るシステムについて説明する。図2は、第2実施形態に係るシステムの一例を示した図である。
図2に示すように、第2実施形態に係るシステムは、端末装置100及びサーバ装置200を含む。携帯電話、スマートフォン、デジタルカメラ、パーソナルコンピュータなどのデバイスは、端末装置100の一例である。アプリケーションサーバやコンテンツマネジメントシステムなどは、サーバ装置200の一例である。
端末装置100は、無線基地局BS及びネットワークNWを介してサーバ装置200にアクセスできる。無線基地局BSは、例えば、移動体通信用の基地局や無線LAN(Local Area Network)用の基地局などである。ネットワークNWは、移動体通信の基幹回線網やWAN(Wide Area Network)などである。
図2のシステムは、例えば、端末装置100で撮像した撮像画像を、サーバ装置200で管理できるようにする写真管理サービスなどに適用できる。また、このシステムは、写真管理機能を有するSNS(Social Networking Service)などのソーシャルメディアサービスにも適用できる。以下では、写真管理サービスの例について説明するが、第2実施形態に係るシステムの適用範囲はこれに限定されない。
多くの場合、画像の管理には、時間情報や位置情報が用いられる。例えば、撮影日時を利用して画像をグループ化して管理する方法や、GPS(Global Positioning System)で取得した撮影場所の情報を利用して画像をグループ化して管理する方法などがある。画像をグループ化しておけば、撮影時間や撮影場所の情報をヒントに画像を検索することが容易になる。その他にも、「家族旅行」や「結婚式」などのタグを画像に付し、タグを利用して画像を管理する方法などがある。
第2実施形態は、画像から特定の物体(以下、ランドマーク)を自動認識し、その認識結果を画像にタグ付けする仕組みに関する。例えば、図2のシステムは、端末装置100により旅行先で撮影した画像の情報をサーバ装置200へと送信すると、サーバ装置200がランドマークを自動認識してタグを付与する仕組みを提供できる。この仕組みがあれば、ランドマークを指定した画像検索や画像の自動整理の実現が容易になる。
ランドマークの認識は、ランドマークの画像(以下、参照画像)と類似する部分が入力画像に含まれるかを判定する処理により実現される。参照画像は複数利用される。また、参照画像は、ランドマークを正面から撮影した画像、他の方向から撮影した画像、同じ方向から異なる画角や明るさで撮影した画像などである。同じランドマークに対して複数の参照画像を利用することで、認識の失敗や誤認識の発生が少なくなる。
ランドマークの認識は、例えば、次のような手順で行われる。
まず、端末装置100が、ランドマークの認識対象とする入力画像に対して複数の特徴点を設定する。但し、特徴点の位置は予め設定されている。特徴点の配置は、例えば、予め決められた間隔で等間隔に配置する方法や、ランダムに決められた不規則な配置パターンで配置する方法などにより決定される。但し、参照画像における特徴点の配置と、入力画像に設定される特徴点の配置とは同じである。
特徴点を設定した端末装置100は、入力画像に設定した特徴点の周辺領域(以下、特徴領域)から特徴量を抽出する。特徴領域は、例えば、特徴点を中心とする矩形領域(例えば、一辺が48画素の矩形領域)である。特徴量は、例えば、BRIEF、SIFT、SURF、CARD、FREAK、BRISKなどである。以下では、BRIEFを利用する例について説明する。
端末装置100により抽出された特徴量はサーバ装置200に送信される。サーバ装置200は、参照画像の各特徴領域から抽出した特徴量を利用して、端末装置100から受信した特徴量に対応する特徴領域を特定する。例えば、サーバ装置200は、入力画像の各特徴領域と参照画像の各特徴領域との組について特徴量同士の距離を計算し、距離が最小となる特徴領域の組を特定する。つまり、サーバ装置200は、特徴点のペアを抽出する。
次に、サーバ装置200は、抽出した特徴点のペアについて統計処理を実行し、入力画像中に参照画像が含まれているか否かを判定する。サーバ装置200は、全ての参照画像について上記の判定処理を実行し、入力画像に含まれる参照画像を特定する。そして、サーバ装置200は、特定した参照画像に対応するランドマークの情報を端末装置100に送信する。端末装置100は、サーバ装置200から受信したランドマークの情報を画面に表示する処理や画像に付与する処理を実行する。
上記のように、図2のシステムは、端末装置100からサーバ装置200へと入力画像を送らず、特徴量だけを送る仕組みとしている。そのため、個人情報である入力画像がネットワークNWなどを介して端末装置100の外部へ漏れる心配が少なくなる。また、図2のシステムは、BRIEFなどの画素ペアに基づく特徴量を利用しており、端末装置100に過度な負荷をかけずにサービスを提供することができる。
以上、第2実施形態に係るシステムについて説明した。以下、このシステムに含まれる端末装置100及びサーバ装置200について、さらに説明する。
[2−2.ハードウェア]
図3を参照しながら、端末装置100が有する機能を実現することが可能なハードウェアについて説明する。図3は、第2実施形態に係る端末装置が有する機能を実現可能なハードウェアの一例を示した図である。
端末装置100が有する機能は、例えば、図3に示す情報処理装置のハードウェア資源を用いて実現することが可能である。つまり、端末装置100が有する機能は、コンピュータプログラムを用いて図3に示すハードウェアを制御することにより実現される。
図3に示すように、このハードウェアは、主に、CPU902と、ROM(Read Only Memory)904と、RAM906と、ホストバス908と、ブリッジ910とを有する。さらに、このハードウェアは、外部バス912と、インターフェース914と、入力部916と、出力部918と、記憶部920と、ドライブ922と、接続ポート924と、通信部926とを有する。
CPU902は、例えば、演算処理装置又は制御装置として機能し、ROM904、RAM906、記憶部920、又はリムーバブル記録媒体928に記録された各種プログラムに基づいて各構成要素の動作全般又はその一部を制御する。ROM904は、CPU902に読み込まれるプログラムや演算に用いるデータなどを格納する記憶装置の一例である。RAM906には、例えば、CPU902に読み込まれるプログラムや、そのプログラムを実行する際に変化する各種パラメータなどが一時的又は永続的に格納される。
これらの要素は、例えば、高速なデータ伝送が可能なホストバス908を介して相互に接続される。一方、ホストバス908は、例えば、ブリッジ910を介して比較的データ伝送速度が低速な外部バス912に接続される。また、入力部916としては、例えば、マウス、キーボード、タッチパネル、タッチパッド、ボタン、スイッチ、及びレバーなどが用いられる。さらに、入力部916としては、赤外線やその他の電波を利用して制御信号を送信することが可能なリモートコントローラが用いられることもある。
出力部918としては、例えば、CRT(Cathode Ray Tube)、LCD(Liquid Crystal Display)、PDP(Plasma Display Panel)、又はELD(Electro-Luminescence Display)などのディスプレイ装置が用いられる。また、出力部918として、スピーカやヘッドホンなどのオーディオ出力装置、又はプリンタなどが用いられることもある。つまり、出力部918は、情報を視覚的又は聴覚的に出力することが可能な装置である。
記憶部920は、各種のデータを格納するための装置である。記憶部920としては、例えば、HDDなどの磁気記憶デバイスが用いられる。また、記憶部920として、SSD(Solid State Drive)やRAMディスクなどの半導体記憶デバイス、光記憶デバイス、又は光磁気記憶デバイスなどが用いられてもよい。
ドライブ922は、着脱可能な記録媒体であるリムーバブル記録媒体928に記録された情報を読み出し、又はリムーバブル記録媒体928に情報を書き込む装置である。リムーバブル記録媒体928としては、例えば、磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリなどが用いられる。
接続ポート924は、例えば、USB(Universal Serial Bus)ポート、IEEE1394ポート、SCSI(Small Computer System Interface)、RS−232Cポート、又は光オーディオ端子など、外部接続機器930を接続するためのポートである。外部接続機器930としては、例えば、プリンタやカメラなどが用いられる。
通信部926は、ネットワーク932に接続するための通信デバイスである。通信部926としては、例えば、有線又は無線LAN(Local Area Network)用の通信回路、WUSB(Wireless USB)用の通信回路、光通信用の通信回路やルータ、ADSL(Asymmetric Digital Subscriber Line)用の通信回路やルータ、携帯電話ネットワーク用の通信回路などが用いられる。通信部926に接続されるネットワーク932は、有線又は無線により接続されたネットワークであり、例えば、インターネット、LAN、放送網、衛星通信回線などを含む。
以上、端末装置100のハードウェアについて説明した。なお、上記のハードウェアは、サーバ装置200が有する機能を実現することも可能である。従って、サーバ装置200のハードウェアについては説明を省略する。
[2−3.端末装置の機能]
次に、図4〜図11を参照しながら、端末装置100の機能について説明する。
図4は、第2実施形態に係る端末装置が有する機能の一例を示したブロック図である。図5は、第2実施形態に係る画素ペア情報の一例を示した図である。図6は、第2実施形態に係る入力画像の特徴点と特徴領域について説明するための図である。図7は、第2実施形態に係る特徴量の計算について説明するための図である。
図8は、第2実施形態に係る特徴点計算の効率化について説明するための第1の図である。図9は、第2実施形態に係る特徴点計算の効率化について説明するための第2の図である。図10は、第2実施形態に係る特徴点計算の効率化について説明するための第3の図である。図11は、第2実施形態に係る特徴点計算の効率化について説明するための第4の図である。
図4に示すように、端末装置100は、記憶部101、画像取得部102、特徴点設定部103、特徴量計算部104、及び送信部105を有する。
なお、記憶部101の機能は、上述したRAM906や記憶部920などを用いて実現できる。画像取得部102、特徴点設定部103、及び特徴量計算部104の機能は、上述したCPU902などを用いて実現できる。送信部105の機能は、上述した接続ポート924や通信部926などを用いて実現できる。
(画素ペア情報101aについて)
記憶部101には、画素ペア情報101aが格納される。画素ペア情報101aは、画像の特徴点毎に設定される特徴領域の特徴量を計算する際に用いる画素のペア(以下、画素ペア)を表す情報である。例えば、画素ペア情報101aには、画素ペアを成す2つの画素の位置を示す位置情報が含まれる。なお、特徴領域は、例えば、特徴点を中心とする矩形領域であり、32画素×32画素や48画素×48画素などのサイズに設定される。
画素ペア情報101aの一例を図5に示す。図5に示すように、画素ペア情報101aには、画素ペアLk(k=1、2、…)を成す2つの画素の座標(X1,Y1)及び(X2,Y2)が含まれる。画素の座標は、特徴領域の左上を原点(0,0)とした座標値で表現される。また、画素ペアの数は、例えば、128個、256個、512個などに設定される。例えば、画素ペアの数を256個に設定した場合、特徴領域毎に256個の画素ペアが設定される。
(特徴点の設定について)
再び図4を参照する。画像取得部102は、ランドマークの認識対象となる画像(以下、入力画像Pin)を取得する。例えば、画像取得部102は、外部の記憶装置(非図示)又は端末装置100に接続されたカメラ(非図示)から入力画像Pinを取得する。また、画像取得部102は、端末装置100が有するカメラ機能を利用して入力画像Pinを取得してもよい。このようにして画像取得部102により取得された入力画像Pinは、記憶部101に格納される。
特徴点設定部103は、記憶部101に格納された入力画像Pinを読み出し、読み出した入力画像Pinに複数の特徴点を設定する。例えば、特徴点設定部103は、図6に示すように、等間隔に配置された複数の特徴点を抽出する方法(Dense Sampling)を用いて入力画像Pinに特徴点を設定する。但し、特徴点の設定にはFAST(Features from Accelerated Segment Test)などの方法も適用できる。
図6に示すように、特徴点Winを基準に特徴領域Ainが設定される。なお、入力画像Pinに設定される特徴点をWinと表記する。また、m番目の特徴点をWin(m)、m+1番目の特徴点をWin(m+1)と表記する。さらに、m番目の特徴点Win(m)を基準に設定される特徴領域をAin(m)と表記する。特徴点設定部103により設定された特徴点Win及び特徴領域Ainの情報は、記憶部101に格納されると共に、特徴量計算部104に入力される。
(特徴量の計算及び送信について)
再び図4を参照する。特徴量計算部104は、画素ペア情報101aを参照し、特徴点設定部103により設定された各特徴領域Ainの特徴量を計算する。
例えば、特徴量計算部104は、図7に示すように、入力画像Pinの特徴領域Ainに設定された画素ペアに含まれる各画素の輝度を抽出する(C1)。次いで、特徴量計算部104は、抽出した2つの輝度の差分を求めて、各画素ペアの輝度差を計算する(C2)。但し、特徴量計算部104は、後述する効率化手法により一部の画素ペアについて輝度差の計算を省略してもよい。次いで、特徴量計算部104は、計算した輝度差の符号(正負)を表すビット値を並べたビット列(以下、局所特徴量)を生成する(C3)。
輝度差の符号とビット値とは予め対応付けられている。例えば、正の符号がビット値「1」に対応付けられ、負の符号がビット値「0」に対応付けられている。また、輝度差を計算する際、画素ペアを成す2つの画素のうち、どちらの画素の輝度から、他方の画素の輝度を減算するかも予め設定されている。例えば、座標(X1,Y1)に位置する画素の輝度から座標(X2,Y2)に位置する画素の輝度を減算した輝度差の符号を局所特徴量の生成に利用することが予め設定されている。また、上記C3の工程でビット値を並べる順番も予め設定されている。
256個の画素ペアが設定された場合、256ビットのビット列で表現された局所特徴量が得られる。局所特徴量は、入力画像Pinに含まれる全ての特徴領域Ainについて計算される。入力画像Pinについて特徴量計算部104により計算された局所特徴量の組は、送信部105に入力される。送信部105は、特徴量計算部104から入力された局所特徴量をサーバ装置200へ送信する。このように、入力画像Pinそのものは送信されないため、ユーザの個人情報が外部へ漏洩するリスクを低減できる。
(特徴量計算の効率化手法について)
ここで、図6、図8〜図11を参照しながら、上述した特徴量計算の効率化手法について説明する。
既に説明したように、特徴点Winの配置及び特徴領域Ainのサイズは予め設定される。設定の例としては、図6に示すように、隣り合う特徴領域Ain同士が一部で重なるように各特徴領域Ainを配置する設定や、隣り合う特徴領域Ain同士が接するように各特徴領域Ainを配置する設定などがある。
図6の例は、左右の方向(X方向)に並んで配置された特徴領域Ain同士について、特徴領域Ainの1/2の部分だけ重なるように設定した場合を示している。この例において、m番目の特徴点Win(m)を基準に設定された特徴領域Ain(m)の右1/2の部分は、m+1番目の特徴点Win(m+1)を基準に設定された特徴領域Ain(m+1)の左1/2の部分と重複している。また、この例において、上下に隣り合う特徴領域Ain同士は接するように設定されている。
特徴領域Ain(m)、Ain(m+1)の局所特徴量を計算する場合、特徴量計算部104は、特徴領域Ain(m)、Ain(m+1)にそれぞれ画素ペアLk(k=1,2,…)を配置し、各画素ペアLkの輝度差に基づくビット値を計算する。
特徴領域Ain(m)、Ain(m+1)について各々独立にビット値の計算を実行してもよいが、特徴領域Ain(m)、Ain(m+1)の重複部分に関するビット値の計算は冗長である。特徴領域Ain(m+1)の左半分についてビット値を計算する際に、特徴領域Ain(m)の右半分について計算したビット値を流用できれば、局所特徴量の計算量を低減することができる。
ビット値を流用するためには、特徴領域Ain(m)の右半分の領域(右領域)における画素ペアの配置と、特徴領域Ain(m+1)の左半分の領域(左領域)における画素ペアの配置とが同じであることが前提となる。但し、特徴領域Ain(m)の右領域にある画素ペアの一部だけが、特徴領域Ain(m+1)の左領域にある画素ペアと同じ配置であっても、ビット値の流用による計算量の低減効果は得られる。
そこで、各特徴領域Ainにおいて、右領域と左領域とで同じ配置となる画素ペア(流用可能な画素ペア)が含まれるように画素ペア情報101aが設定される。この場合、特徴量計算部104は、図8に示すように、特徴領域Ain(m)の局所特徴量を計算した後、流用可能な画素ペアに対応するビット値を保持する。
次いで、特徴量計算部104は、特徴領域Ain(m+1)の局所特徴量を計算する際、特徴領域Ain(m+1)の左領域にある流用可能な画素ペアに対応するビット値の計算を省略し、保持していたビット値を利用して局所特徴量を求める。また、特徴量計算部104は、特徴領域Ain(m+1)の局所特徴量を計算した後、特徴領域Ain(m+2)の計算に流用可能な画素ペアに対応するビット値を保持する。
上記のように、重複領域に設定される画素ペアの一部について局所特徴量の計算時に、既に計算済みのビット値を流用することで、局所特徴量の計算量を低減できる。
ここで、上記の計算方法を適用可能にする画素ペアの配置について、さらに説明する。
図9に示すように、画素ペアは、特徴領域Ainの右領域と左領域との境界を跨ぐように2つの画素が配置されるもの(A群)と、左領域に各画素が配置されるもの(B群)と、右領域に各画素が配置されるもの(C群)とに分類できる。B群に属する画素ペアの左領域における配置と、C群に属する画素ペアの右領域における配置とは同じである。つまり、左領域と右領域とを重ねた場合、左領域に設定された各画素ペアの位置と右領域に設定された各画素ペアの位置とが一致する。
上記のようにA群、B群、C群に属する画素ペアの配置を決定し、全ての画素ペアの配置を統合した全体が、画素ペア情報101aに記録されて局所特徴量の計算に利用される。画素ペア情報101aは、画素ペア毎にA群、B群、C群を特定する属性情報を含んでいてもよい。例えば、図10に示すように、特徴領域Ain(m)、Ain(m+1)に画素ペアL1、L2、…、L6を配置すると、重複領域において画素ペアL5、L6の位置が一致する。よって、図8に示した局所特徴量の効率的な計算が実現可能になる。
A群、B群、C群に属する各画素ペアの特徴を表すビット値を流用しやすくするため、図11に示すように、A群のビット列、B群のビット列、C群のビット列を区分けした局所特徴量の構造を採用することが好ましい。この構造を採用した場合、例えば、図11に示すように、特徴領域Ain(m)の局所特徴量からC群のビット列を抽出し、特徴領域Ain(m+1)の局所特徴量のうちB群のビット列の部分に挿入することで、計算結果の流用が実現できる。
上記のように、図8に示した計算結果の流用、図9に示した画素ペアの配置、及び図11に示した局所特徴量の構造を組み合わせることで、局所特徴量の計算を効率化することが可能になる。また、後述するように、図9に示した画素ペアの配置、及び図11に示した局所特徴量の構造を採用することで、サーバ装置200の処理も効率化される。
以上、端末装置の機能について説明した。
[2−4.サーバ装置の機能]
次に、図12〜図20を参照しながら、サーバ装置200の機能について説明する。
図12は、第2実施形態に係るサーバ装置が有する機能の一例を示したブロック図である。図13は、第2実施形態に係る参照画像情報(参照画像管理テーブル)の一例を示した図である。図14は、第2実施形態に係る参照画像情報(特徴量管理テーブル)の一例を示した図である。図15は、第2実施形態に係る距離情報(距離記録テーブル)の一例を示した図である。
図16は、第2実施形態に係る参照画像の特徴点と特徴領域について説明するための図である。図17は、第2実施形態に係る投票処理について説明するための図である。図18は、第2実施形態に係る判定について説明するための図である。図19は、第2実施形態に係る対応点探索(距離計算)の効率化について説明するための第1の図である。図20は、第2実施形態に係る対応点探索(距離計算)の効率化について説明するための第2の図である。
図12に示すように、サーバ装置200は、記憶部201、受信部202、距離計算部203、投票処理部204、及び判定部205を有する。
記憶部201の機能は、上述したRAM906や記憶部920などを用いて実現できる。受信部202の機能は、上述した接続ポート924や通信部926などを用いて実現できる。距離計算部203、投票処理部204、及び判定部205の機能は、上述したCPU902などを用いて実現できる。
(画素ペア情報201a、参照画像情報201b、距離情報201cについて)
記憶部201には、参照画像Prが格納されている。また、記憶部201には、画素ペア情報201a、参照画像情報201b、及び距離情報201cが格納される。
画素ペア情報201aは、端末装置100の記憶部101に格納されている画素ペア情報101aと同じ画素ペアに関する情報である。参照画像情報201bは、参照画像Prに関連する情報である。距離情報201cは、局所特徴点同士の距離を計算する際に一部の計算結果が格納される距離記録テーブルを含む情報である。
参照画像情報201bは、参照画像管理テーブル、及び特徴量管理テーブルを含む。記憶部201には、様々なランドマークに対応する参照画像Prが格納されている。また、1つのランドマークについて複数のサイズ、複数の撮影方向に対応する複数の参照画像Prが記憶部201に格納されている。これらの参照画像Prのデータとランドマークとを対応付ける情報が参照画像管理テーブルである。
参照画像管理テーブルは、図13に示すように、ランドマーク名と参照画像Prの画像データ(又は画像データへのリンク)とを対応付けるデータベースである。参照画像管理テーブルの各レコードは識別番号ID#1により特定される。
特徴量管理テーブルは、図14に示すように、参照画像Prに含まれる各特徴点と、特徴点毎に計算された局所特徴量とを対応付けるデータベースである。特徴量管理テーブルは、識別番号ID#1で特定される各参照画像Prについて生成される。特徴量管理テーブルの各レコードは識別番号ID#2により特定される。
距離記録テーブルは、図15に示すように、入力画像Pinの特徴領域Ain(m)(m=1,2,…,M)と、参照画像Prの特徴領域Ar(n)(n=1,2,…,N)との距離Dを計算する際に、計算結果の一部(距離d)が記録されるデータベースである。距離dについては、後述する特徴量計算の効率化手法に関する説明の中で詳述する。
(特徴点の設定について)
参照画像Prの特徴点は、入力画像Pinに特徴点を設定する場合と同様に、Dense SamplingやFASTなどの方法により設定される。
図16に示すように、特徴点Wrを基準に特徴領域Arが設定される。参照画像Prに設定される特徴点をWrと表記する。また、n番目の特徴点をWr(n)、n+1番目の特徴点をWr(n+1)と表記する。さらに、n番目の特徴点Wr(n)を基準に設定される特徴領域をAr(n)と表記する。特徴領域Ar(n)(n=1,2,…,N)の局所特徴量は、予め計算されて特徴量管理テーブルに格納されている。局所特徴量の計算は、特徴領域Ainの局所特徴量を計算する方法と同じである。
(距離計算について)
再び図12を参照する。受信部202は、端末装置100から入力画像Pinの局所特徴量を受信する。受信部202により受信された入力画像Pinの局所特徴量は、距離計算部203に入力される。距離計算部203は、局所特徴量に基づき、入力画像Pinの各特徴領域Ainと、参照画像Prの各特徴領域Arとの距離Dを計算する。距離Dは、特徴領域Ain、Ar間における特徴の違いを表す。
ここで、特徴領域Ain、Arの距離Dを計算する方法について、さらに説明する。
以下では、特徴領域Ainの局所特徴量をLFinと表記し、特徴領域Arの局所特徴量をLFrと表記する。距離計算部203は、下記の式(1)により、局所特徴量LFin、LFrからビット列HVを計算する。次いで、距離計算部203は、ビット列HVの長さ(HVに含まれるビット値1の数)を計算する。ビット列HVの長さは、距離Dであり、特徴領域Ain、Ar間における特徴の違いを表す。
HV={LFin XOR LFr}
…(1)
上記の式(1)に含まれるXORは排他的論理和演算を表す。この演算は、局所特徴量LFin、LFrの各ビット値について、一致する場合に1、不一致の場合に0とする演算である。そのため、この演算により1となったビット値の数を合計することで、局所特徴量に基づく特徴領域Ain、Ar間の距離D(特徴の違い)が得られる。
距離計算部203は、全ての参照画像Prについて、上記の方法により入力画像Pinの各特徴領域Ainと、参照画像Prの各特徴領域Arとの間の距離Dを計算する。但し、距離計算部203は、後述する効率化手法により一部の計算を省略し、効率的に上記の距離Dを計算する。距離計算部203により計算された距離Dの情報は、投票処理部204に入力される。
(投票処理について)
投票処理部204は、特徴領域Ar、Ainの各組について計算された距離Dに基づき、類似度が最も高い(距離Dが最も小さくなる)特徴領域Ar、Ainの組を抽出する。例えば、投票処理部204は、図17に示すように、特徴領域Ar(n)について、特徴領域Ain(1)、…、Ain(M)の中から距離Dが最小となる特徴領域Ain(m)を抽出する(対応点探索)。
また、投票処理部204は、特徴領域Arの特徴点Wrと参照画像Prの中心との位置関係(例えば、ベクトル)を利用し、抽出した特徴領域Ainの特徴点Winを基準に、参照画像Prの中心に対応する点(以下、特定点)を特定する(中心推定)。例えば、投票処理部204は、既知である特徴領域Arの特徴点から参照画像Prの中心への向き及び距離(ベクトル)に基づき、対応する入力画像Pinの特徴点から同じ向き及び距離へ移動した点を特定点とする。
図17の場合、投票処理部204は、特徴領域Ar(n)の特徴点Wr(n)と参照画像Prの中心との位置関係を利用し、特徴領域Ain(m)の特徴点Win(m)を基準に特定点(白矩形の点)を特定する。この特定処理は、入力画像Pinの特徴点と、対応する参照画像Prの特徴点とが一致するように参照画像Prを入力画像Pinに重ねた場合に、入力画像Pinにおける参照画像Prの中心を特定する処理に相当する。
入力画像Pinの横幅をwi、高さをhi、参照画像Prの横幅をwr、高さをhrとすると、特定点の座標(Xv,Yv)は、下記の式(2)及び式(3)により計算できる。下記の式(2)及び式(3)において、特徴点Wrの座標を(Xr,Yr)と表記し、特徴点Wrに対応する特徴点Winの座標を(Xi,Yi)と表記している。
Xv = Xi−Xr+wr/2
…(2)
Yv = Yi−Yr+hr/2
…(3)
特定点の座標を計算した投票処理部204は、統計的手法(例えば、投票)により入力画像Pinに参照画像Prが含まれるか否かを判定する。投票は、図17に示すように、入力画像Pinと同じサイズの領域に枡目を設けた投票マップを利用して行われる。投票マップの各枡目にはカウンタが対応付けられている。投票処理部204は、特定点の座標を含む枡目を特定し、特定した枡目に対応するカウンタのカウント値(投票数)をカウントアップする。このカウントアップに係る処理が投票である。
投票処理部204は、参照画像Prの各特徴点について投票を行う。投票が終了した後の投票マップから、図18に示すように投票数の分布が得られる。投票が終了すると、判定部205は、投票数の最大値を抽出する。判定部205は、抽出した最大数と予め設定した閾値Thとを比較する。一変形例として、判定部205は、最大数を投票マップ内の全投票数で割った正規化値と閾値とを比較してもよい。なお、閾値は、様々な画像を用いて実験し、正解確率などの評価値が許容範囲内になるように設定される。
最大数が閾値Thより大きい場合、判定部205は、入力画像Pinの中に参照画像Prが存在すると判定する。この場合、判定部205は、最大数に対応する枡目の位置を参照画像Prの中心位置と判断する。一方、最大数が閾値Thより小さい場合、判定部205は、入力画像Pinの中に参照画像Prが存在しないと判定する。投票マップを利用して判定を行うことで、入力画像Pinと参照画像Prとの間に存在する軽微な誤差を吸収し、ロバストな判定を行うことができる。
入力画像Pinの中に参照画像Prが存在すると判定した場合、判定部205は、その参照画像Prに対応する参照画像管理テーブルを記憶部201から読み出し、参照画像Prに対応するランドマークの情報を端末装置100に送信する。ランドマークの情報は、例えば、ランドマークの名称や位置、参照画像管理テーブルのIDなどである。
ランドマーク毎にタグ情報を用意しておき、判定結果に応じてランドマークに対応するタグ情報が端末装置100に送信されるようにしてもよい。この場合、端末装置100でタグ情報が入力画像Pinに自動付与される仕組みとしてもよい。
複数のランドマークが存在すると判定された場合、判定部205は、それら全てのランドマークの情報を端末装置100に送信してもよいし、投票数の合計値や最大数が最も大きいランドマークの情報を端末装置100に送信してもよい。
参照画像管理テーブルに含まれる全ての参照画像Prについて、入力画像Pinの中に参照画像Prが存在しないと判定した場合、判定部205は、ランドマークが存在しない旨を示すエラー情報を端末装置100に送信する。
(対応点探索の効率化手法について)
ここで、図9、図17、図19及び図20を参照しながら、対応点探索の効率化手法について説明する。
既に説明したように、距離計算部203は、対応点探索のために、参照画像Prの各特徴点Wrと、入力画像Pinの各特徴点Winとの間で局所特徴量の距離Dを計算する。例えば、図17に示すように、距離計算部203は、特徴点Wr(n)(n=1,2,…,N)を基準に設定された特徴領域Ar(n)と、特徴点Win(m)(m=1,2,…,M)を基準に設定された特徴領域Ain(m)とについて距離Dを計算する。特徴点Wr、Winの数が多くなればなるほど、距離Dの計算にかかる負荷は高くなる。そのため、距離Dの計算にかかる負荷を低減できれば、対応点探索の処理を効率化できる。
例えば、特徴点Win(m)、Win(m+1)と、特徴点Wr(n)、Wr(n+1)との距離Dを計算する場合、図19に示すように、距離計算部203は、4通りの計算S1、…、S4を実行する。
距離計算部203は、(S1)特徴領域Ain(m)の局所特徴量及び特徴領域Ar(n)の局所特徴量に基づく距離Dの計算、(S2)特徴領域Ain(m)の局所特徴量及び特徴領域Ar(n+1)の局所特徴量に基づく距離Dの計算を実行する。また、距離計算部203は、(S3)特徴領域Ain(m+1)の局所特徴量及び特徴領域Ar(n)の局所特徴量に基づく距離Dの計算、(S4)特徴領域Ain(m+1)の局所特徴量及び特徴領域Ar(n+1)の局所特徴量に基づく距離Dの計算を実行する。
特徴領域Ain(m)の右領域と特徴領域Ain(m+1)の左領域とは重複領域である。また、特徴領域Ar(n)の右領域と特徴領域Ain(n+1)の左領域とは重複領域である。また、図9に示すように、左領域に配置されるB群の画素ペアと、右領域に配置されるC群の画素ペアとは同じ配置である。
つまり、特徴領域Ain(m)の局所特徴量のうちC群のビット列は、特徴領域Ain(m+1)の局所特徴量のうちB群のビット列と同じである。さらに、特徴領域Ar(n)の局所特徴量のうちC群のビット列は、特徴領域Ar(n+1)の局所特徴量のうちB群のビット列と同じである。従って、S1で計算される距離DのうちC群のビット列に関する計算結果(距離d)は、S4で計算される距離DのうちB群のビット列に関する計算結果と一致する。そのため、S1で計算した計算結果の一部(距離d)をS4の計算に流用すれば、D4の計算の一部を省略して距離Dの計算にかかる負荷を低減できる。
距離計算部203は、図20に示すように、A群のビット列同士、B群のビット列同士、C群のビット列同士で排他的論理和演算を実行し、それぞれA群の距離DA、B群の距離DB、C群の距離DCを計算する。そして、距離計算部203は、A群の距離DA、B群の距離DB、C群の距離DCを合計して距離Dを求める。例えば、特徴領域Ain(m)、Ar(n)の距離D(m,n)は、A群の距離DA(m,n)、B群の距離DB(m,n)、C群の距離DC(m,n)の和で与えられる。
距離D(m,n)を計算した距離計算部203は、特徴領域Ain(m+1)、Ar(n+1)の距離D(m+1,n+1)を計算する際に流用するため、C群の距離DC(m,n)を保持する。このとき、距離計算部203は、距離DC(m,n)を距離記録テーブル(図15を参照)のd(m,n)の欄に格納する。
距離計算部203は、特徴領域Ain(m+1)、Ar(n+1)の距離D(m+1,n+1)を計算する際、B群の距離DB(m+1,n+1)の計算を省略し、距離記録テーブルのd(m,n)の欄に格納した値をB群の距離DB(m+1,n+1)として利用する。つまり、距離計算部203は、A群の距離DA(m+1,n+1)、d(m,n)欄の値(距離DC(m,n))、C群の距離DC(m+1,n+1)の和を距離D(m+1,n+1)とする。
上記の例は、画像内に配置された複数の特徴点のうち、左上に配置された特徴点を始点として、右側へと順番に処理対象を移動させ、右端の特徴点の次に、下段の左端の特徴点を処理対象とし、右下の特徴点まで順次処理を行う場合を示した。この場合、左端に位置する特徴点については流用可能な距離dはないため、距離計算部203は、右端に位置する特徴点について距離を計算する際にC群の距離DCを保持しない。このように、端部に位置する特徴点に関する処理を実行する際、距離計算部203は、流用可能な距離dの有無に応じて図20に示した処理を実行するか否かを判断する。
上記の方法を適用すると、図19の例では計算量が3/4に削減される。このように、距離Dの計算負荷を低減することで、対応点探索にかかる処理が効率化され、画像同士のマッチングにかかる処理が高速化される。
以上、サーバ装置の機能について説明した。
[2−5.処理の流れ]
次に、図21〜図33を参照しながら、端末装置100及びサーバ装置200が実行する処理の流れについて説明する。
(2−5−1.端末装置の動作)
まず、図21及び図22を参照しながら、端末装置100の動作に係る処理の流れについて説明する。
図21は、第2実施形態に係る端末装置の動作について説明するためのフロー図である。図22は、第2実施形態に係る端末装置の動作のうち、特徴量の計算に関する動作について説明するためのフロー図である。
(端末装置の動作)
(S101)画像取得部102は、ランドマークの認識対象となる画像(入力画像Pin)を取得する。
例えば、画像取得部102は、外部の記憶装置又は端末装置100に接続されたカメラから入力画像Pinを取得する。また、画像取得部102は、端末装置100が有するカメラ機能を利用して入力画像Pinを取得してもよい。画像取得部102により取得された入力画像Pinは、記憶部101に格納される。
(S102)特徴点設定部103は、記憶部101に格納された入力画像Pinを読み出し、読み出した入力画像Pinに複数の特徴点Winを設定する。
例えば、特徴点設定部103は、等間隔に配置された複数の特徴点Winを抽出する方法(Dense Sampling)を用いて入力画像Pinに特徴点Winを設定する。但し、特徴点Winの設定にはFASTなどの方法も適用できる。特徴点設定部103により設定された特徴点Win及び特徴領域Ainの情報は、記憶部101に格納される。また、特徴点Win及び特徴領域Ainの情報は、特徴量計算部104に入力される。
(S103)特徴量計算部104は、S102で設定された特徴点Winの1つを選択する。
(S104)特徴量計算部104は、画素ペア情報101aを参照し、S103で選択した特徴点Winに対応する特徴領域Ainの局所特徴量を計算する。
例えば、特徴量計算部104は、入力画像Pinの特徴領域Ainから画素ペア毎に各画素の輝度を抽出する(C1)。次いで、特徴量計算部104は、画素ペア毎に抽出した2つの輝度の差分を求めることで、各画素ペアの輝度差を計算する(C2)。次いで、特徴量計算部104は、計算した輝度差の符号(正負)を表すビット値を並べたビット列(局所特徴量)を生成する(C3)。
(S105)特徴量計算部104は、入力画像Pinに含まれる全ての特徴点Winについて特徴量の計算を終えたか否かを判定する。入力画像Pinに含まれる全ての特徴点Winについて特徴量の計算を終えた場合、処理はS106へと進む。一方、入力画像Pinに含まれる全ての特徴点Winについて特徴量の計算を終えていない場合、処理はS103へと進む。
(S106)特徴量計算部104は、入力画像Pinについて計算した局所特徴量の組を送信部105に入力する。そして、送信部105は、特徴量計算部104から入力された局所特徴量をサーバ装置200へ送信する。S106の処理が完了すると、図21に示した一連の処理は終了する。
ここで、S104の処理について、さらに説明する。
(S111)特徴量計算部104は、画素ペア情報101aを参照し、特徴点Winの周辺に設定された特徴領域Ainに複数の画素ペアを設定する。
S111の処理後、S112〜S116の処理は、A群、B群、C群の順に、各群に属する画素ペアの集合について順次実行される。A群は、特徴領域Ainの左側1/2の範囲に一方の画素が含まれ、右側1/2の範囲に他方の画素が含まれる画素ペアの集合である。B群は、特徴領域Ainの左側1/2の範囲に両方の画素が含まれる画素ペアの集合である。C群は、特徴領域Ainの右側1/2の範囲に両方の画素が含まれる画素ペアの集合である。
(S112)特徴量計算部104は、流用可能なビット列があるか否かを判定する。B群の画素ペアとC群の画素ペアとは同じ配置である。そのため、例えば、特徴領域Ain(m)の左隣に位置する特徴領域Ain(m−1)の局所特徴量が計算済みの場合、特徴領域A(m−1)のC群のビット列を特徴領域A(m)のB群のビット列に流用できる。
処理対象がA群又はC群である場合、流用可能なビット列はないため、処理はS113へと進む。処理対象がB群であり、流用可能なビット列がある場合、特徴量計算部104は、流用元となるC群のビット列を流用先となるB群のビット列とする。そして、S113〜S116の処理は省略され、処理対象がC群に切り替わる。処理対象がB群であり、流用可能なビット列がない場合、処理はS113へと進む。
(S113)特徴量計算部104は、処理対象の群に属する画素ペアを1つ選択する。
(S114)特徴量計算部104は、S113で選択した画素ペアの輝度差を計算する。例えば、特徴量計算部104は、入力画像Pinの特徴領域Ainから画素ペアの各画素の輝度を抽出する。そして、特徴量計算部104は、抽出した2つの輝度の差分を求めることで、画素ペアの輝度差を計算する。
(S115)特徴量計算部104は、S114で計算した輝度差の符号(正負)に対応するビット値を選択し、選択したビット値を局所特徴量のビット値に設定する。
輝度差の符号とビット値とは予め対応付けられている。例えば、正の符号がビット値「1」に対応付けられ、負の符号がビット値「0」に対応付けられている。また、輝度差を計算する際、画素ペアを成す2つの画素のうち、どちらの画素の輝度から、他方の画素の輝度を減算するかも予め設定されている。例えば、座標(X1,Y1)に位置する画素の輝度から座標(X2,Y2)に位置する画素の輝度を減算した輝度差の符号を局所特徴量の生成に利用することが予め設定されている。
(S116)特徴量計算部104は、処理対象の群に属する全ての画素ペアを選択し終えたか否かを判定する。全ての画素ペアを選択し終えていない場合、処理はS113へと進む。一方、全ての画素ペアを選択し終えた場合、処理はS117へと進む。
(S117)特徴量計算部104は、各群のビット列を結合して局所特徴量とする。また、特徴量計算部104は、C群のビット列を記憶部101に格納して保存する。S117の処理が完了すると、図22に示した一連の処理は終了する。
以上、端末装置100の動作に係る処理の流れについて説明した。
(2−5−2.サーバ装置の動作)
次に、図23〜図25を参照しながら、サーバ装置200の動作に係る処理の流れについて説明する。
図23は、第2実施形態に係るサーバ装置の動作について説明するためのフロー図である。図24は、第2実施形態に係るサーバ装置の動作のうち、参照画像の探索に関する動作について説明するためのフロー図である。図25は、第2実施形態に係るサーバ装置の動作のうち、距離計算に関する動作について説明するためのフロー図である。
(S201)受信部202は、端末装置100から入力画像Pinの局所特徴量を受信する。受信部202により受信された入力画像Pinの局所特徴量は、距離計算部203に入力される。
(S202)距離計算部203は、参照画像管理テーブルに含まれる参照画像Prを1つ選択する。
(S203)距離計算部203、投票処理部204、及び判定部205は、S202で選択した参照画像Prの探索処理を実行する。
例えば、距離計算部203は、参照画像Prの特徴領域Arと入力画像Pinの特徴領域Ainとの相違度を表す距離Dを計算する。投票処理部204は、距離計算部203が計算した距離Dに基づいて投票マップMPを生成する。判定部205は、投票処理部204が生成した投票マップMPを利用し、最大の投票数と閾値Thとの比較結果に基づいて参照画像Prが入力画像Pinに存在するか否かを判断する。
(S204)判定部205は、参照画像管理テーブルに含まれる全ての参照画像Prを選択し終えたか否かを判定する。参照画像管理テーブルに含まれる全ての参照画像Prを選択し終えていない場合、処理はS202へと進む。一方、参照画像管理テーブルに含まれる全ての参照画像Prを選択し終えた場合、処理はS205へと進む。
(S205)判定部205は、S203の結果に基づき、少なくとも1つの参照画像Prが入力画像Pinに存在したか否かを判定する。少なくとも1つの参照画像Prが入力画像Pinに存在した場合、処理はS206へと進む。一方、S203の結果から、少なくとも1つの参照画像Prが入力画像Pinに存在すると判定されなかった場合、処理はS207へと進む。
(S206)判定部205は、対応する参照画像Prの参照画像管理テーブルを記憶部201から読み出し、参照画像Prに含まれるランドマークの情報を端末装置100に送信する。S206の処理が完了すると、図23に示した一連の処理は終了する。
(S207)判定部205は、ランドマークの検出に失敗した旨を示すエラー情報を端末装置100に送信する。S207の処理が完了すると、図23に示した一連の処理は終了する。
ここで、S203の処理について、さらに説明する。
(S221)距離計算部203は、参照画像Prの特徴点Wrを1つ選択する。
(S222)距離計算部203は、受信部202により受信された入力画像Pinの局所特徴量に基づき、入力画像Pinの各特徴領域Ainと参照画像Prの各特徴領域Arとの距離D(特徴の相違度)を計算する。例えば、距離計算部203は、上記の式(1)に従って、局所特徴量LFin、LFrからビット列HVを計算する。但し、LFinは特徴領域Ainの局所特徴量であり、LFrは特徴領域Arの局所特徴量である。
距離計算部203は、ビット列HVの長さ(HVに含まれるビット値1の数)を計算する。ビット列HVの長さは、特徴領域Ain、Ar間における特徴の相違度を表す距離Dとなる。つまり、距離Dが大きいほど特徴領域Ain、Arの特徴が大きく相違し、距離Dが小さいほど特徴領域Ain、Arの特徴が類似していることを表す。距離計算部203により計算された距離Dは、投票処理部204に入力される。
(S223)投票処理部204は、参照画像Prの特徴領域Arと、入力画像Pinの各特徴領域Ainとの組について計算された距離Dに基づき、類似度が最も高い(距離Dが最も小さくなる)特徴領域Ar、Ainの組を抽出する。また、投票処理部204は、抽出した組に対応する特徴点Win、Wrの組を特定する。投票処理部204は、特徴領域Arの特徴点Wrと参照画像Prの中心との位置関係に基づき、参照画像Prの中心が位置する入力画像Pin内の位置(特定点)を検出(特定)する。
(S224)投票処理部204は、S223で特定した特定点に対応する投票マップMPの位置(枡目)に投票する。つまり、投票処理部204は、特定点の座標を含む投票マップMPの枡目を抽出し、抽出した枡目に対応するカウンタのカウント値(投票数)をカウントアップする。
(S225)投票処理部204は、参照画像Prに含まれる全ての特徴点を選択し終えたか否かを判定する。参照画像Prに含まれる全ての特徴点を選択し終えていない場合、処理はS221へと進む。一方、参照画像Prに含まれる全ての特徴点を選択し終えた場合、処理はS226へと進む。
(S226)判定部205は、投票マップMPから投票数の最大値を抽出する。
(S227)判定部205は、S226で抽出した投票数の最大値が閾値Thより大きいか否かを判定する。投票数の最大値が閾値Thより大きい場合、処理はS229へと進む。一方、投票数の最大値が閾値Thより大きくない場合、処理はS228へと進む。
(S228)判定部205は、S203の処理結果として、入力画像Pin中に参照画像Prが存在しないと判定する。S228の処理が完了すると、図24に示した一連の処理は終了する。
(S229)判定部205は、S203の処理結果として、入力画像Pin中に参照画像Prが存在すると判定する。S229の処理が完了すると、図24に示した一連の処理は終了する。
ここで、S222の処理について、さらに説明する。
(S231)距離計算部203は、入力画像Pinに配置された複数の特徴点Win(m)(m=1,2,…、M)について、左上を始点として、右下を終点とする特徴点Winの位置を示すインデックスjを1に初期化する。つまり、Win(1)を左上の特徴点とし、jが大きくなるにつれて、特徴点の位置が右側へと移動し、右端に位置する特徴点の次は下段左端の特徴点に位置が移動し、Win(M)が右下の特徴点となるようにjに応じて特徴点Win(j)の位置が特定される。
(S232)距離計算部203は、処理対象の特徴領域Ar(n)の局所特徴量のうちA群のビット列と、特徴領域Ain(j)の局所特徴量のうちA群のビット列との距離DAを計算する。つまり、距離計算部203は、距離DAとして、A群のビット列同士の排他的論理和を計算する。
(S233)距離計算部203は、B群について流用可能な計算結果があるか否かを判定する。
(判定#1)距離計算部203は、特徴領域Ain(j)、Ain(j−1)の重複領域があるか否かを判定する。例えば、jが1の場合、Ain(j−1)がないため、距離計算部203は、重複領域がないと判定する。また、特徴領域Ain(j)が左端に位置する場合、特徴領域Ain(j)、Ain(j−1)は重複しないため、距離計算部203は、重複領域がないと判定する。
(判定#2)判定#1で重複領域があると判定した場合、距離計算部203は、特徴領域Ar(n)、Ar(n−1)の重複領域があるか否かを判定する。例えば、Ar(n)が左上に位置する場合、Ar(n−1)がないため、距離計算部203は、重複領域がないと判定する。また、特徴領域Ar(n)が左端に位置する場合、特徴領域Ar(n)、Ar(n−1)は重複しないため、距離計算部203は、重複領域がないと判定する。
上記の判定#1で特徴領域Ain(j)、Ain(j−1)の重複領域がないと判定した場合、距離計算部203は、流用可能な計算結果がないと判定する。また、上記の判定#2で特徴領域Ar(n)、Ar(n−1)の重複領域がないと判定した場合も、距離計算部203は、流用可能な計算結果がないと判定する。一方、上記の判定#2で特徴領域Ar(n)、Ar(n−1)の重複領域があると判定した場合、距離計算部203は、流用可能な計算結果があると判定する。
流用可能な計算結果があると判定された場合、処理はS235へと進む。一方、流用可能な計算結果がないと判定された場合、処理はS234へと進む。
(S234)距離計算部203は、処理対象の特徴領域Ar(n)の局所特徴量のうちB群のビット列と、特徴領域Ain(j)の局所特徴量のうちB群のビット列との距離DB(j,n)を計算する。つまり、距離計算部203は、距離DB(j,n)として、B群のビット列同士の排他的論理和を計算する。
(S235)距離計算部203は、処理対象の特徴領域Ar(n)の局所特徴量のうちB群のビット列と、特徴領域Ain(j)の局所特徴量のうちB群のビット列との距離DB(j,n)として、過去に計算した流用可能な計算結果を利用する。つまり、距離計算部203は、特徴領域Ar(n−1)の局所特徴量のC群のビット列と、特徴領域Ain(j−1)の局所特徴量のうちC群のビット列との距離DC(j−1,n−1)を距離DB(j,n)とする。距離DC(j−1,n−1)は、距離記録テーブルに格納されている。
(S236)距離計算部203は、処理対象の特徴領域Ar(n)の局所特徴量のうちC群のビット列と、特徴領域Ain(j)の局所特徴量のうちC群のビット列との距離DC(j,n)を計算する。つまり、距離計算部203は、距離DC(j,n)として、C群のビット列同士の排他的論理和を計算する。
(S237)距離計算部203は、S236で計算した距離DC(j,n)を距離記録テーブルに格納する。このとき、距離計算部203は、距離DC(j,n)を距離記録テーブルのd(j,n)欄に格納する。
(S238)距離計算部203は、距離DA(j,n)、距離DB(j,n)、及び距離DC(j,n)を加算して、特徴領域Ain(j)、Ar(n)の距離D(j,n)を求める。
(S239)距離計算部203は、インデックスjをインクリメント(j=j+1)する。つまり、距離計算部203は、処理対象とする特徴領域Ainを移動させる。
(S240)距離計算部203は、jがNより大きい(j>N)か否かを判定する。j>Nである場合、図25に示した一連の処理は終了する。一方、j>Nでない場合、処理はS232へと進む。
上記のように、重複領域について流用可能な計算結果がある場合に、その計算結果を流用(S235)して一部の計算(S234)を省略することで、距離計算の負荷が低減される。その結果、対応点探索にかかる処理負担の軽減及び処理の高速化が実現される。
以上、サーバ装置200の動作に係る処理の流れについて説明した。
[2−6.変形例#1(重複領域を大きくする例)]
ここで、第2実施形態に係る一変形例(変形例#1)について説明する。変形例#1は、重複領域が特徴領域に占める割合を大きくする方法に関する。例えば、変形例#1の技術は、図6に例示した特徴点の配置よりも密に特徴点を配置する場合や、特徴点の密度を変えずに、特徴領域のサイズを大きくする場合に適用できる。ここでは、図26及び図27を参照しながら、密に特徴点を配置する場合を例に説明する。
図26は、第2実施形態の一変形例(変形例#1)に係る特徴点の配置について説明するための図である。図27は、第2実施形態の一変形例(変形例#1)に係る画素ペアの配置及び局所特徴量の構造について説明するための図である。
既に説明した図6の例において、隣り合う特徴領域Ain同士の重複領域は、特徴領域Ainの1/2の範囲に設定されていた。一方、図26の例は、隣り合う特徴領域Ain同士の重複領域が、特徴領域Ainの3/4の範囲に設定されている。この場合、特徴領域Ain(1)には、特徴領域Ain(2)、Ain(3)、Ain(4)の一部が重なる。そのため、画素ペアの配置は、図27に示すように、特徴領域Ainを4つに分割した小領域のいずれに各画素が位置するかを考慮して設定される。
既に説明した図9の例は、一方の画素が右領域、他方の画素が左領域に位置する画素ペアをA群、両画素が左領域に位置する画素ペアをB群、両画素が右領域に位置する画素ペアをC群とする画素ペアの分類を示していた。一方、図27の例は、画素ペアを結ぶ線が小領域の境界を跨ぐ数で、A群、B群、C群、D群を分類し、さらに、画素の位置に応じてB群を2つの群に分け、C群を3つの群に分け、D群を4つの群に分けた分類を示している。以下、小領域を左から順に、小領域#1、小領域#2、小領域#3、小領域#4と呼ぶことにする。
(A群について)
A群に属する画素ペアは、一方の画素が小領域#1に位置し、他方の画素が小領域#4に位置する。そのため、A群に属する画素ペアを結ぶ線は3つの境界を跨ぐことになる。
(B群について)
B群は、B1群とB2群とに分けられる。B1群に属する画素ペアは、一方の画素が小領域#1に位置し、他方の画素が小領域#3に位置する。B2群に属する画素ペアは、一方の画素が小領域#2に位置し、他方の画素が小領域#4に位置する。そのため、B1、B2群に属する画素ペアを結ぶ線は2つの境界を跨ぐ。
B1群の画素ペアとB2群の画素ペアとは同じ配置となるように設定される。そのため、B2群は、B1群に関する局所特徴量又は距離Dの計算時に流用可能なビット列又は距離Dの一部(距離d)を与える。
例えば、特徴領域Ain(1)のB2群のビット列は、特徴領域Ain(2)のB1群のビット列と一致する。特徴領域Ain(2)の局所特徴量を計算する際に、特徴領域Ain(1)のB2群のビット列を流用できる。また、特徴領域Ar(1)、Ain(1)の距離D(1,1)のうちB2群の距離DB2(1,1)は、特徴領域Ar(2)、Ain(2)の距離D(2,2)のうちB1群の距離DB1(2,2)と一致する。そのため、距離D(2,2)を計算する際に距離DB2(1,1)を流用することができる。
(C群について)
C群は、C1群、C2群、C3群に分けられる。C1群に属する画素ペアは、一方の画素が小領域#1に位置し、他方の画素が小領域#2に位置する。C2群に属する画素ペアは、一方の画素が小領域#2に位置し、他方の画素が小領域#3に位置する。C3群に属する画素ペアは、一方の画素が小領域#3に位置し、他方の画素が小領域#4に位置する。そのため、C1、C2、C3群に属する画素ペアを結ぶ線は1つの境界を跨ぐ。
C1群の画素ペア、C2群の画素ペア、C3群の画素ペアは同じ配置となるように設定される。そのため、C2群は、C1群に関する局所特徴量又は距離Dの計算時に流用可能なビット列又は距離Dの一部(距離d)を与える。C3群は、C1群又はC2群に関する局所特徴量又は距離Dの計算時に流用可能なビット列又は距離Dの一部(距離d)を与える。
例えば、特徴領域Ain(1)のC2群のビット列は、特徴領域Ain(2)のC1群のビット列と一致する。特徴領域Ain(1)のC3群のビット列は、特徴領域Ain(2)のC2群のビット列、特徴領域Ain(3)のC1群のビット列と一致する。そのため、特徴領域Ain(2)の局所特徴量を計算する際に、特徴領域Ain(1)のC2群及びC3群のビット列を流用できる。また、特徴領域Ain(3)の局所特徴量を計算する際に、特徴領域Ain(1)のC3群のビット列を流用できる。
また、特徴領域Ar(1)、Ain(1)の距離D(1,1)のうちC2群の距離DC2(1,1)は、特徴領域Ar(2)、Ain(2)の距離D(2,2)のうちC1群の距離DC1(2,2)と一致する。特徴領域Ar(1)、Ain(1)の距離D(1,1)のうちC3群の距離DC3(1,1)は、特徴領域Ar(2)、Ain(2)の距離D(2,2)のうちC2群の距離DC2(2,2)と一致する。そのため、距離D(2,2)を計算する際に距離DC2(1,1)、DC3(1,1)を流用することができる。
また、特徴領域Ar(1)、Ain(1)の距離D(1,1)のうちC3群の距離DC3(1,1)は、特徴領域Ar(3)、Ain(3)の距離D(3,3)のうちC1群の距離DC1(3,3)と一致する。そのため、距離D(3,3)を計算する際に距離DC3(1,1)を流用することができる。
(D群について)
D群は、D1群、D2群、D3群、D4群に分けられる。D1群に属する画素ペアは、両画素が小領域#1に位置する。D2群に属する画素ペアは、両画素が小領域#2に位置する。D3群に属する画素ペアは、両画素が小領域#3に位置する。D4群に属する画素ペアは、両画素が小領域#4に位置する。つまり、D1、D2、D3、D4群に属する画素ペアを結ぶ線は境界を跨がない。
D1群の画素ペア、D2群の画素ペア、D3群の画素ペア、D4群の画素ペアは同じ配置となるように設定される。そのため、D2群は、D1群に関する局所特徴量又は距離Dの計算時に流用可能なビット列又は距離Dの一部(距離d)を与える。D3群は、D1群又はD2群に関する局所特徴量又は距離Dの計算時に流用可能なビット列又は距離Dの一部(距離d)を与える。D4群は、D1群、D2群、D3群に関する局所特徴量又は距離Dの計算時に流用可能なビット列又は距離Dの一部(距離d)を与える。
例えば、特徴領域Ain(1)のD2群のビット列は、特徴領域Ain(2)のD1群のビット列と一致する。また、特徴領域Ain(1)のD3群のビット列は、特徴領域Ain(2)のD2群のビット列、特徴領域Ain(3)のD1群のビット列と一致する。特徴領域Ain(1)のD4群のビット列は、特徴領域Ain(2)のD3群のビット列、特徴領域Ain(3)のD2群のビット列、特徴領域Ain(4)のD1群のビット列と一致する。
そのため、特徴領域Ain(2)の局所特徴量を計算する際に、特徴領域Ain(1)のD2群、D3群、D4群のビット列を流用できる。また、特徴領域Ain(3)の局所特徴量を計算する際に、特徴領域Ain(1)のD3群、D4群のビット列を流用できる。また、特徴領域Ain(4)の局所特徴量を計算する際に、特徴領域Ain(1)のD4群のビット列を流用できる。
また、特徴領域Ar(1)、Ain(1)の距離D(1,1)のうちD2群の距離DD2(1,1)は、特徴領域Ar(2)、Ain(2)の距離D(2,2)のうちD1群の距離DD1(2,2)と一致する。また、特徴領域Ar(1)、Ain(1)の距離D(1,1)のうちD3群の距離DD3(1,1)は、特徴領域Ar(2)、Ain(2)の距離D(2,2)のうちD2群の距離DD2(2,2)と一致する。さらに、距離DD3(1,1)は、特徴領域Ar(3)、Ain(3)の距離D(3,3)のうちD1群の距離DD1(3,3)と一致する。
また、特徴領域Ar(1)、Ain(1)の距離D(1,1)のうちD4群の距離DD4(1,1)は、特徴領域Ar(2)、Ain(2)の距離D(2,2)のうちD3群の距離DD3(2,2)と一致する。さらに、距離DD4(1,1)は、特徴領域Ar(3)、Ain(3)の距離D(3,3)のうちD2群の距離DD2(3,3)と一致する。そして、距離DD4(1,1)は、特徴領域Ar(4)、Ain(4)の距離D(4,4)のうちD1群の距離DD1(4,4)と一致する。
そのため、距離D(2,2)を計算する際に距離DD2(1,1)、DD3(1,1)、DD4(1,1)を流用することができる。また、距離D(3,3)を計算する際に距離DD3(1,1)、DD4(1,1)を流用することができる。さらに、距離D(4,4)を計算する際に距離DD4(1,1)を流用することができる。
上記の流用を容易にするため、図27に示すように、局所特徴量は、A群、B1群、B2群、C1群、…、C3群、D1群、…、D4群のビット列をそれぞれ結合したビット列で表現される。また、距離Dは、同じ群のビット列同士の距離を加算した値で表現される。変形例#1の場合、上記のように流用可能なビット列及び距離dの種類が変更されるが、図22や図25などに記載した処理フローの基本的な流れは同じである。
以上、変形例#1について説明した。
[2−7.変形例#2(2次元的に特徴領域の一部が重複する配置)]
次に、第2実施形態に係る一変形例(変形例#2)について説明する。変形例#2は、上下左右に隣接する特徴領域が一部で重なるように配置する方法に関する。
(2−7−1.特徴点、画素ペア、距離記録テーブル)
図28〜図30を参照しながら、変形例#2に係る特徴点の配置、画素ペアの配置、距離記録テーブルの設定などについて説明する。
図28は、第2実施形態の一変形例(変形例#2)に係る特徴点の配置について説明するための図である。図29は、第2実施形態の一変形例(変形例#2)に係る画素ペアの配置及び局所特徴量の構造について説明するための図である。図30は、第2実施形態の一変形例(変形例#2)に係る距離情報の一例を示した図である。
図28の例は、上下左右に隣接する特徴領域Ainが、特徴領域Ainの1/2の範囲で重なるように特徴点Winの配置及び特徴領域Ainのサイズを設定する場合を示している。この例では2次元的な座標表示を利用して特徴点Winの位置が表現されている。特徴領域Ainの位置についても同様である。
例えば、左上端の特徴点がWin(1,1)、Win(1,1)の右隣の特徴点がWin(1,2)、Win(1,1)の下段の特徴点がWin(2,1)である。また、特徴領域Ain(1,1)の右領域と特徴領域Ain(1,2)の左領域とが重なり、特徴領域Ain(1,1)の下側1/2の領域(下領域)と特徴領域Ain(2,1)の上側1/2の領域(上領域)とが重なる。さらに、特徴領域Ain(1,2)の左下1/4の領域(左下領域)と、特徴領域Ain(2,1)の右上1/4の領域(右上領域)とが重なる。このように、変形例#2では様々な形状及びサイズの重複領域が考慮される。
変形例#2の場合、図29に示すように、特徴領域Ainを上下左右に4分割した4つの小領域を利用して画素ペアが分類される。ここでは、右上の小領域(第1象限)を小領域#1、左上の小領域(第2象限)を小領域#2、左下の小領域(第3象限)を#3、右下の小領域(第4象限)を#4と表記する。
(A群について)
A群は、対角線上に配置される2つの小領域にそれぞれ画素がある画素ペアの集合である。つまり、A群は、一方の画素が小領域#1にあり、他方の画素が小領域#3にある画素ペア、及び一方の画素が小領域#2にあり、他方の画素が小領域#4にある画素ペアを含む。
(B群について)
B群は、上下に配置される2つの小領域にそれぞれ画素が位置する画素ペアの集合である。B群は、B1群とB2群とに分けられる。B1群は、左領域を上下に分ける小領域#2、#3にそれぞれ画素が位置する画素ペアの集合である。B2群は、右領域を上下に分ける小領域#1、#4にそれぞれ画素が位置する画素ペアの集合である。B1群の画素ペアと、B2群の画素ペアとは同じ配置となるように設定される。
(C群について)
C群は、左右に配置される2つの小領域にそれぞれ画素が位置する画素ペアの集合である。C群は、C1群とC2群とに分けられる。C1群は、上領域を左右に分ける小領域#1、#2にそれぞれ画素が位置する画素ペアの集合である。C2群は、下領域を左右に分ける小領域#3、#4にそれぞれ画素が位置する画素ペアの集合である。C1群の画素ペアと、C2群の画素ペアとは同じ配置となるように設定される。
(D群について)
D群は、各小領域に2つの画素が位置する画素ペアの集合である。D群は、D1群、D2群、D3群、D4群に分けられる。D1群は、小領域#1に各画素が位置する画素ペアである。D2群は、小領域#2に各画素が位置する画素ペアである。D3群は、小領域#3に各画素が位置する画素ペアである。D4群は、小領域#4に各画素が位置する画素ペアである。D1群、D2群、D3群、D4群の画素ペアは同じ配置となるように設定される。
変形例#2の場合も、局所特徴量は、A群、B1群、B2群、C1群、C2群、D1群、…、D4群のビット列を結合したビット列で表現される。また、距離Dは、同じ群のビット列同士の距離を加算した値で表現される。また、流用可能な距離dを格納するための距離記録テーブルは、図30に示すように、B2群用テーブル、C2群用テーブル、D3群用テーブル、D4群用テーブルの4通り用意される。
(2−7−2.サーバ装置の動作)
ここで、図31〜図33を参照しながら、変形例#2に係るサーバ装置200の動作について説明する。但し、変形例#2において主に変形される部分は、上述したS222に係る処理の流れにある。そのため、この部分について説明する。
図31は、第2実施形態の一変形例(変形例#2)に係るサーバ装置の動作のうち、距離計算に関する動作について説明するための第1のフロー図である。図32は、第2実施形態の一変形例(変形例#2)に係るサーバ装置の動作のうち、距離計算に関する動作について説明するための第2のフロー図である。図33は、第2実施形態の一変形例(変形例#2)に係るサーバ装置の動作のうち、距離計算に関する動作について説明するための第3のフロー図である。
(S301)距離計算部203は、入力画像Pinに配置された複数の特徴点Win(m)(m=1,2,…、M)について、左上を始点として、右下を終点とする特徴点Winの位置を示すインデックスjx、jyを1に初期化する。インデックスjx、Jyで表現される座標(jx,jy)は、特徴点Winの2次元的な位置(図28を参照)を表す。但し、座標(1,1)を左上端にある特徴点の位置とする。また、参照画像Prに配置された特徴点Wrも同様に、2次元的な座標(nx,ny)を用いて位置を表現する。
(S302)距離計算部203は、処理対象の特徴領域Ar(nx,ny)の局所特徴量のうちA群のビット列と、特徴領域Ain(jx,jy)の局所特徴量のうちA群のビット列との距離DAを計算する。つまり、距離計算部203は、距離DAとして、A群のビット列同士の排他的論理和を計算する。
(S303)距離計算部203は、B1群について流用可能な計算結果があるか否かを判定する。
距離計算部203は、特徴領域Ain(jx−1,jy)、Ar(nx−1,ny)があるか否かを判定する。例えば、特徴領域Ain(jx,jy)が左端に位置する場合(jx=1の場合)、Ain(jx−1,jy)はない。同様に、Ar(nx,ny)が左端に位置する場合(nx=1の場合)、Ar(nx−1,ny)はない。
特徴領域Ain(jx−1,jy)、Ar(nx−1,ny)がある場合、距離計算部203は、B1群について流用可能な計算結果があると判定する。少なくともAin(jx−1,jy)又はAr(nx−1,ny)がない場合、距離計算部203は、B1群について流用可能な計算結果がないと判定する。
流用可能な計算結果があると判定された場合、処理はS305へと進む。一方、流用可能な計算結果がないと判定された場合、処理はS304へと進む。
(S304)距離計算部203は、処理対象の特徴領域Ar(nx,ny)の局所特徴量のうちB1群のビット列と、特徴領域Ain(jx,jy)の局所特徴量のうちB1群のビット列との距離DB1(jx,jy,nx,ny)を計算する。つまり、距離計算部203は、距離DB1(jx,jy,nx,ny)として、B1群のビット列同士の排他的論理和を計算する。
(S305)距離計算部203は、距離DB1(jx,jy,nx,ny)として、過去に計算した流用可能な計算結果を利用する。つまり、距離計算部203は、特徴領域Ar(nx−1,ny)の局所特徴量のB2群のビット列と、特徴領域Ain(jx−1,jy)の局所特徴量のうちB2群のビット列との距離DB2(jx−1,jy,nx−1,ny)を距離DB1(jx,jy,nx,ny)とする。距離DB2(jx−1,jy,nx−1,ny)は、B2群用テーブルのd(jx−1,jy,nx−1,ny)欄に格納されている。
(S306)距離計算部203は、処理対象の特徴領域Ar(nx,ny)の局所特徴量のうちB2群のビット列と、特徴領域Ain(jx,jy)の局所特徴量のうちB2群のビット列との距離DB2(jx,jy,nx,ny)を計算する。つまり、距離計算部203は、距離DB2(jx,jy,nx,ny)として、B2群のビット列同士の排他的論理和を計算する。
(S307)距離計算部203は、S306で計算した距離DB2(jx,jy,nx,ny)をB2群用テーブルに格納する。このとき、距離計算部203は、距離DB2(jx,jy,nx,ny)をB2群用テーブルのd(jx,jy,nx,ny)欄に格納する。
(S308)距離計算部203は、C1群について流用可能な計算結果があるか否かを判定する。
距離計算部203は、特徴領域Ain(jx,jy−1)、Ar(nx,ny−1)があるか否かを判定する。例えば、特徴領域Ain(jx,jy)が上端に位置する場合(jy=1の場合)、Ain(jx,jy−1)はない。同様に、Ar(nx,ny)が上端に位置する場合(ny=1の場合)、Ar(nx,ny−1)はない。
特徴領域Ain(jx,jy−1)、Ar(nx,ny−1)がある場合、距離計算部203は、C1群について流用可能な計算結果があると判定する。少なくともAin(jx,jy−1)又はAr(nx,ny−1)がない場合、距離計算部203は、C1群について流用可能な計算結果がないと判定する。
流用可能な計算結果があると判定された場合、処理はS310へと進む。一方、流用可能な計算結果がないと判定された場合、処理はS309へと進む。
(S309)距離計算部203は、処理対象の特徴領域Ar(nx,ny)の局所特徴量のうちC1群のビット列と、特徴領域Ain(jx,jy)の局所特徴量のうちC1群のビット列との距離DC1(jx,jy,nx,ny)を計算する。つまり、距離計算部203は、距離DC1(jx,jy,nx,ny)として、C1群のビット列同士の排他的論理和を計算する。S309の処理が完了すると、処理は図32のS311へ進む。
(S310)距離計算部203は、距離DC1(jx,jy,nx,ny)として、過去に計算した流用可能な計算結果を利用する。つまり、距離計算部203は、特徴領域Ar(nx,ny−1)の局所特徴量のC2群のビット列と、特徴領域Ain(jx,jy−1)の局所特徴量のうちC2群のビット列との距離DC2(jx,jy−1,nx,ny−1)を距離DC1(jx,jy,nx,ny)とする。距離DC2(jx,jy−1,nx,ny−1)は、C2群用テーブルのd(jx,jy−1,nx,ny−1)欄に格納されている。S310の処理が完了すると、処理は図32のS311へ進む。
(S311)距離計算部203は、処理対象の特徴領域Ar(nx,ny)の局所特徴量のうちC2群のビット列と、特徴領域Ain(jx,jy)の局所特徴量のうちC2群のビット列との距離DC2(jx,jy,nx,ny)を計算する。つまり、距離計算部203は、距離DC2(jx,jy,nx,ny)として、C2群のビット列同士の排他的論理和を計算する。
(S312)距離計算部203は、S311で計算した距離DC2(jx,jy,nx,ny)をC2群用テーブルに格納する。このとき、距離計算部203は、距離DC2(jx,jy,nx,ny)をC2群用テーブルのd(jx,jy,nx,ny)欄に格納する。
(S313)距離計算部203は、D1群について流用可能な計算結果があるか否かを判定する。
距離計算部203は、特徴領域Ain(jx,jy−1)、Ar(nx,ny−1)があるか否かを判定する。例えば、特徴領域Ain(jx,jy)が上端に位置する場合(jy=1の場合)、Ain(jx,jy−1)はない。同様に、Ar(nx,ny)が上端に位置する場合(ny=1の場合)、Ar(nx,ny−1)はない。
特徴領域Ain(jx,jy−1)、Ar(nx,ny−1)がある場合、距離計算部203は、D1群について流用可能な計算結果があると判定する。少なくともAin(jx,jy−1)又はAr(nx,ny−1)がない場合、距離計算部203は、D1群について流用可能な計算結果がないと判定する。
流用可能な計算結果があると判定された場合、処理はS315へと進む。一方、流用可能な計算結果がないと判定された場合、処理はS314へと進む。
(S314)距離計算部203は、処理対象の特徴領域Ar(nx,ny)の局所特徴量のうちD1群のビット列と、特徴領域Ain(jx,jy)の局所特徴量のうちD1群のビット列との距離DD1(jx,jy,nx,ny)を計算する。つまり、距離計算部203は、距離DD1(jx,jy,nx,ny)として、D1群のビット列同士の排他的論理和を計算する。
(S315)距離計算部203は、距離DD1(jx,jy,nx,ny)として、過去に計算した流用可能な計算結果を利用する。つまり、距離計算部203は、特徴領域Ar(nx,ny−1)の局所特徴量のD4群のビット列と、特徴領域Ain(jx,jy−1)の局所特徴量のうちD4群のビット列との距離DD4(jx,jy−1,nx,ny−1)を距離DD1(jx,jy,nx,ny)とする。距離DD4(jx,jy−1,nx,ny−1)は、D4群用テーブルのd(jx,jy−1,nx,ny−1)欄に格納されている。
(S316)距離計算部203は、処理対象の特徴領域Ar(nx,ny)の局所特徴量のうちD4群のビット列と、特徴領域Ain(jx,jy)の局所特徴量のうちD4群のビット列との距離DD4(jx,jy,nx,ny)を計算する。つまり、距離計算部203は、距離DD4(jx,jy,nx,ny)として、D4群のビット列同士の排他的論理和を計算する。
(S317)距離計算部203は、S316で計算した距離DD4(jx,jy,nx,ny)をD4群用テーブルに格納する。このとき、距離計算部203は、距離DD4(jx,jy,nx,ny)をD4群用テーブルのd(jx,jy,nx,ny)欄に格納する。
(S318)距離計算部203は、D2群について流用可能な計算結果があるか否かを判定する。
距離計算部203は、特徴領域Ain(jx,jy−1)、Ar(nx,ny−1)があるか否かを判定する。例えば、特徴領域Ain(jx,jy)が上端に位置する場合(jy=1の場合)、Ain(jx,jy−1)はない。同様に、Ar(nx,ny)が上端に位置する場合(ny=1の場合)、Ar(nx,ny−1)はない。
特徴領域Ain(jx,jy−1)、Ar(nx,ny−1)がある場合、距離計算部203は、D2群について流用可能な計算結果があると判定する。少なくともAin(jx,jy−1)又はAr(nx,ny−1)がない場合、距離計算部203は、D2群について流用可能な計算結果がないと判定する。
流用可能な計算結果があると判定された場合、処理はS320へと進む。一方、流用可能な計算結果がないと判定された場合、処理はS319へと進む。
(S319)距離計算部203は、処理対象の特徴領域Ar(nx,ny)の局所特徴量のうちD2群のビット列と、特徴領域Ain(jx,jy)の局所特徴量のうちD2群のビット列との距離DD2(jx,jy,nx,ny)を計算する。つまり、距離計算部203は、距離DD2(jx,jy,nx,ny)として、D2群のビット列同士の排他的論理和を計算する。S319の処理が完了すると、処理は図33のS321へ進む。
(S320)距離計算部203は、距離DD2(jx,jy,nx,ny)として、過去に計算した流用可能な計算結果を利用する。つまり、距離計算部203は、特徴領域Ar(nx,ny−1)の局所特徴量のD3群のビット列と、特徴領域Ain(jx,jy−1)の局所特徴量のうちD3群のビット列との距離DD3(jx,jy−1,nx,ny−1)を距離DD2(jx,jy,nx,ny)とする。距離DD3(jx,jy−1,nx,ny−1)は、D3群用テーブルのd(jx,jy−1,nx,ny−1)欄に格納されている。S320の処理が完了すると、処理は図33のS321へ進む。
(S321)距離計算部203は、D4群について流用可能な計算結果があるか否かを判定する。
距離計算部203は、特徴領域Ain(jx−1,jy)、Ar(nx−1,ny)があるか否かを判定する。例えば、特徴領域Ain(jx,jy)が左端に位置する場合(jx=1の場合)、Ain(jx−1,jy)はない。同様に、Ar(nx,ny)が左端に位置する場合(nx=1の場合)、Ar(nx−1,ny)はない。
特徴領域Ain(jx−1,jy)、Ar(nx−1,ny)がある場合、距離計算部203は、D4群について流用可能な計算結果があると判定する。少なくともAin(jx−1,jy)又はAr(nx−1,ny)がない場合、距離計算部203は、D4群について流用可能な計算結果がないと判定する。
流用可能な計算結果があると判定された場合、処理はS323へと進む。一方、流用可能な計算結果がないと判定された場合、処理はS322へと進む。
(S322)距離計算部203は、処理対象の特徴領域Ar(nx,ny)の局所特徴量のうちD3群のビット列と、特徴領域Ain(jx,jy)の局所特徴量のうちD3群のビット列との距離DD3(jx,jy,nx,ny)を計算する。つまり、距離計算部203は、距離DD3(jx,jy,nx,ny)として、D3群のビット列同士の排他的論理和を計算する。S322の処理が完了すると、処理はS324へ進む。
(S323)距離計算部203は、距離DD3(jx,jy,nx,ny)として、過去に計算した流用可能な計算結果を利用する。つまり、距離計算部203は、特徴領域Ar(nx−1,ny)の局所特徴量のD4群のビット列と、特徴領域Ain(jx−1,jy)の局所特徴量のうちD4群のビット列との距離DD4(jx−1,jy,nx−1,ny)を距離DD3(jx,jy,nx,ny)とする。距離DD4(jx−1,jy,nx−1,ny)は、D4群用テーブルのd(jx,jy−1,nx,ny−1)欄に格納されている。
(S324)距離計算部203は、距離DA(jx,jy,nx,ny)、距離DB1(jx,jy,nx,ny)、…、距離DD4(jx,jy,nx,ny)を加算する。そして、距離計算部203は、加算値を特徴領域Ain(jx,jy)、Ar(nx,ny)の距離D(jx,jy,nx,ny)とする。
(S325)距離計算部203は、特徴点の座標(jx,jy)を表すインデックスjx、jyを更新する。例えば、jx<Mxである場合、距離計算部203は、jxをインクリメント(jx=jx+1)する。jx=Mxである場合、距離計算部203は、jxを1に更新し、jyをインクリメント(jy=jy+1)する。つまり、距離計算部203は、処理対象とする特徴領域Ainを移動させる。但し、jxの最大数がMxである。
(S326)距離計算部203は、全ての特徴点Winについて処理を終えたか否かを判定する。全ての特徴点Winについて処理を終えている場合、図31〜図33に示した一連の処理は終了する。一方、処理を終えていない特徴点Winがある場合、処理は図31のS302へと進む。
上記のように、重複領域について流用可能な計算結果がある場合に、その計算結果を流用(S305、S310、S315、S320、S323)して一部の計算(S304、S309、S314、S319、S322)を省略することで、距離計算の負荷が低減される。その結果、対応点探索にかかる処理負担の軽減及び処理の高速化が実現される。
以上、変形例#2について説明した。
以上説明したように、第2実施形態に係る技術を適用することにより、対応点探索にかかる処理負荷を低減でき、対象物の有無を高速に判断することが可能になる。
以上、第2実施形態について説明した。
上記説明においてはランドマークの認識機能を例に説明を進めてきたが、例えば、画像の類否判定を伴う任意のアプリケーションプログラムなどに応用することもできる。また、サーバ装置200で顔認識を行うアプリケーションプログラムやAR(Augmented Reality)を利用したアプリケーションプログラムなどにも応用できる。こうした応用例についても当然に第2実施形態の技術的範囲に属する。
<3.付記>
以上説明した実施形態に関し、さらに以下の付記を開示する。
(付記1) 一部が重複する複数の画像領域の各々に共通の配置規則で配置される複数の画素ペアのうち、前記画像領域が重複する重複領域において前記各画像領域に配置された前記各画素ペアの位置が一致するように設定した前記配置規則を表す配置情報を記憶する記憶部と、
前記画像領域に前記配置規則で配置された前記各画素ペアの特徴量の組を当該画像領域の特徴量として利用し、第1の画像に設定された前記各画像領域の特徴量と第2の画像に設定された前記各画像領域の特徴量との距離に基づいて前記第1の画像と前記第2の画像との類否を判定する計算部と
を有し、
前記計算部は、前記重複領域に位置する前記画素ペアの特徴量に関する計算結果を前記記憶部に格納し、当該画素ペアと同じ位置にある、他の前記画像領域における前記画素ペアの特徴量に関する計算の際に前記記憶部に格納した前記計算結果を利用する
情報処理装置。
(付記2) 前記記憶部は、前記第1の画像に設定された前記各画像領域の特徴量を記憶し、
前記計算部は、前記第2の画像に設定された前記各画像領域に前記配置規則で配置される前記各画素ペアの特徴量を計算する際、前記重複領域に位置する前記画素ペアの特徴量を前記記憶部に格納し、当該画素ペアと同じ位置にある他の前記画素ペアの特徴量の計算を回避して前記記憶部に格納されている前記画素ペアの特徴量を利用する
付記1に記載の情報処理装置。
(付記3) 前記記憶部は、両方の画素が前記重複領域に含まれる前記画素ペアの集合と、一方の画素が前記重複領域に含まれる前記画素ペアの集合と、両方の画素が前記重複領域に含まれない前記画素ペアの集合とを特定するための集合情報をさらに記憶し、
前記計算部は、前記集合情報に基づいて、両方の画素が前記重複領域に含まれる前記画素ペアを、前記重複領域に位置する前記画素ペアとして利用する
付記1又は2に記載の情報処理装置。
(付記4) コンピュータが、
一部が重複する複数の画像領域の各々に共通の配置規則で配置される複数の画素ペアのうち、前記画像領域が重複する重複領域において前記各画像領域に配置された前記各画素ペアの位置が一致するように設定した前記配置規則を表す配置情報を取得し、
前記画像領域に前記配置規則で配置された前記各画素ペアの特徴量の組を当該画像領域の特徴量として利用し、第1の画像に設定された前記各画像領域の特徴量と第2の画像に設定された前記各画像領域の特徴量との距離に基づいて前記第1の画像と前記第2の画像との類否を判定する処理を実行し、
前記距離を計算する処理において、前記重複領域に位置する前記画素ペアの特徴量に関する計算結果を記憶部に格納し、当該画素ペアと同じ位置にある、他の前記画像領域における前記画素ペアの特徴量に関する計算の際に前記記憶部に格納した前記計算結果を利用する
画像判定方法。
(付記5) コンピュータに、
一部が重複する複数の画像領域の各々に共通の配置規則で配置される複数の画素ペアのうち、前記画像領域が重複する重複領域において前記各画像領域に配置された前記各画素ペアの位置が一致するように設定した前記配置規則を表す配置情報を取得し、
前記画像領域に前記配置規則で配置された前記各画素ペアの特徴量の組を当該画像領域の特徴量として利用し、第1の画像に設定された前記各画像領域の特徴量と第2の画像に設定された前記各画像領域の特徴量との距離に基づいて前記第1の画像と前記第2の画像との類否を判定する処理を実行させ、
前記距離を計算する処理において、前記重複領域に位置する前記画素ペアの特徴量に関する計算結果を記憶部に格納し、当該画素ペアと同じ位置にある、他の前記画像領域における前記画素ペアの特徴量に関する計算の際に前記記憶部に格納した前記計算結果を利用する
処理を実行させるためのプログラム。
(付記6) 付記5に記載のプログラムが格納された、コンピュータにより読み取り可能な記録媒体。