以下に添付図面を参照して、情報処理システム、情報処理方法および情報処理装置の実施形態を詳細に説明する。
(第1の実施形態)
図1は、第1の実施形態に係る情報処理システムの一例の構成を概略的に示す。図1において、情報処理システムは、サーバ10と、1以上の端末装置20Aおよび20Bとを含む。端末装置20Aおよび20Bは、例えば撮像機能を備える多機能型携帯端末や、タブレット型コンピュータを適用することができる。なお、図1では、端末装置20Aおよび20Bがそれぞれ端末#1および#2として示されている。端末装置20Aおよび20Bは、それぞれ、サーバ10との間でネットワークを介した通信が可能とされている。サーバ10は、1台の情報処理装置により構成してもよいし、互いに接続された複数台の情報処理装置により機能を分散させて構成してもよい。
サーバ10は、データベース11を備え、データベース11は、画像データベース(DB)100と、提供情報データベース(DB)101とを含む。画像DB100は、画像を検索可能に登録する。実際には、サーバ10は、画像から画像の特徴を表す特徴情報を抽出する機能を含み、画像DB100への画像の登録は、画像の特徴を表す特徴情報と、画像を識別するための画像識別情報とが関連付けられて格納されることで行われる。提供情報DB101は、ユーザに提供するための提供情報が画像識別情報と関連付けられて格納される。
各端末装置20Aおよび20Bは、撮像機能を備え、撮像されて得た画像をネットワークを介してサーバ10に送信することができる。
このような構成において、端末装置20Aは、例えばユーザ操作に応じて撮像機能を起動させて被写体30を撮像し、撮像して得た画像と、この画像に類似する画像の検索を要求する検索要求とをサーバ10に送信する(ステップS1)。サーバ10は、端末装置20Aから送信された画像および検索要求に応じて画像DB100から当該画像に類似する画像を検索し、検索された画像の識別情報を検索結果として出力する。
例えば、サーバ10は、端末装置20Aから送信された画像から特徴情報を抽出し、抽出した特徴情報と、画像DB100に格納される特徴情報との類似度を算出する。そして、サーバ10は、画像DB100に格納される特徴情報のうち、類似度の高い特徴情報を抽出し、抽出した特徴情報に対応する識別情報を出力する。
次に、サーバ10は、提供情報DB101から、検索結果として出力された識別情報に関連付けられた提供情報を取得する。サーバ10は、取得した提供情報を、端末装置20Aに送信する(ステップS2)。端末装置20Aは、サーバ10から送信された提供情報を例えばディスプレイに表示させる。これにより、端末装置20Aのユーザは、被写体30を撮像した画像から、提供情報を取得することができる。
第1の実施形態において、サーバ10は、端末装置20Aが被写体30を撮像した画像を、画像DB100に新たに登録することができる。サーバ10は、例えば、上述のステップS1で画像と共に送信された検索要求に対して、端末装置20Aから送信した画像に対応する特徴情報が画像DB100に格納されていない場合に、当該画像の特徴情報を画像DB100に格納する。
例えば、端末装置20Aは、サーバ10から、検索要求に応じた画像の特徴情報が格納されていない旨の通知が送信されると、この通知に応じて、サーバ10に対して画像の登録を要求する登録要求を送信する(ステップS3)。サーバ10は、端末装置20Aから送信された画像登録要求に応じて、ステップS1で端末装置20Aから送信された画像の特徴情報に対して一意の識別情報を生成し、生成した識別情報を当該画像に関連付けて画像DB100に格納する。
さらに、端末装置20Aは、当該画像に対応する提供情報と、この提供情報の登録を要求する提供情報登録要求とをサーバ10に送信する(ステップS4)。なお、端末装置20Aは、提供情報を、例えば端末装置20Aに対するユーザ操作に応じて取得することができる。サーバ10は、端末装置20Aから送信された提供情報登録要求に応じて、共に送信された提供情報を、ステップS3の画像登録要求に応じて生成された識別情報に関連付けて提供情報DB101に格納する。
一方、端末装置20Bは、例えばユーザ操作に応じて、端末装置20Aが撮像したのと同じ被写体30、若しくは、被写体30に類似した被写体を撮像して画像を得る。端末装置20Bは、撮像して得た画像と、当該画像と類似の画像の検索を要求する検索要求とをサーバ10に送信する(ステップS5)。サーバ10は、上述と同様にして、端末装置20Bから送信された画像および検索要求に応じて画像DB100から当該画像に類似する画像を検索し、検索された画像の識別情報を検索結果として出力する。
次に、サーバ10は、提供情報DB101から、検索結果として出力された識別情報に関連付けられた提供情報を取得する。サーバ10は、取得した提供情報を、端末装置20Bに送信する(ステップS6)。端末装置20Aは、サーバ10から送信された提供情報を例えばディスプレイに表示させる。
このように、第1の実施形態によれば、端末装置20Aおよび20Bは、被写体30を撮像して得た画像を介して提供情報を共有できる。また、第1の実施形態によれば、ユーザは、端末装置20Aを操作して被写体30を撮像し、撮像した画像をサーバ10に登録すると共に、提供情報を当該画像に関連付けてサーバ10に登録することで、端末装置20Bに対して画像を介して情報を伝達させることができる。さらに、第1の実施形態では、これらの情報共有や情報伝達を、メールアドレスといった個人情報の交換を行うこと無しに実現できる。
以下、第1の実施形態の各部の構成について、より詳細に説明する。図2は、第1の実施形態に係るサーバ10の一例の構成を示す。図2において、サーバ10は、画像DB100と提供情報DB101とを備えると共に、画像登録部110と、画像検索部111と、選別部112と、提供情報取得部113と、提供情報登録部114とを備える。
なお、サーバ10の構成において、画像登録部110、画像検索部111、選別部112、提供情報取得部113および提供情報登録部114は、CPU(Central Processing Unit)上で動作するためのプログラムにより実現される。これに限らず、画像登録部110、画像検索部111、選別部112、提供情報取得部113および提供情報登録部114を、互いに協働して動作する個々のハードウェアにより構成してもよい。
画像登録部110は、画像を画像DB100に登録する処理を実行する。画像登録部110は、ネットワークを介して送信された、画像DB100に登録するための登録画像と、登録画像の画像DB100への登録を要求する登録要求とを受け取る。画像登録部110は、受け取った画像を一意に特定するための識別情報である画像IDを生成して当該画像に割り当てて、画像ID、登録画像および登録要求を画像DB100に渡し、当該画像の画像DB100への登録処理を実行する。また、画像登録部110は、画像IDを登録画像の送信元に送信する。
画像IDは、画像DB100に登録される画像に一意であれば、生成方法や形式は特に限定されない。画像登録部110は、例えば、所定桁(例えば10桁程度)の英数字をランダムに発生させて文字列を生成し、この文字列の既に生成した画像IDとの重複の有無を検査して重複が無いと判定された文字列を、画像IDとして用いることが考えられる。
画像検索部111は、画像に基づき画像DB100を検索する処理を実行する。画像検索部111は、ネットワークを介して送信された、検索対象となる検索画像と、検索画像に基づき画像DB100に対して検索を要求する検索要求とを受け取る。画像検索部111は、検索画像および検索要求を画像DB100に渡し、画像DB100から検索結果として画像IDを受け取り、受け取った画像IDを、検索画像の送信元に送信する。このとき、画像検索部111は、1の検索画像および検索要求に対する検索結果として複数の画像IDが得られた場合、この複数の画像IDを含む画像IDのリストを検索画像の送信元に送信する。
提供情報登録部114は、提供情報DB101に提供情報を登録する処理を実行する。提供情報登録部114は、ネットワークを介して送信された、提供情報DB101に登録するための提供情報の元になる文字列と、提供情報の提供情報DB101への登録を要求する登録要求と、提供情報を関連付けたい画像を示す画像IDとを受け取る。提供情報登録部114は、受け取った提供情報および画像IDと、提供情報および画像IDとを関連付けて登録する登録要求とを提供情報DB101に渡す。
選別部112は、例えばネットワークを介して送信された画像IDのリストを受け取り、提供情報DB101に対して、この画像IDのリストと、このリストに含まれる画像IDに関連付けられる提供情報を検索する検索要求とを渡す。選別部112は、このとき、選別部112は、提供情報を取得する対象をユーザが目視により選別するために必要な情報を取得するように、検索要求を作成する。選別部112は、検索要求に応じて提供情報DB101から検索された提供情報のリストを、画像IDの送信元に送信する。
なお、選別部112は、画像IDのリストをネットワークを介して受け取るのに限らず、例えば、画像検索部111から、検索結果の画像IDのリストを直接的に受け取ってもよい。
提供情報取得部113は、ネットワークを介して送信された画像IDに関連付けられた提供情報を提供情報DB101から検索し、検索された提供情報を画像IDの送信元に送信する。提供情報取得部113は、ネットワークを介して送信された画像IDを受け取ると、受け取った画像IDに関連付けられた提供情報を検索する検索要求を提供情報DB101に渡す。提供情報DB101は、この検索要求に応じて、画像IDに関連付けられた提供情報を検索し、提供情報取得部113に渡す。
第1の実施形態では、図1を用いて説明したように、上述した画像登録部110に対する登録画像および登録要求の送信、画像検索部111に対する撮像画像(検索画像)および検索要求の送信、選別部112に対する画像IDリストの送信、提供情報取得部113に対する画像IDの送信、ならびに、提供情報登録部114に対する画像ID、提供情報および登録要求の送信は、全て端末装置20Aから実行することができる。したがって、画像検索部111、選別部112および提供情報取得部113は、画像IDリスト、提供情報リストおよび提供情報を、端末装置20Aに送信する。
また、図1の例では、端末装置20Bは、画像および提供情報の登録を行わないので、画像登録部110に対する登録画像および登録要求の送信、ならびに、提供情報登録部114に対する画像ID、提供情報および登録要求の送信を行わない。端末装置20Bは、画像検索部111に対する撮像画像(検索画像)および検索要求の送信、選別部112に対する画像IDリストの送信、ならびに、提供情報取得部113に対する画像IDの送信を実行する。
図3は、提供情報DB101が備える、提供情報が格納されるテーブルの一例の構成を示す。提供情報DB101は、一般的には、リレーショナルデータベースを用いて構成することができる。図3の例では、テーブルは、各レコードにおいて、画像IDをキーとして、提供情報の本体と提供情報の各属性情報とが関連付けられて格納されている。
図3に例示されるテーブルにおいて、項目「画像ID」は、各レコードのキーとなる画像IDが格納される。他の項目「サムネイル」、「タイトル」、「本文」、「撮像場所」および「オプション」は、一例であり、これらとは異なる列を用いてテーブルを構成してもよい。
項目「サムネイル」は、登録画像の縮小画像を表すデータを所定の文字列に変換して格納する。サムネイルの画像データは、例えば既知のBase64エンコーディングにより文字列に変換されて、項目「サムネイル」に格納される。この場合、項目「サムネイル」に格納される文字列をBase64デコーディングによりデコードすることで、直接的にサムネイル画像を取得することができる。これに限らず、サムネイル画像が格納される場所を示す情報を項目「サムネイル」に格納してもよい。サムネイル画像は、例えば、画像登録部110が、ネットワークを介して送信された登録画像を画像DB100に登録する際に、画像登録部110により生成され、画像IDと関連付けられて登録される。
項目「タイトル」および項目「本文」は、検索結果として取得された際に端末装置20Aや端末装置20B上でディスプレイなどに表示され、ユーザに提示される文字列である。なお、項目「タイトル」および項目「本文」に格納する文字列がURL(Uniform Resource Locator)の形式である場合、端末装置20Aや端末装置20Bには、ネットワーク上のURLで示されるWebページを提示することもできる。
項目「撮像場所」は、画像IDで示される画像を撮像した場所を示す情報が格納される。場所を示す情報は、例えば緯度および経度による数値の組を用いることができる。項目「オプション」は、例えば、画像IDに関連付けられる提供情報の利用方法を設定する情報が格納される。例えば、項目「オプション」は、項目「撮像場所」で示される場所の近くで検索を行わないと現れないという設定を場所限定という文字列で表すことができる。また例えば、項目「オプション」は、当該レコードを検索したユーザが項目「本文」に追記を行うことを許可するか否かを、「追記可」、「追記不可」といった文字列で表すことができる。
図3の例では、提供情報DB101は、提供情報を構成する各情報をリレーションの列に分割して格納しているが、これはこの例に限定されない。提供情報DB101は、提供情報を構成する各情報それぞれを、例えばXML(Extensible Markup Language)形式のように、1の情報に纏めて格納することもできる。この場合、提供情報DB101は、レコード毎に異なる種類の情報を格納可能となる。
図4は、第1の実施形態に係る画像DB100の一例の構成を示す。図4において、画像DB100は、1の新規画像格納部120と、1以上の検索画像格納部1211、1212、…、121Nと、管理部122と、登録処理部130と、特徴情報抽出部131と、検索処理部132とを含む。
なお、画像DB100の構成において、管理部122、登録処理部130、特徴情報抽出部131および検索処理部132は、CPU上で動作するためのプログラムにより実現される。これに限らず、管理部122、登録処理部130、特徴情報抽出部131および検索処理部132を、互いに協働して動作する個々のハードウェアにより構成してもよい。また、1の新規画像格納部120、および、1以上の検索画像格納部1211、1212、…、121Nは、ハードディスクドライブや不揮発性の半導体メモリ(フラッシュメモリ)上に確保された記憶領域である。なお、検索画像格納部1211、1212、…、121Nは、図4ではそれぞれ検索画像格納部#1、#2、…、#Nのように示されている。
登録処理部130は、画像登録部110から渡された画像ID、登録画像および登録要求に基づき、登録画像の新規画像格納部120への格納処理を行い、登録画像を画像DB100に登録する。特徴情報抽出部131は、入力された画像を解析して特徴情報を抽出する。抽出された特徴情報は、登録処理部130に返される。特徴情報抽出部131による特徴情報抽出処理の詳細については、後述する。登録処理部130は、特徴情報と画像IDとを新規画像格納部120に渡し、画像IDと特徴情報とを関連付けて、新規画像格納部120に格納する。
管理部122は、新規画像格納部120、および、検索画像格納部1211、1212、…、121Nの管理を行う。より具体的には、管理部122は、新規画像格納部120に格納される特徴情報の量が所定量以上になった場合に、新規画像格納部120を検索画像格納部121N+1(図4に点線で示す)に変更して新たな特徴情報の格納を禁止し、新たに新規画像格納部120を作成する。管理部122は、例えば、新規画像格納部120、および、検索画像格納部1211、1212、…、121Nが格納されるストレージ上に、新たな新規画像格納部120となる記憶領域を設定することで、新たな新規画像格納部120の作成を行う。そして、管理部122は、登録処理部130が登録画像を渡す相手を、新たに作成された新規画像格納部120に設定する。
すなわち、管理部122の管理により、新規画像格納部120に格納される特徴情報の量が所定量以上になった場合、当該新規画像格納部120に格納される特徴情報はそのままにして、当該新規画像格納部120が検索画像格納部121N+1に変更される。このとき、既存の検索画像格納部1211、1212、…、121Nの格納内容は、変わらない。
また、新規画像格納部120が変更された検索画像格納部121N+1は、新規の特徴情報の格納が禁止される。ここで、画像DB100の初期状態としては、新規画像格納部120、および、検索画像格納部1211、1212、…、121Nのうち新規画像格納部120のみが存在することになる。この状態で、新規画像格納部120に格納される特徴情報の量が所定量以上になると、当該新規画像格納部120が検索画像格納部1211に変更され、新規の特徴情報の格納が禁止される。そして、新たに新規画像格納部120が作成される。以降、新規画像格納部120に格納される特徴情報の量が所定量以上になる毎に、同様にして、検索画像格納部1212…が追加される。したがって、検索画像格納部1211、1212、…、121Nは、全て新規の特徴情報の格納が禁止された状態となる。
検索処理部132は、画像検索部111から渡された検索画像および検索要求に従い、新規画像格納部120と、1以上の検索画像格納部1211、1212、…、121Nとから、検索画像に類似する画像の検索を行う。例えば、検索処理部132は、検索要求に従い、検索画像を特徴情報抽出部131に渡す。特徴情報抽出部131は、渡された検索画像を解析して特徴情報を抽出し、抽出した特徴情報を検索処理部132に返す。
検索処理部132は、特徴情報抽出部131から返された特徴情報に基づき、新規画像格納部120、および、検索画像格納部1211、1212、…、121Nから当該特徴情報に類似する特徴情報を検索し、検索された特徴情報に関連付けられた画像IDを、検索結果として取得する。このとき、検索処理部132は、複数の画像IDを検索結果として取得することもできる。検索処理部132は、検索結果として取得された画像IDまたは画像IDのリストを、画像検索部111に返す。
このように、検索処理部132は、新規画像格納部120、および、検索画像格納部1211、1212、…、121Nの全てを対象として検索処理を実行する。
ここで、特徴情報抽出部131による、画像からの特徴情報の抽出処理について、概略的に説明する。特徴情報抽出部131は、既知の画像解析技術を用いて、画像から、画像の特徴情報として特徴点を抽出することができる。例えば、特徴情報抽出部131は、SIFT(Scale-invariant Feature Transform)のアルゴリズムを用いて画像から特徴点を抽出することができる。これに限らず、特徴情報抽出部131は、他の特徴点抽出アルゴリズムを用いて特徴点を抽出してもよい。特徴情報抽出部131が画像を特徴点抽出アルゴリズムを用いて解析して抽出した特徴点のそれぞれについて、特徴量と呼ばれる一組の数値が得られる。特徴量は、1の特徴点について、例えば100乃至1000個程度の数値の組である。
次に、新規画像格納部120、および、検索画像格納部1211、1212、…、121Nへの特徴情報の格納方法について説明する。ここでは、説明のため、新規画像格納部120、および、検索画像格納部1211、1212、…、121Nのうち、新規画像格納部120を例にとって説明する。
新規画像格納部120は、特徴量を構成する数値の組を多次元ベクトルと見做して、各特徴点における特徴量を多次元空間インデクスに格納する。多次元空間インデクスの実現手段としては、例えばKd木(K-dimensional tree)構造を用いるものが既知である。なお、第1の実施形態に適用可能な多次元空間インデクスの実現手段は、Kd木に限定されるものではなく、他の多次元空間インデクスの実現手段を用いてもよい。
ここで、データ構造としてKd木などの木構造においては、要素の追加や更新の際に、木の根から、木の全体に亘り走査を行う必要がある。したがって、木上の要素数が増加すると、要素の追加や更新に長時間を要する場合がある。例えば、上述した特徴量を格納する新規画像格納部120にKd木構造を適用した場合、新規に特徴量の追加を開始してから、追加処理が完了するまで、数十分の時間を要することがある。この場合、例えば端末装置20Aからサーバ10に対して登録画像および登録要求を送信しても、送信を行ってから登録された画像に対する検索処理が可能となるまで長時間待機する必要があり、利便性に欠ける。
そこで、第1の実施形態では、上述したように、新規画像格納部120に格納される特徴情報の量が所定量以上になった場合に、新規画像格納部120を新たな特徴情報の追加が禁止された検索画像格納部121N+1に変更し、新たに新規画像格納部120を作成している。したがって、画像DB100に登録される画像すなわち特徴情報の量が増大しても、新規画像格納部120、および、検索画像格納部1211、1212、…、121Nそれぞれに格納される特徴情報の量が略一定となり、画像の登録要求から当該画像が検索可能となるまでの時間が短縮される。
図5および図6を用いて、第1の実施形態に係る端末装置20Aおよび20Bの機能について説明する。図5は、第1の実施形態に係る端末装置20Aの機能を説明するための機能ブロック図である。図5において、端末装置20Aは、撮像処理部201と、検索要求部202と、画像登録要求部203と、提供情報登録要求部204と、選択部205と、受信部206と、送信部207と、入力部208と、表示部209と、位置情報取得部220とを有する。
これら撮像処理部201、検索要求部202、画像登録要求部203、提供情報登録要求部204、選択部205、受信部206、送信部207、入力部208、表示部209および位置情報取得部220は、CPU上で動作するプログラムによって実現される。これに限らず、撮像処理部201、検索要求部202、画像登録要求部203、提供情報登録要求部204、選択部205、受信部206、送信部207、入力部208、表示部209および位置情報取得部220のうち一部または全部を、互いに協働して動作するハードウェアにより実現してもよい。
撮像処理部201は、端末装置20Aが備えるカメラ機能を起動して撮像部を制御し、撮像画像を出力する。受信部206は、ネットワークを介して送信されるデータの受信処理を行う。送信部207は、ネットワークを介したデータの送信処理を行う。入力部208は、端末装置20Aが備える入力デバイスに対する入力操作を受け付け、操作に応じたデータを取得する。表示部209は、端末装置20Aが備える表示デバイスに対する情報の表示を制御する。入力部208と表示部209とで、端末装置20AのUI(User Interface)が構成される。
検索要求部202は、撮像処理部201により取得された撮像画像に基づく検索を要求する検索要求を生成する。検索要求部202は、撮像画像と、生成した検索要求とを送信部207からサーバ10に対して送信する。画像登録要求部203は、撮像処理部201により取得された撮像画像の、画像DB100への登録を要求する登録要求を生成する。画像登録要求部203は、撮像画像と、生成した登録要求とを送信部207からサーバ10に対して送信する。提供情報登録要求部204は、画像DB100に登録される画像に関連付ける提供情報の登録を要求する提供情報登録要求を生成する。提供情報登録要求部204は、検索要求または画像登録要求に応じて取得された画像IDと、提供情報登録要求とを送信部207からサーバ10に対して送信する。
検索要求、画像登録要求および提供情報登録要求などに応じてサーバ10から送信された画像ID(画像IDリスト)や提供情報などは、受信部206により受信される。
選択部205は、検索要求に応じてサーバ10から返される提供情報リストから所望の提供情報を選択するための選択画面を生成する。生成された選択画面は、表示部209により表示される。また、選択部205は、選択画面に応じた入力部208に対する入力操作に応じて、選択された提供情報に対応する画像IDを送信部207からサーバ10に対して送信する。
位置情報取得部220は、この端末装置20Aの現在位置を示す位置情報を取得する。位置情報は、例えばGPS(Global Positioning System)を利用して取得することが考えられる。
図6は、端末装置20Bの機能を説明するための機能ブロック図である。なお、図6において、上述した図5と共通する部分には同一の符号を付して、詳細な説明を省略する。
図1に示されるように、第1の実施形態において、端末装置20Bは、端末装置20Aの機能のうち、撮像画像に基づくサーバ10に対する検索要求と、検索要求に応じてサーバ10から送信された提供情報を受信する機能を備える。そのため、図6の機能ブロック図においても、端末装置20Bの構成は、端末装置20Aの構成から画像登録要求部203および提供情報登録要求部204を省略した構成となっている。
図7は、第1の実施形態に適用可能な端末装置20Aのハードウェアの一例の構成を示す。なお、端末装置20Bも、この端末装置20Aと同等の構成により実現可能である。
図7に例示される端末装置20Aにおいて、バス2000に対してCPU2001、ROM(Read Only Memory)2002、RAM(Random Access Memory)2003および表示制御部2004が接続される。また、バス2000に対して、ストレージ2006、データI/F(インターフェイス)2007、入力デバイス2008、通信部2009、撮像部2010およびGPS部2011が接続される。ストレージ2006は、データを不揮発に記憶することが可能な記憶媒体であって、例えばフラッシュメモリなどの不揮発性の半導体メモリである。これに限らず、ストレージ2006としてハードディスクドライブを用いてもよい。
CPU2001は、ROM2002およびストレージ2006に記憶されるプログラムに従い、RAM2003をワークメモリとして用いて、この端末装置20Aの全体を制御する。表示制御部2004は、CPU2001により生成された表示制御信号を、表示デバイス2005が表示可能な信号に変換して出力する。
ストレージ2006は、上述のCPU2001が実行するためのプログラムや各種データが格納される。なお、ストレージ2006およびROM2002は、例えば1つの書き換え可能な不揮発性半導体メモリなどを共用してもよい。データI/F2007は、外部機器との間でデータの入出力を行う。データI/F2007としては、例えば、USB(Universal Serial Bus)やBluetooth(登録商標)といったインターフェイスを適用することができる。
表示制御部2004は、CPU2001により生成された表示制御信号に基づき表示デバイス2005を駆動する。表示デバイス2005は、例えばLCD(Liquid Crystal Display)を含み、表示制御部2004により駆動されて表示制御信号に応じた表示を行う。
入力デバイス2008は、ユーザ入力を受け付ける。ユーザは、例えば表示デバイス2005に対する表示に応じて入力デバイス2008を操作することで、端末装置20Aに対して指示を出すことができる。なお、入力デバイス2008と表示デバイス2005とを一体的に構成し、押圧した位置に応じた制御信号を出力すると共に、表示デバイス2005の画像を透過するタッチパネルとして構成すると、好ましい。
通信部2009は、CPU2001の制御に従いネットワークを介した通信を無線通信により行う通信I/Fを含む。
撮像部2010は、光学系と、撮像素子と、光学系および撮像素子の制御駆動回路とを備え、撮像素子から出力される撮像信号に所定の処理を施してディジタル信号による撮像画像として出力する。撮像部2010は、入力デバイス2008に対するユーザ操作による指示に従い、撮像やズームなどの機能を実行する。撮像部2010から出力された撮像画像は、バス2000を介してCPU2001に送られ、プログラムに従い所定の画像処理を施される。撮像部2010から出力され画像処理を施した撮像画像を、例えばストレージ2006に記憶することができる。また、CPU2001は、ストレージ2006から撮像画像を読み出して、通信部2009によりネットワークに対して送信することができる。
GPS部2011は、GPSによる信号を受信し、受信した信号に基づき緯度および経度からなる現在位置を計算する。
図8は、第1の実施形態に係るサーバ10のハードウェアの一例の構成を示す。図8において、サーバ10は、バス1000に対してCPU1001、ROM1002、RAM1003、ストレージ1004および通信部1005が接続される。ストレージ1004は、データを不揮発に記憶することが可能な記憶媒体であって、例えばハードディスクドライブである。これに限らず、ストレージ1004として、フラッシュメモリなどの不揮発性の半導体メモリを用いてもよい。
CPU1001は、ROM1002およびストレージ1004に記憶されるプログラムに従い、RAM1003をワークメモリとして用いて、このサーバ10の全体を制御する。
ストレージ1004は、CPU1001が実行するためのプログラムや各種データが格納される。また、上述した画像DB100および提供情報DB101は、このストレージ1004上の記憶領域を用いて構成される。なお、図8では、ストレージ1004が1のハードウェアから構成されるように示しているが、これはこの例に限定されず、例えば複数のストレージ装置を1のストレージ1004として統合的に管理するようにしてもよい。
通信部1005は、CPU1001の制御に従いネットワークを介した通信を無線通信により行う通信I/Fを含む。
なお、図8では、サーバ10が1のハードウェアから構成されるように示しているが、これはこの例に限定されず、サーバ10を、同等の構成を有する複数のサーバ装置を統合的に制御することで構成してもよい。
(サーバ側の動作)
次に、第1の実施形態に係るサーバ10各部の動作について、より詳細に説明する。図9は、第1の実施形態に係る、登録処理部130による特徴情報の登録処理を示す一例のフローチャートである。ステップS100で、登録処理部130は、画像登録部110から登録画像と画像IDとを取得する。登録処理部130は、取得した登録画像を特徴情報抽出部131に渡す。次のステップS101で、特徴情報抽出部131は、登録処理部130から渡された登録画像に対して例えばSIFTアルゴリズムを用いて解析処理を行い、登録画像の特徴点を抽出する。一般的には、1の登録画像から複数の特徴点が抽出される。また、各特徴点は、複数の数値の組である特徴量を含む。特徴情報抽出部131は、登録画像から抽出した各特徴点の情報を、登録処理部130に渡す。
次のステップS102およびステップS103は、ステップS101で登録画像から抽出された各特徴点について実行される。ステップS102で、登録処理部130は、1の特徴点における登録画像の特徴量を表す多次元ベクトルを取得する。次のステップS103で、登録処理部130は、ステップS102で多次元ベクトルとして取得された特徴量を、新規画像格納部120に格納する。このとき、登録処理部130は、特徴量をキーとし、画像IDを値として、新規画像格納部120内に例えばKd木構造を用いた多次元空間インデクスに登録する。
次のステップS104で、登録処理部130は、ステップS101で登録画像から取得された全ての特徴点について処理が終了したか否かを判定する。登録処理部130は、若し、全ての特徴点について処理が終了してないと判定した場合、処理をステップS102に戻し、次の特徴点について処理を実行する。一方、登録処理部130は、全ての特徴点について処理が終了したと判定した場合、登録画像の特徴情報の登録が完了したとして、図9のフローチャートによる一連の処理を終了させる。
図10は、第1の実施形態に係る、管理部122の処理を示す一例のフローチャートである。なお、図10のフローチャートによる処理に先立って、画像DB100は、既にN個の検索画像格納部1211、1212、…、121Nを有しているものとする。
ステップS110で、管理部122は、新規画像格納部120に対して特徴情報(特徴点)の登録処理が行われたか否かを判定する。管理部122は、この判定を、新規画像格納部120に対する特徴情報の登録処理を常時監視することで行ってもよいし、新規画像格納部120が特徴情報の登録処理が行われた旨を管理部122に通知することで行ってもよい。管理部122は、登録処理がなされていないと判定した場合、処理をステップS110に戻す。管理部122は、新規画像格納部120に対して特徴情報の登録処理が行われたと判定した場合、処理をステップS111に移行させる。
管理部122は、ステップS111で、新規画像格納部120から、新規画像格納部120に格納されている特徴点の個数を取得する。次のステップS112で、管理部122は、ステップS111で取得した特徴点の個数が、閾値を超えているか否かを判定する。若し、超えていないと判定した場合、管理部122は、処理をステップS110に戻す。一方、管理部122は、新規画像格納部120に格納されている特徴点の個数が閾値を超えていると判定した場合、処理をステップS113に移行させる。
ステップS113で、管理部122は、既存の新規画像格納部120を元の新規画像格納部120として保持しつつ、新たに新規画像格納部120を作成する。次のステップS114で、管理部122は、登録処理部130に対し、新たに作成した新規画像格納部120を特徴情報の登録先とするように通知する。次のステップS115で、管理部122は、検索処理部132に対し、新たに作成した新規画像格納部120も検索対象とするように通知する。
次のステップS116で、管理部122は、元の新規画像格納部120を、第N+1番目の検索画像格納部121N+1に変更し、検索画像格納部121N+1に対する新規の特徴点の登録を禁止する。ステップS116の処理が終了した後、管理部122は、処理をステップS110に戻す。
なお、管理部122は、検索画像格納部1211、1212、…、121Nのうち幾つかまたは全部をマージして、新たな検索画像格納部とすることができる。例えば、管理部122は、検索画像格納部1211、1212、…、121Nの個数が所定以上になった場合にマージ処理を実行する。これに限らず、管理部122は、定期的にマージ処理を実行してもよい。管理部122は、この複数の検索画像格納部のマージ処理を、マージ対象の例えば各検索画像格納部1211、1212、…、121Nを保持した状態で実行する。また、管理部122は、マージ処理を、画像DB100に対する画像の登録処理や検索処理に対してバックグラウンドで実行する。管理部122は、マージ処理が完了した際に、マージ処理により生成された新たな検索画像格納部を検索対象とする旨を検索処理部132に通知し、マージされた各検索画像格納部1211、1212、…、121Nを削除する。このように、各検索画像格納部1211、1212、…、121Nのマージ処理を実行することで、検索対象の数を少なく抑え、性能を向上させることが可能である。
図11は、第1の実施形態に係る、検索処理部132による検索処理を示す一例のフローチャートである。なお、図11のフローチャートは、新規画像格納部120、および、検索画像格納部1211、1212、…、121Nのうち何れか1を対象とした検索処理を示している。ここでは、説明のため、検索対象を新規画像格納部120であるものとする。検索対象を検索画像格納部1211、1212、…、121Nの何れかとした場合も、同様の処理となる。
ステップS120で、検索処理部132は、画像検索部111から検索要求と検索画像とを取得する。より詳細には、図1を参照し、例えば端末装置20Aは、被写体30を撮像して得た撮像画像を、検索画像として検索要求と共にサーバ10に送信する(ステップS1)。サーバ10は、これら検索画像および検索要求を受信して、画像検索部111に渡す。画像検索部111は、画像DB100に検索画像および検索要求を渡し、検索画像に基づく検索を要求する。
検索画像および検索要求は、画像DB100において、検索処理部132に渡される。検索処理部132は、取得した検索画像を特徴情報抽出部131に渡す。次のステップS121で、特徴情報抽出部131は、検索処理部132から渡された検索画像に対して解析処理を行い、検索画像の特徴点を抽出する。特徴情報抽出部131は、検索画像から抽出した各特徴点の情報を、検索処理部132に渡す。
次のステップS122〜ステップS124の処理は、ステップS121で検索画像から抽出された各特徴点について実行される。ステップS122で、検索処理部132は、対象とする特徴点における特徴量である多次元ベクトルXを取得する。
次のステップS123で、検索処理部132は、新規画像格納部120に格納される多次元空間インデクスを、ステップS122で取得した多次元ベクトルXに基づき検索し、多次元ベクトルXの近傍にある多次元ベクトルX’と、当該多次元ベクトルX’すなわち特徴量をキーとする画像IDとを取得する。例えば、検索処理部132は、多次元ベクトルXの多次元空間上の点から所定距離の範囲内にある点を近傍点と定め、多次元空間インデクスから、近傍点に対応する多次元ベクトルを検索して多次元ベクトルX’として取得する。このとき、検索処理部132は、1の特徴点に対して複数の多次元ベクトルX’を取得してもよい。
次のステップS124で、検索処理部132は、ステップS123で取得した特徴量(多次元ベクトルX’)をキーとする画像ID毎に出現回数を累積し、画像IDと累積した出現回数とを対応付けてリスト(出現回数リストと呼ぶ)に記録する。例えば、検索処理部132は、画像IDと累積出現回数とを組としたデータ構造を、既知の配列構造でメモリ(例えばRAM1003)上に格納する。
次のステップS125で、検索処理部132は、ステップS121で検索画像から取得された全ての特徴点について処理が終了したか否かを判定する。検索処理部132は、若し、全ての特徴点について処理が終了していないと判定した場合、処理をステップS122に戻し、次の特徴点について処理を実行する。一方、検索処理部132は、全ての特徴点について処理が終了したと判定した場合、処理をステップS126に移行させる。
ステップS126で、検索処理部132は、出現回数リストに記録される画像IDを、累積出現回数順に並べ替える。次のステップS127およびステップS128の処理は、出現回数リストに記録される画像ID毎に実行される。ステップS127で、検索処理部132は、1の画像IDについて、累積出現回数が閾値を超えているか否かを判定する。若し、超えていないと判定した場合、検索処理部132は、処理をステップS129に移行させる。一方、検索処理部132は、当該画像IDの累積出現回数が閾値を超えていると判定した場合、処理をステップS128に移行させる。
ステップS128で、検索処理部132は、ステップS127で閾値を超えていると判定された累積出現回数と、当該累積出現回数に対応する画像IDとを、検索結果として画像検索部111に返す。そして、検索処理部132は、処理をステップS129に移行させ、出現回数リストに記録される全ての画像IDについて処理が終了したか否かを判定する。若し、終了していないと判定された場合、処理をステップS127に戻し、出現回数リストの未処理の画像IDについて、処理を実行する。
一方、検索処理部132は、ステップS129で出現回数リストに記録される全ての画像IDについて処理が終了したと判定した場合、図11のフローチャートによる一連の処理を終了させる。
図12は、第1の実施形態に係る、検索処理部132による、新規画像格納部120、および、検索画像格納部1211、1212、…、121Nそれぞれに対する検索処理を示す一例のフローチャートである。ステップS140は、上述のステップS120およびステップS121に対応する処理であって、検索処理部132は、画像検索部111から検索要求と検索画像とを取得し、取得した検索画像について、特徴情報抽出部131から特徴点の情報を取得する。
次のステップS141およびステップS142の処理は、新規画像格納部120、および、検索画像格納部1211、1212、…、121Nのそれぞれについて実行される処理である。ステップS141で、検索処理部132は、新規画像格納部120、および、検索画像格納部1211、1212、…、121Nのうち何れか1を検索対象とし、検索対象に対して図11を用いて説明した検索処理を実行する。
この検索処理において、検索処理部132は、図11のステップS124で説明したようにして、取得した特徴量をキーとする画像ID毎に出現回数を累積し、画像IDと累積した出現回数とを対応付けて出現回数リストに記録する(ステップS142)。
1の検索対象に対する検索処理が終了すると、検索処理部132は、処理をステップS143に移行させる。ステップS143で、検索処理部132は、新規画像格納部120、および、検索画像格納部1211、1212、…、121Nの全てについて検索処理が終了したか否かを判定する。若し、全てについて検索処理が終了していないと判定した場合、検索処理部132は、処理をステップS141に戻し、新規画像格納部120、および、検索画像格納部1211、1212、…、121Nのうち未処理のものを次の検索対象として、ステップS141およびステップS142の処理を実行する。
一方、検索処理部132は、ステップS143で、新規画像格納部120、および、検索画像格納部1211、1212、…、121Nの全てについて検索処理が終了したと判定した場合、処理をステップS144に移行させる。
ステップS144で、画像検索部111は、出現回数リストの画像IDを、累積出現回数順に並べ替える。次のステップS145で、画像検索部111は、ステップS144での並べ替え結果に基づき、出現回数リストに記録される画像IDを、累積出現回数の多い方から所定個数(例えば5個)選択し、選択された所定個数の画像IDを含む画像IDリストを検索結果として出力する。画像検索部111は、画像IDリストを、当該画像IDに係る検索要求の送信元(例えば端末装置20A)に送信する。
図13は、第1の実施形態に係る、選別部112による処理を示す一例のフローチャートである。なお、図13のフローチャートの処理に先立って、例えば端末装置20Aは、被写体30を撮像した撮像画像に基づきサーバ10に対して検索要求を送信し、この検索要求に応じて画像検索部111から送信された画像IDリストを取得しているものとする。
端末装置20Aは、画像検索部111から受け取った画像IDリストを、サーバ10に送信する。このとき、端末装置20Aは、位置情報取得部220で取得した端末装置20Aの現在位置を示す位置情報を、画像IDリストと共にサーバ10に送信することができる。サーバ10は、受信した画像IDリストを選別部112に渡す。サーバ10は、画像IDリストと共に位置情報を受信した場合、この位置情報も、選別部112に渡す。
ステップS150で、選別部112は、例えば端末装置20Aから送信された画像IDリストを取得する。選別部112は、画像IDと共に位置情報が送信されている場合は、位置情報も取得する。以下のステップS151〜ステップS155の処理は、画像IDリストに含まれる各画像IDについて実行される。
次のステップS151で、選別部112は、提供情報DB101から、対象の画像IDに対応する提供情報を検索し、検索された提供情報から所定の情報を抽出して取得する。例えば、図3を参照し、選別部112は、提供情報から項目「サムネイル」、「タイトル」、「撮像場所」および「オプション」に格納される各情報を取得する。
次のステップS152で、選別部112は、取得された提供情報の項目「オプション」に基づき、当該提供情報が場所限定の情報であるか否かを判定する。若し、場所限定の情報ではないと判定した場合、選別部112は、処理をステップS155に移行させる。一方、選別部112は、当該提供情報が場所限定の情報であると判定した場合、処理をステップS153に移行させる。
ステップS153で、選別部112は、端末装置20Aから送信された位置情報と、ステップS151で取得された項目「撮像場所」の情報とに基づき、端末装置20Aの位置と、項目「撮像場所」で示される位置との間の距離を計算する。
緯度および経度で表された2地点間の距離を求める方法は、ヒュベニの式や、Lambert−Andoyerの式など、精度の異なる幾つかの方法が知られている。第1の実施形態においては、簡易な距離算出方法として、緯度1°当たりの長さを111km、日本付近の経度1°当たりの長さを91kmとして、三角形で近似する下記の式(1)を用いることができる。
D=SQR(((La1−La2)×111000)2+((Lu1−Lu2)×91000)2) …(1)
なお、式(1)において、第1地点の緯度および経度をそれぞれ値La1およびLu1とし、第2地点の緯度および経度をそれぞれ値La2およびLu2とする。また、第1地点と第2地点との間の距離を、距離Dとする。距離Dの単位は、「m」である。また、記号SQR()は、括弧内の値の平方根を示す。
次のステップS154で、選別部112は、ステップS153で計算した距離が閾値以下であるか否かを判定する。若し、距離が閾値を超えていると判定した場合、判別部112は、処理をステップS156に移行させる。一方、距離が閾値以下であると判定した場合、選別部112は、処理をステップS155に移行させる。
ステップS155で、選別部112は、対象の画像IDと、ステップS151で対象の画像IDについて取得された項目「サムネイル」および「タイトル」に格納される各情報とを、画像IDと関連付けて候補リストに追加する。すなわち、候補リストは、選択対象となる提供情報の候補が記録される。
選別部112は、次のステップS156で、ステップS150で取得された画像IDリストに含まれる全ての画像IDについて処理が終了したか否かを判定する。若し、終了していないと判定した場合、選別部112は、処理をステップS151に戻し、未処理の1の画像IDを対象として以降の処理を実行する。一方選別部112は、全ての画像IDについて処理が終了したと判定した場合、処理をステップS157に移行させる。
ステップS157で、選別部112は、候補リストを出力する。出力された候補リストは、端末装置20Aに返される。候補リストが出力されると、図13のフローチャートによる一連の処理が終了される。
図14は、第1の実施形態に係る、提供情報登録部114の処理を示す一例のフローチャートである。
なお、図14のフローチャートの処理に先立って、例えば端末装置20Aは、サーバ10から、追加または修正を行いたい提供情報に対応する画像IDを取得しているものとする。一例として、端末装置20Aは、上述した図13のフローチャートによる処理を実行して候補リストを取得し、候補リストに含まれる画像IDから所望の画像IDを選択する。また、端末装置20Aは、入力部208に対する入力操作に応じて、提供情報として登録したい文字列Yを生成する。端末装置20Aは、選択された画像IDと、生成された文字列Yとをサーバ10に送信する。
ここで、文字列Yは、例えばXMLやJSON(JavaScript(登録商標) Object Notation)といった、データ構造を表現できるフォーマットでサーバ10に渡されることが好ましい。例えば、文字列YをJSONに従い記述する場合、図3のテーブルに示した提供情報は、下記の式(2)のように表される。
{ thumbnail: ‘ffd8ffe000104a46…’, title: ‘桜の穴場’, contents: ‘この場所に…’, gps: ‘35.685,139.753’,
options: [‘場所限定’, ‘追記可’] } …(2)
ステップS160で、提供情報登録部114は、端末装置20Aから送信された画像IDおよび文字列Yを取得する。次のステップS161で、提供情報登録部114は、提供情報DB101から、画像IDをキーとして提供情報(提供情報Bとする)の取得を試みる。次のステップS162で、提供情報登録部114は、ステップS161で提供情報Bが取得できたか否かを判定する。
若し、取得できなかったと判定した場合、提供情報登録部114は、処理をステップS167に移行させる。これは、当該画像IDに対して未だ提供情報が登録されていないことを意味している。したがって、提供情報登録部114は、処理を文字列Yから提供情報(提供情報Aとする)を作成する。提供情報を作成すると、提供情報登録部114は、処理をステップS168に移行させる。
なお、文字列Yから提供情報を作成する手順は、提供情報DB101における提供情報のスキーマと、文字列Yに用いるフォーマットとに対応して用意する必要がある。上述の式(2)で示したJSONにより記述された文字列Yは、サムネイル= Y[‘thumbnail’]、タイトル=Y[‘title’]、本文=Y[‘contents’]のようにして、直接的に提供情報に変換することができる。
次のステップS168で、提供情報登録部114は、ステップS167で作成された提供情報Aを、ステップS160で取得した画像IDをキーとして提供情報DB101に登録する。提供情報Aの登録が完了すると、提供情報登録部114は、処理をステップS166に移行させて登録完了通知を出力する。登録完了通知は、例えば端末装置20Aに送信される。登録完了通知が送信されると、図14のフローチャートによる一連の処理が終了される。
一方、提供情報登録部114は、上述のステップS162で、提供情報Bが取得できたと判定した場合、処理をステップS163に移行させる。ステップS163で、提供情報登録部114は、ステップS161で取得した提供情報Bの項目「オプション」を参照し、提供情報Bの修正が可能か否かを判定する。ここでは、提供情報Bの項目「オプション」に「追記可」の文字列が格納されている場合に、提供情報Bの修正が可能であるものとする。また、提供情報Bの項目「オプション」に「追記不可」の文字列が格納されている場合は、提供情報Bの修正が不可であるものとする。
若し、提供情報Bの修正が不可であると判定した場合、提供情報登録部114は、処理をステップS169に移行させて、登録不可の通知を出力する。この登録不可通知は、画像IDおよび文字列Yの送信元である端末装置20Aに送信される。端末装置20Aは、例えば、この登録不可通知を受信すると、入力した文字列Yの登録が不可である旨を表示部209により表示することができる。登録不可通知が送信されると、図14のフローチャートによる一連の処理が終了される。
一方、提供情報登録部114は、ステップS163で、提供情報Bの修正が可能であると判定した場合、処理をステップS164に移行させる。提供情報登録部114は、ステップS164で、提供情報Bに文字列Yを合成して、新たな提供情報(提供情報Cとする)を作成する。提供情報登録部114は、提供情報Cが作成されると、処理をステップS165に移行させる。
提供情報Bと文字列Yとを合成する手順は、提供情報DB101における提供情報のスキーマと、文字列Yに用いるフォーマットとに対応して用意する必要がある。例えば、文字列Yが上述した式(2)で示したようにJSONにより記述されている場合、文字列Yの後ろにコンテンツ=Y[‘contents’]を結合し、提供情報の他の項目は、提供情報Bの値をそのまま使用するという手順が考えられる。
ステップS165で、提供情報登録部114は、作成した提供情報Cを、ステップS160で取得した画像IDをキーとする提供情報Bと置き換えて提供情報DB101に登録する。提供情報登録部114は、提供情報Cの登録が完了すると、処理をステップS166に移行させて登録完了通知を出力する。登録完了通知が送信されると、図14のフローチャートによる一連の処理が終了される。
(端末装置側の動作)
次に、第1の実施形態に係る端末装置20Aおよび20Bの動作について、より詳細に説明する。なお、上述したように、端末装置20Bは、端末装置20Aの構成から画像および提供情報の登録機能を省略したものであるので、ここでは、端末装置20Aの動作を中心に説明する。
図15は、第1の実施形態による、画像の検索および登録処理に係る端末装置20Aにおける処理を示す一例のフローチャートである。この図15に示されるフローチャートの処理に先立って、端末装置20Aにおいて、第1の実施形態による、画像の検索および登録処理を実行するためのプログラム(以下、端末用プログラムと呼ぶ)が起動される。
図16は、この端末用プログラムの起動直後に表示部209により表示される初期画面の例を示す。図16において、初期画面400は、検索対象とする画像の取得方法を選択するボタン401および402が配置される。ボタン401は、端末装置20Aが備えるカメラ機能による画像の取得を選択する。ボタン402は、予め用意された画像を選択する。この場合、画像は、端末装置20Aのストレージ2006に格納されている画像であってもよいし、ネットワーク上のストレージに格納されている画像であってもよい。
以下では、初期画面400においてボタン401が操作され、カメラ機能により撮像された画像を用いて検索を行う例について説明する。ステップS200で、端末装置20Aは、入力部208に対する入力操作に応じて撮像動作を実行し、撮像画像を取得する。端末装置20Aは、検索要求部202により、撮像画像と検索要求とをサーバ10に送信する。
サーバ10は、端末装置20Aから送信された撮像画像と検索要求とに基づき、図11および図12を用いて説明した手順に従い画像DB100に対して検索処理を行い、検索結果を出力する。サーバ10は、撮像画像に類似する画像が検索された場合は、当該画像の画像IDリストを検索結果として出力する。撮像画像に類似する画像が検索されなかった場合は、サーバ10は、その旨示すメッセージを検索結果として出力する。サーバ10は、出力された検索結果を端末装置20Aに送信する。
ステップS201で、端末装置20Aは、サーバ10から送信された検索結果を受信部206により受信する。次のステップS202で、端末装置20Aは、検索結果に基づき画像IDリストを取得できたか否かを判定する。若し、取得できたと判定した場合、端末装置20Aは、処理をステップS203に移行させる。
ステップS203で、端末装置20Aは、ステップS201で取得した画像IDリストをサーバ10に送信する。このとき、端末装置20Aは、位置情報取得部220で取得された端末装置20Aの現在位置を示す位置情報を、画像IDリストと共にサーバ10に送信できる。サーバ10は、端末装置20Aから送信された画像IDリストと位置情報とに基づき、図13を用いて説明した手順に従い候補リストを出力する。サーバ10は、この画像IDリストに応じた候補リストを、端末装置20Aに送信する。
ステップS204で、端末装置20Aは、サーバ10から送信された画像IDリストに応じた候補リストを受信部206により受信して取得する。次のステップS205で、端末装置20Aは、受信した候補リストに含まれる、各候補について、サムネイル画像とタイトルとを表示部209により表示させる。次のステップS206で、端末装置20Aは、入力部208に対する入力操作により提供情報を取得する候補が選択されたか否かを判定する。選択されていないと判定した場合、端末装置20Aは、処理をステップS206に戻す。
図17は、上述したステップS203〜ステップS206までの一連の処理における、表示部209による表示の遷移の例を示す。図17(a)は、ステップS203で画像IDリストが送信され、ステップS205で候補リストの情報が表示されるまでの待機画面410の例を示す。
図17(b)は、ステップS205における候補表示画面420の例を示す。図17(b)に例示される候補表示画面420は、候補リストに含まれる各画像IDに対応する候補が表示される領域421と、新規に撮像画像を登録するためのボタン426とが配置される。この例では、領域421に対して、それぞれ第1および第2の画像IDに対応する候補の情報が表示される2の候補領域4221および4222が表示されている。候補領域4221は、それぞれ第1の画像IDに対応したサムネイル画像4231と、タイトル表示4241とを含む。候補領域4222も同様に、第2の画像IDに対応したサムネイル画像4232と、タイトル表示4242とを含む。
このように、複数の候補を一覧で表示させることで、ユーザは、撮像画像に対して類似の画像が複数存在する場合であっても、適切な画像を容易に選択することができる。
入力部208に対する入力操作により、例えば候補領域4221内の任意の位置を指示することで、その候補領域4221に表示される候補が、提供情報を取得する候補として選択された状態とすることができる。候補領域4222についても同様である。図17(c)は、候補領域4221の候補が選択された候補表示画面420’の例を示す。この例では、候補領域4221の候補である提供情報の項目「本文」に格納される文字列がポップアップ表示425により表示され、選択されていることが強調されている。
端末装置20Aは、ステップS206で提供情報を取得する候補が選択されたと判定した場合、処理をステップS207に移行させる。ステップS207で、端末装置20Aは、選択された候補に対応する画像IDを、送信部207によりサーバ10に送信する。サーバ10は、提供情報取得部113により、端末装置20Aから送信された画像IDに関連付けられた提供情報を、提供情報DB101から検索し、端末装置20Aに送信する。
ステップS208で、端末装置20Aは、サーバ10から送信された提供情報を受信し、送信した画像IDに対応する提供情報を取得する。次のステップS209で、端末装置20Aは、取得した提供情報を表示部209により表示し、ユーザに提示する。提供情報が表示されると、この図15のフローチャートによる一連の処理が終了される。
なお、提供情報を提示する形式は、提供情報の形式や内容に応じて用意される必要がある。例えば、単純な形態では、タイトルと本文とを並べて表示することが考えられる。また、本文にWebページのURLが含まれる場合は、そのURLが示すWebページの内容を表示したり、ダウンロードさせたりすることが考えられる。また、本文にさらにJSON形式の文字列を格納することで、外部アプリケーションを呼び出したり、端末装置20Aの各種機能を起動したりといった複雑な提示方法もとることができる。
上述したステップS202で、画像IDリストを取得できなかったと判定した場合、端末装置20Aは、処理をステップS210に移行させる。この場合、ステップS200で送信した撮像画像を画像DB100に新規に登録することができる。ステップS210では、ステップS200で送信した撮像画像を画像DB100に新規に登録する操作が入力部208に対してなされたか否かを判定する。
図18は、第1の実施形態に係る、画像の新規登録を指示する画像登録画面の例を示す。上述のステップS200で撮像画像および検索要求がサーバ10に対して送信されると、端末装置20Aは、図18(a)に示す待機画面430を表示部209により表示させる。そして、ステップS202で画像IDリストを取得できなかったと判定されると、端末装置20Aは、図18(b)の画像登録画面440を表示部209により表示させる。
図18(b)の例では、画像登録画面440は、新規登録の対象となる画像が表示される領域441と、領域441に表示される画像のサーバ10への送信指示を行うボタン442とが配置される。この例では、領域441は、ステップS200で取得された撮像画像が表示されている。
ステップS210で、端末装置20Aは、撮像画像を新規に登録する操作がなされなかったと判定した場合、処理をステップS200に戻す。例えば、端末装置20Aは、画像登録画面440が表示された状態で、入力部208に対する入力操作により、例えば図示されないキャンセルボタンが操作された場合に、撮像画像を新規に登録する操作がなされなかったと判定する。
一方、端末装置20Aは、例えば画像登録画面440においてボタン442が操作された場合、撮像画像を新規に登録する操作がなされたと判定し、処理をステップS211に移行する。ステップS211で、端末装置20Aは、撮像画像と登録要求とをサーバ10に送信する。サーバ10は、図9を用いて説明した手順に従い、撮像画像を画像DB100に登録する。そして、サーバ10は、撮像画像が登録された登録画像に関連付けられた画像IDを、端末装置20Aに送信する。
ステップS212で、端末装置20Aは、サーバ10から送信された画像IDを受信部206により受信し、画像IDを取得する。そして、次のステップS213で、端末装置20Aは、新規に画像DB100に登録した登録画像に関連付ける提供情報の登録処理を実行する。端末装置20Aにおける提供情報の登録処理については、後述する。提供情報の登録が終了すると、端末装置20Aは、図15のフローチャートによる一連の処理を終了させる。
なお、上述では、撮像画像の画像DB100への新規登録を、ステップS202で画像IDのリストが取得できず、当該撮像画像または当該撮像画像の類似画像が画像DB100に登録されていない場合に実行可能としている。これはこの例に限定されず、ステップS202で画像IDのリストが取得できた場合であっても、撮像画像の画像DB100への新規登録を実行するようにできる。
例えば、端末装置20Aは、図15のフローチャートにおけるステップS203〜ステップS208の何れかのタインミグ、すなわち、図17(b)または図17(c)に示す候補表示画面420または候補表示画面420’が表示されている状態で、これらの画面に配置されるボタン426が操作された場合に、処理を強制的にステップS210の撮像画像の新規登録処理に移行させることが考えられる。このようにすることで、ユーザによる画像登録に対する他人の画像登録の影響を抑制できる。
また、ステップS202で画像IDのリストが取得でき、且つ、撮像画像の画像DB100への新規登録を実行する場合、画像DB100に既に登録されている画像と類似の画像が登録されることになる。この場合、画像を登録済みのユーザが、他のユーザの登録した類似の画像により自分が登録した画像を発見することが困難になるおそれがある。
例えば、提供情報の項目「オプション」に、類似画像の登録禁止を指示する情報を格納可能とすることができる。端末装置20Aは、提供情報の項目「オプション」に類似画像登録禁止の指示が格納されている場合、例えば図17(b)または図17(c)の候補表示画面420または候補表示画面420’に配置されるボタン426を無効とすることが考えられる。これにより、類似画像の登録が禁止され、ユーザは、自分の登録した画像を容易に発見することが可能となる。
図19は、第1の実施形態に係る、端末装置20Aにおける提供情報の登録処理を示す一例のフローチャートである。この図19のフローチャートによる処理は、例えば上述した図15のフローチャートにおけるステップS213で実行される。これに限らず、提供情報を提供情報DB101に登録する単独の処理として、図19のフローチャートによる処理を実行してもよい。
ステップS300で、端末装置20Aは、提供情報を登録する画像の画像IDを取得する。図15のステップS213において実行される場合には、ステップS212で取得した画像IDを用いることができる。単独で実行する場合、例えば撮像画像から画像DB100を検索して画像IDを取得することが考えられる。
次のステップS301で、端末装置20Aは、提供情報として登録する文字列を取得する。例えば、端末装置20Aは、表示部209により、当該文字列を入力するための入力画面を表示させる。図20は、第1の実施形態に係る、この文字列を入力するための入力画面の例を示す。図20(a)において、入力画面450は、ステップS300で取得された画像IDに対応する画像を表示させる画像表示領域451と、提供情報のサムネイル画像以外の各項目の情報を入力するための入力領域452〜455と、各入力領域452〜455に入力された文字列を提供情報として提供情報DB101に登録させるための登録ボタン456とが配置される。
入力領域452は、提供情報の項目「タイトル」に格納する文字列を入力するための領域である。入力領域453は、提供情報の項目「本文」に格納する文字列を入力するための領域である。入力領域454は、提供情報の項目「オプション」を設定するための領域である。この例では、入力領域455としてのチェックボックスに対するチェック入力の有無に応じて、追記可および追記不可の何れかの文字列が生成される。図20(b)は、各入力領域452〜455に情報が入力された状態を示す。
端末装置20Aは、図20(b)の入力画面450において、入力部208に対する入力操作により登録ボタン456が指定されると、画像表示領域451に表示されたサムネイル画像をエンコードした文字列と、各入力領域452〜455に入力された文字列と、画像IDとをサーバ10に送信する(ステップS302)。
サーバ10は、端末装置20Aから送信された各情報に基づき、図14を用いて説明した手順に従い各文字列を提供情報として画像IDに関連付けて提供情報DB101に登録する。サーバ10は、登録処理の結果を示す通知を端末装置20Aに送信する。端末装置20Aは、この登録結果の通知を受信部206により受信し、例えば表示部209により表示する(ステップS303)。
このように、第1の実施形態によれば、画像DB100および提供情報DB101に対する画像および提供情報の登録を、ユーザが端末装置20Aから実行することができる。そのため、画像検索サーバ(サーバ10)側の処理を待機する処理待ち時間を大幅に短縮することができ、利便性が向上される。
(第2の実施形態)
図21は、第2の実施形態に係る情報処理システムの一例の構成を示す。なお、図21において、上述した図1と共通する部分には同一の符号を付して、詳細な説明を省略する。第2の実施形態は、画像登録と提供情報の登録とを異なる端末装置20Cおよび20Dで行う例である。なお、図21では、端末装置20Cおよび20Dをそれぞれ端末#3および#4として示している。
図22は、第2の実施形態に係る端末装置20Cの機能を説明するための機能ブロック図である。なお、図22において、上述した図5と共通する部分には同一の符号を付して、詳細な説明を省略する。端末装置20Cは、図5の端末装置20Aの構成に対し、検索要求部202、提供情報登録要求部204、選択部205および位置情報取得部220が省略されている。また、端末装置20Cは、図5の端末装置20Aの構成に対し、画像ID取得部210が追加されている。端末装置20Cとしては、撮像機能を備える、多機能型携帯端末や、タブレット型コンピュータを適用することができる。
図23は、第2の実施形態に係る端末装置20Dの機能を説明するための機能ブロック図である。なお、図23において、上述した図5と共通する部分には同一の符号を付して、詳細な説明を省略する。端末装置20Dは、図5の端末装置20Aの構成に対し、撮像処理部201、検索要求部202、画像登録要求部203、選択部205および位置情報取得部220が省略されている。また、端末装置20Dは、図5の端末装置20Aの構成に対し、画像ID取得部211が追加されている。端末装置20Dは、端末装置20Cと同様に多機能型携帯端末やタブレット型コンピュータを適用することができる。
図21において、端末装置20Cは、例えば被写体30を撮像した撮像画像を、当該撮像画像の登録を要求する画像登録要求と共にサーバ10に送信する(ステップS10)。サーバ10は、この画像登録要求に応じて、図9を用いて説明した手順に従い撮像画像に一意の画像IDを生成し、画像IDと撮像画像の特徴情報とを関連付けて画像DB100に登録する。登録が完了すると、サーバ10は、画像IDを端末装置20Cに返す(ステップS11)。
端末装置20Cは、ステップS11で送信された画像IDを、画像ID取得部210により取得する。そして、端末装置20Cは、取得した画像IDを、提供情報を登録する端末装置20Dに渡す(ステップS12)。一例として、端末装置20Cは、画像IDをQRコード(登録商標)などの2次元コードに変換し、表示部209により表示させる。これに限らず、端末装置20Cは、画像IDを文字列として表示部209により表示させてもよいし、さらに他の画像情報などに変換して表示させてもよい。
端末装置20Dは、端末装置20Cから渡された画像IDを、画像ID取得部211により取得する。例えば、画像ID取得部211は、撮像機能を有し、端末装置20Cに表示された、画像IDが変換された2次元コードを撮像する。そして、画像ID取得部211は、撮像画像から2次元コードを抽出して復号し、画像IDを取得する。端末装置20Dは、この画像IDと、入力部208により入力された提供情報と、提供情報の登録を要求する提供情報登録要求とをサーバ10に送信する(ステップS13)。サーバ10は、図14を用いて説明した手順に従い、提供情報を画像IDと関連付けて提供情報DB101に登録する。
このように、第2の実施形態においても、画像DB100および提供情報DB101に対する画像および提供情報の登録を、ユーザが端末装置20Cおよび端末装置20Dから実行することができる。そのため、画像検索サーバ(サーバ10)側の処理を待機する処理待ち時間を大幅に短縮することができ、利便性が向上される。
なお、画像IDが悪意のある第三者に知られると、提供情報に意図しない修正が施されてしまうおそれがある。これを防ぐために、期限付きのパスワードを発行することが考えられる。この場合、例えば、端末装置20Cにおいて数桁(例えば5桁)の英数字からなるパスワードをランダムに生成し、有効期限と共に提供情報DB101に格納する。端末装置20Cは、ステップS12で画像IDを端末装置20Dに渡す処理とは別に、端末装置20Cの画面上にパスワードを表示しておく。端末装置20Dから提供情報の登録処理を行う際に、提供情報の修正可否の判定条件に、有効期限内のパスワードの入力の有無を加えることで、端末装置20Cの画面を見ることができる人のみが提供情報を登録できるようにすることができる。
(第3の実施形態)
図24は、第3の実施形態に係る情報処理システムの一例の構成を示す。なお、図24において、上述した図1と共通する部分には同一の符号を付して、詳細な説明を省略する。第3の実施形態は、画像登録と提供情報の登録とを異なる端末装置20Eおよび20Fで行う例である。なお、図24では、端末装置20Eおよび20Fをそれぞれ端末#5および#6として示している。
ここで、上述の第2の実施形態では、画像を画像DB100に登録して画像IDを取得した後に、取得した画像IDに基づき提供情報を提供情報DB101に登録していた。これに対して、第3の実施形態では、提供情報を提供情報DB101に登録して提供情報IDを取得し、取得した提供情報IDに基づき画像を画像DB100に登録する。
図25は、第3の実施形態に係る端末装置20Eの機能を説明するための機能ブロック図である。なお、図25において、上述した図5と共通する部分には同一の符号を付して、詳細な説明を省略する。端末装置20Eは、図5の端末装置20Aの構成に対し、撮像処理部201、検索要求部202、画像登録要求部203、選択部205および位置情報取得部220が省略されている。また、端末装置20Dは、図5の端末装置20Aの構成に対し、提供情報ID取得部212が追加されている。端末装置20Eは、多機能型携帯端末やタブレット型コンピュータを適用することができる。また、端末装置20Eは、撮像機能が不要なので、一般的なデスクトップ型のコンピュータを適用することもできる。
図26は、第3の実施形態に係る端末装置20Fの機能を説明するための機能ブロック図である。なお、図26において、上述した図5と共通する部分には同一の符号を付して、詳細な説明を省略する。端末装置20Fは、図5の端末装置20Aの構成に対し、検索要求部202、提供情報登録要求部204、選択部205および位置情報取得部220が省略されている。また、端末装置20Cは、図5の端末装置20Aの構成に対し、提供情報ID取得部213が追加されている。端末装置20Fとしては、撮像機能を備える、多機能型携帯端末や、タブレット型コンピュータを適用することができる。
図24において、端末装置20Eは、入力部208により入力された提供情報と、提供情報の登録を要求する提供情報登録要求とをサーバ10に送信する(ステップS20)。サーバ10は、図14を用いて説明した手順に従い、提供情報を提供情報DB101に登録する。このとき、サーバ10において提供情報登録部114は、登録が要求された提供情報に一意の提供情報IDを生成する。提供情報登録部114は、生成した提供情報IDを、端末装置20Eに返す(ステップS21)。
なお、提供情報登録部114は、上述した画像登録部110における画像IDの生成処理と同様に、所定桁の英数字をランダムに発生させて文字列を生成し、この文字列の既に生成した提供情報IDとの重複の有無を検査して重複が無いと判定された文字列を、提供情報IDとして用いることが考えられる。
端末装置20Eは、ステップS21で送信された提供情報IDを、提供情報ID取得部212により取得する。そして、端末装置20Eは、取得した提供情報IDを、画像を登録する端末装置20Fに渡す(ステップS22)。一例として、端末装置20Eは、提供情報IDをQRコード(登録商標)などの2次元コードに変換し、表示部209により表示させる。これに限らず、端末装置20Eは、提供情報IDを文字列として表示部209により表示させてもよいし、さらに他の画像情報などに変換して表示させてもよい。
端末装置20Fは、端末装置20Eから渡された提供情報IDを、提供情報ID取得部213により取得する。例えば、提供情報ID取得部213は、撮像処理部201により、端末装置20Eに表示された、提供情報IDが変換された2次元コードを撮像する。そして、提供情報ID取得部213は、撮像画像から2次元コードを抽出して復号し、提供情報IDを取得する。端末装置20Fは、この提供情報IDと、撮像処理部201に撮像された被写体30の撮像画像と、画像の登録を要求する画像登録要求とをサーバ10に送信する(ステップS23)。サーバ10は、図9を用いて説明した手順に従い、画像を提供情報IDと関連付けて画像DB100に登録する。
このように、第3の実施形態においても、画像DB100および提供情報DB101に対する画像および提供情報の登録を、ユーザが端末装置20Eおよび端末装置20Fから実行することができる。そのため、画像検索サーバ(サーバ10)側の処理を待機する処理待ち時間を大幅に短縮することができ、利便性が向上される。
なお、上述の各実施形態は、本発明の好適な実施の例ではあるがこれに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変形による実施が可能である。