画像処理装置と画像処理装置の制御方法およびプログラムと、情報処理装置と情報処理装置の制御方法およびプログラム
【課題】 検出されたマーカの位置に、該マーカに対応する仮想オブジェクトを表示する拡張現実空間の実現方法では、適切な拡張現実空間の実現が困難な場合があった。
【解決手段】 画像に含まれる複数のマーカに関する情報を取得する取得手段と、前記複数のマーカにそれぞれ対応する複数の仮想オブジェクトを、前記画像に重畳して表示部に表示するよう制御する表示制御手段と、前記複数の仮想オブジェクトが特定の組み合わせであるか否かを判断する判断手段とを有し、前記判断手段により前記複数の仮想オブジェクトが特定の組み合わせであると判断された場合、前記表示制御手段は、前記複数の仮想オブジェクトを、前記特定の組み合わせに対応した特定の配置で前記画像に重畳して前記表示部に表示するよう制御することを特徴とする画像処理装置。
【解決手段】 画像に含まれる複数のマーカに関する情報を取得する取得手段と、前記複数のマーカにそれぞれ対応する複数の仮想オブジェクトを、前記画像に重畳して表示部に表示するよう制御する表示制御手段と、前記複数の仮想オブジェクトが特定の組み合わせであるか否かを判断する判断手段とを有し、前記判断手段により前記複数の仮想オブジェクトが特定の組み合わせであると判断された場合、前記表示制御手段は、前記複数の仮想オブジェクトを、前記特定の組み合わせに対応した特定の配置で前記画像に重畳して前記表示部に表示するよう制御することを特徴とする画像処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、拡張現実空間を実現することができる画像処理装置および情報処理装置に関する。
【背景技術】
【0002】
近年、拡張現実(AR:Augmented Reality)技術を利用した様々なサービスが提供されている。例えば、AR技術を用いると、現実の世界を撮像した画像上に現実の世界の位置に対応した情報を合成表示することができる。この技術を用いたサービスとして、家具・家電等があたかも実際に自室に置かれているかのような画像を閲覧することができるサービスがある。例えば、ベッドやソファ、冷蔵庫や洗濯機などの比較的サイズの大きい家具・家電等は、実物を実際に部屋に配置して、配置位置や配置した際の雰囲気などを気軽に確認することが困難であった。これに対して、AR技術を用いることにより、ユーザは家具や家電等の実寸を計測し配置したい箇所に収まるか試みる、他の家具・家電と調和しているかどうかシミュレーションする、といった作業を負荷なく行なうことが可能となる。
例えば、特許文献1ではマーカが付されたカードを含む現実空間をカメラで撮像し、撮像した画像を表示部へ表示するとともに、撮像された画像から検出したマーカに応じた画像を、撮像した画像に重畳して表示する技術が開示されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2003−256876
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、従来の拡張現実空間の実現方法では、撮像された画像上のマーカが認識された位置にマーカに対応する画像を表示していた。このような方法では、ユーザの意図に沿った拡張現実空間の実現が困難な場合がある。例えばTVボードの上にTVを配置することを拡張現実空間上でシミュレーションすることを考える。一般的に、TVはTVボード上に配置され、ユーザもそのような配置を意図してマーカを配置するものと考えられる。しかしながら、従来の拡張現実空間の実現方法では、TVのマーカとTVボードのマーカとを並べて置くだけでは、TVとTVボードが並んで表示されたり、重なって表示されたりするだけであり、ユーザの意図通りの拡張現実空間を実現することが難しかった。
本発明は、上記の点に鑑み、ユーザの意図に沿った拡張現実空間を実現することを目的とするものである。
【課題を解決するための手段】
【0005】
上記課題を解決するために、本発明の画像処理装置は、画像に含まれる複数のマーカに関する情報を取得する取得手段と、前記複数のマーカにそれぞれ対応する複数の仮想オブジェクトを、前記画像に重畳して表示部に表示するよう制御する表示制御手段と、前記複数の仮想オブジェクトが特定の組み合わせであるか否かを判断する判断手段とを有し、前記判断手段により前記複数の仮想オブジェクトが特定の組み合わせであると判断された場合、前記表示制御手段は、前記複数の仮想オブジェクトを、前記特定の組み合わせに対応した特定の配置で前記画像に重畳して表示部に表示するよう制御することを特徴とする。
【発明の効果】
【0006】
本発明によれば、よりユーザの意図に沿った拡張現実空間を実現することができる。
【図面の簡単な説明】
【0007】
【図1】第1の実施形態における画像処理装置のブロック図である。
【図2】第1の実施形態における、拡張現実空間の実現の一例を説明するための図である。
【図3】第1の実施形態における画像処理装置の動作を示すフローチャートである。
【図4】第2の実施形態における画像処理装置および情報処理装置のブロック図である。
【図5】第2の実施形態における画像処理装置の動作を示すフローチャートである。
【図6】第2の実施形態における情報処理装置の動作を示すフローチャートである。
【図7】第3の実施形態における画像処理装置の動作を示すフローチャートである。
【図8】第3の実施形態における情報処理装置の動作を示すフローチャートである。
【図9】第3の実施形態における推奨仮想オブジェクトテーブルの概念を示す図である。
【図10】第3の実施形態における推奨仮想オブジェクトの表示例である。
【図11】第4の実施形態における画像処理装置の動作を示すフローチャートである。
【発明を実施するための形態】
【0008】
以下に、本発明を実施するための形態について、添付の図面を用いて詳細に説明する。
【0009】
尚、以下に説明する実施の形態は、本発明の実現手段としての一例であり、本発明が適用される装置の構成や各種条件によって適宜修正又は変更されてもよい。また、各実施の形態は適宜組み合わされることも可能である。
【0010】
[第1の実施形態]
はじめに、本実施形態の、拡張現実空間を実現可能な画像処理装置の一例であるデジタルカメラについて、図1を用いて説明する。図1はデジタルカメラ100のブロック図である。
【0011】
制御部101は、入力された信号や、後述のプログラムに従ってデジタルカメラ100の各部を制御する。例えば、撮影処理や再生処理、ロギング処理などの制御を担う。それぞれの処理については後述する。なお、デジタルカメラ100の制御は一つのハードウェアが行ってもよいし、複数のハードウェアが処理を分担することで、装置全体の制御を行ってもよい。
【0012】
撮像部102は現実空間を撮影する撮影動作を行う。撮影動作とは、撮像部102に含まれるレンズで結像された被写体光を電気信号に変換し、ノイズ低減処理などを行い、デジタルデータを画像データとして出力する処理である。この撮像部102から出力された画像データは、表示部105に表示したり、記録媒体107に記録したりすることができる。
【0013】
不揮発性メモリ103は、デジタルカメラ100の各部を制御するためのプログラム(ファームウェア)や各種の設定情報を記憶している。後述する各フローチャートに示す処理を制御部101が制御するためのプログラムも、この不揮発性メモリ103に記録されている。
【0014】
作業用メモリ104は、不揮発性メモリ103に保存されているプログラムが、展開されるためのメモリである。作業用メモリ104は制御部101のワークエリアとして使用される。
【0015】
表示部105は、撮影の際のスルー画像データの表示、撮影した画像データの表示、対話的な操作のための文字表示などを行う。本実施形態において制御部101は、撮像部102から出力された画像データを、スルー画像として逐次更新しながら連続して表示部105に表示するよう制御する。さらに、後述するプログラムにより制御部101が仮想オブジェクトをスルー画像に重畳して表示することにより、拡張現実空間を実現する。拡張現実空間の実現の手順に関しては、後に詳述する。なお、表示部105はデジタルカメラ100が備える必要はなく、デジタルカメラ100は表示部105と接続することができ、表示部105の表示を制御する表示制御機能を少なくとも有していればよい。
【0016】
操作部106はユーザがデジタルカメラの動作を指示するために用いられる。操作部106は、例えば、デジタルカメラの電源のオン/オフを指示するための電源ボタンや、撮影処理を行うためのレリーズスイッチ、画像データを閲覧するための再生ボタンなどの操作部材を含むよう構成される。
【0017】
記録媒体107には、撮像部102から出力された画像データを記録することができる。また、記録媒体107には、拡張現実の実現のための仮想オブジェクトと仮想オブジェクトを示す識別情報とが対応づけられた仮想オブジェクトテーブルが記憶されている。本実施形態における仮想オブジェクトは、例えば家具や家電等の三次元画像モデルである。この三次元画像モデルの仮想オブジェクトも、記録媒体107に記録されている。本実施形態のデジタルカメラ100は、撮像部102から出力されるスルー画像からマーカを検出する。そして、デジタルカメラ100は、検出されたマーカを介して識別情報を取得する。デジタルカメラ100は、取得した識別情報を仮想オブジェクトテーブルに照らし合わせることにより、識別情報が示す仮想オブジェクトを記録媒体107から取得する。取得された仮想オブジェクトはスルー画像上のマーカの位置に表示される。なお、記録媒体107は、デジタルカメラ100に着脱可能なよう構成してもよいし、デジタルカメラ100に内蔵されていてもよい。すなわち、デジタルカメラ100は少なくとも記録媒体107にアクセスする手段を有していればよい。
【0018】
以上が、本実施形態におけるデジタルカメラの構成である。
【0019】
本実施形態では上述したデジタルカメラを用いて拡張現実空間を実現する。次に、拡張現実空間を実現する際のデジタルカメラ100の具体的な利用例、および、表示部105に表示される拡張現実空間の例を図2に示す。
【0020】
図2(a)は、現実空間上にマーカを配置した様子の一例である。この例では、ユーザが部屋にソファを置くことをシミュレーションしようとしている様子を示している。部屋内にはスピーカが1組あり、スピーカに対向する位置にマーカ201が配置されている。本実施形態におけるマーカは、例えば所定の仮想オブジェクトに対応する識別情報を、特定のパターンの二次元コードで表現したものである。以後、情報を特定のパターンの二次元コードで表現することを二次元コード化すると言う。また、マーカを印刷した用紙もマーカと称する。本実施形態の制御部101は、このマーカが示す特定のパターンに二次元コード化された識別情報を、パターン認識によって読み取る。ここで、マーカには検出用パターンが配されており、制御部101は、この検出用パターンをパターン認識により読み取ることで、マーカの存在を認識することができる。検出用パターンは例えばマーカの四隅に特定の模様を印刷することで二次元コード化される。制御部101は、パターン認識によってマーカを検出し、その結果に基づき、デジタルカメラ100の位置に対するマーカの三次元位置を示す位置情報及びマーカの姿勢を示す姿勢情報を幾何学的に算出することができる。制御部101は、読み取った識別情報に対応する仮想オブジェクトを記録媒体107から読み出す。そして制御部101は、読み出した仮想オブジェクトをスルー画像上に重畳して表示することで、マーカに対応する仮想オブジェクトを用いた拡張現実空間を実現する。なお、マーカ201は、ソファの仮想オブジェクトと対応づけられた識別情報が二次元コード化されたものである。以後、あるマーカを配置することにより表示させたい仮想オブジェクトに対応する識別情報を、そのマーカの対応識別情報とも呼ぶ。
【0021】
上記の図2(a)に示す部屋をデジタルカメラ100にて撮影して、スルー画像を表示する際の、表示部105の表示例を図2(b)に示す。図2(b)は、マーカ201が置かれた位置及び姿勢に基づき、マーカ201に対応するソファの仮想オブジェクトがスルー画像上に表示されている様子を示す。この仮想オブジェクトの表示においては、マーカの三次元位置を示す位置情報及びマーカの姿勢を示す姿勢情報に基づき、記録媒体107に記録されている仮想オブジェクトに対して加工処理を行う。これにより、マーカが置かれた位置及び姿勢に適した仮想オブジェクトが表示される。ここで、加工処理とは拡大・縮小・回転等の処理である。例えば、図2(a)に示すマーカ201の対応識別情報には、図2(f)に示すようなソファの仮想オブジェクトが対応づけられており、該ソファの仮想オブジェクトは記録媒体107に記録されている。この記録媒体107に記録されている仮想オブジェクトは、所定のサイズと姿勢の初期値が予め定められている。加工処理では、この予め定められた所定のサイズと姿勢の初期値をもとに、マーカが置かれた位置や姿勢に応じた拡大・縮小・回転等の処理を行う。これにより、例えば、図2(f)に示されるソファの仮想オブジェクトは、図2(b)に示されるように、マーカ201が配置された位置および姿勢に適したサイズと姿勢に加工され、マーカ201が配置された位置に適したスルー画像上の位置に表示される。この例では、マーカ201は、スピーカに対向する位置に配置され、ソファの仮想オブジェクトは、デジタルカメラ100からマーカ201までの距離に応じたサイズで表示されている。また、マーカ201はスピーカの方向を向いていると判断され、ソファの仮想オブジェクトの姿勢もマーカ201の姿勢に対応する向きに表示されている。なお、これらの仮想オブジェクトの加工に関しては、既知の方法を用いることができる。仮想オブジェクトの表示の手順については後に詳述する。
【0022】
以上のように、ユーザは、現実空間上にマーカを配置し、そのマーカを撮影してスルー画像上に表示することで、拡張現実空間上で、部屋にソファを置くことをシミュレーションすることができる。
【0023】
次に、図2(c)は、図2(a)の例に示す部屋に更に二つのマーカを配置した様子の一例を示す。この例は、更にTVボードと、TVボードの上にTVを配置することをシミュレーションしようとしている例である。この例では、マーカ201に加えて、スピーカの間にマーカ202およびマーカ203が並べて配置されている。ここで、マーカ202はTVの仮想オブジェクトと対応づけられた識別情報を二次元コード化したものであり、マーカ203は、TVボードの仮想オブジェクトと対応づけられた識別情報を二次元コード化したものである。従来の拡張現実空間を実現する装置では、このようにマーカ202およびマーカ203を横に並べて配置した場合、図2(d)のようにそれぞれのマーカが置かれている位置に基づき、それぞれのマーカが示す仮想オブジェクトも横に並べて表示していた。これに対して、例えば図2(e)に示すようにTVボードの上にTVを乗せた様子を示す拡張現実空間を実現する場合、何もない空中に、例えば手でマーカを持ったまま撮影しなければならなかった。すなわち、表示位置が安定せず、ユーザの手間もかかるなど、不便であった。このような課題が存在することから、TVとTVボードのように特定の組み合わせの仮想オブジェクトを表示させる場合、従来の拡張現実の実現方法では手軽に適切な拡張現実空間を実現することが難しい。
【0024】
そこで、本実施形態におけるデジタルカメラ100は、マーカに含まれる対応識別情報、関連識別情報および配置情報に基づき、複数の仮想オブジェクトを適切な配置でスルー画像上に表示させるよう構成した。以下、関連識別情報及び配置情報について述べる。
【0025】
本実施形態では、マーカは、対応識別情報だけでなく、関連識別情報も含むよう二次元コード化される。関連識別情報とは、マーカの対応識別情報に対応する仮想オブジェクトに対して、特定の配置で表示されることが望ましい他の仮想オブジェクトに対応する識別情報である。以降の説明では、マーカに含まれる対応識別情報に対応する仮想オブジェクトに対して、特定の配置で表示されることが望ましい他の仮想オブジェクトのことを、関連仮想オブジェクトとも記載する。
【0026】
さらにマーカは、配置情報も含む。配置情報とは、マーカに含まれる識別情報に対応する仮想オブジェクトに対して、関連仮想オブジェクトをどのような位置関係で配置するのかを示す情報である。この情報は、マーカの識別情報に対応する仮想オブジェクトに対する、関連仮想オブジェクトの表示位置の情報と表示方向の情報とを含む。表示位置の情報は、対応識別情報に対応する仮想オブジェクトの重心に対する、関連仮想オブジェクトの重心の相対的な位置を示す。また、表示方向の情報は、マーカに含まれる識別情報に対応する仮想オブジェクトの表示方向に対する、関連仮想オブジェクトの相対的な表示方向を示す。なお、この配置情報は、関連識別情報にそれぞれ1対1で対応している。
【0027】
このように構成されるマーカに対して、本実施形態のデジタルカメラ100は、以下のように構成される。すなわち、あるマーカと、そのマーカに含まれる関連識別情報と同じ識別情報を対応識別情報として持つ他のマーカとが検出された場合、デジタルカメラ100は、それぞれのマーカに対応する仮想オブジェクトを、配置情報に基づき特定の配置で表示する。
【0028】
上述のTVとTVボードの例で言えば、TVボードのマーカ203には、TVボードの仮想オブジェクトを示す対応識別情報の他に、二つの情報が二次元コード化されている。一つはTVボードに組み合わせて特定の配置で表示することが好ましいマーカ202のTVの仮想オブジェクトを示す識別情報が、関連識別情報として二次元コード化されている。もう一つは、TVボードの仮想オブジェクトに対して、TVの仮想オブジェクトをどのように配置するかを示す配置情報が二次元コード化されている。なお、この例では、マーカ202およびマーカ201には関連識別情報や配置情報は含まれていない。そして、図2(c)のようにマーカ202〜203が並べて配置された場合、それぞれの仮想オブジェクトは、マーカ203から得られる関連識別情報とマーカ202から得られる対応識別情報とに基づき、特定の配置で表示されることが好ましいと判断される。それぞれのマーカの仮想オブジェクトは、パターン認識により得られた位置情報および姿勢情報に加えて、配置情報にも基づき、図2(e)のように表示される。この際、マーカ202のTVの仮想オブジェクトは、マーカ203のTVボードの仮想オブジェクトの重心位置をベースに、マーカ201に含まれる配置情報が示す位置と向きに基づき加工されて表示される。すなわち、マーカ202の位置情報および姿勢情報は用いられない。以降の説明では、このマーカ203の仮想オブジェクトのように、他のマーカの仮想オブジェクトと組み合わせて表示される際にベースとなる仮想オブジェクトを、関連仮想オブジェクトに対してベース仮想オブジェクトとも呼ぶ。
【0029】
本実施形態では以上のように、関連識別情報及び配置情報を導入することにより、特定の組み合わせの仮想オブジェクトを適切な配置で表示することができる。
【0030】
次に、本実施形態における拡張現実空間を実現する際の処理について図3を用いて説明する。図3は、拡張現実を実現する際のデジタルカメラ100の動作を示すフローチャートである。このフローチャートに示す各処理は、制御部101が、不揮発性メモリ103に保存されているプログラムを読み出し、作業用メモリ104に展開してプログラムに従いデジタルカメラ100の各部を制御することで実現される。
【0031】
また、このフローチャートに示す処理は、デジタルカメラ100が撮影モードとなることに応じて開始される。
【0032】
まず、ステップS301にて、制御部101は、撮像部102を用いて撮像動作を行い、画像データを取得する。
【0033】
続くステップS302では、制御部101は、ステップS301にて取得された画像データを、スルー画像として表示部105に表示する。
【0034】
次に、ステップS303では、制御部101は、スルー画像から一または複数のマーカを検出する処理を行う。具体的には、制御部101はスルー画像から、マーカに印刷されている検出用パターンをパターン認識により検出する。
【0035】
ステップS304では、制御部101は、ステップS303においてマーカを検出できたか否かを判断する。制御部101がマーカを検出できなかったと判断した場合、処理はステップS313に進む。一方、ステップS303において制御部101がマーカを検出できたと判断した場合、処理はステップS305に進む。
【0036】
ステップS305では、制御部101は、ステップ303にて検出された一または複数のマーカのそれぞれについて、パターン認識の結果から、それぞれのマーカの三次元位置を示す位置情報、及びそれぞれのマーカの姿勢を示す姿勢情報を算出する。
【0037】
次に、ステップS306にて、制御部101は、ステップ303にて検出された一または複数のマーカから、各マーカに二次元コード化された対応識別情報、関連識別情報、及び配置情報を取得する。
【0038】
次に、ステップS307にて、制御部101は、ステップS306にて一または複数のマーカから取得された、それぞれの対応識別情報に対応する仮想オブジェクトを取得する。具体的には、制御部101は、記録媒体107に記録されている仮想オブジェクトテーブルと、ステップS306にて取得された対応識別情報とに基づき、該対応識別情報に対応する仮想オブジェクトを読み出す。
【0039】
次に、ステップS308にて、制御部101は、ステップS307にて取得された仮想オブジェクトのうち、二つ以上を組み合わせて特定の配置で表示されることが好ましい仮想オブジェクトの組み合わせがあるか否かを判断する。具体的には、制御部101は、ステップS306にてあるマーカから取得された関連識別情報と、他のマーカから取得された対応識別情報とが、同じ情報であるか否かを判断する。前述したように、関連識別情報とは、該関連識別情報を含むマーカに対応する仮想オブジェクトと組み合わせて特定の配置で表示することが好ましい、他の仮想オブジェクトの対応識別情報を示す情報である。つまり、あるマーカの関連識別情報と他のマーカの対応識別情報とが同じ情報であることは、前者のマーカの仮想オブジェクトと後者の他のマーカの仮想オブジェクトとを特定の配置で表示することが好ましい組み合わせであると判断されることを示す。
【0040】
言い換えれば、あるマーカの関連識別情報と他のマーカの対応識別情報とが同じ情報であることは、前者のマーカの仮想オブジェクトと後者のマーカの仮想オブジェクトが、ベース仮想オブジェクトとそれに関連する関連仮想オブジェクトの関係にあることを示す。
一方、あるマーカの関連識別情報と他のマーカの対応識別情報とが同じ情報でないことは、前者のマーカの仮想オブジェクトと後者の他のマーカの仮想オブジェクトとを特定の配置で表示する必要がない組み合わせであると判断されることを示す。
【0041】
まず、ステップS308にて、制御部101が、ステップS307にて取得された仮想オブジェクトのうち、二つ以上を組み合わせて特定の配置で表示されることが好ましい仮想オブジェクトの組み合わせがないと判断した場合を考える。この場合、処理はステップS309に進む。
【0042】
ステップS309では、制御部101は、ステップS305にて、それぞれのマーカのパターン認識結果から取得された位置情報および姿勢情報に基づき、それぞれのマーカの仮想オブジェクトを加工する。
【0043】
次に、ステップS310では、制御部101は、ステップS309にて加工された仮想オブジェクトを、それぞれの位置情報に基づき、それぞれのマーカが検出されたスルー画像上の位置に重畳して表示する。この際、制御部101は、それぞれの位置情報に基づき、奥に配置されたマーカの仮想オブジェクトから順に重畳して表示していくことで、仮想オブジェクト同士の前後関係が自然に表示されるよう制御する。その後、処理はステップS313に進む。
【0044】
ステップS313では、制御部101は、撮影モードを終了する指示を受け付けたか否かを判断する。制御部101が、撮影モードを終了する指示を受け付けたと判断した場合、本フローチャートの処理を終了する。一方、制御部101が、撮影モードを終了する指示を受け付けていないと判断した場合、処理はステップS301に戻り、本フローチャートの処理を繰り返す。つまり、撮影モードの間のスルー画像は、本フローチャートが繰り返される毎に更新される。同様に、仮想オブジェクトに関しても、本フローチャートを繰り返す毎に、新たな表示に更新される。
【0045】
以上が、ステップS308にて特定の配置で表示することが好ましい仮想オブジェクトの組み合わせがないと判断された場合の処理である。
【0046】
次に、ステップS308にて、制御部101が、ステップS307にて取得された仮想オブジェクトのうち、二つ以上を組み合わせて特定の配置で表示されることが好ましい仮想オブジェクトの組み合わせがあると判断した場合を考える。この場合、処理はステップS311に進む。
【0047】
ステップS311では、制御部101は、仮想オブジェクトを加工する。本ステップでは、特定の配置で表示されることが好ましいと判断された組み合わせの仮想オブジェクトのうち、関連仮想オブジェクトは、ベース仮想オブジェクトのマーカの位置情報および姿勢情報、および配置情報に基づき加工される。すなわち、関連仮想オブジェクトのマーカの位置情報および姿勢情報は用いられない。ベース仮想オブジェクトは、特定の配置で表示されることが好ましいと判断されなかった仮想オブジェクトと同様に、ステップS309と同様の処理にて加工される。
【0048】
次に、ステップS312にて、制御部101は、ステップS311にて加工された仮想オブジェクトを、スルー画像上に重畳して表示する。本ステップの処理では、ステップS308にて特定の配置で表示される必要が無いと判断された仮想オブジェクトは、ステップS310と同様に、それぞれの位置情報に基づき、それぞれのマーカが検出されたスルー画像上の位置に重畳して表示される。一方、ステップS308にて特定の配置で表示されることが好ましいと判断された仮想オブジェクトのうち、関連仮想オブジェクトは、ベース仮想オブジェクトの位置情報および姿勢情報と、配置情報とに基づき、特定の配置でスルー画像上に重畳して表示される。ベース仮想オブジェクトは、他の仮想オブジェクトと同様に、対応するマーカの位置情報および姿勢情報に基づき表示される。上述の図2(c)の例で言えば、ベース仮想オブジェクトに対応するマーカ203の位置情報および姿勢情報を基準として、配置情報が示す分だけずれた位置に、配置情報が示す分だけずれた向きで、関連仮想オブジェクトであるTVの仮想オブジェクトを表示する。
【0049】
以上が、ステップS308にて特定の配置で表示することが好ましい仮想オブジェクトの組み合わせがあると判断された場合の処理である。その後、処理はステップS313に進む。以降の処理は前述の通りである。
【0050】
以上、本実施形態の、拡張現実空間を実現する際のデジタルカメラ100の動作について説明した。上述のように本実施形態では、デジタルカメラ100にて、特定の組み合わせの仮想オブジェクトを適切な配置で表示することができるよう構成した。これにより、例えばTVとTVボードを部屋に配置するシミュレーションのように、従来の拡張現実空間の実現方法ではユーザの意図に沿った配置で仮想オブジェクトを表示することが困難であった場合でも、適切な拡張現実空間を実現することができる。
【0051】
なお、本実施形態のデジタルカメラ100は、本発明の画像処理装置の一例であり、本発明はデジタルカメラのみならず、撮像部を持たないPCや携帯電話等の他のデバイスでも適用可能である。この場合、画像処理装置がマーカの含まれる画像を取得し、これを解析して表示することで実現され得る。
【0052】
[第2の実施形態]
第1の実施形態では、仮想オブジェクトを取得する処理を、デジタルカメラ100にて行っていた。この場合、デジタルカメラは、仮想オブジェクトテーブルと、仮想オブジェクトとを記録媒体に保持していなければならない。つまり、記録媒体に記録されていない新たな仮想オブジェクトを用いて拡張現実空間を実現するためには、外部から新たな仮想オブジェクトと、該仮想オブジェクトに対応づけられている識別情報を記録媒体に追記する必要があった。例えば、第1の実施形態のように、家具の例において、新たな家具が発売された場合を考える。この場合、新たな家具を用いた拡張現実空間を実現するためには、デジタルカメラ100のユーザは新たな家具に対応する仮想オブジェクトと、該仮想オブジェクトに対応づけられる識別情報を記録媒体に追記する必要があった。この作業は、例えば新たな家具が発売される度に必要となり、ユーザにとって利便性に欠ける。
【0053】
そこで、本実施形態では、第1の実施形態ではデジタルカメラ100で実行されていた識別情報に対応する仮想オブジェクトを読み出す処理や、該仮想オブジェクトに対して加工する処理が、サーバにて実行されるよう構成した。この拡張現実システムでは、サーバは予め、仮想オブジェクトテーブルと仮想オブジェクトとを保持している。サーバは、デジタルカメラ100から識別情報を受信することに応じて、該識別情報に基づく仮想オブジェクトをデジタルカメラ100に送信する。そして、デジタルカメラ100は、サーバから受信した仮想オブジェクトを用いて拡張現実空間を実現する。このように、仮想オブジェクトや仮想オブジェクトテーブルを有する装置と、拡張現実空間を実現する装置とを分離した場合、例えばサーバの管理はサービス提供者が行い、デジタルカメラによるサービスはユーザが利用するといった構成が容易に実現できる。つまり、サービス提供者が必要に応じて新たな仮想オブジェクトやその識別情報を随時追加することで、ユーザの手間を必要とすることなく常に最新の仮想オブジェクトを用いたサービスを利用することができる。第1の実施形態の家具の例で言えば、新たな家具が発売された場合、管理者が随時新たな家具の仮想オブジェクトと、対応する識別情報を用意することで、ユーザの手間を必要とすることなく、常に最新の家具を用いた拡張現実のサービスを受けることができる。
【0054】
本実施形態は、第1の実施形態と共通する部分が多いため、共通部分は説明を省略し、本実施形態に特有の部分を中心に説明する。
【0055】
まず、本実施形態のサーバと協働して拡張現実空間を実現するための画像処理装置の一例であるデジタルカメラ、および該デジタルカメラと協働して拡張現実空間を実現するための情報処理装置の一例であるサーバについて図4を用いて説明する。図4は、デジタルカメラ100およびサーバ400のブロック図である。なお、第1の実施形態と同じ構成については同じ番号を付している。
【0056】
図4のデジタルカメラ100において、通信部410は、外部装置と通信するための接続部である。通信部410は、デジタルカメラ100が撮影したマーカから得た対応識別情報、関連識別情報および配置情報を、サーバ400に送信する際に用いられる。また、通信部410は、マーカをパターン認識した結果から得られる位置情報及び姿勢情報も、サーバ400に送信する際にも用いられる。さらに、通信部410は、サーバ400から仮想オブジェクトを受信する際にも用いられる。なお、サーバ400との通信は、有線で行ってもよいし、無線で行ってもよい。
【0057】
次に、図4のサーバ400において、制御部401は、入力された信号や、後述のプログラムに従ってサーバ400の各部を制御する。なお、サーバ400の制御は一つのハードウェアが行ってもよいし、複数のハードウェアが処理を分担することで、装置全体の制御を行ってもよい。
【0058】
通信部402は、デジタルカメラ100から各種の情報を受信する際に用いられる。また、デジタルカメラ100から受信した情報に応じた仮想オブジェクトをデジタルカメラ100に送信する際にも用いられる。
【0059】
不揮発性メモリ403は、サーバ400の各部を制御するためのプログラム(ファームウェア)や各種の設定情報を記憶している。後述する各フローチャートに示す処理を制御部401が制御するためのプログラムも、この不揮発性メモリ403に記録されている。
【0060】
作業用メモリ404は、不揮発性メモリ403に保存されているプログラムが、展開されるためのメモリである。作業用メモリ404は制御部401のワークエリアとして使用される。
【0061】
記録媒体405には、拡張現実空間の実現のための仮想オブジェクトと該仮想オブジェクトを示す識別情報との対応関係を示す情報が記録されている。この情報は、例えばテーブルの形で、仮想オブジェクトテーブルとして記録される。本実施形態における仮想オブジェクトは、例えば家具や家電等の三次元画像モデルである。この三次元画像モデルも、記録媒体405に記録されている。本実施形態のサーバ400は、デジタルカメラ100から送信された識別情報を、仮想オブジェクトテーブルに照らし合わせることにより、識別情報が示す仮想オブジェクトを取得する。取得された仮想オブジェクトは通信部402を介してデジタルカメラ100に送信され、デジタルカメラ100にて該仮想オブジェクトを用いた拡張現実空間が実現される。なお、記録媒体405は、サーバ400に着脱可能なよう構成してもよいし、サーバ400に内蔵されていてもよい。すなわち、サーバ400は少なくとも記録媒体405にアクセスする手段を有していればよい。
【0062】
以上が、本実施形態におけるデジタルカメラおよびサーバの構成である。
【0063】
次に、図5を用いて、拡張現実を実現する際のデジタルカメラ100の動作について説明する。
【0064】
図5は、拡張現実空間を実現する際のデジタルカメラ100の動作を示すフローチャートである。このフローチャートに示す各処理は、制御部101が、不揮発性メモリ103に保存されているプログラムを読み出し、作業用メモリ104に展開してプログラムに従いデジタルカメラ100の各部を制御することで実現される。
【0065】
また、このフローチャートに示す処理は、デジタルカメラ100が撮影モードとなることに応じて開始される。
【0066】
まずステップS501〜ステップS506については、図3のステップS301〜ステップS306と同様の処理を行う。
【0067】
次に、ステップS507にて、制御部101は、ステップS505にて取得した位置情報および姿勢情報と、ステップS506にて取得した対応識別情報、関連識別情報および配置情報をサーバ400に送信する。なお、各情報は、ステップS503にて検出されたマーカごとに区別可能な形で送信される。
【0068】
次いで、ステップS508にて、制御部101は、サーバ400から送信される仮想オブジェクトの受信処理を行う。ここで受信される仮想オブジェクトは、ステップS507にてサーバ400に送信した識別情報に対応する仮想オブジェクトに対して、加工処理が施された仮想オブジェクトである。なお、この加工処理は、ステップS507にてサーバ400に送信した位置情報、姿勢情報、関連識別情報、配置情報に基づき、サーバ400にて実行される。また、特定の配置で表示することが好ましいと判断された仮想オブジェクトと、それ以外の仮想オブジェクトとは、区別可能な形で受信される。
【0069】
ステップS509にて、制御部101は、ステップS508の受信処理が完了したか否かを判断する。すなわち、ステップS507にてサーバ400に送信した各識別情報に対応する加工処理済みの仮想オブジェクトを全て受信したか否かを判断する。制御部101が、まだ仮想オブジェクトの受信が完了していないと判断した場合、処理はステップS508に戻り、受信処理の完了を待つ。一方、制御部101が、受信処理が完了したと判断した場合、処理はステップS510に進む。
【0070】
ステップS510では、制御部101は、サーバ400から受信した特定の配置で表示することが好ましいと判断された仮想オブジェクトを、ステップS505にて取得した位置情報および配置情報に基づき、スルー画像上に重畳して表示する。また、制御部101は、サーバ400から受信した特定の配置で表示する必要がないと判断された仮想オブジェクトを、ステップS505にて取得した位置情報に基づき、スルー画像上に重畳して表示する。
【0071】
その後、処理はステップS511に進む。ステップS511では、図3のステップS313と同様の処理が実行される。
【0072】
以上が、サーバ400と協働して拡張現実を実現する際のデジタルカメラ100の動作の説明である。
【0073】
次に、上述したデジタルカメラ100と協働して拡張現実空間を実現する際のサーバ400の動作について、図6を用いて説明する。図6は、デジタルカメラ100と協働して拡張現実空間を実現する際のサーバ400の動作を示すフローチャートである。このフローチャートに示す各処理は、制御部401が、不揮発性メモリ403に保存されているプログラムを読み出し、作業用メモリ404に展開してプログラムに従いサーバ400の各部を制御することで実現される。
【0074】
また、このフローチャートに示す処理は、サーバ400の電源がONとなることに応じて開始される。
【0075】
まず、ステップS601にて、制御部401は、デジタルカメラ100が検出した一つまたは複数のマーカから得られた、対応識別情報、関連識別情報、配置情報、位置情報、および姿勢情報の受信処理を行う。なお、各情報は、あるマーカから得られた各情報と他のマーカから得られた各情報とが区別できる形で受信される。
【0076】
次に、ステップS602にて制御部401は、デジタルカメラ100にて検出された全てのマーカの対応識別情報、関連識別情報、配置情報、位置情報、および姿勢情報を受信完了したか否かを判断する。制御部401が、上記の情報を受信完了していないと判断した場合、ステップS601に戻り、デジタルカメラ100からの上記の情報の受信完了を待つ。一方、制御部401が、上記の情報を受信できたと判断した場合、処理はステップS603に進む。
【0077】
ステップS603では、制御部401は、記録媒体405に記録されている仮想オブジェクトテーブルと、ステップS601にて受信された対応識別情報とに基づき、該対応識別情報に対応する仮想オブジェクトを、記録媒体405から読み出す。
【0078】
次に、ステップS604〜ステップS606では、図3のステップS308〜ステップS309、ステップS311と同様の処理がサーバ400にて実行される。ステップS605またはステップS606にて、仮想オブジェクトに対する加工処理が完了すると、処理はステップS607に進む。
【0079】
ステップS607では、制御部401は、ステップS605またはステップS606にて加工された仮想オブジェクトを、通信部402を介してデジタルカメラ100へ送信する。この際、特定の配置で表示することが好ましいと判断された仮想オブジェクトと、それ以外の仮想オブジェクトとは、区別可能な形で送信される。
【0080】
その後、ステップS608にて、制御部401は本処理を終了する指示を受け付けたか否かを判断する。制御部401が、本処理を終了する指示を受け付けたと判断した場合、本処理を終了する。制御部401が、本処理を終了する指示を受け付けていないと判断した場合、処理はステップS601に戻り、本フローチャートの処理を繰り返す。
【0081】
以上が、デジタルカメラ100と協働して拡張現実を実現する際のサーバ400の動作の説明である。
【0082】
本実施形態では、上述したように、サーバで仮想オブジェクトを保持するよう構成した。これにより、仮想オブジェクトおよび識別情報の管理者と、デジタルカメラ100のユーザとが異なるよう構成することが容易となる。つまり、例えば、サーバの管理はサービス提供者が行い、デジタルカメラによるサービスの利用はユーザが受ける構成にすることが可能となる。これにより、サービス提供者が必要に応じて新たな仮想オブジェクトやその識別情報を随時追加することで、ユーザの手間を必要とすることなく常に最新の仮想オブジェクトを用いたサービスを利用することができる。したがって、本実施形態のように拡張現実システムを構成することにより、ユーザにとってより利便性の高いサービスを提供することが可能となる。
【0083】
[第3の実施形態]
前述の実施形態では、デジタルカメラ100にて検出されたマーカに対応する仮想オブジェクトのみを表示していた。これに対し、本実施形態では、検出されたマーカに対応する仮想オブジェクト以外にも、該検出されたマーカに対応する仮想オブジェクトと併せて表示されることが多い仮想オブジェクトを表示することができるよう構成する。例えばTVボードのマーカを配置すれば、共に配置されることの多いTVのマーカを配置せずとも、TVボードの仮想オブジェクトのみならずTVの仮想オブジェクトも表示することができるよう構成する。
【0084】
以下、上述の本実施形態における拡張現実システムについて述べる。
【0085】
本実施形態は第1および第2の実施形態と共通する部分が多いため、共通部分は説明を省略し、本実施形態に特有の部分を中心に説明する。
【0086】
本実施形態における拡張現実システムは、第2の実施形態におけるデジタルカメラ100およびサーバ400からなるシステムと同様である。なお、本実施形態におけるサーバ400の記録媒体405には、上述の拡張現実システムを実現するための推奨仮想オブジェクトテーブルが記録されている。なお、デジタルカメラ100が複数ある場合、推奨仮想オブジェクトテーブルは、それぞれのカメラに対して個別のテーブルであってもよいし、共通のテーブルであってもよい。本実施形態では共通のテーブルである場合に関して説明する。
【0087】
図9は、上述の推奨仮想オブジェクトテーブルの概念図を示す。推奨仮想オブジェクトテーブルでは、記録媒体405に記録されている識別情報毎に、ある識別情報の仮想オブジェクトとは異なる他の仮想オブジェクトの識別情報が、推奨仮想オブジェクトの識別情報として対応づけられている。これにより、ある仮想オブジェクトと、その仮想オブジェクトと共に表示することを推奨する他の仮想オブジェクトとが対応づけられている。例えば、図9に示される推奨仮想オブジェクトテーブルにて、識別情報が0003の仮想オブジェクトには、識別情報が0006の仮想オブジェクトが、推奨仮想オブジェクトとして対応づけられている。
【0088】
この推奨仮想オブジェクトの識別情報は、対応づけられている識別情報の仮想オブジェクトと共に同一画面上に表示される頻度が高いと判断された仮想オブジェクトの識別情報である。例えば、図9の推奨仮想オブジェクトテーブルにおいて、識別情報が0003の仮想オブジェクトは、識別情報が0006の仮想オブジェクトと共に表示される頻度が高いと判断されている。他の仮想オブジェクトと共に表示される頻度は、デジタルカメラ100から受信した識別情報毎に、他の各識別情報が共に受信された回数を記録することによって決定される。
【0089】
すなわち、サーバ400は、デジタルカメラ100から受信した識別情報が複数であった場合、識別情報毎に、他の各識別情報が共に受信された回数を記録する。これにより、サーバ400は、ある識別情報に対応する仮想オブジェクトと、他の各識別情報に対応する仮想オブジェクトとが同一画面上に表示される頻度をカウントしている。
【0090】
そして、識別情報毎に、共に受信された回数の最も多い識別情報が、推奨仮想オブジェクトを示す識別情報として対応づけられる。これにより、識別情報毎に、ある識別情報に対応する仮想オブジェクトに対して、同一画面上に表示される回数が最も多い、他の仮想オブジェクトが推奨仮想オブジェクトとして対応づけられる。
【0091】
以下、拡張現実を実現する際の本実施形態の拡張現実システムの動作について図7および図8を用いて説明する。図7は、拡張現実を実現する際のデジタルカメラ100の動作を示すフローチャートである。このフローチャートに示す各処理は、制御部101が、不揮発性メモリ103に保存されているプログラムを読み出し、作業用メモリ104に展開してプログラムに従いデジタルカメラ100の各部を制御することで実現される。
【0092】
また、このフローチャートに示す処理は、デジタルカメラ100が撮影モードとなることに応じて開始される。
【0093】
ステップS701〜ステップS709は、図5のステップS501〜ステップS509と同様の処理が実行される。
【0094】
ステップS710にて、制御部101は、ステップS708にて受信された仮想オブジェクトのうち、推奨仮想オブジェクト以外の仮想オブジェクトを、スルー画像上に重畳して表示する。この処理は図3のステップS312の処理と同様の処理である。
【0095】
次に、ステップS711にて、制御部101は、ステップS708にて受信された仮想オブジェクトのうち、推奨仮想オブジェクトを、スルー画像に重畳して表示される推奨仮想オブジェクト表示領域に表示する。なお、推奨仮想オブジェクト表示領域は、例えば図10のように、表示部105の表示領域中の右上の領域に、スルー画像に重畳して設けられる。
【0096】
次に、ステップS712では、制御部101は、ステップS711にて表示される推奨仮想オブジェクトを、拡張現実空間上に表示するか否かを選択する指示を受け付ける。それに並行して、推奨仮想オブジェクトを拡張現実空間上に配置するか否かの選択を促すメッセージを、表示部105に表示する。例えば「推奨仮想オブジェクトを配置することができます。配置しますか?」といったメッセージを、「はい」・「いいえ」という選択可能なボタンとともに表示する。ユーザが「はい」を選択した場合、推奨仮想オブジェクトを拡張現実空間上に配置することが選択されたと判断し、処理はステップS713に進む。ユーザが「いいえ」を選択した場合、推奨仮想オブジェクトを拡張現実空間上に配置しないことが選択されたと判断し、処理はステップS714に進む。
【0097】
ステップS713では、制御部101は、ステップS712にて配置することが選択されたと判断された推奨仮想オブジェクトを、拡張現実空間上に表示する。なお、本実施形態では、推奨仮想オブジェクトが既に表示されている仮想オブジェクトと組み合わせて特定の配置で表示することが好ましい仮想オブジェクトである場合は、該推奨仮想オブジェクトは特定の配置で表示される。そうでない場合は、該推奨仮想オブジェクトはスルー画像の中央に表示される。この場合、該推奨仮想オブジェクトの表示位置、サイズ、姿勢等は、操作部106を介して後から自由に変更できる。
【0098】
ステップS714では、図3のステップS314と同様の処理が実行される。
【0099】
以上が、サーバ400と協働して拡張現実を実現する際の、本実施形態のデジタルカメラ100の動作の説明である。
【0100】
次に、上述したデジタルカメラ100と協働して拡張現実空間を実現する際の、本実施形態のサーバ400の動作について、図8を用いて説明する。図8は、デジタルカメラ100と協働して拡張現実空間を実現する際のサーバ400の動作を示すフローチャートである。このフローチャートに示す各処理は、制御部401が、不揮発性メモリ403に保存されているプログラムを読み出し、作業用メモリ404に展開してプログラムに従いサーバ400の各部を制御することで実現される。
【0101】
また、このフローチャートに示す処理は、サーバ400の電源がONとなることに応じて開始される。
【0102】
ステップS801〜ステップS803では、図6のステップS601〜ステップS603と同様の処理が実行される。
【0103】
次にステップS804にて、制御部401は、ステップS603にて取得された仮想オブジェクトのそれぞれに関して、推奨仮想オブジェクトを取得する。具体的には、ステップS801にて受信された対応識別情報と、記録媒体405に記録されている推奨仮想オブジェクトテーブルとに基づき、各識別情報に対応づけられている推奨仮想オブジェクトを、記録媒体405から読み出す。なお、本ステップでは、ステップS803にて既に読み出されている仮想オブジェクトは読み出さない。
【0104】
次に、ステップS805では、制御部401は、ステップS801にてデジタルカメラ100から受信した対応識別情報が複数であった場合、対応識別情報毎に、共に受信された他の各対応識別情報の受信回数をカウントする。すなわち、制御部401は、対応識別情報を示すマーカが、デジタルカメラ100にて共に撮影された回数を各々の組み合わせ毎にカウントする。カウントの結果、識別情報ごとに、共に受信されることが最も多いと判断された対応識別情報を推奨仮想オブジェクトの識別情報として対応付け、推奨仮想オブジェクトテーブルに記録する。
【0105】
ステップS806では、制御部401は、ステップS803およびステップS804にて取得された仮想オブジェクトのうち、二つ以上を組み合わせて特定の配置で表示されることが好ましい特定の組み合わせがあるか否かを判断する。制御部401が、特定の組み合わせがないと判断した場合、処理はステップS807に進む。ステップS807では、制御部401は、ステップS801にて受信した対応識別情報ごとの位置情報および姿勢情報に基づき、それぞれの対応識別情報に対応する仮想オブジェクトを加工する。仮想オブジェクトに対する加工処理が完了すると、処理はステップS809に進む。
【0106】
一方、ステップS806にて、制御部401が、特定の組み合わせがあると判断した場合、処理はステップS808に進む。
【0107】
ステップS808では、制御部401は、仮想オブジェクトを加工する。本ステップでは、ステップS806にて特定の配置で表示されることが好ましいと判断された組み合わせの仮想オブジェクトは、それぞれのマーカの位置情報および姿勢情報に加え、ステップS801にて取得された配置情報に基づき加工される。また、それ以外の仮想オブジェクトは、ステップS807と同様に加工される。なお、特定の組み合わせがないと判断された推奨仮想オブジェクトは、対応する位置情報および姿勢情報がないため、加工されない。
仮想オブジェクトに対する加工処理が完了すると、処理はステップS809に進む。
【0108】
ステップS809では、制御部401は、ステップS807またはステップS808にて加工された仮想オブジェクトを、通信部402を介してデジタルカメラ100へ送信する。なお、送信される仮想オブジェクトのうち、特定の配置で表示することが好ましい組み合わせの仮想オブジェクトとそれ以外の仮想オブジェクトとは、区別可能な形で送信される。また、推奨仮想オブジェクトとそれ以外の仮想オブジェクトとは、区別可能な形で送信される。
【0109】
その後、ステップS810にて、図6のステップS608と同様の処理が実行される。
【0110】
以上が、デジタルカメラ100と協働して拡張現実を実現する際のサーバ400の動作の説明である。
【0111】
上述したように、本実施形態では、ユーザが設置したマーカに対応する仮想オブジェクトだけでなく、該仮想オブジェクトと共に表示されることが多いと判断される仮想オブジェクトも、推奨仮想オブジェクトとして表示されるよう構成した。これにより、より一層利便性の高い拡張現実空間を実現することが可能となる。
【0112】
[第4の実施形態]
上述の実施形態では、スルー画像上に捉えた全てのマーカに対して、それぞれ組み合わせの判断を行っていた。しかしながら、ユーザが二つのマーカを離して配置した場合、ユーザはそれら二つのマーカの仮想オブジェクトを組み合わせて表示する意思がない可能性が高いと考えられる。そこで、本実施形態では、ユーザのマーカの配置に応じて、組み合わせて表示するか否かを判断する構成について述べる。
【0113】
本実施形態は、第1の実施形態と共通する部分が多いため、共通部分は説明を省略し、本実施形態に特有の部分を中心に説明する。
【0114】
図11は、拡張現実空間を実現する際のデジタルカメラ100の動作を示すフローチャートである。このフローチャートに示す各処理は、制御部101が、不揮発性メモリ103に保存されているプログラムを読み出し、作業用メモリ104に展開してプログラムに従いデジタルカメラ100の各部を制御することで実現される。
【0115】
また、このフローチャートに示す処理は、デジタルカメラ100が撮影モードとなることに応じて開始される。
【0116】
まず、ステップS1101〜ステップS1110では、図3のステップS301〜ステップS310と同様の処理が実行される。
【0117】
ステップS308にて、制御部101が、特定の配置で表示することが好ましい組み合わせがあると判断した場合、処理はステップS1111に進む。
【0118】
ステップS1111では、制御部101は、組み合わせを成す仮想オブジェクトに対応するそれぞれのマーカが、互いに一定距離以内の位置で検出されたか否かを判断する。具体的には、検出されたマーカの位置情報同士を比較し、該位置情報の示す位置が互いに一定の距離以内であるか否かを判断する。制御部101が、それぞれのマーカが互いに一定距離以内の位置で検出されていないと判断した場合、処理はステップS1109に進む。すなわち、それぞれのマーカに対応する仮想オブジェクトは、特定の配置で表示しない。
【0119】
一方、制御部101が、それぞれのマーカが互いに一定距離以内の位置で検出されたと判断した場合、処理はステップS1112に進む。ステップS1112〜ステップS1114では、図3のステップS311〜ステップS313と同様の処理が実行される。すなわち、それぞれのマーカに対応する仮想オブジェクトは、特定の配置で表示される。
【0120】
以上のように、本実施形態では、複数の仮想オブジェクトを特定の配置で表示するか否かの判断に、検出されたマーカの位置情報を用いた。これにより、ユーザにとってより直感的な操作で拡張現実空間を実現することができる。
【0121】
[その他の実施形態]
上述の実施形態では、複数の仮想オブジェクトが特定の組み合わせであると判断した場合は、それぞれの仮想オブジェクトを常に特定の配置で表示するよう制御していた。これについては、例えばユーザが特定の配置で表示するか否かを選択可能なよう構成してもよい。このように構成することで、よりユーザの意図に沿った拡張現実空間を実現することができる。
【0122】
また、上述の実施形態では、マーカが検出されたタイミングに関わらず、それぞれ組み合わせの判断を行っていた。しかしながら、二つのマーカの検出時刻の差が一定時間以上であった場合は、ユーザはそれら二つのマーカの仮想オブジェクトを組み合わせて表示する意思がない可能性が高いと考えられる。したがって、例えば、検出されたマーカごとに一定時間をカウントし、あるマーカに対して組み合わせの判断を行う場合、該マーカが検出されてから一定時間以上経過した後に検出された他のマーカは判断の対象としないよう構成してもよい。なお、マーカごとの一定時間のカウントは、一度検出されたら一定時間のカウントが終わるまで、カウントを継続するよう構成してもよいし、マーカが連続して検出されなかったと判断されることに応じてカウントを終了するよう構成してもよい。このように構成することで、よりユーザの意図に沿った拡張現実空間の実現が可能となる。
【0123】
また、上述の実施形態では、特定の配置で仮想オブジェクトを表示する際に、ベース仮想オブジェクトのマーカの位置情報に基づき表示していた。これに対して、ベース仮想オブジェクトのマーカの位置情報に加えて、関連仮想オブジェクトのマーカの位置情報も用いてもよい。例えば、ベース仮想オブジェクトのマーカの位置情報が示す位置と、関連仮想オブジェクトのマーカの位置情報が示す位置との間に、それぞれの仮想オブジェクトを表示してもよい。この場合、ベース仮想オブジェクトのマーカの位置情報が示す位置と、関連仮想オブジェクトのマーカの位置情報が示す位置との中間になる位置に表示するよう構成してもよいし、所定の基準に応じてどちらかの位置に寄せて表示するよう構成してもよい。
【0124】
また、上述の第4の実施形態では、組み合わせの判断を行う際に、マーカの検出位置を用いていた。これについては、例えば検出されたマーカの姿勢情報を用いてもよい。例えば、マーカの配置が同方向を示さなければ、対応する仮想オブジェクトを特定の配置で表示しないよう構成する。あるいは組み合わせの判断を行う際に、マーカの位置情報に加えて姿勢情報も用いるよう構成してもよい。例えば、マーカの配置が、隣接して対面する向きである場合に、対応する仮想オブジェクトを特定の配置で表示するよう構成する。または、マーカの配置が、隣接して互いに背向する向きである場合に、対応する仮想オブジェクトを特定の配置で表示するよう構成する。このように構成することにより、より柔軟に拡張現実空間を実現することができる。
【0125】
また、関連識別情報は各々のマーカについて一つだけであってもよいし複数であってもよい。なお、複数の関連識別情報を持つマーカが、それぞれの関連識別情報と同じ識別情報を対応識別情報として持つマーカと共に検出された場合、特定の配置で表示することが好ましい関連仮想オブジェクトが複数存在することになる。このような場合、これら複数の関連仮想オブジェクトのうち、どの仮想オブジェクトと組み合わせて表示するか選択する指示を受け付ける手段を有するよう構成してもよい。これは受け付け手段の一例である。なお、ある一つの組み合わせで表示することをユーザが選択した場合、他の選択されなかった組み合わせの関連仮想オブジェクトは表示されないよう構成してもよい。
【0126】
また、スルー画像上に表示される仮想オブジェクトの表示位置、サイズ、姿勢等は、スルー画像上に表示された後からも、ユーザの指示により自由に変更することができるよう構成してもよい。その場合、変更した仮想オブジェクトの識別情報毎に変更量を保持しておき、該仮想オブジェクトの表示が行われる度に、保持されている変更量を反映して表示するよう構成される。このように構成することで、よりユーザの意図に沿った拡張現実空間の実現が可能となる。
【0127】
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
【技術分野】
【0001】
本発明は、拡張現実空間を実現することができる画像処理装置および情報処理装置に関する。
【背景技術】
【0002】
近年、拡張現実(AR:Augmented Reality)技術を利用した様々なサービスが提供されている。例えば、AR技術を用いると、現実の世界を撮像した画像上に現実の世界の位置に対応した情報を合成表示することができる。この技術を用いたサービスとして、家具・家電等があたかも実際に自室に置かれているかのような画像を閲覧することができるサービスがある。例えば、ベッドやソファ、冷蔵庫や洗濯機などの比較的サイズの大きい家具・家電等は、実物を実際に部屋に配置して、配置位置や配置した際の雰囲気などを気軽に確認することが困難であった。これに対して、AR技術を用いることにより、ユーザは家具や家電等の実寸を計測し配置したい箇所に収まるか試みる、他の家具・家電と調和しているかどうかシミュレーションする、といった作業を負荷なく行なうことが可能となる。
例えば、特許文献1ではマーカが付されたカードを含む現実空間をカメラで撮像し、撮像した画像を表示部へ表示するとともに、撮像された画像から検出したマーカに応じた画像を、撮像した画像に重畳して表示する技術が開示されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2003−256876
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、従来の拡張現実空間の実現方法では、撮像された画像上のマーカが認識された位置にマーカに対応する画像を表示していた。このような方法では、ユーザの意図に沿った拡張現実空間の実現が困難な場合がある。例えばTVボードの上にTVを配置することを拡張現実空間上でシミュレーションすることを考える。一般的に、TVはTVボード上に配置され、ユーザもそのような配置を意図してマーカを配置するものと考えられる。しかしながら、従来の拡張現実空間の実現方法では、TVのマーカとTVボードのマーカとを並べて置くだけでは、TVとTVボードが並んで表示されたり、重なって表示されたりするだけであり、ユーザの意図通りの拡張現実空間を実現することが難しかった。
本発明は、上記の点に鑑み、ユーザの意図に沿った拡張現実空間を実現することを目的とするものである。
【課題を解決するための手段】
【0005】
上記課題を解決するために、本発明の画像処理装置は、画像に含まれる複数のマーカに関する情報を取得する取得手段と、前記複数のマーカにそれぞれ対応する複数の仮想オブジェクトを、前記画像に重畳して表示部に表示するよう制御する表示制御手段と、前記複数の仮想オブジェクトが特定の組み合わせであるか否かを判断する判断手段とを有し、前記判断手段により前記複数の仮想オブジェクトが特定の組み合わせであると判断された場合、前記表示制御手段は、前記複数の仮想オブジェクトを、前記特定の組み合わせに対応した特定の配置で前記画像に重畳して表示部に表示するよう制御することを特徴とする。
【発明の効果】
【0006】
本発明によれば、よりユーザの意図に沿った拡張現実空間を実現することができる。
【図面の簡単な説明】
【0007】
【図1】第1の実施形態における画像処理装置のブロック図である。
【図2】第1の実施形態における、拡張現実空間の実現の一例を説明するための図である。
【図3】第1の実施形態における画像処理装置の動作を示すフローチャートである。
【図4】第2の実施形態における画像処理装置および情報処理装置のブロック図である。
【図5】第2の実施形態における画像処理装置の動作を示すフローチャートである。
【図6】第2の実施形態における情報処理装置の動作を示すフローチャートである。
【図7】第3の実施形態における画像処理装置の動作を示すフローチャートである。
【図8】第3の実施形態における情報処理装置の動作を示すフローチャートである。
【図9】第3の実施形態における推奨仮想オブジェクトテーブルの概念を示す図である。
【図10】第3の実施形態における推奨仮想オブジェクトの表示例である。
【図11】第4の実施形態における画像処理装置の動作を示すフローチャートである。
【発明を実施するための形態】
【0008】
以下に、本発明を実施するための形態について、添付の図面を用いて詳細に説明する。
【0009】
尚、以下に説明する実施の形態は、本発明の実現手段としての一例であり、本発明が適用される装置の構成や各種条件によって適宜修正又は変更されてもよい。また、各実施の形態は適宜組み合わされることも可能である。
【0010】
[第1の実施形態]
はじめに、本実施形態の、拡張現実空間を実現可能な画像処理装置の一例であるデジタルカメラについて、図1を用いて説明する。図1はデジタルカメラ100のブロック図である。
【0011】
制御部101は、入力された信号や、後述のプログラムに従ってデジタルカメラ100の各部を制御する。例えば、撮影処理や再生処理、ロギング処理などの制御を担う。それぞれの処理については後述する。なお、デジタルカメラ100の制御は一つのハードウェアが行ってもよいし、複数のハードウェアが処理を分担することで、装置全体の制御を行ってもよい。
【0012】
撮像部102は現実空間を撮影する撮影動作を行う。撮影動作とは、撮像部102に含まれるレンズで結像された被写体光を電気信号に変換し、ノイズ低減処理などを行い、デジタルデータを画像データとして出力する処理である。この撮像部102から出力された画像データは、表示部105に表示したり、記録媒体107に記録したりすることができる。
【0013】
不揮発性メモリ103は、デジタルカメラ100の各部を制御するためのプログラム(ファームウェア)や各種の設定情報を記憶している。後述する各フローチャートに示す処理を制御部101が制御するためのプログラムも、この不揮発性メモリ103に記録されている。
【0014】
作業用メモリ104は、不揮発性メモリ103に保存されているプログラムが、展開されるためのメモリである。作業用メモリ104は制御部101のワークエリアとして使用される。
【0015】
表示部105は、撮影の際のスルー画像データの表示、撮影した画像データの表示、対話的な操作のための文字表示などを行う。本実施形態において制御部101は、撮像部102から出力された画像データを、スルー画像として逐次更新しながら連続して表示部105に表示するよう制御する。さらに、後述するプログラムにより制御部101が仮想オブジェクトをスルー画像に重畳して表示することにより、拡張現実空間を実現する。拡張現実空間の実現の手順に関しては、後に詳述する。なお、表示部105はデジタルカメラ100が備える必要はなく、デジタルカメラ100は表示部105と接続することができ、表示部105の表示を制御する表示制御機能を少なくとも有していればよい。
【0016】
操作部106はユーザがデジタルカメラの動作を指示するために用いられる。操作部106は、例えば、デジタルカメラの電源のオン/オフを指示するための電源ボタンや、撮影処理を行うためのレリーズスイッチ、画像データを閲覧するための再生ボタンなどの操作部材を含むよう構成される。
【0017】
記録媒体107には、撮像部102から出力された画像データを記録することができる。また、記録媒体107には、拡張現実の実現のための仮想オブジェクトと仮想オブジェクトを示す識別情報とが対応づけられた仮想オブジェクトテーブルが記憶されている。本実施形態における仮想オブジェクトは、例えば家具や家電等の三次元画像モデルである。この三次元画像モデルの仮想オブジェクトも、記録媒体107に記録されている。本実施形態のデジタルカメラ100は、撮像部102から出力されるスルー画像からマーカを検出する。そして、デジタルカメラ100は、検出されたマーカを介して識別情報を取得する。デジタルカメラ100は、取得した識別情報を仮想オブジェクトテーブルに照らし合わせることにより、識別情報が示す仮想オブジェクトを記録媒体107から取得する。取得された仮想オブジェクトはスルー画像上のマーカの位置に表示される。なお、記録媒体107は、デジタルカメラ100に着脱可能なよう構成してもよいし、デジタルカメラ100に内蔵されていてもよい。すなわち、デジタルカメラ100は少なくとも記録媒体107にアクセスする手段を有していればよい。
【0018】
以上が、本実施形態におけるデジタルカメラの構成である。
【0019】
本実施形態では上述したデジタルカメラを用いて拡張現実空間を実現する。次に、拡張現実空間を実現する際のデジタルカメラ100の具体的な利用例、および、表示部105に表示される拡張現実空間の例を図2に示す。
【0020】
図2(a)は、現実空間上にマーカを配置した様子の一例である。この例では、ユーザが部屋にソファを置くことをシミュレーションしようとしている様子を示している。部屋内にはスピーカが1組あり、スピーカに対向する位置にマーカ201が配置されている。本実施形態におけるマーカは、例えば所定の仮想オブジェクトに対応する識別情報を、特定のパターンの二次元コードで表現したものである。以後、情報を特定のパターンの二次元コードで表現することを二次元コード化すると言う。また、マーカを印刷した用紙もマーカと称する。本実施形態の制御部101は、このマーカが示す特定のパターンに二次元コード化された識別情報を、パターン認識によって読み取る。ここで、マーカには検出用パターンが配されており、制御部101は、この検出用パターンをパターン認識により読み取ることで、マーカの存在を認識することができる。検出用パターンは例えばマーカの四隅に特定の模様を印刷することで二次元コード化される。制御部101は、パターン認識によってマーカを検出し、その結果に基づき、デジタルカメラ100の位置に対するマーカの三次元位置を示す位置情報及びマーカの姿勢を示す姿勢情報を幾何学的に算出することができる。制御部101は、読み取った識別情報に対応する仮想オブジェクトを記録媒体107から読み出す。そして制御部101は、読み出した仮想オブジェクトをスルー画像上に重畳して表示することで、マーカに対応する仮想オブジェクトを用いた拡張現実空間を実現する。なお、マーカ201は、ソファの仮想オブジェクトと対応づけられた識別情報が二次元コード化されたものである。以後、あるマーカを配置することにより表示させたい仮想オブジェクトに対応する識別情報を、そのマーカの対応識別情報とも呼ぶ。
【0021】
上記の図2(a)に示す部屋をデジタルカメラ100にて撮影して、スルー画像を表示する際の、表示部105の表示例を図2(b)に示す。図2(b)は、マーカ201が置かれた位置及び姿勢に基づき、マーカ201に対応するソファの仮想オブジェクトがスルー画像上に表示されている様子を示す。この仮想オブジェクトの表示においては、マーカの三次元位置を示す位置情報及びマーカの姿勢を示す姿勢情報に基づき、記録媒体107に記録されている仮想オブジェクトに対して加工処理を行う。これにより、マーカが置かれた位置及び姿勢に適した仮想オブジェクトが表示される。ここで、加工処理とは拡大・縮小・回転等の処理である。例えば、図2(a)に示すマーカ201の対応識別情報には、図2(f)に示すようなソファの仮想オブジェクトが対応づけられており、該ソファの仮想オブジェクトは記録媒体107に記録されている。この記録媒体107に記録されている仮想オブジェクトは、所定のサイズと姿勢の初期値が予め定められている。加工処理では、この予め定められた所定のサイズと姿勢の初期値をもとに、マーカが置かれた位置や姿勢に応じた拡大・縮小・回転等の処理を行う。これにより、例えば、図2(f)に示されるソファの仮想オブジェクトは、図2(b)に示されるように、マーカ201が配置された位置および姿勢に適したサイズと姿勢に加工され、マーカ201が配置された位置に適したスルー画像上の位置に表示される。この例では、マーカ201は、スピーカに対向する位置に配置され、ソファの仮想オブジェクトは、デジタルカメラ100からマーカ201までの距離に応じたサイズで表示されている。また、マーカ201はスピーカの方向を向いていると判断され、ソファの仮想オブジェクトの姿勢もマーカ201の姿勢に対応する向きに表示されている。なお、これらの仮想オブジェクトの加工に関しては、既知の方法を用いることができる。仮想オブジェクトの表示の手順については後に詳述する。
【0022】
以上のように、ユーザは、現実空間上にマーカを配置し、そのマーカを撮影してスルー画像上に表示することで、拡張現実空間上で、部屋にソファを置くことをシミュレーションすることができる。
【0023】
次に、図2(c)は、図2(a)の例に示す部屋に更に二つのマーカを配置した様子の一例を示す。この例は、更にTVボードと、TVボードの上にTVを配置することをシミュレーションしようとしている例である。この例では、マーカ201に加えて、スピーカの間にマーカ202およびマーカ203が並べて配置されている。ここで、マーカ202はTVの仮想オブジェクトと対応づけられた識別情報を二次元コード化したものであり、マーカ203は、TVボードの仮想オブジェクトと対応づけられた識別情報を二次元コード化したものである。従来の拡張現実空間を実現する装置では、このようにマーカ202およびマーカ203を横に並べて配置した場合、図2(d)のようにそれぞれのマーカが置かれている位置に基づき、それぞれのマーカが示す仮想オブジェクトも横に並べて表示していた。これに対して、例えば図2(e)に示すようにTVボードの上にTVを乗せた様子を示す拡張現実空間を実現する場合、何もない空中に、例えば手でマーカを持ったまま撮影しなければならなかった。すなわち、表示位置が安定せず、ユーザの手間もかかるなど、不便であった。このような課題が存在することから、TVとTVボードのように特定の組み合わせの仮想オブジェクトを表示させる場合、従来の拡張現実の実現方法では手軽に適切な拡張現実空間を実現することが難しい。
【0024】
そこで、本実施形態におけるデジタルカメラ100は、マーカに含まれる対応識別情報、関連識別情報および配置情報に基づき、複数の仮想オブジェクトを適切な配置でスルー画像上に表示させるよう構成した。以下、関連識別情報及び配置情報について述べる。
【0025】
本実施形態では、マーカは、対応識別情報だけでなく、関連識別情報も含むよう二次元コード化される。関連識別情報とは、マーカの対応識別情報に対応する仮想オブジェクトに対して、特定の配置で表示されることが望ましい他の仮想オブジェクトに対応する識別情報である。以降の説明では、マーカに含まれる対応識別情報に対応する仮想オブジェクトに対して、特定の配置で表示されることが望ましい他の仮想オブジェクトのことを、関連仮想オブジェクトとも記載する。
【0026】
さらにマーカは、配置情報も含む。配置情報とは、マーカに含まれる識別情報に対応する仮想オブジェクトに対して、関連仮想オブジェクトをどのような位置関係で配置するのかを示す情報である。この情報は、マーカの識別情報に対応する仮想オブジェクトに対する、関連仮想オブジェクトの表示位置の情報と表示方向の情報とを含む。表示位置の情報は、対応識別情報に対応する仮想オブジェクトの重心に対する、関連仮想オブジェクトの重心の相対的な位置を示す。また、表示方向の情報は、マーカに含まれる識別情報に対応する仮想オブジェクトの表示方向に対する、関連仮想オブジェクトの相対的な表示方向を示す。なお、この配置情報は、関連識別情報にそれぞれ1対1で対応している。
【0027】
このように構成されるマーカに対して、本実施形態のデジタルカメラ100は、以下のように構成される。すなわち、あるマーカと、そのマーカに含まれる関連識別情報と同じ識別情報を対応識別情報として持つ他のマーカとが検出された場合、デジタルカメラ100は、それぞれのマーカに対応する仮想オブジェクトを、配置情報に基づき特定の配置で表示する。
【0028】
上述のTVとTVボードの例で言えば、TVボードのマーカ203には、TVボードの仮想オブジェクトを示す対応識別情報の他に、二つの情報が二次元コード化されている。一つはTVボードに組み合わせて特定の配置で表示することが好ましいマーカ202のTVの仮想オブジェクトを示す識別情報が、関連識別情報として二次元コード化されている。もう一つは、TVボードの仮想オブジェクトに対して、TVの仮想オブジェクトをどのように配置するかを示す配置情報が二次元コード化されている。なお、この例では、マーカ202およびマーカ201には関連識別情報や配置情報は含まれていない。そして、図2(c)のようにマーカ202〜203が並べて配置された場合、それぞれの仮想オブジェクトは、マーカ203から得られる関連識別情報とマーカ202から得られる対応識別情報とに基づき、特定の配置で表示されることが好ましいと判断される。それぞれのマーカの仮想オブジェクトは、パターン認識により得られた位置情報および姿勢情報に加えて、配置情報にも基づき、図2(e)のように表示される。この際、マーカ202のTVの仮想オブジェクトは、マーカ203のTVボードの仮想オブジェクトの重心位置をベースに、マーカ201に含まれる配置情報が示す位置と向きに基づき加工されて表示される。すなわち、マーカ202の位置情報および姿勢情報は用いられない。以降の説明では、このマーカ203の仮想オブジェクトのように、他のマーカの仮想オブジェクトと組み合わせて表示される際にベースとなる仮想オブジェクトを、関連仮想オブジェクトに対してベース仮想オブジェクトとも呼ぶ。
【0029】
本実施形態では以上のように、関連識別情報及び配置情報を導入することにより、特定の組み合わせの仮想オブジェクトを適切な配置で表示することができる。
【0030】
次に、本実施形態における拡張現実空間を実現する際の処理について図3を用いて説明する。図3は、拡張現実を実現する際のデジタルカメラ100の動作を示すフローチャートである。このフローチャートに示す各処理は、制御部101が、不揮発性メモリ103に保存されているプログラムを読み出し、作業用メモリ104に展開してプログラムに従いデジタルカメラ100の各部を制御することで実現される。
【0031】
また、このフローチャートに示す処理は、デジタルカメラ100が撮影モードとなることに応じて開始される。
【0032】
まず、ステップS301にて、制御部101は、撮像部102を用いて撮像動作を行い、画像データを取得する。
【0033】
続くステップS302では、制御部101は、ステップS301にて取得された画像データを、スルー画像として表示部105に表示する。
【0034】
次に、ステップS303では、制御部101は、スルー画像から一または複数のマーカを検出する処理を行う。具体的には、制御部101はスルー画像から、マーカに印刷されている検出用パターンをパターン認識により検出する。
【0035】
ステップS304では、制御部101は、ステップS303においてマーカを検出できたか否かを判断する。制御部101がマーカを検出できなかったと判断した場合、処理はステップS313に進む。一方、ステップS303において制御部101がマーカを検出できたと判断した場合、処理はステップS305に進む。
【0036】
ステップS305では、制御部101は、ステップ303にて検出された一または複数のマーカのそれぞれについて、パターン認識の結果から、それぞれのマーカの三次元位置を示す位置情報、及びそれぞれのマーカの姿勢を示す姿勢情報を算出する。
【0037】
次に、ステップS306にて、制御部101は、ステップ303にて検出された一または複数のマーカから、各マーカに二次元コード化された対応識別情報、関連識別情報、及び配置情報を取得する。
【0038】
次に、ステップS307にて、制御部101は、ステップS306にて一または複数のマーカから取得された、それぞれの対応識別情報に対応する仮想オブジェクトを取得する。具体的には、制御部101は、記録媒体107に記録されている仮想オブジェクトテーブルと、ステップS306にて取得された対応識別情報とに基づき、該対応識別情報に対応する仮想オブジェクトを読み出す。
【0039】
次に、ステップS308にて、制御部101は、ステップS307にて取得された仮想オブジェクトのうち、二つ以上を組み合わせて特定の配置で表示されることが好ましい仮想オブジェクトの組み合わせがあるか否かを判断する。具体的には、制御部101は、ステップS306にてあるマーカから取得された関連識別情報と、他のマーカから取得された対応識別情報とが、同じ情報であるか否かを判断する。前述したように、関連識別情報とは、該関連識別情報を含むマーカに対応する仮想オブジェクトと組み合わせて特定の配置で表示することが好ましい、他の仮想オブジェクトの対応識別情報を示す情報である。つまり、あるマーカの関連識別情報と他のマーカの対応識別情報とが同じ情報であることは、前者のマーカの仮想オブジェクトと後者の他のマーカの仮想オブジェクトとを特定の配置で表示することが好ましい組み合わせであると判断されることを示す。
【0040】
言い換えれば、あるマーカの関連識別情報と他のマーカの対応識別情報とが同じ情報であることは、前者のマーカの仮想オブジェクトと後者のマーカの仮想オブジェクトが、ベース仮想オブジェクトとそれに関連する関連仮想オブジェクトの関係にあることを示す。
一方、あるマーカの関連識別情報と他のマーカの対応識別情報とが同じ情報でないことは、前者のマーカの仮想オブジェクトと後者の他のマーカの仮想オブジェクトとを特定の配置で表示する必要がない組み合わせであると判断されることを示す。
【0041】
まず、ステップS308にて、制御部101が、ステップS307にて取得された仮想オブジェクトのうち、二つ以上を組み合わせて特定の配置で表示されることが好ましい仮想オブジェクトの組み合わせがないと判断した場合を考える。この場合、処理はステップS309に進む。
【0042】
ステップS309では、制御部101は、ステップS305にて、それぞれのマーカのパターン認識結果から取得された位置情報および姿勢情報に基づき、それぞれのマーカの仮想オブジェクトを加工する。
【0043】
次に、ステップS310では、制御部101は、ステップS309にて加工された仮想オブジェクトを、それぞれの位置情報に基づき、それぞれのマーカが検出されたスルー画像上の位置に重畳して表示する。この際、制御部101は、それぞれの位置情報に基づき、奥に配置されたマーカの仮想オブジェクトから順に重畳して表示していくことで、仮想オブジェクト同士の前後関係が自然に表示されるよう制御する。その後、処理はステップS313に進む。
【0044】
ステップS313では、制御部101は、撮影モードを終了する指示を受け付けたか否かを判断する。制御部101が、撮影モードを終了する指示を受け付けたと判断した場合、本フローチャートの処理を終了する。一方、制御部101が、撮影モードを終了する指示を受け付けていないと判断した場合、処理はステップS301に戻り、本フローチャートの処理を繰り返す。つまり、撮影モードの間のスルー画像は、本フローチャートが繰り返される毎に更新される。同様に、仮想オブジェクトに関しても、本フローチャートを繰り返す毎に、新たな表示に更新される。
【0045】
以上が、ステップS308にて特定の配置で表示することが好ましい仮想オブジェクトの組み合わせがないと判断された場合の処理である。
【0046】
次に、ステップS308にて、制御部101が、ステップS307にて取得された仮想オブジェクトのうち、二つ以上を組み合わせて特定の配置で表示されることが好ましい仮想オブジェクトの組み合わせがあると判断した場合を考える。この場合、処理はステップS311に進む。
【0047】
ステップS311では、制御部101は、仮想オブジェクトを加工する。本ステップでは、特定の配置で表示されることが好ましいと判断された組み合わせの仮想オブジェクトのうち、関連仮想オブジェクトは、ベース仮想オブジェクトのマーカの位置情報および姿勢情報、および配置情報に基づき加工される。すなわち、関連仮想オブジェクトのマーカの位置情報および姿勢情報は用いられない。ベース仮想オブジェクトは、特定の配置で表示されることが好ましいと判断されなかった仮想オブジェクトと同様に、ステップS309と同様の処理にて加工される。
【0048】
次に、ステップS312にて、制御部101は、ステップS311にて加工された仮想オブジェクトを、スルー画像上に重畳して表示する。本ステップの処理では、ステップS308にて特定の配置で表示される必要が無いと判断された仮想オブジェクトは、ステップS310と同様に、それぞれの位置情報に基づき、それぞれのマーカが検出されたスルー画像上の位置に重畳して表示される。一方、ステップS308にて特定の配置で表示されることが好ましいと判断された仮想オブジェクトのうち、関連仮想オブジェクトは、ベース仮想オブジェクトの位置情報および姿勢情報と、配置情報とに基づき、特定の配置でスルー画像上に重畳して表示される。ベース仮想オブジェクトは、他の仮想オブジェクトと同様に、対応するマーカの位置情報および姿勢情報に基づき表示される。上述の図2(c)の例で言えば、ベース仮想オブジェクトに対応するマーカ203の位置情報および姿勢情報を基準として、配置情報が示す分だけずれた位置に、配置情報が示す分だけずれた向きで、関連仮想オブジェクトであるTVの仮想オブジェクトを表示する。
【0049】
以上が、ステップS308にて特定の配置で表示することが好ましい仮想オブジェクトの組み合わせがあると判断された場合の処理である。その後、処理はステップS313に進む。以降の処理は前述の通りである。
【0050】
以上、本実施形態の、拡張現実空間を実現する際のデジタルカメラ100の動作について説明した。上述のように本実施形態では、デジタルカメラ100にて、特定の組み合わせの仮想オブジェクトを適切な配置で表示することができるよう構成した。これにより、例えばTVとTVボードを部屋に配置するシミュレーションのように、従来の拡張現実空間の実現方法ではユーザの意図に沿った配置で仮想オブジェクトを表示することが困難であった場合でも、適切な拡張現実空間を実現することができる。
【0051】
なお、本実施形態のデジタルカメラ100は、本発明の画像処理装置の一例であり、本発明はデジタルカメラのみならず、撮像部を持たないPCや携帯電話等の他のデバイスでも適用可能である。この場合、画像処理装置がマーカの含まれる画像を取得し、これを解析して表示することで実現され得る。
【0052】
[第2の実施形態]
第1の実施形態では、仮想オブジェクトを取得する処理を、デジタルカメラ100にて行っていた。この場合、デジタルカメラは、仮想オブジェクトテーブルと、仮想オブジェクトとを記録媒体に保持していなければならない。つまり、記録媒体に記録されていない新たな仮想オブジェクトを用いて拡張現実空間を実現するためには、外部から新たな仮想オブジェクトと、該仮想オブジェクトに対応づけられている識別情報を記録媒体に追記する必要があった。例えば、第1の実施形態のように、家具の例において、新たな家具が発売された場合を考える。この場合、新たな家具を用いた拡張現実空間を実現するためには、デジタルカメラ100のユーザは新たな家具に対応する仮想オブジェクトと、該仮想オブジェクトに対応づけられる識別情報を記録媒体に追記する必要があった。この作業は、例えば新たな家具が発売される度に必要となり、ユーザにとって利便性に欠ける。
【0053】
そこで、本実施形態では、第1の実施形態ではデジタルカメラ100で実行されていた識別情報に対応する仮想オブジェクトを読み出す処理や、該仮想オブジェクトに対して加工する処理が、サーバにて実行されるよう構成した。この拡張現実システムでは、サーバは予め、仮想オブジェクトテーブルと仮想オブジェクトとを保持している。サーバは、デジタルカメラ100から識別情報を受信することに応じて、該識別情報に基づく仮想オブジェクトをデジタルカメラ100に送信する。そして、デジタルカメラ100は、サーバから受信した仮想オブジェクトを用いて拡張現実空間を実現する。このように、仮想オブジェクトや仮想オブジェクトテーブルを有する装置と、拡張現実空間を実現する装置とを分離した場合、例えばサーバの管理はサービス提供者が行い、デジタルカメラによるサービスはユーザが利用するといった構成が容易に実現できる。つまり、サービス提供者が必要に応じて新たな仮想オブジェクトやその識別情報を随時追加することで、ユーザの手間を必要とすることなく常に最新の仮想オブジェクトを用いたサービスを利用することができる。第1の実施形態の家具の例で言えば、新たな家具が発売された場合、管理者が随時新たな家具の仮想オブジェクトと、対応する識別情報を用意することで、ユーザの手間を必要とすることなく、常に最新の家具を用いた拡張現実のサービスを受けることができる。
【0054】
本実施形態は、第1の実施形態と共通する部分が多いため、共通部分は説明を省略し、本実施形態に特有の部分を中心に説明する。
【0055】
まず、本実施形態のサーバと協働して拡張現実空間を実現するための画像処理装置の一例であるデジタルカメラ、および該デジタルカメラと協働して拡張現実空間を実現するための情報処理装置の一例であるサーバについて図4を用いて説明する。図4は、デジタルカメラ100およびサーバ400のブロック図である。なお、第1の実施形態と同じ構成については同じ番号を付している。
【0056】
図4のデジタルカメラ100において、通信部410は、外部装置と通信するための接続部である。通信部410は、デジタルカメラ100が撮影したマーカから得た対応識別情報、関連識別情報および配置情報を、サーバ400に送信する際に用いられる。また、通信部410は、マーカをパターン認識した結果から得られる位置情報及び姿勢情報も、サーバ400に送信する際にも用いられる。さらに、通信部410は、サーバ400から仮想オブジェクトを受信する際にも用いられる。なお、サーバ400との通信は、有線で行ってもよいし、無線で行ってもよい。
【0057】
次に、図4のサーバ400において、制御部401は、入力された信号や、後述のプログラムに従ってサーバ400の各部を制御する。なお、サーバ400の制御は一つのハードウェアが行ってもよいし、複数のハードウェアが処理を分担することで、装置全体の制御を行ってもよい。
【0058】
通信部402は、デジタルカメラ100から各種の情報を受信する際に用いられる。また、デジタルカメラ100から受信した情報に応じた仮想オブジェクトをデジタルカメラ100に送信する際にも用いられる。
【0059】
不揮発性メモリ403は、サーバ400の各部を制御するためのプログラム(ファームウェア)や各種の設定情報を記憶している。後述する各フローチャートに示す処理を制御部401が制御するためのプログラムも、この不揮発性メモリ403に記録されている。
【0060】
作業用メモリ404は、不揮発性メモリ403に保存されているプログラムが、展開されるためのメモリである。作業用メモリ404は制御部401のワークエリアとして使用される。
【0061】
記録媒体405には、拡張現実空間の実現のための仮想オブジェクトと該仮想オブジェクトを示す識別情報との対応関係を示す情報が記録されている。この情報は、例えばテーブルの形で、仮想オブジェクトテーブルとして記録される。本実施形態における仮想オブジェクトは、例えば家具や家電等の三次元画像モデルである。この三次元画像モデルも、記録媒体405に記録されている。本実施形態のサーバ400は、デジタルカメラ100から送信された識別情報を、仮想オブジェクトテーブルに照らし合わせることにより、識別情報が示す仮想オブジェクトを取得する。取得された仮想オブジェクトは通信部402を介してデジタルカメラ100に送信され、デジタルカメラ100にて該仮想オブジェクトを用いた拡張現実空間が実現される。なお、記録媒体405は、サーバ400に着脱可能なよう構成してもよいし、サーバ400に内蔵されていてもよい。すなわち、サーバ400は少なくとも記録媒体405にアクセスする手段を有していればよい。
【0062】
以上が、本実施形態におけるデジタルカメラおよびサーバの構成である。
【0063】
次に、図5を用いて、拡張現実を実現する際のデジタルカメラ100の動作について説明する。
【0064】
図5は、拡張現実空間を実現する際のデジタルカメラ100の動作を示すフローチャートである。このフローチャートに示す各処理は、制御部101が、不揮発性メモリ103に保存されているプログラムを読み出し、作業用メモリ104に展開してプログラムに従いデジタルカメラ100の各部を制御することで実現される。
【0065】
また、このフローチャートに示す処理は、デジタルカメラ100が撮影モードとなることに応じて開始される。
【0066】
まずステップS501〜ステップS506については、図3のステップS301〜ステップS306と同様の処理を行う。
【0067】
次に、ステップS507にて、制御部101は、ステップS505にて取得した位置情報および姿勢情報と、ステップS506にて取得した対応識別情報、関連識別情報および配置情報をサーバ400に送信する。なお、各情報は、ステップS503にて検出されたマーカごとに区別可能な形で送信される。
【0068】
次いで、ステップS508にて、制御部101は、サーバ400から送信される仮想オブジェクトの受信処理を行う。ここで受信される仮想オブジェクトは、ステップS507にてサーバ400に送信した識別情報に対応する仮想オブジェクトに対して、加工処理が施された仮想オブジェクトである。なお、この加工処理は、ステップS507にてサーバ400に送信した位置情報、姿勢情報、関連識別情報、配置情報に基づき、サーバ400にて実行される。また、特定の配置で表示することが好ましいと判断された仮想オブジェクトと、それ以外の仮想オブジェクトとは、区別可能な形で受信される。
【0069】
ステップS509にて、制御部101は、ステップS508の受信処理が完了したか否かを判断する。すなわち、ステップS507にてサーバ400に送信した各識別情報に対応する加工処理済みの仮想オブジェクトを全て受信したか否かを判断する。制御部101が、まだ仮想オブジェクトの受信が完了していないと判断した場合、処理はステップS508に戻り、受信処理の完了を待つ。一方、制御部101が、受信処理が完了したと判断した場合、処理はステップS510に進む。
【0070】
ステップS510では、制御部101は、サーバ400から受信した特定の配置で表示することが好ましいと判断された仮想オブジェクトを、ステップS505にて取得した位置情報および配置情報に基づき、スルー画像上に重畳して表示する。また、制御部101は、サーバ400から受信した特定の配置で表示する必要がないと判断された仮想オブジェクトを、ステップS505にて取得した位置情報に基づき、スルー画像上に重畳して表示する。
【0071】
その後、処理はステップS511に進む。ステップS511では、図3のステップS313と同様の処理が実行される。
【0072】
以上が、サーバ400と協働して拡張現実を実現する際のデジタルカメラ100の動作の説明である。
【0073】
次に、上述したデジタルカメラ100と協働して拡張現実空間を実現する際のサーバ400の動作について、図6を用いて説明する。図6は、デジタルカメラ100と協働して拡張現実空間を実現する際のサーバ400の動作を示すフローチャートである。このフローチャートに示す各処理は、制御部401が、不揮発性メモリ403に保存されているプログラムを読み出し、作業用メモリ404に展開してプログラムに従いサーバ400の各部を制御することで実現される。
【0074】
また、このフローチャートに示す処理は、サーバ400の電源がONとなることに応じて開始される。
【0075】
まず、ステップS601にて、制御部401は、デジタルカメラ100が検出した一つまたは複数のマーカから得られた、対応識別情報、関連識別情報、配置情報、位置情報、および姿勢情報の受信処理を行う。なお、各情報は、あるマーカから得られた各情報と他のマーカから得られた各情報とが区別できる形で受信される。
【0076】
次に、ステップS602にて制御部401は、デジタルカメラ100にて検出された全てのマーカの対応識別情報、関連識別情報、配置情報、位置情報、および姿勢情報を受信完了したか否かを判断する。制御部401が、上記の情報を受信完了していないと判断した場合、ステップS601に戻り、デジタルカメラ100からの上記の情報の受信完了を待つ。一方、制御部401が、上記の情報を受信できたと判断した場合、処理はステップS603に進む。
【0077】
ステップS603では、制御部401は、記録媒体405に記録されている仮想オブジェクトテーブルと、ステップS601にて受信された対応識別情報とに基づき、該対応識別情報に対応する仮想オブジェクトを、記録媒体405から読み出す。
【0078】
次に、ステップS604〜ステップS606では、図3のステップS308〜ステップS309、ステップS311と同様の処理がサーバ400にて実行される。ステップS605またはステップS606にて、仮想オブジェクトに対する加工処理が完了すると、処理はステップS607に進む。
【0079】
ステップS607では、制御部401は、ステップS605またはステップS606にて加工された仮想オブジェクトを、通信部402を介してデジタルカメラ100へ送信する。この際、特定の配置で表示することが好ましいと判断された仮想オブジェクトと、それ以外の仮想オブジェクトとは、区別可能な形で送信される。
【0080】
その後、ステップS608にて、制御部401は本処理を終了する指示を受け付けたか否かを判断する。制御部401が、本処理を終了する指示を受け付けたと判断した場合、本処理を終了する。制御部401が、本処理を終了する指示を受け付けていないと判断した場合、処理はステップS601に戻り、本フローチャートの処理を繰り返す。
【0081】
以上が、デジタルカメラ100と協働して拡張現実を実現する際のサーバ400の動作の説明である。
【0082】
本実施形態では、上述したように、サーバで仮想オブジェクトを保持するよう構成した。これにより、仮想オブジェクトおよび識別情報の管理者と、デジタルカメラ100のユーザとが異なるよう構成することが容易となる。つまり、例えば、サーバの管理はサービス提供者が行い、デジタルカメラによるサービスの利用はユーザが受ける構成にすることが可能となる。これにより、サービス提供者が必要に応じて新たな仮想オブジェクトやその識別情報を随時追加することで、ユーザの手間を必要とすることなく常に最新の仮想オブジェクトを用いたサービスを利用することができる。したがって、本実施形態のように拡張現実システムを構成することにより、ユーザにとってより利便性の高いサービスを提供することが可能となる。
【0083】
[第3の実施形態]
前述の実施形態では、デジタルカメラ100にて検出されたマーカに対応する仮想オブジェクトのみを表示していた。これに対し、本実施形態では、検出されたマーカに対応する仮想オブジェクト以外にも、該検出されたマーカに対応する仮想オブジェクトと併せて表示されることが多い仮想オブジェクトを表示することができるよう構成する。例えばTVボードのマーカを配置すれば、共に配置されることの多いTVのマーカを配置せずとも、TVボードの仮想オブジェクトのみならずTVの仮想オブジェクトも表示することができるよう構成する。
【0084】
以下、上述の本実施形態における拡張現実システムについて述べる。
【0085】
本実施形態は第1および第2の実施形態と共通する部分が多いため、共通部分は説明を省略し、本実施形態に特有の部分を中心に説明する。
【0086】
本実施形態における拡張現実システムは、第2の実施形態におけるデジタルカメラ100およびサーバ400からなるシステムと同様である。なお、本実施形態におけるサーバ400の記録媒体405には、上述の拡張現実システムを実現するための推奨仮想オブジェクトテーブルが記録されている。なお、デジタルカメラ100が複数ある場合、推奨仮想オブジェクトテーブルは、それぞれのカメラに対して個別のテーブルであってもよいし、共通のテーブルであってもよい。本実施形態では共通のテーブルである場合に関して説明する。
【0087】
図9は、上述の推奨仮想オブジェクトテーブルの概念図を示す。推奨仮想オブジェクトテーブルでは、記録媒体405に記録されている識別情報毎に、ある識別情報の仮想オブジェクトとは異なる他の仮想オブジェクトの識別情報が、推奨仮想オブジェクトの識別情報として対応づけられている。これにより、ある仮想オブジェクトと、その仮想オブジェクトと共に表示することを推奨する他の仮想オブジェクトとが対応づけられている。例えば、図9に示される推奨仮想オブジェクトテーブルにて、識別情報が0003の仮想オブジェクトには、識別情報が0006の仮想オブジェクトが、推奨仮想オブジェクトとして対応づけられている。
【0088】
この推奨仮想オブジェクトの識別情報は、対応づけられている識別情報の仮想オブジェクトと共に同一画面上に表示される頻度が高いと判断された仮想オブジェクトの識別情報である。例えば、図9の推奨仮想オブジェクトテーブルにおいて、識別情報が0003の仮想オブジェクトは、識別情報が0006の仮想オブジェクトと共に表示される頻度が高いと判断されている。他の仮想オブジェクトと共に表示される頻度は、デジタルカメラ100から受信した識別情報毎に、他の各識別情報が共に受信された回数を記録することによって決定される。
【0089】
すなわち、サーバ400は、デジタルカメラ100から受信した識別情報が複数であった場合、識別情報毎に、他の各識別情報が共に受信された回数を記録する。これにより、サーバ400は、ある識別情報に対応する仮想オブジェクトと、他の各識別情報に対応する仮想オブジェクトとが同一画面上に表示される頻度をカウントしている。
【0090】
そして、識別情報毎に、共に受信された回数の最も多い識別情報が、推奨仮想オブジェクトを示す識別情報として対応づけられる。これにより、識別情報毎に、ある識別情報に対応する仮想オブジェクトに対して、同一画面上に表示される回数が最も多い、他の仮想オブジェクトが推奨仮想オブジェクトとして対応づけられる。
【0091】
以下、拡張現実を実現する際の本実施形態の拡張現実システムの動作について図7および図8を用いて説明する。図7は、拡張現実を実現する際のデジタルカメラ100の動作を示すフローチャートである。このフローチャートに示す各処理は、制御部101が、不揮発性メモリ103に保存されているプログラムを読み出し、作業用メモリ104に展開してプログラムに従いデジタルカメラ100の各部を制御することで実現される。
【0092】
また、このフローチャートに示す処理は、デジタルカメラ100が撮影モードとなることに応じて開始される。
【0093】
ステップS701〜ステップS709は、図5のステップS501〜ステップS509と同様の処理が実行される。
【0094】
ステップS710にて、制御部101は、ステップS708にて受信された仮想オブジェクトのうち、推奨仮想オブジェクト以外の仮想オブジェクトを、スルー画像上に重畳して表示する。この処理は図3のステップS312の処理と同様の処理である。
【0095】
次に、ステップS711にて、制御部101は、ステップS708にて受信された仮想オブジェクトのうち、推奨仮想オブジェクトを、スルー画像に重畳して表示される推奨仮想オブジェクト表示領域に表示する。なお、推奨仮想オブジェクト表示領域は、例えば図10のように、表示部105の表示領域中の右上の領域に、スルー画像に重畳して設けられる。
【0096】
次に、ステップS712では、制御部101は、ステップS711にて表示される推奨仮想オブジェクトを、拡張現実空間上に表示するか否かを選択する指示を受け付ける。それに並行して、推奨仮想オブジェクトを拡張現実空間上に配置するか否かの選択を促すメッセージを、表示部105に表示する。例えば「推奨仮想オブジェクトを配置することができます。配置しますか?」といったメッセージを、「はい」・「いいえ」という選択可能なボタンとともに表示する。ユーザが「はい」を選択した場合、推奨仮想オブジェクトを拡張現実空間上に配置することが選択されたと判断し、処理はステップS713に進む。ユーザが「いいえ」を選択した場合、推奨仮想オブジェクトを拡張現実空間上に配置しないことが選択されたと判断し、処理はステップS714に進む。
【0097】
ステップS713では、制御部101は、ステップS712にて配置することが選択されたと判断された推奨仮想オブジェクトを、拡張現実空間上に表示する。なお、本実施形態では、推奨仮想オブジェクトが既に表示されている仮想オブジェクトと組み合わせて特定の配置で表示することが好ましい仮想オブジェクトである場合は、該推奨仮想オブジェクトは特定の配置で表示される。そうでない場合は、該推奨仮想オブジェクトはスルー画像の中央に表示される。この場合、該推奨仮想オブジェクトの表示位置、サイズ、姿勢等は、操作部106を介して後から自由に変更できる。
【0098】
ステップS714では、図3のステップS314と同様の処理が実行される。
【0099】
以上が、サーバ400と協働して拡張現実を実現する際の、本実施形態のデジタルカメラ100の動作の説明である。
【0100】
次に、上述したデジタルカメラ100と協働して拡張現実空間を実現する際の、本実施形態のサーバ400の動作について、図8を用いて説明する。図8は、デジタルカメラ100と協働して拡張現実空間を実現する際のサーバ400の動作を示すフローチャートである。このフローチャートに示す各処理は、制御部401が、不揮発性メモリ403に保存されているプログラムを読み出し、作業用メモリ404に展開してプログラムに従いサーバ400の各部を制御することで実現される。
【0101】
また、このフローチャートに示す処理は、サーバ400の電源がONとなることに応じて開始される。
【0102】
ステップS801〜ステップS803では、図6のステップS601〜ステップS603と同様の処理が実行される。
【0103】
次にステップS804にて、制御部401は、ステップS603にて取得された仮想オブジェクトのそれぞれに関して、推奨仮想オブジェクトを取得する。具体的には、ステップS801にて受信された対応識別情報と、記録媒体405に記録されている推奨仮想オブジェクトテーブルとに基づき、各識別情報に対応づけられている推奨仮想オブジェクトを、記録媒体405から読み出す。なお、本ステップでは、ステップS803にて既に読み出されている仮想オブジェクトは読み出さない。
【0104】
次に、ステップS805では、制御部401は、ステップS801にてデジタルカメラ100から受信した対応識別情報が複数であった場合、対応識別情報毎に、共に受信された他の各対応識別情報の受信回数をカウントする。すなわち、制御部401は、対応識別情報を示すマーカが、デジタルカメラ100にて共に撮影された回数を各々の組み合わせ毎にカウントする。カウントの結果、識別情報ごとに、共に受信されることが最も多いと判断された対応識別情報を推奨仮想オブジェクトの識別情報として対応付け、推奨仮想オブジェクトテーブルに記録する。
【0105】
ステップS806では、制御部401は、ステップS803およびステップS804にて取得された仮想オブジェクトのうち、二つ以上を組み合わせて特定の配置で表示されることが好ましい特定の組み合わせがあるか否かを判断する。制御部401が、特定の組み合わせがないと判断した場合、処理はステップS807に進む。ステップS807では、制御部401は、ステップS801にて受信した対応識別情報ごとの位置情報および姿勢情報に基づき、それぞれの対応識別情報に対応する仮想オブジェクトを加工する。仮想オブジェクトに対する加工処理が完了すると、処理はステップS809に進む。
【0106】
一方、ステップS806にて、制御部401が、特定の組み合わせがあると判断した場合、処理はステップS808に進む。
【0107】
ステップS808では、制御部401は、仮想オブジェクトを加工する。本ステップでは、ステップS806にて特定の配置で表示されることが好ましいと判断された組み合わせの仮想オブジェクトは、それぞれのマーカの位置情報および姿勢情報に加え、ステップS801にて取得された配置情報に基づき加工される。また、それ以外の仮想オブジェクトは、ステップS807と同様に加工される。なお、特定の組み合わせがないと判断された推奨仮想オブジェクトは、対応する位置情報および姿勢情報がないため、加工されない。
仮想オブジェクトに対する加工処理が完了すると、処理はステップS809に進む。
【0108】
ステップS809では、制御部401は、ステップS807またはステップS808にて加工された仮想オブジェクトを、通信部402を介してデジタルカメラ100へ送信する。なお、送信される仮想オブジェクトのうち、特定の配置で表示することが好ましい組み合わせの仮想オブジェクトとそれ以外の仮想オブジェクトとは、区別可能な形で送信される。また、推奨仮想オブジェクトとそれ以外の仮想オブジェクトとは、区別可能な形で送信される。
【0109】
その後、ステップS810にて、図6のステップS608と同様の処理が実行される。
【0110】
以上が、デジタルカメラ100と協働して拡張現実を実現する際のサーバ400の動作の説明である。
【0111】
上述したように、本実施形態では、ユーザが設置したマーカに対応する仮想オブジェクトだけでなく、該仮想オブジェクトと共に表示されることが多いと判断される仮想オブジェクトも、推奨仮想オブジェクトとして表示されるよう構成した。これにより、より一層利便性の高い拡張現実空間を実現することが可能となる。
【0112】
[第4の実施形態]
上述の実施形態では、スルー画像上に捉えた全てのマーカに対して、それぞれ組み合わせの判断を行っていた。しかしながら、ユーザが二つのマーカを離して配置した場合、ユーザはそれら二つのマーカの仮想オブジェクトを組み合わせて表示する意思がない可能性が高いと考えられる。そこで、本実施形態では、ユーザのマーカの配置に応じて、組み合わせて表示するか否かを判断する構成について述べる。
【0113】
本実施形態は、第1の実施形態と共通する部分が多いため、共通部分は説明を省略し、本実施形態に特有の部分を中心に説明する。
【0114】
図11は、拡張現実空間を実現する際のデジタルカメラ100の動作を示すフローチャートである。このフローチャートに示す各処理は、制御部101が、不揮発性メモリ103に保存されているプログラムを読み出し、作業用メモリ104に展開してプログラムに従いデジタルカメラ100の各部を制御することで実現される。
【0115】
また、このフローチャートに示す処理は、デジタルカメラ100が撮影モードとなることに応じて開始される。
【0116】
まず、ステップS1101〜ステップS1110では、図3のステップS301〜ステップS310と同様の処理が実行される。
【0117】
ステップS308にて、制御部101が、特定の配置で表示することが好ましい組み合わせがあると判断した場合、処理はステップS1111に進む。
【0118】
ステップS1111では、制御部101は、組み合わせを成す仮想オブジェクトに対応するそれぞれのマーカが、互いに一定距離以内の位置で検出されたか否かを判断する。具体的には、検出されたマーカの位置情報同士を比較し、該位置情報の示す位置が互いに一定の距離以内であるか否かを判断する。制御部101が、それぞれのマーカが互いに一定距離以内の位置で検出されていないと判断した場合、処理はステップS1109に進む。すなわち、それぞれのマーカに対応する仮想オブジェクトは、特定の配置で表示しない。
【0119】
一方、制御部101が、それぞれのマーカが互いに一定距離以内の位置で検出されたと判断した場合、処理はステップS1112に進む。ステップS1112〜ステップS1114では、図3のステップS311〜ステップS313と同様の処理が実行される。すなわち、それぞれのマーカに対応する仮想オブジェクトは、特定の配置で表示される。
【0120】
以上のように、本実施形態では、複数の仮想オブジェクトを特定の配置で表示するか否かの判断に、検出されたマーカの位置情報を用いた。これにより、ユーザにとってより直感的な操作で拡張現実空間を実現することができる。
【0121】
[その他の実施形態]
上述の実施形態では、複数の仮想オブジェクトが特定の組み合わせであると判断した場合は、それぞれの仮想オブジェクトを常に特定の配置で表示するよう制御していた。これについては、例えばユーザが特定の配置で表示するか否かを選択可能なよう構成してもよい。このように構成することで、よりユーザの意図に沿った拡張現実空間を実現することができる。
【0122】
また、上述の実施形態では、マーカが検出されたタイミングに関わらず、それぞれ組み合わせの判断を行っていた。しかしながら、二つのマーカの検出時刻の差が一定時間以上であった場合は、ユーザはそれら二つのマーカの仮想オブジェクトを組み合わせて表示する意思がない可能性が高いと考えられる。したがって、例えば、検出されたマーカごとに一定時間をカウントし、あるマーカに対して組み合わせの判断を行う場合、該マーカが検出されてから一定時間以上経過した後に検出された他のマーカは判断の対象としないよう構成してもよい。なお、マーカごとの一定時間のカウントは、一度検出されたら一定時間のカウントが終わるまで、カウントを継続するよう構成してもよいし、マーカが連続して検出されなかったと判断されることに応じてカウントを終了するよう構成してもよい。このように構成することで、よりユーザの意図に沿った拡張現実空間の実現が可能となる。
【0123】
また、上述の実施形態では、特定の配置で仮想オブジェクトを表示する際に、ベース仮想オブジェクトのマーカの位置情報に基づき表示していた。これに対して、ベース仮想オブジェクトのマーカの位置情報に加えて、関連仮想オブジェクトのマーカの位置情報も用いてもよい。例えば、ベース仮想オブジェクトのマーカの位置情報が示す位置と、関連仮想オブジェクトのマーカの位置情報が示す位置との間に、それぞれの仮想オブジェクトを表示してもよい。この場合、ベース仮想オブジェクトのマーカの位置情報が示す位置と、関連仮想オブジェクトのマーカの位置情報が示す位置との中間になる位置に表示するよう構成してもよいし、所定の基準に応じてどちらかの位置に寄せて表示するよう構成してもよい。
【0124】
また、上述の第4の実施形態では、組み合わせの判断を行う際に、マーカの検出位置を用いていた。これについては、例えば検出されたマーカの姿勢情報を用いてもよい。例えば、マーカの配置が同方向を示さなければ、対応する仮想オブジェクトを特定の配置で表示しないよう構成する。あるいは組み合わせの判断を行う際に、マーカの位置情報に加えて姿勢情報も用いるよう構成してもよい。例えば、マーカの配置が、隣接して対面する向きである場合に、対応する仮想オブジェクトを特定の配置で表示するよう構成する。または、マーカの配置が、隣接して互いに背向する向きである場合に、対応する仮想オブジェクトを特定の配置で表示するよう構成する。このように構成することにより、より柔軟に拡張現実空間を実現することができる。
【0125】
また、関連識別情報は各々のマーカについて一つだけであってもよいし複数であってもよい。なお、複数の関連識別情報を持つマーカが、それぞれの関連識別情報と同じ識別情報を対応識別情報として持つマーカと共に検出された場合、特定の配置で表示することが好ましい関連仮想オブジェクトが複数存在することになる。このような場合、これら複数の関連仮想オブジェクトのうち、どの仮想オブジェクトと組み合わせて表示するか選択する指示を受け付ける手段を有するよう構成してもよい。これは受け付け手段の一例である。なお、ある一つの組み合わせで表示することをユーザが選択した場合、他の選択されなかった組み合わせの関連仮想オブジェクトは表示されないよう構成してもよい。
【0126】
また、スルー画像上に表示される仮想オブジェクトの表示位置、サイズ、姿勢等は、スルー画像上に表示された後からも、ユーザの指示により自由に変更することができるよう構成してもよい。その場合、変更した仮想オブジェクトの識別情報毎に変更量を保持しておき、該仮想オブジェクトの表示が行われる度に、保持されている変更量を反映して表示するよう構成される。このように構成することで、よりユーザの意図に沿った拡張現実空間の実現が可能となる。
【0127】
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
【特許請求の範囲】
【請求項1】
画像に含まれる複数のマーカに関する情報を取得する取得手段と、
前記複数のマーカにそれぞれ対応する複数の仮想オブジェクトを、前記画像に重畳して表示部に表示するよう制御する表示制御手段と、
前記複数の仮想オブジェクトが特定の組み合わせであるか否かを判断する判断手段とを有し、
前記判断手段により前記複数の仮想オブジェクトが特定の組み合わせであると判断された場合、前記表示制御手段は、前記複数の仮想オブジェクトを、前記特定の組み合わせに対応した特定の配置で前記画像に重畳して前記表示部に表示するよう制御することを特徴とする画像処理装置。
【請求項2】
前記判断手段により前記複数の仮想オブジェクトが特定の組み合わせであると判断された場合、前記表示制御手段は、前記複数の仮想オブジェクトを、対応するマーカのそれぞれの画像上の位置に基づき、前記特定の配置で前記画像に重畳して表示するよう制御することを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記判断手段により前記複数の仮想オブジェクトが特定の組み合わせであると判断された場合、前記表示制御手段は、前記複数の仮想オブジェクトを、対応するマーカのそれぞれの画像上の位置の少なくともいずれか一つに基づき、前記特定の配置で前記画像に重畳して表示するよう制御することを特徴とする請求項1に記載の画像処理装置。
【請求項4】
前記判断手段により前記複数の仮想オブジェクトが特定の組み合わせであると判断された場合、前記表示制御手段は、前記複数の仮想オブジェクトを、対応するマーカのそれぞれの画像上の位置の間に、前記特定の配置で前記画像に重畳して表示するよう制御することを特徴とする請求項1に記載の画像処理装置。
【請求項5】
前記判断手段により前記複数の仮想オブジェクトが特定の組み合わせでないと判断された場合、前記表示制御手段は、前記複数の仮想オブジェクトを、対応するマーカのそれぞれの画像上の位置に基づき、前記特定の配置とは異なる配置で前記画像に重畳して表示することを特徴とする請求項1乃至4のいずれか1項に記載の画像処理装置。
【請求項6】
前記マーカは、該マーカの仮想オブジェクトと他のマーカの仮想オブジェクトとの組み合わせの関係を示す組み合わせ情報を含み、
前記判断手段は、前記組み合わせ情報に基づき、前記複数のマーカに対応する仮想オブジェクトが特定の組み合わせであるか否かを判断することを特徴とする請求項1乃至5のいずれか1項に記載の画像処理装置。
【請求項7】
前記判断手段が、複数の特定の組み合わせに共通した仮想オブジェクトが含まれると判断した場合、前記表示制御手段は、前記複数の組み合わせのうちいずれか一つの組み合わせの仮想オブジェクトを、前記特定の配置で表示することを特徴とする請求項6に記載の画像処理装置。
【請求項8】
前記複数の特定の組み合わせのうちいずれか一つの組み合わせを選択する指示を受け付ける受け付け手段を有し、
前記表示制御手段は、前記受け付け手段が受け付けた指示により選択された特定の組み合わせの仮想オブジェクトを、前記特定の配置で表示することを特徴とする請求項7に記載の画像処理装置。
【請求項9】
前記受け付け手段が受け付けた指示により選択されなかった組み合わせに含まれる仮想オブジェクトのうち、前記複数の特定の組み合わせに共通した仮想オブジェクト以外の仮想オブジェクトは表示されないことを特徴とする請求項8に記載の画像処理装置。
【請求項10】
前記表示制御手段により前記複数の仮想オブジェクトを前記特定の配置で表示するか否かは、ユーザが選択することができることを特徴とする請求項1乃至9のいずれか1項に記載の画像処理装置。
【請求項11】
前記複数のマーカの画像上の位置に基づき、前記特定の配置で表示するか否か決定する手段を有することを特徴とする請求項1乃至10のいずれか1項に記載の画像処理装置。
【請求項12】
前記表示制御手段は、前記複数のマーカの間の距離が所定の値以上の場合には、前記複数のマーカにそれぞれ対応する複数の仮想オブジェクトが特定の組み合わせであっても、前記特定の配置で表示しないよう制御することを特徴とする請求項1乃至11のいずれか1項に記載の画像処理装置。
【請求項13】
前記表示制御手段は、前記複数のマーカの姿勢が同方向を向いていない場合、前記複数のマーカにそれぞれ対応する複数の仮想オブジェクトが特定の組み合わせであっても、前記複数の仮想オブジェクトを、前記特定の配置で表示しないよう制御することを特徴とする請求項1乃至12のいずれか1項に記載の画像処理装置。
【請求項14】
前記表示制御手段は、前記複数のマーカの配置が互いに隣接して対面する配置でない場合、前記複数のマーカにそれぞれ対応する複数の仮想オブジェクトが特定の組み合わせであっても、前記複数の仮想オブジェクトを、前記特定の配置で表示しないよう制御することを特徴とする請求項1乃至12のいずれか1項に記載の画像処理装置。
【請求項15】
前記表示制御手段は、前記複数のマーカの配置が互いに隣接して背向する配置でない場合、前記複数のマーカにそれぞれ対応する複数の仮想オブジェクトが特定の組み合わせであっても、前記複数の仮想オブジェクトを、前記特定の配置で表示しないよう制御することを特徴とする請求項1乃至12のいずれか1項に記載の画像処理装置。
【請求項16】
前記特定の配置とは、前記判断手段により特定の組み合わせであると判断された複数の仮想オブジェクトにそれぞれ対応する複数のマーカの画像上の位置関係とは異なる位置関係を示す配置であることを特徴とする請求項1乃至15のいずれか1項に記載の画像処理装置。
【請求項17】
前記マーカは、前記マーカに対応する仮想オブジェクトと、前記仮想オブジェクトと組み合わせの関係にある他の仮想オブジェクトとの位置関係を示す配置情報を含み、
前記表示制御手段は、前記マーカに対応する仮想オブジェクトと、前記仮想オブジェクトと組み合わせの関係にある他の仮想オブジェクトとを、前記配置情報に基づき表示することを特徴とする請求項1乃至16のいずれか1項に記載の画像処理装置。
【請求項18】
前記配置情報は、前記マーカに対応する仮想オブジェクトに対する、前記仮想オブジェクトと組み合わせの関係にある他の仮想オブジェクトの向きを定める情報を含むことを特徴とする請求項17に記載の画像処理装置。
【請求項19】
前記表示制御手段は、前記複数のマーカに対応する複数の仮想オブジェクトを前記特定の配置で表示するよう制御する際に、前記複数のマーカの画像上の位置のうち、前記配置情報を持つマーカの前記画像上の位置に基づく配置で表示するよう制御することを特徴とする請求項17または18に記載の画像処理装置。
【請求項20】
前記画像から前記複数のマーカを検出する検出手段を更に有することを特徴とする請求項1乃至19のいずれか1項に記載の画像処理装置。
【請求項21】
前記マーカの画像上の位置は、前記検出手段によりマーカが検出されることで決定されることを特徴とする請求項20に記載の画像処理装置。
【請求項22】
前記検出手段により検出された複数のマーカの検出時刻に基づき、前記特定の配置で表示するか否か決定する手段を有することを特徴とする請求項20または21に記載の画像処理装置。
【請求項23】
前記表示制御手段は、前記検出手段により検出された複数のマーカの検出時刻の差が、一定時間以上である場合、それらのマーカに対応する仮想オブジェクトを前記特定の配置で表示しないことを特徴とする請求項20乃至22のいずれか1項に記載の画像処理装置。
【請求項24】
前記検出手段により検出したマーカが示す識別情報を取得する手段と、
前記識別情報を外部装置に送信する送信手段と、
前記識別情報に対応する仮想オブジェクトを、前記外部装置から受信する手段とを有することを特徴とする請求項20乃至23のいずれか1項に記載の画像処理装置。
【請求項25】
前記仮想オブジェクトを保持する保持手段を更に有することを特徴とする請求項1乃至24のいずれか1項に記載の画像処理装置。
【請求項26】
前記保持手段は、前記仮想オブジェクトと前記マーカとの対応関係を保持することを特徴とする請求項25に記載の画像処理装置。
【請求項27】
前記表示制御手段は、ユーザの指示に応じて、前記画像に重畳して表示されている仮想オブジェクトの表示を変更することを特徴とする請求項1乃至26のいずれか1項に記載の画像処理装置。
【請求項28】
画像処理装置と通信できる情報処理装置であって、
前記画像処理装置から、画像に含まれる複数のマーカに関する情報を受信する受信手段と、
前記マーカに対応する仮想オブジェクトを保持する保持手段と、
前記複数のマーカのそれぞれに対応する複数の仮想オブジェクトが特定の組み合わせであるか否かを判断する判断手段と、
前記判断手段により前記複数の仮想オブジェクトが特定の組み合わせであると判断された場合、前記複数の仮想オブジェクトを、前記画像処理装置から受信した前記複数のマーカに関する情報に基づき加工する加工手段と、
前記加工手段により加工された仮想オブジェクトを前記画像処理装置へ送信する送信手段とを有することを特徴とする情報処理装置。
【請求項29】
前記保持手段は、前記仮想オブジェクトに、他の仮想オブジェクトを、推奨仮想オブジェクトとして関連づけた仮想オブジェクトテーブルを保持し、
前記送信手段は、前記仮想オブジェクトテーブルと、前記受信手段により受信されたマーカに関する情報とに基づき、前記受信手段により受信されたマーカに対応する仮想オブジェクトに関連づけられた他の仮想オブジェクトを、推奨仮想オブジェクトとして、前記受信手段により受信されたマーカに対応する仮想オブジェクトと共に前記画像処理装置に送信することを特徴とする請求項28に記載の情報処理装置。
【請求項30】
前記推奨仮想オブジェクトは、前記仮想オブジェクトと共に表示される頻度の最も高い仮想オブジェクトであることを特徴とする請求項29に記載の情報処理装置。
【請求項31】
画像に含まれる複数のマーカに関する情報を取得する取得工程と、
前記複数のマーカにそれぞれ対応する複数の仮想オブジェクトを、前記画像に重畳して表示する表示工程と、
前記複数の仮想オブジェクトが特定の組み合わせであるか否かを判断する判断工程とを有し、
前記判断工程にて前記複数の仮想オブジェクトが特定の組み合わせであると判断された場合、前記表示工程では、前記複数の仮想オブジェクトを、前記特定の組み合わせに対応した特定の配置で前記画像に重畳して表示することを特徴とする画像処理装置の制御方法。
【請求項32】
画像処理装置と通信できる情報処理装置の制御方法であって、
前記画像処理装置から、画像に含まれる複数のマーカに関する情報を受信する受信工程と、
前記マーカに対応する仮想オブジェクトを保持する保持工程と、
前記複数のマーカのそれぞれに対応する複数の仮想オブジェクトが特定の組み合わせであるか否かを判断する判断工程と、
前記判断工程で前記複数の仮想オブジェクトが特定の組み合わせであると判断された場合、前記複数の仮想オブジェクトを、前記画像処理装置から受信した前記複数のマーカに関する情報に基づき加工する加工工程と、
前記加工工程にて加工された仮想オブジェクトを前記画像処理装置へ送信する送信工程とを有することを特徴とする情報処理装置の制御方法。
【請求項33】
コンピュータを請求項1乃至27のいずれか1項に記載の画像処理装置として動作させるための、コンピュータが読み取り可能なプログラム。
【請求項34】
コンピュータを請求項28乃至30のいずれか1項に記載の情報処理装置として動作させるための、コンピュータが読み取り可能なプログラム。
【請求項1】
画像に含まれる複数のマーカに関する情報を取得する取得手段と、
前記複数のマーカにそれぞれ対応する複数の仮想オブジェクトを、前記画像に重畳して表示部に表示するよう制御する表示制御手段と、
前記複数の仮想オブジェクトが特定の組み合わせであるか否かを判断する判断手段とを有し、
前記判断手段により前記複数の仮想オブジェクトが特定の組み合わせであると判断された場合、前記表示制御手段は、前記複数の仮想オブジェクトを、前記特定の組み合わせに対応した特定の配置で前記画像に重畳して前記表示部に表示するよう制御することを特徴とする画像処理装置。
【請求項2】
前記判断手段により前記複数の仮想オブジェクトが特定の組み合わせであると判断された場合、前記表示制御手段は、前記複数の仮想オブジェクトを、対応するマーカのそれぞれの画像上の位置に基づき、前記特定の配置で前記画像に重畳して表示するよう制御することを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記判断手段により前記複数の仮想オブジェクトが特定の組み合わせであると判断された場合、前記表示制御手段は、前記複数の仮想オブジェクトを、対応するマーカのそれぞれの画像上の位置の少なくともいずれか一つに基づき、前記特定の配置で前記画像に重畳して表示するよう制御することを特徴とする請求項1に記載の画像処理装置。
【請求項4】
前記判断手段により前記複数の仮想オブジェクトが特定の組み合わせであると判断された場合、前記表示制御手段は、前記複数の仮想オブジェクトを、対応するマーカのそれぞれの画像上の位置の間に、前記特定の配置で前記画像に重畳して表示するよう制御することを特徴とする請求項1に記載の画像処理装置。
【請求項5】
前記判断手段により前記複数の仮想オブジェクトが特定の組み合わせでないと判断された場合、前記表示制御手段は、前記複数の仮想オブジェクトを、対応するマーカのそれぞれの画像上の位置に基づき、前記特定の配置とは異なる配置で前記画像に重畳して表示することを特徴とする請求項1乃至4のいずれか1項に記載の画像処理装置。
【請求項6】
前記マーカは、該マーカの仮想オブジェクトと他のマーカの仮想オブジェクトとの組み合わせの関係を示す組み合わせ情報を含み、
前記判断手段は、前記組み合わせ情報に基づき、前記複数のマーカに対応する仮想オブジェクトが特定の組み合わせであるか否かを判断することを特徴とする請求項1乃至5のいずれか1項に記載の画像処理装置。
【請求項7】
前記判断手段が、複数の特定の組み合わせに共通した仮想オブジェクトが含まれると判断した場合、前記表示制御手段は、前記複数の組み合わせのうちいずれか一つの組み合わせの仮想オブジェクトを、前記特定の配置で表示することを特徴とする請求項6に記載の画像処理装置。
【請求項8】
前記複数の特定の組み合わせのうちいずれか一つの組み合わせを選択する指示を受け付ける受け付け手段を有し、
前記表示制御手段は、前記受け付け手段が受け付けた指示により選択された特定の組み合わせの仮想オブジェクトを、前記特定の配置で表示することを特徴とする請求項7に記載の画像処理装置。
【請求項9】
前記受け付け手段が受け付けた指示により選択されなかった組み合わせに含まれる仮想オブジェクトのうち、前記複数の特定の組み合わせに共通した仮想オブジェクト以外の仮想オブジェクトは表示されないことを特徴とする請求項8に記載の画像処理装置。
【請求項10】
前記表示制御手段により前記複数の仮想オブジェクトを前記特定の配置で表示するか否かは、ユーザが選択することができることを特徴とする請求項1乃至9のいずれか1項に記載の画像処理装置。
【請求項11】
前記複数のマーカの画像上の位置に基づき、前記特定の配置で表示するか否か決定する手段を有することを特徴とする請求項1乃至10のいずれか1項に記載の画像処理装置。
【請求項12】
前記表示制御手段は、前記複数のマーカの間の距離が所定の値以上の場合には、前記複数のマーカにそれぞれ対応する複数の仮想オブジェクトが特定の組み合わせであっても、前記特定の配置で表示しないよう制御することを特徴とする請求項1乃至11のいずれか1項に記載の画像処理装置。
【請求項13】
前記表示制御手段は、前記複数のマーカの姿勢が同方向を向いていない場合、前記複数のマーカにそれぞれ対応する複数の仮想オブジェクトが特定の組み合わせであっても、前記複数の仮想オブジェクトを、前記特定の配置で表示しないよう制御することを特徴とする請求項1乃至12のいずれか1項に記載の画像処理装置。
【請求項14】
前記表示制御手段は、前記複数のマーカの配置が互いに隣接して対面する配置でない場合、前記複数のマーカにそれぞれ対応する複数の仮想オブジェクトが特定の組み合わせであっても、前記複数の仮想オブジェクトを、前記特定の配置で表示しないよう制御することを特徴とする請求項1乃至12のいずれか1項に記載の画像処理装置。
【請求項15】
前記表示制御手段は、前記複数のマーカの配置が互いに隣接して背向する配置でない場合、前記複数のマーカにそれぞれ対応する複数の仮想オブジェクトが特定の組み合わせであっても、前記複数の仮想オブジェクトを、前記特定の配置で表示しないよう制御することを特徴とする請求項1乃至12のいずれか1項に記載の画像処理装置。
【請求項16】
前記特定の配置とは、前記判断手段により特定の組み合わせであると判断された複数の仮想オブジェクトにそれぞれ対応する複数のマーカの画像上の位置関係とは異なる位置関係を示す配置であることを特徴とする請求項1乃至15のいずれか1項に記載の画像処理装置。
【請求項17】
前記マーカは、前記マーカに対応する仮想オブジェクトと、前記仮想オブジェクトと組み合わせの関係にある他の仮想オブジェクトとの位置関係を示す配置情報を含み、
前記表示制御手段は、前記マーカに対応する仮想オブジェクトと、前記仮想オブジェクトと組み合わせの関係にある他の仮想オブジェクトとを、前記配置情報に基づき表示することを特徴とする請求項1乃至16のいずれか1項に記載の画像処理装置。
【請求項18】
前記配置情報は、前記マーカに対応する仮想オブジェクトに対する、前記仮想オブジェクトと組み合わせの関係にある他の仮想オブジェクトの向きを定める情報を含むことを特徴とする請求項17に記載の画像処理装置。
【請求項19】
前記表示制御手段は、前記複数のマーカに対応する複数の仮想オブジェクトを前記特定の配置で表示するよう制御する際に、前記複数のマーカの画像上の位置のうち、前記配置情報を持つマーカの前記画像上の位置に基づく配置で表示するよう制御することを特徴とする請求項17または18に記載の画像処理装置。
【請求項20】
前記画像から前記複数のマーカを検出する検出手段を更に有することを特徴とする請求項1乃至19のいずれか1項に記載の画像処理装置。
【請求項21】
前記マーカの画像上の位置は、前記検出手段によりマーカが検出されることで決定されることを特徴とする請求項20に記載の画像処理装置。
【請求項22】
前記検出手段により検出された複数のマーカの検出時刻に基づき、前記特定の配置で表示するか否か決定する手段を有することを特徴とする請求項20または21に記載の画像処理装置。
【請求項23】
前記表示制御手段は、前記検出手段により検出された複数のマーカの検出時刻の差が、一定時間以上である場合、それらのマーカに対応する仮想オブジェクトを前記特定の配置で表示しないことを特徴とする請求項20乃至22のいずれか1項に記載の画像処理装置。
【請求項24】
前記検出手段により検出したマーカが示す識別情報を取得する手段と、
前記識別情報を外部装置に送信する送信手段と、
前記識別情報に対応する仮想オブジェクトを、前記外部装置から受信する手段とを有することを特徴とする請求項20乃至23のいずれか1項に記載の画像処理装置。
【請求項25】
前記仮想オブジェクトを保持する保持手段を更に有することを特徴とする請求項1乃至24のいずれか1項に記載の画像処理装置。
【請求項26】
前記保持手段は、前記仮想オブジェクトと前記マーカとの対応関係を保持することを特徴とする請求項25に記載の画像処理装置。
【請求項27】
前記表示制御手段は、ユーザの指示に応じて、前記画像に重畳して表示されている仮想オブジェクトの表示を変更することを特徴とする請求項1乃至26のいずれか1項に記載の画像処理装置。
【請求項28】
画像処理装置と通信できる情報処理装置であって、
前記画像処理装置から、画像に含まれる複数のマーカに関する情報を受信する受信手段と、
前記マーカに対応する仮想オブジェクトを保持する保持手段と、
前記複数のマーカのそれぞれに対応する複数の仮想オブジェクトが特定の組み合わせであるか否かを判断する判断手段と、
前記判断手段により前記複数の仮想オブジェクトが特定の組み合わせであると判断された場合、前記複数の仮想オブジェクトを、前記画像処理装置から受信した前記複数のマーカに関する情報に基づき加工する加工手段と、
前記加工手段により加工された仮想オブジェクトを前記画像処理装置へ送信する送信手段とを有することを特徴とする情報処理装置。
【請求項29】
前記保持手段は、前記仮想オブジェクトに、他の仮想オブジェクトを、推奨仮想オブジェクトとして関連づけた仮想オブジェクトテーブルを保持し、
前記送信手段は、前記仮想オブジェクトテーブルと、前記受信手段により受信されたマーカに関する情報とに基づき、前記受信手段により受信されたマーカに対応する仮想オブジェクトに関連づけられた他の仮想オブジェクトを、推奨仮想オブジェクトとして、前記受信手段により受信されたマーカに対応する仮想オブジェクトと共に前記画像処理装置に送信することを特徴とする請求項28に記載の情報処理装置。
【請求項30】
前記推奨仮想オブジェクトは、前記仮想オブジェクトと共に表示される頻度の最も高い仮想オブジェクトであることを特徴とする請求項29に記載の情報処理装置。
【請求項31】
画像に含まれる複数のマーカに関する情報を取得する取得工程と、
前記複数のマーカにそれぞれ対応する複数の仮想オブジェクトを、前記画像に重畳して表示する表示工程と、
前記複数の仮想オブジェクトが特定の組み合わせであるか否かを判断する判断工程とを有し、
前記判断工程にて前記複数の仮想オブジェクトが特定の組み合わせであると判断された場合、前記表示工程では、前記複数の仮想オブジェクトを、前記特定の組み合わせに対応した特定の配置で前記画像に重畳して表示することを特徴とする画像処理装置の制御方法。
【請求項32】
画像処理装置と通信できる情報処理装置の制御方法であって、
前記画像処理装置から、画像に含まれる複数のマーカに関する情報を受信する受信工程と、
前記マーカに対応する仮想オブジェクトを保持する保持工程と、
前記複数のマーカのそれぞれに対応する複数の仮想オブジェクトが特定の組み合わせであるか否かを判断する判断工程と、
前記判断工程で前記複数の仮想オブジェクトが特定の組み合わせであると判断された場合、前記複数の仮想オブジェクトを、前記画像処理装置から受信した前記複数のマーカに関する情報に基づき加工する加工工程と、
前記加工工程にて加工された仮想オブジェクトを前記画像処理装置へ送信する送信工程とを有することを特徴とする情報処理装置の制御方法。
【請求項33】
コンピュータを請求項1乃至27のいずれか1項に記載の画像処理装置として動作させるための、コンピュータが読み取り可能なプログラム。
【請求項34】
コンピュータを請求項28乃至30のいずれか1項に記載の情報処理装置として動作させるための、コンピュータが読み取り可能なプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2013−92887(P2013−92887A)
【公開日】平成25年5月16日(2013.5.16)
【国際特許分類】
【出願番号】特願2011−234203(P2011−234203)
【出願日】平成23年10月25日(2011.10.25)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成25年5月16日(2013.5.16)
【国際特許分類】
【出願日】平成23年10月25日(2011.10.25)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]