(57)【要約】【課題】  現実空間における部屋の３Ｄモデルを容易に作成するための技術を提供すること。【解決手段】  現実空間内に配された複数のマーカのうち規定の属性を有するマーカの位置姿勢を取得し、該位置姿勢から、該規定の属性を有するマーカが配されている平面のモデルである平面モデルの配置位置姿勢を規定する情報を生成する。そして、該生成した情報を出力する。【選択図】  図１
2015121892.tif 000002
【特許請求の範囲】
【請求項１】
現実空間内に配された複数のマーカのうち規定の属性を有するマーカの位置姿勢を取得し、該位置姿勢から、該規定の属性を有するマーカが配されている平面のモデルである平面モデルの配置位置姿勢を規定する情報を生成する生成手段と、
前記生成手段が生成した情報を出力する出力手段と
を備えることを特徴とする画像処理装置。
【請求項２】
更に、
前記情報で規定される配置位置姿勢で平面モデルを配置した場合に、該平面モデルにおいて他平面モデルとの交線で囲まれた部分を選択候補面として表示画面に表示させる手段と、
前記表示画面に表示されている選択候補面のうち指定された選択候補面から成るモデルを、前記現実空間のモデルとして出力する手段と
を備えることを特徴とする請求項１に記載の画像処理装置。
【請求項３】
更に、
前記複数のマーカのうち基準となるマーカ以外のマーカの、該基準となるマーカに対する相対的な位置姿勢を求める手段を有することを特徴とする請求項１又は２に記載の画像処理装置。
【請求項４】
更に、
前記現実空間の撮像画像中に写っているマーカを用いて、該撮像画像の撮像視点の位置姿勢を求める手段と、
前記撮像画像中に写っているマーカの位置姿勢と、前記現実空間のモデルを構成するそれぞれの選択候補面に対応する平面モデルの配置位置姿勢と、から前記現実空間のモデルを構成するそれぞれの選択候補面を配置する位置姿勢を求め、前記現実空間のモデルを構成するそれぞれの選択候補面を該求めた位置姿勢で配置し、該配置後のモデルを前記視点から見た画像を仮想空間画像として生成する手段と、
前記撮像画像と前記仮想空間画像とを合成した画像を出力する手段と
を備えることを特徴とする請求項３に記載の画像処理装置。
【請求項５】
画像処理装置が行う画像処理方法であって、
前記画像処理装置の生成手段が、現実空間内に配された複数のマーカのうち規定の属性を有するマーカの位置姿勢を取得し、該位置姿勢から、該規定の属性を有するマーカが配されている平面のモデルである平面モデルの配置位置姿勢を規定する情報を生成する生成工程と、
前記画像処理装置の出力手段が、前記生成工程で生成した情報を出力する出力工程と
を備えることを特徴とする画像処理方法。
【請求項６】
コンピュータを、請求項１乃至４の何れか１項に記載の画像処理装置の各手段として機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、現実空間と仮想空間とを融合させた複合現実空間を取り扱う技術に関するものである。
【背景技術】
【０００２】
従来から、現実世界の情報と仮想世界の情報とを組み合わせて、ヘッドマウントディスプレイ（以下、ＨＭＤ）やスマートフォンに表示させる技術が存在する。例えば、複合現実感（Ｍｉｘｅｄ  Ｒｅａｌｉｔｙ／以下、ＭＲ）技術や拡張現実感（Ａｕｇｕｍｅｎｔｅｄ  Ｒｅａｌｉｔｙ／以下、ＡＲ）技術などがある。
【０００３】
近年、ＭＲ技術を用いて、例えば、現実のショールームで家具の３Ｄモデルを配置し、部屋との組み合わせや、家具自体の大きさを来訪者（顧客）に体感させることが行われている。
【０００４】
また、３Ｄモデルの作成手順の簡略化のため、例えば、特許文献１では、３Ｄモデル化したい対象物を多方面から撮像装置で撮像して測量することで得た対象物の座標から、３Ｄモデルを形成する方法が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００２−２４５４３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述したように、ショールームで家具の３Ｄモデルを配置してユーザにＭＲ空間を体感させる場合、例えば、家具の３Ｄモデルをどの程度の大きさで作成するか、どの程度の大きさの家具を３Ｄモデル化してショールームに配置すべきか等を検討する必要がある。この場合、３Ｄモデルの家具とショールームの大きさを対比するために、ショールーム自体の３Ｄモデルを用意する必要がある。
【０００７】
部屋（空間）の３Ｄモデルを作成する際、部屋の図面等がないと、実際に現実空間の寸法を計測しなければならず、また、寸法取得後、３Ｄモデルを手動で作成する必要があり、手間である。また、現実空間と作成した空間の３Ｄモデルの位置合わせを行う必要があり、ショールームをＭＲ空間として完成させるまで時間がかかってしまう。
【０００８】
また、特許文献１に記されている技術では、部屋のような、３Ｄモデルを配置する空間の３Ｄモデルを作成したい場合、該空間（部屋、部屋の内部）は撮影対象として大きく、平面のため、座標取得のために行う撮像作業が難しいことが考えられる。
【０００９】
本発明はこのような問題に鑑みてなされたものであり、現実空間における部屋の３Ｄモデルを容易に作成するための技術を提供する。
【課題を解決するための手段】
【００１０】
本発明の一様態は、現実空間内に配された複数のマーカのうち規定の属性を有するマーカの位置姿勢を取得し、該位置姿勢から、該規定の属性を有するマーカが配されている平面のモデルである平面モデルの配置位置姿勢を規定する情報を生成する生成手段と、前記生成手段が生成した情報を出力する出力手段とを備えることを特徴とする。
【発明の効果】
【００１１】
本発明の構成によれば、現実空間における部屋の３Ｄモデルを容易に作成することができる。
【図面の簡単な説明】
【００１２】
【図１】システムの構成例を示すブロック図。
【図２】各マーカの位置姿勢を求めて登録する処理のフローチャート。
【図３】平面モデルを規定する情報を登録する処理のフローチャート。
【図４】現実空間のモデルを作成させるための処理のフローチャート。
【図５】複合現実空間の画像を生成して出力するための処理のフローチャート。
【図６】マーカが配されたモデル化対象となる現実空間の様子を示す模式図。
【図７】ヘッダの構成例を示す図。
【図８】各マーカに係る情報の構成例を示す図。
【図９】ＧＵＩの表示例を示す図。
【図１０】現実空間モデルの一例を示す図。
【発明を実施するための形態】
【００１３】
以下、添付図面を参照し、本発明の好適な実施形態について説明する。なお、以下説明する実施形態は、本発明を具体的に実施した場合の一例を示すもので、特許請求の範囲に記載した構成の具体的な実施例の１つである。
【００１４】
［第１の実施形態］
本実施形態では、図６に示す如く、現実空間中に複数のマーカを配置し、該マーカの撮像画像からユーザの視点の位置姿勢を求めて仮想空間の画像生成に利用すると共に、該マーカのうち規定のマーカを用いて現実空間のモデル（３次元モデル）を形成するシステムについて説明する。
【００１５】
先ず、本実施形態に係るシステムの構成例について、図１のブロック図を用いて説明する。図１に示す如く、本実施形態に係るシステムは、ユーザの頭部に装着する頭部装着型表示装置としてのＨＭＤ（ヘッドマウントディスプレイ）１０１と、現実空間の画像と仮想空間の画像との合成画像（複合現実空間画像）を生成してＨＭＤ１０１に送出する画像処理装置１００と、を有しており、ＨＭＤ１０１及び画像処理装置１００は、有線通信若しくは無線通信でもって互いにデータ通信を行う。
【００１６】
先ず、ＨＭＤ１０１について説明する。
【００１７】
右目用ビデオカメラ２２１、左目用ビデオカメラ２２２はそれぞれ、ユーザの右目、左目に提供する現実空間の動画像を撮像するためのものであり、撮像した各フレームの画像（撮像画像）は順次コントローラ２２５を介して画像処理装置１００に対して送信される。以下では、右目用ビデオカメラ２２１及び左目用ビデオカメラ２２２のそれぞれを視点（撮像視点）とする。
【００１８】
右目用ディスプレイ２２３、左目用ディスプレイ２２４はそれぞれ、ＨＭＤ１０１を頭部に装着したユーザの右目、左目の眼前に位置するようにＨＭＤ１０１に取り付けられたものであり、画像処理装置１００から送信された右目用の合成画像、左目用の合成画像を表示する。
【００１９】
コントローラ２２５は、右目用ビデオカメラ２２１、左目用ビデオカメラ２２２、右目用ディスプレイ２２３、左目用ディスプレイ２２４、のそれぞれの動作制御を行うと共に、画像処理装置１００との間のデータ通信を制御する。
【００２０】
次に、画像処理装置１００について説明する。
【００２１】
ＣＰＵ２０１は、ＲＯＭ２０２やＲＡＭ２０３に格納されているコンピュータプログラムやデータを用いて処理を実行することで、本装置全体の動作制御を行うと共に、画像処理装置１００が行うものとして後述する各処理を実行する。
【００２２】
ＲＯＭ２０２には、本装置の設定データやブートプログラムなどが格納されている。
【００２３】
ＲＡＭ２０３は、メモリコントローラ２０７を介して外部メモリ２１１からロードされたコンピュータプログラムやデータ、通信Ｉ／Ｆコントローラ２０８を介してＨＭＤ１０１や外部機器から受信したコンピュータプログラムやデータを記憶するためのエリアを有する。また、ＲＡＭ２０３は、ＣＰＵ２０１が各種の処理を実行する際に用いるワークエリアも有する。すなわち、ＲＡＭ２０３は、各種のエリアを適宜提供することができる。
【００２４】
入力コントローラ２０５は、入力デバイス２０９の動作制御を行うものである。入力デバイス２０９は、キーボードやマウスなどにより構成されており、ユーザが操作することで、各種の指示を入力コントローラ２０５を介してＣＰＵ２０１に対して入力することができる。また、入力デバイス２０９を操作してデータを入力した場合には、このデータは入力コントローラ２０５を介してＲＡＭ２０３に対して送出されることになる。
【００２５】
ビデオコントローラ２０６は、ディスプレイ２１０の動作制御を行うものである。ディスプレイ２１０は、ＣＲＴや液晶画面などにより構成されており、ＣＰＵ２０１による処理結果を画像や文字などでもって表示することができる。この画像や文字は映像信号としてビデオコントローラ２０６を介してディスプレイ２１０に送出されることになる。
【００２６】
メモリコントローラ２０７は、外部メモリ２１１の動作制御を行うものである。外部メモリ２１１は、ハードディスクドライブ（ＨＤＤ）などの大容量情報記憶装置である。この外部メモリ２１１には、ＯＳ（オペレーティングシステム）や、画像処理装置１００が行うものとして後述する各処理をＣＰＵ２０１に実行させるためのコンピュータプログラムやデータが保存されている。このデータには、以下の説明において既知の情報として説明するものも含まれている。外部メモリ２１１に保存されているコンピュータプログラムやデータは、ＣＰＵ２０１及びメモリコントローラ２０７による制御に従ってＲＡＭ２０３にロードされ、ＣＰＵ２０１による処理対象となる。なお、ＲＡＭ２０３や外部メモリ２１１に格納されるものとして上述した様々な情報は、どのメモリ（ＲＡＭ２０３、外部メモリ２１１）に格納されてもよく、データの格納場所については特定の格納場所に限るものではない。
【００２７】
通信Ｉ／Ｆコントローラ２０８は、ＨＭＤ１０１との間のデータ通信を制御するものである。また、本装置をＬＡＮやインターネットなどのネットワークに接続した場合には、通信Ｉ／Ｆコントローラ２０８は、このネットワーク上の機器との間のデータ通信も制御することになる。
【００２８】
上記のＣＰＵ２０１、ＲＯＭ２０２、ＲＡＭ２０３、入力コントローラ２０５、ビデオコントローラ２０６、メモリコントローラ２０７、通信Ｉ／Ｆコントローラ２０８、は何れもシステムバス２０４に接続されている。
【００２９】
なお、図１に示した画像処理装置１００の構成は、画像処理装置１００が行うものとして後述する各処理を実現可能な構成の一例に過ぎず、同様の処理を実現可能な構成であれば、如何なる構成を採用しても構わない。
【００３０】
次に、モデル化対象の現実空間中に配置されたそれぞれのマーカの位置姿勢を求めて外部メモリ２１１に登録するために画像処理装置１００が行う処理について、図２のフローチャートを用いて説明する。
【００３１】
図２のフローチャートに従った処理をＣＰＵ２０１に実行させる為のコンピュータプログラムやデータは外部メモリ２１１に保存されている。然るにＣＰＵ２０１が、このようなコンピュータプログラムやデータをＲＡＭ２０３に読み出して実行することで、画像処理装置１００（ＣＰＵ２０１）は、図２のフローチャートに従った処理を実行することになる。
【００３２】
先ず、ユーザは自身の頭部にＨＭＤ１０１を装着して、モデル化対象の現実空間を見渡す。このとき、ＨＭＤ１０１に装着されている右目用ビデオカメラ２２１及び左目用ビデオカメラ２２２は、ユーザの頭部が向いている方向の現実空間の動画像を撮像し、撮像した各フレームの画像（撮像画像）は順次、コントローラ２２５及び通信Ｉ／Ｆコントローラ２０８を介してＲＡＭ２０３や外部メモリ２１１に転送される。
【００３３】
然るにステップＳ２０１では、ＲＡＭ２０３や外部メモリ２１１に転送された撮像画像を、以下の処理の対象画像として取得する。なお、以下の説明では、右目用ビデオカメラ２２１及び左目用ビデオカメラ２２２の何れか一方からの撮像画像を用いて処理を行うものとする。
【００３４】
ステップＳ２０２では、ステップＳ２０１で取得した撮像画像中にマーカが写っていれば、このマーカを認識する。
【００３５】
ここで、マーカとは、図６に示す如く、該マーカに固有の識別情報をコード化した二次元バーコードが記された平面形状の現実物体であり、それぞれのマーカに関する情報は予め外部メモリ２１１に登録されている。外部メモリ２１１に予め登録されているそれぞれのマーカに関する情報の構成例を図８に示す。
【００３６】
図８の例では、それぞれのマーカについて、マーカＩＤ１１０１、サイズ１１０２、種別１１０３、が登録されている。マーカＩＤ１１０１とは、それぞれのマーカに固有の識別情報であり、マーカに記されている二次元バーコードは、このマーカＩＤ１１０１をコード化したものである。サイズ１１０２とは、マーカの縦横サイズである。種別１１０３とは、マーカが「原点」、「座標」、「平面」の何れの属性を有するものであるのかを示したものである。
【００３７】
属性が「原点」のマーカ（図８ではマーカＩＤ＝０００のマーカであり、以下では原点マーカと呼称する）とは、以下の処理で各マーカの位置姿勢を求める際に基準となるマーカであり、属性が「原点」以外のマーカ（非原点マーカ）の位置姿勢は、原点マーカの位置姿勢に対する相対的な位置姿勢として求められる。原点マーカは、モデル化対象の現実空間中の何れかの箇所に配置するものである。図６では、原点マーカは、モデル化対象の現実空間中の床面に配置されている。
【００３８】
属性が「平面」のマーカ（図８ではマーカＩＤ＝００６〜０１１のマーカであり、以下では平面マーカと呼称する）とは、モデル化対象の現実空間においてモデル化したい平面に配置するマーカであり、平面マーカを配置した平面をモデル化の対象とする。図６では、平面マーカは、モデル化対象の現実空間中の床面及び壁に配置されており、この場合は、床面及び壁をモデル化の対象とすることになる。
【００３９】
属性が「座標」のマーカ（図８ではマーカＩＤ＝００１〜００５のマーカであり、以下では座標マーカと呼称する）とは、視点の位置姿勢を求めるためのマーカであり、現実空間中の何れかの箇所に配置すればよい。なお、原点マーカや平面マーカもまた、視点の位置姿勢を求めるためのマーカとして使用する。図６では、座標マーカは、モデル化対象の現実空間中の床面及び壁に配置されている。
【００４０】
なお、以下の処理では、撮像画像中に写っているマーカを用いて視点の位置姿勢を求めるため、理想的には、ユーザの頭部がどの方向を向いても、右目用ビデオカメラ２２１及び左目用ビデオカメラ２２２の視界には常にマーカが含まれている必要がある。然るに、マーカは、モデル化対象の現実空間中に密に配置する必要がある（特に、平面マーカについては、１つの平面に１つで構わないので、原点マーカ及び／又は座標マーカを密に配置する必要がある）。
【００４１】
以上のことから、ステップＳ２０２では、ステップＳ２０１で取得した撮像画像からマーカが見つかれば、このマーカに記されている二次元バーコードを認識して、該二次元バーコードが表すマーカＩＤを特定し、更に、外部メモリ２１１に予め登録されている図８の情報群を参照して、該特定したマーカＩＤに対応する種別１１０３を特定する。このようにして、撮像画像中に１以上のマーカが写っている場合には、該１以上のマーカのそれぞれの二次元バーコードが表すマーカＩＤに対応する種別を特定する。
【００４２】
そして、ステップＳ２０１で取得した撮像画像から、属性が「原点」であるマーカ（原点マーカ）が見つかった場合には、処理はステップＳ２０３に進む。一方、ステップＳ２０１で取得した撮像画像から、原点マーカが見つからなかった場合には、処理はステップＳ２０１に戻り、次のフレームの撮像画像を取得する。
【００４３】
ステップＳ２０３では、ステップＳ２０１で取得した撮像画像中に写っている原点マーカのサイズと、該原点マーカについて外部メモリ２１１に登録されているサイズ１１０２と、の比率や、ステップＳ２０１で取得した撮像画像中に写っている原点マーカの形状（見え方）、から、周知の認識方法（例えばＳＩＦＴ）でもって、原点マーカに対する視点の相対的な位置姿勢を求める。この「原点マーカに対する視点の相対的な位置姿勢」が分かれば、「視点に対する原点マーカの相対的な位置姿勢」（原点マーカの位置姿勢）は算術演算により求めることができる。
【００４４】
ステップＳ２０４では、ステップＳ２０２で属性が「座標」若しくは「平面」のマーカ（非原点マーカ）が見つかったか否かを判断する。この判断の結果、見つかった（ステップＳ２０１で取得した撮像画像中に非原点マーカが写っていた）場合には、処理はステップＳ２０６に進み、見つからなかった場合には、処理はステップＳ２０７に進む。
【００４５】
ステップＳ２０６では、ステップＳ２０１で取得した撮像画像中に写っている非原点マーカのサイズと、該非原点マーカについて外部メモリ２１１に登録されているサイズ１１０２と、の比率や、ステップＳ２０１で取得した撮像画像中に写っている非原点マーカの形状（見え方）、から、周知の認識方法（例えばＳＩＦＴ）でもって、非原点マーカに対する視点の相対的な位置姿勢を求める。この「非原点マーカに対する視点の相対的な位置姿勢」が分かれば、「視点に対する非原点マーカの相対的な位置姿勢」は算術演算により求めることができる。そして、この求めた「視点に対する非原点マーカの相対的な位置姿勢」と、先に求めた「原点マーカの位置姿勢」と、を用いて、「原点マーカに対する非原点マーカの相対的な位置姿勢」を求め、該求めた「原点マーカに対する非原点マーカの相対的な位置姿勢」を「非原点マーカの位置姿勢」として、該非原点マーカのマーカＩＤや属性と共に、外部メモリ２１１に登録する。
【００４６】
以上の処理により、ステップＳ２０１で取得した撮像画像中に非原点マーカが写っていれば、原点マーカに対する非原点マーカの相対位置姿勢を求めて外部メモリ２１１に登録することができる。
【００４７】
ステップＳ２０７では、ステップＳ２０１で取得した撮像画像の次のフレームの撮像画像を取得する。
【００４８】
ステップＳ２０８では、ステップＳ２０７で取得した撮像画像からマーカが見つかれば、このマーカに記されている二次元バーコードを認識して、該二次元バーコードが表すマーカＩＤを特定し、更に、外部メモリ２１１に予め登録されている図８の情報群を参照して、該特定したマーカＩＤに対応する種別１１０３を特定する。このような処理の結果、属性が「座標」若しくは「平面」のマーカ（非原点マーカ）が見つかった（ステップＳ２０７で取得した撮像画像中に非原点マーカが写っていた）場合には、処理はステップＳ２０９に進み、見つからなかった場合には、処理はステップＳ２０７に戻り、次のフレームの撮像画像を取得する。
【００４９】
ステップＳ２０９では、ステップＳ２０８で見つけた非原点マーカに、すでに外部メモリ２１１に位置姿勢を登録した非原点マーカ（登録済み非原点マーカ）と、未だ外部メモリ２１１に位置姿勢を登録していない非原点マーカ（未登録非原点マーカ）と、の両方が含まれているか否かを判断する。この判断の結果、両方が含まれている場合には、処理はステップＳ２１０に進み、少なくとも一方が含まれていない場合には、処理はステップＳ２０７に戻り、次のフレームの撮像画像を取得する。
【００５０】
ステップＳ２１０では、ステップＳ２０７で取得した撮像画像中に写っている非原点マーカのサイズと、該非原点マーカについて外部メモリ２１１に登録されているサイズ１１０２と、の比率や、ステップＳ２０７で取得した撮像画像中に写っている非原点マーカの形状（見え方）、から、周知の認識方法（例えばＳＩＦＴ）でもって、非原点マーカに対する視点の相対的な位置姿勢を求める。この「非原点マーカに対する視点の相対的な位置姿勢」が分かれば、「視点に対する非原点マーカの相対的な位置姿勢」は算術演算により求めることができる。この求めた「視点に対する非原点マーカの相対的な位置姿勢」には「視点に対する登録済み非原点マーカの相対的な位置姿勢」と、「視点に対する未登録非原点マーカの相対的な位置姿勢」と、が含まれている。然るに、「視点に対する登録済み非原点マーカの相対的な位置姿勢」と、「視点に対する未登録非原点マーカの相対的な位置姿勢」と、を用いて、「登録済み非原点マーカに対する未登録非原点マーカの相対的な位置姿勢」を求める。ここで、「原点マーカに対する登録済み非原点マーカの相対的な位置姿勢」はすでに外部メモリ２１１に登録されているので、これを用いれば、「登録済み非原点マーカに対する未登録非原点マーカの相対的な位置姿勢」から「原点マーカに対する未登録非原点マーカの相対的な位置姿勢」を求めることができる。そして、この「原点マーカに対する未登録非原点マーカの相対的な位置姿勢」を、該非原点マーカのマーカＩＤや属性と共に、外部メモリ２１１に登録する。
【００５１】
ステップＳ２１１では、図２のフローチャートに従った処理の終了条件が満たされたか否かを判断する。そしてこの判断の結果、終了条件が満たされたと判断した場合には、図２のフローチャートに従った処理は終了させ、まだ終了条件は満たされていないと判断した場合には、処理はステップＳ２０７に戻り、次のフレームの撮像画像を取得する。
【００５２】
例えば、図８の情報群を用いる場合、マーカＩＤ＝００１〜０１１の全てのマーカについて位置姿勢を外部メモリ２１１に登録した場合には、終了条件は満たされたと判断する。また例えば、ユーザが入力デバイス２０９を操作して処理の終了指示を入力し、ＣＰＵ２０１がこの終了指示を検知した場合には、終了条件が満たされたと判断する。
【００５３】
以上説明した、図２のフローチャートに従った処理を実行することで、モデル化対象の現実空間中に配置されたそれぞれのマーカの位置姿勢を、原点マーカの位置姿勢を基準とする相対位置姿勢として求めて外部メモリ２１１に登録することができる。
【００５４】
次に、図２のフローチャートに従った処理が完了した後で、平面マーカの位置姿勢を用いて、該平面マーカを配置した平面のモデル（平面モデル）を規定する情報を外部メモリ２１１に登録するために画像処理装置１００が行う処理について、図３のフローチャートを用いて説明する。
【００５５】
図３のフローチャートに従った処理をＣＰＵ２０１に実行させる為のコンピュータプログラムやデータは外部メモリ２１１に保存されている。然るにＣＰＵ２０１が、このようなコンピュータプログラムやデータをＲＡＭ２０３に読み出して実行することで、画像処理装置１００（ＣＰＵ２０１）は、図３のフローチャートに従った処理を実行することになる。
【００５６】
ステップＳ３０１では、平面マーカのマーカＩＤや属性と関連づけて外部メモリ２１１に登録されている該平面マーカの位置姿勢を読み出し、該読み出した位置姿勢を用いて、該平面マーカが配置されている平面のモデル（平面モデル）を規定する情報を生成して外部メモリ２１１に登録する。
【００５７】
本実施形態では、平面マーカにおいて二次元バーコードが記されている面の法線方向の姿勢成分を表すベクトルを、該平面マーカが配置されている平面のモデルの法線ベクトルとし、該平面マーカの位置を、該平面マーカが配置されている平面のモデルの位置とする。そして、平面マーカが配置されている平面のモデルの法線ベクトル、該平面マーカが配置されている平面のモデルの位置、を、該モデルに対して発行した固有の識別情報（平面ＩＤ）と共に、外部メモリ２１１に登録する。例えば、図８の情報群を用いる場合、図３のフローチャートに従った処理では、マーカＩＤ＝００６〜０１１のマーカについて、平面モデルの法線ベクトル、位置、平面ＩＤを外部メモリ２１１に登録することになる。
【００５８】
なお、本実施形態では、平面モデルを規定する情報の一例として、平面モデルの法線ベクトル、平面モデルの位置、平面モデルの識別情報、を用いたが、平面モデルの配置位置姿勢及び該平面モデルを規定できる情報であれば、如何なる情報であっても構わない。例えば、平面マーカの位置姿勢そのものを平面モデルの位置姿勢とし、平面モデルの位置姿勢と該平面モデルの識別情報とを、平面モデルを規定する情報としても構わない。また、平面モデルとは、理想的には、縦横のサイズが無限の平面のモデルであるが、実装上、例えば、十分に大きいサイズの平面のモデルであるとする。
【００５９】
なお、ステップＳ３０１における出力先は外部メモリ２１１としているが、通信Ｉ／Ｆコントローラ２０８を介して外部機器に対して送信するなど、出力先はこれに限るものではない。
【００６０】
以上説明した、図２，３のフローチャートに従った処理により、現実空間内に配された複数のマーカのうち規定の属性を有するマーカの位置姿勢を取得し、該位置姿勢から、該規定の属性を有するマーカが配されている平面のモデルである平面モデルの配置位置姿勢を規定する情報を生成し、該生成した情報を出力することができる。
【００６１】
次に、図３のフローチャートに従った処理の完了後、該処理によって外部メモリ２１１に登録された平面モデルを規定する情報に基づいてユーザに現実空間のモデルを作成させる為に画像処理装置１００が行う処理について、図４のフローチャートを用いて説明する。
【００６２】
図４のフローチャートに従った処理をＣＰＵ２０１に実行させる為のコンピュータプログラムやデータは外部メモリ２１１に保存されている。然るにＣＰＵ２０１が、このようなコンピュータプログラムやデータをＲＡＭ２０３に読み出して実行することで、画像処理装置１００（ＣＰＵ２０１）は、図４のフローチャートに従った処理を実行することになる。
【００６３】
図３のフローチャートに従った処理の完了後、ユーザが入力デバイス２０９を操作して、平面マーカを配置した平面から成る現実空間のモデルを生成するためのＧＵＩ（グラフィカルユーザインターフェース）を起動する指示を入力すると、ＣＰＵ２０１は、図４のフローチャートに従った処理を開始する。
【００６４】
ステップＳ４０１では、先ず、外部メモリ２１１に格納したそれぞれの平面モデルの法線ベクトル、位置、平面ＩＤを読み出し、該読み出した法線ベクトル及び位置に従ってそれぞれの平面モデルを配置する。そして、配置したそれぞれの平面モデルについて、他平面モデルとの交線で囲まれた部分を、選択候補面として抽出する。
【００６５】
ステップＳ４０２では、ビデオコントローラ２０６を制御して、選択候補面から成るモデルを表示する領域を有すると共に、該モデルにおいて選択候補面に対する選択／選択解除操作を実現可能な操作部を有するＧＵＩをディスプレイ２１０に表示させる。このＧＵＩの構成例を図９に示す。
【００６６】
ＧＵＩ１２００は、ステップＳ４０２でディスプレイ２１０に表示される状態のＧＵＩである。領域１２０１内には、選択候補面から成るモデルを表示する。図９では、選択候補面から成るモデルとして、交線を点線で示したモデルが表示されている。ここで、図９では説明上、各交線にはコードを割り当てており、交線００１，００２，００３，００４から成る面は平面ＩＤ＝１から抽出した選択候補面、交線００１，００５，００８，００９から成る面は平面ＩＤ＝２から抽出した選択候補面、交線００２，００５，００６，０１０から成る面は平面ＩＤ＝３から抽出した選択候補面、であるとする。また、交線００３，００６，００７，０１１から成る面は平面ＩＤ＝４から抽出した選択候補面、交線００４，００７，００８，０１２から成る面は平面ＩＤ＝５から抽出した選択候補面、交線００９，０１０，０１１，０１２から成る面は平面ＩＤ＝６から抽出した選択候補面、であるとする。
【００６７】
ユーザは入力デバイス２０９を操作して、何れかの選択候補面を指定する。指定方法については特定の指定方法に限るものではなく、表示している面を指定しても良いし、面を構成する４つの頂点を指定しても良い。
【００６８】
領域１２０２内には、ステップＳ４０１で読み出した平面ＩＤのうち、未選択の平面ＩＤが一覧表示され、領域１２０３内には、ステップＳ４０１で読み出した平面ＩＤのうち、選択済みの平面ＩＤが一覧表示される（初期状態ではｎｕｌｌとなっている）。ユーザが入力デバイス２０９を操作して選択候補面を指定すると、１２５０に示す如く、指定した選択候補面は規定の色で表示されると共に、領域１２０２内に表示されている該選択候補面に対応する平面ＩＤは、領域１２０３内に移動する。
【００６９】
領域１２０５は、各平面モデルの厚みを入力するための領域であり、０を入力すると、各平面モデルは透明の面のモデルとなる。もちろん、平面モデルごとに厚みを設定できるようにしても構わない。ボタン１２０６は、選択候補面の指定や厚みの指定が完了した場合にユーザが入力デバイス２０９を操作して指定するもので、ユーザがこのボタン１２０６を入力デバイス２０９を操作して指定すると、指定した選択候補面から成るモデルを、現実空間のモデルとして外部メモリ２１１に登録する。
【００７０】
図９のＧＵＩを用いて生成した現実空間のモデルの一例を図１０に示す。図１０の場合、４つの選択候補面が指定されており、指定された選択候補面のモデル（領域１２０５に入力された厚みを有する）から成る現実空間のモデルが表示されている。
【００７１】
図４に戻って、次に、ステップＳ４０３では、領域１２０１内に表示している選択候補面のうち未選択状態（選択フラグ＝０）の選択候補面が指定されたか否かを判断する。それぞれの選択候補面には選択フラグが割り当てられており、初期値は０である。この判断の結果、領域１２０１内に表示している選択候補面のうち未選択状態の選択候補面が指定された場合には、処理はステップＳ４０４に進み、指定されていない場合には、処理はステップＳ４０５に進む。
【００７２】
ステップＳ４０４では、指定された選択候補面の選択フラグを１に設定すると共に、領域１２０１内で指定された選択候補面を規定の色でもって表示する。
【００７３】
ステップＳ４０５では、領域１２０１内に表示している選択候補面のうち選択状態（選択フラグ＝１）の選択候補面に対する選択解除が指定されたか否かを判断する。例えば、選択状態にある選択候補面を再度指定した場合には、選択解除指定がなされたと判断する。この判断の結果、領域１２０１内に表示している選択候補面のうち選択状態の選択候補面に対する選択解除が指定された場合には、処理はステップＳ４０６に進み、指定されていない場合には、処理はステップＳ４０７に進む。
【００７４】
ステップＳ４０６では、指定された選択候補面の選択フラグを０に設定すると共に、領域１２０１内で指定された選択候補面を、未選択状態における選択候補面の色でもって表示する。
【００７５】
ステップＳ４０７では、ボタン１２０６が指定されたか否かを判断する。この判断の結果、ボタン１２０６が指定された場合には、処理はステップＳ４０８に進み、指定されていない場合には、処理はステップＳ４０２に戻る。
【００７６】
ステップＳ４０８では、選択フラグ＝１の選択候補面から成るモデルを、現実空間のモデルとして形成し、該形成した現実空間のモデルを外部メモリ２１１に登録する。その際、例えば、図７に示すような、形成したモデルのＩＤ１００１及び該モデルの名称１００２のセットをヘッダとして、該モデルのデータに添付して外部メモリ２１１に登録する。なお、ＩＤ１００１や名称１００２は、外部メモリ２１１への登録時にＣＰＵ２０１が発行したものであっても良いし、ユーザが入力デバイス２０９を操作して入力したものであっても良い。
【００７７】
以上説明した図４のフローチャートに従った処理により、平面モデル同士の交線群によって規定される選択候補面の集合をユーザに提示することができ、ユーザは表示された選択候補面のうち所望の選択候補面を指定するだけで、指定した選択候補面から成るモデルを、現実空間のモデルとして作成することができる。
【００７８】
なお、このようにして生成した現実空間のモデルの出力先は外部メモリ２１１に限るものではない。例えば、ビデオコントローラ２０６を介してディスプレイ２１０に表示しても良いし、通信Ｉ／Ｆコントローラ２０８を介して外部機器に対して送信しても良い。
【００７９】
次に、以上説明した図２〜４のフローチャートに従った一連の処理により外部メモリ２１１に格納された「モデル化対象の現実空間のモデル」を用いて、ユーザに該現実空間と仮想空間とを合成した複合現実空間を提示するために画像処理装置１００が行う処理について、同処理のフローチャートを示す図５を用いて説明する。
【００８０】
図５のフローチャートに従った処理をＣＰＵ２０１に実行させる為のコンピュータプログラムやデータは外部メモリ２１１に保存されている。然るにＣＰＵ２０１が、このようなコンピュータプログラムやデータをＲＡＭ２０３に読み出して実行することで、画像処理装置１００（ＣＰＵ２０１）は、図５のフローチャートに従った処理を実行することになる。
【００８１】
ユーザの頭部に装着されたＨＭＤ１０１に装着されている右目用ビデオカメラ２２１及び左目用ビデオカメラ２２２は、ユーザの頭部が向いている方向の現実空間の動画像を撮像し、撮像した各フレームの画像（撮像画像）は順次、コントローラ２２５及び通信Ｉ／Ｆコントローラ２０８を介してＲＡＭ２０３や外部メモリ２１１に転送される。然るにステップＳ５０１では、ＲＡＭ２０３や外部メモリ２１１に転送された撮像画像を、以下の処理の対象画像として取得する。
【００８２】
ステップＳ５０２では、ステップＳ５０１で取得した撮像画像中に写っているマーカのサイズと、該マーカについて外部メモリ２１１に登録されているサイズ１１０２と、の比率や、ステップＳ５０１で取得した撮像画像中に写っているマーカの形状（見え方）、から、周知の認識方法（例えばＳＩＦＴ）でもって、マーカに対する視点の相対的な位置姿勢を求める。また、該マーカの位置姿勢を用いて、「マーカに対する視点の相対的な位置姿勢」から「原点マーカに対する視点の相対的な位置姿勢」を求める。
【００８３】
具体的には、ステップＳ５０１で右目用ビデオカメラ２２１から取得した撮像画像から、原点マーカに対する右目用ビデオカメラ２２１の相対的な位置姿勢（右視点の位置姿勢）を求めると共に、ステップＳ５０１で左目用ビデオカメラ２２２から取得した撮像画像から、原点マーカに対する左目用ビデオカメラ２２２の相対的な位置姿勢（左視点の位置姿勢）を求める。
【００８４】
ステップＳ５０３では、「ステップＳ５０１で取得した撮像画像（右目用ビデオカメラ２２１及び左目用ビデオカメラ２２２の何れかから得られる撮像画像）中に写っているマーカ」について図２のフローチャートに従った処理で求めた位置と、モデルを構成する各面の位置（図２のフローチャートに従った処理で求めた）と、を用いて、「ステップＳ５０１で取得した撮像画像中に写っているマーカ」に対する「モデルを構成する各面」の相対的な位置（オフセット）を求める。
【００８５】
ステップＳ５０４では、「モデルを構成する各面」を、「ステップＳ５０１で取得した撮像画像中に写っているマーカ」の位置から上記オフセット分だけ移動させた位置に配置することで、原点マーカを原点とする仮想空間中にこのモデルを配置する。
【００８６】
ステップＳ５０５では、ステップＳ５０２で求めた位置姿勢を有する視点から見える、モデルを含む仮想空間の画像を生成する。具体的には、右視点の位置姿勢から見える仮想空間の画像及び左視点の位置姿勢から見える仮想空間の画像を生成する。なお、規定の位置姿勢を有する視点から見える仮想空間の画像を生成するための技術については周知であるので、この技術に係る説明は省略する。
【００８７】
ステップＳ５０６では、ステップＳ５０１で取得した撮像画像と、ステップＳ５０５で生成した仮想空間の画像と、を合成した複合現実空間の画像を生成する。具体的には、右目用ビデオカメラ２２１から得られた撮像画像と、右視点の位置姿勢から見える仮想空間の画像と、を合成した右目用の複合現実空間の画像と、左目用ビデオカメラ２２２から得られた撮像画像と、左視点の位置姿勢から見える仮想空間の画像と、を合成した左目用の複合現実空間の画像と、を生成する。
【００８８】
なお、撮像画像（現実空間の画像）と仮想空間の画像とを合成して複合現実空間の画像を生成するための技術については周知の技術であるため、この技術に関する説明は省略する。そして、生成した複合現実空間の画像を、ＨＭＤ１０１に対して送出する。
【００８９】
ＨＭＤ１０１側では、コントローラ２２５は、画像処理装置１００側から送出された右目用の複合現実空間の画像を右目用ディスプレイ２２３に表示させると共に、画像処理装置１００側から送出された左目用の複合現実空間の画像を左目用ディスプレイ２２４に表示させる。これにより、ＨＭＤ１０１を頭部に装着したユーザの右目及び左目の眼前には、それぞれ右目及び左目に対して生成された複合現実空間の画像が提示されることになり、ユーザは複合現実感を体感することができる。
【００９０】
なお、複合現実空間の画像の出力先はＨＭＤ１０１に限るものではなく、ＨＭＤ１０１に代えて若しくは加えて、ディスプレイ２１０に対して出力しても構わないし、通信Ｉ／Ｆコントローラ２０８を介して外部機器に対して出力（送信）しても構わない。
【００９１】
［第２の実施形態］
第１の実施形態では、図２のフローチャートに従った処理の完了後、図３のフローチャートに従った処理を実行するようにしたが、図２のフローチャートに従った処理の中で、平面マーカの位置姿勢を求めるたびに、該位置姿勢を用いて、該平面マーカを配置した平面のモデル（平面モデル）を規定する情報を求めて外部メモリ２１１に登録するようにしても構わない。
【００９２】
［第３の実施形態］
また、第１の実施形態では、マーカには、該マーカの識別情報をコード化した二次元バーコードが記されていることを前提としたが、これは、現実空間中に配したそれぞれのマーカが、原点マーカ、座標マーカ、平面マーカの何れであるのかを識別するための仕組みの一例であり、同様の目的を達成することができるのであれば、他の仕組みを採用しても構わない。例えば、マーカの形状をその属性毎に異ならせ、撮像画像中におけるマーカの形状を認識することで、該マーカの属性を特定するようにしても構わない。また、第１の実施形態では、１つのマーカには１つの属性が割り当てられているが、２以上の属性を割り当てても良い。
【００９３】
［第４の実施形態］
また、第１の実施形態では、平面マーカを用いて作成した現実空間のモデルをそのまま複合現実空間の画像の生成に利用したが、このモデルは適宜加工しても構わない。例えば、平面マーカを用いて作成した現実空間のモデルに対してテクスチャを貼り付けても構わないし、任意のオブジェクトの仮想物体を現実空間のモデルに一体化させても構わない。その場合、この仮想物体は、何れかの平面のモデルの一部として取り扱われることになる。
【００９４】
［第５の実施形態］
図２〜４のフローチャートに従った処理は、ユーザが入力デバイス２０９を操作して「平面情報取得モード」を指定した場合に実行し、「通常動作モード」が指定された場合に、図５のフローチャートに従った処理を実行するようにしても構わない。
【００９５】
例えば、モデル化対象の現実空間を変更したい場合には、新たなモデル化対象の現実空間にマーカを配置し、ユーザが入力デバイス２０９を操作して「平面情報取得モード」を指定することで画像処理装置１００に図２〜４のフローチャートに従った処理を実行させ、その後、図５のフローチャートに従った処理を実行させることで、この新たなモデル化対象の現実空間を用いた複合現実感をユーザに提示することができる。なお、「平面情報取得モード」の指定方法はユーザが入力デバイス２０９を操作して指定する方法に限るものではなく、様々な方法が考え得る。
【００９６】
［第６の実施形態］
第１の実施形態では、平面モデルを規定する情報を外部メモリ２１１に登録後、ユーザがＧＵＩを介して選択候補面を指定する操作を経て最終的な現実空間のモデルを手動作成していた。しかし、平面モデルを規定する情報から現実空間のモデルを作成する処理を、ＣＰＵ２０１が行うようにしても構わない。例えば、選択候補面から成るモデルであって、交線同士の交点の集合の重心位置から全方向に直線を設定した場合に２手以上の交点が発生するような選択候補面が存在した場合には重心位置に最も近い選択候補面を採用したモデルを生成するようにしても構わない。
【００９７】
［第７の実施形態］
第１の実施形態では、それぞれのマーカの位置姿勢を求めるために、ユーザが自身の頭部にＨＭＤ１０１を装着して現実空間を見渡してそれぞれのマーカの撮像画像を取得するようにしていたが、ようは、それぞれのマーカの撮像画像が得られればよいわけであるから、例えば、ユーザはディジタルカメラを用いて現実空間中のそれぞれのマーカを撮像し、この撮像により得られる撮像画像を用いて図２のフローチャートに従った処理を行うようにしても構わない。また、このような撮像画像は予め取得して外部メモリ２１１に登録しておき、必要に応じて外部メモリ２１１から読み出して使用しても構わない。
【００９８】
［第８の実施形態］
第１の実施形態では、ＨＭＤ１０１には右目及び左目のそれぞれに対して撮像部及び表示部を設けていたが、撮像部及び表示部は１つでも構わず、両目で共有して使用しても構わない。
【００９９】
また、第１の実施形態では、視点の位置姿勢は撮像画像中のマーカを用いて求めていたが、他の方法を用いて視点の位置姿勢を求めても構わない。例えば、ＨＭＤ１０１にセンサ（磁気センサ、光学式センサ、超音波センサなど）を取り付けて該ＨＭＤ１０１の位置姿勢を測定し、該測定した位置姿勢にセンサとカメラとの間の位置姿勢関係を加えることで、カメラの位置姿勢、即ち視点の位置姿勢を求めるようにしても構わない。
【０１００】
また、第１の実施形態では、図２のフローチャートに従った処理によって、それぞれのマーカの位置姿勢を求めていたが、他の方法を用いて求めても構わない。すなわち、図３のフローチャートに従った処理の開始前に、それぞれのマーカの位置姿勢を求めることができるのであれば、如何なる方法によってそれぞれのマーカの位置姿勢を求めても構わない。
【０１０１】
［第９の実施形態］
第１の実施形態では、それぞれの平面モデルについて、原点マーカを基準とした位置や法線ベクトルなどの情報を登録し、図５のステップＳ５０３及びステップＳ５０４では、マーカの位置とモデルを構成する各面の位置とを用いて、「モデルを構成する各面」の相対的な位置（オフセット）を求めてから、該モデルを構成する各面を仮想空間中に配置するものとした。
【０１０２】
しかし、例えば、図４のステップＳ４０８で、形成したモデルに対する１点（モデル上の１点でも良いし、モデル外の１点でも良い）を該モデルの基準点として設定し、該モデルの位置姿勢を基準点の位置姿勢（基準点位置姿勢）として登録すると共に、該モデルを構成する各面の位置や法線ベクトルを、この基準点に対する相対的な位置、法線ベクトルとして登録するようにしても構わない。そして、このモデルを構成する各面を仮想空間中に配置する場合には、第１の実施形態のように、右目用ビデオカメラ２２１や左目用ビデオカメラ２２２による撮像画像中のマーカを用いるのではなく、仮想空間中に上記基準点位置姿勢を有する基準点を設定し、各面の位置及び法線ベクトルが、「該設定した基準点に対する相対的な位置、法線ベクトルが該面についてステップＳ４０８で登録した位置、法線ベクトル」となるように、該面を配置する。もちろん、視点の視野外にある面の配置は省略することができる。そして、各面を配置した後は第１の実施形態と同様にして仮想空間の画像を生成して、撮像画像と合成すればよい。
【０１０３】
なお、第１〜９の実施形態の一部若しくは全部は適宜組み合わせて使用しても構わず、また、その組み合わせの際に必要となる様々な変更／変形もまた、上記の実施形態の範疇である。
【０１０４】
［その他の実施形態］
本発明は、例えば、システム、装置、方法、プログラム若しくは記憶媒体等としての実施形態も可能であり、具体的には、複数の機器から構成されるシステムに適用してもよいし、また、１つの機器からなる装置に適用してもよい。
【０１０５】
なお、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラムを、システム或いは装置に直接、或いは遠隔から供給するものを含む。そして、そのシステム或いは装置のコンピュータが該供給されたプログラムコードを読み出して実行することによって達成される場合も本発明に含まれる。
【０１０６】
したがって、本発明の機能処理をコンピュータで実現するために、コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
【０１０７】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等の形態であってもよい。
【０１０８】
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷなどがある。また、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−Ｒ）などもある。
【０１０９】
その他、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続し、ホームページから本発明のコンピュータプログラムそのもの、若しくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。
【０１１０】
また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバも、本発明に含まれるものである。
【０１１１】
また、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。そして、ダウンロードした鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【０１１２】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。その他、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
【０１１３】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現される。
【０１１４】
なお、前述した実施形態は、本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。即ち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【図１】
2015121892.tif 000003
【図２】
2015121892.tif 000004
【図３】
2015121892.tif 000005
【図４】
2015121892.tif 000006
【図５】
2015121892.tif 000007
【図６】
2015121892.tif 000008
【図７】
2015121892.tif 000009
【図８】
2015121892.tif 000010
【図９】
2015121892.tif 000011
【図１０】
2015121892.tif 000012