以下、図面を参照して、本発明の一実施形態によるメッセージ送受信装置を説明する。図1は同実施形態の構成を示すブロック図である。この図において、符号1は、メッセージ送受信処理を行うメッセージ送受信装置である。メッセージ送受信装置1はネットワーク5に接続されたコンピュータ装置によって構成される。符号2は、カメラ等で撮影して得られた複数の2次元画像データ等を事前登録する際に、データを入力する事前登録データ入力用端末である。事前登録データ入力用端末2は、管理者であるユーザAが使用する。符号3は、文字や絵文字等からなるメッセージデータを入力するメッセージ入力用端末である。メッセージ入力用端末3は、メッセージ送信者であるユーザBが使用する。符号4は、メッセージを受信するために、被写体を認識するためのデータを入力し、かつメッセージを受信する問い合わせ情報入力端末である。問い合わせ情報入力端末4は、メッセージ受信者であるユーザCが使用する。
符号11は、事前登録データ入力端末2を介して入力されたデータを登録する物体・ユーザデータ登録部である。符号12は、メッセージ送信者に対して登録された事前登録画像の選択を促し、メッセージ送信者によって指定されたメッセージの送信先ユーザIDと、選択された画像と、作成されたメッセージとを、関連付けてメッセージ送信情報として登録するメッセージ登録部である。符号13は、問い合わせ情報入力部4を介して入力された物体を撮影した1物体あたり10フレーム程度の2次元画像群データである問い合わせ情報から撮影されている物体に合致する事前登録画像を特定し、保存されたメッセージ送信情報の中から、特定した事前登録画像に関連付けられている物体IDと送信先ユーザIDが一致するものを検索し、存在すれば、このメッセージ送信情報として保存されているメッセージを読み出すメッセージ送信部である。符号14は、メッセージ送受信処理に必要なデータを記憶する記憶部である。
次に、図2を参照して、メッセージ送受信についての全体的な処理動作を説明する。図2は、メッセージ送受信についての全体的な処理動作を示す図である。まず、事前準備として、貼り付け対象画像を事前登録する(図2(1))。そして、利用時毎にメッセージと対象を指定して入力を行う(図2(2))。また、動画を撮影して入力を行う(図1(3))と、メッセージ受信が行われることになる(図2(4))。
次に、図3を参照して、図1に示す物体・ユーザデータ登録部11が、ユーザAによって事前登録データ入力端末2を介して入力された物体データもしくはユーザデータを記憶部14に登録保存する処理動作を説明する。図3は、図1に示す物体・ユーザデータ登録部11の処理動作を示すフローチャートである。以下の説明において、物体データとは、物体を任意の視点から撮影した1物体あたり1枚ずつの2次元画像データを、画像データ毎に一意に割り振られる物体IDに関連付けたデータである。また、ユーザデータとは、メッセージ送受信装置1を利用するユーザのメールアドレスを、ユーザ毎に一意に割り振られるユーザIDに関連付けたデータである。
まず、ユーザAが事前登録データ入力端末によってメッセージ送受信装置1に接続すると、物体・ユーザデータ登録部11は登録種別の選択をユーザAに促す。これを受けて、ユーザAが事前登録データ入力端末2の入力部を操作して、物体データの入力を指示すると、物体・ユーザデータ登録部11は、ユーザAからの画像データ情報のアップロードを待ち受ける。事前登録データ入力端末2から画像データがアップロードされると、物体・ユーザデータ登録部11は、受信した画像データ毎に一意に割り振った物体IDを作成し、これに受信した画像データを関連付けて記憶部14に登録する(ステップS1)。この処理を事前登録データ入力端末2からアップロードする画像データ数分繰り返す。
図4は、この処理を終えた時点で記憶部14に登録されている物体データの例を示す図である。記憶部14上の物体データには、画像データ毎に唯一に割り振られた物体IDと、この画像データのファイル名が関連付けられて記録・保持される。
次に、ユーザAが事前登録データ入力端末2の入力部を操作して、ユーザデータの入力を指示した場合は、物体・ユーザデータ登録部11はユーザAからのユーザIDと当該ユーザIDのメールアドレスをセットとするユーザデータ情報のアップロードを待ち受ける。事前登録データ入力端末2からユーザデータがアップロードされると、物体・ユーザデータ登録部11は、受信したユーザデータを記憶部14に登録する(ステップS2)。この処理を事前登録データ入力端末2がアップロードするユーザデータ数分繰り返す。
図5は、この処理を終えた時点の記憶部14に登録されているユーザデータの例を示す図である。記憶部14上のユーザデータには、メールアドレス毎に唯一に割り振られたユーザIDと、このユーザのメールアドレスとが関連付けられて記録・保持される。
次に、図6を参照して、図1に示すメッセージ登録部12が、ユーザBによってメッセージ入力用端末3を介して入力されたメッセージを記憶部14に登録保存する処理動作を説明する。図6は、図1に示すメッセージ登録部12の処理動作を示すフローチャートである。
まず、ユーザBがメッセージ入力用端末3によってメッセージ送受信装置1に接続すると、メッセージ登録部12は送信先の指定をユーザBに促す(ステップS11)。この処理は記憶部14に登録されたユーザデータをメッセージ入力用端末3に対して一覧表示することで実現できる。ユーザBがメッセージ入力用端末3の入力部を操作して、ユーザデータを選択すると、メッセージ登録部12は、物体の選択をユーザBに促す(ステップS12)。この処理は、ユーザAが事前に登録した記憶部14に記録されている物体データにアクセスし、これらの物体データ群をメッセージ入力用端末3に対して一覧表示することで実現できる。
次に、ユーザBがメッセージ入力用端末3の入力部を操作して、物体データの一つを選択すると、メッセージ登録部12は、メッセージの作成をユーザBに促す(ステップS13)。ユーザBがメッセージ入力用端末3の入力部を操作して、メッセージデータを作成、アップロードすると、メッセージ登録部12は受信したメッセージデータと、ステップS12で選択された物体ID、ステップS11で選択された送信先であるユーザID、および、ユーザBのユーザIDを関連付けて記憶部14に保存する(ステップS14)。
図7は、この処理によって記憶部14に登録された情報の例を示す図である。この処理によって、送信元のユーザID、送信先のユーザID、物体ID、メッセージが関連付けられて記録・保持される。
次に、図8を参照して、図1に示すメッセージ送信部13が、ユーザによって問い合わせ情報入力部用端末4を介して入力された問い合わせ情報に基づき、記憶部14に保存されているメッセージを読み出し、ユーザに提示する処理動作を説明する。図8は、図1に示すメッセージ送信部13の処理動作を示すフローチャートである。
まず、ユーザCが問い合わせ情報入力用端末4によってメッセージ送受信装置1に接続すると、メッセージ送信部13はユーザCからの問い合わせ情報を取得する(ステップS21)。ここで、問い合わせ情報とは、物体を撮影した1物体あたり10フレーム程度の2次元画像群データ(動画)であり、ユーザCが問い合わせ情報入力用端末4に備えられたカメラなどを用いて撮影し、問い合わせ情報入力用端末4の入力部を操作してメッセージ送信部13に送信されるものである。ここで、ユーザCに自分あてのメッセージが登録されている物体を伝える術としては、例えば事前にユーザBから伝えておくことや、全てのユーザ間で登録物体を共有伝達しておく、もしくは、ユーザCがメッセージ送信部13に接続した際にメッセージ送信部13が記憶部14に登録されている画像データ全てを一覧表示して伝える、もしくは、ユーザCがメッセージ送信部13に接続した際にメッセージ送信部13がユーザC宛のメッセージが有る場合に関連付けられた画像データを選択して表示して伝える、などがある。
次に、メッセージ送信部13は受信した問い合わせ情報と、事前に登録している画像データ群とを照合し、同一の物体を示す物体データを特定する(ステップS22)。問い合わせ情報と同一の物体を撮影した物体データ(画像)を特定する方法については後に詳述する。
次に、メッセージ送信部13は、特定した物体データとユーザCのユーザIDに関連づけられて記録されたメッセージを読み出す(ステップS23)。最後に、メッセージ送信部13は、ユーザCに対して読みだしたメッセージを送信する(ステップS24)。
次に、問い合わせ情報と同一の物体を撮影した事前登録物体データ(画像)を特定する方法について説明する。図9は、図1に示すメッセージ送信部13と記憶部14の構成を示すブロック図である。この図において、符号131は、クエリ映像(問い合わせ情報)を為す各画像から特徴点を抽出し、特徴点の特徴量を算出し、クエリ特徴量リストを生成するクエリ特徴表現部である。符号132は記憶部14に予め登録しておいた検索対象データベース(DB)内画像の特徴点を抽出し、特徴点の特徴量を算出し、DB特徴量リストを生成するDB特徴表現部である。符号133はクエリ特徴表現部131で生成したクエリ特徴量リストと、DB特徴表現部132で生成したDB特徴量リスト間で比較を行い、投票の上被写体認識結果を出力する照合部である。
次に、図9に示すメッセージ送信部13の処理動作を説明する。ここではクエリとして映像(2次元画像群)を入力し、1物体あたり1枚若しくは複数の2次元画像を物体検索対象データベースとして予め記憶部14に記憶されているものとして説明する。
次に、図10を参照して、図9に示すクエリ特徴表現部131が入力したクエリ映像を為す画像群から、例えば、文献「H.Bay,T.Tuytelaars, and L.V.Gool,"SURF:SpeedUp Robust Features",Proc. of Int. Conf. of ECCV,(2006)」に記載の方法(SURF)や、ヒストグラム等の公知の方法を用いて画像上のエッジやコーナー等の特徴点を抽出し、各特徴点のN次元ベクトルで表現される特徴量を算出し(SURFの場合はN=64)、クエリ特徴量リストを生成する動作を説明する。図10は、入力したクエリ映像を為す画像群からSURFや、ヒストグラム等の公知の方法を用いて画像上のエッジやコーナー等の特徴点を抽出し、各特徴点のN次元ベクトルで表現される特徴量を算出し、クエリ特徴量リストを生成する動作を示すフローチャートである。
まず、ユーザが入力部を操作して、クエリ映像(2次元画像群)の入力を指示すると、クエリ特徴表現部131はクエリ映像を入力する(ステップS31)。そして、クエリ特徴表現部131は入力した映像を構成するM枚の画像群のうち、時系列順にnフレーム目とn+1フレーム目の連続する2枚の画像を対象として、この2枚の画像から特徴点を抽出し(ステップS32)、抽出したすべての特徴点で特徴量を算出する(ステップS33)。なお、2回目(n≧2)以降はnフレーム目の特徴点およびその特徴量は既に1つ前の画像ペアであるn−1フレーム目とnフレーム目の2枚の画像を対象として算出済みのため再計算の必要は無く、n+1フレーム目画像のみ処理する。このとき、各特徴点が属す画像番号およびこの画像中の特徴点番号と各特徴量を紐づけて保存しておく。
そして、クエリ特徴表現部131は、nフレーム目の画像の各特徴点に対してn+1フレーム目画像の特徴点のうち、特徴量のベクトル間距離が最近傍となる特徴点を求め、またn+1フレーム目画像の各特徴点に対してnフレーム目画像の特徴点のうち最近傍となる特徴点を求め、相互に最近傍特徴点関係にあるペアのみを特徴点ペアとすることで特徴点ペアを算出する(ステップS34)。続いて、クエリ特徴表現部131は、この特徴点ペアをもとに、ペアを為す各々の特徴点が属す画像番号、および各特徴点番号、各座標値、各特徴量を紐づけて、クエリ特徴量リストを生成する。n=1のときに算出した特徴ペアは新規特徴ペアとしてすべてクエリ特徴量リストに挿入する。一方、n≧2では、各特徴ペアとクエリ特徴量リストに格納された特徴ペアの比較を行う(ステップS35)。
図11は、クエリ特徴量リストの構成と更新方法を示す図である。図11(a)に示すように、クエリ特徴表現部131は、クエリ特徴量リストに同じ画像番号、特徴点番号の行が存在しなければ新規特徴としてクエリ特徴量リストに挿入する(ステップS6)。一方、図11(b)に示すように、クエリ特徴表現部131は、画像番号および特徴点番号が同じ行が存在している場合は既出特徴ペアとして、クエリ特徴量リストの情報を書き換える(ステップS37)。この一連の処理を画像ペア数分M−1回分繰り返し、クエリ特徴表現部131は、クエリ特徴量リストを更新する。そして最後に、クエリ特徴表現部131は、クエリ特徴量リストを出力する(ステップS38)。これによって、被写体物体上の各特徴箇所から重複なく特徴量を取得したクエリ特徴量リストが取得できる。
なおこの時、処理に用いる画像群は、映像を構成するすべてのフレームを対象としてもよいし、事前に設定した固定フレーム分ずつ(例えば3フレームずつ)間引いたものを利用してもよい。また撮像装置に付属するその他のセンサによって計測、もしくはクエリ映像を為すフレーム画像から因子分解法等の方法によって算出した撮像装置の移動量に応じて、フレームの間引き数を変えてもよい。例えば移動量が大きい場合は間引くフレーム数を減らし、移動量が小さい場合は間引くフレーム数を増やすことによって、利用する画像群の各々に写る被写体姿勢の角度間隔を均一に近づけることが期待できる。
また、上記の方法で最終的に出力されるクエリ特徴量リストの特徴量は、被写体物体上の各特徴箇所から1つずつ、その特徴箇所が取得されたフレームのうち最も後のフレームで取得された特徴量が保存されているが、対応特徴点の連結情報を図12に示すように時系列順に保存しておくことでそれぞれの被写体物体上の各特徴箇所が映るフレームのうち時系列順で真ん中にあるフレームから取得された特徴量を最終的な特徴量としても出力してもよい。図12は、特徴点連結情報の一例を示す図である。こうすることで、図12に示すような連結情報を持つ必要は発生するが、この特徴箇所を最も正面に近い箇所から撮影した際の特徴量を取得することが期待でき、データベース画像内に写るこの特徴箇所がどのような角度で取得されるか分からないという条件下では、照合時の特徴量間のズレを最小限に抑えることができ、最終的な認識精度を向上させることが可能となる。
また、各被写体上の同一箇所を示す特徴点を取得したフレームのうち、前述した時系列順で真ん中のフレームに、重みづけをした加重平均によって特徴量を再計算し、この特徴量をリストとして出力してもよい。例えば、今64次元の特徴量が被写体の同一箇所の特徴としてe個得られたとする。このときこのe個の特徴量をd
i(0<i≦e)と表現し、各特徴量の要素をd
ifと表現する(0<f≦64)。算出する特徴量Dのf番目の要素D
fは重みづけ項wを用いて、以下の(1)式によって求めてもよい。なお、重みづけ項wはすべて1としてもよいし、正規分布で設定してもよい。
また、特徴点ペアを算出する際は、2画像から算出した特徴量をもとにnフレーム目画像の各特徴点に対してn+1フレーム目画像の特徴点のうち、特徴量のベクトル間距離が最近傍となる特徴点を求め、特徴点ペアとしてもよい。また、その逆にn+1フレーム目画像の各特徴点に対してnフレーム目画像の特徴点のうち最近傍となる特徴点を求め、特徴点ペアとしてもよい。ただし撮像装置で撮影された映像のnフレーム目とn+1フレーム目画像には片方にしか存在しない被写体物体上の特徴箇所が存在する可能性が高いため、相互に最近傍特徴点関係にあるペアのみに絞った方がノイズの誤対応や、ある特徴点に複数の特徴点が最近傍として重複して対応付くことを防ぐことができ、クエリ特徴量リストを正しく更新できる。
また、上記の方法ではクエリ特徴量リストとして出力する各特徴点の座標は、各特徴点が抽出されたフレーム画像上の2次元座標をもとに、1番初めのフレーム画像の座標値を原点として、各フレーム画像との特徴点群の移動距離をもとに補正して算出した2次元座標を用いてもよい。またある画像ペア上の特徴点ペアの画像上移動距離から3次元座標を推定し、この3次元座標を出力してもよい。例えば撮像装置から近い点と遠い点を比較すると、近い点ほどオプティカルフローの差分値が大きくなることを利用し、同一画像ペア間に存在する特徴点ペアのオプティカルフロー長の差分の逆数を利用し、算出した値を奥行として与えてもよい。また、文献「清水慶行,金谷健一,”未校正カメラによるオプティカルフローからの3次元復元とその信頼度評価”,情報処理学会研究報告.CVIM,2000(33),33−40,2000−03−23(2000).」に記載の方法によって求めてもよい。3次元座標を用いることで照合精度を向上させることができる。
さらに、図10に示すクエリ特徴表現部131の処理動作は、図13に示す処理動作としてもよく、処理の順序やアルゴリズム構成は上記の限りでは無い。すなわち、クエリ映像を入力し(ステップS41)、処理に用いる画像すべてから特徴点を抽出し(ステップS42)、その特徴量を求めてから(ステップS43)、隣接する2フレーム間で特徴点ペアを算出し(ステップS44)、前述した処理動作と同様にクエリ特徴量リストを生成して(ステップS45〜S47)、クエリ特徴量リストを出力する(ステップS48)ようにしてもよい。
次に、図14を参照して、図9に示すDB特徴表現部132が記憶部14に格納されているすべてのデータベース画像から特徴点を抽出し、この特徴点すべての特徴量を算出し、DB特徴量リストを生成する動作を説明する。図14は、図9に示すDB特徴表現部132が記憶部14に格納されているすべてのデータベース画像から特徴点を抽出し、この特徴点すべての特徴量を算出し、DB特徴量リストを生成する動作を示すフローチャートである。図15は、記憶部14内の検索対象データベースのテーブル構成を示す図である。記憶部14内には、P枚(P≧1)のデータベース画像群と、この画像群の情報を保存したデータベース画像対応表が保存されている。このデータベース画像対応表には、DB画像id、データベース画像が保存されているDB画像パス、各々の画像に写る被写体の詳細情報(例えば商品名、価格、ブランド名等)を紐づけて保存されている。
まず、DB特徴表現部132は、記憶部14に格納されているデータベース画像(2次元画像)を入力する(ステップS51)。そして、DB特徴表現部132は、このデータベース画像から特徴点抽出を行い(ステップS52)、抽出した特徴点の特徴量を算出する(ステップS53)という動作を入力した画像枚数分繰り返す。そして、図15に示すDB特徴量リストのように、データベース画像の通し番号であるDB画像id、このデータベース画像から抽出した特徴点の通し番号である特徴点id、この特徴点から得られた特徴量を紐づけて、すべてのデータベース画像分を順に保存し、最後にDB特徴量リストを出力する(ステップS54)。図16は、DB特徴量リストのテーブル構成を示す図である。
次に、図17を参照して、図9に示す照合部133が、クエリ特徴表現部131が算出したクエリ特徴量リストとDB特徴表現部132が算出したDB特徴量リストとを比較し、データベース画像群の中からクエリ映像の被写体を特定し、認識結果として出力する動作を説明する。図17は、図9に示す照合部133が、クエリ特徴表現部131が算出したクエリ特徴量リストとDB特徴表現部132が算出したDB特徴量リストとを比較し、データベース画像群の中からクエリ映像の被写体を特定し、認識結果として出力する動作を示すフローチャートである。
まず、照合部133は、クエリ特徴表現部131が算出したクエリ特徴量リストと、DB特徴表現部132が算出したすべてのデータベース画像の特徴量を含むDB特徴量リストを入力する(ステップS61、S62)。そして、照合部133は、クエリ特徴量リストの1つの特徴点の特徴量と、DB特徴量リストの特徴量のすべてとを比較して(ステップS63)、最もベクトル間距離の近い特徴量を有するデータベース画像の最近傍画像idを特定してスコアを投票する。このスコアを求める際は、特徴量のベクトル間距離が最近傍であるベクトル間距離およびクエリ特徴量リストに保存された各特徴点の座標値を利用して算出する。
例えば、図18に示すようにクエリ特徴量リストの中で1つの特徴点(1行分)を注目特徴点として設定し、注目特徴点以外のクエリ特徴点を周囲点と称する。図18は、照合処理動作を示す図である。図18(1)に示すように、この注目特徴点に対して特徴量ベクトル間距離が最近傍のDB特徴量リストの特徴量(1行)を求め、この特徴量の抽出されたデータベース画像を投票対象画像とし、この特徴量ベクトル間距離を用いて(2)式により算出したスコアを投票する。
このとき注目特徴点と注目点以外の各特徴点の空間距離Dは、注目特徴点のスコアを算出する際は本来D=0となるが、スコアSの発散を防ぐため事前に与えたoffset値を用い、D=offset(>0)とする。さらに、図18(2)に示すように、注目点が最近傍として算出した特徴量が属すデータベース画像から抽出された特徴量群のみを対象として、各周囲点特徴量から最近傍特徴量を求め、この画像に(2)式によってスコアを算出し、投票対象画像に投票する。なお周囲点から注目特徴点までの空間距離はD=D+offsetとすることとする。offsetは例えば0.0001と設定する。ここで説明した(2)式では、スコア算出に注目特徴点との空間距離Dおよびベクトル間距離に対して逆数を用いたが、ガウス関数や指数関数を用いてスコア算出式を設定してもよい。
また、上記の例では注目点の特徴量ベクトル間距離が最近傍となる特徴点を有する1枚の投票対象画像にのみ投票を行ったが、特徴量ベクトル間距離が事前に与えたnに基づき、第n近傍点となる特徴点群をそれぞれ有す複数の投票対象画像を設定し、それぞれに注目点および周囲点から投票を行ってもよいし、上記の限りではない。なお、ここでスコア算出式に「特徴ベクトル間距離」を入れたのは、クエリ特徴量リストとDB特徴量リストの特徴点間で、テクスチャの類似度をスコアに反映するためである。また、スコア算出式に「注目特徴点との空間距離D」を入れたのは、クエリ入力映像中で取得された特徴点座標が空間的に近い位置に存在するとき、この特徴点群に対応する特徴点群は、任意の視点から撮影された検索対象画像内においても一緒に写る可能性が高いであろうことを利用したもので、ベクトル間距離によるテクスチャ類似度に対する重みづけの役割を担っている。また他の要素によって重みをつけてもよい。
そして、すべてのクエリ特徴量リスト中の特徴点(すべての行)を、1つずつ注目点として前述した投票を繰り返す。そして、DB特徴量リストの中で、クエリ特徴量リストに最も類似するデータベース画像を合計スコア値から、最近傍画像idを特定して(ステップS64)、このデータベース画像を検索対象画像とし、若しくは検索対象画像候補としてクエリ特徴量リストに類似する順にデータベース画像名をソートして、認識結果として出力する(ステップS65)。また認識結果の形式としてはこの検索対象画像に写る被写体の詳細情報(商品名、価格、ブランド名等)を出力してもよい。
また、2画像間で対応する特徴点ペアのみを集めたクエリ特徴量リストを照合に用いるのは、1画像のみで抽出された特徴点にはノイズを含みやすいからである。例えば映像から処理に用いるフレーム画像を間引く際の間引き数が多いときには、フレーム画像群の中で被写体上の同一箇所から抽出される重複特徴点が少ないため、ペアに含まれない特徴量も利用した方がよい。また上記では特徴量ペアを作ることによりオプティカルフローを求め、オプティカルフローの差から推定した3次元座標を利用する方法を示したが、ペアを生成できなかった特徴点を利用する場合は、この特徴点に関しては周囲の特徴点ペアから推定した奥行から3次元座標を推定してもよい。
また、前述した説明ではすべての場合で検索対象映像がデータベース中に含まれることを仮定しているが、すべてのデータベース映像において、事前に与えた閾値よりも合計スコア値が低ければ、認識結果として「該当なし」と出力してもよい。
次に、図9に示すメッセージ送信部13の変形例を説明する。このメッセージ送信部13は、検索対象が「映像」である。ここではクエリとして映像(2次元画像群)を入力し、1物体あたり1つ若しくは複数の映像を複数物体分、検索対象を含むデータベース映像群として予め記憶部14に記憶しておく。
次に、クエリ特徴表現部131が入力したクエリ映像を為す画像群から特徴点を抽出し、特徴点の特徴量を算出し、クエリ特徴量リストを生成する動作を説明する。変形例におけるクエリ特徴表現部131の処理動作は、図10に示す処理動作と同様であるため、ここでは簡単に説明する。
まず、ユーザが入力部を操作して、クエリ映像(2次元画像群)の入力を指示すると、クエリ特徴表現部131はクエリ映像を入力する。そして、クエリ特徴表現部131は入力した映像を構成するM枚の画像群のうち、時系列順にnフレーム目とn+1フレーム目の2枚の画像を対象として、この2枚の画像から特徴点を抽出し、抽出したすべての特徴点で特徴量を算出する。なお2回目(n≧2)以降はnフレーム目の特徴点およびその特徴量は既に1つ前の画像ペアであるn−1フレーム目とnフレーム目の2枚の画像を対象として算出済みのため再計算の必要は無く、n+1フレーム目画像のみ処理する。このとき、各特徴点が属す画像番号およびこの画像中の特徴点番号と各特徴量を紐づけて保存しておく。
そして、nフレーム目の画像の各特徴点に対してn+1フレーム目画像の特徴点のうち、特徴量のベクトル間距離が最近傍となる特徴点を求め、またn+1フレーム目画像の各特徴点に対してnフレーム目画像の特徴点のうち最近傍となる特徴点を求め、相互に最近傍特徴点関係にあるペアのみを特徴点ペアとする。そしてこの特徴点ペアをもとに、ペアを為す各々の特徴点が属す画像番号、および各特徴点番号、各座標値、各特徴量を紐づけて、クエリ特徴量リストを生成する。まずn=1のときに算出した特徴ペアは新規特徴ペアとしてすべてクエリ特徴量リストに挿入する。n≧2では、各特徴ペアとクエリ特徴量リストに格納された特徴ペアの比較を行う。図11(a)のようにクエリ特徴量リストに同じ画像番号、特徴点番号の行が存在しなければ新規特徴としてクエリ特徴量リストに挿入し、図11(b)のように画像番号および特徴点番号が同じ行が存在している場合は既出特徴ペアとして、クエリ特徴量リストの情報を書き換える。この一連の処理を画像ペア数分M−1回分繰り返し、クエリ特徴量リストを更新する。そして最後にクエリ特徴量リストを出力する。これによって、被写体物体上の各特徴箇所から重複なく特徴量を取得したクエリ特徴量リストが取得できる。
なおこの時、処理に用いる画像群は、映像を構成するすべてのフレームを対象としてもよいし、事前に設定した固定フレーム分ずつ(例えば3フレームずつ)間引いたものを利用してもよい。また撮像装置に付属するその他のセンサによって計測、もしくはクエリ映像を為すフレーム画像から因子分解法等の方法によって算出した撮像装置の移動量に応じて、フレームの間引き数を変えてもよい。例えば移動量が大きい場合は間引くフレーム数を減らし、移動量が小さい場合は間引くフレーム数を増やすことによって、利用する画像群の各々に写る被写体姿勢の角度間隔を均一に近づけることが期待できる。
また、上記の方法で最終的に出力されるクエリ特徴量リストの特徴量は、被写体物体上の各特徴箇所から1つずつ、その特徴箇所が取得されたフレームのうち最も後のフレームで取得された特徴量が保存されているが、対応特徴点の連結情報を図12のように時系列順に保存しておくことでそれぞれの被写体物体上の各特徴箇所が映るフレームのうち時系列的に真ん中にあるフレームから取得された特徴量を最終的な特徴量としても出力してもよい。こうすることで、図12のような連結情報を持つ必要は発生するが、この特徴箇所を最も正面に近い箇所から撮影した際の特徴量を取得することが期待でき、DB画像内に写るこの特徴箇所がどのような角度で取得されるか分からないという条件下では、照合時の特徴量間のズレを最小限に抑えることができ、最終的な認識精度を向上させることが可能となる。
また、各被写体上の同一箇所を示す特徴点を取得したフレームのうち、前述した時系列順で真ん中のフレームに、重みづけをした加重平均によって特徴量を再計算し、この特徴量をリストとして出力してもよい。例えば、今64次元の特徴量が被写体の同一箇所の特徴としてe個得られたとする。このときこのe個の特徴量をdi(0<i≦e)と表現し、各特徴量の要素をdifと表現する(0<f≦64)。算出する特徴量Dのf番目の要素Dfは重みづけ項wを用いて、上記の(1)式によって求めてもよい。なお、重みづけ項wはすべて1としてもよいし、正規分布で設定してもよい。
また、特徴点ペアを算出する際は、2画像から算出した特徴量をもとにnフレーム目画像の各特徴点に対してn+1フレーム目画像の特徴点のうち、特徴量のベクトル間距離が最近傍となる特徴点を求め、特徴点ペアとしてもよい。また、その逆にn+1フレーム目画像の各特徴点に対してnフレーム目画像の特徴点のうち最近傍となる特徴点を求め、特徴点ペアとしてもよい。ただし撮像装置で撮影された映像のnフレーム目とn+1フレーム目画像には片方にしか存在しない被写体物体上の特徴箇所が存在する可能性が高いため、相互に最近傍特徴点関係にあるペアのみに絞った方がノイズの誤対応や、ある特徴点に複数の特徴点が最近傍として重複して対応付くことを防ぐことができ、クエリ特徴量リストを正しく更新できる。
また、上記の方法ではクエリ特徴量リストとして出力する各特徴点の座標は、各特徴点が抽出されたフレーム画像上の2次元座標をもとに、1番初めのフレーム画像の座標値を原点として、各フレーム画像との特徴点群の移動距離をもとに補正して算出した2次元座標を用いてもよい。またある画像ペア上の特徴点ペアの画像上移動距離から3次元座標を推定し、この3次元座標を出力してもよい。例えば撮像装置から近い点と遠い点を比較すると、近い点ほどオプティカルフローの差分値が大きくなることを利用し、同一画像ペア間に存在する特徴点ペアのオプティカルフロー長の差分の逆数を利用し、算出した値を奥行として与えてもよい。また文献「清水慶行,金谷健一,”未校正カメラによるオプティカルフローからの3次元復元とその信頼度評価”,情報処理学会研究報告.CVIM,2000(33),33−40,2000−03−23(2000).」に記載の方法によって求めてもよい。3次元座標を用いることで照合精度を向上させることができる。
次に、図19を参照して、変形例におけるDB特徴表現部132の処理動作を説明する。図19は、図9に示すDB特徴表現部132が記憶部14に格納されている各データベース映像を為す画像群から特徴点を抽出し、特徴点の特徴量を算出し、DB特徴量リストを生成する動作を示すフローチャートである。図20は、変形例における記憶部14内の検索対象データベースのテーブル構成を示す図である。記憶部14内には、図20に示すように、P個(P≧1)のデータベース映像群と、この映像群の各被写体情報を保存したデータベース画像対応表が保存されている。このデータベース画像対応表には、DB映像id、データベース映像が保存されているDB映像パス、各々の映像に写る被写体の詳細情報(例えば商品名、価格、ブランド名等)が紐づけられて保存されている。
まず、DB特徴表現部132は、記憶部14に格納されているP個のデータベース映像のうち、1つのデータベース映像を入力し(ステップS71)、この映像を構成するMp枚の画像群のうち、時系列順にnフレーム目とn+1フレーム目の2枚の画像を対象として、この2枚の画像から特徴点を抽出し(ステップS72)、抽出したすべての特徴点で特徴量を算出する(ステップS73)。この処理をすべてのデータベース映像に対して繰り返し実施する。そして、データベース映像の通し番号であるDB映像id、このデータベース画像から抽出した特徴点の通し番号である特徴点id、この特徴点から得られた特徴量を紐づけて、すべてのデータベース画像分を順に保存する。なお、DB特徴量リストのテーブル構成は、図16に示すDB特徴量リストと同様である。
そして、nフレーム目の画像の各特徴点に対してn+1フレーム目画像の特徴点のうち、特徴量のベクトル間距離が最近傍となる特徴点を求め、またn+1フレーム目画像の各特徴点に対してnフレーム目画像の特徴点のうち最近傍となる特徴点を求め、相互に最近傍特徴点関係にあるペアのみを特徴点ペアを算出する(ステップS74)。そしてこの特徴点ペアをもとに、ペアを為す各々の特徴点が属す画像番号、および各特徴点番号、各座標値、各特徴量を紐づけて、各データベース映像のDB特徴量部分リストを生成する。まずn=1のときに算出した特徴ペアは新規特徴ペアとしてすべてDB特徴量部分リストに挿入する。n≧2では、各特徴ペアとDB特徴量部分リストに格納された特徴ペアの比較を行う(ステップS75)。DB特徴量リストに同じ画像番号、特徴点番号の行が存在しなければ新規特徴としてクエリ特徴量リストに挿入する(ステップS76)。一方、DB特徴量リストに画像番号および特徴点番号が同じ行が存在している場合は既出特徴ペアとして、DB特徴量部分リストの情報を書き換える(ステップS77)。なお、DB特徴量部分リストのテーブル構成は、図11に示すクエリ特徴量リストと同様のテーブル構成である。
この一連の処理を画像ペア数分M−1回分繰り返し、DB特徴量部分リストを更新する。そしてこのDB特徴量部分リストの生成処理をデータベース映像個数分行い、各DB特徴量部分リストを映像id順に統合し、映像idとDB特徴量部分リストを紐づけて、DB特徴量リストを生成する(ステップS78)。そして最後にこのDB特徴量リストを出力する(ステップS79)。これによって、被写体物体上の各特徴箇所から重複なく特徴量を取得したDB特徴量リストが取得できる。
なおこの時、処理に用いる画像群は、各映像を構成するすべてのフレームを対象としてもよいし、事前に設定した固定フレーム分ずつ(例えば3フレームずつ)間引いたものを利用してもよい。また撮像装置に付属するその他のセンサによって計測、もしくは各データベース映像を為すフレーム画像から因子分解法等の方法によって算出した撮像装置の移動量に応じて、フレームの間引き数を変えてもよい。例えば移動量が大きい場合は間引くフレーム数を減らし、移動量が小さい場合は間引くフレーム数を増やすことによって、利用する画像群の各々に写る被写体姿勢の角度間隔を均一に近づけることが期待できる。
また、上記の方法で最終的に出力されるDB特徴量リストの特徴量は、被写体物体上の各特徴箇所から1つずつ、その特徴箇所が取得されたフレームのうち最も後のフレームで取得された特徴量が保存されているが、対応特徴点の連結情報を図12のように時系列順に保存しておくことでそれぞれの被写体物体上の各特徴箇所が映るフレームのうち時系列的に真ん中にあるフレームから取得された特徴量を最終的な特徴量としても出力してもよい。こうすることで、図12のような連結情報を持つ必要は発生するが、この特徴箇所を最も正面に近い箇所から撮影した際の特徴量を取得することが期待でき、データベース画像内に写るこの特徴箇所がどのような角度で取得されるか分からないという条件下では、照合時の特徴量間のズレを最小限に抑えることができ、最終的な認識精度を向上させることが可能となる。
また、各被写体上の同一箇所を示す特徴点を取得したフレームのうち、前述した時系列順で真ん中のフレームに、重みづけをした加重平均によって特徴量を再計算し、この特徴量をリストとして出力してもよい。例えば、今64次元の特徴量が被写体の同一箇所の特徴としてe個得られたとする。このときこのe個の特徴量をdi(0<i≦e)と表現し、各特徴量の要素をdifと表現する(0<f≦64)。算出する特徴量Dのf番目の要素Dfは重みづけ項wを用いて、(1)式によって求めてもよい。なお、重みづけ項wはすべて1としてもよいし、正規分布で設定してもよい。
また、特徴点ペアを算出する際は、2画像から算出した特徴量をもとにnフレーム目画像の各特徴点に対してn+1フレーム目画像の特徴点のうち特徴量のベクトル間距離が最近傍となる特徴点を求め、特徴点ペアとしてもよい。また、その逆にn+1フレーム目画像の各特徴点に対してnフレーム目画像の特徴点のうち最近傍となる特徴点を求め、特徴点ペアとしてもよい。ただしあるデータベース映像のnフレーム目とn+1フレーム目画像には片方にしか存在しない被写体物体上の特徴箇所が存在する可能性が高いため、相互に最近傍特徴点関係にあるペアのみに絞った方がノイズの誤対応や、ある特徴点に複数の特徴点が最近傍として重複して対応付くことを防ぐことができ、DB特徴量部分リストを正しく更新できる。
また、上記の方法ではDB特徴量リストとして出力する各特徴点の座標は、各特徴点が抽出されたフレーム画像上の2次元座標をもとに、1番初めのフレーム画像の座標値を原点として、各フレーム画像との特徴点群の移動距離をもとに補正して算出した2次元座標を用いてもよい。またある画像ペア上の特徴点ペアの画像上移動距離から3次元座標を推定し、この3次元座標を出力してもよい。撮像装置から近い点と遠い点を比較すると、近い点ほどオプティカルフローの差分値が大きくなることを利用し、同一画像ペア間に存在する特徴点ペアのオプティカルフロー長の差分の逆数を利用し、算出した値を奥行として与えてもよい。また文献「清水慶行,金谷健一,”未校正カメラによるオプティカルフローからの3次元復元とその信頼度評価”,情報処理学会研究報告.CVIM,2000(33),33−40,2000−03−23(2000).」に記載の方法によって求めてもよい。3次元座標を用いることで照合精度を向上させることができる。
さらに、図19に示すDB特徴表現部132の処理動作は、図21に示す処理動作としてもよく、処理の順序やアルゴリズム構成は上記の限りでは無い。すなわち、データベース映像を入力し(ステップS81)、各データベース映像の映像処理に用いるすべての画像から特徴点を抽出し(ステップS82)その特徴量を求めてから(ステップS83)、隣接する2フレーム間で特徴点ペアを算出しDB特徴量部分リストを生成して出力する(ステップS84〜S89)ようにしてもよい。
次に、図9に示す変形例における照合部133が、クエリ特徴表現部131が算出したクエリ特徴量リストとDB特徴表現部132が算出したDB特徴量リストを比較し、データベース映像群の中からクエリ映像の被写体を特定し、認識結果として出力する動作を説明する。変形例における照合部133の処理動作は、図17に示す処理動作と同様であるため、ここでは簡単に説明する。
まず、クエリ特徴表現部131が算出したクエリ特徴量リストと、DB特徴表現部132が算出したすべてのデータベース映像の特徴量を含むDB特徴量リストを入力する。そして、クエリ特徴量リストの1つの特徴点の特徴量と、DB特徴量リストの特徴量のすべてを比較して、最もベクトル間距離の近い特徴量を有するデータベース映像に(若しくはベクトル間距離の近い順に指定数分のデータベース映像に)スコアを投票する。このスコアを求める際は、特徴量のベクトル間距離が最近傍であるベクトル間距離およびクエリ特徴量リストに保存された各特徴点の座標値を利用して算出する。
例えば、図18に示すようにクエリ特徴量リストの中で1つの特徴点(1行分)を注目特徴点として設定し、注目特徴点以外のクエリ特徴点を周囲点と呼ぶこととする。図18(1)に示すように、この注目特徴点に対して特徴量ベクトル間距離が最近傍のDB特徴量リストの特徴量(1行)を求め、この特徴量の抽出されたデータベース映像を投票対象映像とし、この特徴量ベクトル間距離を用いて(2)式により算出したスコアを投票する。このとき注目特徴点と注目点以外の各特徴点の空間距離Dは、注目特徴点のスコアを算出する際は本来D=0となるが、スコアSの発散を防ぐため事前手に与えたoffset値を用い、D=offset(>0)とする。
さらに、図18(2)に示すように、注目点が最近傍として算出した特徴量が属すデータベース映像から抽出された特徴量群のみを対象として、各周囲点特徴量から最近傍特徴量を求め、この映像に(2)式によってスコアを算出し、投票対象映像に投票する。なお周囲点から注目特徴点までの空間距離はD=D+offsetとすることとする。offsetは例えば0.0001と設定する。ここで説明した(2)式では、スコア算出に注目特徴点との空間距離Dおよびベクトル間距離に対して逆数を用いたが、ガウス関数や指数関数を用いてスコア算出式を設定してもよい。
また、上記の例では注目点の特徴量ベクトル間距離が最近傍となる特徴点を有す1枚の投票対象画像にのみ投票を行ったが、特徴量ベクトル間距離が事前に与えたnに基づき、第n近傍点となる特徴点群をそれぞれ有す複数の投票対象画像を設定し、それぞれに注目点および周囲点から投票を行ってもよいし、上記の限りではない。なお、ここでスコア算出式に「特徴ベクトル間距離」を入れたのは、クエリ特徴量リストとDB特徴量リストの特徴点間で、テクスチャの類似度をスコアに反映するためである。また、スコア算出式に「注目特徴点との空間距離D」を入れたのは、クエリ入力映像中で取得された特徴点座標が空間的に近い位置に存在するとき、この特徴点群に対応する特徴点群は、任意の視点から撮影された検索対象画像内においても一緒に写る可能性が高いであろうことを利用したもので、ベクトル間距離によるテクスチャ類似度に対する重みづけの役割を担っている。また他の要素によって重みをつけてもよい。
そしてすべてのクエリ特徴量リスト中の特徴点(すべての行)を、1つずつ注目点として前述の投票を繰り返す。そしてDB特徴量リストの中で、クエリ特徴量リストに最も類似するデータベース映像を合計スコア値から特定してこのデータベース画像を検索対象画像とし、若しくは検索対象画像候補としてクエリ特徴量リストに類似する順にデータベース画像名をソートして、認識結果とする。また認識結果の形式としてはこの検索対象画像に写る被写体の詳細情報(商品名、価格、ブランド名等)を出力してもよい。
また、映像を構成する画像のうち隣接する2画像間で対応する特徴点ペアのみを集めたクエリ特徴量リスト、およびDB特徴量リストを照合に用いるのは、1画像のみで抽出された特徴点にはノイズを含みやすいからである。例えば映像から処理に用いるフレーム画像を間引く際の間引き数が多いときには、フレーム画像群の中で被写体上の同一箇所から抽出される重複特徴点が少ないため、ペアに含まれない特徴量も利用した方がよい。
また、上記では、特徴量ペアを作ることによりオプティカルフローを求め、オプティカルフローの差から推定した3次元座標を利用する方法を示したが、ペアを生成できなかった特徴点を利用する場合は、この特徴点に関しては周囲の特徴点ペアから推定した奥行から3次元座標を推定してもよい。
また、上記ではすべての場合で検索対象映像がデータベース中に含まれることを仮定しているが、すべてのデータベース映像において、事前に与えた閾値よりも合計スコア値が低ければ、認識結果を「該当なし」と出力してもよい。
このように、特徴点の座標値を失わずに被写体全体形状を評価した照合ができるため、入力映像(画像群)のテクスチャの組成がデータベース内に存在する他の画像のテクスチャの組成と偶然類似してしまった際の認識精度を向上することができる。
なお、前述した説明においては、物体データもしくはユーザデータを登録するユーザAと、メッセージを送信するユーザB、受信するユーザCは別人であるとして説明した。ただし、物体データを事前登録するユーザAは、送信者であるユーザBと同一であってもよいし、受信者であるユーザCと同一であってもよい。また事前登録、送受信のすべてが同一人物によって行われてもよい。
また、登録された物体データは2次元画像データであり、ユーザCは2次元画像群データを入力することで、対象物体を特定したが、事前登録物体データおよび問い合わせ情報の組み合わせは上記の限りではない。たとえば他にも、対象が2次元物体であれば、双方ともに1枚以上の画像データを入力し、画像マッチング手法によって物体を特定してもよい。また、画像自体ではなく、画像から抽出した画像特徴量を登録しておくことで実現してもよい。また、対象が3次元物体である際に、どちらかに3次元モデルを入力し、モデルベースのマッチング手法等によって物体を特定してもよい。撮像画像を用いた2次元物体認識手法および3次元物体認識手法は上記の限りではない。またICタグのような物体自体に取り付けられたタグのIDを、ICリーダー等のNFC(Near Field Communication)端末によって読み込み、事前に登録されたID群と照合することによって実現するものであってもよい。物体を特定する方法は、上記の限りではない。
また、上記実施例においては、メッセージ送信者であるユーザBは、送信先であるメッセージ受信者であるユーザCを選択したが、ユーザCは複数であってもよいし、選択せずに、その物体を特定したすべての人へのメッセージ配信としてもよい。
また、メッセージを登録する際に選択する物体画像は、写真共有サイトやSNSによってユーザが閲覧可能な画像から選択することによって実現してもよい。これにより、該当画像の公開設定に基づき、送信先のユーザを選択してメッセージを配信することも可能になる。
また、屋外のランドマーク等を登録しておくことで、位置情報に基づきメッセージが受信されるサービスも実現できる。加えて、個人間でやりとりされた手作りの物体や思い出のある物体に、メッセージを忍ばせることが可能である。唯一無二の物体を利用することで、送信先選択の手間を省くことが可能である。また、メッセージ受信者がメッセージを受信したタイミングを、メッセージ送信者に通知してもよい。
以上説明したように、メッセージ受信のタイミングを規定する要素を増やし、送信側だけではなく受信側が主体的に受信タイミングを選択することができるようになる。また、物体を介することにより、前述したGPSによる方法と同じく、送信者は送信先のメッセージ受信者がメッセージを受信する場所を指定することができる。さらに受信者が主体的に受信するメッセージや、その受信タイミングを選択できる。
前述した実施形態におけるメッセージ送受信装置1をコンピュータで実現するようにしてもよい。その場合、この機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現してもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでもよい。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであってもよく、PLD(Programmable Logic Device)やFPGA(Field Programmable Gate Array)等のハードウェアを用いて実現されるものであってもよい。
以上、図面を参照して本発明の実施の形態を説明してきたが、上記実施の形態は本発明の例示に過ぎず、本発明が上記実施の形態に限定されるものではないことは明らかである。したがって、本発明の技術思想及び範囲を逸脱しない範囲で構成要素の追加、省略、置換、その他の変更を行ってもよい。