(57)【特許請求の範囲】
【請求項１】
空間における撮像装置の位置姿勢を推定するために現実のシーンに配置する特徴の配置情報を生成する情報処理装置であって、
前記撮像装置の内部パラメータに関するカメラ情報、前記シーンを描画するためのシーン形状情報、および、前記シーンにおいて仮想物体を観察する際の視線の位置姿勢を示す視線情報を入力する入力手段と、
前記シーン形状情報、前記カメラ情報および前記視線情報に基づき、前記視線情報が示す位置姿勢において前記撮像装置が撮像する現実の空間である撮像シーンと、前記撮像シーンの奥行き距離を設定する設定手段と、
前記シーン形状情報、前記撮像シーンおよび前記奥行き距離に基づき、前記シーンに配置する特徴の配置情報を生成する生成手段とを有する情報処理装置。
【請求項２】
さらに、前記シーン形状情報と前記配置情報に基づき、前記シーンにおける前記特徴の配置を示す画像を生成する画像生成手段を有する請求項1に記載された情報処理装置。
【請求項３】
前記入力手段は、さらに、前記仮想物体を描画するための物体形状情報を入力し、
前記画像生成手段は、前記シーンに前記特徴と前記仮想物体を配置した画像を生成する請求項2に記載された情報処理装置。
【請求項４】
前記画像生成手段は、さらに、前記視線情報が示す位置姿勢において観察される前記仮想物体を表示するための画像を生成する請求項3に記載された情報処理装置。
【請求項５】
前記シーン形状情報には、前記シーンの壁面と床面を描画するための情報、および、前記シーンに配置された特徴と前記撮像装置の間に存在し、前記撮像装置に対して前記特徴を遮蔽する可能性がある物体を描画するための情報が含まれる請求項1から請求項4の何れか一項に記載された情報処理装置。
【請求項６】
前記生成手段は、前記撮像シーンからマーカ配置を提示する面として提示面を抽出し、
前記撮像シーンに対応する前記奥行き距離に基づき所定のテーブルを参照して、前記提示面に配置する前記特徴のサイズと配置間隔を取得し、
前記サイズと配置間隔に基づき前記提示面に前記特徴を配置し、前記物体に遮蔽される特徴を削除または移動して前記配置情報を生成する請求項5に記載された情報処理装置。
【請求項７】
前記提示面が複数ある場合、前記生成手段は、各提示面における前記特徴の配置を統合して前記配置情報を生成する請求項6に記載された情報処理装置。
【請求項８】
前記生成手段は、前記特徴の配置の統合において、サイズが小さい特徴を優先配置する請求項7に記載された情報処理装置。
【請求項９】
前記生成手段は、同一サイズの特徴の分布に基づき、前記特徴の配置を統合する請求項7に記載された情報処理装置。
【請求項１０】
前記入力手段は複数の視線情報を入力し、前記設定手段は前記複数の視線情報それぞれについて前記撮像シーンと前記奥行き距離を設定する請求項1から請求項9の何れか一項に記載された情報処理装置。
【請求項１１】
さらに、前記複数の視線情報に基づき、追加する視線情報を予測する予測手段を有する請求項10に記載された情報処理装置。
【請求項１２】
空間における撮像装置の位置姿勢を推定するために現実のシーンに配置する特徴の配置情報を生成する情報処理方法であって、
入力手段が、前記撮像装置の内部パラメータに関するカメラ情報、前記シーンを描画するためのシーン形状情報、および、前記シーンにおいて仮想物体を観察する際の視線の位置姿勢を示す視線情報を入力し、
設定手段が、前記シーン形状情報、前記カメラ情報および前記視線情報に基づき、前記視線情報が示す位置姿勢において前記撮像装置が撮像する現実の空間である撮像シーンと、前記撮像シーンの奥行き距離を設定し、
生成手段が、前記シーン形状情報、前記撮像シーンおよび前記奥行き距離に基づき、前記シーンに配置する特徴の配置情報を生成する情報処理方法。
【請求項１３】
コンピュータを請求項1から請求項11の何れか一項に記載された情報処理装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、空間における撮像装置の位置姿勢を推定するために現実のシーンに配置する特徴の配置情報を生成する情報処理に関する。
【背景技術】
【０００２】
空間における撮像装置の位置姿勢を推定する方法に、撮像装置の撮像画像に映り込む画像特徴を用いる方法がある。特許文献1が開示する技術は、磁気センサで撮像装置（ヘッドマウントディスプレイ(HMD)に固定されたカメラ）の位置姿勢を計測する。そして、磁気ノイズによって生じる誤差を画像特徴（テーブルに配置した色マーカ）を用いて補正し、撮像画像と整合した位置姿勢を推定する。
【０００３】
また、非特許文献1は、外形が正方形で内部に識別情報をもつ画像特徴（正方形マーカと円形マーカ）を開示し、撮像画像に映り込むマーカを画像処理して認識することで、撮像装置自体の位置姿勢を推定する方法を記載する。
【０００４】
特許文献1と非特許文献1の技術は、システム環境の構築者が、予め、撮像装置によって撮像されるエリアを考慮して、画像特徴を空間に配置する必要がある。特許文献1は、カメラからの距離（以下、奥行き距離）に応じて色マーカの密度分布を変更して、撮像画像に映り込むマーカの数を抑えることを記載する。ただし、特許文献1はエアホッケーゲームを想定しているが、HMDの装着者が、空間を自由に歩き回るケースにおける適切な密度分布については言及しない。
【０００５】
非特許文献1は、紙面上に複数のマーカ（正方形マーカと円形マーカ）を等間隔に配置し、体験者が周囲を見回すような状況でもカメラの位置姿勢の推定が可能な方法を開示する。しかし、非特許文献1は、一定の大きさの正方形マーカのみを使用し、体験者が広いスペースを歩いて移動するような事例に対して、適切なマーカの大きさ・位置などの配置情報を提示する仕組みを開示しない。
【０００６】
また、非特許文献2は、空間に配置された計測用カメラで、計測対象のHMDに取り付けた複数の自発光マーカを計測して、HMD自体の位置姿勢を計測する方法を開示する。さらに、非特許文献2は、HMDのどの場所に自発光マーカを取り付ければよいかを、自発光マーカの発光範囲や、HMDの形状による隠れを考慮してシミュレーションする方法を開示する。ただし、シミュレーションは、計測用カメラが撮影対象のHMDを球形状で等間隔に取り囲むような配置で行われるだけで、計測用カメラとマーカの間の距離や重要な視点位置に対して有効に画像特徴を配置する方法は、非特許文献2に開示されていない。
【０００７】
また、特許文献1、非特許文献1、2は、撮像装置と画像特徴の間に遮蔽物がある場合を考慮せず、遮蔽物を考慮した画像特徴の配置やサイズなどは開示されていない。従って、空間における撮像装置の位置姿勢の推定に適切な画像特徴の配置やサイズを提供する技術が望まれる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特許第3450704号公報
【非特許文献】
【０００９】
【非特許文献１】加藤博一、Mark Billinghurst、Ivan Poupyrev、鉄谷信二、橘啓八郎「拡張現実感技術を用いたタンジブルインタフェイス」芸術科学会論文誌、Vol. 1、No. 2、97-104頁、2002年
【非特許文献２】Larry Davis、Eric Clarkson、Janniek P. Rolland「Predicting Accuracy in Pose Estimation for Marker-based Tracking」Proceeding of the Second IEEE and ACM International Symposium on Mixed and Augmented Reality (ISMAR '03)、2003年
【発明の概要】
【発明が解決しようとする課題】
【００１０】
本発明は、空間における撮像装置の位置姿勢の推定に適切な特徴の配置情報を生成することを目的とする。
【課題を解決するための手段】
【００１１】
本発明は、前記の目的を達成する一手段として、以下の構成を備える。
【００１２】
本発明にかかる情報処理は、空間における撮像装置の位置姿勢を推定するために現実のシーンに配置する特徴の配置情報を生成する際に、前記撮像装置の内部パラメータに関するカメラ情報、前記シーンを描画するためのシーン形状情報、および、前記シーンにおいて仮想物体を観察する際の視線の位置姿勢を示す視線情報を入力し、前記シーン形状情報、前記カメラ情報および前記視線情報に基づき、前記視線情報が示す位置姿勢において前記撮像装置が撮像する現実の空間である撮像シーンと、前記撮像シーンの奥行き距離を設定し、前記シーン形状情報、前記撮像シーンおよび前記奥行き距離に基づき、前記シーンに配置する特徴の配置情報を生成する。
【発明の効果】
【００１３】
本発明によれば、空間における撮像装置の位置姿勢の推定に適切な特徴の配置情報を生成することができる。
【図面の簡単な説明】
【００１４】
【図１】撮像装置の位置姿勢を計測する環境の一例を示す図。
【図２】図1に示す環境におけるマーカの配置例を示す図。
【図３】実施例の情報処理装置の構成例を示すブロック図。
【図４】実施例におけるマーカ配置の提示処理を実行する情報処理装置の機能構成例を示すブロック図。
【図５】三つの視線情報が示す位置姿勢における撮像シーンを説明する図。
【図６】領域分割の例を示す図。
【図７】UIの一例を示す図。
【図８】マーカ配置の提示処理の手順例を説明するフローチャート。
【図９】撮像シーン設定部と領域分割部の処理を説明するフローチャート。
【図１０】配置情報生成部の処理を説明するフローチャート。
【図１１】マーカテーブルの一例を示す図。
【図１２】マーカの配置を説明する図。
【図１３】マーカの配置を説明する図。
【図１４】最終的なマーカ配置例を示す図。
【図１５】サイズが異なるマーカの混合配置を行う場合の最終的なマーカ配置例を示す図。
【図１６】観察用のカメラと位置姿勢推定用のカメラを組み合わせる例を示す図。
【発明を実施するための形態】
【００１５】
以下、本発明にかかる実施例の情報処理装置および情報処理方法を図面を参照して詳細に説明する。なお、実施例は特許請求の範囲にかかる本発明を限定するものではなく、また、実施例において説明する構成の組み合わせのすべてが本発明の解決手段に必須とは限らない。
【００１６】
［撮像装置の位置姿勢の計測］
空間における撮像装置の位置姿勢を推定する方法の概要を説明する。図1により撮像装置の位置姿勢を計測する環境の一例を示す。図1は、現実のシーンである屋内において三次元のコンピュータグラフィクスモデル（以下、CGモデル）330を観察するケースに、非特許文献1のマーカを利用して、撮像装置の位置姿勢を計測することを想定している。
【００１７】
なお、図1に示す環境には、空間における撮像装置の位置姿勢を推定するための特徴である画像特徴（以下、マーカ）を配置する壁面301、302、床面303が存在する。その他、図1に示す環境には、デスクやテーブルのような什器310が配置され、柱のような構造物320が存在するものとする。また、符号100a-100cはそれぞれ、HMDに固定された撮像装置であるカメラ100の位置姿勢を示す。
【００１８】
図2により図1に示す環境におけるマーカの配置例を示す。図2に示すマーカ配置は、非特許文献1の方法に従い壁面301、302、床面303に同一サイズのマーカを等間隔に配置した例である。マーカの一部は、構造物320や什器310によって遮蔽され、それらマーカがカメラ100によって撮影されない場合がある。
【００１９】
本来、什器や構造物によって遮蔽されたマーカが存在しても、撮像画像から遮蔽されていないマーカを一つでも検出することができれば、カメラ100の位置姿勢を推定することができる。しかし、カメラ100が広範囲に移動する場合、遮蔽されていないマーカを撮影不可能な場所が存在する可能性が高く、そのような場所ではカメラ100の位置姿勢の推定が困難になる。カメラ100の位置姿勢の推定が難しい場所が存在する場合、観察者は、CGモデル330をスムーズに観察することができない。
【００２０】
上記の問題を防ぐには、予め現場に赴いて、観察者がCGモデル330を観察するような位置において遮蔽されることがないように、マーカの配置やサイズを調整する環境構築が必要になる。つまり、現場において、マーカを移動したり、カメラ100の画角に収まるようなマーカサイズに印刷し直し、再度、マーカを貼るなど、マーカの配置に試行錯誤が必要になる。
【００２１】
以下では、観察者に拡張現実(MR)を体験させる環境である、図1に示すような現実のシーン（以下、MR環境）に配置するマーカの配置情報を生成する実施例の情報処理装置および情報処理方法を説明する。
【００２２】
［装置の構成］
図3のブロック図により実施例の情報処理装置の構成例を示す。CPU201は、RAM202をワークメモリとして、ROM203や記憶部204に格納されたOSや各種プログラムを実行し、システムバス205を介して後述する構成を制御する。
【００２３】
CPU201は、USBなどの汎用インタフェイス206を介してキーボードやマウスなど操作部207からユーザ指示を入力する。CPU201は、ユーザ指示に従い、記憶部204に格納されたプログラムを実行し、当該プログラムに従い、ビデオカード(VC)208を介してモニタ209にユーザインタフェイス(UI)や処理経過や処理結果を表示する。汎用インタフェイス206には操作部207のほかにメモリカードリーダなどを接続可能で、CPU201は、メモリカードなどから各種データを読み込むことができる。
【００２４】
記憶部204は、ハードディスクドライブ(HDD)やソリッドステートドライブ(SSD)である。記憶部204が格納するプログラムには、図1に示す屋内の環境などに非特許文献1が開示するマーカなどを配置し、カメラ100の計測された位置姿勢を利用してHMD211にCGモデル330を表示するプログラムが含まれる。つまり、HMD211を装着した観察者は、図1に示す環境にCGモデル330が表す物体が配置された拡張現実(MR)を体験することができる。
【００２５】
MR用のプログラムを実行する場合、CPU201は、インタフェイス210を介した有線または無線接続により、HMD211に画像データを送信し、HMD211に固定されたカメラ100から撮像画像データを受信する。なお、CPU201は、HMD211に送信する画像データの生成にVC208に搭載されたGPUを利用する場合があるが、その詳細は省略する。
【００２６】
なお、CPU201は、システムバス205に接続された図示しないネットワークI/Fを介して、有線または無線ネットワーク上のコンピュータ装置やサーバ装置との間でプログラム、データ、演算処理結果の送受信を行うこともできる。また、モニタ209と操作部207は、それらを重ねたタッチパネルであってもよく、その場合、情報処理装置はタブレットデバイスまたはスマートフォンのようなコンピュータ機器でもよい。
【００２７】
また、記憶部204が格納するプログラムには、観察者にMRを体験させるMR環境に配置するマーカの配置方法を提示処理を実現するプログラムが含まれ、CPU201は後述するマーカ配置の提示処理を実行する。
【００２８】
［機能構成］
図4のブロック図により実施例におけるマーカ配置の提示処理を実行する情報処理装置の機能構成例を示す。なお、図4に示す機能構成は、CPU201がマーカ配置の提示用のプログラムを実行することで実現される。
【００２９】
シーン形状入力部110は、MR環境を表す情報（以下、シーン形状情報）を入力する。例えば、図1に示す環境の壁面301、302と床面303、および、什器310と構造物320の配置や形状を示す三次元モデル（以下、3Dモデル）を入力する。3Dモデルとして、例えば、CADで作成された3Dポリゴンモデルを使用することができる。また、MR環境の三次元形状を一括取得が可能な測定器が取得した点群からポリゴンモデルを生成し、当該ポリゴンモデルをシーン形状情報として入力してもよい。
【００３０】
また、什器310や構造物320は、シーンに配置されたマーカとカメラ100の間に存在し、カメラ100に対してマーカを遮蔽する可能性がある物体（遮蔽物）である。遮蔽物はデスクや柱に限られず、鉢植、垂れ幕、バナー、スタンド型照明、ソファを含む椅子、パーティションなども遮蔽物に含まれる。
【００３１】
モデル形状入力部120は、体験者に観察させる物体（以下、仮想物体）の3D形状を示す情報（以下、物体形状情報）を入力する。例えば、図1に示す車両を表すCGモデル330が入力される。なお、入力するシーン形状情報は部屋のサイズに限られず、入力する物体形状情報は車両を表すCGモデルに限られない。
【００３２】
カメラ情報入力部130は、マーカのサイズや位置姿勢の決定に必要な、カメラ100のカメラ内部パラメータをカメラ情報として入力する。カメラ内部パラメータには、例えば、画角、撮像画像の解像度、主点位置が含まれる。また、レンズ歪みが大きいカメラ100を利用する場合は、カメラ内部パラメータにレンズ歪みの補正中心位置と歪み補正パラメータを加える。
【００３３】
視線情報入力部140は、カメラ100が取り得る位置姿勢を視線情報として入力する。例えば、体験者がシーンに配置された仮想物体を観察する動作を想定し、図1に示すカメラ100の位置姿勢100a-103cを入力するものとする。例えば、位置姿勢100aは仮想物体を正面から俯瞰する位置姿勢、位置姿勢100bは仮想物体の後部（例えば、車両のリアの曲線）を観察する位置姿勢、位置姿勢100cは仮想物体の上部（例えば、車両のトップの曲線）を観察する位置姿勢である。
【００３４】
シーン形状入力部110、モデル形状入力部120、カメラ情報入力部130、視線情報入力部140は、マーカ配置の提示処理における入力部111を構成する。入力部111によって入力されたシーン形状情報、物体形状情報、カメラ情報および視線情報は、記憶部204の所定領域に格納される。
【００３５】
撮像シーン設定部150は、記憶部204に格納されたシーン形状情報、カメラ情報、視線情報に基づき、各視線情報が示す位置姿勢においてカメラ100が撮影するシーン（以下、撮像シーン）を設定する。撮像シーンは、カメラ100により撮影される現実の空間である。図5により三つの視線情報が示す位置姿勢における撮像シーンを説明する。
【００３６】
図5(a)は位置姿勢100aにおける撮像シーン610を示す。同様に、図5(b)(c)は、位置姿勢100bと100cにおける撮像シーン620、630を示す。撮像シーンの取得方法は同一であり、撮像シーン610を代表としてその取得方法を説明する。
【００３７】
撮像シーン610は、例えば、位置姿勢100aを視点としてシーン形状情報の3Dポリゴンモデルを描画した際のデプスバッファの値を、シーン形状情報の3Dポリゴンモデルに逆投影して取得することができる。その際、デプスバッファが8ビットであり、画素の値が255で初期化されていた場合、255以外の値をもつ画素領域が位置姿勢100aにおける撮像シーン610に相当する領域である。撮像シーン610は3Dポリゴンモデルのテクスチャとして保存される。
【００３８】
なお、撮像シーンの取得や保存は、デプスバッファを利用した再投影による取得や、テクスチャとしての保存に限定されない。シーンの三次元情報に基づきカメラ100が撮像する領域を特定可能な方法や、シーンの三次元領域に対応付けて情報を保存可能な方法であれば、撮像シーンの取得や保存に適用することができる。
【００３９】
図5(a)に示すように、3Dポリゴンモデルに撮像シーン610を逆投影すると、什器310や構造物320によって遮蔽されて撮像されない領域（以下、遮蔽領域）615が存在することがわかる。遮蔽領域615にはデプスバッファの値が再投影されないため、後述するマーカの配置領域にはならない。言い替えれば、カメラ100から見えない領域にマーカを貼る無駄を省くことができる。
【００４０】
次に、領域分割部160は、シーン形状情報と視線情報が示す距離に基づいて、撮像シーン610、620、630を領域分割する。例えば、カメラ100からの距離（奥行き距離）1mごとに領域を区分する。図6により領域分割の例を示す。図6(a)は奥行き距離1mごとに撮像シーン610の領域を区分した分割領域を示し、例えば、領域710は奥行き距離1m超2m以下の範囲で分割された領域に対応する。同様に、領域720は2m超3m以下、領域730は3m超4m以下、領域740は4m超5m以下の領域に対応する。図6(b)(c)は、同様に奥行き距離1mごとに撮像シーン620、630の領域を区分した分割領域を示す。
【００４１】
領域分割の奥行き距離の間隔は1mに限定されるものではなく、必要に応じて間隔を増減することができる。例えば、カメラ100とマーカを貼る対象の壁や床との最大距離が図1に示す環境の半分であれば、分割領域の奥行き距離の間隔も半分の50cmにすればよい。また、奥行き距離に応じて分割領域の奥行き距離の間隔を変更してもよい。例えば、奥行き距離1mまでは50cm間隔、奥行き距離1mから3mは1m間隔、奥行き距離3m以上は2m間隔などのようにしてもよい。
【００４２】
配置情報生成部170は、領域分割部160が区分した分割領域に基づき、詳細は後述するが、シーンに配置するマーカのサイズや位置を示す配置情報を生成し、配置情報を記憶部204に格納する。
【００４３】
画像生成部180は、記憶部204に格納された、少なくとも配置情報とシーン形状情報に基づき、シーンに配置するマーカのサイズや位置を示す画像（以下、マーカ配置画像）を生成し、UIに表示する。
【００４４】
図7によりマーカ配置の提示用のプログラムによってモニタ209に表示されるUIの一例を示す。マーカ配置画像には、物体形状情報から描画したCGモデル330や、視線情報から描画したカメラ100の位置姿勢を示す視線オブジェクトを含めてもよく、UIの表示部500には、例えば、次の3Dオブジェクトから構成されたマーカ配置画像が表示される。
シーン（壁面301、302、床面303、什器310、構造物320を含む）、
仮想物体（CGモデル330）、
視線オブジェクト101-103（それぞれ位置姿勢100a-100cに対応する）、
マーカオブジェクト507（マーカのサイズと位置姿勢を示す）、
座標軸501（シーンの座標系を示す）。
【００４５】
なお、図7に示す構成のマーカ配置画像をモニタ209に表示することは必須ではない。少なくともマーカの配置情報をMR環境の構築者（以下、ユーザ）に提示することができればよい。
【００４６】
ユーザがUIの「シーン入力」ボタン510を押すかタッチすると、画像生成部180は、UIにファイル選択ダイアログ（不図示）を表示する。ユーザは、当該ダイアログを操作して、予め記憶部204などに格納されたシーン形状情報を示すファイルを選択することができる。同様に、ユーザが「モデル入力」ボタン520を押すかタッチすると、画像生成部180は、UIにファイル選択ダイアログ（不図示）を表示する。ユーザは、当該ダイアログを操作して、予め記憶部204などに格納された物体形状情報を示すファイルを選択することができる。
【００４７】
このように、UIはシーン形状入力部110やモデル形状入力部120として機能する。同様に、UIの入力部530はカメラ情報入力部130として機能し、UIの入力部540は視線情報入力部140として機能する。さらに、ユーザは、カーソル505によって、例えば視線オブジェクト101-103、CGモデル330、什器310などの位置姿勢を変更することができる。
【００４８】
位置姿勢の変更後、ユーザが「保存」ボタン550を押すと、撮像シーン設定部150、領域分割部160、配置情報生成部170により、変更された位置姿勢に応じた配置情報が生成される。当該配置情報は記憶部204に格納されるか、当該配置情報によって、先に記憶部204に格納された配置情報が更新される。また、ユーザが「終了」ボタン560を押した場合、CPU201は、マーカ配置の提示処理を終了する。
【００４９】
なお、ユーザが視線オブジェクトの何れかを選択すると、当該視線オブジェクトが例えば太線で強調表示され、入力部540には、当該視線オブジェクトの位置姿勢情報として位置と姿勢（回転軸および回転角）を示す数値が表示される。ユーザは、入力部540に表示された位置姿勢を示す数値を変更することができる。ユーザによる位置姿勢の数値の変更に伴い、当該視線オブジェクトの表示も変更される。
【００５０】
［マーカ配置の提示処理］
図8のフローチャートによりマーカ配置の提示処理の手順例を説明する。なお、図8に示す処理手順は、CPU201がマーカ配置の提示用のプログラムを実行することで実現される。マーカ配置の提示処理が開始されると、CPU201は、画像生成部180により初期設定のUIをモニタ209に表示する(S101)。
【００５１】
次に、CPU201は、UIに対するユーザの操作を判定して、シーン形状情報、物体形状情報、カメラ情報、または、視線情報が更新されたか否かを判定する(S102)。それら情報の少なくとも一つが更新された場合、CPU201は処理をステップS103に移し、マーカの配置情報の更新処理を実行する。
【００５２】
一方、シーン形状情報、物体形状情報、カメラ情報、視線情報の何れも更新されなかった場合、CPU201は、終了ボタン560が押されたか否かを判定する(S107)。そして、終了ボタン560が押された場合はマーカ配置の提示処理を終了し、終了ボタン560が押されていない場合は処理をステップS102に戻す。
【００５３】
マーカの配置情報の更新処理において、CPU201は、撮像シーン設定部150により視線情報に対応する撮像シーンの描画を行い(S103)、領域分割部160により上述した分割領域を設定する(S104)。そして、配置情報生成部170により分割領域に基づきマーカの配置情報を生成する(S105)。なお、これらの処理の詳細は後述する。そして、CPU201は、画像生成部180によりマーカ配置画像を生成し、マーカ配置画像をUIに表示して、処理をステップS107に進める。
【００５４】
●撮像シーン設定部と領域分割部
図9のフローチャートにより撮像シーン設定部150の処理(S103)と領域分割部160の処理(S104)を説明する。撮像シーン設定部150は、シーン形状情報、カメラ情報および視線情報に基づき、当該視線情報が示す位置姿勢においてカメラ100が撮像するシーン（以下、撮像シーン）を描画する(S111)。そして、撮像シーンを表す3Dポリゴンモデルを記憶部204などに保存する(S112)。なお、視線情報が複数ある場合、複数の視線情報の一つ選択して撮像シーンを描画する。
【００５５】
シーンの描画は、一般に、描画シーンを構成するポリゴンの三次元の頂点情報を仮想カメラの投影面に投影し、カメラからの奥行き距離（デプス）を考慮しながらポリゴン内部を画素単位に塗り潰す処理である。描画結果として、視線情報の位置姿勢から観たシーンの画像と、距離画像が生成される。距離画像のビット深さは8ビットの場合が多いが、後段の処理において、視点からポリゴンの間の実距離を参照する必要があるため、距離画像のビット深さが例えば24ビットに拡張される。あるいは、8ビットのビット深さと実距離の対応関係を示すテーブルなどを用意してもよい。
【００５６】
次に、撮像シーン設定部150は、生成した距離画像をテクスチャとして、撮像シーンを表す3Dポリゴンモデルに再投影する(S113)。例えば、距離画像を構成する画素の中心点と視点位置を結んだ直線が3Dポリゴンモデルと交差する点を求める処理を、距離画像の全画素について行うことで、距離画像を3Dポリゴンモデルに再投影することができる。
【００５７】
以上がステップS103に対応する処理であり、以降がステップS104に対応する処理である。
【００５８】
次に、領域分割部160は、テクスチャの画素値として、対応する距離画像の画素値に基づく距離区分を設定し(S114)、画素値を設定したテクスチャを記憶部204などに保存する(S115)。例えば、奥行き距離1m以下の領域に画素値に「0」を設定する。同様に、1m超2m以下の領域の画素値に「1」、2m超3m以下の領域の画素値に「2」、3m超4m以下の領域の画素値に「3」、4m超5m以下の領域の画素値に「4」を設定する。
【００５９】
なお、画素値に距離区分を設定する代わりに、距離画像のデプス値を画素値に設定してもよく、距離画像のビット深さが8ビットの場合、テクスチャの画素値として8ビットのデプス値を格納すればよい。
【００６０】
次に、領域分割部160は、視線情報のすべてについて、ステップS111からS115の処理を完了したか否かを判定する(S116)。処理が未了の視線情報がある場合、処理はステップS111に戻されて、ステップS111からS115の処理が繰り返される。
【００６１】
●配置情報生成部
図10のフローチャートにより配置情報生成部170の処理(S104)を説明する。配置情報生成部170は、視線情報の一つに対応する撮像シーンを表す3Dポリゴンモデルを記憶部204から読み出し(S121)、同一平面と見做せるポリゴンをグループ化し、マーカ配置を提示する面（以下、マーカ配置の提示面）を抽出する(S122)。
【００６２】
グループ化は、壁面301、302や床面303が複数のポリゴンで構成されていた場合に、それらポリゴンを同一平面のグループとして扱うための処理である。そして、グループ化した平面の短辺の長さが所定未満（例えば10cm未満）の場合、当該グループの以降の処理はスキップされる。
【００６３】
つまり、シーン形状情報に含まれる構造物320の曲面など、マーカを貼る形状にそぐわない狭い面に対応する場所を抽出し、マーカ配置を提示しないようにする。例えば、図1に示すシーン形状情報であれば、壁面301、302、床面303、什器310がマーカ配置の提示面として列挙され、配置情報生成部170は、マーカ配置の提示面ごとに以降の処理を実行する。
【００６４】
配置情報生成部170は、撮像シーンに対応するテクスチャを記憶部204から読み込み、テクスチャの画素値から距離区分を取得する(S123)。そして、記憶部204などに格納されたマーカテーブルを参照して距離区分に対応するマーカのサイズと配置間隔を取得する(S124)。図11によりマーカテーブルの一例を示す。マーカテーブルには、距離区分に応じたマーカのサイズ（辺の長さ）と配置間隔が記録されている。なお、テクスチャの画素値にデプス値が格納されている場合は、マーカテーブルの距離列を参照して、マーカのサイズと配置間隔を取得すればよい。
【００６５】
次に、配置情報生成部170は、マーカ配置の提示面ごとにマーカを配置する(S125)。図12、図13によりマーカの配置を説明する。図12は、壁面302について、図6(a)に示す領域分割によって得られた分割領域740に対応する提示面、図6(b)に示す領域分割によって得られた分割領域730に対応する提示面を示す。また、領域615は、図5(a)に示す撮像シーン610の逆投影によって検出される構造物320による遮蔽領域である。なお、以下では、分割領域740に対応する提示面を提示面740、分割領域730に対応する提示面を提示面730と呼ぶ。
【００６６】
配置情報生成部170は、図13(a)に示すように、提示面740について、マーカテーブルに基づき例えば辺の長さが45cmの正方形のマーカを間隔75cmで配置する。なお、提示面740を包含する長方形を設定し、当該直方体の左上頂点を基準に、マーカテーブルが示すサイズと間隔でマーカを配置する。
【００６７】
次に、配置情報生成部170は、図13(a)に示すマーカのうち、提示面740からはみ出したマーカを縦方向または横方向の少なくとも一方に並行移動して、当該マーカが提示面740に収まるようにその位置を調整する。移動マーカが、隣り合うマーカと面積比で例えば40%以上重畳する場合は、移動マーカを削除する。また、重畳が40%未満の場合、重畳が解消する位置まで移動マーカを逆方向に移動する。図13(b)は配置調整後のマーカの配置を示す。
【００６８】
配置情報生成部170は、提示面730についても同様の処理を行い、図13(d)に示すように、例えば35cmのマーカを60cm間隔で配置する。例えばマーカ980は、下方向に隣り合うマーカとの重畳が40%以上になり、重畳が解消するように上方向に移動されたマーカである。なお、マーカの配置の調整は、分割領域を包含する長方形に配置されたマーカの移動に限らず、マーカを回転したり、マーカのサイズを変更してもよい。
【００６９】
次に、配置情報生成部170は、提示面ごとに配置したマーカを、遮蔽領域615に重ならないように削除または移動する(S126)。配置情報生成部170は、提示面730、740に配置したマーカから遮蔽領域615に重なるマーカを列挙する。図13(b)の例においてマーカ910、920、930、940が遮蔽領域615と重なり、図13(d)の例においてマーカ950、960、970、990、995が遮蔽領域615と重なる。配置情報生成部170は、列挙したマーカのうち、面積が遮蔽領域615と例えば40%以上重なるマーカを削除し、重畳が40%未満のマーカは重畳を解消するように縦方向または横方向に移動する。
【００７０】
図13(b)において、遮蔽領域615に重なるマーカのうち、マーカ910、920は削除され、マーカ930、940は右方向に遮蔽領域615と重畳しない位置まで移動される（図13(c)）。提示面730についても同様の処理が行われ、遮蔽領域615に重ならないようにマーカが配置される。
【００７１】
次に、配置情報生成部170は、提示面ごとのマーカ配置を統合して、注目面について最終的なマーカ配置を決定して配置情報を生成し(S127)、生成した配置情報を記憶部204などに保存する(S128)。図14により最終的なマーカ配置例を示す。図14は、図13(c)に示す提示面740のマーカ配置と、図13(d)に示す提示面730のマーカ配置からマーカ650、960、970、990、995を削除したマーカ配置を統合した様子を示す。
【００７２】
つまり、図13(c)に示すマーカ配置上に、図13(d)に示す非削除対象のマーカ配置を重ねる。異なる提示面のマーカが部分的に重畳する場合はサイズが小さいマーカ（以下、小マーカ）を残す。小マーカは、カメラ100とマーカの距離が遠くてもマーカとして検出され、カメラ100の位置姿勢を計測することができる。他方、サイズが大きいマーカ（以下、大マーカ）はカメラ100の画角に収まらず、カメラ100の位置姿勢を推定できなくなる場面が増加すると考えられる。そのため、小マーカを残すことになる。
【００７３】
次に、配置情報生成部170は、マーカ配置の提示面すべてについて、マーカの配置情報を生成したか否かを判定し(S129)、配置情報が未生成の提示面がある場合は処理をステップS123に戻す。マーカ配置の提示面すべてについてマーカの配置情報を生成すると、視線情報のすべてに対応する撮像シーンについてマーカの配置情報を生成したか否かを判定し(S130)、配置情報が未生成の視線情報があれば処理をステップS121に戻す。
【００７４】
このように、シーン形状情報、カメラ情報、視線情報に基づいて、MR環境におけるカメラ100の位置姿勢の推定に適切なマーカの配置情報を提示することができる。とくに、カメラ100がMR環境を広範囲に移動し、一部領域にカメラ100とマーカの間に遮蔽物が存在する場合も、カメラ100の位置姿勢の推定に適切なマーカの配置情報の提示が可能になる。また、MR環境における観察者の観察位置姿勢を示す視点位置を入力することにより、MR環境に適切なマーカの配置情報を事前に提示することができ、MR環境の構築者であるユーザによるマーカの作成と配置に要する時間・コストを削減することができる。
【００７５】
なお、隣り合うマーカ同士の重畳面積比や、マーカが遮蔽領域と重なる面積比の判定基準の一例として40%を挙げたが、これに限定されるものではなく、必要に応じて判定基準を変更してもよい。
【００７６】
［サイズが異なるマーカの混合配置］
上記では、分割領域ごとのマーカ配置を統合する際に、小マーカを優先配置する例を説明した。しかし、小マーカの優先配置に限定されるものではなく、カメラ100の位置姿勢を推定する処理の安定性を考慮してサイズが異なるマーカを面に混合配置してもよい。
【００７７】
一般に、カメラ100の位置姿勢を高精度に推定するには、マーカをなるべく大きく撮影し、画像上に分散したマーカが撮影されていることが望ましい。マーカサイズの混合配置を実施するには、配置情報生成部170によるステップS127の処理を以下のように変更する。
【００７８】
配置情報生成部170は、提示面ごとのマーカ配置を重ね合わせて、マーカ同士の重畳を検出する。サイズが異なるマーカが重畳する場合は、隣り合う大マーカ同士の距離を取得し、当該距離が閾値以上であれば大マーカを優先配置する。
【００７９】
例えば、図13(c)に示す大マーカの配置と図13(d)に示す小マーカの配置を重ね合わせる場合、大マーカ945と小マーカ955が重畳する。大マーカ945と隣り合う大マーカの距離が例えば2m以上の場合、小マーカ955に代えて大マーカ945を配置することになる。図15によりサイズが異なるマーカの混合配置を行う場合の最終的なマーカ配置例を示す。図14に示す小マーカの優先配置の例と比べると、左下に配置されたマーカが小マーカ955から大マーカ945に変更されている。
【００８０】
このように、常に小マーカの優先配置を行うだけでなく、同一サイズのマーカの分散を考慮して配置情報を生成する。言い替えれば、同一サイズのマーカの分布に基づきマーカ配置を統合して、サイズが異なるマーカの混合配置を行う。同一サイズのマーカの分布を考慮することにより、カメラ100と壁などの距離が遠い場合も、カメラ100の位置姿勢の推定精度を向上させることができる。
【００８１】
［視線情報の追加］
上記では、入力された視点情報を利用してマーカの配置情報を生成する例を説明したが、CGモデル330を観察する際の視線を予測し、予測した視線情報を追加して配置情報を生成することもできる。視線情報の予測によれば、ユーザであるシステム構築者が想定していない位置姿勢からCGモデル330が観察された場合のカメラ100の位置姿勢を推定可能なマーカの配置情報を提示することができる。一方、観察者にとっては、CGモデル330をより広い範囲から観察することができるようになる。
【００８２】
視線情報予測部190は、視線情報入力部140に入力された視線情報から追加する視線情報を予測し、予測した視線情報を記憶部204に格納する。視線情報予測部190は、例えば、ユーザが入力または追加した視線情報を二つずつ組み合わせ、それら視線情報が示す位置の中間位置に相当する視線情報を追加し、追加する視線情報の姿勢として、二つの視線情報の姿勢を合成した中間姿勢を設定する。
【００８３】
また、ユーザが入力または追加した視線情報から、新たな視線情報を予測して追加するだけではなく、過去に、同様のシーンが体験されたときの視線情報をサンプリングし、その視線情報から新たな視線情報を予測して追加することができる。例えば、別の環境において同一のCGモデル330を観察者が観察した際のカメラ100の位置姿勢は、これから構築する環境においても高い確率で出現すると予想される。
【００８４】
図7に示すUIに「視線情報読込」ボタン570を追加する。「視線情報読込」ボタン570が押されるまたはタッチされると、視線情報入力部140は、過去にサンプリングされた視線情報を記憶部204などから読み込む。視線情報予測部190は、読み込まれた視線情報から新たな視線情報を予測し、予測した視線情報を記憶部204に格納する。
【００８５】
［視線情報の入力時のCGモデルの別表示］
上記では、視線情報入力部140の例として、図7に示す入力部540の例を説明した。ユーザは、視線情報の位置姿勢を入力する際、CGモデル330とカメラ100の位置関係を表示部500に表示された俯瞰視点の画像を参照しながら調整する。しかし、表示部500に表示された俯瞰視点の画像はMR環境のシーン形状情報を基に描画されたものであり、視線情報に基づき描画された画像ではない。そのため、ユーザは、俯瞰視点の画像に基づき、カメラ100の視点から観察されるCGモデル330の画像を想像して、視線情報を設定する必要があり、視線情報の設定に試行錯誤が必要になる場合がある。
【００８６】
カメラ100の視点から観察されるCGモデル330の画像を提供するため、画像生成部180は、視線情報の位置姿勢の入力時、視線情報に対応するCGモデル330の画像をモニタ209に別画面として表示する。つまり、画像生成部180は、ユーザが設定した視線情報の位置姿勢とカメラ情報に基づきCGモデル330を描画して、描画結果を別画面に表示する。
【００８７】
なお、別画面用の描画にシーン情報を含めてMR環境に配置されたCGモデル330を描画してもよいし、視線情報に対応するCGモデル330の画像の表示は別画面に限らず、表示部500の画像を切り替えてることで行ってもよい。
【００８８】
［視線情報の位置姿勢のセンサ入力］
上記では、視線情報の位置姿勢を数値入力する例を説明したが、位置姿勢は汎用インタフェイス206やインタフェイス210に接続された位置センサ、姿勢センサ、位置姿勢センサを利用して入力することもできる。姿勢センサとしては、例えばThales Visionix社のInertiaCube3（商標）などを利用すればよい。
【００８９】
［方向が異なる別のカメラを対象とするマーカ配置］
上記では、ユーザであるシステム環境構築者がカメラ100をCGモデル330の観察用カメラとして利用するとともに、画像に映り込むマーカを用いてカメラ100の位置姿勢を推定することに利用した。しかし、一つの撮像装置を観察用と位置姿勢推定用に同時に用いることに限定されず、複数のカメラを用意し、一つは観察に、一つは位置姿勢推定に用いてもよい。
【００９０】
図16により観察用のカメラ100と位置姿勢推定用のカメラ1610を組み合わせる例を示す。なお、カメラ100とカメラ1610は互いに固定されて移動するものとする。カメラ1610の映像は、カメラ100と同様にインタフェイス210を介して情報処理装置に入力される。また、カメラ情報入力部130にはカメラ1610のカメラ情報が入力され、撮像シーン設定部150はカメラ1610に対する撮像シーンや壁などとの距離を計算する。
【００９１】
例えば、カメラ100に対してカメラ1610を下向き方向に取り付けると、観察時の視線の位置姿勢に対応する撮像シーンの領域の広さに対して、カメラ1610の撮像シーンの領域の広さを抑えることができる。例えば、CGモデル330に正対して観察する姿勢であれば、下向きのカメラ1610はほぼ床面303を撮影することになり、撮像装置と壁や床との最大距離が減少する傾向になる。撮像シーンの領域の広さが抑えられると、マーカをMR環境に貼り付ける時間が削減され、マーカの印刷にかかるコストも抑えることができる。
【００９２】
［その他の実施例］
本発明は、上述の実施形態の一以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける一以上のプロセッサがプログラムを読み出し実行する処理でも実現可能である。また、一以上の機能を実現する回路（例えば、ASIC）によっても実現可能である。
【符号の説明】
【００９３】
111 … 入力部、150 … 撮像シーン設定部、170 … 配置情報生成部
【図１】
0006482307.tif 000002
【図２】
0006482307.tif 000003
【図３】
0006482307.tif 000004
【図４】
0006482307.tif 000005
【図５】
0006482307.tif 000006
【図６】
0006482307.tif 000007
【図７】
0006482307.tif 000008
【図８】
0006482307.tif 000009
【図９】
0006482307.tif 000010
【図１０】
0006482307.tif 000011
【図１１】
0006482307.tif 000012
【図１２】
0006482307.tif 000013
【図１３】
0006482307.tif 000014
【図１４】
0006482307.tif 000015
【図１５】
0006482307.tif 000016
【図１６】
0006482307.tif 000017