以下に添付図面を参照しながら、本発明の実施形態について説明する。なお、本明細書及び図面において実質的に同一の機能を有する要素については、同一の符号を付することにより重複説明を省略する場合がある。
<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は、画素のペアが複数設定された特徴領域A1、A2を複数有する参照画像P1と、画素のペアについて計算された画素間の輝度差dA1、dA2に基づく特徴量とを記憶する。特徴量としては、例えば、BRIEF、SIFT、SURF、CARD(Compact And Realtime Descriptors)、FREAK(Fast Retina Keypoint)、BRISK(Binary Robust Invariant Scalable Keypoints)などを利用できる。
図1の例では、参照画像P1に含まれる特徴領域として特徴領域A1、A2が示されている。特徴領域A1、A2には、それぞれ特徴量の計算に用いる画素のペアが設定されている。図1の例では、画素のペア(xA1,yA1)が特徴領域A1に設定され、画素のペア(xA2,yA2)が特徴領域A2に設定されている。
なお、ここでは簡単のために特徴領域A1、A2に注目して説明を進めるが、参照画像P1には特徴領域A1、A2の他にも特徴領域が含まれる。また、特徴領域A1、A2には、(xA1,yA1)、(xA2,yA2)以外にも画素のペアが設定されている。
参照画像P1に設定される特徴領域の位置、及び特徴領域毎に設定される画素のペアの位置は事前に設定される。例えば、特徴領域は、Dense Samplingなどの方法により抽出された特徴点を基準とする矩形領域に設定される。
画素間の輝度差dA1は、画素xA1の輝度bxA1から画素yA1の輝度byA1を減算した値である。また、画素間の輝度差dA2は、画素xA2の輝度bxA2から画素yA2の輝度byA2を減算した値である。
例えば、BRIEFを適用する場合、輝度差の符号(正負)と、特徴量となるビット値とが予め対応付けられている。この場合、特徴領域A1に含まれる画素のペア毎に輝度差を求め、輝度差の符号に対応するビット値を並べることで特徴領域に関する特徴量が得られる。他の特徴領域についても同様である。
演算部12は、対象画像P2が有する複数の特徴領域B1、B2に設定した画素のペアについて、画素間の輝度差dB1、dB2に基づく特徴量を計算する。
図1の例では、対象画像P2に含まれる特徴領域として特徴領域B1、B2が示されている。特徴領域B1、B2には、それぞれ特徴量の計算に用いる画素のペアが設定されている。図1の例では、画素のペア(xB1,yB1)が特徴領域B1に設定され、画素のペア(xB2,yB2)が特徴領域B2に設定されている。
なお、ここでは簡単のために特徴領域B1、B2に注目して説明を進めるが、対象画像P2には特徴領域B1、B2の他にも特徴領域が含まれる。また、特徴領域B1、B2には、(xB1,yB1)、(xB2,yB2)以外にも画素のペアが設定されている。
対象画像P2に設定される特徴領域は、参照画像P1の場合と同様に、例えば、Dense Samplingなどの方法により抽出された特徴点を基準とする矩形領域に設定される。また、対象画像P2の特徴領域に設定される画素のペアは、参照画像P1の特徴領域に設定される画素のペアと同じ位置に設定される。
画素間の輝度差dB1は、画素xB1の輝度bxB1から画素yB1の輝度byB1を減算した値である。また、画素間の輝度差dB2は、画素xB2の輝度bxB2から画素yB2の輝度byB2を減算した値である。
例えば、BRIEFを適用する場合、輝度差の符号(正負)と、特徴量となるビット値とが予め対応付けられている。この場合、特徴領域B1に含まれる画素のペア毎に輝度差を求め、輝度差の符号に対応するビット値を並べることで特徴領域に関する特徴量が得られる。他の特徴領域についても同様である。
演算部12は、対象画像P2の特徴領域に関する特徴量と、参照画像P1の特徴領域に関する特徴量とを用いて、対象画像P2の中に参照画像P1に類似する領域が含まれるか否かを判断する。このとき、演算部12は、特徴量のうち輝度差の大きさについて設定された条件を満たす特徴量を判断に用いる。
図1に例示した特徴領域A1、B1は、同じ対象を撮像した画像領域であるとする。同様に、特徴領域A2、B2は、同じ対象を撮像した画像領域であるとする。また、画素のペア(xA1,yA1)、(xB1,yB1)は特徴領域内の同じ位置に設定されている。同様に、画素のペア(xA2,yA2)、(xB2,yB2)は特徴領域内の同じ位置に設定されている。
この場合、特徴領域A1に関する特徴量と特徴領域B1に関する特徴量とは誤差の範囲で一致することが期待される。但し、特徴領域A1、B1は、背景部分(空)だけを含む画像領域であり、画像領域全体にわたって輝度差dA1、dB1の絶対値が小さい。そのため、輝度差dA1、dB1の符号は撮影状況(光源の位置や各種ノイズの影響など)に応じて変化しやすく、同じ対象を含むにもかかわらず、特徴領域A1に関する特徴量と特徴領域B1に関する特徴量とが乖離してしまう可能性がある。
一方、特徴領域A2、B2は、建造物(城)の一部と背景部分とを含む画像領域である。また、特徴領域A2、B2にそれぞれ設定された画素のペア(xA2,yA2)、(xB2,yB2)は、建造物の一部と背景部分とを跨ぐように位置している。この場合、輝度差dA2、dB2の符号は撮影状況(光源の位置や各種ノイズの影響など)に応じて変化しにくく、特徴領域A2に関する特徴量と特徴領域B2に関する特徴量とが誤差の範囲で一致することが期待される。
そこで、演算部12は、輝度差の大きさを考慮し、画素のペア(xA2,yA2)、(xB2,yB2)のように撮影状況の違いに起因する符号の逆転が生じにくい画素のペアに対応する特徴量を利用して特徴領域の類否を判断する。例えば、演算部12は、輝度差の大きさが予め設定した閾値Thより大きい場合に、その輝度差に基づく特徴量を特徴領域の類否判断に利用する。
図1の例では、輝度差dA1、dB1の大きさ|dA1|、|dB1|がそれぞれ閾値Thより小さいため、輝度差dA1、dB1に対応するビット値は特徴領域A1、B1の類否判断に利用されない。一方、輝度差dA2、dB2の大きさ|dA2|、|dB2|はそれぞれ閾値Thより大きいため、輝度差dA2、dB2に対応するビット値は特徴領域A1、B1の類否判断に利用される。なお、|…|はノルムを表す。
上記のように、輝度差に基づく特徴量を利用して特徴領域の類否を判断し、対象画像に参照画像が含まれるか否かを判断する際に、輝度差の大きさを考慮することで、撮影状況の違いに起因する誤判断を抑制し、正しく判断できる可能性を高めることができる。なお、上記の例では、設定された条件として「輝度差の大きさが閾値より大きい」という条件を示したが、「輝度差の大きさが大きい順に上位N個(Nは所定数)」などの条件を適用することもできる。
以上、第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が管理する写真管理サービスなどに適用できる。また、第2実施形態に係るシステムは、写真管理機能を有するSNS(Social Networking Service)などのソーシャルメディアサービスにも適用可能である。ここでは、説明の都合上、写真管理サービスを例に説明を進める。もちろん、第2実施形態に係るシステムの適用対象となりうるサービスの範囲はこれに限定されない。
多くの場合、画像の管理には、時間情報や位置情報が用いられる。例えば、撮影日時に応じて画像をグループ化する方法や、GPS(Global Positioning System)を利用して撮影時に取得した位置情報を用いて、同じ地域で撮影された画像をグループ化する方法などがある。このような方法により画像をグループ化しておけば、ユーザが記憶している撮影時間や撮影場所の情報をヒントに、後日、所望の画像を容易に見つけ出すことが可能になる。また、イベントなどの情報をもとに画像を検索できるようにするため、「家族旅行」や「結婚式」などのタグを画像に付してタグ毎に画像を整理する方法もある。
上記の方法はいずれも画像の管理に有用である。第2実施形態に係るシステムは、さらに画像管理の有用性を高めるため、画像から特定物(以下、ランドマーク)を自動認識し、その認識結果を画像にタグ付けする仕組みを提供する。例えば、端末装置100を利用して旅行先で撮影した画像から、サーバ装置200がランドマーク(例えば、金閣寺や東京タワーなど)を自動認識してタグを付与する。この仕組みによれば、ランドマークを指定した画像検索や、ランドマークを基準とする画像の自動整理を実現することができる。
ランドマークの認識は、ランドマークの画像(以下、参照画像)と類似する画像が入力画像に含まれるか否かを判定する処理に基づいて行われる。なお、参照画像としては、ランドマークを正面から撮影した画像の他、様々な角度から撮影した画像が利用されることもある。また、様々なサイズで撮影したランドマークの画像が利用されることもある。このように、同じランドマークに対して複数の参照画像が利用されることで、認識の失敗や誤認識の発生を低減することができる。
ランドマークの認識は、例えば、次のような手順で行われる。
まず、端末装置100が、ランドマークの認識対象とする入力画像に対して複数の特徴点を設定する。なお、特徴点の位置は予め設定されているものとする。特徴点の配置方法としては、例えば、予め決められた間隔で等間隔に配置する方法や、ランダムに決められた不規則な配置パターンで配置する方法などがある。但し、サーバ装置200において参照画像に設定される特徴点と同じ配置方法で入力画像に特徴点が設定される。
特徴点を設定した端末装置100は、入力画像に設定した特徴点の周辺領域(以下、特徴領域)から特徴量を抽出する。特徴領域としては、例えば、特徴点を中心とする矩形領域(例えば、一辺が48画素の矩形領域)が利用される。また、特徴量としては、例えば、BRIEF、SIFT、SURF、CARD、FREAK、BRISKなどを利用可能である。以下では、BRIEFを利用する例がある。
端末装置100が抽出した特徴量はサーバ装置200に送信される。サーバ装置200は、参照画像に設定した特徴点について特徴領域から特徴量を抽出する。但し、予め抽出された参照画像の特徴量をサーバ装置200が保持している場合、サーバ装置200は、保持している特徴量を利用する。サーバ装置200は、特徴量を利用して入力画像の特徴領域と参照画像の特徴領域との類似度を計算し、類似度が高い特徴領域に対応する特徴点のペアを抽出する。
特徴点のペアを抽出したサーバ装置200は、抽出した特徴点のペアについて統計処理を実行し、入力画像中に参照画像が含まれるか否かを判定する。サーバ装置200は、全ての参照画像について判定処理を実行して入力画像中に含まれる参照画像を特定する。参照画像を特定したサーバ装置200は、特定した参照画像に対応するランドマークの情報を端末装置100に送信する。このように、第2実施形態に係るシステムでは、ランドマークの認識に係る主な処理をサーバ装置200が実行する。
但し、端末装置100からサーバ装置200へと入力画像を送らず、特徴量だけを送る仕組みとしているため、個人情報である入力画像がネットワークNWなどを介して端末装置100の外部へ漏れる心配がない。また、BRIEFなどの特徴量を利用するため、端末装置100に過度な負荷をかけずにサービスの提供を受けることができる。つまり、第2実施形態に係るシステムを適用すれば、ユーザが気軽に安心して利用できる情報サービスを提供することが可能になる。
以上、第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〜図7を参照しながら、端末装置100の機能について説明する。
図4は、第2実施形態に係る端末装置が有する機能の一例を示したブロック図である。また、図5は、第2実施形態に係る画素ペア情報の一例を示した図である。また、図6は、第2実施形態に係る入力画像の特徴点と特徴領域について説明するための図である。また、図7は、第2実施形態に係る特徴量の計算について説明するための図である。
図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)などの方法も適用できる。
なお、入力画像Pinに設定される特徴点をWinと表記する。また、図6に示すように、特徴点Winを基準に特徴領域が設定される。特徴点Winを基準に設定される特徴領域をAinと表記する。このようにして特徴点設定部103により設定された特徴点Win及び特徴領域Ainの情報は、記憶部101に格納される。また、特徴点Win及び特徴領域Ainの情報は、特徴量計算部104に入力される。
(特徴量の計算について)
再び図4を参照する。特徴量計算部104は、画素ペア情報101aを参照し、特徴点設定部103により設定された特徴領域Ainの特徴量を計算する。
例えば、特徴量計算部104は、図7に示すように、入力画像Pinの特徴領域Ainから画素ペア毎に各画素の輝度を抽出する(C1)。次いで、特徴量計算部104は、画素ペア毎に抽出した2つの輝度の差分を求めることで、各画素ペアの輝度差を計算する(C2)。次いで、特徴量計算部104は、計算した輝度差の符号(正負)を表すビット値を並べたビット列(以下、局所特徴量)を生成する(C3)。
なお、輝度差の符号とビット値とは予め対応付けられている。例えば、正の符号がビット値「1」に対応付けられ、負の符号がビット値「0」に対応付けられている。また、輝度差を計算する際、画素ペアを成す2つの画素のうち、どちらの画素の輝度から、他方の画素の輝度を減算するかも予め設定されている。例えば、座標(X1,Y1)に位置する画素の輝度から座標(X2,Y2)に位置する画素の輝度を減算した輝度差の符号を局所特徴量の生成に利用することが予め設定されている。
また、局所特徴量を生成する際、ビット値を並べる順番も予め設定されている。例えば、画素ペア情報101aに記載された画素ペアのIndex順にビット値が計算され、計算された順に並べて局所特徴量が生成される。なお、256個の画素ペアが設定されている場合、256ビットのビット列で表現された局所特徴量が得られる。また、局所特徴量は、入力画像Pinに含まれる全ての特徴領域Ainについて計算される。入力画像Pinについて特徴量計算部104により計算された局所特徴量の組は、送信部105に入力される。
また、特徴量計算部104は、上記(C2)で計算した輝度差の絶対値を計算する(D1)。次いで、特徴量計算部104は、計算した絶対値が予め設定した閾値(以下、第1閾値)以上であるか否かを判定し、「絶対値≧第1閾値」の場合にビット値「1」、「絶対値<第1閾値」の場合にビット値0を選択する(D2)。但し、第1閾値は、撮影状況の違いによる輝度差の変化幅を考慮して、撮影状況の違いによる影響を受けにくい輝度差の絶対値に設定される。そして、特徴量計算部104は、選択したビット値を並べたビット列(以下、絶対値特徴量)を生成する(D3)。
なお、ビット値を並べる順番は局所特徴量を生成する場合と同じである。256個の画素ペアが設定されている場合、256ビットのビット列で表現された絶対値特徴量が得られる。また、絶対値特徴量は、入力画像Pinに含まれる全ての特徴領域Ainについて計算される。なお、局所特徴量の計算と絶対値特徴量の計算とは計算順序を逆にしてもよい。入力画像Pinについて特徴量計算部104により計算された絶対値特徴量の組は、送信部105に入力される。
(特徴量の送信について)
再び図4を参照する。上記のようにして入力画像Pinについて特徴量計算部104により計算された局所特徴量及び絶対値特徴量は、送信部105に入力される。送信部105は、特徴量計算部104から入力された局所特徴量及び絶対値特徴量をサーバ装置200へ送信する。このとき、入力画像Pinがサーバ装置200へと送信されないため、入力画像Pinに含まれるユーザの個人的な情報がネットワークNWを介して外部へと漏洩するリスクを抑制することが可能になる。
以上、端末装置の機能について説明した。
[2−4.サーバ装置の機能]
次に、図8〜図16を参照しながら、サーバ装置200の機能について説明する。
図8は、第2実施形態に係るサーバ装置が有する機能の一例を示したブロック図である。また、図9は、第2実施形態に係る参照画像情報(参照画像管理テーブル)の一例を示した図である。図10は、第2実施形態に係る参照画像情報(特徴量管理テーブル)の一例を示した図である。また、図11は、第2実施形態に係る参照画像の特徴点と特徴領域について説明するための図である。
また、図12は、第2実施形態に係る距離計算について説明するための第1の図である。図13は、第2実施形態に係る距離計算について説明するための第2の図である。また、図14は、第2実施形態に係る距離計算に用いる論理について説明するための図である。図15は、第2実施形態に係る投票処理について説明するための図である。また、図16は、第2実施形態に係る判定について説明するための図である。
図8に示すように、サーバ装置200は、記憶部201、受信部202、距離計算部203、投票処理部204、及び判定部205を有する。
なお、記憶部201の機能は、上述したRAM906や記憶部920などを用いて実現できる。受信部202の機能は、上述した接続ポート924や通信部926などを用いて実現できる。距離計算部203、投票処理部204、及び判定部205の機能は、上述したCPU902などを用いて実現できる。
(画素ペア情報201a、参照画像情報201bについて)
記憶部201には、ランドマークを撮影した画像(参照画像Pr)、画素ペア情報201a、及び参照画像情報201bが格納される。画素ペア情報201aは、端末装置100の記憶部101に格納されている画素ペア情報101aと同じ画素ペアに関する情報である。参照画像情報201bは、参照画像Prに関連する情報である。
参照画像情報201bは、参照画像管理テーブル、及び特徴量管理テーブルを含む。記憶部201には、様々なランドマークに対応する参照画像Prが格納されている。また、1つのランドマークについて複数のサイズ、複数の撮影方向に対応する複数の参照画像Prが記憶部201に格納されている。これらの参照画像Prのデータとランドマークとを対応付ける情報が参照画像管理テーブルである。
例えば、参照画像管理テーブルは、図9に示すように、ランドマーク名と参照画像Prのデータが格納されている場所(以下、画像データリンク)とを対応付ける。なお、参照画像管理テーブルの各レコードは、識別番号ID#1により識別される。図9の例では、ID#1が001のレコードには、ランドマーク名「金閣寺」と画像データ「001001.jpg」の画像データリンクとが対応付けられている。
一方、特徴量管理テーブルは、参照画像Prに含まれる各特徴点と、特徴点毎に計算された特徴量(局所特徴量、絶対値特徴量)とを対応付ける情報である。特徴量管理テーブルは、参照画像Pr毎に設けられる。つまり、参照画像管理テーブルのレコード毎に特徴量管理テーブルが設けられる。ID#1が001〜003のレコードに対応する特徴量管理テーブルの例を図10に示した。
図10に示すように、特徴量管理テーブルの各レコードは識別番号ID#2により識別される。例えば、ID#1が001、ID#2が002のレコードを参照すると、特徴点(X2,Y2)に対し、局所特徴量01100…、及び絶対値特徴量01101…が対応付けられている。参照画像Prの特徴点は、入力画像Pinに特徴点を設定する場合と同様に、Dense Samplingなどの方法により設定される(図11を参照)。
なお、参照画像Prに設定される特徴点をWrと表記する。また、図11に示すように、特徴点Wrを基準に設定される特徴領域をArと表記する。特徴量管理テーブルには、特徴点Wr毎に設定された参照画像Prの特徴領域Arから予め計算された局所特徴量及び絶対値特徴量が記録される。
なお、特徴領域Arから局所特徴量及び絶対値特徴量を計算する方法は、入力画像Pinの特徴領域Ainから局所特徴量及び絶対値特徴量を計算する方法と同様である。つまり、記憶部201に格納された画素ペア情報201aに基づいて設定された画素ペア毎に、図7に例示した手順と同様に局所特徴量、及び絶対値特徴量が計算される。
(距離計算について)
再び図8を参照する。受信部202は、端末装置100から入力画像Pinの局所特徴量及び絶対値特徴量を受信する。受信部202により受信された入力画像Pinの局所特徴量及び絶対値特徴量は、距離計算部203に入力される。距離計算部203は、局所特徴量及び絶対値特徴量に基づき、入力画像Pinの各特徴領域Ainと、参照画像Prの各特徴領域Arとの距離(特徴の相違度)を計算する。なお、距離計算部203は、参照画像管理テーブルに含まれる各参照画像Prについて距離を計算する。
ここで、簡単のために、1つの特徴領域Ainと1つの特徴領域Arとの距離を計算する方法について説明する。なお、特徴領域Ainの局所特徴量及び絶対値特徴量は、上記のように、受信部202から距離計算部203へ入力されている。また、特徴領域Arの局所特徴量及び絶対値特徴量は、特徴量管理テーブルから読み出される。ここで、特徴領域Ainの局所特徴量をLFin、絶対値特徴量をAFinと表記する。また、特徴領域Arの局所特徴量をLFr、絶対値特徴量をAFrと表記する。
距離計算部203は、下記の式(1)に従って、局所特徴量LFin、LFr、絶対値特徴量AFin、AFrからビット列HVを計算する。さらに、距離計算部203は、ビット列HVの長さ(HVに含まれるビット値1の数)を計算する。計算されたビット列HVの長さが、特徴領域Ain、Ar間における特徴の違いを表す距離Dである。但し、下記の式(1)において、ANDは論理積演算を表し、XORは排他的論理和演算を表す。
HV={(AFin AND AFr)AND(LFin XOR LFr)}
…(1)
上記の式(1)で表現した演算のうち、(AFin AND AFr)の部分は、絶対値特徴量AFin、AFrの各ビット値について、互いに対応するビット値がいずれも1である場合に1、少なくとも1つのビット値が0である場合に0となる演算である。絶対値特徴量のビット値が1の場合とは、輝度差の絶対値が第1閾値より大きい場合であり、撮影状況の違いによる影響を受けにくい場合に相当する。つまり、この部分は、撮影状況の違いによる影響を受けにくい画素ペアの組と、撮影状況の違いによる影響を受けやすい画素ペアを含む組とを仕分けるマスクパターンを生成する演算に相当する。
一方、上記の式(1)で表現した演算のうち、(LFin XOR LFr)の部分は、局所特徴量LFin、LFrの各ビット値について、一致する場合に1、不一致の場合に0とする演算である。つまり、この演算により1となったビット値の数を合計することで、局所特徴量に基づく特徴領域Ain、Ar間の距離(特徴の違い)が得られる。但し、この距離は撮影状況の違いによる影響を受けやすいため、上記の式(1)は、上記のマスクパターンを利用して(LFin XOR LFr)の部分をマスクする演算を含む。つまり、上記の式(1)は、(AFin AND AFr)の部分と、(LFin XOR LFr)の部分との論理積演算を含む。
(AFin AND AFr)の部分は、撮影状況の違いによる影響を受けにくい画素ペアの組に対応するビット値が1、それ以外のビット値が0となっている。そのため、上記の論理積演算を実行すると、(LFin XOR LFr)の部分のうち、撮影状況の違いによる影響を受けやすい画素ペアの組に対応するビット値は0となる。つまり、撮影状況の違いによる影響を受けやすい画素ペアの組は、それらの輝度差の違いにかかわらず、ビット列HVの長さに寄与しない。従って、ビット列HVの長さである距離Dは、撮影状況の違いによる影響を抑制した特徴領域Ain、Ar間の特徴差を表す。
上述した演算の内容を図12に模式的に示した。図12の例では、参照画像Prの中に2つの特徴領域Ar(1)、Ar(2)が含まれ、入力画像Pinの中に2つの特徴領域Ain(1)、Ain(2)が含まれる。
例えば、特徴領域Ar(1)、Ain(1)に注目する。また、2つの画素ペアL1、L2に注目する。図12の例では、特徴領域Ar(1)について、画素ペアL1から絶対値特徴量のビット値0が得られ、画素ペアL2から絶対値特徴量のビット値1が得られている。同様に、特徴領域Ain(1)について、画素ペアL1から絶対値特徴量のビット値0が得られ、画素ペアL2から絶対値特徴量のビット値1が得られている。
つまり、特徴領域Ar、Ainのいずれも、画素ペアL1において輝度差の絶対値が第1閾値より小さく、画素ペアL1は撮影状況の違いによる影響を受けやすい。逆に、特徴領域Ar、Ainのいずれも、画素ペアL2において輝度差の絶対値が第1閾値より大きく、画素ペアL2は撮影状況の違いによる影響を受けにくい。この場合、特徴領域Ar、Ainのいずれにおいても絶対値特徴量が1となっている画素ペアL2は、局所特徴量に基づく距離の計算に利用される。一方、画素ペアL1は、局所特徴量に基づく距離の計算に利用されない。
また、特徴領域Ar(2)については、画素ペアL1、L2のいずれも絶対値特徴量のビット値が0である。同様に、特徴領域Ain(2)についても、画素ペアL1、L2から得られる絶対値特徴量のビット値が0である。つまり、特徴領域Ar(2)、Ain(2)の特徴を比較する際、局所特徴量に基づく距離計算に画素ペアL1、L2は利用されない。このように、輝度差が小さく(平坦)、撮影状況の違いによる影響を受けやすい画素ペアについては、局所特徴量に基づく距離計算に利用されないようにする。その結果、撮影状況の違いによる影響を抑制した特徴領域Ain、Ar間の特徴差を表す距離Dが得られることになる。
上記の式(1)による距離Dの具体的な計算例を図13に示す。なお、図13の例の特徴領域Ain、Arと、図12に例示した特徴領域Ain(1)、Ain(2)、Ar(1)、Ar(2)とは異なる領域であるとする。
図13の例では、特徴領域Ainについて、画素ペアL1から得られた絶対値特徴量のビット値は0、局所特徴量のビット値は0である。特徴領域Arについて、画素ペアL1から得られた絶対値特徴量のビット値は0、局所特徴量のビット値は1である。この場合、局所特徴量のビット値は考慮されず、画素ペアL1に対応するビット列HVのビット値(ビットの距離)は0となる。図13に例示した画素ペアL1、L2、L3、L4の組み合わせの場合、画素ペアL2、L3についても同様にビットの距離は0となる。
一方、画素ペアL4については、絶対値特徴量のビット値が特徴領域Ain、Arのいずれにおいても1であるため、局所特徴量に基づくビットの距離が計算される。図13の例では、特徴領域Ainにおける局所特徴量のビット値が0、特徴領域Arにおける局所特徴量のビット値が1であるため、ビットの距離は1となる。
従って、図13の例では、各ビットの距離を合計(ビット値1の数をカウント)し、距離Dが1となる。なお、上記の式(1)を利用すれば、ここで説明した演算を効率良く実行することができる。
上記の式(1)に示した論理演算の論理を整理すると、図14のようになる。
図14に示すように、距離計算部203は、局所特徴量LFin、LFrのXOR演算を実行する(S1)。
S1の演算により、局所特徴量LFin、LFr間でビット毎の距離が計算される。また、距離計算部203は、絶対値特徴量AFin、AFrのAND演算を実行する(S2)。
S2の演算により、絶対値特徴量のビット値が特徴領域Ain、Arの両方で1となる画素ペアを抽出するマスクパターンが得られる。なお、S1、S2の演算順序は入れ替え可能である。
S1、S2の演算後に、距離計算部203は、S1の演算により得たビット列とS2の演算により得たビット列とのAND演算を実行する(S3)。
S3の演算により、S2の演算で得たマスクパターンに従って局所特徴量から得たビット毎の距離がマスクされる。
距離計算部203は、S3の演算により得たビット列(ビット列HV)のうち、ビット値が1のビットの数をカウントする(S4)。S4のカウント処理により得たビットの数が距離Dとなる。以上説明した方法により、距離計算部203は、特徴領域Ain、Ar間の距離を計算する。
再び図8を参照する。距離計算部203は、全ての参照画像Prについて、上記の方法により入力画像Pinに含まれる各特徴領域Ainと、参照画像Prに含まれる各特徴領域Arとの間の距離Dを計算する。距離計算部203により計算された距離の情報は、投票処理部204に入力される。
(投票処理について)
投票処理部204は、参照画像Prの特徴領域Arと、入力画像Pinの各特徴領域Ainとの組について計算された距離Dに基づき、類似度が最も高い(距離Dが最も小さくなる)特徴領域Ar、Ainの組を抽出する。つまり、投票処理部204は、参照画像Prの各特徴領域Arについて、類似度が最も高い特徴領域Ain、Arの組に対応する特徴点の組を抽出する(対応点探索)。
図15に示すように、対応点探索により特徴点の組が得られると、投票処理部204は、特徴領域Arの特徴点と参照画像Prの中心との位置関係に基づき、参照画像Prの中心が位置する入力画像Pin内の位置を特定する(中心推定)。つまり、投票処理部204は、既知である特徴領域Arの特徴点から参照画像Prの中心への向き及び距離を利用し、対応する入力画像Pinの特徴点から同じ向き及び距離へ移動した位置を参照画像Prの中心が一致する位置であると特定する。
上記の特定は、入力画像Pinの特徴点と、対応する参照画像Prの特徴点とが一致するように参照画像Prを入力画像Pinに重ねた場合に、入力画像Pinにおける参照画像Prの中心を計算する処理に相当する。
例えば、特定される中心の座標を(Xv,Yv)、入力画像Pinの横幅をwi、高さをhi、参照画像Prの横幅をwr、高さをhrとすると、座標(Xv,Yv)は、下記の式(2)及び式(3)により計算できる。但し、参照画像Prの特徴点を座標(Xr,Yr)と表記し、対応する入力画像Pinの特徴点を座標(Xi,Yi)と表記している。
また、投票処理部204は、計算した中心の座標に基づいて統計的手法により入力画像Pinに参照画像Prが含まれるか否かを判定する。このとき、投票処理部204は、統計的手法として、例えば、投票を採用する。
投票は、図15に示すように、入力画像Pinと同じサイズの領域に枡目を設けた投票マップを利用して行われる。また、投票マップの各枡目にはカウンタが対応付けられている。投票処理部204は、上記の計算により特定した中心の座標を含む枡目を抽出し、抽出した枡目に対応するカウンタのカウント値(投票数)をカウントアップする。このカウントアップの処理を投票と呼ぶ。
投票処理部204は、参照画像Prの各特徴点について同様に投票を行う。投票が終了すると、判定部205は、図16に示すように、投票数の最大値を抽出する。判定部205は、抽出した最大数と予め設定した第2閾値とを比較する。
なお、第2閾値は、例えば、様々な入力画像Pin、参照画像Prの組み合わせについて実験又はシミュレーションを行い、許容可能な精度で正しい判定結果が得られる値に設定される。また、最大数を投票マップ内の全投票数で割った正規化値と第2閾値とを比較するようにしてもよい。
最大数が第2閾値より大きい場合、判定部205は、入力画像Pinの中に参照画像Prが存在すると判定する。この場合、判定部205は、最大数に対応する枡目の位置を参照画像Prの中心が存在する位置と判定する。一方、最大数が第2閾値より小さい場合、判定部205は、入力画像Pinの中に参照画像Prが存在しないと判定する。
このように、投票マップを利用して判定を行うことで、入力画像Pinと参照画像Prとの間に生じた許容可能な誤差を吸収し、ロバストな判定を行うことができる。
入力画像Pinの中に存在すると判定した場合、判定部205は、対応する参照画像Prの参照画像管理テーブルを記憶部201から読み出し、参照画像Prに含まれるランドマークの情報を端末装置100に送信する。端末装置100に送信されるランドマークの情報としては、例えば、入力画像Pinに含まれると判定されたランドマークの名称や位置、或いは、参照画像管理テーブルのIDなどがある。
また、ランドマーク毎にタグ情報を用意しておき、判定結果に応じてランドマークに対応するタグ情報が端末装置100に送信されるようにしてもよい。この場合、端末装置100でタグ情報が入力画像Pinに自動付与される仕組みを実現することができる。
また、複数のランドマークが存在すると判定された場合、判定部205は、それら全てのランドマークの情報を端末装置100に送信してもよいし、投票数の合計値や最大数が最も大きいランドマークの情報だけを端末装置100に送信してもよい。
一方、参照画像管理テーブルに含まれる全ての参照画像Prについて、入力画像Pinの中に参照画像Prが存在しないと判定した場合、判定部205は、ランドマークが存在しない旨を示すエラー情報を端末装置100に送信する。
以上、サーバ装置の機能について説明した。
[2−5.処理の流れ]
次に、図17〜図24を参照しながら、端末装置100及びサーバ装置200が実行する処理の流れについて説明する。
(2−5−1.端末装置の動作)
まず、図17及び図18を参照しながら、端末装置100の動作に係る処理の流れについて説明する。
なお、図17は、第2実施形態に係る端末装置の動作について説明するためのフロー図である。また、図18は、第2実施形態に係る端末装置の動作のうち、特徴量の計算に関する動作について説明するためのフロー図である。
(端末装置の動作)
図17に示すように、画像取得部102は、入力画像Pinを取得する(S101)。例えば、画像取得部102は、外部の記憶装置(非図示)又は端末装置100に接続されたカメラ(非図示)から入力画像Pinを取得する。また、画像取得部102は、端末装置100が有するカメラ機能を利用して入力画像Pinを取得してもよい。
次いで、特徴点設定部103は、入力画像Pinに特徴点を設定する(S102)。
S102において、例えば、特徴点設定部103は、図6に示すように、等間隔に配置された複数の特徴点を抽出する方法(Dense Sampling)を用いて入力画像Pinに特徴点を設定する。但し、特徴点の設定にはFASTなどの方法も適用できる。
次いで、特徴量計算部104は、S102で設定された特徴点のうち1つの特徴点を選択する(S103)。
次いで、特徴量計算部104は、S103で選択した特徴点に対応する特徴領域Ainについて特徴量(絶対値特徴量AFin、局所特徴量LFin)を計算する(S104)。
S104において、例えば、特徴量計算部104は、図7に示すように、入力画像Pinの特徴領域Ainから画素ペア毎に各画素の輝度を抽出する。
また、S104において、特徴量計算部104は、画素ペア毎に抽出した2つの輝度の差分を求めることで、各画素ペアの輝度差を計算する。さらに、特徴量計算部104は、計算した輝度差の符号(正負)を表すビット値を並べたビット列(局所特徴量LFin)を生成する。
また、S104において、特徴量計算部104は、計算した輝度差の絶対値を計算する。さらに、特徴量計算部104は、計算した絶対値が予め設定した閾値(第1閾値)以上であるか否かを判定し、「絶対値≧第1閾値」の場合にビット値「1」、「絶対値<第1閾値」の場合にビット値0を選択する。そして、特徴量計算部104は、選択したビット値を並べたビット列(絶対値特徴量AFin)を生成する。
次いで、特徴量計算部104は、S102で設定された全ての特徴点について計算を終えたか否かを判定する(S105)。全ての特徴点について計算を終えている場合、処理はS106へと進む。全ての特徴点について計算を終えていない場合、処理はS103へと進む。
処理がS106へと進んだ場合、送信部105は、S104で計算した特徴量(絶対値特徴量AFin、局所特徴量LFin)をサーバ装置200へ送信する(S106)。
S106の処理が完了すると、図17に示した一連の処理は終了する。
ここで、図18を参照しながら、S104の処理について、さらに説明する。
図18に示すように、特徴量計算部104は、S103で選択した特徴点周辺の特徴領域Ainに複数の画素ペアを設定する(S111)。
S111において、例えば、特徴量計算部104は、画素ペア情報101aに基づいて特徴領域Ainに複数の画素ペアを設定する。
次いで、特徴量計算部104は、S111で設定された画素ペアのうち1つの画素ペアを選択する(S112)。
次いで、特徴量計算部104は、S112で選択した画素ペアの輝度差を計算する(S113)。
S113において、例えば、特徴量計算部104は、画素ペアについて2つの輝度の差分を求めることで、画素ペアの輝度差を計算する。なお、輝度差を計算する際、画素ペアを成す2つの画素のうち、どちらの画素の輝度から、他方の画素の輝度を減算するかも予め設定されている。
次いで、特徴量計算部104は、S113で計算した輝度差の符号に対応するビット値を選択し、局所特徴量LFinのビット値に設定する(S114)。なお、輝度差の符号とビット値とは予め対応付けられている。例えば、正の符号がビット値「1」に対応付けられ、負の符号がビット値「0」に対応付けられている。
次いで、特徴量計算部104は、S113で計算した輝度差の絶対値を計算し、計算した絶対値に基づいて絶対値特徴量AFinのビット値を設定する(S115)。
S115において、例えば、特徴量計算部104は、計算した絶対値が第1閾値以上であるか否かを判定し、「絶対値≧第1閾値」の場合にビット値「1」、「絶対値<第1閾値」の場合にビット値0を設定する。
次いで、特徴量計算部104は、S111で設定された全ての画素ペアを選択し終えたか否かを判定する(S116)。全ての画素ペアを選択し終えている場合、図18に示した一連の処理は終了する。一方、全ての画素ペアを選択し終えていない場合、処理はS112へと進む。
以上、端末装置100の動作に係る処理の流れについて説明した。
(2−5−2.サーバ装置の動作)
次に、図19及び図20を参照しながら、サーバ装置200の動作に係る処理の流れについて説明する。
なお、図19は、第2実施形態に係るサーバ装置の動作について説明するためのフロー図である。また、図20は、第2実施形態に係るサーバ装置の動作のうち、参照画像の探索に関する動作について説明するためのフロー図である。
図19に示すように、サーバ装置200は、受信部202の機能により、端末装置100が送信した特徴量(絶対値特徴量AFin、局所特徴量LFin)を受信する(S201)。
次いで、サーバ装置200は、距離計算部203の機能により、参照画像Prを1つ選択する(S202)。
次いで、距離計算部203、投票処理部204、及び判定部205は、S202で選択した参照画像Prの探索を実行する(S203)。
S203において、例えば、距離計算部203は、上記の式(1)に従って、局所特徴量LFin、LFr、絶対値特徴量AFin、AFrからビット列HVを計算する。さらに、距離計算部203は、ビット列HVの長さ(HVに含まれるビット値1の数)を計算する。計算されたビット列HVの長さが、特徴領域Ain、Ar間における特徴の違いを表す距離Dである。
また、S203において、投票処理部204は、参照画像Prの特徴領域Arと、入力画像Pinの各特徴領域Ainとの組について計算された距離Dに基づき、類似度が最も高い(距離Dが最も小さくなる)特徴領域Ar、Ainの組を抽出する。
また、S203において、投票処理部204は、特徴領域Arの特徴点と参照画像Prの中心との位置関係に基づき、参照画像Prの中心が位置する入力画像Pin内の位置を特定する。そして、投票処理部204は、計算した中心の座標に基づいて統計的手法(例えば、投票)により入力画像Pinに参照画像Prが含まれるか否かを判定する。
また、S203において、判定部205は、図16に示すように、投票数の最大値を抽出する。さらに、判定部205は、抽出した最大数と予め設定した第2閾値とを比較する。
最大数が第2閾値より大きい場合、判定部205は、入力画像Pinの中に参照画像Prが存在すると判定する。この場合、判定部205は、最大数に対応する枡目の位置を参照画像Prの中心が存在する位置と判定する。一方、最大数が第2閾値より小さい場合、判定部205は、入力画像Pinの中に参照画像Prが存在しないと判定する。
次いで、判定部205は、参照画像管理テーブルに含まれる全ての参照画像Prを選択し終えたか否かを判定する(S204)。全ての参照画像Prを選択し終えている場合、処理はS205へと進む。一方、全ての参照画像Prを選択し終えていない場合、処理はS202へと進む。
処理がS205へと進んだ場合、判定部205は、少なくとも1つの参照画像Prが入力画像Pinの中に存在したか否かを判定する(S205)。少なくとも1つの参照画像Prが入力画像Pinの中に存在した場合、処理はS206へと進む。一方、参照画像Prが入力画像Pinの中に全く存在しなかった場合、処理はS207へと進む。
処理がS206へと進んだ場合、判定部205は、入力画像Pinの中に存在した参照画像Prの参照画像情報201bを端末装置100へ送信する(S206)。
一方、処理がS207へと進んだ場合、判定部205は、参照画像Prの検出失敗を示すエラー情報を端末装置100へ送信する(S207)。
S206又はS207の処理が完了すると、図19に示した一連の処理は終了する。
ここで、図20を参照しながら、S203の処理について、さらに説明する。
図20に示すように、距離計算部203は、参照画像Prの特徴点を1つ選択する(S221)。次いで、距離計算部203は、S221で選択した特徴点と、入力画像Pinの各特徴点との距離(特徴領域Arと各特徴領域Ainとの距離D)を計算する(S222)。
S222において、例えば、距離計算部203は、上記の式(1)に従って、局所特徴量LFin、LFr、絶対値特徴量AFin、AFrからビット列HVを計算し、ビット列HVの長さ(HVに含まれるビット値1の数)を求める。このビット列HVの長さが、特徴領域Ain、Ar間における特徴の違いを表す距離Dである。
次いで、投票処理部204は、S222で計算された距離が最小となる特徴点(最小距離の特徴点)を基準に入力画像Pinにおける参照画像Prの中心に対応する位置を特定する(S223)。
S223において、例えば、投票処理部204は、参照画像Prの特徴領域Arと、入力画像Pinの各特徴領域Ainとの組について計算された距離Dに基づき、類似度が最も高い(距離Dが最も小さくなる)特徴領域Ar、Ainの組を抽出する。そして、投票処理部204は、特徴領域Arの特徴点と参照画像Prの中心との位置関係に基づき、参照画像Prの中心が位置する入力画像Pin内の位置を特定する。
次いで、投票処理部204は、S223で特定した中心の位置に投票(投票マップ内で対応する枡目のカウンタをカウントアップ)する(S224)。
次いで、投票処理部204は、参照画像Prの特徴点を全て選択し終えたか否かを判定する(S225)。参照画像Prの特徴点を全て選択し終えた場合、処理はS226へと進む。一方、参照画像Prの特徴点を全て選択し終えていない場合、処理はS221へと進む。
処理がS226へと進んだ場合、判定部205は、投票マップから投票数の最大値を抽出する(S226)。
次いで、判定部205は、S226で抽出した最大値が第2閾値より大きいか否かを判定する(S227)。最大値が第2閾値より大きい場合、処理はS229へと進む。一方、最大値が第2閾値より大きくない場合、処理はS228へと進む。
処理がS228へと進んだ場合、判定部205は、入力画像Pin中に参照画像Prが存在しないと判定する(S228)。
一方、処理がS229へと進んだ場合、判定部205は、入力画像Pin中に参照画像Prが存在すると判定する(S229)。
S228又はS229の処理が完了すると、図20に示した一連の処理は終了する。
以上、サーバ装置200の動作に係る処理の流れについて説明した。
[2−6.変形例#1:参照画像の絶対値特徴量でマスクする方法]
次に、図21及び図22を参照しながら、第2実施形態の一変形例(変形例#1)について説明する。
なお、図21は、第2実施形態の一変形例(変形例#1)に係る距離計算について説明するための図である。また、図22は、第2実施形態の一変形例(変形例#1)に係る距離計算に用いる論理について説明するための図である。
これまでは、入力画像Pinの特徴領域Ainから得られる絶対値特徴量AFinと、参照画像Prの特徴領域Arから得られる絶対値特徴量AFrとを両方考慮して距離Dを計算する方法について説明してきた。変形例#1では、参照画像Prの特徴領域Arから得られる絶対値特徴量AFrだけを考慮して距離Dを計算する方法について提案する。
なお、変形例#1において変形される要素は、距離計算部203による距離Dの計算方法である。
変形例#1においては、図21に示すように、特徴領域Arの絶対値特徴量AFrが参照され、絶対値特徴量AFrのビット値が0の場合、局所特徴量LFin、LFrの値にかかわらず、ビットの距離(ビット列HVのビット値)が0に設定される。図21の例では、ハッチングが施された部分のビット値は距離の計算時に考慮されない。また、距離計算部203が実行する論理演算は、変形例#1の場合、上記の(1)ではなく下記の式(4)のようになる。また、下記の式(4)により得られるビット列HVの長さ(ビット値1の数)が距離Dとなる。
HV={AFr AND (LFin XOR LFr)}
…(4)
上記の式(4)に示した論理演算の論理を整理すると、図22のようになる。
図22に示すように、距離計算部203は、局所特徴量LFin、LFrのXOR演算を実行する(S1)。
S1の演算により、局所特徴量LFin、LFr間でビット毎の距離が計算される。S1の演算後に、距離計算部203は、S1の演算により得たビット列と、絶対値特徴量AFrとのAND演算を実行する(S2)。
S2の演算により、絶対値特徴量AFrのうちビット値が1の画素ペアだけが考慮されるように、局所特徴量から得たビット毎の距離がマスクされる。
距離計算部203は、S2の演算により得たビット列(ビット列HV)のうち、ビット値が1のビットの数をカウントする(S3)。
S3のカウント処理により得たビットの数が距離Dとなる。以上説明した方法により、距離計算部203は、特徴領域Ain、Ar間の距離Dを計算する。
変形例#1を適用すると、入力画像Pinの特徴領域Ainについて絶対値特徴量AFinを計算する処理、及び絶対値特徴量AFinを端末装置100からサーバ装置200へと送信する処理を省略することができる。そのため、変形例#1によれば、演算処理及び通信処理にかかる負荷を低減することが可能になる。
以上、変形例#1について説明した。
[2−7.変形例#2:絶対値特徴量の距離を利用する方法]
次に、図23及び図24を参照しながら、第2実施形態の一変形例(変形例#2)について説明する。なお、図23は、第2実施形態の一変形例(変形例#2)に係る距離計算について説明するための図である。また、図24は、第2実施形態の一変形例(変形例#2)に係る距離計算に用いる論理について説明するための図である。
変形例#2では、入力画像Pinの特徴領域Ainから得られる絶対値特徴量AFinと、参照画像Prの特徴領域Arから得られる絶対値特徴量AFrとを両方考慮して距離Dを計算する。但し、変形例#2では、絶対値特徴量AFinのビット値と、対応する絶対値特徴量AFrのビット値との距離を距離Dの計算に利用する。
これまでは、絶対値特徴量AFinのビット値、対応する絶対値特徴量AFrのビット値のいずれか一方が0の場合、ビットの距離を一律に0としていた。しかし、変形例#2では、図23に示すように、絶対値特徴量AFinのビット値、対応する絶対値特徴量AFrのビット値が両方0の場合にビットの距離を0とし、一方が0の場合にビットの距離を1とする。
つまり、一方の画素ペアの輝度差が大きく、他方の画素ペアの輝度差が小さい場合、これらの画素ペアの組は特徴が異なるとみなす。逆に、比較する2つの画素ペアの輝度差がいずれも小さい場合、これらの画素ペアの組は特徴が類似するとみなす。このように、輝度差が小さい画素ペアを距離Dの計算時に考慮することで、より多くの画素ペアを距離Dの計算に利用することが可能になる。
なお、距離計算部203が実行する論理演算は、変形例#2の場合、上記の(1)ではなく下記の式(5)のようになる。また、下記の式(5)により得られるビット列HVの長さ(ビット値1の数)が距離Dとなる。但し、下記の式(5)に含まれるORは論理和演算を表す。
HV={(AFin XOR AFr)OR((AFin AND AFr)AND(LFin XOR LFr))}
…(5)
上記の式(5)に示した論理演算の論理を整理すると、図24のようになる。
図24に示すように、距離計算部203は、局所特徴量LFin、LFrのXOR演算を実行する(S1)。S1の演算により、局所特徴量LFin、LFr間でビット毎の距離が計算される。また、距離計算部203は、絶対値特徴量AFin、AFrのAND演算を実行する(S2)。S2の演算により、絶対値特徴量のビット値が特徴領域Ain、Arの両方で1となる画素ペアを抽出するマスクパターンが得られる。
S1、S2の演算後に、距離計算部203は、S1の演算により得たビット列とS2の演算により得たビット列とのAND演算を実行する(S3)。S3の演算により、S2の演算で得たマスクパターンに従って局所特徴量から得たビット毎の距離がマスクされる。
また、距離計算部203は、絶対値特徴量AFin、AFrのXOR演算を実行する(S4)。S4の演算により、絶対値特徴量AFin、AFr間でビット毎の距離が計算される。なお、S1、S2、S4の演算順序は入れ替え可能である。
また、距離計算部203は、S3の演算により得たビット列と、S4の演算により得たビット列とのOR演算を実行する(S5)。S5の演算により、絶対値特徴量AFin、AFrから得たビット毎の距離と、局所特徴量LFin、LFrから得たビット毎の距離(マスク後の距離)とが合成されたビット列(ビット列HV)が得られる。
距離計算部203は、S5の演算により得たビット列HVのうち、ビット値が1のビットの数をカウントする(S6)。S6のカウント処理により得たビットの数が距離Dとなる。以上説明した方法により、距離計算部203は、特徴領域Ain、Ar間の距離を計算する。変形例#2によれば、より多くの画素ペアを距離Dの計算に利用することが可能になるため、判定精度の向上が期待できる。
以上、変形例#2について説明した。
[2−8.変形例#3:輝度差が大きい上位N個の画素ペアを利用する方法]
次に、図25を参照しながら、第2実施形態の一変形例(変形例#3)について説明する。なお、図25は、第2実施形態の一変形例(変形例#3)に係る端末装置の動作のうち、特徴量の計算に関する動作について説明するためのフロー図である。
これまでは、絶対値特徴量AFinを計算する際、輝度差の絶対値と第1閾値との大小関係に基づいて絶対値特徴量AFinのビット値を決める方法を採用していた。変形例#3では、輝度差の絶対値が大きい順に予め設定した数(N個)の画素ペアを抽出し、抽出した画素ペアに対応する絶対値特徴量AFinのビット値を1、それ以外のビット値を0とする方法を提案する。
変形例#3では、図18に示したS104の処理が図25のように変形される。そこで、図25を参照しながら、S104に係る端末装置100の動作について説明する。
図25に示すように、特徴量計算部104は、S103で選択した特徴点周辺の特徴領域Ainに複数の画素ペアを設定する(S301)。次いで、特徴量計算部104は、S301で設定された画素ペアのうち1つの画素ペアを選択する(S302)。
次いで、特徴量計算部104は、S302で選択した画素ペアの輝度差を計算する(S303)。次いで、特徴量計算部104は、S303で計算した輝度差の符号に対応するビット値を選択し、局所特徴量LFinのビット値に設定する(S304)。
次いで、特徴量計算部104は、S303で計算した輝度差の絶対値を計算し、計算した絶対値を輝度差リストに記録する(S305)。なお、輝度差リストは、画素ペア毎に計算された輝度差の絶対値が記録される情報リストであり、記憶部101に格納される。
次いで、特徴量計算部104は、S301で設定された全ての画素ペアを選択し終えたか否かを判定する(S306)。全ての画素ペアを選択し終えている場合、処理はS307へと進む。一方、全ての画素ペアを選択し終えていない場合、処理はS302へと進む。
処理がS307へと進んだ場合、特徴量計算部104は、輝度差リストを参照し、輝度差が大きい順に上位N個(Nは所定値)の画素ペアを抽出する(S307)。次いで、特徴量計算部104は、S307で抽出した画素ペアに対応する絶対値特徴量AFinのビット値を1、その他のビット値を0に設定する(S308)。S308の処理が完了すると、図25に示した一連の処理は終了する。
なお、参照画像Prに含まれる特徴領域Arの絶対値特徴量AFrについても、図25と同様の方法で計算することができる。また、変形例#3に係る絶対値特徴量AFrの計算方法は、上述した変形例#1、#2にも組み合わせて適用することができる。
以上、変形例#3について説明した。
[2−9.変形例#4:1つの装置で実現する方法]
次に、図26を参照しながら、第2実施形態の一変形例(変形例#4)について説明する。図26は、第2実施形態の一変形例(変形例#4)に係る画像処理装置の機能について説明するための図である。なお、図26に例示した画像処理装置300は、変形例#4に係る画像処理装置の一例である。また、画像処理装置300の機能は、図3に示した端末装置100のハードウェアと同じハードウェア資源を利用して実現可能である。
これまで、端末装置100が入力画像Pinから局所特徴量を抽出し、サーバ装置200がランドマークを認識するシステムについて説明してきた。変形例#4では、1台の画像処理装置300で局所特徴量の抽出からランドマークの認識までの処理を実行するシステム(単独システム)を提案する。
図26に示すように、画像処理装置300は、記憶部301、画像取得部302、特徴点設定部303、特徴量計算部304、距離計算部305、投票処理部306、及び判定部307を有する。
なお、記憶部301の機能は、上述したRAM906や記憶部920などを用いて実現できる。画像取得部302、特徴点設定部303、特徴量計算部304、距離計算部305、投票処理部306、及び判定部307の機能は、上述したCPU902などを用いて実現できる。
記憶部301には、画素ペア情報301a、及び参照画像情報301bが格納されている。画素ペア情報301aは、上述した画素ペア情報101a、201aと同じものである。参照画像情報301bは、上述した参照画像情報201bと同じものである。
また、画像取得部302、特徴点設定部303、及び特徴量計算部304の機能は、上述した端末装置100の画像取得部102、特徴点設定部103、及び特徴量計算部104の機能と同じである。但し、特徴量計算部304により計算された絶対値特徴量AFin、及び局所特徴量LFinは、記憶部301に格納される。
また、距離計算部305、投票処理部306、及び判定部307の機能は、上述したサーバ装置200の距離計算部203、投票処理部204、及び判定部205の機能と同じである。但し、距離計算部305は、絶対値特徴量AFin、及び局所特徴量LFinを記憶部301から取得する。また、判定部307は、入力画像Pinの中に含まれる参照画像Prに関する参照画像情報301b又はエラー情報をユーザに提供する。
以上、変形例#4について説明した。
以上説明したように、第2実施形態及びその変形例によれば、撮影状況や対象物の種類などにより輝度差が安定しない画像領域を含む場合でも、入力画像Pinの中に含まれる参照画像Prの認識を精度良く行うことが可能になる。また、局所特徴量の抽出にかかる処理負担が小さく、小型の端末装置を利用したシステムの実現が可能である。さらに、入力画像PinそのものがネットワークNW上に流れないため、個人情報が漏洩するリスクが抑制される。
以上、第2実施形態について説明した。
ところで、上記説明においてはランドマークの認識機能を例に説明を進めてきたが、例えば、画像の類否判定を伴う任意のアプリケーションプログラムなどに応用することもできる。また、サーバ装置200で顔認識を行うアプリケーションプログラムやAR(Augmented Reality)を利用したアプリケーションプログラムなどにも応用できる。こうした応用例についても当然に第2実施形態の技術的範囲に属する。
<3.付記>
以上説明した実施形態に関し、さらに以下の付記を開示する。
(付記1) 画素のペアが複数設定された特徴領域を複数有する参照画像と、前記画素のペアについて計算された画素間の輝度差に基づく特徴量とを記憶する記憶部と、
対象画像が有する複数の特徴領域に設定した画素のペアについて、画素間の輝度差に基づく特徴量を計算し、前記対象画像の特徴領域に関する特徴量と、前記参照画像の特徴領域に関する特徴量とを用いて、前記対象画像の中に前記参照画像に類似する領域が含まれるか否かを判断する演算部と、
を有し、
前記演算部は、前記特徴量のうち前記輝度差の大きさについて設定された条件を満たす特徴量を判断に用いる
画像処理装置。
(付記2) 前記演算部は、前記対象画像の特徴領域に関する特徴量のうち前記輝度差の大きさが前記条件を満たす特徴量と、前記参照画像の特徴領域に関する特徴量のうち前記輝度差の大きさが前記条件を満たす特徴量とを判断に用いる
付記1に記載の画像処理装置。
(付記3) 前記演算部は、前記対象画像の特徴領域に関する特徴量と、前記参照画像の特徴領域に関する特徴量のうち前記輝度差の大きさが前記条件を満たす特徴量とを判断に用いる
付記1に記載の画像処理装置。
(付記4) 前記演算部は、
前記対象画像の特徴領域に関する特徴量と前記参照画像の特徴領域に関する特徴量とを比較し、一致する特徴量の数に応じて当該2つの特徴領域の類否を判定する際に、
比較した2つの特徴量について輝度差の大きさがいずれも前記条件を満たさない場合には当該2つの特徴量が一致すると決定し、比較した2つの特徴量について輝度差の大きさが一方だけ前記条件を満たさない場合には当該2つの特徴量が一致しないと決定して、決定の結果を判定に用いる
付記2に記載の画像処理装置。
(付記5) 前記条件は、輝度差の大きさが、設定された閾値より大きいことである
付記1〜4のいずれかに記載の画像処理装置。
(付記6) 前記条件は、1つの特徴領域に関する複数の特徴量のうち輝度差の大きさが大きい順に設定された数だけ抽出された特徴量であることである
付記1〜4のいずれかに記載の画像処理装置。
(付記7) 画素のペアが複数設定された特徴領域を複数有する参照画像と、前記画素のペアについて計算された画素間の輝度差に基づく特徴量とを記憶する記憶部から前記参照画像及び前記特徴量を取得可能なコンピュータが、
対象画像が有する複数の特徴領域に設定した画素のペアについて、画素間の輝度差に基づく特徴量を計算し、前記対象画像の特徴領域に関する特徴量と、前記参照画像の特徴領域に関する特徴量とを用いて、前記対象画像の中に前記参照画像に類似する領域が含まれるか否かを判断する処理を実行し、当該処理の実行時に、前記特徴量のうち前記輝度差の大きさについて設定された条件を満たす特徴量を判断に用いる
画像判断方法。
(付記8) 画素のペアが複数設定された特徴領域を複数有する参照画像と、前記画素のペアについて計算された画素間の輝度差に基づく特徴量とを記憶する記憶部から前記参照画像及び前記特徴量を取得可能なコンピュータに、
対象画像が有する複数の特徴領域に設定した画素のペアについて、画素間の輝度差に基づく特徴量を計算し、前記対象画像の特徴領域に関する特徴量と、前記参照画像の特徴領域に関する特徴量とを用いて、前記対象画像の中に前記参照画像に類似する領域が含まれるか否かを判断する処理を実行させ、当該処理の実行時に、前記特徴量のうち前記輝度差の大きさについて設定された条件を満たす特徴量を判断に用いるように制御する
処理を実行させる、プログラム。
(付記9) 前記コンピュータが、前記対象画像に関する特徴量のうち前記輝度差の大きさが前記条件を満たす特徴量と、前記参照画像に関する特徴量のうち前記輝度差の大きさが前記条件を満たす特徴量とを判断に用いる
付記7に記載の画像判断方法。
(付記10) 前記コンピュータが、前記対象画像に関する特徴量と、前記参照画像に関する特徴量のうち前記輝度差の大きさが前記条件を満たす特徴量とを判断に用いる
付記7に記載の画像判断方法。
(付記11) 前記コンピュータが、
前記対象画像の特徴領域に関する特徴量と前記参照画像の特徴領域に関する特徴量とを比較し、一致する特徴量の数に応じて当該2つの特徴領域の類否を判定する際に、
比較した2つの特徴量について輝度差の大きさがいずれも前記条件を満たさない場合には当該2つの特徴量が一致すると決定し、比較した2つの特徴量について輝度差の大きさが一方だけ前記条件を満たさない場合には当該2つの特徴量が一致しないと決定して、決定の結果を判定に用いる
付記9に記載の画像判断方法。
(付記12) 前記条件は、輝度差の大きさが、設定された閾値より大きいことである
付記7、9〜11に記載の画像判断方法。
(付記13) 前記条件は、1つの特徴領域に関する複数の特徴量のうち輝度差の大きさが大きい順に設定された数だけ抽出された特徴量であることである
付記7、9〜11に記載の画像判断方法。
(付記14) 前記演算部は、前記参照画像に関する特徴量と、前記対象画像に関する特徴量のうち前記輝度差の大きさが前記条件を満たす特徴量とを判断に用いる
付記1に記載の画像処理装置。
(付記15) 前記参照画像が有する特徴領域に設定された複数の画素のペアについて、計算された画素間の輝度差に基づく特徴量を表すビット値を並べたビット列をQX1、当該輝度差の大きさが前記条件を満たすか否かを表すビット値を並べたビット列をQY1と表現し、
前記対象画像が有する特徴領域に設定された複数の画素のペアについて、計算された画素間の輝度差に基づく特徴量を表すビット値を並べたビット列をQX2、当該輝度差の大きさが前記条件を満たすか否かを表すビット値を並べたビット列をQY2と表現し、
論理積をAND、排他的論理和をXORと表現した場合に、
前記演算部は、ビット列{(QY1 AND QY2)AND(QX1 XOR QX2)}に含まれる所定のビット値の数に基づいて特徴領域間の類否を判定する
付記2に記載の画像処理装置。
(付記16) 前記参照画像が有する特徴領域に設定された複数の画素のペアについて、計算された画素間の輝度差に基づく特徴量を表すビット値を並べたビット列をQX1、当該輝度差の大きさが前記条件を満たすか否かを表すビット値を並べたビット列をQY1と表現し、
前記対象画像が有する特徴領域に設定された複数の画素のペアについて、計算された画素間の輝度差に基づく特徴量を表すビット値を並べたビット列をQX2と表現し、
論理積をAND、排他的論理和をXORと表現した場合に、
前記演算部は、ビット列{QY1 AND(QX1 XOR QX2)}に含まれる所定のビット値の数に基づいて特徴領域間の類否を判定する
付記3に記載の画像処理装置。
(付記17) 前記参照画像が有する特徴領域に設定された複数の画素のペアについて、計算された画素間の輝度差に基づく特徴量を表すビット値を並べたビット列をQX1、当該輝度差の大きさが前記条件を満たすか否かを表すビット値を並べたビット列をQY1と表現し、
前記対象画像が有する特徴領域に設定された複数の画素のペアについて、計算された画素間の輝度差に基づく特徴量を表すビット値を並べたビット列をQX2、当該輝度差の大きさが前記条件を満たすか否かを表すビット値を並べたビット列をQY2と表現し、
論理積をAND、論理和をOR、排他的論理和をXORと表現した場合に、
前記演算部は、ビット列{(QY1 XOR QY2)OR((QY1 AND QY2) AND (QX1 XOR QX2))}に含まれる所定のビット値の数に基づいて特徴領域間の類否を判定する
付記4に記載の画像処理装置。
(付記18) 付記8に記載のプログラムが格納された、コンピュータにより読み取り可能な記録媒体。