(57)【要約】【課題】指標を用いた位置姿勢計測の補正において、補正方法の切り替え時に起こる不連続な補正を滑らかな補正とし、かつ、指標が得られないときにも精度の高い位置姿勢を得る。【解決手段】撮像装置より位置姿勢計測値を取得し（Ｓ２０１）、撮像装置で撮影した現実空間の画像から指標を検出し同定する（Ｓ２０２、Ｓ２０５）。得られた指標を利用して位置姿勢計測値を補正する補正値を計算し（Ｓ２０７）、過去n時刻分の補正値と合わせて現時刻の補正値を計算する（Ｓ２０９）。そして、得られた現時刻の補正値を保存蓄積する（２１０）とともに、当該現時刻の補正値により位置姿勢計測値を補正する（Ｓ２１１）。また、指標の検出もしくは同定に失敗した場合には、過去の時刻に得られている補正値を利用して位置姿勢計測値を補正する（Ｓ２１４）。【選択図】  図２
2005107247.tif 000002
【特許請求の範囲】
【請求項１】
現実空間における物体の位置姿勢を推定する方法であって、
前記物体に固定された位置姿勢センサより位置姿勢計測値を入力する第１入力工程と、
撮像装置により現実空間を撮像して得られた撮像画像を入力する第２入力工程と、
前記撮像画像から指標を検出する検出工程と、
指標の検出結果に基づいて前記第１入力工程で得た位置姿勢計測値を補正するための補正値を算出する第１算出工程と、
前記第１算出工程で得られた補正値と、メモリに記憶されている過去の所定数の補正値とに基づいて新たな補正値を算出する第２算出工程と、
前記第１もしくは第２算出工程のいずれかで算出された補正値を前記メモリに蓄積する蓄積工程と、
前記第２算出工程で得られた補正値により、前記第１入力工程で入力された位置姿勢計測値を補正する補正工程とを備えることを特徴とする位置姿勢推定方法。
【請求項２】
前記物体が前記撮像装置を含むことを特徴とする請求項１に記載の位置姿勢推定方法。
【請求項３】
前記撮像装置は固定され、前記物体は移動可能であることを特徴とする請求項１に記載の位置姿勢推定方法。
【請求項４】
前記第１算出工程は、
複数種類の補正方法より、補正値を計算するのに用いるべき補正方法を選択し、
選択された補正方法に基づいて補正値を算出することを特徴とする請求項１に記載の位置姿勢指定方法。
【請求項５】
前記第２算出工程は、補正値を回転成分と平行移動成分に分け、該回転成分と該平行移動成分について別々に補正値を算出することを特徴とする請求項１に記載の位置姿勢推定方法。
【請求項６】
前記回転成分の表現方法として四元数を利用することを特徴とする請求項５に記載の位置姿勢推定方法。
【請求項７】
前記補正工程は、前記検出工程において指標が検出できなかった場合には、前記メモリに記憶された補正値に基づいて前記姿勢位置計測値を補正することを特徴とする請求項１に記載の位置姿勢推定方法。
【請求項８】
前記補正工程は、前記検出工程において指標が検出できなかった場合には、前記メモリに記憶された、最新の補正値に基づいて前記姿勢位置計測値を補正することを特徴とする請求項１に記載の位置姿勢推定方法。
【請求項９】
位置姿勢センサより位置姿勢計測値を入力する位置姿勢計測値入力工程と、
撮像装置により現実空間を撮像して得られた撮像画像から指標を検出する検出工程と、
指標の検出結果に基づいて前記位置姿勢計測値を補正するための補正値を算出する第１算出工程と、
前記第１算出工程で得られた補正値と、メモリに記憶されている過去の所定数の補正値とに基づいて新たな補正値を算出する第２算出工程と、
前記第１もしくは第２算出工程のいずれかで算出された補正値を前記メモリに蓄積する蓄積工程と、
前記第２算出工程で得られた補正値により、前記第１入力工程で入力された位置姿勢計測値を補正する補正工程とを有する位置姿勢推定方法であって、
前記補正工程は、前記検出工程によって所定数の指標を検出することができなかった場合は、前記蓄積工程に蓄積されている補正値を用いて前記位置姿勢計測値を補正することを特徴とする位置姿勢推定方法。
【請求項１０】
請求項１乃至９のいずれかに記載の位置姿勢推定方法を実行する工程と、
前記位置姿勢推定方法によって得られた位置姿勢値に基づいて仮想画像を生成し、現実画像と合成することにより複合現実感を提示する提示工程とを備えることを特徴とする情報処理方法。
【請求項１１】
現実空間における物体の位置姿勢を推定する装置であって、
前記物体に固定された位置姿勢センサより位置姿勢計測値を入力する第１入力手段と、
撮像装置により現実空間を撮像して得られた撮像画像を入力する第２入力手段と、
前記撮像画像から指標を検出する検出手段と、
指標の検出結果に基づいて前記第１入力手段で得た位置姿勢計測値を補正するための補正値を算出する第１算出手段と、
前記第１算出手段で得られた補正値と、メモリに記憶されている過去の所定数の補正値とに基づいて新たな補正値を算出する第２算出手段と、
前記第１もしくは第２算出手段のいずれかで算出された補正値を前記メモリに蓄積する蓄積手段と、
前記第２算出手段で得られた補正値により、前記第１入力手段で入力された位置姿勢計測値を補正する補正手段とを備えることを特徴とする位置姿勢推定装置。
【請求項１２】
請求項１乃至９のいずれかに記載の位置姿勢推定方法を実行する位置姿勢推定手段と、
前記位置姿勢推定手段によって得られた位置姿勢値に基づいて仮想画像を生成し、現実画像と合成することにより複合現実感を提示する提示手段とを備えることを特徴とする情報処理装置。
【請求項１３】
請求項１乃至９のいずれかに記載の位置姿勢推定方法をコンピュータに実行させるための制御プログラム。
【請求項１４】
請求項１乃至９のいずれかに記載の位置姿勢推定方法をコンピュータに実行させるための制御プログラムを格納するコンピュータによる読取が可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、現実空間を撮像するカメラもしくは現実空間を移動可能な物体の位置姿勢を推定する技術に関するものである。
【背景技術】
【０００２】
現実空間を撮像するカメラなどの撮像部（以下、適宜カメラと言い換える）の位置姿勢計測は、例えば現実空間と仮想空間とを融合表示する複合現実感システムにおいて必要となる。カメラの位置姿勢の計測には磁気センサ等の位置姿勢センサが用いられるが、その計測精度は複合現実感システムでの利用において十分とはいえない。そこで、計測値を補正することにより位置姿勢計測精度を向上することが一般に行なわれる。そのような補正の方法として、大きく分けて以下の４つの方法が提案されている。
【０００３】
〈方法１〉カメラに設置した磁気センサ等の位置姿勢センサによってカメラの位置姿勢を計測し、現実空間に配置した位置が既知のマーカ、または現実空間中の位置が既知の特徴点（以下、マーカと特徴点を総称して指標という）を用いて該位置姿勢センサの計測誤差を補正する。この補正方法は特許文献１乃至３および非特許文献１乃至２に記載されている。この補正方法は、磁気センサ等の位置姿勢センサでは、複合現実感システムで利用するカメラの位置姿勢を計測する目的としては精度が不足していることを問題視して、指標の情報とその指標を画像から検出した情報とを利用してセンサの計測値を補正するものである。すなわち、〈方法１〉は、位置姿勢センサの計測値を指標により補正する方法であり、精度の高い位置姿勢計測を行う方法として有効である。
【０００４】
〈方法２〉センサの計測誤差を補正する際に、前フレームの補正値と現フレームの補正値を利用して現フレームの補正値を計算する。この補正方法が特許文献１にて開示されている。この補正方法は複数の指標を利用する場合に、利用する指標を切り替えるときの処理方法である。この方法によれば、指標の切り替わり時の補正値の不連続さを滑らかにすることができる。このように、〈方法２〉では、前フレームの補正値と現フレームの補正値とを利用して現フレームの補正値が計算される。
【０００５】
〈方法３〉特願２００２−０８１２５１号によって提案されているものであり、状況に応じて、カメラの位置姿勢の推定方法を切り替える。位置姿勢を求める方法には、様々な方法が考えられ、それぞれに短所長所がある。特願２００２−０８１２５１号で提案されたこの方法は、それらの「位置姿勢を求める方法」を状況に応じて選択的に組み合わせて利用することによって、すなわち、位置姿勢推定方法を切り替えることによってより良い位置姿勢推定を行おうとするものである。
【０００６】
〈方法４〉指標による補正が行えている状態とそうでない状態（位置姿勢センサの計測値のみの状態）との間の計測値のギャップを埋める方法が提案されている。この方法は、非特許文献２の７.１節の第２パラグラフに記載されており、画像による補正が行えている状態から画像による補正が行えない状態となった場合に、カメラの位置姿勢推定結果を徐々にセンサの計測値に推移させることが簡単に述べられている。非特許文献２で述べられている方法によると、指標の検出に失敗する状態となった場合には、位置姿勢推定結果を誤差の大きいセンサの計測値そのものに推移させていくことになる。
【特許文献１】特開平１１−１３６７０６号公報
【特許文献２】特開２０００−０４１１７３号公報
【特許文献３】特開２００２−２２８４４２号公報
【非特許文献１】Bajura Michael, Ulrich Neuman: Dynamic registration correction in video-based-augmented reality systems, IEEE Computer Graphics and Applications 15, 5, pp.52-60, 1995.
【非特許文献２】A. State, G. Hirota, D. T. Chen, B. Garrett, and M. Livingston: Superior augmented reality registration by integrating landmark tracking and magnetic tracking, Proc. SIGGRAPH '96, pp.429-438, July 1996.
【発明の開示】
【発明が解決しようとする課題】
【０００７】
〈方法１〉の具体的な手法としては様々な手法が考えられるが、カメラで捉えられている指標の条件などにより、それぞれに長所短所があると考えられる。そのため、特願２００２−０８１２５１号で提案されている〈方法３〉のように、場面に応じて補正方式を切り替えることが望まれる。〈方法３〉は位置姿勢センサの計測値を指標により補正するという〈方法１〉の手法に限定されたものではなく、位置姿勢推定一般に関して適用できる方法であるが、もちろん〈方法１〉における補正方式の異なる手法同士を切り替える場合にも適用できると考えられる。しかし、〈方法３〉を、補正方式の異なる方法にそのまま適用すると、補正手法が切り替わる瞬間に、位置姿勢の補正結果が不連続な値となってしまうという改善点がある。
【０００８】
一方で、位置姿勢推定値が不連続になることを考慮した方法として、特許文献１にて開示されている補正方法により〈方法２〉が提案されている。しかしながら、〈方法２〉は、複数の指標を利用する場合において、指標が切り替わるときに起こる位置姿勢推定値の不連続性を問題視し、その不連続性を解決する発明であり、位置姿勢の補正方法が切り替わることまでを考慮し解決するものではない。
【０００９】
また、〈方法４〉の方法は、一見問題のない処理であると考えられるが、例えば指標がカメラに十分に捉えられている状態にあるときに、カメラを動かすことなしにその指標の一部を手で隠してしまうような状況を想定した場合に問題があることがわかる。すなわち、このような場合、手で隠す前と隠した後とで、本来位置姿勢推定結果は同じ値であるべきである。しかしながら、〈方法４〉の手法に従うと、指標を捉えられなくなった場合にはセンサの計測値を位置姿勢推定値としてしまうこととなるため、隠す前まで精度の高い位置姿勢推定が行えていたのにもかかわらず、指標を隠したことにより、センサ計測値のもつ誤差をそのまま含んだ精度の悪い推定結果となってしまう。
【００１０】
本発明は上記の課題に鑑みてなされたものであり、撮影装置もしくは物体の位置姿勢を指標を用いて補正しながら推定する場合に、補正方法の切り替わり時の補正の不連続性をなくすことを可能とすることを目的とする。
また、本発明は、指標が利用できなくなった場合の計測精度の低下を防止することを目的とする。
【課題を解決するための手段】
【００１１】
上記の目的を達成するための本発明による位置姿勢推定方法は、
現実空間における物体の位置姿勢を推定する方法であって、
前記物体に固定された位置姿勢センサより位置姿勢計測値を入力する第１入力工程と、
撮像装置により現実空間を撮像して得られた撮像画像を入力する第２入力工程と、
前記撮像画像から指標を検出する検出工程と、
指標の検出結果に基づいて前記第１入力工程で得た位置姿勢計測値を補正するための補正値を算出する第１算出工程と、
前記第１算出工程で得られた補正値と、メモリに記憶されている過去の所定数の補正値とに基づいて新たな補正値を算出する第２算出工程と、
前記第１もしくは第２算出工程のいずれかで算出された補正値を前記メモリに蓄積する蓄積工程と、
前記第２算出工程で得られた補正値により、前記第１入力工程で入力された位置姿勢計測値を補正する補正工程とを備えることを特徴とする位置姿勢推定方法。
【００１２】
また、上記の目的を達成するための本発明の他の態様による位置姿勢推定方法は、上記の位置姿勢推定方法において、前記補正工程は、前記検出工程において指標が検出できなかった場合には、前記メモリに記憶された補正値に基づいて前記姿勢位置計測値を補正する。
【００１３】
また、本発明の他の形態による位置姿勢推定方法は、
位置姿勢センサより位置姿勢計測値を入力する位置姿勢計測値入力工程と、
撮像装置により現実空間を撮像して得られた撮像画像から指標を検出する検出工程と、
指標の検出結果に基づいて前記位置姿勢計測値を補正するための補正値を算出する第１算出工程と、
前記第１算出工程で得られた補正値と、メモリに記憶されている過去の所定数の補正値とに基づいて新たな補正値を算出する第２算出工程と、
前記第１もしくは第２算出工程のいずれかで算出された補正値を前記メモリに蓄積する蓄積工程と、
前記第２算出工程で得られた補正値により、前記第１入力工程で入力された位置姿勢計測値を補正する補正工程とを有する位置姿勢推定方法であって、
前記補正工程は、前記検出工程によって所定数の指標を検出することができなかった場合は、前記蓄積工程に蓄積されている補正値を用いて前記位置姿勢計測値を補正する。
【００１４】
また、本発明によれば、上記位置姿勢推定方法を用いて得られた位置姿勢計測値に基づいて仮想画像を生成し、現実画像と合成することにより複合現実感を提示する情報処理方法及び情報処理装置が提供される。
また、上述の目的は、本発明の位置姿勢推定方法をコンピュータ装置に実現させるためのコンピュータプログラム及び、このコンピュータプログラムを記録したコンピュータ装置読み取り可能な記録媒体によっても達成される。
【発明の効果】
【００１５】
上記の構成によれば、撮影装置もしくは物体の位置姿勢を指標を用いて補正しながら推定する場合に、不連続性を抑制することができる。例えば、補正方法の切り替わり時の補正の不連続性を抑制することができる。また、指標が利用できなくなった場合でもその精度の低下を防止することができる。
【発明を実施するための最良の形態】
【００１６】
以下添付図面を参照して、本発明の好適な実施形態を詳細に説明する。
【００１７】
［第１実施形態］
図１に第１実施形態における位置姿勢推定処理を行うための構成を示す。図１において、頭部装着型表示装置（Head Mount Display：以下、ＨＭＤ）１０１は、内部にカメラ１０２と位置姿勢センサ１０３と表示器１０４を備えている。それらは互いに固定された関係にあり、位置姿勢センサ１０３はカメラ１０２の位置姿勢を計測することができる。
【００１８】
ＣＰＵ１０５は、本実施形態を実行するための中央処理装置であり、図１に示された構成に含まれる機器の制御を行い、後述する位置推定処理を実行する。バスコントローラ１０６は、ＣＰＵ１０５やメモリ１０８などの本構成に含まれる機器を接続し、それらの機器間におけるデータ伝送を可能にする。ビデオキャプチャカード１０７は、カメラ１０２からビデオ信号を受け、これを撮像画像のデジタルデータとしてバスコントローラ１０６を介してメモリ１０８に転送する機能を有する。
【００１９】
メモリ１０８は、ＣＰＵ１０５で実行するための処理手順を記憶する（処理手順記憶部１０８ａ）とともに、ビデオキャプチャカード１０７から得られる画像データ等、位置推定処理の過程で必要となるデータを記憶する（処理データ記憶部１０８ｂ）。キーボード１０９は、処理の開始や終了を操作者が指示する際に利用される。グラフィクスカード１１０は、表示器１０４の表示を制御し、処理結果として得られる複合現実空間を表示させる。なお、図１では、表示器１０４はカメラ１０２及び位置姿勢センサ１０３と共に固定された構成となっているが、本実施形態ではカメラ１０２と位置姿勢センサ１０３が固定されていることが必須であり、必ずしも表示器１０４はそれらと固定されている必要はない。
【００２０】
引き続いて、上記構成を備える装置において実行される本実施形態の位置姿勢推定処理について、図２に示したフローチャートを参照して説明する。
【００２１】
まず、ステップＳ２０１において、位置姿勢センサ１０３より位置姿勢計測値を取得する。一方、ステップＳ２０２にて、カメラ１０２で現実空間を撮像し、メモリ１０８に撮像画像を転送する。ステップＳ２０３では、メモリ１０８に格納された撮像画像から指標を検出する。特定の色のシール状物体のような特定色領域を人工的に予め現実空間に配置しておいたものを指標としてもよいし、現実空間シーンに存在する特徴的な場所を指標として用いてもよい。特定色領域を指標として利用する場合には、画像から対応する色領域検出を行い、その色領域の重心を求めることにより、画像中で捉えられた指標の位置を検出することができる。また、特徴的な場所を指標として用いる場合は、パターンマッチングなどの技術により指標を抽出し、その抽出結果に基づいて指標の位置を検出することができる。
【００２２】
引き続き、ステップＳ２０４において、指標が検出されたかどうかを判定する。指標が検出された場合はステップＳ２０５へ進み、検出されていない場合はステップＳ２１２へ進む。ステップＳ２０５では、ステップＳ２０１で得られたカメラの位置姿勢計測値とステップＳ２０４で検出された指標とを基にして、ステップＳ２０３で検出された指標が現実空間中のどの指標であるのかを同定する。これは、指標が画像から検出した段階では同じ特徴しかもっていないような場合に、位置姿勢センサ１０３からの位置姿勢計測値を利用して識別（同定）を行う処理である。そして、ステップＳ２０６にて、同定された指標があるかどうかを判定し、同定された指標があればステップＳ２０７へ、なければステップＳ２１２へ処理が進む。
【００２３】
なお、もしも、指標がセンサの計測値を利用することなしに、同定できるようなものである場合（画像から検出するだけで一意に指標を特定できるような指標を利用する場合）には、このステップＳ２０５とＳ２０６の２つのステップは不要である。この場合、ステップＳ２０４で指標が検出された場合の次の処理は、ステップＳ２０６で指標が同定された場合に進むステップであるステップＳ２０７となる。また、指標の同定に利用する情報として、ステップＳ２０１で得られている位置姿勢センサ１０３の位置姿勢計測値を利用したが、これに限られるものではない。例えば、後で説明するステップＳ２１１もしくはステップＳ２１４で位置姿勢計測値に補正を行った後の位置姿勢値、すなわち、直前の位置姿勢の推定値であってもよい。あるいは、ステップＳ２１１もしくはステップＳ２１４で利用した補正値を用いてステップＳ２０１で得られた位置姿勢計測値を補正して得られる位置姿勢計測値を利用してもよい。
【００２４】
次に、ステップＳ２０７において、ステップＳ２０１で得られた位置姿勢センサ１０３の位置姿勢計測値をステップＳ２０５で同定された指標を利用して補正する場合の補正値を計算する。位置姿勢センサ１０３の位置姿勢計測値を指標を利用して補正する方法の一例としては、例えば、位置姿勢センサ１０３の位置姿勢計測値に基づいて指標の３次元位置を画像に投影した画像面上での位置と、画像から検出した指標の画像面上での位置とが一致するように、位置姿勢計測値のうちの回転成分もしくは平行移動成分の一方のみを補正する方法が挙げられる。ここで、補正値とは、補正前の位置姿勢センサ１０３からの位置姿勢計測値と補正後の位置姿勢値との差分を表す量のことである。上記補正方法の場合は回転成分もしくは平行移動成分のいずれか一方のみをもつ補正値となる。
【００２５】
なお、他の補正方法としては、位置姿勢計測値を初期位置姿勢とし、位置姿勢センサ１０３の位置姿勢計測値に基づいて指標の３次元位置を画像に投影した画像面上での位置と、画像から検出した指標の画像面上での位置との間のずれが小さくなるように、位置姿勢値を繰り返し修正することによって、そのずれが最小となるように位置姿勢を補正する方法がある。この場合の補正値は、回転成分と平行移動成分の両方がある補正値となる。
【００２６】
以上のように、ステップＳ２０７では、このような位置姿勢センサ１０３の位置姿勢計測値をより正確な位置姿勢値へと修正する補正値を計算する。このとき、撮像画像より同定された指標の状態に応じて、あるいは、ステップＳ２０７の補正値計算の過程で、センサの計測値の補正方法としてどのような補正を行うとより効果的な補正が行えるのかが変化する場合がある。そこで、場合によってはステップＳ２０８を実行し、上述のような指標を利用した補正方法を切り替え、切り替えた補正方法に基づいて、再びステップＳ２０７にてセンサの計測値の補正値の計算を行う。この切り替え方法としては、検出同定できたマーカの情報量（単純にはマーカの数など）に応じて切り替える方法や、計測範囲毎に補正方法を対応付けておき補正前のセンサ計測値の出力する位置姿勢が存在する計測範囲によって決定する方法や、手動で切り替え選択する方法など様々な方法が考えられるが、切り替え方法はどのような方法であっても構わない。
【００２７】
ここまでのステップＳ２０１からＳ２０８までの処理は、あるひとつの時刻における計測結果を処理する工程である。後述するステップＳ２１６でもわかるように、本実施形態の全体の処理工程は、一時刻における計測値を処理する工程に留まるものではなく、一時刻で得られる計測値の一連の処理工程が、再び次の時刻にて繰り返されるループを成す構成である。すなわち、このループを最初に処理する場合を除き、次のステップＳ２０９を実行するときには、後述するステップＳ２１０で保存蓄積される補正値が既に存在することとなる。
【００２８】
ステップＳ２０９では、ステップＳ２１０にて蓄積されている補正値から過去ｎ時刻分の補正値（ｎは１以上の有限な整数）と、ステップＳ２０７で得られた現時刻での補正値とを利用して、現時刻で利用する補正値を計算する。この計算方法の詳細を説明する。
【００２９】
現在の時刻をt、１時刻前の時刻をt-1、i時刻前の時刻をt-iとし、ステップＳ２０７で計算した補正値のうちの回転成分をR(t)、平行移動成分をT(t)と表記し、ステップＳ２１０にて保存されたi時刻前の補正値の回転成分をR'(t-i)、平行移動成分をT'(t-i)と表記する。R(t)およびR'(t-i)は、それぞれ回転の表現方法として四元数（Quaternion）により表現する大きさが１である４次元のベクトルである。また、T(t)およびT'(t-I)は、３次元空間での移動量を表す３次元ベクトルである。このとき、現時刻で実際に利用する補正値の回転成分R'(t)と平行移動成分T'(t)は、それぞれ以下の数１と数２の式にて計算される。
【００３０】
【数１】
2005107247.tif 000003
【００３１】
【数２】
2005107247.tif 000004
【００３２】
上記の数１と数２で利用しているw(i)(i = 0,1,,,,n)は、重み係数であり、それぞれ任意の正の実数である。すべてのw(i)が１であるとすると、上記の数１および数２は、過去n時刻の補正値とステップＳ２０７で得られた補正値を平均していることを意味する。なお、数１において分母は分子であるベクトル和の大きさを表している。nまたはw(i)もしくはその両方の値を変更することにより、過去の補正値の利用度合いを調整することが可能である。n = 1の場合は、直前の時刻の結果のみを利用する方法となる。なお、回転の表現方法として四元数を利用しているのは、この重み付け平均演算を容易に行うためである。四元数で表された２つ回転変換があるとき、それらの四元数のベクトルの和を正規化することにより球面線形補間を行うことで、２つの回転変換の補間を行う方法は広く利用されている。すなわち、ここで述べた方法は、重み付きの球面線形補間を多数の回転変換の間で行う処理である。重み係数w(i)の例としては、すべてが１でも構わないが、iが小さいほど（時間的に最近のものほど）重み値を大きくするといったものが挙げられる。また、このステップＳ２０９が最初に実行されるとき（ループ状をなす工程の初回の処理であるとき）、および、ステップＳ２１０にて過去に補正値を保存した回数がｎよりも小さいときは、ステップＳ２１０にて過去に蓄積された時刻数m（0≦m＜n）個分にて上記ステップＳ２０９の処理を実行する。
【００３３】
次にステップＳ２１０にて、ステップＳ２０９で得られた補正値を現時刻の補正値としてメモリ１０８に保存蓄積する。本実施形態では、少なくともｎ個の補正値を保存するためのバッファをメモリ１０８に用意しておき、時刻的に最も古い保存値を現時刻の補正値で書き換える。これにより、常にｎ時刻分以上の補正値を蓄積するようにする。蓄積数がｎに満たない場合には、過去に保存されたバッファを上書きすることなく、何も保存されていないバッファに書き込んでく。なお、キーボード１０９からの入力指示を利用してバッファ数ｎを指定可能としてもよい。例えば、上矢印キーと下矢印キーをそれぞれｎを増加させる指示と減少させる指示として割り振り、それらが押されているかどうかを調べ、押されている場合にはｎを増減させるという処理である。
【００３４】
また、この現在の補正値として保存される補正値をステップＳ２０９で得られた補正値を利用するのではなく、ステップＳ２０７で得られた補正値としてもよい。この方法を利用する場合、蓄積されているすべての補正値は、それぞれ過去の補正値を利用して計算されたものではなくなるため、ステップＳ２０９で計算に利用される補正値は、完全に現時刻からｎ時刻分前までの情報のみから計算されることとなる。逆にいえば、ステップＳ２１０においてステップＳ２０９で得られた補正値を保存する方法では、過去の補正値として保存されているすべての補正値が、それぞれその時点から過去n時刻分の補正値を利用して計算されたものとなるため、現時刻の補正値は、現時刻から見て過去n時刻よりも前の補正値も間接的に利用した補正値となる。これはどちらが優れているという性質のものではない。従って、状況に応じてどちらかの方法を選択的に用いるような構成としても良い。
【００３５】
ステップＳ２１１では、ステップＳ２０９で得られた現時刻の補正値を利用して、ステップＳ２０１で取得した姿勢計測値を補正する。これにより、誤差の大きい位置姿勢センサ１０３の計測値の精度を高めることができる。しかも、過去n時刻分の補正結果と共に計算された補正値が利用されることとなるため、ステップＳ２０８で示した補正方法の切り替えを行ったとしても、その瞬間に補正値が急変することがなく、滑らかな補正値の移行が実現される。また、同様に、特許文献１で開示されている補正方法で問題視しているような複数のマーカを利用する場合のマーカの切り替え時に生じ得る補正値の急変をも防ぐことができる。
【００３６】
言い換えれば、nを１とし、かつ、ステップＳ２１０で保存する補正値にステップＳ２０９の結果を利用した場合で、かつ、複数のマーカの切り替え時を想定した場合というのが、特許文献１で開示されている補正方法に相当する処理である。すなわち、本発明の方法は、特許文献１で開示されている補正方法と同様な考え方を別の局面においても適用できるように一般化し、過去の補正値の利用方法に関してより効果の高い方法となるように拡張した位置付けに相当する方法である。
【００３７】
この後、ステップＳ２１５へ進み、位置姿勢計測値を補正して得られた位置姿勢値を利用して、複合現実空間の生成・描画を行う。例えば、まず、グラフィクスカード１１０内に用意された描画用画像領域に対して、ステップＳ２０２で得られた現実空間の画像を背景として描画し、ステップＳ２１１で得られた位置姿勢値に基づいて予めメモリ１０８に用意されている仮想物体や仮想空間データを上書き描画することにより、現実空間と仮想空間を融合した描画画像を生成する。得られたグラフィクスカード内の描画画像は、グラフィクスカード１１０から表示器１０４へと伝送され、ＨＭＤ１０１を装着している複合現実空間を体験しているユーザが観察することとなる。なお、描画用画像領域は、グラフィクスカード１１０内ではなくメモリ１０８内に用意されていてもよい。
【００３８】
次に、前述したステップＳ２０４で指標が検出されなかった場合、および、ステップＳ２０６で同定された指標がなかった場合の処理について説明する。これらの場合、処理はステップＳ２１２に進む。この２つのケースでは、位置姿勢計測値を補正するために利用できる指標がない状況である。従来は、このような場合には、指標による補正をあきらめて、誤差の多いセンサの位置姿勢計測値をそのまま利用する方法が採られていた。従来技術で示した〈方法４〉においても、「発明が解決しようとする課題」の中で内在する課題として記述したように、滑らかな推移を考慮しているとはいえ、最終的にはセンサの計測値をそのまま利用することになる。これに対して、以下に説明するステップＳ２１２からステップＳ２１４の処理は、そのような場合であっても指標による補正を行って精度を高めようとするものである。
【００３９】
まず、ステップＳ２１２にて、過去の時刻に得られている補正値があるか、すなわち、ステップＳ２１０にて保存された補正値があるどうかを調べる。過去の補正値がない場合とは、ループをなす本実施形態において、初回の工程で指標が検出できなかった、あるいは同定できなかった場合であり、本実施形態の動作開始直後にて起こりうる特殊なケースである。そのような場合にはステップＳ２１３にて、位置姿勢計測値をそのまま利用することとする。一方、通常の動作では、過去の補正値が蓄積されており、ステップＳ２１２はＹｅｓとなり、処理はステップＳ２１４に進む。
【００４０】
ステップＳ２１４では、ステップＳ２１０にて保存されている過去の補正値に基づいて補正値を決める。本実施形態では、それら蓄積された補正値のちの最新の補正値を利用してステップＳ２０１で得た位置姿勢計測値を補正する。ステップＳ２１３およびステップＳ２１４の後は、ステップＳ２１５に進み、前述したように得られた位置姿勢値を利用して複合現実空間の生成・描画を行う。このステップＳ２１４の処理により、例えば、指標が十分に検出・同定できていた状態において、体験者であるユーザが指標の前に手をかざしてしまった等の原因で指標の検出に失敗したとしても、位置姿勢の計算に過去の最新の補正値が適用されることとなるため、位置姿勢計測精度の悪化を防ぐことが可能となる。
【００４１】
ステップＳ２１５の処理が終わると、ステップＳ２１６へと進み、ここではこの一連の処理を終了させるかどうかを判定する。判定の方法としては、例えばキーボード１０９の“ｑ”キーが押されたかどうかを利用することができる。終了指示がない場合には、再び本実施形態のスタート位置へと戻り、ステップＳ２０１からステップＳ２１５までの一連の処理が実行される。
【００４２】
［第２実施形態］
第１実施形態では、カメラと位置姿勢センサを互いに固定し、カメラが動的に動く状況にて、現実空間に固定された指標を撮像する場合を想定した実施形態であるが、カメラを固定し、位置姿勢センサおよび指標を配置した物体を動かす場合においても本発明を適用することが可能である。
【００４３】
図３に第２実施形態の構成を示す。操作物体３０１は、動作の対象となる対象物体本体に位置姿勢センサ３０３が固定されているものである。カメラ３０２はその操作物体を撮影することができるカメラである。それ以外の３０４から３１０の構成は、それぞれ図１の１０４から１１０の構成と同じものである。
【００４４】
上記構成を備える装置による位置姿勢推定処理のフローチャートは、第１実施形態のフローチャートである図２と同様のものとなる。第１実施形態の場合と異なるのは、ステップＳ２０５、ステップＳ２０７、ステップＳ２１１、ステップＳ２１４で行われる座標変換計算の演算方法である。しかしながら、カメラが動き現実空間が固定されている場合のカメラの位置姿勢を表す座標変換行列（第１実施形態）と、カメラが固定され対象物体が動く場合の物体の位置姿勢を表す座標変換行列（第２実施形態）とは、逆行列の関係にあり、どちらを基準として見るかという違いがあるだけであって、本質的には違うものではない。従って、図２のフローチャートと同様の処理により第２実施形態の物体の位置姿勢値を求める処理が実現される。
【００４５】
［第３の実施形態］
第１実施形態では、カメラと位置姿勢センサを互いに固定し、カメラが動的に動く状況にて、現実空間に固定された指標を撮像する場合を想定した実施形態であり、第２実施形態は、カメラを固定し、位置姿勢センサおよび指標を配置した物体を動かす場合を想定した実施形態である。第３実施形態では、カメラの位置姿勢センサを固定し、物体にも位置姿勢センサを固定し、それぞれが動き得るような場合を想定する。この場合も、図２のフローチャートと同様の処理により、カメラ及び物体の姿勢位置を推定することが可能となる。
【００４６】
以上説明したように、上記各実施形態によれば、撮影装置もしくは物体の位置姿勢を指標を用いて補正することによって推定する場合に、補正方法の切り替わり時の補正の不連続性をなくすことができ、かつ、指標が利用できなくなった場合の精度を上げることが可能となる。
【００４７】
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読出し実行することによっても、達成されることは言うまでもない。
【００４８】
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００４９】
プログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク，ハードディスク，光ディスク，光磁気ディスク，ＣＤ−ＲＯＭ，ＣＤ−Ｒ，磁気テープ，不揮発性のメモリカード，ＲＯＭなどを用いることができる。
【００５０】
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００５１】
さらに、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【図面の簡単な説明】
【００５２】
【図１】第１実施形態による位置姿勢推定処理を実現する装置の機能構成を示すブロック図である。
【図２】第１実施形態および第２実施形態および第３の実施形態における位置姿勢推定処理を示すフローチャートである。
【図３】第２実施形態による位置姿勢推定処理を実現する装置の機能構成を示すブロック図である。
【図１】
2005107247.tif 000005
【図２】
2005107247.tif 000006
【図３】
2005107247.tif 000007