(57)【要約】 【課題】  表示装置の画面に表示された目印を撮影部により撮影することによって当該撮影部の位置および向きを推定する位置向き推定装置等を提供する。【解決手段】  位置向き推定装置３０１の表示部３０２は、複数の目印を画面内の互いに異なる位置に表示し、撮影部３０３は、設定されている位置から設定されている向きで、表示された目印を撮影して、撮影した画像を出力し、基準画像取得部３０４は、画面に対して相対的に定められた所定の位置と所定の向きで撮影部３０３により撮影された基準画像を取得し、現在画像取得部３０５は、現在設定されている位置および向きで撮影部３０３により撮影された現在画像を取得し、推定部３０６は、基準画像における目印の位置と、現在画像における目印の位置と、から、画面に対する撮影部３０３の現在の位置および現在の向きを推定する。【選択図】  図３
2006279543.tif 000002
【特許請求の範囲】
【請求項１】
複数の目印を画面内の互いに異なる位置に表示する表示部、
設定されている位置から設定されている向きで、前記表示された目印を撮影して、撮影した画像を出力する撮影部、
前記表示部の画面に対して相対的に定められた所定の位置と所定の向きに前記撮影部の位置および向きを設定したときに、前記撮影部により撮影された画像（以下「基準画像」という。）を取得する基準画像取得部、
前記撮影部が現在設定されている位置と向きを推定するため、前記撮影部が現在設定されている位置および向きで前記撮影部により撮影された画像（以下「現在画像」という。）を取得する現在画像取得部、
前記取得された基準画像において前記表示された目印が撮影された位置と、前記取得された現在画像において前記表示された目印が撮影された位置と、から、前記表示部の画面に対して前記撮影部が現在設定されている位置および現在の向きを推定する推定部
を備えることを特徴とする位置向き推定装置。
【請求項２】
請求項１に記載の位置向き推定装置であって、
前記表示される目印の個数は４個以上であり、
前記推定部は、前記取得された現在画像において前記表示された目印が撮影された位置と、前記推定されるべき位置から前記推定されるべき向きで前記撮影部により撮影されるべき画像において前記表示された目印が配置されるべき位置と、の距離の自乗和が最小となるように、前記推定されるべき位置と向きとを最尤推定する
ことを特徴とする物。
【請求項３】
請求項１または２に記載の位置向き推定装置であって、
前記表示部は、仮想空間内を、当該仮想空間内に設定された視点の位置から視線の向きで見た様子を表す画像に、前記表示される目印を重ねて表示し、
当該仮想空間内に設定された視点の位置および視線の向きを、当該仮想空間内に配置され、前記表示部の画面に対応付けられるオブジェクトの位置および向き、ならびに、前記推定された前記表示部の画面に対する前記撮影部の現在の位置および現在の向きから定める視点設定部
をさらに備えることを特徴とする物。
【請求項４】
複数の目印を画面内の互いに異なる位置に表示する表示部、設定されている位置から設定されている向きで前記表示された目印を撮影して撮影した画像を出力する撮影部を用いる位置向き推定方法であって、
前記表示部の画面に対して相対的に定められた所定の位置と所定の向きに前記撮影部の位置および向きを設定したときに、前記撮影部により撮影された画像（以下「基準画像」という。）を取得する基準画像取得工程、
前記撮影部が現在設定されている位置と向きを推定するため、前記撮影部が現在設定されている位置および向きで前記撮影部により撮影された画像（以下「現在画像」という。）を取得する現在画像取得工程、
前記取得された基準画像において前記表示された目印が撮影された位置と、前記取得された現在画像において前記表示された目印が撮影された位置と、から、前記表示部の画面に対して前記撮影部が現在設定されている位置および現在の向きを推定する推定工程
を備えることを特徴とする方法。
【請求項５】
コンピュータを、
複数の目印を画面内の互いに異なる位置に表示する表示部、
設定されている位置から設定されている向きで、前記表示された目印を撮影して、撮影した画像を出力する撮影部、
前記表示部の画面に対して相対的に定められた所定の位置と所定の向きに前記撮影部の位置および向きを設定したときに、前記撮影部により撮影された画像（以下「基準画像」という。）を取得する基準画像取得部、
前記撮影部が現在設定されている位置と向きを推定するため、前記撮影部が現在設定されている位置および向きで前記撮影部により撮影された画像（以下「現在画像」という。）を取得する現在画像取得部、
前記取得された基準画像において前記表示された目印が撮影された位置と、前記取得された現在画像において前記表示された目印が撮影された位置と、から、前記表示部の画面に対して前記撮影部が現在設定されている位置および現在の向きを推定する推定部
として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、表示装置の画面に表示された目印を撮影部により撮影することによって当該撮影部の位置および向きを推定するのに好適な位置向き推定装置、位置向き推定方法、ならびに、これらをコンピュータにて実現するプログラムに関する。
【背景技術】
【０００２】
従来から、ＣＲＴ（Cathode Ray Tube）などを利用した走査線方式の表示装置に対して、走査線による明暗を検知部により検知して、当該検知部の画面における位置を推定するライトペンの技術が提案されている。このような表示装置の画面に対する位置検出技術については、以下の文献に技術が開示されている。
【特許文献１】特許第２５５００７２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、表示装置としては、ＣＲＴ以外に、走査線を利用しない液晶ディスプレイやプラズマディスプレイ、プロジェクタが普及しつつあり、走査線を利用したライトペンの位置推定技術が適用できない局面が増えつつある。また、射撃を行うゲーム装置の場合などでは、表示画面から離れた位置にある拳銃型コントローラの位置や向きを推定する必要もある。
【０００４】
したがって、従来とは異なる手法により、表示用の画面から離れた位置にあるものの位置や向きを簡易に推定する技術であって、電波や音波、超音波等を使うのではなく、位置や向きを推定したい部材に固定した安価なＣＣＤカメラなどの撮影部を利用する技術が求められている。
【０００５】
本発明は、表示装置の画面に表示された目印を撮影部により撮影することによって当該撮影部の位置および向きを推定するのに好適な位置向き推定装置、位置向き推定方法、ならびに、これらをコンピュータにて実現するプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
以上の目的を達成するため、本発明の原理にしたがって、下記の発明を開示する。
【０００７】
本発明の第１の観点に係る位置向き推定装置は、表示部、撮影部、基準画像取得部、現在画像取得部、推定部を備え、以下のように構成する。
【０００８】
まず、表示部は、複数の目印を画面内の互いに異なる位置に表示する。
【０００９】
この際に、各目印は、異なる形状や異なる色彩で表示すると、後述する推定が容易になる。また、各目印を表示するタイミングを微妙にずらすことによって、同様の効果を得ることも可能である。
【００１０】
表示部の画面としては、ＣＲＴを用いたモニタのほか、液晶ディスプレイ、プラズマディスプレイ、各種のプロジェクターを利用した場合のスクリーン等を適用することができる。すなわち、走査線による必要はなく、上記の各目印が表示できれば十分である。
【００１１】
一方、撮影部は、設定されている位置から設定されている向きで、表示された目印を撮影して、撮影した画像を出力する。
【００１２】
上記のように、撮影部は、典型的には、位置および向きを知りたい部材に固定される。したがって、撮影部の位置および向きは、位置および向きを知りたい部材の位置および向きと一致もしくは連動する。
【００１３】
撮影部としては、画面に表示される目印を撮影できるものであれば十分であるが、たとえば、今日安価に提供されているＣＣＤカメラ等を利用することができる。
【００１４】
また、撮影の際に色彩フィルタをかけたり、各目印の表示タイミングに時間差がある場合は、その時間差に撮影のタイミングを合わせることにより、撮影された全画像中のどの場所に各目印が撮影されているか、を容易に得ることができる。
【００１５】
さらに、基準画像取得部は、表示部の画面に対して相対的に定められた所定の位置と所定の向きに撮影部の位置および向きを設定したときに、撮影部により撮影された画像（以下「基準画像」という。）を取得する。
【００１６】
典型的には、ユーザに対して、「画面から○○メートル離れ、カメラの視界の中央を画面中央に合わせる」ように促してから、基準画像を撮影する。このように、一旦基準画像を撮影することによって、表示部の画面のサイズなどの差異に対応することができる。
【００１７】
そして、現在画像取得部は、撮影部が現在設定されている位置と向きを推定するため、撮影部が現在設定されている位置および向きで撮影部により撮影された画像（以下「現在画像」という。）を取得する。
【００１８】
すなわち、撮影部の位置や向きが必要な場合に、現在画像取得部が動作することとなる。現在画像取得部が連続して動作することとしても良いし、表示部の画面の垂直同期割り込みの間隔等に合わせて所定の時間間隔で動作することとしても良いし、撮影部が固定される部材に用意されたスイッチやボタン、レバー、トリガ等をユーザが操作したときに動作することとしても良い。
【００１９】
一方、推定部は、取得された基準画像において表示された目印が撮影された位置と、取得された現在画像において表示された目印が撮影された位置と、から、表示部の画面に対して撮影部が現在設定されている位置および現在の向きを推定する。
【００２０】
製図や三次元グラフィックスの透視投影法では、表示部の画面に表示される目印と、視点に相当する撮影部とを結ぶ直線が、基準画像や現在画像が投影される平面と交叉する交点を、当該目印の投影先とする。
【００２１】
そこで、表示部の画面を固定した三次元座標系と、この座標系の中で、基準画像が配置される基準平面と、現在画像が配置される現在平面とを考えれば、すべての目印について、当該目印の表示部の画面における位置、基準平面における基準画像内の位置、その目印の現在平面における現在画像内の位置、撮影部の位置を通過する直線が存在するように、撮影部と基準画像が配置される基準平面と、現在画像が配置される現在平面とを配置することができる。
【００２２】
そして、複数の目印の座標に関する連立方程式を解くことによって、表示部の画面に対する基準平面や現在平面ならびに撮影部の位置を決定することができるのである。また、撮影部の向きは、撮影部の位置から現在平面へ垂らした垂線の向きとなる。このようにして、位置および向きを推定するのである。
【００２３】
本発明によれば、各種の表示方式により表示装置の画面に表示された目印を、安価なＣＣＤカメラ等の撮影部により撮影することによって、当該表示装置の画面に対する当該撮影部の相対的な位置および向きを推定することができるようになる。
【００２４】
また、本発明の位置向き推定装置において、表示される目印の個数は４個以上であり、推定部は、取得された現在画像において表示された目印が撮影された位置と、推定されるべき位置から推定されるべき向きで撮影部により撮影されるべき画像において表示された目印が配置されるべき位置と、の距離の自乗和が最小となるように、推定されるべき位置と向きとを最尤推定するように構成することができる。
【００２５】
上記のように、目印の数は少なくとも４個あれば、撮影部の位置や向きを推定することができるが、実際には、表示部の画面の解像度や撮影部の画像の解像度、表示部および撮影部の平面性などから、各目印が撮影される位置には誤差が生じる。
【００２６】
そこで、目印の数が５個以上であるときは、最尤推定法を採用して、撮影部の位置および向きを推定するのである。
【００２７】
投射投影を行う三次元空間内で、表示部の画面に対する基準平面の位置および向きは固定されているから、撮影部の位置、現在平面の位置および向きを適宜変更し、基準平面内の目印と撮影部の位置とを結ぶ線分が、現在平面と交叉する点を考える。
【００２８】
この交点と現在平面の対応する目印の位置との距離が「誤差」となる。そこで、各目印についての、この誤差の自乗の総和を最小にするように、最尤推定するのである。
【００２９】
本発明によれば、表示および撮影される目印の個数を増やすことによって、表示や撮影の解像度等の問題をできるだけ避け、尤もらしく撮影部の位置や向きを推定することができる。
【００３０】
また、本発明の位置向き推定装置は、視点設定部をさらに備え、以下のように構成することができる。
【００３１】
すなわち、表示部は、仮想空間内を、当該仮想空間内に設定された視点の位置から視線の向きで見た様子を表す画像に、表示される目印を重ねて表示する。
【００３２】
これは、一般的な三次元グラフィックス技術による表示であるが、仮想空間の画像にオーバレイするように、位置および向きを推定するための目印を重ねて表示するのである。
【００３３】
一方、視点設定部は、当該仮想空間内に設定された視点の位置および視線の向きを、当該仮想空間内に配置され、表示部の画面に対応付けられるオブジェクトの位置および向き、ならびに、推定された表示部の画面に対する撮影部の現在の位置および現在の向きから定める。
【００３４】
たとえば、シューティングゲーム、アクションゲームなどに本発明を適用する場合、各種のコントローラを用いて仮想三次元空間内でキャラクターを移動させるが、これは、上記の基準平面や現在平面をプレイヤーの指示にしたがって移動させることに相当する。
【００３５】
本発明においては、表示部の画面に対する撮影部（および現在平面）の相対的な位置および向きが推定されるのであるから、これらの情報を用いれば、仮想三次元空間内におけるキャラクターの視点位置（銃を持っている位置）を決めることができる。
【００３６】
このように、本発明では、撮影部の位置や向きと仮想三次元空間内の視点の位置や向きを連動させて表示することができるようになり、ユーザによりリアルな仮想空間内の移動を感じさせることができるようになる。
【００３７】
本発明のその他の観点に係る位置向き推定方法は、複数の目印を画面内の互いに異なる位置に表示する表示部、設定されている位置から設定されている向きで表示された目印を撮影して撮影した画像を出力する撮影部を用い、基準画像取得工程、現在画像取得工程、推定工程を備え、以下のように構成する。
【００３８】
すなわち、基準画像取得工程では、表示部の画面に対して相対的に定められた所定の位置と所定の向きに撮影部の位置および向きを設定したときに、撮影部により撮影された画像（以下「基準画像」という。）を取得する。
【００３９】
一方、現在画像取得工程では、撮影部が現在設定されている位置と向きを推定するため、撮影部が現在設定されている位置および向きで撮影部により撮影された画像（以下「現在画像」という。）を取得する。
【００４０】
さらに、推定工程では、取得された基準画像において表示された目印が撮影された位置と、取得された現在画像において表示された目印が撮影された位置と、から、表示部の画面に対して撮影部が現在設定されている位置および現在の向きを推定する。
【００４１】
本発明のその他の観点に係るプログラムは、コンピュータを上記の位置向き推定装置として機能させ、コンピュータに上記の位置向き推定方法を実行させるように構成する。
【００４２】
また、本発明のプログラムは、コンパクトディスク、フレキシブルディスク、ハードディスク、光磁気ディスク、ディジタルビデオディスク、磁気テープ、半導体メモリ等のコンピュータ読取可能な情報記憶媒体に記録することができる。
【００４３】
上記プログラムは、プログラムが実行されるコンピュータとは独立して、コンピュータ通信網を介して配布・販売することができる。また、上記情報記憶媒体は、コンピュータとは独立して配布・販売することができる。
【発明の効果】
【００４４】
本発明によれば、表示装置の画面に表示された目印を撮影部により撮影することによって当該撮影部の位置および向きを推定するのに好適な位置向き推定装置、位置向き推定方法、ならびに、これらをコンピュータにて実現するプログラムを提供することができる。
【発明を実施するための最良の形態】
【００４５】
以下に本発明の実施形態を説明する。以下では、理解を容易にするため、ゲーム用の情報処理装置を利用して本発明が実現される実施形態を説明するが、以下に説明する実施形態は説明のためのものであり、本願発明の範囲を制限するものではない。したがって、当業者であればこれらの各要素もしくは全要素をこれと均等なものに置換した実施形態を採用することが可能であるが、これらの実施形態も本発明の範囲に含まれる。
【実施例１】
【００４６】
図１は、プログラムを実行することにより、本発明の位置向き推定装置の機能を果たす典型的な情報処理装置の概要構成を示す模式図である。以下、本図を参照して説明する。
【００４７】
情報処理装置１００は、ＣＰＵ（Central Processing Unit）１０１と、ＲＯＭ  １０２と、ＲＡＭ（Random Access Memory）１０３と、インターフェイス１０４と、コントローラ１０５と、外部メモリ１０６と、画像処理部１０７と、ＤＶＤ−ＲＯＭ（Digital Versatile Disc ROM）ドライブ１０８と、ＮＩＣ（Network Interface Card）１０９と、音声処理部１１０と、を備える。
【００４８】
ゲーム用のプログラムおよびデータを記憶したＤＶＤ−ＲＯＭをＤＶＤ−ＲＯＭドライブ１０８に装着して、情報処理装置１００の電源を投入することにより、当該プログラムが実行され、本実施形態の位置向き推定装置が実現される。
【００４９】
ＣＰＵ  １０１は、情報処理装置１００全体の動作を制御し、各構成要素と接続され制御信号やデータをやりとりする。また、ＣＰＵ  １０１は、レジスタ（図示せず）という高速アクセスが可能な記憶域に対してＡＬＵ（Arithmetic Logic Unit）（図示せず）を用いて加減乗除等の算術演算や、論理和、論理積、論理否定等の論理演算、ビット和、ビット積、ビット反転、ビットシフト、ビット回転等のビット演算などを行うことができる。さらに、マルチメディア処理対応のための加減乗除等の飽和演算や、三角関数等、ベクトル演算などを高速に行えるように、ＣＰＵ  １０１自身が構成されているものや、コプロセッサを備えて実現するものがある。
【００５０】
ＲＯＭ  １０２には、電源投入直後に実行されるＩＰＬ（Initial Program Loader）が記録され、これが実行されることにより、ＤＶＤ−ＲＯＭに記録されたプログラムをＲＡＭ  １０３に読み出してＣＰＵ  １０１による実行が開始される。また、ＲＯＭ  １０２には、情報処理装置１００全体の動作制御に必要なオペレーティングシステムのプログラムや各種のデータが記録される。
【００５１】
ＲＡＭ  １０３は、データやプログラムを一時的に記憶するためのもので、ＤＶＤ−ＲＯＭから読み出したプログラムやデータ、その他ゲームの進行やチャット通信に必要なデータが保持される。また、ＣＰＵ  １０１は、ＲＡＭ  １０３に変数領域を設け、当該変数に格納された値に対して直接ＡＬＵを作用させて演算を行ったり、ＲＡＭ  １０３に格納された値を一旦レジスタに格納してからレジスタに対して演算を行い、演算結果をメモリに書き戻す、などの処理を行う。
【００５２】
インターフェイス１０４を介して接続されたコントローラ１０５は、ユーザがレーシングゲームなどのゲーム実行の際に行う操作入力を受け付ける。
【００５３】
射撃ゲームなどの場合には、拳銃型コントローラ（図示せず）がインターフェイス１０４に接続され、ユーザの操作入力を受け付けるとともに、モニタに対する拳銃型コントローラの位置および向きを情報処理装置１００において推定する。拳銃型コントローラの詳細については、後述する。
【００５４】
インターフェイス１０４を介して着脱自在に接続された外部メモリ１０６には、レーシングゲーム等のプレイ状況（過去の成績等）を示すデータ、ゲームの進行状態を示すデータ、チャット通信のログ（記録）のデータなどが書き換え可能に記憶される。ユーザは、コントローラ１０５を介して指示入力を行うことにより、これらのデータを適宜外部メモリ１０６に記録することができる。
【００５５】
ＤＶＤ−ＲＯＭドライブ１０８に装着されるＤＶＤ−ＲＯＭには、ゲームを実現するためのプログラムとゲームに付随する画像データや音声データが記録される。ＣＰＵ  １０１の制御によって、ＤＶＤ−ＲＯＭドライブ１０８は、これに装着されたＤＶＤ−ＲＯＭに対する読み出し処理を行って、必要なプログラムやデータを読み出し、これらはＲＡＭ  １０３等に一時的に記憶される。
【００５６】
画像処理部１０７は、ＤＶＤ−ＲＯＭから読み出されたデータをＣＰＵ  １０１や画像処理部１０７が備える画像演算プロセッサ（図示せず）によって加工処理した後、これを画像処理部１０７が備えるフレームメモリ（図示せず）に記録する。フレームメモリに記録された画像情報は、所定の同期タイミングでビデオ信号に変換され画像処理部１０７に接続されるモニタ（図示せず）へ出力される。これにより、各種の画像表示が可能となる。
【００５７】
画像演算プロセッサは、２次元の画像の重ね合わせ演算やαブレンディング等の透過演算、各種の飽和演算を高速に実行できる。
【００５８】
また、仮想３次元空間に配置され、各種のテクスチャ情報が付加されたポリゴン情報を、Ｚバッファ法によりレンダリングして、所定の視点位置から仮想３次元空間に配置されたポリゴンを所定の視線の方向へ俯瞰したレンダリング画像を得る演算の高速実行も可能である。
【００５９】
さらに、ＣＰＵ  １０１と画像演算プロセッサが協調動作することにより、文字の形状を定義するフォント情報にしたがって、文字列を２次元画像としてフレームメモリへ描画したり、各ポリゴン表面へ描画することが可能である。
【００６０】
ＮＩＣ  １０９は、情報処理装置１００をインターネット等のコンピュータ通信網（図示せず）に接続するためのものであり、ＬＡＮ（Local Area Network）を構成する際に用いられる１０ＢＡＳＥ−Ｔ／１００ＢＡＳＥ−Ｔ規格にしたがうものや、電話回線を用いてインターネットに接続するためのアナログモデム、ＩＳＤＮ（Integrated Services Digital Network）モデム、ＡＤＳＬ（Asymmetric Digital Subscriber Line）モデム、ケーブルテレビジョン回線を用いてインターネットに接続するためのケーブルモデム等と、これらとＣＰＵ  １０１との仲立ちを行うインターフェース（図示せず）により構成される。
【００６１】
音声処理部１１０は、ＤＶＤ−ＲＯＭから読み出した音声データをアナログ音声信号に変換し、これに接続されたスピーカ（図示せず）から出力させる。また、ＣＰＵ  １０１の制御の下、ゲームの進行の中で発生させるべき効果音や楽曲データを生成し、これに対応した音声をスピーカから出力させる。
【００６２】
音声処理部１１０では、ＤＶＤ−ＲＯＭに記録された音声データがＭＩＤＩデータである場合には、これが有する音源データを参照して、ＭＩＤＩデータをＰＣＭデータに変換する。また、ADPCM形式やOgg Vorbis形式等の圧縮済音声データである場合には、これを展開してＰＣＭデータに変換する。ＰＣＭデータは、そのサンプリング周波数に応じたタイミングでＤ／Ａ（Digital/Analog）変換を行って、スピーカに出力することにより、音声出力が可能となる。
【００６３】
このほか、情報処理装置１００は、ハードディスク等の大容量外部記憶装置を用いて、ＲＯＭ  １０２、ＲＡＭ  １０３、外部メモリ１０６、ＤＶＤ−ＲＯＭドライブ１０８に装着されるＤＶＤ−ＲＯＭ等と同じ機能を果たすように構成してもよい。
【００６４】
図２は、本実施形態で利用される拳銃型コントローラの外観を示す説明図である。以下、本図を参照して説明する。
【００６５】
拳銃型コントローラ２０１には、ケーブル２０２ならびにコネクタ２０３が用意されており、コネクタ２０３がインターフェイス１０４に接続されて、情報処理装置１００本体との情報のやりとりをする。
【００６６】
拳銃型コントローラ２０１の本体２０４は、概ね拳銃の形状をしており、トリガ２０５が用意されていて、プレイヤーがトリガ２０５を引くと、その旨がケーブル２０２およびコネクタ２０３を介して、情報処理装置１００に伝達される。
【００６７】
また、拳銃型コントローラ２０１の銃身２０６の先端部には、ＣＣＤ（Charge Coupled Device）カメラ２０７が配置されており、拳銃型コントローラ２０１の現在の位置から、銃身２０６の向きに、外界を撮影することができるようになっている。
【００６８】
撮影のタイミングは、情報処理装置１００によってケーブル２０２およびコネクタ２０３を介して制御され、撮影された画像は、ケーブル２０２およびコネクタ２０３を介して情報処理装置１００へ伝達される。
【００６９】
なお、本実施形態では、ゲーム用の情報処理装置１００および拳銃型コントローラ２０１を組み合わせて使用するが、一般的なコンピュータと電子制御されるカメラとキーボードやマウスなどの指示入力装置の組合せによっても、同様の構成を実現することができる。また、従来のライトペンに類似するような形状のコントローラや入力デバイスを使用することとしても良い。これらの構成も、本発明の範囲に含まれる。
【００７０】
図３は、本実施形態に係る位置向き推定装置の概要構成を示す模式図である。図４は、ゲームにおいて本実施形態に係る位置向き推定装置を利用するゲーム制御処理の制御の流れを示すフローチャートである。以下、本図を参照して説明する。
【００７１】
本実施形態に係る位置向き推定装置３０１は、表示部３０２、撮影部３０３、基準画像取得部３０４、現在画像取得部３０５、推定部３０６、視点設定部３０７を備え、以下のように構成する。
【００７２】
本処理が開始されると、位置向き推定装置３０１の表示部３０２は、複数の目印を画面内の互いに異なる位置に表示する（ステップＳ４０１）。したがって、情報処理装置１００のＣＰＵ  １０１の制御の下、画像処理部１０７と外部に接続される各種のモニタ（ＣＲＴ、液晶ディスプレイ、プラズマディスプレイ、プロジェクタ等、各種のものを含む）と共働して、表示部３０２として機能する。
【００７３】
図５は、画面に目印が表示される様子を示す説明図である。以下、本図を参照して説明する。
【００７４】
画面５０１には、４個の目印５０２が、点線で示す長方形５０３の頂点および辺の上に表示されている。各目印５０２は、十文字形、鍵形（Ｌ字形）、もしくは丁字形（Ｔ字形）をしており、互いに異なる色で表示される。また、各目印５０２の下には、射撃の標的５１１を含む仮想空間内の様子をある視点から見た三次元グラフィックス画像が重ねて表示されている。すなわち、三次元グラフィックス画像よりも手前に各目印５０２があるように、オーバレイ、もしくは、スーパーインポーズされたように各目印５０２が表示されている。
【００７５】
一般的には、画面５０１は、６４０×４８０ドット等、あらかじめ定められた正方形形状のドットの集合として把握することができる。典型的には、表示される仮想空間の様子が変化しても目印５０２の画面５０１内における位置は固定されているものとする。
【００７６】
一方、情報処理装置１００側の画像処理部１０７から見ればドット単位で同じ場所に目印５０２を表示するように設定していたとしても、モニタのサイズ（インチ数やプロジェクタとスクリーンの距離等）によって画面５０１の大きさが変わるから、画面５０１における各目印５０２の現実の表示位置も変化することになる。
【００７７】
そこで、ドット単位で見たi番目の目印５０２の画面５０１内における座標を(X[i]，Y[i])と表記することとすると、現実のモニタに表示されるi番目の目印５０２の画面５０１内における座標は、各ドットの辺の長さをdとすれば、(X[i]d，Y[i]d)と表現することができる。
【００７８】
さて、このように画面５０１に表示された目印５０２を、位置向き推定装置３０１の撮影部３０３が撮影するのである。上述の通り、本実施形態では、拳銃型コントローラ２０１のＣＣＤカメラ２０７が、撮影部３０３として機能する。
【００７９】
図６は、撮影部３０３により目印５０２が撮影される様子を概念的に説明する説明図である。
【００８０】
現実の三次元空間の中には、画面５０１が配置されており、その画面５０１内には目印５０２が表示されている。そこで、理解を容易にするため、画面５０１が三次元空間のｘ−ｙ平面に存在するものとし、i番目の目印５０２の三次元空間内における座標がP[i] = (Px[i]d，Py[i]d，0)と標記できるように、ｘｙｚ座標系を配置する。
【００８１】
一方、撮影部３０３は、この三次元空間内に配置される。また、いわゆるスクリーン座標系が配置される平面６０１が、この三次元空間内に仮想的に配置される。透視投影では、撮影部３０３と平面６０１の距離は一定であるものとして、撮影部３０３および平面６０１の法線ベクトルの向きが変化することとするのである。
【００８２】
そして、撮影部３０３と、目印５０２とを結ぶ直線が、平面６０１と交わる交点を当該目印５０２の投影点とする。これが、ＣＣＤカメラ２０７によって撮影された画像に表される目印５０２の位置、ということになる。
【００８３】
ここで、撮影部３０３の座標をs = (sx，sy，sz)とし、平面６０１の長さ１の法線ベクトルをn = (nx，ny，nz)とし、平面６０１内の基準軸（スクリーン座標系のｘ軸）の３次元空間における長さ１の方向ベクトルをh = (hx，hy，hz)とすると、これらの３つのベクトルによって、撮影部３０３の位置、向き、向きに対する回転量がすべて定まることになる。
【００８４】
ここで、これらの量の自由度を考えると、ベクトルsの自由度は３である。また、法線ベクトルnは、３つのパラメータを持つが、長さが１という制限を１つ持つから、自由度は２である。そして、方向ベクトルhについては、３つのパラメータを持つが、長さが１という制限１つと、nとhは直交し、
n・h = 0
が成立するという制限１つがあるので、自由度は１である。
【００８５】
また、平面６０１内のもう１つの基準軸（スクリーン座標系のｙ軸）の３次元空間における長さ１の方向ベクトルkは、
k = n×h
とおくことができる。
【００８６】
このように、撮影部３０３の位置および向きに関する自由度は、６ということになる。
【００８７】
スクリーン座標系は、実際にＣＣＤカメラ２０７で撮影された位置を、その画素（ドット）の大きさによって適宜拡大縮小したものに相当する。そこで、ＣＣＤにおいて目印５０２が投射された位置をQ[i] = (Qx[i]，Qy[i])とし、撮影部３０３と平面６０１（スクリーン座標）との距離をmとすれば、この三次元空間内における目印５０２の投射点の位置R[i]は、
R[i] = s + mn + Qx[i]h + Qy[i]k
となる。ここで、スクリーン座標系画素の辺の長さに相当する量が１となるように、距離mを定めるものとする。
【００８８】
一旦この距離mが定まれば、ズーム等を使用しない限り、撮影部３０３の位置や向きの変化に連動して、距離mを保つように、平面６０１が移動することになる。
【００８９】
原点から撮影部３０３までの変位ベクトルがs、そこから平面６０１の中心までの変位ベクトルがmn（平面６０１の法線ベクトルnに両者の距離mを乗じたもの）、そこからスクリーン座標におけるh方向、k方向の変位量がそれぞれQx[i]，Qy[i]であることから、これが得られる。
【００９０】
さて、撮影部３０３と目印P[i] = (Px[i]d，Py[i]d，0)とを結ぶ直線は、撮影部３０３と投射点R[i]とを結ぶ直線と一致するから、ベクトルP[i] - sとベクトルR[i] - sとは平行である。
【００９１】
したがって、パラメータt[i]（方向ベクトルの長さの比のパラメータ）を使って、
t[i](P[i] - s) = R[i] - s
すなわち、
t[i](P[i] - s) = mn + Qx[i]h + Qy[i]k
と書くことができる。
【００９２】
これは、ベクトルに関する等式であるからスカラー量で考えると、３つの方程式を含む。一方、目印５０２が１つにつき自由度が１つ増えることになる。
【００９３】
これらを実際に考えたときの自由度は、以下のように整理することができる。
画面５０１の解像度に関するパラメータdの自由度１
画面５０１に対する撮影部３０３の位置と向きの自由度６
撮影部３０３の解像度に関するパラメータmの自由度１
目印５０２の方向ベクトルの長さの比のパラメータt[i]の自由度
【００９４】
一方、目印５０２が１つあると、ベクトル方程式が１つ構成されるので、自由度を３つ減らすことができる。
【００９５】
したがって、目印５０２がN個あるとき、
1 + 6 + 1 + N ≦ 3N
が成立すれば、すなわち、N ≧ 4であれば、撮影部３０３の位置s = (sx,sy,sz)および向きn = (nx,ny,nz)を定めることができることになる。この際に、制約が多くなりすぎるときには、以下に述べる最尤推定を用いることとなる。
【００９６】
すなわち、変数s = (sx,sy,sz)，n = (nx,ny,nz)，d，m，t[1]，…，t[N]が、1≦i≦Nについての方程式
t[i](P[i] - s) = mn + Qx[i]h + Qy[i]k
をできるだけ満たすようにすれば良いのであるから、誤差ベクトル
e[i] = t[i](P[i] - s) - mn + Qx[i]h + Qy[i]k
を考え、自乗誤差の総和（評価関数）
E = Σi=1N |e[i]|2
を最小にするように、パラメータs = (sx,sy,sz)，n = (nx,ny,nz)，d，m，t[1]，…，t[N]を、最急降下法で求める、という手法が考えられる。
【００９７】
最急降下法は、非線型計画法で広く用いられている手法であり、数値計算による数値微分を応用して、ある評価関数が極値をとるようなパラメータを求める手法である。
【００９８】
さて、情報処理装置１００は、モニタに「画面から○○メートル離れ、拳銃型コントローラの照準を画面中央に合わせて、トリガを引いてください」というメッセージを目印５０２を隠さないように重ねて表示して（ステップＳ４０２）、ユーザがトリガ２０５を引いたか否かを判断し（ステップＳ４０３）、引いていない間（ステップＳ４０３；Ｎｏ）、ステップＳ４０３に戻る。
【００９９】
ユーザがトリガ２０５を引いた場合（ステップＳ４０３；Ｙｅｓ）、基準画像取得部３０４は、拳銃型コントローラ２０１の現在ＣＣＤカメラ２０７で撮影されている画像をＲＡＭ  １０３に取得する（ステップＳ４０４）。
【０１００】
「画面から○○メートル離れ、拳銃型コントローラの照準を画面中央に合わせ」ると、撮影部３０３を構成する拳銃型コントローラ２０１の現在ＣＣＤカメラ２０７の位置と向きは、表示部３０２の画面に対して相対的に定められた所定の位置と所定の向きに設定される。
【０１０１】
したがって、ステップＳ４０４において取得される画像が、基準画像となる。そこで、推定部３０６は、表示されている目印５０２の位置と基準画像に撮影された目印５０２の位置から、撮影部３０３の位置s = (sx,sy,sz)および向きn = (nx,ny,nz)を定めるとともに、パラメータd，mなどを最尤推定する（ステップＳ４０５）。
【０１０２】
このとき、「画面から○○メートル離れ、拳銃型コントローラの照準を画面中央に合わせ」たとしても、それには必ず誤差が含まれるので、ユーザに対するこの指示によって定められる撮影部３０３の位置や向きの数値は、あくまで最急降下法の繰り返しの初期値として利用することとなる。
【０１０３】
以降の処理では、パラメータd，mとしては、ステップＳ４０５で求められた値を定数として使うことにより、最急降下法において考慮すべきパラメータの個数を減らすことができる。
【０１０４】
したがって、上記の定数や測定値、これらのパラメータの計算過程での一時的な値を記憶するＲＡＭ  １０３とＣＰＵ  １０１が共働して、推定部３０６として機能する。
【０１０５】
ついで、ゲーム用の情報処理装置１００は、ゲームにおいて想定される仮想空間内に標的オブジェクトを配置する（ステップＳ４０６）。図６に示すように、標的オブジェクト６１１は、撮影部３０３から見て表示部３０２の画面よりも遠い側に配置されている。すなわち、標的オブジェクト６１１の座標W = (Wx,Wy,Wz)としたとき、szとWzの符号が異なることになる。
【０１０６】
なお、本実施形態の説明では、理解を容易にするため、標的オブジェクト６１１は１つとしているが、複数用意した場合も同様に取り扱うことができる。
【０１０７】
上記のように、パラメータdが決定されていれば、ゲーム内の仮想空間と、現実世界の空間との位置関係を一対一に決定することができる。たとえば、両者の数値を完全に一致させれば、モニタの画面は、仮想世界を覗く「窓」として機能することになる。
【０１０８】
そこで、視点設定部３０７は、推定部３０６により推定され、ＲＡＭ  １０３の撮影部３０３の現実世界における位置と向きs = (sx,sy,sz)，n = (nx,ny,nz)を格納するための領域に格納された値から、これに対応する位置と向きに仮想世界における視点と視線の方向を設定する（ステップＳ４０７）。
【０１０９】
仮想世界に配置される標的オブジェクト６１１や、視点の位置、視線の方向は、ＲＡＭ  １０３などに格納されるため、ＣＰＵ  １０１がＲＡＭ  １０３などと共働して、視点設定部３０７として機能することとなる。
【０１１０】
シューティングゲーム、アクションゲームなどでは、各種のコントローラを用いて仮想三次元空間内でキャラクターを移動させるが、これは、「窓枠」が仮想世界を移動することに対応する。そして、「窓枠」からの相対的な位置関係から、キャラクターの現在の位置や向きが決められるのである。
【０１１１】
このように、本実施形態では、撮影部３０３の位置や向きと仮想三次元空間内の視点の位置や向きを連動させて表示することができるようになり、ユーザによりリアルな仮想空間内の移動を感じさせることができるようになる。
【０１１２】
なお、この三次元グラフィックス画像生成の際に、仮想三次元空間内の視点の位置から視線の方向へ伸ばした直線も描画することとしておくと、レーザ光線を用いて標的を照らすことにより射撃の際の目標とするような現実の軍隊や警察における射撃の様子をシミュレートすることができる。
【０１１３】
ついで、当該設定された視点で当該設定された視線の方向に当該仮想世界の様子を見た三次元グラフィックス画像に、目印５０２を重ねた画像を生成し（ステップＳ４０８）、垂直同期割り込みが発生するまで待機する（ステップＳ４０９）。この待機の間は、他の処理をコルーチン的に行っても良い。
【０１１４】
また、三次元グラフィックス画像の生成は、ＣＰＵ  １０１の制御のもと、画像処理部１０７がＲＡＭ  １０３と共働しておこなう。
【０１１５】
割り込みが発生したら、ＣＰＵ  １０１の制御のもと、画像処理部１０７がＲＡＭ  １０３に生成された画像をフレームメモリに転送する（ステップＳ４１０）。これにより、現在の拳銃型コントローラ２０１からモニタという窓枠を透かして仮想世界を覗いた様子が、モニタに表示されることになる。
【０１１６】
ついで、現在画像取得部３０５は、拳銃コントローラ２０１のＣＣＤカメラ２０７の現在の位置と向きをさらに推定するため、ＣＣＤカメラ２０７が現在撮影している画像（以下「現在画像」という。）をＲＡＭ  １０３に取得し（ステップＳ４１１）、推定部３０６は、現在画像に配置されている目印５０２の位置から、上記基準画像の場合と同様に、ＣＣＤカメラ２０７の位置と向きとを推定する（ステップＳ４１２）。
【０１１７】
そして、ＲＡＭ  １０３内に用意されたＣＣＤカメラ２０７の現在の位置と向きを記憶する領域（この領域に記憶されている値を、視点設定部３０７が参照する。）に、ここで推定された値を書き込んで、撮影部３０３の位置を更新する（ステップＳ４１３）。
【０１１８】
さらに、情報処理装置１００は、拳銃型コントローラ２０１のトリガ２０５が引かれているか調べ（ステップＳ４１４）、引かれていなければ（ステップＳ４１４；Ｎｏ）、ステップＳ４０８に戻る。
【０１１９】
一方引かれていれば（ステップＳ４１４；Ｙｅｓ）、撮影部３０３により推定された現在の撮影部３０３の位置および向きs = (sx,sy,sz)，n=(nx,ny,nz)と、標的オブジェクト６１１の仮想空間内における座標W = (Wx,Wy,Wz)から、射撃が成功したか否かを判定する（ステップＳ４１５）。
【０１２０】
ここで、現実世界の座標と仮想世界の座標とを、窓枠である目印５０２の位置を基準に一致させるものとする。
【０１２１】
図６では、標的オブジェクト６１１がモニタの画面に投影された標的画像５１１も表示されている。視点sからベクトルnの方向へ延長した先に標的画像５１１も標的オブジェクト６１１も存在するので、これは、射撃が成功する場合に相当する。
【０１２２】
射撃が成功したか否かは、最も単純には、銃身の方向ベクトル
n = (nx,ny,nz)
と、拳銃コントローラ２０１から標的オブジェクト６１１への方向ベクトル
W - s = (Wx-sx，Wy-sy，Wz-sz)
とのなす角θが、一定の角度未満である、ということによって判断できる。
【０１２３】
これはすなわち、ある１未満の１に極めて近い閾値Fを用いて、
F ≦ cosθ = (n・W)/(|n| |W|) ≦ 1
が成立するか否かによって判定できる。
【０１２４】
このほか、標的オブジェクト６１１の外周の点（標的オブジェクト６１１を構成するポリゴンの頂点の一部）を何個か設定しておき、視点の位置sからこれらの点へ辺を引くことによってできる角錐の中に、視点の位置から発する方向ベクトルnが含まれることをもって、射撃が成功したと判断しても良い。
【０１２５】
射撃が成功した場合（ステップＳ４１５；Ｙｅｓ）、ミッションが成功した旨を画面に表示して（ステップＳ４１６）、本処理を終了する。
【０１２６】
一方、射撃が成功しなかった場合（ステップＳ４１５；Ｎｏ）、ステップＳ４０８に戻って、ゲームを続ける。
【０１２７】
このように、本実施形態によれば、モニタの画面５０１に表示された目印５０２をＣＣＤカメラ２０７で撮影することによって、拳銃型コントローラ２０１の位置や向きを推定することができる。
【０１２８】
なお、目印５０２の色をそれぞれ異なるものとしておいたり、上記のように、モニタ自体を仮想世界への覗き窓として機能させる場合には、特殊な模様が描かれた窓枠の図形を目印５０２とすることによって、基準画像や現在画像から目印５０２が撮影された位置が同定しやすくなる。
【産業上の利用可能性】
【０１２９】
以上説明したように、本発明によれば、表示装置の画面に表示された目印を撮影部により撮影することによって当該撮影部の位置および向きを推定するのに好適な位置向き推定装置、位置向き推定方法、ならびに、これらをコンピュータにて実現するプログラムを提供することができる。
【図面の簡単な説明】
【０１３０】
【図１】本発明の位置向き推定装置が実現される典型的な情報処理装置の概要構成を示す模式図である。
【図２】本実施形態に係る拳銃型コントローラの外観を示す説明図である。
【図３】本実施形態に係る位置向き推定装置の概要構成を示す模式図である。
【図４】ゲーム制御処理の制御の流れを示すフローチャートである。
【図５】画面に目印が表示される様子を示す説明図である。
【図６】撮影部により目印が撮影される様子を概念的に説明する説明図である。
【符号の説明】
【０１３１】
１００  情報処理装置
１０１  ＣＰＵ
１０２  ＲＯＭ
１０３  ＲＡＭ
１０４  インターフェイス
１０５  コントローラ
１０６  外部メモリ
１０７  画像処理部
１０８  ＤＶＤ−ＲＯＭドライブ
１０９  ＮＩＣ
１１０  音声処理部
２０１  拳銃型コントローラ
２０２  ケーブル
２０３  コネクタ
２０４  拳銃型コントローラ本体
２０５  トリガ
２０６  銃身
２０７  ＣＣＤカメラ
３０１  位置向き推定装置
３０２  表示部
３０３  撮影部
３０４  基準画像取得部
３０５  現在画像取得部
３０６  推定部
３０７  視点設定部
５０１  画面
５０２  目印
５０３  長方形
５１１  標的画像
６０１  平面
６１１  標的オブジェクト
【図１】
2006279543.tif 000003
【図２】
2006279543.tif 000004
【図３】
2006279543.tif 000005
【図４】
2006279543.tif 000006
【図５】
2006279543.tif 000007
【図６】
2006279543.tif 000008