(57)【特許請求の範囲】
【請求項１】
画像に含まれる複数のマーカに関する情報を取得する取得手段と、
前記複数のマーカにそれぞれ対応する複数の仮想オブジェクトを、前記画像に重畳して表示部に表示するよう制御する表示制御手段と、
ユーザ操作を受け付ける受け付け手段と、
前記複数の仮想オブジェクトが特定の組み合わせであるか否かを判断する判断手段とを有し、
前記判断手段により前記複数の仮想オブジェクトが一つの特定の組み合わせであると判断された場合、前記表示制御手段は、前記複数の仮想オブジェクトを、前記特定の組み合わせに対応した特定の配置で前記画像に重畳して前記表示部に表示するよう制御し、
前記判断手段が、前記複数の仮想オブジェクトが複数の特定の組み合わせを含むと判断した場合、前記受け付け手段は前記複数の特定の組み合わせのうちいずれか一つの組み合わせを選択する指示をユーザから受け付け、
前記表示制御手段は、前記受け付け手段が受け付けた指示により選択された特定の組み合わせの仮想オブジェクトを、前記特定の配置で表示し、前記受け付け手段が受け付けた指示により選択されなかった組み合わせに含まれる仮想オブジェクトのうち、前記複数の特定の組み合わせに共通した仮想オブジェクト以外の仮想オブジェクトを表示しないことを特徴とする画像処理装置。
【請求項２】
前記判断手段により前記複数の仮想オブジェクトが特定の組み合わせであると判断された場合、前記表示制御手段は、前記複数の仮想オブジェクトを、対応するマーカのそれぞれの画像上の位置に基づき、前記特定の配置で前記画像に重畳して表示するよう制御することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記判断手段により前記複数の仮想オブジェクトが特定の組み合わせであると判断された場合、前記表示制御手段は、前記複数の仮想オブジェクトを、対応するマーカのそれぞれの画像上の位置の少なくともいずれか一つに基づき、前記特定の配置で前記画像に重畳して表示するよう制御することを特徴とする請求項１に記載の画像処理装置。
【請求項４】
前記判断手段により前記複数の仮想オブジェクトが特定の組み合わせであると判断された場合、前記表示制御手段は、前記複数の仮想オブジェクトを、対応するマーカのそれぞれの画像上の位置の間に、前記特定の配置で前記画像に重畳して表示するよう制御することを特徴とする請求項１に記載の画像処理装置。
【請求項５】
前記判断手段により前記複数の仮想オブジェクトが特定の組み合わせでないと判断された場合、前記表示制御手段は、前記複数の仮想オブジェクトを、対応するマーカのそれぞれの画像上の位置に基づき、前記特定の配置とは異なる配置で前記画像に重畳して表示することを特徴とする請求項１乃至４のいずれか１項に記載の画像処理装置。
【請求項６】
前記マーカは、該マーカの仮想オブジェクトと他のマーカの仮想オブジェクトとの組み合わせの関係を示す組み合わせ情報を含み、
前記判断手段は、前記組み合わせ情報に基づき、前記複数のマーカに対応する仮想オブジェクトが特定の組み合わせであるか否かを判断することを特徴とする請求項１乃至５のいずれか１項に記載の画像処理装置。
【請求項７】
前記表示制御手段により前記複数の仮想オブジェクトを前記特定の配置で表示するか否かは、ユーザが選択することができることを特徴とする請求項１乃至６のいずれか１項に記載の画像処理装置。
【請求項８】
前記複数のマーカの画像上の位置に基づき、前記特定の配置で表示するか否か決定する手段を有することを特徴とする請求項１乃至７のいずれか１項に記載の画像処理装置。
【請求項９】
前記表示制御手段は、前記複数のマーカの間の距離が所定の値以上の場合には、前記複数のマーカにそれぞれ対応する複数の仮想オブジェクトが特定の組み合わせであっても、前記特定の配置で表示しないよう制御することを特徴とする請求項１乃至８のいずれか１項に記載の画像処理装置。
【請求項１０】
前記表示制御手段は、前記複数のマーカの姿勢が同方向を向いていない場合、前記複数のマーカにそれぞれ対応する複数の仮想オブジェクトが特定の組み合わせであっても、前記複数の仮想オブジェクトを、前記特定の配置で表示しないよう制御することを特徴とする請求項１乃至９のいずれか１項に記載の画像処理装置。
【請求項１１】
前記表示制御手段は、前記複数のマーカの配置が互いに隣接して対面する配置でない場合、前記複数のマーカにそれぞれ対応する複数の仮想オブジェクトが特定の組み合わせであっても、前記複数の仮想オブジェクトを、前記特定の配置で表示しないよう制御することを特徴とする請求項１乃至９のいずれか１項に記載の画像処理装置。
【請求項１２】
前記表示制御手段は、前記複数のマーカの配置が互いに隣接して背向する配置でない場合、前記複数のマーカにそれぞれ対応する複数の仮想オブジェクトが特定の組み合わせであっても、前記複数の仮想オブジェクトを、前記特定の配置で表示しないよう制御することを特徴とする請求項１乃至９のいずれか１項に記載の画像処理装置。
【請求項１３】
前記特定の配置とは、前記判断手段により特定の組み合わせであると判断された複数の仮想オブジェクトにそれぞれ対応する複数のマーカの画像上の位置関係とは異なる位置関係を示す配置であることを特徴とする請求項１乃至１２のいずれか１項に記載の画像処理装置。
【請求項１４】
前記マーカは、前記マーカに対応する仮想オブジェクトと、前記仮想オブジェクトと組み合わせの関係にある他の仮想オブジェクトとの位置関係を示す配置情報を含み、
前記表示制御手段は、前記マーカに対応する仮想オブジェクトと、前記仮想オブジェクトと組み合わせの関係にある他の仮想オブジェクトとを、前記配置情報に基づき表示することを特徴とする請求項１乃至１３のいずれか１項に記載の画像処理装置。
【請求項１５】
前記配置情報は、前記マーカに対応する仮想オブジェクトに対する、前記仮想オブジェクトと組み合わせの関係にある他の仮想オブジェクトの向きを定める情報を含むことを特徴とする請求項１４に記載の画像処理装置。
【請求項１６】
前記表示制御手段は、前記複数のマーカに対応する複数の仮想オブジェクトを前記特定の配置で表示するよう制御する際に、前記複数のマーカの画像上の位置のうち、前記配置情報を持つマーカの前記画像上の位置に基づく配置で表示するよう制御することを特徴とする請求項１４または１５に記載の画像処理装置。
【請求項１７】
前記画像から前記複数のマーカを検出する検出手段を更に有し、
前記検出手段により検出された複数のマーカの検出時刻に基づき、前記特定の配置で表示するか否か決定する手段を有することを特徴とする請求項１乃至１６のいずれか１項に記載の画像処理装置。
【請求項１８】
前記表示制御手段は、前記検出手段により検出された複数のマーカの検出時刻の差が、一定時間以上である場合、それらのマーカに対応する仮想オブジェクトを前記特定の配置で表示しないことを特徴とする請求項１７に記載の画像処理装置。
【請求項１９】
前記検出手段により検出したマーカが示す識別情報を取得する手段と、
前記識別情報を外部装置に送信する送信手段と、
前記識別情報に対応する仮想オブジェクトを、前記外部装置から受信する手段とを有することを特徴とする請求項１７または１８に記載の画像処理装置。
【請求項２０】
前記仮想オブジェクトを保持する保持手段を更に有することを特徴とする請求項１乃至１９のいずれか１項に記載の画像処理装置。
【請求項２１】
前記保持手段は、前記仮想オブジェクトと前記マーカとの対応関係を保持することを特徴とする請求項２０に記載の画像処理装置。
【請求項２２】
前記表示制御手段は、ユーザの指示に応じて、前記画像に重畳して表示されている仮想オブジェクトの表示を変更することを特徴とする請求項１乃至２１のいずれか１項に記載の画像処理装置。
【請求項２３】
画像に含まれる複数のマーカに関する情報を取得する取得工程と、
前記複数のマーカにそれぞれ対応する複数の仮想オブジェクトを、前記画像に重畳して表示する表示工程と、
前記複数の仮想オブジェクトが特定の組み合わせであるか否かを判断する判断工程とを有し、
前記判断工程にて前記複数の仮想オブジェクトが一つの特定の組み合わせであると判断された場合、前記表示工程では、前記複数の仮想オブジェクトを、前記特定の組み合わせに対応した特定の配置で前記画像に重畳して表示するよう制御し、
前記判断工程にて、前記複数の仮想オブジェクトが複数の特定の組み合わせを含むと判断された場合、前記複数の特定の組み合わせのうちいずれか一つの組み合わせを選択する指示をユーザから受け付け、前記表示工程では、前記指示により選択された特定の組み合わせの仮想オブジェクトを、前記特定の配置で表示し、前記指示により選択されなかった組み合わせに含まれる仮想オブジェクトのうち、前記複数の特定の組み合わせに共通した仮想オブジェクト以外の仮想オブジェクトを表示しないよう制御することを特徴とする画像処理装置の制御方法。
【請求項２４】
コンピュータを請求項１乃至２２のいずれか１項に記載の画像処理装置として動作させるための、コンピュータが読み取り可能なプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、拡張現実空間を実現することができる画像処理装置および情報処理装置に関する。
【背景技術】
【０００２】
近年、拡張現実（ＡＲ：Ａｕｇｍｅｎｔｅｄ  Ｒｅａｌｉｔｙ）技術を利用した様々なサービスが提供されている。例えば、ＡＲ技術を用いると、現実の世界を撮像した画像上に現実の世界の位置に対応した情報を合成表示することができる。この技術を用いたサービスとして、家具・家電等があたかも実際に自室に置かれているかのような画像を閲覧することができるサービスがある。例えば、ベッドやソファ、冷蔵庫や洗濯機などの比較的サイズの大きい家具・家電等は、実物を実際に部屋に配置して、配置位置や配置した際の雰囲気などを気軽に確認することが困難であった。これに対して、ＡＲ技術を用いることにより、ユーザは家具や家電等の実寸を計測し配置したい箇所に収まるか試みる、他の家具・家電と調和しているかどうかシミュレーションする、といった作業を負荷なく行なうことが可能となる。
例えば、特許文献１ではマーカが付されたカードを含む現実空間をカメラで撮像し、撮像した画像を表示部へ表示するとともに、撮像された画像から検出したマーカに応じた画像を、撮像した画像に重畳して表示する技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００３−２５６８７６
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の拡張現実空間の実現方法では、撮像された画像上のマーカが認識された位置にマーカに対応する画像を表示していた。このような方法では、ユーザの意図に沿った拡張現実空間の実現が困難な場合がある。例えばＴＶボードの上にＴＶを配置することを拡張現実空間上でシミュレーションすることを考える。一般的に、ＴＶはＴＶボード上に配置され、ユーザもそのような配置を意図してマーカを配置するものと考えられる。しかしながら、従来の拡張現実空間の実現方法では、ＴＶのマーカとＴＶボードのマーカとを並べて置くだけでは、ＴＶとＴＶボードが並んで表示されたり、重なって表示されたりするだけであり、ユーザの意図通りの拡張現実空間を実現することが難しかった。
本発明は、上記の点に鑑み、ユーザの意図に沿った拡張現実空間を実現することを目的とするものである。
【課題を解決するための手段】
【０００５】
上記課題を解決するために、本発明の画像処理装置は、画像に含まれる複数のマーカに関する情報を取得する取得手段と、前記複数のマーカにそれぞれ対応する複数の仮想オブジェクトを、前記画像に重畳して表示部に表示するよう制御する表示制御手段と、ユーザ操作を受け付ける受け付け手段と、前記複数の仮想オブジェクトが特定の組み合わせであるか否かを判断する判断手段とを有し、前記判断手段により前記複数の仮想オブジェクトが一つの特定の組み合わせであると判断された場合、前記表示制御手段は、前記複数の仮想オブジェクトを、前記特定の組み合わせに対応した特定の配置で前記画像に重畳して前記表示部に表示するよう制御し、前記判断手段が、前記複数の仮想オブジェクトが複数の特定の組み合わせを含むと判断した場合、前記受け付け手段は前記複数の特定の組み合わせのうちいずれか一つの組み合わせを選択する指示をユーザから受け付け、前記表示制御手段は、前記受け付け手段が受け付けた指示により選択された特定の組み合わせの仮想オブジェクトを、前記特定の配置で表示し、前記受け付け手段が受け付けた指示により選択されなかった組み合わせに含まれる仮想オブジェクトのうち、前記複数の特定の組み合わせに共通した仮想オブジェクト以外の仮想オブジェクトを表示しないことを特徴とする。
【発明の効果】
【０００６】
本発明によれば、よりユーザの意図に沿った拡張現実空間を実現することができる。
【図面の簡単な説明】
【０００７】
【図１】第１の実施形態における画像処理装置のブロック図である。
【図２】第１の実施形態における、拡張現実空間の実現の一例を説明するための図である。
【図３】第１の実施形態における画像処理装置の動作を示すフローチャートである。
【図４】第２の実施形態における画像処理装置および情報処理装置のブロック図である。
【図５】第２の実施形態における画像処理装置の動作を示すフローチャートである。
【図６】第２の実施形態における情報処理装置の動作を示すフローチャートである。
【図７】第３の実施形態における画像処理装置の動作を示すフローチャートである。
【図８】第３の実施形態における情報処理装置の動作を示すフローチャートである。
【図９】第３の実施形態における推奨仮想オブジェクトテーブルの概念を示す図である。
【図１０】第３の実施形態における推奨仮想オブジェクトの表示例である。
【図１１】第４の実施形態における画像処理装置の動作を示すフローチャートである。
【発明を実施するための形態】
【０００８】
以下に、本発明を実施するための形態について、添付の図面を用いて詳細に説明する。
【０００９】
尚、以下に説明する実施の形態は、本発明の実現手段としての一例であり、本発明が適用される装置の構成や各種条件によって適宜修正又は変更されてもよい。また、各実施の形態は適宜組み合わされることも可能である。
【００１０】
［第１の実施形態］
はじめに、本実施形態の、拡張現実空間を実現可能な画像処理装置の一例であるデジタルカメラについて、図１を用いて説明する。図１はデジタルカメラ１００のブロック図である。
【００１１】
制御部１０１は、入力された信号や、後述のプログラムに従ってデジタルカメラ１００の各部を制御する。例えば、撮影処理や再生処理、ロギング処理などの制御を担う。それぞれの処理については後述する。なお、デジタルカメラ１００の制御は一つのハードウェアが行ってもよいし、複数のハードウェアが処理を分担することで、装置全体の制御を行ってもよい。
【００１２】
撮像部１０２は現実空間を撮影する撮影動作を行う。撮影動作とは、撮像部１０２に含まれるレンズで結像された被写体光を電気信号に変換し、ノイズ低減処理などを行い、デジタルデータを画像データとして出力する処理である。この撮像部１０２から出力された画像データは、表示部１０５に表示したり、記録媒体１０７に記録したりすることができる。
【００１３】
不揮発性メモリ１０３は、デジタルカメラ１００の各部を制御するためのプログラム（ファームウェア）や各種の設定情報を記憶している。後述する各フローチャートに示す処理を制御部１０１が制御するためのプログラムも、この不揮発性メモリ１０３に記録されている。
【００１４】
作業用メモリ１０４は、不揮発性メモリ１０３に保存されているプログラムが、展開されるためのメモリである。作業用メモリ１０４は制御部１０１のワークエリアとして使用される。
【００１５】
表示部１０５は、撮影の際のスルー画像データの表示、撮影した画像データの表示、対話的な操作のための文字表示などを行う。本実施形態において制御部１０１は、撮像部１０２から出力された画像データを、スルー画像として逐次更新しながら連続して表示部１０５に表示するよう制御する。さらに、後述するプログラムにより制御部１０１が仮想オブジェクトをスルー画像に重畳して表示することにより、拡張現実空間を実現する。拡張現実空間の実現の手順に関しては、後に詳述する。なお、表示部１０５はデジタルカメラ１００が備える必要はなく、デジタルカメラ１００は表示部１０５と接続することができ、表示部１０５の表示を制御する表示制御機能を少なくとも有していればよい。
【００１６】
操作部１０６はユーザがデジタルカメラの動作を指示するために用いられる。操作部１０６は、例えば、デジタルカメラの電源のオン／オフを指示するための電源ボタンや、撮影処理を行うためのレリーズスイッチ、画像データを閲覧するための再生ボタンなどの操作部材を含むよう構成される。
【００１７】
記録媒体１０７には、撮像部１０２から出力された画像データを記録することができる。また、記録媒体１０７には、拡張現実の実現のための仮想オブジェクトと仮想オブジェクトを示す識別情報とが対応づけられた仮想オブジェクトテーブルが記憶されている。本実施形態における仮想オブジェクトは、例えば家具や家電等の三次元画像モデルである。この三次元画像モデルの仮想オブジェクトも、記録媒体１０７に記録されている。本実施形態のデジタルカメラ１００は、撮像部１０２から出力されるスルー画像からマーカを検出する。そして、デジタルカメラ１００は、検出されたマーカを介して識別情報を取得する。デジタルカメラ１００は、取得した識別情報を仮想オブジェクトテーブルに照らし合わせることにより、識別情報が示す仮想オブジェクトを記録媒体１０７から取得する。取得された仮想オブジェクトはスルー画像上のマーカの位置に表示される。なお、記録媒体１０７は、デジタルカメラ１００に着脱可能なよう構成してもよいし、デジタルカメラ１００に内蔵されていてもよい。すなわち、デジタルカメラ１００は少なくとも記録媒体１０７にアクセスする手段を有していればよい。
【００１８】
以上が、本実施形態におけるデジタルカメラの構成である。
【００１９】
本実施形態では上述したデジタルカメラを用いて拡張現実空間を実現する。次に、拡張現実空間を実現する際のデジタルカメラ１００の具体的な利用例、および、表示部１０５に表示される拡張現実空間の例を図２に示す。
【００２０】
図２（ａ）は、現実空間上にマーカを配置した様子の一例である。この例では、ユーザが部屋にソファを置くことをシミュレーションしようとしている様子を示している。部屋内にはスピーカが１組あり、スピーカに対向する位置にマーカ２０１が配置されている。本実施形態におけるマーカは、例えば所定の仮想オブジェクトに対応する識別情報を、特定のパターンの二次元コードで表現したものである。以後、情報を特定のパターンの二次元コードで表現することを二次元コード化すると言う。また、マーカを印刷した用紙もマーカと称する。本実施形態の制御部１０１は、このマーカが示す特定のパターンに二次元コード化された識別情報を、パターン認識によって読み取る。ここで、マーカには検出用パターンが配されており、制御部１０１は、この検出用パターンをパターン認識により読み取ることで、マーカの存在を認識することができる。検出用パターンは例えばマーカの四隅に特定の模様を印刷することで二次元コード化される。制御部１０１は、パターン認識によってマーカを検出し、その結果に基づき、デジタルカメラ１００の位置に対するマーカの三次元位置を示す位置情報及びマーカの姿勢を示す姿勢情報を幾何学的に算出することができる。制御部１０１は、読み取った識別情報に対応する仮想オブジェクトを記録媒体１０７から読み出す。そして制御部１０１は、読み出した仮想オブジェクトをスルー画像上に重畳して表示することで、マーカに対応する仮想オブジェクトを用いた拡張現実空間を実現する。なお、マーカ２０１は、ソファの仮想オブジェクトと対応づけられた識別情報が二次元コード化されたものである。以後、あるマーカを配置することにより表示させたい仮想オブジェクトに対応する識別情報を、そのマーカの対応識別情報とも呼ぶ。
【００２１】
上記の図２（ａ）に示す部屋をデジタルカメラ１００にて撮影して、スルー画像を表示する際の、表示部１０５の表示例を図２（ｂ）に示す。図２（ｂ）は、マーカ２０１が置かれた位置及び姿勢に基づき、マーカ２０１に対応するソファの仮想オブジェクトがスルー画像上に表示されている様子を示す。この仮想オブジェクトの表示においては、マーカの三次元位置を示す位置情報及びマーカの姿勢を示す姿勢情報に基づき、記録媒体１０７に記録されている仮想オブジェクトに対して加工処理を行う。これにより、マーカが置かれた位置及び姿勢に適した仮想オブジェクトが表示される。ここで、加工処理とは拡大・縮小・回転等の処理である。例えば、図２（ａ）に示すマーカ２０１の対応識別情報には、図２（ｆ）に示すようなソファの仮想オブジェクトが対応づけられており、該ソファの仮想オブジェクトは記録媒体１０７に記録されている。この記録媒体１０７に記録されている仮想オブジェクトは、所定のサイズと姿勢の初期値が予め定められている。加工処理では、この予め定められた所定のサイズと姿勢の初期値をもとに、マーカが置かれた位置や姿勢に応じた拡大・縮小・回転等の処理を行う。これにより、例えば、図２（ｆ）に示されるソファの仮想オブジェクトは、図２（ｂ）に示されるように、マーカ２０１が配置された位置および姿勢に適したサイズと姿勢に加工され、マーカ２０１が配置された位置に適したスルー画像上の位置に表示される。この例では、マーカ２０１は、スピーカに対向する位置に配置され、ソファの仮想オブジェクトは、デジタルカメラ１００からマーカ２０１までの距離に応じたサイズで表示されている。また、マーカ２０１はスピーカの方向を向いていると判断され、ソファの仮想オブジェクトの姿勢もマーカ２０１の姿勢に対応する向きに表示されている。なお、これらの仮想オブジェクトの加工に関しては、既知の方法を用いることができる。仮想オブジェクトの表示の手順については後に詳述する。
【００２２】
以上のように、ユーザは、現実空間上にマーカを配置し、そのマーカを撮影してスルー画像上に表示することで、拡張現実空間上で、部屋にソファを置くことをシミュレーションすることができる。
【００２３】
次に、図２（ｃ）は、図２（ａ）の例に示す部屋に更に二つのマーカを配置した様子の一例を示す。この例は、更にＴＶボードと、ＴＶボードの上にＴＶを配置することをシミュレーションしようとしている例である。この例では、マーカ２０１に加えて、スピーカの間にマーカ２０２およびマーカ２０３が並べて配置されている。ここで、マーカ２０２はＴＶの仮想オブジェクトと対応づけられた識別情報を二次元コード化したものであり、マーカ２０３は、ＴＶボードの仮想オブジェクトと対応づけられた識別情報を二次元コード化したものである。従来の拡張現実空間を実現する装置では、このようにマーカ２０２およびマーカ２０３を横に並べて配置した場合、図２（ｄ）のようにそれぞれのマーカが置かれている位置に基づき、それぞれのマーカが示す仮想オブジェクトも横に並べて表示していた。これに対して、例えば図２（ｅ）に示すようにＴＶボードの上にＴＶを乗せた様子を示す拡張現実空間を実現する場合、何もない空中に、例えば手でマーカを持ったまま撮影しなければならなかった。すなわち、表示位置が安定せず、ユーザの手間もかかるなど、不便であった。このような課題が存在することから、ＴＶとＴＶボードのように特定の組み合わせの仮想オブジェクトを表示させる場合、従来の拡張現実の実現方法では手軽に適切な拡張現実空間を実現することが難しい。
【００２４】
そこで、本実施形態におけるデジタルカメラ１００は、マーカに含まれる対応識別情報、関連識別情報および配置情報に基づき、複数の仮想オブジェクトを適切な配置でスルー画像上に表示させるよう構成した。以下、関連識別情報及び配置情報について述べる。
【００２５】
本実施形態では、マーカは、対応識別情報だけでなく、関連識別情報も含むよう二次元コード化される。関連識別情報とは、マーカの対応識別情報に対応する仮想オブジェクトに対して、特定の配置で表示されることが望ましい他の仮想オブジェクトに対応する識別情報である。以降の説明では、マーカに含まれる対応識別情報に対応する仮想オブジェクトに対して、特定の配置で表示されることが望ましい他の仮想オブジェクトのことを、関連仮想オブジェクトとも記載する。
【００２６】
さらにマーカは、配置情報も含む。配置情報とは、マーカに含まれる識別情報に対応する仮想オブジェクトに対して、関連仮想オブジェクトをどのような位置関係で配置するのかを示す情報である。この情報は、マーカの識別情報に対応する仮想オブジェクトに対する、関連仮想オブジェクトの表示位置の情報と表示方向の情報とを含む。表示位置の情報は、対応識別情報に対応する仮想オブジェクトの重心に対する、関連仮想オブジェクトの重心の相対的な位置を示す。また、表示方向の情報は、マーカに含まれる識別情報に対応する仮想オブジェクトの表示方向に対する、関連仮想オブジェクトの相対的な表示方向を示す。なお、この配置情報は、関連識別情報にそれぞれ１対１で対応している。
【００２７】
このように構成されるマーカに対して、本実施形態のデジタルカメラ１００は、以下のように構成される。すなわち、あるマーカと、そのマーカに含まれる関連識別情報と同じ識別情報を対応識別情報として持つ他のマーカとが検出された場合、デジタルカメラ１００は、それぞれのマーカに対応する仮想オブジェクトを、配置情報に基づき特定の配置で表示する。
【００２８】
上述のＴＶとＴＶボードの例で言えば、ＴＶボードのマーカ２０３には、ＴＶボードの仮想オブジェクトを示す対応識別情報の他に、二つの情報が二次元コード化されている。一つはＴＶボードに組み合わせて特定の配置で表示することが好ましいマーカ２０２のＴＶの仮想オブジェクトを示す識別情報が、関連識別情報として二次元コード化されている。もう一つは、ＴＶボードの仮想オブジェクトに対して、ＴＶの仮想オブジェクトをどのように配置するかを示す配置情報が二次元コード化されている。なお、この例では、マーカ２０２およびマーカ２０１には関連識別情報や配置情報は含まれていない。そして、図２（ｃ）のようにマーカ２０２〜２０３が並べて配置された場合、それぞれの仮想オブジェクトは、マーカ２０３から得られる関連識別情報とマーカ２０２から得られる対応識別情報とに基づき、特定の配置で表示されることが好ましいと判断される。それぞれのマーカの仮想オブジェクトは、パターン認識により得られた位置情報および姿勢情報に加えて、配置情報にも基づき、図２（ｅ）のように表示される。この際、マーカ２０２のＴＶの仮想オブジェクトは、マーカ２０３のＴＶボードの仮想オブジェクトの重心位置をベースに、マーカ２０１に含まれる配置情報が示す位置と向きに基づき加工されて表示される。すなわち、マーカ２０２の位置情報および姿勢情報は用いられない。以降の説明では、このマーカ２０３の仮想オブジェクトのように、他のマーカの仮想オブジェクトと組み合わせて表示される際にベースとなる仮想オブジェクトを、関連仮想オブジェクトに対してベース仮想オブジェクトとも呼ぶ。
【００２９】
本実施形態では以上のように、関連識別情報及び配置情報を導入することにより、特定の組み合わせの仮想オブジェクトを適切な配置で表示することができる。
【００３０】
次に、本実施形態における拡張現実空間を実現する際の処理について図３を用いて説明する。図３は、拡張現実を実現する際のデジタルカメラ１００の動作を示すフローチャートである。このフローチャートに示す各処理は、制御部１０１が、不揮発性メモリ１０３に保存されているプログラムを読み出し、作業用メモリ１０４に展開してプログラムに従いデジタルカメラ１００の各部を制御することで実現される。
【００３１】
また、このフローチャートに示す処理は、デジタルカメラ１００が撮影モードとなることに応じて開始される。
【００３２】
まず、ステップＳ３０１にて、制御部１０１は、撮像部１０２を用いて撮像動作を行い、画像データを取得する。
【００３３】
続くステップＳ３０２では、制御部１０１は、ステップＳ３０１にて取得された画像データを、スルー画像として表示部１０５に表示する。
【００３４】
次に、ステップＳ３０３では、制御部１０１は、スルー画像から一または複数のマーカを検出する処理を行う。具体的には、制御部１０１はスルー画像から、マーカに印刷されている検出用パターンをパターン認識により検出する。
【００３５】
ステップＳ３０４では、制御部１０１は、ステップＳ３０３においてマーカを検出できたか否かを判断する。制御部１０１がマーカを検出できなかったと判断した場合、処理はステップＳ３１３に進む。一方、ステップＳ３０３において制御部１０１がマーカを検出できたと判断した場合、処理はステップＳ３０５に進む。
【００３６】
ステップＳ３０５では、制御部１０１は、ステップ３０３にて検出された一または複数のマーカのそれぞれについて、パターン認識の結果から、それぞれのマーカの三次元位置を示す位置情報、及びそれぞれのマーカの姿勢を示す姿勢情報を算出する。
【００３７】
次に、ステップＳ３０６にて、制御部１０１は、ステップ３０３にて検出された一または複数のマーカから、各マーカに二次元コード化された対応識別情報、関連識別情報、及び配置情報を取得する。
【００３８】
次に、ステップＳ３０７にて、制御部１０１は、ステップＳ３０６にて一または複数のマーカから取得された、それぞれの対応識別情報に対応する仮想オブジェクトを取得する。具体的には、制御部１０１は、記録媒体１０７に記録されている仮想オブジェクトテーブルと、ステップＳ３０６にて取得された対応識別情報とに基づき、該対応識別情報に対応する仮想オブジェクトを読み出す。
【００３９】
次に、ステップＳ３０８にて、制御部１０１は、ステップＳ３０７にて取得された仮想オブジェクトのうち、二つ以上を組み合わせて特定の配置で表示されることが好ましい仮想オブジェクトの組み合わせがあるか否かを判断する。具体的には、制御部１０１は、ステップＳ３０６にてあるマーカから取得された関連識別情報と、他のマーカから取得された対応識別情報とが、同じ情報であるか否かを判断する。前述したように、関連識別情報とは、該関連識別情報を含むマーカに対応する仮想オブジェクトと組み合わせて特定の配置で表示することが好ましい、他の仮想オブジェクトの対応識別情報を示す情報である。つまり、あるマーカの関連識別情報と他のマーカの対応識別情報とが同じ情報であることは、前者のマーカの仮想オブジェクトと後者の他のマーカの仮想オブジェクトとを特定の配置で表示することが好ましい組み合わせであると判断されることを示す。
【００４０】
言い換えれば、あるマーカの関連識別情報と他のマーカの対応識別情報とが同じ情報であることは、前者のマーカの仮想オブジェクトと後者のマーカの仮想オブジェクトが、ベース仮想オブジェクトとそれに関連する関連仮想オブジェクトの関係にあることを示す。
一方、あるマーカの関連識別情報と他のマーカの対応識別情報とが同じ情報でないことは、前者のマーカの仮想オブジェクトと後者の他のマーカの仮想オブジェクトとを特定の配置で表示する必要がない組み合わせであると判断されることを示す。
【００４１】
まず、ステップＳ３０８にて、制御部１０１が、ステップＳ３０７にて取得された仮想オブジェクトのうち、二つ以上を組み合わせて特定の配置で表示されることが好ましい仮想オブジェクトの組み合わせがないと判断した場合を考える。この場合、処理はステップＳ３０９に進む。
【００４２】
ステップＳ３０９では、制御部１０１は、ステップＳ３０５にて、それぞれのマーカのパターン認識結果から取得された位置情報および姿勢情報に基づき、それぞれのマーカの仮想オブジェクトを加工する。
【００４３】
次に、ステップＳ３１０では、制御部１０１は、ステップＳ３０９にて加工された仮想オブジェクトを、それぞれの位置情報に基づき、それぞれのマーカが検出されたスルー画像上の位置に重畳して表示する。この際、制御部１０１は、それぞれの位置情報に基づき、奥に配置されたマーカの仮想オブジェクトから順に重畳して表示していくことで、仮想オブジェクト同士の前後関係が自然に表示されるよう制御する。その後、処理はステップＳ３１３に進む。
【００４４】
ステップＳ３１３では、制御部１０１は、撮影モードを終了する指示を受け付けたか否かを判断する。制御部１０１が、撮影モードを終了する指示を受け付けたと判断した場合、本フローチャートの処理を終了する。一方、制御部１０１が、撮影モードを終了する指示を受け付けていないと判断した場合、処理はステップＳ３０１に戻り、本フローチャートの処理を繰り返す。つまり、撮影モードの間のスルー画像は、本フローチャートが繰り返される毎に更新される。同様に、仮想オブジェクトに関しても、本フローチャートを繰り返す毎に、新たな表示に更新される。
【００４５】
以上が、ステップＳ３０８にて特定の配置で表示することが好ましい仮想オブジェクトの組み合わせがないと判断された場合の処理である。
【００４６】
次に、ステップＳ３０８にて、制御部１０１が、ステップＳ３０７にて取得された仮想オブジェクトのうち、二つ以上を組み合わせて特定の配置で表示されることが好ましい仮想オブジェクトの組み合わせがあると判断した場合を考える。この場合、処理はステップＳ３１１に進む。
【００４７】
ステップＳ３１１では、制御部１０１は、仮想オブジェクトを加工する。本ステップでは、特定の配置で表示されることが好ましいと判断された組み合わせの仮想オブジェクトのうち、関連仮想オブジェクトは、ベース仮想オブジェクトのマーカの位置情報および姿勢情報、および配置情報に基づき加工される。すなわち、関連仮想オブジェクトのマーカの位置情報および姿勢情報は用いられない。ベース仮想オブジェクトは、特定の配置で表示されることが好ましいと判断されなかった仮想オブジェクトと同様に、ステップＳ３０９と同様の処理にて加工される。
【００４８】
次に、ステップＳ３１２にて、制御部１０１は、ステップＳ３１１にて加工された仮想オブジェクトを、スルー画像上に重畳して表示する。本ステップの処理では、ステップＳ３０８にて特定の配置で表示される必要が無いと判断された仮想オブジェクトは、ステップＳ３１０と同様に、それぞれの位置情報に基づき、それぞれのマーカが検出されたスルー画像上の位置に重畳して表示される。一方、ステップＳ３０８にて特定の配置で表示されることが好ましいと判断された仮想オブジェクトのうち、関連仮想オブジェクトは、ベース仮想オブジェクトの位置情報および姿勢情報と、配置情報とに基づき、特定の配置でスルー画像上に重畳して表示される。ベース仮想オブジェクトは、他の仮想オブジェクトと同様に、対応するマーカの位置情報および姿勢情報に基づき表示される。上述の図２（ｃ）の例で言えば、ベース仮想オブジェクトに対応するマーカ２０３の位置情報および姿勢情報を基準として、配置情報が示す分だけずれた位置に、配置情報が示す分だけずれた向きで、関連仮想オブジェクトであるＴＶの仮想オブジェクトを表示する。
【００４９】
以上が、ステップＳ３０８にて特定の配置で表示することが好ましい仮想オブジェクトの組み合わせがあると判断された場合の処理である。その後、処理はステップＳ３１３に進む。以降の処理は前述の通りである。
【００５０】
以上、本実施形態の、拡張現実空間を実現する際のデジタルカメラ１００の動作について説明した。上述のように本実施形態では、デジタルカメラ１００にて、特定の組み合わせの仮想オブジェクトを適切な配置で表示することができるよう構成した。これにより、例えばＴＶとＴＶボードを部屋に配置するシミュレーションのように、従来の拡張現実空間の実現方法ではユーザの意図に沿った配置で仮想オブジェクトを表示することが困難であった場合でも、適切な拡張現実空間を実現することができる。
【００５１】
なお、本実施形態のデジタルカメラ１００は、本発明の画像処理装置の一例であり、本発明はデジタルカメラのみならず、撮像部を持たないＰＣや携帯電話等の他のデバイスでも適用可能である。この場合、画像処理装置がマーカの含まれる画像を取得し、これを解析して表示することで実現され得る。
【００５２】
［第２の実施形態］
第１の実施形態では、仮想オブジェクトを取得する処理を、デジタルカメラ１００にて行っていた。この場合、デジタルカメラは、仮想オブジェクトテーブルと、仮想オブジェクトとを記録媒体に保持していなければならない。つまり、記録媒体に記録されていない新たな仮想オブジェクトを用いて拡張現実空間を実現するためには、外部から新たな仮想オブジェクトと、該仮想オブジェクトに対応づけられている識別情報を記録媒体に追記する必要があった。例えば、第１の実施形態のように、家具の例において、新たな家具が発売された場合を考える。この場合、新たな家具を用いた拡張現実空間を実現するためには、デジタルカメラ１００のユーザは新たな家具に対応する仮想オブジェクトと、該仮想オブジェクトに対応づけられる識別情報を記録媒体に追記する必要があった。この作業は、例えば新たな家具が発売される度に必要となり、ユーザにとって利便性に欠ける。
【００５３】
そこで、本実施形態では、第１の実施形態ではデジタルカメラ１００で実行されていた識別情報に対応する仮想オブジェクトを読み出す処理や、該仮想オブジェクトに対して加工する処理が、サーバにて実行されるよう構成した。この拡張現実システムでは、サーバは予め、仮想オブジェクトテーブルと仮想オブジェクトとを保持している。サーバは、デジタルカメラ１００から識別情報を受信することに応じて、該識別情報に基づく仮想オブジェクトをデジタルカメラ１００に送信する。そして、デジタルカメラ１００は、サーバから受信した仮想オブジェクトを用いて拡張現実空間を実現する。このように、仮想オブジェクトや仮想オブジェクトテーブルを有する装置と、拡張現実空間を実現する装置とを分離した場合、例えばサーバの管理はサービス提供者が行い、デジタルカメラによるサービスはユーザが利用するといった構成が容易に実現できる。つまり、サービス提供者が必要に応じて新たな仮想オブジェクトやその識別情報を随時追加することで、ユーザの手間を必要とすることなく常に最新の仮想オブジェクトを用いたサービスを利用することができる。第１の実施形態の家具の例で言えば、新たな家具が発売された場合、管理者が随時新たな家具の仮想オブジェクトと、対応する識別情報を用意することで、ユーザの手間を必要とすることなく、常に最新の家具を用いた拡張現実のサービスを受けることができる。
【００５４】
本実施形態は、第１の実施形態と共通する部分が多いため、共通部分は説明を省略し、本実施形態に特有の部分を中心に説明する。
【００５５】
まず、本実施形態のサーバと協働して拡張現実空間を実現するための画像処理装置の一例であるデジタルカメラ、および該デジタルカメラと協働して拡張現実空間を実現するための情報処理装置の一例であるサーバについて図４を用いて説明する。図４は、デジタルカメラ１００およびサーバ４００のブロック図である。なお、第１の実施形態と同じ構成については同じ番号を付している。
【００５６】
図４のデジタルカメラ１００において、通信部４１０は、外部装置と通信するための接続部である。通信部４１０は、デジタルカメラ１００が撮影したマーカから得た対応識別情報、関連識別情報および配置情報を、サーバ４００に送信する際に用いられる。また、通信部４１０は、マーカをパターン認識した結果から得られる位置情報及び姿勢情報も、サーバ４００に送信する際にも用いられる。さらに、通信部４１０は、サーバ４００から仮想オブジェクトを受信する際にも用いられる。なお、サーバ４００との通信は、有線で行ってもよいし、無線で行ってもよい。
【００５７】
次に、図４のサーバ４００において、制御部４０１は、入力された信号や、後述のプログラムに従ってサーバ４００の各部を制御する。なお、サーバ４００の制御は一つのハードウェアが行ってもよいし、複数のハードウェアが処理を分担することで、装置全体の制御を行ってもよい。
【００５８】
通信部４０２は、デジタルカメラ１００から各種の情報を受信する際に用いられる。また、デジタルカメラ１００から受信した情報に応じた仮想オブジェクトをデジタルカメラ１００に送信する際にも用いられる。
【００５９】
不揮発性メモリ４０３は、サーバ４００の各部を制御するためのプログラム（ファームウェア）や各種の設定情報を記憶している。後述する各フローチャートに示す処理を制御部４０１が制御するためのプログラムも、この不揮発性メモリ４０３に記録されている。
【００６０】
作業用メモリ４０４は、不揮発性メモリ４０３に保存されているプログラムが、展開されるためのメモリである。作業用メモリ４０４は制御部４０１のワークエリアとして使用される。
【００６１】
記録媒体４０５には、拡張現実空間の実現のための仮想オブジェクトと該仮想オブジェクトを示す識別情報との対応関係を示す情報が記録されている。この情報は、例えばテーブルの形で、仮想オブジェクトテーブルとして記録される。本実施形態における仮想オブジェクトは、例えば家具や家電等の三次元画像モデルである。この三次元画像モデルも、記録媒体４０５に記録されている。本実施形態のサーバ４００は、デジタルカメラ１００から送信された識別情報を、仮想オブジェクトテーブルに照らし合わせることにより、識別情報が示す仮想オブジェクトを取得する。取得された仮想オブジェクトは通信部４０２を介してデジタルカメラ１００に送信され、デジタルカメラ１００にて該仮想オブジェクトを用いた拡張現実空間が実現される。なお、記録媒体４０５は、サーバ４００に着脱可能なよう構成してもよいし、サーバ４００に内蔵されていてもよい。すなわち、サーバ４００は少なくとも記録媒体４０５にアクセスする手段を有していればよい。
【００６２】
以上が、本実施形態におけるデジタルカメラおよびサーバの構成である。
【００６３】
次に、図５を用いて、拡張現実を実現する際のデジタルカメラ１００の動作について説明する。
【００６４】
図５は、拡張現実空間を実現する際のデジタルカメラ１００の動作を示すフローチャートである。このフローチャートに示す各処理は、制御部１０１が、不揮発性メモリ１０３に保存されているプログラムを読み出し、作業用メモリ１０４に展開してプログラムに従いデジタルカメラ１００の各部を制御することで実現される。
【００６５】
また、このフローチャートに示す処理は、デジタルカメラ１００が撮影モードとなることに応じて開始される。
【００６６】
まずステップＳ５０１〜ステップＳ５０６については、図３のステップＳ３０１〜ステップＳ３０６と同様の処理を行う。
【００６７】
次に、ステップＳ５０７にて、制御部１０１は、ステップＳ５０５にて取得した位置情報および姿勢情報と、ステップＳ５０６にて取得した対応識別情報、関連識別情報および配置情報をサーバ４００に送信する。なお、各情報は、ステップＳ５０３にて検出されたマーカごとに区別可能な形で送信される。
【００６８】
次いで、ステップＳ５０８にて、制御部１０１は、サーバ４００から送信される仮想オブジェクトの受信処理を行う。ここで受信される仮想オブジェクトは、ステップＳ５０７にてサーバ４００に送信した識別情報に対応する仮想オブジェクトに対して、加工処理が施された仮想オブジェクトである。なお、この加工処理は、ステップＳ５０７にてサーバ４００に送信した位置情報、姿勢情報、関連識別情報、配置情報に基づき、サーバ４００にて実行される。また、特定の配置で表示することが好ましいと判断された仮想オブジェクトと、それ以外の仮想オブジェクトとは、区別可能な形で受信される。
【００６９】
ステップＳ５０９にて、制御部１０１は、ステップＳ５０８の受信処理が完了したか否かを判断する。すなわち、ステップＳ５０７にてサーバ４００に送信した各識別情報に対応する加工処理済みの仮想オブジェクトを全て受信したか否かを判断する。制御部１０１が、まだ仮想オブジェクトの受信が完了していないと判断した場合、処理はステップＳ５０８に戻り、受信処理の完了を待つ。一方、制御部１０１が、受信処理が完了したと判断した場合、処理はステップＳ５１０に進む。
【００７０】
ステップＳ５１０では、制御部１０１は、サーバ４００から受信した特定の配置で表示することが好ましいと判断された仮想オブジェクトを、ステップＳ５０５にて取得した位置情報および配置情報に基づき、スルー画像上に重畳して表示する。また、制御部１０１は、サーバ４００から受信した特定の配置で表示する必要がないと判断された仮想オブジェクトを、ステップＳ５０５にて取得した位置情報に基づき、スルー画像上に重畳して表示する。
【００７１】
その後、処理はステップＳ５１１に進む。ステップＳ５１１では、図３のステップＳ３１３と同様の処理が実行される。
【００７２】
以上が、サーバ４００と協働して拡張現実を実現する際のデジタルカメラ１００の動作の説明である。
【００７３】
次に、上述したデジタルカメラ１００と協働して拡張現実空間を実現する際のサーバ４００の動作について、図６を用いて説明する。図６は、デジタルカメラ１００と協働して拡張現実空間を実現する際のサーバ４００の動作を示すフローチャートである。このフローチャートに示す各処理は、制御部４０１が、不揮発性メモリ４０３に保存されているプログラムを読み出し、作業用メモリ４０４に展開してプログラムに従いサーバ４００の各部を制御することで実現される。
【００７４】
また、このフローチャートに示す処理は、サーバ４００の電源がＯＮとなることに応じて開始される。
【００７５】
まず、ステップＳ６０１にて、制御部４０１は、デジタルカメラ１００が検出した一つまたは複数のマーカから得られた、対応識別情報、関連識別情報、配置情報、位置情報、および姿勢情報の受信処理を行う。なお、各情報は、あるマーカから得られた各情報と他のマーカから得られた各情報とが区別できる形で受信される。
【００７６】
次に、ステップＳ６０２にて制御部４０１は、デジタルカメラ１００にて検出された全てのマーカの対応識別情報、関連識別情報、配置情報、位置情報、および姿勢情報を受信完了したか否かを判断する。制御部４０１が、上記の情報を受信完了していないと判断した場合、ステップＳ６０１に戻り、デジタルカメラ１００からの上記の情報の受信完了を待つ。一方、制御部４０１が、上記の情報を受信できたと判断した場合、処理はステップＳ６０３に進む。
【００７７】
ステップＳ６０３では、制御部４０１は、記録媒体４０５に記録されている仮想オブジェクトテーブルと、ステップＳ６０１にて受信された対応識別情報とに基づき、該対応識別情報に対応する仮想オブジェクトを、記録媒体４０５から読み出す。
【００７８】
次に、ステップＳ６０４〜ステップＳ６０６では、図３のステップＳ３０８〜ステップＳ３０９、ステップＳ３１１と同様の処理がサーバ４００にて実行される。ステップＳ６０５またはステップＳ６０６にて、仮想オブジェクトに対する加工処理が完了すると、処理はステップＳ６０７に進む。
【００７９】
ステップＳ６０７では、制御部４０１は、ステップＳ６０５またはステップＳ６０６にて加工された仮想オブジェクトを、通信部４０２を介してデジタルカメラ１００へ送信する。この際、特定の配置で表示することが好ましいと判断された仮想オブジェクトと、それ以外の仮想オブジェクトとは、区別可能な形で送信される。
【００８０】
その後、ステップＳ６０８にて、制御部４０１は本処理を終了する指示を受け付けたか否かを判断する。制御部４０１が、本処理を終了する指示を受け付けたと判断した場合、本処理を終了する。制御部４０１が、本処理を終了する指示を受け付けていないと判断した場合、処理はステップＳ６０１に戻り、本フローチャートの処理を繰り返す。
【００８１】
以上が、デジタルカメラ１００と協働して拡張現実を実現する際のサーバ４００の動作の説明である。
【００８２】
本実施形態では、上述したように、サーバで仮想オブジェクトを保持するよう構成した。これにより、仮想オブジェクトおよび識別情報の管理者と、デジタルカメラ１００のユーザとが異なるよう構成することが容易となる。つまり、例えば、サーバの管理はサービス提供者が行い、デジタルカメラによるサービスの利用はユーザが受ける構成にすることが可能となる。これにより、サービス提供者が必要に応じて新たな仮想オブジェクトやその識別情報を随時追加することで、ユーザの手間を必要とすることなく常に最新の仮想オブジェクトを用いたサービスを利用することができる。したがって、本実施形態のように拡張現実システムを構成することにより、ユーザにとってより利便性の高いサービスを提供することが可能となる。
【００８３】
［第３の実施形態］
前述の実施形態では、デジタルカメラ１００にて検出されたマーカに対応する仮想オブジェクトのみを表示していた。これに対し、本実施形態では、検出されたマーカに対応する仮想オブジェクト以外にも、該検出されたマーカに対応する仮想オブジェクトと併せて表示されることが多い仮想オブジェクトを表示することができるよう構成する。例えばＴＶボードのマーカを配置すれば、共に配置されることの多いＴＶのマーカを配置せずとも、ＴＶボードの仮想オブジェクトのみならずＴＶの仮想オブジェクトも表示することができるよう構成する。
【００８４】
以下、上述の本実施形態における拡張現実システムについて述べる。
【００８５】
本実施形態は第１および第２の実施形態と共通する部分が多いため、共通部分は説明を省略し、本実施形態に特有の部分を中心に説明する。
【００８６】
本実施形態における拡張現実システムは、第２の実施形態におけるデジタルカメラ１００およびサーバ４００からなるシステムと同様である。なお、本実施形態におけるサーバ４００の記録媒体４０５には、上述の拡張現実システムを実現するための推奨仮想オブジェクトテーブルが記録されている。なお、デジタルカメラ１００が複数ある場合、推奨仮想オブジェクトテーブルは、それぞれのカメラに対して個別のテーブルであってもよいし、共通のテーブルであってもよい。本実施形態では共通のテーブルである場合に関して説明する。
【００８７】
図９は、上述の推奨仮想オブジェクトテーブルの概念図を示す。推奨仮想オブジェクトテーブルでは、記録媒体４０５に記録されている識別情報毎に、ある識別情報の仮想オブジェクトとは異なる他の仮想オブジェクトの識別情報が、推奨仮想オブジェクトの識別情報として対応づけられている。これにより、ある仮想オブジェクトと、その仮想オブジェクトと共に表示することを推奨する他の仮想オブジェクトとが対応づけられている。例えば、図９に示される推奨仮想オブジェクトテーブルにて、識別情報が０００３の仮想オブジェクトには、識別情報が０００６の仮想オブジェクトが、推奨仮想オブジェクトとして対応づけられている。
【００８８】
この推奨仮想オブジェクトの識別情報は、対応づけられている識別情報の仮想オブジェクトと共に同一画面上に表示される頻度が高いと判断された仮想オブジェクトの識別情報である。例えば、図９の推奨仮想オブジェクトテーブルにおいて、識別情報が０００３の仮想オブジェクトは、識別情報が０００６の仮想オブジェクトと共に表示される頻度が高いと判断されている。他の仮想オブジェクトと共に表示される頻度は、デジタルカメラ１００から受信した識別情報毎に、他の各識別情報が共に受信された回数を記録することによって決定される。
【００８９】
すなわち、サーバ４００は、デジタルカメラ１００から受信した識別情報が複数であった場合、識別情報毎に、他の各識別情報が共に受信された回数を記録する。これにより、サーバ４００は、ある識別情報に対応する仮想オブジェクトと、他の各識別情報に対応する仮想オブジェクトとが同一画面上に表示される頻度をカウントしている。
【００９０】
そして、識別情報毎に、共に受信された回数の最も多い識別情報が、推奨仮想オブジェクトを示す識別情報として対応づけられる。これにより、識別情報毎に、ある識別情報に対応する仮想オブジェクトに対して、同一画面上に表示される回数が最も多い、他の仮想オブジェクトが推奨仮想オブジェクトとして対応づけられる。
【００９１】
以下、拡張現実を実現する際の本実施形態の拡張現実システムの動作について図７および図８を用いて説明する。図７は、拡張現実を実現する際のデジタルカメラ１００の動作を示すフローチャートである。このフローチャートに示す各処理は、制御部１０１が、不揮発性メモリ１０３に保存されているプログラムを読み出し、作業用メモリ１０４に展開してプログラムに従いデジタルカメラ１００の各部を制御することで実現される。
【００９２】
また、このフローチャートに示す処理は、デジタルカメラ１００が撮影モードとなることに応じて開始される。
【００９３】
ステップＳ７０１〜ステップＳ７０９は、図５のステップＳ５０１〜ステップＳ５０９と同様の処理が実行される。
【００９４】
ステップＳ７１０にて、制御部１０１は、ステップＳ７０８にて受信された仮想オブジェクトのうち、推奨仮想オブジェクト以外の仮想オブジェクトを、スルー画像上に重畳して表示する。この処理は図３のステップＳ３１２の処理と同様の処理である。
【００９５】
次に、ステップＳ７１１にて、制御部１０１は、ステップＳ７０８にて受信された仮想オブジェクトのうち、推奨仮想オブジェクトを、スルー画像に重畳して表示される推奨仮想オブジェクト表示領域に表示する。なお、推奨仮想オブジェクト表示領域は、例えば図１０のように、表示部１０５の表示領域中の右上の領域に、スルー画像に重畳して設けられる。
【００９６】
次に、ステップＳ７１２では、制御部１０１は、ステップＳ７１１にて表示される推奨仮想オブジェクトを、拡張現実空間上に表示するか否かを選択する指示を受け付ける。それに並行して、推奨仮想オブジェクトを拡張現実空間上に配置するか否かの選択を促すメッセージを、表示部１０５に表示する。例えば「推奨仮想オブジェクトを配置することができます。配置しますか？」といったメッセージを、「はい」・「いいえ」という選択可能なボタンとともに表示する。ユーザが「はい」を選択した場合、推奨仮想オブジェクトを拡張現実空間上に配置することが選択されたと判断し、処理はステップＳ７１３に進む。ユーザが「いいえ」を選択した場合、推奨仮想オブジェクトを拡張現実空間上に配置しないことが選択されたと判断し、処理はステップＳ７１４に進む。
【００９７】
ステップＳ７１３では、制御部１０１は、ステップＳ７１２にて配置することが選択されたと判断された推奨仮想オブジェクトを、拡張現実空間上に表示する。なお、本実施形態では、推奨仮想オブジェクトが既に表示されている仮想オブジェクトと組み合わせて特定の配置で表示することが好ましい仮想オブジェクトである場合は、該推奨仮想オブジェクトは特定の配置で表示される。そうでない場合は、該推奨仮想オブジェクトはスルー画像の中央に表示される。この場合、該推奨仮想オブジェクトの表示位置、サイズ、姿勢等は、操作部１０６を介して後から自由に変更できる。
【００９８】
ステップＳ７１４では、図３のステップＳ３１４と同様の処理が実行される。
【００９９】
以上が、サーバ４００と協働して拡張現実を実現する際の、本実施形態のデジタルカメラ１００の動作の説明である。
【０１００】
次に、上述したデジタルカメラ１００と協働して拡張現実空間を実現する際の、本実施形態のサーバ４００の動作について、図８を用いて説明する。図８は、デジタルカメラ１００と協働して拡張現実空間を実現する際のサーバ４００の動作を示すフローチャートである。このフローチャートに示す各処理は、制御部４０１が、不揮発性メモリ４０３に保存されているプログラムを読み出し、作業用メモリ４０４に展開してプログラムに従いサーバ４００の各部を制御することで実現される。
【０１０１】
また、このフローチャートに示す処理は、サーバ４００の電源がＯＮとなることに応じて開始される。
【０１０２】
ステップＳ８０１〜ステップＳ８０３では、図６のステップＳ６０１〜ステップＳ６０３と同様の処理が実行される。
【０１０３】
次にステップＳ８０４にて、制御部４０１は、ステップＳ６０３にて取得された仮想オブジェクトのそれぞれに関して、推奨仮想オブジェクトを取得する。具体的には、ステップＳ８０１にて受信された対応識別情報と、記録媒体４０５に記録されている推奨仮想オブジェクトテーブルとに基づき、各識別情報に対応づけられている推奨仮想オブジェクトを、記録媒体４０５から読み出す。なお、本ステップでは、ステップＳ８０３にて既に読み出されている仮想オブジェクトは読み出さない。
【０１０４】
次に、ステップＳ８０５では、制御部４０１は、ステップＳ８０１にてデジタルカメラ１００から受信した対応識別情報が複数であった場合、対応識別情報毎に、共に受信された他の各対応識別情報の受信回数をカウントする。すなわち、制御部４０１は、対応識別情報を示すマーカが、デジタルカメラ１００にて共に撮影された回数を各々の組み合わせ毎にカウントする。カウントの結果、識別情報ごとに、共に受信されることが最も多いと判断された対応識別情報を推奨仮想オブジェクトの識別情報として対応付け、推奨仮想オブジェクトテーブルに記録する。
【０１０５】
ステップＳ８０６では、制御部４０１は、ステップＳ８０３およびステップＳ８０４にて取得された仮想オブジェクトのうち、二つ以上を組み合わせて特定の配置で表示されることが好ましい特定の組み合わせがあるか否かを判断する。制御部４０１が、特定の組み合わせがないと判断した場合、処理はステップＳ８０７に進む。ステップＳ８０７では、制御部４０１は、ステップＳ８０１にて受信した対応識別情報ごとの位置情報および姿勢情報に基づき、それぞれの対応識別情報に対応する仮想オブジェクトを加工する。仮想オブジェクトに対する加工処理が完了すると、処理はステップＳ８０９に進む。
【０１０６】
一方、ステップＳ８０６にて、制御部４０１が、特定の組み合わせがあると判断した場合、処理はステップＳ８０８に進む。
【０１０７】
ステップＳ８０８では、制御部４０１は、仮想オブジェクトを加工する。本ステップでは、ステップＳ８０６にて特定の配置で表示されることが好ましいと判断された組み合わせの仮想オブジェクトは、それぞれのマーカの位置情報および姿勢情報に加え、ステップＳ８０１にて取得された配置情報に基づき加工される。また、それ以外の仮想オブジェクトは、ステップＳ８０７と同様に加工される。なお、特定の組み合わせがないと判断された推奨仮想オブジェクトは、対応する位置情報および姿勢情報がないため、加工されない。
仮想オブジェクトに対する加工処理が完了すると、処理はステップＳ８０９に進む。
【０１０８】
ステップＳ８０９では、制御部４０１は、ステップＳ８０７またはステップＳ８０８にて加工された仮想オブジェクトを、通信部４０２を介してデジタルカメラ１００へ送信する。なお、送信される仮想オブジェクトのうち、特定の配置で表示することが好ましい組み合わせの仮想オブジェクトとそれ以外の仮想オブジェクトとは、区別可能な形で送信される。また、推奨仮想オブジェクトとそれ以外の仮想オブジェクトとは、区別可能な形で送信される。
【０１０９】
その後、ステップＳ８１０にて、図６のステップＳ６０８と同様の処理が実行される。
【０１１０】
以上が、デジタルカメラ１００と協働して拡張現実を実現する際のサーバ４００の動作の説明である。
【０１１１】
上述したように、本実施形態では、ユーザが設置したマーカに対応する仮想オブジェクトだけでなく、該仮想オブジェクトと共に表示されることが多いと判断される仮想オブジェクトも、推奨仮想オブジェクトとして表示されるよう構成した。これにより、より一層利便性の高い拡張現実空間を実現することが可能となる。
【０１１２】
［第４の実施形態］
上述の実施形態では、スルー画像上に捉えた全てのマーカに対して、それぞれ組み合わせの判断を行っていた。しかしながら、ユーザが二つのマーカを離して配置した場合、ユーザはそれら二つのマーカの仮想オブジェクトを組み合わせて表示する意思がない可能性が高いと考えられる。そこで、本実施形態では、ユーザのマーカの配置に応じて、組み合わせて表示するか否かを判断する構成について述べる。
【０１１３】
本実施形態は、第１の実施形態と共通する部分が多いため、共通部分は説明を省略し、本実施形態に特有の部分を中心に説明する。
【０１１４】
図１１は、拡張現実空間を実現する際のデジタルカメラ１００の動作を示すフローチャートである。このフローチャートに示す各処理は、制御部１０１が、不揮発性メモリ１０３に保存されているプログラムを読み出し、作業用メモリ１０４に展開してプログラムに従いデジタルカメラ１００の各部を制御することで実現される。
【０１１５】
また、このフローチャートに示す処理は、デジタルカメラ１００が撮影モードとなることに応じて開始される。
【０１１６】
まず、ステップＳ１１０１〜ステップＳ１１１０では、図３のステップＳ３０１〜ステップＳ３１０と同様の処理が実行される。
【０１１７】
ステップＳ３０８にて、制御部１０１が、特定の配置で表示することが好ましい組み合わせがあると判断した場合、処理はステップＳ１１１１に進む。
【０１１８】
ステップＳ１１１１では、制御部１０１は、組み合わせを成す仮想オブジェクトに対応するそれぞれのマーカが、互いに一定距離以内の位置で検出されたか否かを判断する。具体的には、検出されたマーカの位置情報同士を比較し、該位置情報の示す位置が互いに一定の距離以内であるか否かを判断する。制御部１０１が、それぞれのマーカが互いに一定距離以内の位置で検出されていないと判断した場合、処理はステップＳ１１０９に進む。すなわち、それぞれのマーカに対応する仮想オブジェクトは、特定の配置で表示しない。
【０１１９】
一方、制御部１０１が、それぞれのマーカが互いに一定距離以内の位置で検出されたと判断した場合、処理はステップＳ１１１２に進む。ステップＳ１１１２〜ステップＳ１１１４では、図３のステップＳ３１１〜ステップＳ３１３と同様の処理が実行される。すなわち、それぞれのマーカに対応する仮想オブジェクトは、特定の配置で表示される。
【０１２０】
以上のように、本実施形態では、複数の仮想オブジェクトを特定の配置で表示するか否かの判断に、検出されたマーカの位置情報を用いた。これにより、ユーザにとってより直感的な操作で拡張現実空間を実現することができる。
【０１２１】
［その他の実施形態］
上述の実施形態では、複数の仮想オブジェクトが特定の組み合わせであると判断した場合は、それぞれの仮想オブジェクトを常に特定の配置で表示するよう制御していた。これについては、例えばユーザが特定の配置で表示するか否かを選択可能なよう構成してもよい。このように構成することで、よりユーザの意図に沿った拡張現実空間を実現することができる。
【０１２２】
また、上述の実施形態では、マーカが検出されたタイミングに関わらず、それぞれ組み合わせの判断を行っていた。しかしながら、二つのマーカの検出時刻の差が一定時間以上であった場合は、ユーザはそれら二つのマーカの仮想オブジェクトを組み合わせて表示する意思がない可能性が高いと考えられる。したがって、例えば、検出されたマーカごとに一定時間をカウントし、あるマーカに対して組み合わせの判断を行う場合、該マーカが検出されてから一定時間以上経過した後に検出された他のマーカは判断の対象としないよう構成してもよい。なお、マーカごとの一定時間のカウントは、一度検出されたら一定時間のカウントが終わるまで、カウントを継続するよう構成してもよいし、マーカが連続して検出されなかったと判断されることに応じてカウントを終了するよう構成してもよい。このように構成することで、よりユーザの意図に沿った拡張現実空間の実現が可能となる。
【０１２３】
また、上述の実施形態では、特定の配置で仮想オブジェクトを表示する際に、ベース仮想オブジェクトのマーカの位置情報に基づき表示していた。これに対して、ベース仮想オブジェクトのマーカの位置情報に加えて、関連仮想オブジェクトのマーカの位置情報も用いてもよい。例えば、ベース仮想オブジェクトのマーカの位置情報が示す位置と、関連仮想オブジェクトのマーカの位置情報が示す位置との間に、それぞれの仮想オブジェクトを表示してもよい。この場合、ベース仮想オブジェクトのマーカの位置情報が示す位置と、関連仮想オブジェクトのマーカの位置情報が示す位置との中間になる位置に表示するよう構成してもよいし、所定の基準に応じてどちらかの位置に寄せて表示するよう構成してもよい。
【０１２４】
また、上述の第４の実施形態では、組み合わせの判断を行う際に、マーカの検出位置を用いていた。これについては、例えば検出されたマーカの姿勢情報を用いてもよい。例えば、マーカの配置が同方向を示さなければ、対応する仮想オブジェクトを特定の配置で表示しないよう構成する。あるいは組み合わせの判断を行う際に、マーカの位置情報に加えて姿勢情報も用いるよう構成してもよい。例えば、マーカの配置が、隣接して対面する向きである場合に、対応する仮想オブジェクトを特定の配置で表示するよう構成する。または、マーカの配置が、隣接して互いに背向する向きである場合に、対応する仮想オブジェクトを特定の配置で表示するよう構成する。このように構成することにより、より柔軟に拡張現実空間を実現することができる。
【０１２５】
また、関連識別情報は各々のマーカについて一つだけであってもよいし複数であってもよい。なお、複数の関連識別情報を持つマーカが、それぞれの関連識別情報と同じ識別情報を対応識別情報として持つマーカと共に検出された場合、特定の配置で表示することが好ましい関連仮想オブジェクトが複数存在することになる。このような場合、これら複数の関連仮想オブジェクトのうち、どの仮想オブジェクトと組み合わせて表示するか選択する指示を受け付ける手段を有するよう構成してもよい。これは受け付け手段の一例である。なお、ある一つの組み合わせで表示することをユーザが選択した場合、他の選択されなかった組み合わせの関連仮想オブジェクトは表示されないよう構成してもよい。
【０１２６】
また、スルー画像上に表示される仮想オブジェクトの表示位置、サイズ、姿勢等は、スルー画像上に表示された後からも、ユーザの指示により自由に変更することができるよう構成してもよい。その場合、変更した仮想オブジェクトの識別情報毎に変更量を保持しておき、該仮想オブジェクトの表示が行われる度に、保持されている変更量を反映して表示するよう構成される。このように構成することで、よりユーザの意図に沿った拡張現実空間の実現が可能となる。
【０１２７】
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
0005988563.tif 000002
【図２】
0005988563.tif 000003
【図３】
0005988563.tif 000004
【図４】
0005988563.tif 000005
【図５】
0005988563.tif 000006
【図６】
0005988563.tif 000007
【図７】
0005988563.tif 000008
【図８】
0005988563.tif 000009
【図９】
0005988563.tif 000010
【図１０】
0005988563.tif 000011
【図１１】
0005988563.tif 000012