(57)【要約】      （修正有）【課題】より多くの環境において安定的にカメラの位置姿勢を推定する情報処理装置を提供する。【解決手段】撮像装置１００によって撮像された画像を取得する画像取得手段１０１０と、画像から第一の特徴を検出する第一の検出手段１０２０と、第一の検出手段とは異なる方法により、画像から第一の特徴と異なる第二の特徴とを検出する第二の検出手段１０４０と、画像から検出された第一の特徴に基づいて、撮像装置の位置姿勢を第一の位置姿勢として導出する第一の位置姿勢導出手段１０３０と、画像から検出された第二の特徴に基づいて、撮像装置の位置姿勢を第二の位置姿勢として導出する第二の位置姿勢導出手段１０５０と、第一の位置姿勢と第二の位置姿勢とに基づいて、撮像装置の位置姿勢を決定する決定手段１０６０とを備える。【選択図】図１
2017129567.tif 000002
【特許請求の範囲】
【請求項１】
撮像装置によって撮像された画像を取得する画像取得手段と、
前記画像から第一の特徴を検出する第一の検出手段と、
前記第一の検出手段とは異なる方法により、前記画像から該第一の特徴と異なる第二の特徴とを検出する第二の検出手段と、
前記画像から検出された前記第一の特徴に基づいて、前記撮像装置の位置姿勢を第一の位置姿勢として導出する第一の位置姿勢導出手段と、
前記画像から検出された前記第二の特徴に基づいて、前記撮像装置の位置姿勢を第二の位置姿勢として導出する第二の位置姿勢導出手段と、
前記第一の位置姿勢と前記第二の位置姿勢とに基づいて、前記撮像装置の位置姿勢を決定する決定手段とを備えることを特徴とする情報処理装置。
【請求項２】
前記決定手段は、前記第一の位置姿勢と前記第二の位置姿勢のいずれか一方を、前記撮像装置の位置姿勢として決定することを特徴とする請求項１に記載に情報処理装置。
【請求項３】
前記第一の位置姿勢の導出および前記第二の位置姿勢の導出がそれぞれ所定の条件を満たしているかを判定する判定手段を更に備えることを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記第一の位置姿勢の導出および前記第二の位置姿勢の導出の両方とも所定の条件を満たしていないと判定された場合には、前記第一の位置姿勢を前記撮像装置の位置姿勢として決定することを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記第一の位置姿勢の導出が所定の条件を満たしていると判定され、前記第二の位置姿勢の導出が所定の条件を満たしていないと判定された場合に、前記第二の位置姿勢を前記撮像装置の位置姿勢として決定し、
前記第二の位置姿勢の導出が所定の条件を満たしていると判定され、前記第一の位置姿勢の導出が所定の条件を満たしていないと判定された場合に、前記第一の位置姿勢を前記撮像装置の位置姿勢として決定することを特徴とする請求項３に記載の情報処理装置。
【請求項６】
前記第一の位置姿勢の導出および前記第二の位置姿勢の導出の両方が所定の条件を満たしていると判定された場合に、前記画像よりも前に取得された画像に基づいて決定された位置姿勢を前記撮像装置の位置姿勢として決定することを特徴とする請求項３に記載の情報処理装置。
【請求項７】
前記判定手段は、位置姿勢の導出が失敗していることを前記所定の条件として判定することを特徴とする請求項３乃至６の何れか１項に記載の情報処理装置。
【請求項８】
前記第一の位置姿勢と前記第二の位置姿勢の差が閾値よりも大きい場合に前記第二の位置姿勢を前記撮像装置の位置姿勢として決定し、
前記第一の位置姿勢と前記第二の位置姿勢の差が閾値以下の場合に前記第一の位置姿勢を前記撮像装置の位置姿勢として決定することを特徴とする請求項１または２に記載の情報処理装置。
【請求項９】
前記決定手段が前記第一の位置姿勢を前記撮像装置の位置姿勢として決定した場合に、前記決定手段が決定した第一の位置姿勢を、前記第二の位置姿勢導出手段による処理の初期値として設定し、
前記決定手段が前記第二の位置姿勢を前記撮像装置の位置姿勢として決定した場合に、前記決定手段が決定した第二の位置姿勢を、前記第一の位置姿勢導出手段による処理の初期値として設定する設定手段を備え、
前記第一の導出手段または前記第二の導出手段は、前記設定された初期値に基づいて処理を行うことを特徴とする請求項１に記載の情報処理装置。
【請求項１０】
前記決定手段は、前記第一の位置姿勢と前記第二の位置姿勢とを所定の割合で重みづけして得られた位置姿勢を、前記第撮像装置の位置姿勢として決定することを特徴とする請求項１に記載の情報処理装置。
【請求項１１】
更に、前記第一の位置姿勢と前記第二の位置姿勢の導出の安定度を取得する手段を備え、
前記決定手段は、前記第一の位置姿勢導と前記第二の位置姿と前記安定度とに基づいて前記位置姿勢を決定することを行うことを特徴とする請求項１に記載の情報処理装置。
【請求項１２】
更に、時刻ｔにおいて出力された位置姿勢と、時刻ｔよりも過去の時刻のフレームにおいて出力された位置姿勢から、前記撮像装置の動きの変化を推定する推定手段を備え、
前記決定手段は、前記第一の位置姿勢と前記第二の位置姿勢と前記動きの変化に基づいて、前記撮像装置の位置姿勢を決定することを特徴とする請求項１に記載の情報処理装置。
【請求項１３】
撮像装置によって撮像された画像を取得する画像取得手段と、
前記画像から第二の特徴を検出する第二の検出手段と、
前記検出手段の結果が第一の条件を満たしている場合は、前記第二の特徴に基づいて導出された前記撮像装置の位置姿勢を、該撮像装置の位置姿勢として決定し、
前記検出手段の結果が前記第一の条件を満たしていない場合は、前記第２の特徴と異なる検出方法により検出された第一の特徴に基づき導出された前記撮像装置の位置姿勢を、該撮像装置の位置姿勢として決定する決定手段を備えることを特徴とする情報処理装置。
【請求項１４】
前記決定手段は、
前記第二の検出手段で検出された第二の特徴の数が閾値よりも大きい場合に、前記第二の特徴に基づいて導出された前記撮像装置の位置姿勢を、該撮像装置の位置姿勢として決定し、
前記検出手段の結果で検出された第二の特徴の数が閾値以下の場合に、前記第２の特徴と異なる検出方法により検出された第一の特徴に基づき導出された前記撮像装置の位置姿勢を、該撮像装置の位置姿勢として決定することを特徴とする請求項１３に記載の情報処理装置
【請求項１５】
前記第一の検出手段は、前記画像に所定のフィルタを施すことにより、前記画像において所定の値以上の輝度勾配を有する画素を前記第１の特徴として検出し、
前記第二の検出手段は、前記画像から所定の形状を有する領域を検出した後に、前記領域の内部の識別情報を読み取ることにより、前記第２の特徴を検出することを特徴とする請求項１乃至１４の何れか１項に記載の情報処理装置。
【請求項１６】
前記第一の特徴は、前記画像における輝度勾配を有する特徴点であることを特徴とする請求項１乃至１５のいずれか１項に記載の情報処理装置。
【請求項１７】
前記第二の特徴は、矩形の形状を有し、該矩形の内部に識別情報を有するマーカであることを特徴とする請求項１乃至１６のいずれか１項に記載の情報処理装置。
【請求項１８】
更に、前記出力された位置姿勢に基づいてＣＧ画像を生成する生成手段を備えることを特徴とする請求項１乃至１７のいずれか１項に記載の情報処理装置。
【請求項１９】
更に、前記画像と前記ＣＧ画像とを合成した合成画像を生成する手段と、
前記合成画像を表示装置に表示させる表示制御手段とを備えることを特徴とする請求項１８に記載の情報処理装置。
【請求項２０】
前記表示装置は、ユーザの頭部に装着するヘッドマウントディスプレイであることを特徴とする請求項１９に記載の情報処理装置。
【請求項２１】
撮像装置によって撮像された画像を取得する画像取得工程と、
前記画像から第一の特徴を検出する第一の検出工程と、
前記第一の検出工程における検出方法とは異なる方法により、前記画像から該第一の特徴と異なる第二の特徴とを検出する第二の検出工程と、
前記画像から検出された前記第一の特徴に基づいて、前記撮像装置の位置姿勢を第一の位置姿勢として導出する第一の位置姿勢導出工程と、
前記画像から検出された前記第二の特徴に基づいて、前記撮像装置の位置姿勢を第二の位置姿勢として導出する第二の位置姿勢導出工程と、
前記第一の位置姿勢と前記第二の位置姿勢とに基づいて、前記撮像装置の位置姿勢を決定する決定工程とを備えることを特徴とする情報処理方法。
【請求項２２】
撮像装置によって撮像された画像を取得する画像取得工程と、
前記画像から第二の特徴を検出する第二の検出工程と、
前記検出手段の結果が第一の条件を満たしている場合は、前記第二の特徴に基づいて導出された前記撮像装置の位置姿勢を、該撮像装置の位置姿勢として決定し、
前記検出手段の結果が前記第一の条件を満たしていない場合は、前記第２の特徴と異なる検出方法により検出された第一の特徴に基づき導出された前記撮像装置の位置姿勢を、該撮像装置の位置姿勢として決定する決定工程を備えることを特徴とする情報処理方法。
【請求項２３】
コンピュータを、請求項１乃至２０のいずれか１項に記載の情報処理装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はカメラの位置または姿勢を推定する技術に関連する。
【背景技術】
【０００２】
現実世界と仮想世界とをリアルタイムに融合させる技術として、複合現実感（ＭＲ：Ｍｉｘｅｄ  Ｒｅａｌｉｔｙ）技術や拡張現実感（ＡＲ：Ａｕｇｍｅｎｔｅｄ  Ｒｅａｌｉｔｙ）技術が知られている。これらの技術は、現実空間とコンピュータによって作られる仮想空間を繋ぎ目なく融合する技術である。これらは、組み立て作業時に作業手順や配線の様子を重畳表示する組み立て支援、患者の体表面に体内の様子を重畳表示する手術支援等、様々な分野への応用が期待される。
【０００３】
ＭＲ技術を実現する上で解決しなければならない大きな問題の一つとして、位置合わせの問題がある。仮想物体が現実空間に実在するように利用者が感じるためには、仮想物体と現実空間との間の幾何学的な整合性が取れている必要がある。即ち、仮想物体は現実空間中に存在するべき位置に存在しているように常に利用者から観察されなければならない。
【０００４】
また、観察者が、仮想物体を現実空間に実在するように感じるための装置の一つとして、ビデオシースルー型の情報処理装置がある。これは、ビデオカメラで現実世界を撮影し、その画像に、仮想物体を重畳した合成画像を、リアルタイムにディスプレイ等の表示手段に表示させ、観察者に提示する装置である。一般にこのような情報処理装置としては、背面にビデオカメラを有するタブレット端末と呼ばれる携帯型情報端末や、頭部搭載型のビデオシースルー型ＨＭＤ（Ｈｅａｄ  Ｍｏｕｎｔｅｄ  Ｄｉｓｐｌａｙ）などが用いられる。
【０００５】
ビデオシースルー型ＨＭＤを利用するＭＲでは、ＨＭＤに内蔵されているカメラから画像が入力される毎に、画像撮影時のカメラの現実空間における位置姿勢を計測する。そしてこのカメラの位置姿勢と、焦点距離などのカメラの固有パラメータとに基づいてＣＧを描画し、係るＣＧを現実空間の画像上に重畳するという処理が一般的に行われる。そのため、ビデオシースルー型ＨＭＤを利用するＭＲの場合、位置合わせの問題は、ＨＭＤに内蔵したカメラの現実空間における位置姿勢を計測する問題となる。
【０００６】
カメラの位置姿勢の計測は、例えば磁気センサや超音波センサ、光学式センサなど６自由度の物理センサによって、計測することが可能である。一方で、ビデオシースルー型ＨＭＤを利用する場合には、ビデオシースルー型ＨＭＤに内蔵されているカメラからの画像情報を位置合わせのために利用することが可能である。画像情報を利用する位置合わせ方法は、物理センサを利用する方法に比べて手軽且つ低コストであるため、広く利用されている。画像情報を利用する位置合わせ手法では、現実空間中における３次元位置が既知の指標をカメラで撮影し、指標の撮影画像上での位置と３次元位置との対応を基にカメラの位置姿勢を推定することが行われている。既知の指標としては、現実空間中に人為的に配置した指標などがある。例としては、四角形マーカー、円形マーカー、点マーカーなどが挙げられる。特許文献１では、点マーカーと四角形マーカーの配置情報を高精度に画像から推定している。しかし、現実環境中に指標を多数配置するには人的・時間的に高コストになり、景観も損なわれるという問題がある。
【０００７】
そこで、既知の指標を用いずに撮影画像上で輝度勾配のあるエッジや角点など自然特徴を検出し、それらを基にカメラの位置姿勢を推定することが行われている。
【０００８】
非特許文献１では、自然特徴として特徴点を画像から検出する。カメラを移動させ、初期画像で検出した特徴点から２次元的に特徴点を追跡し、初期画像と現画像の２つの画像間で特徴点周りの８×８の画素パッチを対応付ける。画像座標の対応点から、２つの画像を撮影したカメラの相対的な位置姿勢と対応付けた特徴点群の３次元情報である位置を推定する。ここで、非特許文献１では、特徴点群の３次元情報である位置と、その周辺の画像パッチを合わせてマップと呼んでいる。さらに、初めの２つの画像から算出されるマップを初期マップと呼ぶ。算出したマップ（ここでは３次元の位置情報を持つ特徴点群）を、現在のカメラの位置姿勢に基づいて画像面に投影し、検出した特徴点と、投影された特徴点の誤差を最小化するように、カメラの位置姿勢を更新する。カメラの位置姿勢が推定されており、特徴点を十分推定しているときに、キーフレームと呼ばれる画像を動画像から取得する。各キーフレームで検出された特徴点を、エピポーラ線上を探索して対応付けを行う。各キーフレームのカメラ位置姿勢と、特徴点群の３次元位置を、各キーフレーム上での投影誤差が最小化されるようにバンドル調整を行い非線形最適化計算によって、マップを高精度に算出する。
【０００９】
非特許文献２では、自然特徴として画像全体から輝度勾配のある点群を密に検出する。初期マップの生成は非特許文献１と同様の手法を利用している。初期マップの生成後、マップの点を現画像に投影した時、マップの点のキーフレーム上の輝度値と現フレーム上の輝度値が一致するように位置姿勢を更新する。また、前キーフレームと位置が閾値以上離れた場合に次のキーフレームを追加する。近傍のキーフレームのマップの点を、追加したキーフレームでエピポーラ探索し、対応付けを行い、２つのキーフレーム間の相対位置姿勢と対応情報に基づいてマップの点の現キーフレームにおける奥行情報を推定する。非特許文献２では、キーフレームの画像情報とキーフレーム上で輝度勾配のある点の奥行情報とキーフレームの位置姿勢を合わせて、マップと呼んでいる。ここで、キーフレームを逐次追加していくと誤差が蓄積してくため、マップの最適化を行うことで、マップ全体の整合がとれるようにしている。
【００１０】
非特許文献１や非特許文献２は、ＳＬＡＭ（Ｓｉｍｕｌｔａｎｅｏｕｓ  Ｌｏｃａｌｉｚａｔｉｏｎ  Ａｎｄ  Ｍａｐｐｉｎｇ）と呼ばれる技術である。カメラの自己位置姿勢を推定するＬｏｃａｌｉｚａｔｉｏｎと、特徴点の位置を推定するＭａｐｐｉｎｇとを同時に行う手法である。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特許第４５３２９８２号
【非特許文献】
【００１２】
【非特許文献１】Ｇ．Ｋｌｅｉｎ，Ｄ．Ｍｕｒｒａｙ，“Ｐａｒａｌｌｅｌ  ｔｒａｃｋｉｎｇ  ａｎｄ  ｍａｐｐｉｎｇ  ｆｏｒ  ｓｍａｌｌ  ＡＲ  ｗｏｒｋｓｐａｃｅｓ”，Ｉｎ：Ｉｎｔｌ．Ｓｙｍｐ．ｏｎ  Ｍｉｘｅｄ  ａｎｄ  Ａｕｇｍｅｎｔｅｄ  Ｒｅａｌｉｔｙ（ＩＳＭＡＲ），２００７．
【非特許文献２】Ｊ．Ｅｎｇｅｌ，Ｔ．Ｓｃｈoｐｓ，Ｄ．Ｃｒｅｍｅｒｓ，”ＬＳＤ−ＳＬＡＭ：Ｌａｒｇｅ−Ｓｃａｌｅ  Ｄｉｒｅｃｔ  Ｍｏｎｏｃｕｌａｒ  ＳＬＡＭ”，Ｅｕｒｏｐｅａｎ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｃｏｍｐｕｔｅｒ  Ｖｉｓｉｏｎ（ＥＣＣＶ），２０１４
【発明の概要】
【発明が解決しようとする課題】
【００１３】
非特許文献１のように画像中で検出した角点の周辺のパッチ情報を自然特徴として扱う方法は、繰り返し模様ではない角点を画像から多く検出できる環境においては、安定してカメラの位置姿勢を推定することができる。しかし、模様の少ない床や壁を撮影する場合など、角点を検出しにくい環境で、カメラの位置姿勢を安定して推定することができないという問題があった。
【００１４】
また、非特文献２のように、輝度勾配が検出可能な点を密に利用する手法では、非特許文献１のように角点を検出する手法と比べて、特徴を多く利用できる点で、非特許文献１の手法よりも多くの環境に適用可能である。しかし、模様の少ない床や壁を撮影する場合など、輝度勾配を検出しにくい環境では、やはりカメラの位置姿勢を安定して推定することができないという問題があった。
【００１５】
一方で、四角形マーカー、円形マーカーなど、識別性の高い指標を、少数でも検出できれば、模様の少ない床や壁を撮影する場合など、角点や輝度勾配やオプティカルフローなどの自然特徴を検出しにくいシーンでも、カメラの位置姿勢を推定することが可能である。しかし、少数の識別性の高い指標を用いた場合には、多数の特徴を画像から検出できる環境での非特許文献２のような自然特徴を利用する手法と比べて、推定したカメラの位置姿勢の精度が低下するという課題があった。これは、カメラ位置姿勢に使用する特徴の数が少ないために、デジタル画像に含まれる電気的なノイズや、デジタル画像に含まれるサンプリング誤差の影響を受けやすいためである。
【００１６】
上記課題に鑑みて、本発明は、より多くの環境において安定的にカメラの位置姿勢を推定することを目的とする。
【課題を解決するための手段】
【００１７】
上記の目的を達成するために、本願発明の情報処理装置は例えば、撮像装置によって撮像された画像を取得する画像取得手段と、前記画像から第一の特徴を検出する第一の検出手段と、前記第一の検出手段とは異なる方法により、前記画像から該第一の特徴と異なる第二の特徴とを検出する第二の検出手段と、前記画像から検出された前記第一の特徴に基づいて、前記撮像装置の位置姿勢を第一の位置姿勢として導出する第一の位置姿勢導出手段と、前記画像から検出された前記第二の特徴に基づいて、前記撮像装置の位置姿勢を第二の位置姿勢として導出する第二の位置姿勢導出手段と、前記第一の位置姿勢と前記第二の位置姿勢とに基づいて、前記撮像装置の位置姿勢を決定する決定手段とを備える。
【００１８】
本願発明の別の側面の情報処理装置は、例えば、撮像装置によって撮像された画像を取得する画像取得手段と、前記画像から第二の特徴を検出する第二の検出手段と、前記検出手段の結果が第一の条件を満たしている場合は、前記第二の特徴に基づいて導出された前記撮像装置の位置視姿勢を、該撮像装置の位置姿勢として決定し、前記検出手段の結果が前記第一の条件を満たしていない場合は、前記第２の特徴と異なる検出方法により検出された第一の特徴に基づき導出された前記撮像装置の位置姿勢を、該撮像装置の位置姿勢として決定する決定手段を備える。
【発明の効果】
【００１９】
本発明によれば、より多くの環境において安定的にカメラの位置姿勢を推定することが可能となる。
【図面の簡単な説明】
【００２０】
【図１】第１の実施形態に係る情報処理装置の構成を示す機能ブロック図である。
【図２】第１の実施形態に係る情報処理装置の処理の流れを示すフローチャートである。
【図３】第１の実施形態における第二の特徴である四角形の指標を説明する図である。
【図４】カメラ座標系及び画面座標系を説明する図である。
【図５】共線条件式を説明する図である。
【図６】第１の実施形態に係る位置姿勢出力判定部１０６０の処理手順を示すフローチャートである。
【図７】第１の実施形態におけるハードウェア構成例を示す図である。
【発明を実施するための形態】
【００２１】
（第１の実施形態）
以下、添付図面を参照して本発明の好適な実施形態について説明する。
【００２２】
本実施形態においては、ユーザがヘッドマウントディスプレイを装着し、ＣＧを観察する場合において、カメラの位置および姿勢（以下、位置姿勢という）を精度よく推定し、推定された位置姿勢に基づいてＣＧを精度よく描画する。そして、ＣＧとカメラで撮像された画像とが合成された合成画像をユーザの装着するヘッドマウントディスプレイに表示させる。本願明細書において、位置姿勢とは位置を表す３個のパラメータと、その姿勢（向き）を表す３個のパラメータとを合わせた６個のパラメータのセットをいう。
【００２３】
第１の実施形態に係る情報処理装置は、そのカメラの位置姿勢推定を行う手法において、カメラで撮影された画像から第一の特徴と第二の特徴をそれぞれ検出する。そして、第一の特徴に基づいてカメラの第１の位置姿勢を推定し、第二の特徴に基づいてカメラの第２の位置姿勢を推定する。そして、推定された第一の位置姿勢と第二の位置姿勢徒に基づいて、カメラの位置姿勢の出力の判定を行い、いずれか一方の位置姿勢を出力する。
【００２４】
図７は、本実施形態における情報処理装置１０００のハードウェア構成図である。同図において、ＣＰＵ７１０は、バス７００を介して接続する各デバイスを統括的に制御する。ＣＰＵ７１０は、読み出し専用メモリ（ＲＯＭ）７２０に記憶された処理ステップやプログラムを読み出して実行する。オペレーティングシステム（ＯＳ）をはじめ、本実施形態に係る各処理プログラム、デバイスドライバ等はＲＯＭ７２０に記憶されており、ランダムアクセスメモリ（ＲＡＭ）７３０に一時記憶され、ＣＰＵ７１０によって適宜実行される。また、入力Ｉ／Ｆ７４０は、外部の装置（表示装置や操作装置など）から情報処理装置１０００で処理可能な形式で入力信号として入力する。また、出力Ｉ／Ｆ７５０は、外部の装置（表示装置）へ表示装置が処理可能な形式で出力信号として出力する。
【００２５】
図１は、本実施形態に係る情報処理装置１０００の構成図である。
【００２６】
情報処理装置１０００は、画像取得部１０１０、第一の特徴検出部１０２０、第一の位置姿勢推定部１０３０、第二の特徴検出部１０４０、第二の位置姿勢推定部１０５０、位置姿勢出力判定部１０６０、位置姿勢出力部１０７０、ＣＧデータ描画部１０８０、画像合成部１０９０、第一のマップ保持部２００、第二のマップ保持部３００、ＣＧデータ保持部４００によって構成される。
【００２７】
情報処理装置１００は、カメラ１００に接続されている。本実施形態ではカメラおよびディスプレイ５００に有線または無線で接続されている。
【００２８】
カメラ１００は、カメラ１００はユーザの頭部に装着されるヘッドマウントディスプレイに内蔵または外部に装着されている。例えば、動画をフレーム画像として連続的に撮影するビデオカメラやデジタルカメラが用いられる。
【００２９】
ディスプレイ５００は、ヘッドマウントディスプレイ（ＨＭＤ）であり、ＣＧデータ描画部１０８０で描画されたＣＧデータを表示する。ディスプレイ５００は、液晶ディスプレイであっても有機ＥＬディスプレイであってもよく、ＣＧと合成された画像を表示できるものであればどのような形態であってもかまわない。
【００３０】
画像取得部１０１０は、カメラ１００によって撮影された画像を連続的に取得する。画像取得部１０１０は、カメラの出力がＮＴＳＣなどのアナログ出力であればアナログビデオキャプチャボードによって実現される。またカメラの出力がＩＥＥＥ１３９４などのデジタル出力であれば、例えばＩＥＥＥ１３９４インタフェースボードによって実現される。また、予め記憶装置に記憶してある静止画像や動画像のデジタルデータを読み出してもよい。取得された画像は、第一の特徴検出部１０２０に入力される。
【００３１】
第一の特徴検出部１０２０は、画像取得部１０１０が連続的に取得する画像それぞれから第一の特徴を検出する。詳しい処理は以下で述べるが、本実施形態では第一の特徴として、輝度勾配を有する特徴点を検出する。
【００３２】
第一のマップ保持部２００は、予め生成された第一のマップを保持する。
【００３３】
第一の位置姿勢推定部１０３０は、第一の特徴検出部１０２０が検出した特徴と第一のマップ保持部２００から取得した第一のマップとを用いてカメラの第一の位置姿勢を推定（位置姿勢導出）する。推定方法は後述する。
【００３４】
第二のマップ保持部３００は、予め生成された第二のマップを保持する。
【００３５】
第二の特徴検出部１０４０は画像取得部１０１０が連続的に取得する画像それぞれから第二の特徴を検出する。詳しい処理は以下で述べるが、本実施形態では第二の特徴として、識別情報を有する矩形の指標を検出する。
【００３６】
第二の位置姿勢推定部１０５０は、第二の特徴検出部１０４０が検出した特徴と第二のマップ保持部３００から取得した第二のマップとを用いてカメラの第二の位置姿勢を推定（位置姿勢導出）する。推定方法は後述する。
【００３７】
位置姿勢出力判定部１０６０は、第一の位置姿勢推定部１０３０が推定した第一の位置姿勢と、第二の位置姿勢推定部１０５０が推定した第二の位置姿勢とで、どちらかまたは両方を出力するかを判定する。判定方法は後述する。
【００３８】
位置姿勢出力部１０７０は、位置姿勢出力判定部１０６０で判定されたカメラ位置姿勢を出力する。
【００３９】
ＣＧデータ保持部４００は、描画するＣＧデータを保持している。ＣＧデータの形式はＣＧ画像としてレンダリングできるものであれば何でもよく形式は問わない。
【００４０】
ＣＧデータ描画部１０８０は、ＣＧデータ保持部４００から描画するべきＣＧデータを取得し、位置姿勢出力部１０７０によって出力されたカメラ位置姿勢を仮想カメラの位置姿勢としてセットし、ＣＧデータを描画する。カメラ１００で取得した画像の上にＣＧデータを合成して描画し合成画像をユーザに提示することで、複合現実感（Ｍｉｘｅｄ  Ｒｅａｌｉｔｙ）を実現することができる。また、ＣＧデータのみを描画する場合には、仮想現実感（Ｖｉｒｔｕａｌ  Ｒｅａｌｉｔｙ）を実現することができる。
【００４１】
画像合成部１０９０は、画像取得部１０１０で取得した画像とＣＧデータ描画部１０８０で描画されたＣＧデータとを合成した合成画像を生成する。そして、合成画像をディスプレイ５００に出力（表示制御）する。
【００４２】
これらの各機能部は、ＣＰＵ７１０が、ＲＯＭ７２０に格納されたプログラムをＲＡＭ７３０に展開し、後述する各フローチャートに従った処理を実行することで実現されている。また例えば、ＣＰＵ７１０を用いたソフトウェア処理の代替としてハードウェアを構成する場合には、ここで説明する各機能部の処理に対応させた演算部や回路を構成すればよい。
【００４３】
本実施形態では、カメラの位置姿勢を定義するための座標系（ここでは、環境中の一点を原点として定義し、互いに直交する３軸を夫々Ｘ軸、Ｙ軸、Ｚ軸として定義した座標系）を世界座標系と呼ぶ。位置が既知の環境中の複数の特徴を基準にして世界座標系を定義してもよい。または、カメラが最初に撮像した際の位置及び姿勢を基準として世界座標系を定義してもよいし、環境中に配置された夫々の指標を構成する各頂点の位置が既知であってもよい。位置が既知の特徴や指標に基づいてスケールを決定してもよい。または複数地点で撮像した際の既知の撮像位置に基づいて世界座標系のスケールを決定してもよい。
【００４４】
また、本発明においては、カメラの歪み補正係数や焦点距離や主点位置などのカメラ内部パラメータは、公知の手法により校正済みとする。
【００４５】
次に、第１の実施形態に係る情報処理装置１０００の処理手順について説明する。図２は、第１の実施形態に係る情報処理装置１０００の処理手順を示すフローチャートである。
【００４６】
ステップＳ２０１０において、画像取得部１０１０は、カメラ１００で撮影した画像を取得する。
【００４７】
ステップＳ２０２０において、第一の特徴検出部１０２０が、ステップＳ２０１０で取得された画像に対して第一の特徴検出を行う。特徴点の検出とは、特徴点の画像内の画像座標を検出することをいう。
【００４８】
ここで画像から第一の特徴である特徴点を検出する処理について述べる。近傍の画素間で輝度勾配が閾値以上の点を特徴点とする。輝度勾配は、画像上で隣り合う画素の濃度の変化量であり、閾値以上に変化する点を特徴点とする。輝度勾配の検出は、例えばＳｏｂｅｌオペレータ，Ｐｒｅｗｉｔｔオペレータなどの公知のエッジ検出オペレータにより行う。各画素について、エッジ検出オペレータを画像の水平方向、垂直方向について適用する。そして、その出力値をもとに、エッジ強度を算出する。エッジ検出オペレータの水平方向の出力値がｆｘ、垂直方向の出力値がｆｙである場合、該画素におけるエッジ強度Ｉは式（１）のように算出される。
【００４９】
【数１】
2017129567.tif 000003
以上の処理により、特徴点（画像内で輝度勾配を有する画素（点））の画像座標とその画素（点）のもつ輝度値を求める。特徴点としては室内を撮影した画像であれば、その室内に存在するテーブルや椅子、等の物体の線分となる画素や床のテクスチャを示す画素など様々なものが検出される。また、屋外で撮影した画像であれば、ビルの窓や看板やその看板に含まれる文字の線分となる画素等が特徴点として検出される。
【００５０】
ステップＳ２０３０において、第一の位置姿勢推定部１０３０が、第一の特徴に対応する第一のマップ２００を取得する。本実施形態では、第一の特徴に対応する第一のマップ保持部２００が保持する第一のマップとしては、複数の画像からそれぞれ抽出された特徴点（第一の特徴）の奥行き値とその特徴点の輝度値とその画像を撮影した時のカメラの位置姿勢と対応づけられて保持される。特徴点の奥行き値は、例えば、画像上の座標の対応付けを行うことで推定することができる。例えば、ＫＬＴと呼ばれる特徴追跡手法によって時系列に位置を変えて撮影された画像から特徴点を追跡し、複数の画像間の特徴点の対応付けを行う。求められた複数の画像間における特徴点の対応からＥ行列（基礎行列）と呼ばれる変換行列を推定し、Ｅ行列からカメラの位置姿勢を求め、複数画像間の相対位置姿勢に基づいてステレオ法により特徴点の位置または奥行きの３次元情報を推定する。第一のマップ保持部２００が保持する第一のマップとしては、推定される特徴点の奥行き値は、世界座標系における３次元的な位置であっても、各カメラで撮影した位置からの奥行値であっても良い。また、本願明細書において、第一のマップを推定するために用いられた各画像をキーフレームと呼ぶ。
【００５１】
ステップＳ２０４０において、第一の位置姿勢推定部１０３０が、ステップＳ２０２０で検出された特徴点と、とステップＳ２０３０で取得された第一のマップに基づいて、カメラの位置姿勢（第一の位置姿勢）を推定する。第一のマップに基づいてカメラ位置姿勢を推定する手法は、非特許文献１や非特許文献２のように、検出した第一の特徴からカメラ位置姿勢を推定する手法であれば何れの公知の手法であってよい。
【００５２】
まず、ステップＳ２０３０で取得するマップに含まれる特徴点を、第一のカメラの位置姿勢の初期値に基づいてステップＳ２０１０で入力された画像に投影する。位置姿勢の初期値の値は、前のフレーム画像において求められた位置姿勢を用いればよい。投影される特徴点は、例えば、時系列的に直近の画像を撮像した時のカメラの位置姿勢に最も近い位置姿勢に対応づけられた特徴点を選択して投影すればよい。そして、投影された特徴点の画像内の位置の周囲の輝度値に基づいて、投影される特徴点の輝度値（第一のマップに保持される）と投影された特徴点の位置における輝度値とが一致するように初期値の位置姿勢を更新することによりカメラの位置姿勢を推定する。
【００５３】
ここで、第一の位置姿勢推定部１０３０が推定するカメラの位置姿勢は、複合現実感や仮想現実感における仮想カメラの視点としてＣＧ描画に使われるため、ユーザの動きに合わせてリアルタイム処理が求められる。そのため、初期の３次元情報が生成された後、処理負荷の高い第一のマップ生成と、比較的処理負荷の軽い第一のカメラ位置姿勢推定は、並列に処理される。位置姿勢推定部１０３０は、第一の特徴と第一の３次元情報とに基づいてカメラ位置姿勢を推定したら、カメラ位置姿勢推定結果をカメラ位置姿勢出力判定部１０６０に出力する。
【００５４】
ステップＳ２０５０において、第二の特徴検出部１０４０は、ステップＳ２０１０で取得された画像に対して第二の特徴検出を行う。ここで本実施形態では、四角形指標を第二の特徴として検出する。本願明細書において、第一の特徴と第二の特徴の差異は、少なくとも第二の特徴は識別情報を有するという点が異なる。以下、第二の特徴の一例である四角形指標について説明する。
【００５５】
環境中または対象物体上に、図３（Ａ）に示すような四角形形状の指標（以下、四角形指標と呼ぶ）を複数配置するものとする。ここで、配置する指標をＰｋ（ｋ＝１，，，Ｋｏ）で表す。但し、Ｋｏは配置する指標の数（図３（Ａ）の例ではＫｏ＝３）である。図３（Ｂ）に示すように、四角形指標は、内部に識別子を表すパターンを持ち、一意に同定可能であるとする。また、四角形指標Ｐｋは頂点ｐｋｉ（ｉ＝１，，，Ｎｋ）により構成される。但し、Ｎｋは、指標Ｐｋを構成する頂点の総数（本実施形態の場合は四角形指標であるのでＮｋ＝４）を表す。第二の特徴検出部１０４０は、撮影画像に２値化処理を施した後にラベリング処理を行い、一定面積以上の領域の中から４つの直線によって形成されているものを指標候補として抽出する。さらに、候補領域の中に特定のパターンがあるか否かを判定することによって候補領域が指標領域であるかを判定し、内部のパターンを読み出すことによって指標の画像内の方向と識別子を取得することにより、取得された画像中から指標を検出する。以上のように四角形指標を第二の特徴として検出する（即ち、所定のフィルタを用いることで第二の特徴を検出する）。第二の特徴である四角形指標は予め現実の空間にユーザ自身または別のユーザによって配置される。
【００５６】
なお、環境中または対象物体上に配置される第二の特徴は、四角形指標に限るものではなく、撮影画像上において検出可能であって、かつ第一の特徴と異なる検出方法で得られる特徴であれば、何れの形態であってもよい。例えば、図３（Ｃ）に示すように、それぞれが異なる色を有する円形状の特徴であってもよい。この場合には、画像上から各々の特徴の色に対応する領域を検出し、その重心位置を特徴の検出座標とする。また、それぞれが異なるテクスチャ特徴を有する特徴点（自然特徴点）を第二の特徴としてもよい。この場合には、既知の情報として予め保持している各々の特徴のテンプレート画像によるテンプレートマッチングを画像上に施すことにより、画像から第二の特徴を検出する。また、ＳＩＦＴ特徴のように識別子を有し、識別可能な特徴を第二の特徴として用いてもよい。これに限らず、空間中に固定される特徴であってそれを撮影した画像から検出可能なものであればどのような特徴であってもかまわない。また、本実施形態においては、第二の特徴は、第一の特徴の数に対して少ないものとする。
【００５７】
ステップＳ２０６０において、第二の特徴に対応する第二のマップを取得する。本実施形態では、点指標や四角形指標を第二の特徴とするため、第二のマップは、点指標や四角形指標の３次元の配置情報である。点指標や四角形指標の配置情報は、特許文献１のような技術を利用して推定することができる。または、写真測量の分野で行われるような測量器などを用いて予め精度よく計測しておけばよいし、巻尺や分度器などを用いて手動で測定した値を用いてもよい。また、２つの画像で検出された正方形の頂点の画像座標から、三角測量によって３次元位置を求め、４頂点の位置に基づいて求めてもよい。第二の特徴の配置情報である第二のマップを推定する方法はこれに限るものではなく、公知のいずれの技術を用いて推定してもよい。
【００５８】
ステップＳ２０７０において、第二の特徴と第二のマップとから、カメラの位置姿勢を推定する。以下では、基準座標系を定義し、基準座標系におけるカメラの位置姿勢を推定する場合について説明する。
【００５９】
はじめに透視投影変換について説明する。図４はカメラ座標系及び画面座標系を説明する図である。画面座標系の原点ｏｉは視軸と画像面の交点にとり、画像の水平方向をｘｉ軸、垂直方向をｙｉ軸にとる。また、カメラ座標系の原点ｏｃと画像面との距離（焦点距離）をｆとし、カメラ座標系のｚｃ軸は視軸の反対方向、ｘｃ軸は画像の水平方向と平行に、ｙｃ軸は画像の垂直方向と平行にとる。
【００６０】
透視投影変換により、カメラ座標系上の点ｘｃ＝［ｘｃｙｃｚｃ］ｔは式（２）のように画面座標がｕ＝［ｕｘｕｙ］ｔである点に投影される。
【００６１】
【数２】
2017129567.tif 000004
本実施形態ではレンズ歪みは存在しないか、もしくは補正されていると仮定し、カメラはピンホールカメラであると想定している。式（２）は、図５に示すように、空間中の点と、該点の画像上の投影点とカメラ位置（視点）は同一直線上に存在することを示しており、共線条件式とも呼ばれる。
【００６２】
基準座標系におけるカメラの位置をｔ＝［ｔｘｔｙｔｚ］ｔ、カメラの姿勢（実際には、カメラ座標系に対する基準座標系の姿勢）をω＝［ωｘωｙωｚ］であるとする。ωは３自由度の姿勢表現方法であり、姿勢を回転軸ベクトル及び回転角で表現している。回転角をｒａとすると、ｒａはωによって式（３）のように表される。
【００６３】
【数３】
2017129567.tif 000005
また、回転軸ベクトルをｒ＝［ｒｘｒｙｒｚ］ｔとすると、ｒとωの関係は式（４）のように表される。
【００６４】
［ωｘωｙωｚ］＝［ｒａｒｘ  ｒａｒｙ  ｒａｒｚ］・・・式（４）
ω（回転角ｒａ、回転軸ベクトルｒ）と３×３回転変換行列Ｒとの関係は式（５）のように表される。
【００６５】
【数４】
2017129567.tif 000006
基準座標系上の点ｘｗ＝［ｘｗｙｗｚｗ］ｔのカメラ座標ｘｃはｔ、Ｒによって式（６）のように表される。
【００６６】
【数５】
2017129567.tif 000007
式（２）、（６）から、透視投影変換によって、基準座標上の点ｘｗ＝［ｘｗｙｗｚｗ］ｔは式（７）のように画像上の点ｕ＝［ｕｘｕｙ］ｔに投影される。
【００６７】
【数６】
2017129567.tif 000008
理想的には、ｔ、ω、ｘｗをもとに式（７）から計算される投影位置（計算位置）と実際に観察される位置（観察位置）は一致する。そのため、計算位置と観察位置の画像の水平方向のずれをＦ、垂直方向のずれをＧ、観察位置をｖｏ＝［ｖｏｘｖｏｙ］ｔとした場合、式（８）に示すようにＦ、Ｇは０となる。
【００６８】
【数７】
2017129567.tif 000009
Ｆ、Ｇはカメラ位置ｔ、カメラ姿勢ω、観察対象である基準座標上での点の位置ｘｗに関する関数である。観察対象が特徴点である場合には、式（９）に示すように、Ｆ、Ｇはカメラ位置ｔ、カメラ姿勢ω、特徴点の基準座標系における位置ｘｗに関する関数となる。
【００６９】
Ｆ（ｔｘ，ｔｙ，ｔｚ，ωｘ，ωｙ，ωｚ，ｘｗ，ｙｗ，ｚｗ）＝０
Ｇ（ｔｘ，ｔｙ，ｔｚ，ωｘ，ωｙ，ωｚ，ｘｗ，ｙｗ，ｚｗ）＝０・・・（式９）
式（１０）は式（９）を線形化したものである。Δｔｘ、Δｔｙ、Δｔｚはカメラの位置、Δωｘ、Δωｙ、Δωｚはカメラの姿勢の近似値に対する補正量を表す。
【００７０】
【数８】
2017129567.tif 000010
ここで、式（１０）のＦ０、Ｇ０は、式（８）のＦ、Ｇにカメラ位置及び姿勢、特徴点の位置を代入したときの投影位置の計算位置と観察位置ｖｏとの差である。式（１０）は、ある画像上で観察される一個の特徴点についての観測方程式である。
【００７１】
一方、四角形指標である場合には、基準座標系における位置ｔｍ＝［ｔｍｘｔｍｙｔｍｚ］ｔ及び基準座標系に対する姿勢ωｍ＝［ωｍｘωｍｙωｍｚ］（ωｍに対応した３×３回転変換行列をＲｍとする）で表現される。四角形の頂点の第１指標座標系における位置をｘｍ＝［ｘｍｙｍ０］ｔとする。四角形指標の頂点の基準座標系における位置ｘｗは式（１１）のようにｔｍとωｍ（Ｒｍ）に関する関数となる。
【００７２】
【数９】
2017129567.tif 000011
そのため、式（１２）に示すように、Ｆ、Ｇも、カメラ位置ｔ、カメラ姿勢ω、四角形指標の位置ｔｍ及び四角形指標の姿勢ωｍの関数となる。
Ｆ（ｔｘ，ｔｙ，ｔｚ，ωｘ，ωｙ，ωｚ，ｔｍｘ，ｔｍｙ，ｔｍｚ，ωｍｘ，ωｍｙ，ωｍｚ）＝０
Ｇ（ｔｘ，ｔｙ，ｔｚ，ωｘ，ωｙ，ωｚ，ｔｍｘ，ｔｍｙ，ｔｍｚ，ωｍｘ，ωｍｙ，ωｍｚ）＝０
・・・式（１２）
式（１２）はカメラの位置及び姿勢、四角形指標の位置及び姿勢について非線形な方程式となっている。そこで、１次の項までのテイラー展開を用いてカメラの位置及び姿勢、四角形指標の位置及び姿勢の近似値の近傍で線形化し、繰返し計算によってカメラの位置及び姿勢、指標の位置及び姿勢を求める。
【００７３】
式（１３）は式（１２）を線形化したものである。Δｔｘ、Δｔｙ、Δｔｚはカメラの位置、Δωｘ、Δωｙ、Δωｚはカメラの姿勢の近似値に対する補正量を表す。
【００７４】
【数１０】
2017129567.tif 000012
ここで、式（１３）のＦ０、Ｇ０は、式（８）のＦ、Ｇにカメラ位置及び姿勢、四角形指標の位置を代入したときの投影位置の計算位置と観察位置ｖｏとの誤差である。
【００７５】
カメラの位置及び姿勢の近似値は、基準座標系における位置が既知の点と、該点の画像上での投影位置の対応関係から求める。基準座標系における位置が既知の点を用いる場合には、シーンには位置が既知の点が存在していることになる。
【００７６】
式（１３）は、ある画像上で観察される四角形指標の一個の頂点についての観測方程式である。実際には複数の画像上で、複数の四角形指標の頂点が観察されるため、式（１３）は複数得られる。画像から検出される四角形指標の数がＤＪ個である場合には、観測方程式（１３）が（４×ＤＪ）組、つまり２×（４×ＤＪ）本の観測方程式が立つ。式（１３）の観測方程式の左辺の定数項Ｆ０、Ｇ０を右辺に移項し、連立方程式を立てると、この連立方程式は式（１４）のように行列形式で書くことができる。
【００７７】
ＪΔ＝Ｅ・・・式（１４）
未知数が、カメラの位置及び姿勢の６個のパラメータであるので、ヤコビ行列Ｊの行数は、観測方程式の数２×（４×ＤＪ）個である。ヤコビ行列Ｊの列数は６個である。Δはすべての補正値をベクトルで表しており、補正値ベクトルと呼ぶ。補正値ベクトルの要素数は未知数の数６個である。Ｅはすべての誤差をならべてベクトルで表しており、誤差ベクトルと呼び、近似値による投影位置の計算位置と観察位置の差−Ｆ０、−Ｇ０を要素として持つ。Ｅの要素数は、観測方程式の数２×（４×ＤＪ）個である。
【００７８】
なお、基準座標系における位置が既知である点指標または位置及び姿勢が既知の四角形指標を同時に撮影することによって、基準座標系の原点、スケール、姿勢を明示的に指定することができる。これらの指標についての式（１４）の方程式では、指標の位置及び指標についての偏微分係数の値はすべて０となる。基準座標系の原点、スケール、姿勢を明示的に指定するためには、第二の特徴が点指標であれば位置が既知の点指標を３個用いればよく、四角形指標であれば位置及び姿勢が既知の四角形指標を１個用いればよい。
【００７９】
連立方程式の解として得られる補正値Δによって、繰り返し近似値を補正することによってカメラの位置及び姿勢を求める。連立方程式の解法は、掃き出し法、あるいはガウス・ジョルダン法、あるいは共役勾配法など、その他公知の何れの連立一次方程式の解法を用いて解いてもよい。取得した画像が多い場合や、検出した指標が多い場合には、前処理で不完全コレスキー分解を行う前処理付き共役勾配法などで高速に計算することができる。
【００８０】
カメラの位置及び姿勢についての未知パラメータをまとめて状態ベクトルｔ０と表す。推定した補正値Δを用いて、式（１５）のように補正し、得られた値を新たな状態ベクトルｔとする。
【００８１】
ｔ０＋Δ→ｔ・・・式（１５）
誤差ベクトルＥが予め定めた閾値より小さいかどうか、あるいは、補正値Δが予め定めた閾値より小さいかどうかといった判断基準を用いて、計算が収束しているか否かの判定を行う。収束している場合には、その時点での状態ベクトルを用いて、複数の四角形指標の位置及び姿勢を決定する。収束していない場合には、収束するまで繰り返し補正値を求める。このとき、補正された補正後の状態ベクトルｔが、次のｔ０として使用される。
【００８２】
以上により、第二の位置姿勢が求められ、第二の位置姿勢推定部１０５０は、位置姿勢出力判定部１０６０に第二の位置姿勢を出力する。
【００８３】
ステップＳ２０８０において、位置姿勢出力判定部１０６０は、第一の位置姿勢と第二の位置姿勢のどちらか一方または両方を出力するかを判定する。以下では、位置姿勢出力判定部１０６０が判定する処理を、図６に示すフローチャートを用いて説明する。
【００８４】
ステップＳ３０００において、位置姿勢出力判定部１０６０は、第一の位置姿勢推定に失敗したどうかをチェックする。カメラの位置姿勢の推定に失敗する場合とは、カメラの位置姿勢を推定する方程式の解を得るために必要な特徴の数が得られず解が求まらない場合である。また、推定に失敗する場合としては、マップと画像から検出した特徴の誤対応により、非線形最適化計算における繰り返し計算において解が収束せずに発散する場合もある。またこれに限らず、前フレームとの差分が閾値Ｔｄｉｆｆよりも大きくなった場合に、推定に失敗しているとしてもよい。第一の位置姿勢の推定に失敗した場合には、ステップＳ３０１０に処理を進める。第一の位置姿勢の推定に失敗していない場合には、ステップＳ３０４０に処理を進める。
【００８５】
ステップＳ３０１０において、位置姿勢出力判定部１０６０は、第二の位置姿勢推定に失敗したかどうかをチェックする。失敗か否かは、ステップＳ３０００と同様の処理を行う。第二の位置姿勢推定に失敗した場合には、ステップＳ３０２０に処理を進める。第二の位置姿勢推定に失敗していない場合には、ステップＳ３０３０に処理を進める。
【００８６】
ステップＳ３０２０において、位置姿勢出力判定部１０６０は、前フレームの画像（時系列において前に取得された画像）で推定されたカメラ位置姿勢を出力するように判定を行う。
【００８７】
ステップＳ３０３０において、位置姿勢出力判定部１０６０は、第二のカメラ位置姿勢を出力するように判定する。
【００８８】
ステップＳ３０４０において、ステップＳ３０１０と同様に、位置姿勢出力判定部１０６０は、第二の位置姿勢推定に失敗したかどうかをチェックする。失敗か否かは、ステップＳ３０００と同様の処理を行う。第二の位置姿勢推定に失敗した場合には、ステップＳ３０５０に処理を進める。第一の位置姿勢の推定に失敗していない場合には、ステップＳ３０６０に処理を進める。
【００８９】
ステップＳ３０５０において、位置姿勢出力判定部１０６０は、第一の位置姿勢を出力するように判定する。
【００９０】
ステップＳ３０６０において、第一のカメラ位置と第二のカメラ位置（または姿勢）を比較する。位置の閾値Ｔｐｏｓ（または姿勢の閾値ＴＯｒｉ）よりも差が大きい場合、ステップＳ３０７０に処理を進める。差が位置の閾値Ｔｐｏｓ（または姿勢の閾値ＴＯｒｉ）以下の場合には、ステップＳ３０８０に処理を進める。
【００９１】
ステップＳ３０７０において、第二の位置姿勢を出力するように判定する。これは、位置の閾値Ｔｐｏｓ（または不図示の姿勢の閾値ＴＯｒｉ）よりも差が大きい場合、識別性の高い第二の特徴に基づいて推定された第二の位置姿勢のほうが安定性が高いと判断するためである。
【００９２】
ステップＳ３０８０において、第一の位置姿勢を出力するように判定する。これは、位置の閾値Ｔｐｏｓ（または不図示の姿勢の閾値ＴＯｒｉ）よりも差が小さい場合に、第一の特徴は、第二の特徴に比べて数が多いため、多くの情報量を用いて推定した結果の精度が高いと判断するためである。
【００９３】
以上のように、第一の特徴は、第二の特徴と比べて、情報量が多いので精度が高いが、識別性が低いため安定性が低いという前提を用いて、位置姿勢出力判定部１０６０は判定する。
【００９４】
図２のフローチャートに処理を戻す。
【００９５】
ステップＳ２０９０において、第一の位置姿勢または第二の位置姿勢のどちらかを出力するように判定された場合には、判定結果に基づいて、判定されたほうのカメラの位置姿勢を、ＣＧ描画を行うＣＧデータ描画部１０８０に出力する。
【００９６】
ステップＳ２１００において、ＣＧデータ描画部１０８０は、ＣＧデータ４００を描画するために、位置姿勢出力部１０７０によって出力された位置姿勢を仮想カメラの位置姿勢としてセットする。ＣＧデータ描画部１０８０は、予めＣＧデータを取得しておく。セットされた仮想カメラの位置姿勢を用いて、ＣＧデータを描画する。
【００９７】
ステップＳ２１１０において、画像合成部１０９０は、ステップＳ２０１０で取得した画像とステップＳ２１００で描画されたＣＧデータとを合成した合成画像を生成する。現実の画像とＣＧのデータとを合成する技術は公知であるので詳しい説明は省略する。そして、合成画像をディスプレイ５００に出力する。
【００９８】
以上のように、異なる特徴である第一の特徴または第二の特徴に基づいて推定した、第一のカメラ位置姿勢または第二のカメラ位置姿勢を出力するかどうかを判定することができる。
【００９９】
本実施形態により、第一の特徴が角点や輝度勾配やオプティカルフローなどの場合、第一の特徴を検出しにくい環境でも、少数の識別性の高い第二の特徴を検出できる場合には、識別性の高い第二の特徴に基づいて推定した第二のカメラ位置姿勢を出力できる。また、角点や輝度勾配やオプティカルフローなどの第一の特徴を多数検出できる環境では、角点や輝度勾配やオプティカルフローなどの第一の特徴に基づいて推定した第一のカメラ位置姿勢を出力できる。さらに、第一の特徴に基づいてカメラ位置姿勢を推定する手法において、繰り返しパターンを検出する場合など似た形状の特徴を検出することで誤対応してしまい、第一と第二の差が大きい場合には、識別性の高い第二の特徴から推定した結果を出力できる。このように、第一の特徴と第二の特徴とで、異なる特徴に基づいてカメラ位置姿勢を複数推定しておくことで、環境に応じて安定かつ高精度に推定した結果を出力することができる。
【０１００】
以上、異なる特徴に基づいて推定したカメラ位置姿勢のうち、どちらか一方を出力するモードを有することで、より多くの環境において、安定かつ高精度にカメラの位置姿勢を推定することができる。
【０１０１】
（変形例１）
第１の実施形態では、第一の位置姿勢または第二の位置姿勢の推定において、カメラの位置及び姿勢の近似値を、位置が既知の特徴に基づいて求めていた。しかし、近似値の推定は、これに限るものではない。位置姿勢出力判定部１０６０が出力判定したカメラの位置姿勢を、不図示の概略値設定部が、出力判定されなかったカメラの位置姿勢の概略値（繰り返し計算における初期値）として以降の位置姿勢導出処理のために設定してもよい。次フレーム（以降のフレーム）の第一のカメラ位置姿勢推定または第二の位置姿勢推定において、不図示の概略値設定部が設定した概略値に基づいてカメラの位置姿勢推定を行ってもよい。
【０１０２】
これにより、安定かつ精度の高いカメラ位置姿勢を推定することができる。
【０１０３】
（第２の実施形態）
第１の実施形態では、第一の特徴に基づいて推定する第一のカメラ位置姿勢、または第二の特徴に基づいて推定する第二の位置姿勢のどちらか一方を出力していた。しかし、第一の位置姿勢も第二の位置姿勢も両方推定ができている場合、位置姿勢出力判定部１０６０は、両方を出力すると判定してもよい。両方のカメラ位置姿勢を出力するように判定するかどうかは、不図示のＵＩでユーザが設定してもよいし、システムに予め設定情報を組み込んでおいてもよい。位置姿勢出力判定部１０６０が、第一と第二のカメラ位置姿勢を両方出力するように判定した場合には、カメラ位置姿勢出力部１０７０に第一のカメラ位置姿勢と第二のカメラ位置姿勢が出力される。
【０１０４】
そして、位置姿勢出力部１０７０は、第一の位置姿勢と第二の位置姿勢の両方の位置姿勢を入力されると、第一の位置姿勢と第二の位置姿勢とに基づいて、合成した第三のカメラ位置姿勢を計算する。第三の位置姿勢は、第一の位置姿勢と第二の位置姿勢の平均の位置姿勢として求めればよい。また、過去に推定された安定度に基づいて所定の割合で重みづけを行ったうえでの平均の位置姿勢を求めても良い。位置姿勢出力部１０７０は、第三のカメラ位置姿勢が計算された場合には、第三の位置姿勢を出力してもよい。
【０１０５】
以上、異なる特徴に基づいて推定した位置姿勢の平均の位置姿勢を出力するモードを有することで、より多くの環境において、安定かつ高精度にカメラの位置姿勢を推定することができる。
【０１０６】
（第３の実施形態）
第１及び第２の実施形態では、第一または第二の位置姿勢推定が、失敗しているかどうか、または第一または第二のカメラ位置の差が閾値以上であるかどうかによって、どちらかの位置姿勢を出力するように判定していた。または、予め、両方の位置姿勢を出力するように設定していた場合、第一または第二の位置姿勢を両方出力し、合成した第三の位置姿勢を用いてＣＧを描画していた。しかし、第一の位置姿勢または、第二の位置姿勢、または第一と第二の位置姿勢の両方を出力する判定は、これに限るものではない。第一の位置姿勢または、第二の位置姿勢の安定度に基づいて出力する位置姿勢を判定してもよい。
【０１０７】
位置姿勢出力判定部１０６０は、第一の位置姿勢を推定した際の第一の安定度の推定を行う。第一の特徴と対応付けされる３次元情報が閾値Ｔｚｅｒｏ未満の場合には、第一の安定度は０とする。閾値Ｔｚｅｒｏは、理論的に解が求められなくなる数とする。例えば、ＤＬＴを用いて直接解法でカメラ位置姿勢を推定する場合には、理論的に解が求められなくなる閾値としてＴｚｅｒｏは６となる。同様に、第二の位置姿勢を推定した際の第二の安定度の推定を行う。
【０１０８】
位置姿勢出力判定部１０６０は、第一の安定度と第二の安定度の高いほうの安定度を有する位置姿勢を出力するように判定してもよい。
【０１０９】
これにより、異なる特徴に基づいて推定したカメラ位置姿勢のうち、安定度を用いることで、より安定したカメラ位置姿勢を出力することができる。
【０１１０】
以上、第一と第二の位置姿勢のどちらか一方を出力するモードを有することで、より多くの環境において、安定かつ高精度にカメラの位置姿勢を推定することができる。
【０１１１】
（第４の実施形態）
第１〜第３の実施形態では、時系列で取得した画像における、ある時刻ｔにおけるカメラの位置姿勢を推定する説明を行っていたが、カメラの位置姿勢推定に基づいて求めるのであればこれに限るものではない。
【０１１２】
不図示の動き推定部は、過去の時刻ｔｐにおいて推定した第一の位置姿勢と、時刻ｔにおける第一の位置姿勢からカメラの動きの速さを推定する。または、過去の時刻ｔｐにおいて推定した第二の位置姿勢と、時刻ｔにおける第二の位置姿勢からカメラの動きの速さを推定する。
【０１１３】
位置姿勢出力判定部１０６０は、不図示のカメラ動き推定部が推定したカメラの動きの速さに基づいて、出力する位置姿勢を判定してもよい。カメラの位置姿勢の動きの速さ、すなわち単位時間あたりの変化量が、連続的な動きではないため誤推定と判定するための閾値を閾値Ｔｖとする。第一の位置姿勢または第二の位置姿勢に基づいて推定された、どちらか一方の動きの速さが、閾値Ｔｖよりも大きい場合、連続的な動きではないため誤推定している可能性がある。そのため、位置姿勢出力判定部１０６０は、閾値Ｔｖよりも小さい動きのほうのカメラ位置姿勢を出力するように判定する。閾値Ｔｖは、ＨＭＤに装着されたカメラのため、人の頭の動きから実験的に決定してもよい。例えば、閾値Ｔｖは、１５０ｃｍ／ｓｅｃの並行移動または、１２０度／ｓｅｃの角速度としてもよい。ユースケースに応じて、閾値Ｔｖを、ユーザが指定した値に、不図示のＵＩにより変更してもよい。
【０１１４】
以上のように、誤推定などにより連続的なカメラ位置姿勢が推定されなかった場合に、連続的な変化として推定されたカメラ位置姿勢のほうを出力するように判定してもよい。
【０１１５】
以上により、第一の特徴または第二の特徴が十分得られない環境や、誤対応しやすい環境などにおいて、カメラ位置姿勢の誤推定された場合にも、第一または第二のどちらかのカメラ位置姿勢が安定して推定されていれば、安定したカメラ位置姿勢出力が可能である。
【０１１６】
（変形例２）
上記第１〜第４の各実施形態の構成はそれぞれ単独で実施される必要はなく、それぞれの実施形態の構成を組み合わせてもよい。
【０１１７】
（変形例３）
上記第１〜第４の各実施形態ではヘッドマウントディスプレイに接続された情報処理装置１０００を説明した。しかしながら、本発明はこの形態に限られない。すなわち、ヘッドマウントディスプレイ自体に情報処理装置１０００の各機能を備えていてもよい。
【０１１８】
（変形例４）
上記第１〜第４の各実施形態ではビデオシースルー型のヘッドマウントディスプレイで説明した。しかしながら、本願発明はこれには限られず、光学シースルー型のヘッドマウントディスプレイでもよい。
【０１１９】
（変形例５）
上記第１〜第４の各実施形態ではユーザの頭部に装着するヘッドマウントディスプレイで説明した。しかしながら、本願発明はこれには限られず、ユーザが手に持ってＣＧを観察するハンドヘルドディスプレイでもよい。
（変形例６）  
本願明細書は以下のような実施形態も含む。例えば、まず第二の特徴検出部１０４０が撮像画像から四角形指標を検出し、検出された四角形指標の数、分布、画像内に占める四角形指標の大きさに基づいて信頼度を計算する。信頼度は、四角形指標の数が多ければ多いほど高くなるように計算される。また、信頼度は、分布が広ければ広いほど高くなるように計算される。また、信頼度は画像内に占める四角形指標の大きさが大きければ大きいほど高くなるように計算される。計算された信頼度が閾値よりも大きければ、第二の位置姿勢推定部１０５０は、四角形指標に基づいて、撮像装置の位置および姿勢の計算を行う。
一方で、信頼度が閾値以下の場合には、第一の特徴検出部１０２０は、自然特徴を検出する。そして、第一の位置姿勢推定部１０３０は、検出された自然特徴に基づいて撮像装置の位置及び姿勢の計算を行う。
本変形例により、常に２つの位置姿勢計算を行う必要がなくなり、処理負荷を軽減することができる。
（変形例７）  
本願明細書は以下のような実施形態も含む。例えば、まず第一の特徴検出部１０２０が撮像画像から自然特徴を検出し、検出された自然特徴の数、分布に基づいて信頼度を計算する。信頼度は、検出された自然特徴の数が多ければ多いほど高くなるように計算される。また、信頼度は、分布が広ければ広いほど高くなるように計算される。計算された信頼度が閾値よりも大きければ、第一の位置姿勢推定部１０３０は、自然特徴に基づいて、撮像装置の位置および姿勢の計算を行う。
一方で、信頼度が閾値以下の場合には、第二の特徴検出部１０４０は、自然特徴を検出する。そして、第二の位置姿勢推定部１０５０は、検出された自然特徴に基づいて撮像装置の位置及び姿勢の計算を行う。
本変形例により、常に２つの位置姿勢計算を行う必要がなくなり、処理負荷を軽減することができる。
【０１２０】
（他の実施形態）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【図１】
2017129567.tif 000013
【図２】
2017129567.tif 000014
【図３】
2017129567.tif 000015
【図４】
2017129567.tif 000016
【図５】
2017129567.tif 000017
【図６】
2017129567.tif 000018
【図７】
2017129567.tif 000019