(57)【特許請求の範囲】
【請求項１】
登録済みの特徴の３次元位置情報と、撮像装置が撮像したフレーム画像における特徴と、に基づいて、前記撮像装置の位置姿勢を推定する推定手段と、
前記推定手段が推定した位置姿勢に基づいて、未登録の特徴の３次元位置情報を生成して登録する生成手段と
を備え、
前記生成手段は、未登録の特徴の３次元位置情報の生成及び登録を、前記推定手段が前記撮像装置の位置姿勢の推定処理を開始したタイミング、前記撮像装置が撮像したフレーム画像から特徴を検出したタイミング、特徴を連続して抽出したフレーム画像の数が閾値以上となったタイミング、のいずれかのタイミングで開始してから規定の時間が経過するまで実行し、該規定の時間が経過すると停止する
ことを特徴とする情報処理装置。
【請求項２】
前記生成手段は、未登録の特徴の３次元位置情報の生成及び登録の開始の後、未登録の特徴の３次元位置情報の生成及び登録がなされない連続時間が閾値を超えた場合には、未登録の特徴の３次元位置情報の生成及び登録を停止することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記生成手段は、未登録の特徴の３次元位置情報の生成及び登録の開始の後、未登録の特徴の３次元位置情報の生成及び登録がなされない連続時間が閾値を超えた場合であっても、前記推定手段が推定した位置及び／又は姿勢の変化量が閾値を超えていない場合には、未登録の特徴の３次元位置情報の生成及び登録を停止しないことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
更に、
前記撮像装置の初期位置からの距離を取得する手段と、
前記距離に応じて前記規定の時間を更新する手段と
を備えることを特徴とする請求項１に記載の情報処理装置。
【請求項５】
更に、
前記推定手段が推定した位置もしくは姿勢の変化が閾値以上となるフレーム画像の数に応じて前記規定の時間を更新する手段を備えることを特徴とする請求項１に記載の情報処理装置。
【請求項６】
更に、
ユーザから前記撮像装置の移動範囲が入力されると、前記規定の時間として該移動範囲に対応する時間を設定する手段を備えることを特徴とする請求項１に記載の情報処理装置。
【請求項７】
更に、
前記推定手段が推定した位置及び／又は姿勢の変化量に応じて前記規定の時間を更新する手段を備えることを特徴とする請求項１に記載の情報処理装置。
【請求項８】
前記生成手段は、前記推定手段が推定した位置の変化が閾値以上となるフレーム画像をキーフレームとし、該キーフレームと、該キーフレームに基づいて推定した前記撮像装置の位置姿勢と、に基づいて、特徴の３次元位置情報を生成することを特徴とする請求項１乃至７の何れか１項に記載の情報処理装置。
【請求項９】
前記生成手段は、前記推定手段が推定した姿勢の変化が閾値以上となるフレーム画像をキーフレームとし、該キーフレームと、該キーフレームに基づいて推定した前記撮像装置の位置姿勢と、に基づいて、特徴の３次元位置情報を生成することを特徴とする請求項１乃至７の何れか１項に記載の情報処理装置。
【請求項１０】
更に、
未登録の特徴の３次元位置情報の生成及び登録の進捗状況をユーザに通知する手段を備えることを特徴とする請求項１乃至９の何れか１項に記載の情報処理装置。
【請求項１１】
情報処理装置が行う情報処理方法であって、
前記情報処理装置の推定手段が、登録済みの特徴の３次元位置情報と、撮像装置が撮像したフレーム画像における特徴と、に基づいて、前記撮像装置の位置姿勢を推定する推定工程と、
前記情報処理装置の生成手段が、前記推定工程で推定した位置姿勢に基づいて、未登録の特徴の３次元位置情報を生成して登録する生成工程と
を備え、
前記生成工程では、未登録の特徴の３次元位置情報の生成及び登録を、前記推定工程で前記撮像装置の位置姿勢の推定処理を開始したタイミング、前記撮像装置が撮像したフレーム画像から特徴を検出したタイミング、特徴を連続して抽出したフレーム画像の数が閾値以上となったタイミング、のいずれかのタイミングで開始してから規定の時間が経過するまで実行し、該規定の時間が経過すると停止する
ことを特徴とする情報処理方法。
【請求項１２】
コンピュータを、請求項１乃至１０の何れか１項に記載の情報処理装置の各手段として機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、撮像装置の位置姿勢の推定技術に関するものである。
【背景技術】
【０００２】
現実世界と仮想世界とをリアルタイムに融合させる技術として、複合現実感（ＭＲ：Ｍｉｘｅｄ  Ｒｅａｌｉｔｙ）技術や拡張現実感（ＡＲ：Ａｕｇｍｅｎｔｅｄ  Ｒｅａｌｉｔｙ）技術が知られている。これらの技術は、現実空間とコンピュータによって作られる仮想空間とを繋ぎ目なく融合する技術である。これらの技術は、組み立て作業時に作業手順や配線の様子を重畳表示する組み立て支援、患者の体表面に体内の様子を重畳表示する手術支援等、様々な分野への応用が期待される。
【０００３】
ＭＲ技術を実現する上で解決しなければならない大きな問題の一つとして、位置合わせの問題がある。仮想物体が現実空間に実在するように利用者が感じるためには、仮想物体と現実空間との間の幾何学的な整合性が取れている必要がある。即ち、仮想物体は現実空間中に存在するべき位置に存在しているように常に利用者から観察されなければならない。
【０００４】
また、観察者が、仮想物体を現実空間に実在するように感じるための装置の一つとして、ビデオシースルー型の情報処理装置がある。これは、ビデオカメラで現実世界を撮影し、その撮影画像に仮想物体を重畳した合成画像を、リアルタイムにディスプレイ等の表示部に表示させて観察者に提示する装置である。一般にこのような情報処理装置としては、背面にビデオカメラを有するタブレット端末と呼ばれる携帯型情報端末や、頭部搭載型のビデオシースルー型HMD（Ｈｅａｄ  Ｍｏｕｎｔｅｄ  Ｄｉｓｐｌａｙ）などが用いられる。
【０００５】
ビデオシースルー型HMDを利用するＭＲでは、HMDに内蔵されているカメラから画像が入力される毎に、画像撮影時のカメラの現実空間における位置姿勢を計測する。そしてこのカメラの位置姿勢と、焦点距離などのカメラの固有パラメーターと、に基づいてＣＧ（Ｃｏｍｐｕｔｅｒ  Ｇｒａｐｈｉｃｓ）を描画し、該ＣＧを現実空間の撮影画像上に重畳するという処理が一般的に行われる。そのため、ビデオシースルー型HMDを利用するＭＲの場合、位置合わせの問題は、HMDに内蔵したカメラの現実空間における位置姿勢を計測する問題となる。
【０００６】
カメラの位置姿勢の計測は、例えば磁気センサや超音波センサ、光学式センサなど6自由度の物理センサによって計測することが可能である。一方で、ビデオシースルー型HMDを利用する場合には、ビデオシースルー型HMDに内蔵されているカメラからの画像情報を位置合わせのために利用することが可能である。画像情報を利用する位置合わせ方法は、物理センサを利用する方法に比べて手軽且つ低コストであるため、広く利用されている。画像情報を利用する位置合わせ手法では、現実空間中における3次元位置が既知の指標をカメラで撮影し、指標の撮影画像上での位置と3次元位置との対応を基にカメラの位置姿勢を推定することが行われている。既知の指標としては、現実空間中に人為的に配置した指標などがある。例としては、四角形マーカ、円形マーカ、点マーカなどが挙げられる。しかし、現実環境中に指標を多数配置することは人的・時間的に高コストになり、景観も損なわれるという問題がある。
【０００７】
そこで、既知の指標を用いずに撮影画像上で輝度勾配のあるエッジや角点など自然特徴を検出し、それらを基にカメラの位置姿勢を推定することが行われている。
【０００８】
非特許文献１に記載の技術では、自然特徴として特徴点を画像から検出する。カメラを移動させ、初期画像で検出した特徴点から２次元的に特徴点を追跡し、初期画像と現画像の２つの画像間で特徴点周りの８×８の画素パッチを対応付ける。画像座標の対応点から、２つの画像を撮影したカメラの相対的な位置姿勢と対応付けた特徴点群の３次元情報である位置を推定する。ここで、非特許文献１では、特徴点群の３次元情報である位置と、その周辺の画像パッチを合わせてマップと呼んでいる。さらに、初めの２つの画像から算出されるマップを初期マップと呼ぶ。算出したマップ（ここでは３次元の位置情報を持つ特徴点群）を、現在のカメラの位置姿勢に基づいて画像面に投影し、検出した特徴点と、投影された特徴点と、の誤差を最小化するように、カメラの位置姿勢を更新する。カメラの位置姿勢が推定されており、特徴点を十分推定しているときに、キーフレームと呼ばれる画像を動画像から取得する。各キーフレームで検出された特徴点をエピポーラ線上を探索して対応付けを行う。各キーフレームのカメラ位置姿勢と、特徴点群の３次元位置を、各キーフレーム上での投影誤差が最小化されるようにバンドル調整を行い、非線形最適化計算によって、マップを高精度に算出する。また、非特許文献１では、マウスや画面のタッチ入力など、マニュアルで入力することで、マッピングを開始する。マッピングを開始した後は、カメラの位置姿勢を推定しながら並列処理でマップ生成の処理が継続される。
【０００９】
非特許文献２では、自然特徴として画像全体から輝度勾配のある点群を密に検出する。初期マップの生成は非特許文献１と同様の手法を利用している。初期マップの生成後、マップの点を現画像に投影した時、マップの点のキーフレーム上の輝度値と現フレーム上の輝度値とが一致するように位置姿勢を更新する。また、前キーフレームと位置が閾値以上離れた場合に次のキーフレームを追加する。近傍のキーフレームのマップの点を、追加したキーフレームでエピポーラ探索し、対応付けを行い、２つのキーフレーム間の相対位置姿勢と対応情報に基づいてマップの点の現キーフレームにおける奥行情報を推定する。非特許文献２では、キーフレームの画像情報とキーフレーム上で輝度勾配のある点の奥行情報とキーフレームの位置姿勢を合わせて、マップと呼んでいる。ここで、キーフレームを逐次追加していくと誤差が蓄積してくため、マップの最適化を行うことで、マップ全体の整合がとれるようにしている。
【００１０】
非特許文献１や非特許文献２に記載の技術は、ＳＬＡＭ（Ｓｉｍｕｌｔａｎｅｏｕｓ  Ｌｏｃａｌｉｚａｔｉｏｎ  Ａｎｄ  Ｍａｐｐｉｎｇ）と呼ばれる技術である。カメラの自己位置姿勢を推定するＬｏｃａｌｉｚａｔｉｏｎと、特徴点の位置を推定するＭａｐｐｉｎｇとを同時に行う手法である。
【先行技術文献】
【非特許文献】
【００１１】
【非特許文献１】Klein, G., Murray, D.: Parallel tracking and mapping for small AR workspaces. In:  Intl. Symp. on Mixed and Augmented Reality (ISMAR), 2007
【非特許文献２】LSD-SLAM: Large-Scale Direct Monocular SLAM, J. Engel, T. Schops, D. Cremers, European Conference on Computer Vision (ECCV), 2014
【発明の概要】
【発明が解決しようとする課題】
【００１２】
非特許文献１や非特文献２のように、カメラの位置姿勢の推定とマップの推定とを同時に行う手法において、マップ生成を継続し続けると、メモリの上限に達してオーバーフローになる危険性がある。また、情報量が増加することにより処理負荷が高くなるので、フレームレートが落ちるなどの問題が生じることがある。そこで、カメラ位置姿勢を推定しながら常に同時にマップを生成するのではなく、カメラ位置姿勢を推定しながらマップ生成を行い、ある時点でマップの生成を停止させ、それまでに生成したマップを使ってカメラ位置姿勢を推定する。このとき、カメラ位置姿勢の推定技術の専門家ではないユーザや事前知識を持たないユーザは、どの時点でマップ生成を開始または停止または再開すればよいのかが分からないという課題があった。
【００１３】
本発明はこのような問題に鑑みてなされたものであり、撮像装置の位置姿勢の推定において用いる特徴の３次元位置情報の生成を、該当分野の専門的な知識がないユーザであっても、より省メモリで実現させる技術を提供する。
【課題を解決するための手段】
【００１４】
本発明の一様態は、登録済みの特徴の３次元位置情報と、撮像装置が撮像したフレーム画像における特徴と、に基づいて、前記撮像装置の位置姿勢を推定する推定手段と、
前記推定手段が推定した位置姿勢に基づいて、未登録の特徴の３次元位置情報を生成して登録する生成手段と
を備え、
前記生成手段は、未登録の特徴の３次元位置情報の生成及び登録を、前記推定手段が前記撮像装置の位置姿勢の推定処理を開始したタイミング、前記撮像装置が撮像したフレーム画像から特徴を検出したタイミング、特徴を連続して抽出したフレーム画像の数が閾値以上となったタイミング、のいずれかのタイミングで開始してから規定の時間が経過するまで実行し、該規定の時間が経過すると停止する
ことを特徴とする。
【発明の効果】
【００１５】
本発明の構成によれば、撮像装置の位置姿勢の推定において用いる特徴の３次元位置情報の生成を、該当分野の専門的な知識がないユーザであっても、より省メモリで実現させることができる。
【図面の簡単な説明】
【００１６】
【図１】システムの構成例を示すブロック図。
【図２】情報処理装置１０００が行う処理のフローチャート。
【図３】マップ生成の進捗状況を通知するためのウィンドウの表示例を示す図。
【図４】情報処理装置１０００が行う処理のフローチャート。
【図５】情報処理装置１０００が行う処理のフローチャート。
【図６】システムの構成例を示すブロック図。
【図７】情報処理装置２０００が行う処理のフローチャート。
【図８】情報処理装置２０００が行う処理のフローチャート。
【図９】システムの構成例を示すブロック図。
【図１０】情報処理装置３０００が行う処理のフローチャート。
【図１１】ステップＳ２１６０の処理の詳細を示すフローチャート。
【図１２】指標の一例を示す図。
【図１３】指標の一例を示す図。
【図１４】コンピュータ装置のハードウェア構成例を示すブロック図。
【発明を実施するための形態】
【００１７】
以下、添付図面を参照し、本発明の好適な実施形態について説明する。なお、以下説明する実施形態は、本発明を具体的に実施した場合の一例を示すもので、特許請求の範囲に記載した構成の具体的な実施例の１つである。
【００１８】
［第１の実施形態］
本実施形態では、次のような構成を有する情報処理装置の一例について説明する。即ち、登録済みの特徴の３次元位置情報と、撮像装置が撮像したフレーム画像における特徴と、に基づいて、撮像装置の位置姿勢を推定し、該推定した位置姿勢に基づいて、未登録の特徴の３次元位置情報を生成して登録する。なお、未登録の特徴の３次元位置情報の生成及び登録を、該推定の実行に応じて制御する。
【００１９】
先ず、本実施形態に係る情報処理装置を含むシステムの構成例について、図１のブロック図を用いて説明する。図１に示す如く、本実施形態に係るシステムは、カメラ１００、表示部２００、情報処理装置１０００、を有する。
【００２０】
先ず、カメラ１００について説明する。カメラ１００は、現実空間の動画像を撮像するステレオカメラであり、撮像した動画像を構成する各フレームの画像（フレーム画像）を順次、後段の情報処理装置１０００に対して送出する。カメラ１００は、ＨＭＤに搭載されるステレオカメラであっても良いし、スマートフォンやタブレット端末装置などの携帯型端末装置に搭載されるステレオカメラであっても良く、その実装形態は特定の実装形態に限るものではない。また、カメラ１００は、以下の処理において位置姿勢を推定する対象となるものであり、その推定する位置姿勢は、世界座標系におけるものである。世界座標系とは、現実空間中の１点を原点とし、該原点で互いに直交する３軸をそれぞれ、Ｘ軸、Ｙ軸、Ｚ軸とする座標系である。なお、世界座標系の定義は、特定の定義に限るものではない。例えば、現実空間中における位置が既知の複数の特徴を基準にして世界座標系を定義してもよい。また、カメラ１００が最初に撮像した際の位置及び姿勢を基準として世界座標系を定義してもよい。また、現実空間中に配置された夫々の指標を構成する各頂点の位置が既知であってもよい。位置が既知の特徴や指標に基づいてスケールを決定してもよい。または複数地点で撮像した際の既知の撮像位置に基づいて世界座標系のスケールを決定してもよい。また、カメラ１００の位置姿勢の表現方法については特定の表現方法に限るものではない。なお、以下では、カメラ１００の歪み補正係数や焦点距離や主点位置などのカメラ内部パラメータは、公知の手法により校正済みとする。
【００２１】
次に、表示部２００について説明する。表示部２００は、ＣＲＴや液晶画面などにより構成されており、情報処理装置１０００から出力された画像や文字を表示する。なお、表示部２００は、ＨＭＤに搭載されている表示画面であっても良いし、スマートフォンやタブレット端末装置などの携帯型端末装置に搭載される表示画面であっても良く、その実装形態は特定の実装形態に限るものではない。
【００２２】
次に、情報処理装置１０００について説明する。
【００２３】
画像取得部１０１０は、カメラ１００から順次送出されるフレーム画像を取得し、該取得したフレーム画像を後段の特徴抽出部１０２０に対して送出する。画像取得部１０１０は、カメラ１００の出力がＮＴＳＣなどのアナログ出力であればアナログビデオキャプチャボードによって実現される。また、カメラ１００の出力がＩＥＥＥ１３９４などのデジタル出力であれば、例えばＩＥＥＥ１３９４インタフェースボードによって実現される。なお、画像取得部１０１０によるフレーム画像の取得元はカメラ１００に限るものではなく、例えば、予めカメラ１００によって撮像され、ハードディスクなどの記憶装置に格納しておいたフレーム画像群を読み出すようにしても構わない。なお、本実施形態で取り扱うフレーム画像群は、動画像を構成する各フレームであっても良いし、連続的に撮像された静止画像群であっても良い。
【００２４】
特徴抽出部１０２０は、画像取得部１０１０から送出されたフレーム画像から特徴点を抽出する。特徴点とは、例えば、周囲と比べて輝度値が閾値以上異なる輝度値を有する画素領域であっても良いし、机の角や窓枠などの画像特徴（自然特徴）であっても良い。
【００２５】
位置姿勢推定部１０３０は、特徴点の３次元位置情報又はカメラ１００から特徴点までの奥行き情報を含むマップと、特徴抽出部１０２０によって抽出された特徴点と、を用いて、カメラ１００の位置姿勢を推定する。マップは、例えば、特徴点の３次元情報である位置又はカメラ１００から特徴点までの奥行き情報、フレーム画像において各特徴点周辺の画像パッチ（画素集合で、例えば５画素×５画素のサイズの画素領域）、撮影時のカメラ１００の位置姿勢、を含む。なお、上記のマップに相当する情報と、画像中の特徴点と、を用いてカメラ１００の位置姿勢を推定する技術は周知の技術である。
【００２６】
設定部１０４０は、マップ生成部１０５０がマップを生成する期間の長さ、すなわちマップ生成時間を設定する。マップ生成時間は、予め設定された時間であっても良いし、ユーザが不図示の操作部を操作して適宜設定した時間であっても良い。
【００２７】
マップ生成部１０５０は、設定部１０４０が設定したマップ生成時間の期間に限って（初期マップは除く）マップを生成し、該生成したマップを記憶部１０６０に格納する。
【００２８】
提示部１０７０は、設定部１０４０が設定したマップ生成時間、該マップ生成時間において残りの時間、マップ生成を開始してからの現在の経過時間等を表す情報を表示部２００に対して送出する。
【００２９】
次に、情報処理装置１０００が行う処理について、同処理のフローチャートを示す図２を用いて説明する。
【００３０】
＜ステップＳ２０１０＞
画像取得部１０１０は、カメラ１００から順次出力されたそれぞれのフレーム画像を後段の特徴抽出部１０２０に転送する。
【００３１】
＜ステップＳ２０２０＞
特徴抽出部１０２０は、画像取得部１０１０から受けた各フレーム画像から特徴点を抽出する。ここで、フレーム画像からの特徴点の抽出処理の一例について説明する。ここでは、フレーム画像において近傍の画素間で輝度勾配が閾値以上の点を特徴点とする。輝度勾配は、画像上で隣り合う画素の濃度が閾値以上に変化する点である。輝度勾配の検出は、例えばSobelオペレータ，Prewittオペレータなどの公知のエッジ検出オペレータにより行う。各画素について、エッジ検出オペレータを画像の水平方向、垂直方向について適用する。そして、その出力値をもとに、エッジ強度を算出する。エッジ検出オペレータの水平方向の出力値がfx、垂直方向の出力値がfyである場合、エッジ検出オペレータを適用する画素におけるエッジ強度Ｉは以下の式のように算出される。
【００３２】
Ｉ＝√（ｆｘ２＋ｆｙ２）
＜ステップＳ２０３０＞
位置姿勢推定部１０３０は、まだマップが生成されていないか否かを判断する。この判断の結果、まだマップが生成されていない場合には、最初のマップ、即ち初期マップを作成すべく、処理はステップＳ２０４０に進む。一方、既にマップは作成されている場合（少なくとも初期マップは作成されている場合）には、処理はステップＳ２０５０に進む。
【００３３】
＜ステップＳ２０４０＞
マップ生成部１０５０は、画像取得部１０１０が取得したフレーム画像からマップ（初期マップ）を生成する。例えば、初期マップは、複数画像から抽出した特徴点の画像上の座標の対応付けを行うことで推定することができる。例えば、ＫＬＴと呼ばれる特徴追跡手法によって時系列に位置を変えて撮影された画像から特徴を追跡し、複数の画像の特徴点の対応付けを行う。画像における特徴点の対応からＥ行列（基礎行列）と呼ばれる変換行列を推定し、Ｅ行列からカメラの位置姿勢を求め、複数画像間の相対位置姿勢に基づいてステレオ法により特徴点の位置または奥行きの３次元情報を推定する。マップは、特徴点群の３次元的な位置または各カメラで撮影した位置からの奥行情報と、その特徴点周辺の画像パッチと、各撮影位置におけるカメラの位置姿勢を保持する。なお、マップの生成方法やマップに含まれる情報の種類については、上記に限らない。また、本実施形態では、特徴点の３次元情報の推定に用いられたフレーム画像をキーフレームと呼ぶ。
【００３４】
＜ステップＳ２０５０＞
位置姿勢推定部１０３０は、ステップＳ２０２０において特徴抽出部１０２０がフレーム画像から抽出した特徴点と、記憶部１０６０に格納されているマップと、を用いて、カメラ１００の位置姿勢を推定する。この推定では、マップが表す特徴点をフレーム画像上に投影し、該投影した特徴点と、該フレーム画像上で特徴抽出部１０２０が抽出した特徴点と、のずれを極小化するようにカメラ１００の位置姿勢を繰り返し演算により求める。この技術は周知であるため、この技術に係るこれ以上の詳細な説明は省略する。
【００３５】
マップに基づいてカメラ位置姿勢を推定する手法は、非特許文献１や非特許文献２のように、抽出した特徴点からカメラ位置姿勢を推定する手法であれば何れの公知の手法であってもよい。
【００３６】
ここで、ステップＳ２０１０〜Ｓ２０５０の処理は、上述の通り、カメラ１００の位置姿勢を推定する処理であり、この推定された位置姿勢は、例えば、ＭＲの場合、仮想空間の画像を生成する際に「仮想視点の位置姿勢」として用いられる。ＭＲでは、仮想視点の位置姿勢に基づいて仮想空間の画像を生成し、該生成した仮想空間の画像と現実空間の画像とを合成してユーザに提示する。そのため、仮想視点は、ユーザの視点の動きにリアルタイムで追従する必要があり、この推定処理にはリアルタイム性が要求される。然るに、ステップＳ２０１０〜Ｓ２０５０の処理は、フレーム画像が入力されるたびに繰り返し行われる処理である。
【００３７】
一方で、後述するステップＳ２０６０〜Ｓ２１００の処理は、後述するようにキーフレームからマップを生成する処理である。最初のステップＳ２０５０の処理が行われた後、ステップＳ２０６０〜Ｓ２１００の処理はステップＳ２０１０〜Ｓ２０５０の処理と並行して行われる。然るに、図２のフローチャートでは、ステップＳ２０５０の処理の後は、ステップＳ２０１０に戻ると共に、ステップＳ２０６０にも進む。
【００３８】
＜ステップＳ２０６０＞
設定部１０４０は（カメラ１００の位置姿勢の推定処理を開始したことをトリガにして）、マップ（初期マップを除く）の生成期間として予め設定されている時間をマップ生成時間として設定すると共に、計時を開始する。なお、計時開始以降は、本ステップではマップ生成時間の設定は行わない。
【００３９】
＜ステップＳ２０７０＞
設定部１０４０は、ステップＳ２０６０で計時を開始してからマップ生成時間が経過したか否かを判断する。この判断の結果、計時を開始してからマップ生成時間が経過した場合には、処理はステップＳ２０９０に進み、計時を開始してからマップ生成時間が経過していない場合には、処理はステップＳ２０８０に進む。
【００４０】
＜ステップＳ２０８０＞
マップ生成部１０５０は、ステップＳ２０５０において推定されたカメラ１００の位置姿勢と、前回のステップＳ２０５０において推定したカメラ１００の位置姿勢と、の差分が閾値以上であるか否かを判断する。そして、位置成分の差分が閾値以上、及び／又は姿勢成分の差分が閾値以上であると判断した場合には、ステップＳ２０１０において画像取得部１０１０が取得したフレーム画像をキーフレームとして記憶部１０６０に登録する。そして、記憶部１０６０に規定枚数以上のキーフレームが登録されると、マップ生成部１０５０は、特徴点周辺の画素パッチをカメラ１００の位置姿勢に基づいてエピポーラ探索し、複数キーフレーム間で特徴点のステレオマッチングを行う。そしてマップ生成部１０５０は、ステレオマッチング結果に基づいて特徴点の3次元位置または奥行き値を算出する。そしてマップ生成部１０５０は、算出された特徴点の3次元位置または奥行き値と、画素パッチと、カメラ位置姿勢をセットにして、マップとして記憶部１０６０に追加登録する。この新たに登録されたマップは、次フレーム以降でカメラ１００の位置姿勢を推定する際に用いられる。
【００４１】
なお、ステップＳ２０１０において画像取得部１０１０が取得したフレーム画像がキーフレームであるか否かを判断するための方法は、上記の方法に限るものではなく、様々な方法が適用可能である。
【００４２】
＜ステップＳ２０９０＞
設定部１０４０は、マップ生成部１０５０にマップ生成の停止を指示するので、マップ生成部１０５０はマップの生成処理を終了させる。これにより、カメラ１００の位置姿勢の推定を開始してからマップ生成時間が経過する間だけ、マップ生成を行うことになる。マップの生成を終了した後は、図２のフローチャートは、ステップＳ２０１０〜Ｓ２０５０の処理を繰り返し行うことになり、ステップＳ２０６０〜Ｓ２１００の処理は行われない。
【００４３】
＜ステップＳ２１００＞
提示部１０７０は、マップの生成を開始してからの経過時間、マップ生成の残り時間等、現在のマップ生成の進捗状況を表す情報を表示部２００に対して送出するので、表示部２００には、このような進捗状況が表示される。例えば、図３に示す如く、マップ生成が終了するまでの残り時間（図３では残り時間は１０秒）を、文字情報とプログレスバーとを併用して通知するためのウィンドウを表示部２００に表示させる。また、現在のマップ生成の進捗状況を音声としてユーザに通知するようにしても構わない。このように、現在のマップ生成の進捗状況をユーザに通知するための方法には様々な方法が考えられ、如何なる方法を採用しても構わない。
【００４４】
このように、本実施形態では、カメラ１００の位置姿勢の推定を開始したことに応じて規定の期間だけマップ生成を行い、マップ生成の終了後は、それまでに生成されたマップに基づいて、カメラ１００の位置姿勢を推定する。このような構成により、マップを生成し続けることがなくなるため、メモリの上限に達してオーバーフローしてしまうことや、計算に使用される情報量が増えることによって処理負荷が高くなりフレームレートが落ちるということを避けることができる。
【００４５】
また、どれくらいの間マップ生成を行うのか、いつマップ生成を終了させるのか、というようなカメラ位置姿勢推定技術の専門的な知識がなくても、自動的にマップ生成に要する時間を設定することができる。そのため、ユーザの負担を軽減し、簡便に複合現実感を体験できるようになる。
【００４６】
以下では、本実施形態の変形例について説明する。なお、本実施形態の変形例１−１及び変形例１−２では、第１の実施形態との差分について重点的に説明し、特に触れない限りは、第１の実施形態と同様であるものとする。
【００４７】
＜変形例１−１＞
第１の実施形態では、計時開始からマップ生成時間が経過した場合にマップの生成を終了させていたが、マップの生成の終了条件はこれに限るものではない。本変形例では、計時を開始して以降、マップの生成及び追加登録がなされない連続時間Ｔを別途計時し、連続時間Ｔが閾値を超えた時点でマップの生成を終了させるようにしても構わない。
【００４８】
本変形例に係る情報処理装置の動作について、図４のフローチャートに従って説明する。図４のフローチャートにおいて、図２に示した処理ステップと同じ処理ステップには同じステップ番号を付しており、該処理ステップに係る説明は省略する。
【００４９】
＜ステップＳ３０１０＞
設定部１０４０は、マップの生成及び追加登録がなされない連続時間Ｔを計時する。
【００５０】
＜ステップＳ３０２０＞
設定部１０４０は、連続時間Ｔが閾値Ｔｔｈを超えたか否かを判断する。閾値Ｔｔｈは、例えば、６０秒などに設定しておいてもよい。この判断の結果、連続時間Ｔが閾値Ｔｔｈを超えた場合には、処理はステップＳ３０３０に進み、連続時間Ｔが閾値Ｔｔｈを超えていない場合には、処理はステップＳ２０５０に進む。連続時間Ｔが閾値Ｔｔｈを超える場合とは、例えば、次のキーフレームが登録されるまで時間がかかってしまったりして、マップの生成条件を満たさない場合である。
【００５１】
＜ステップＳ３０３０＞
設定部１０４０は、マップ生成時間を０に再設定する。その後、処理はステップＳ２０５０に戻るが、ステップＳ２０６０では何も処理は行わず、ステップＳ２０７０では、マップ生成時間＝０であるため、処理はステップＳ２０９０に進み、マップの生成は終了する。
【００５２】
このように、本実施形態によれば、マップが十分に生成されて新たなマップが追加されなくなった場合などに、自動的にマップ生成を停止することができる。これにより、ユーザはいつマップ生成を停止すればよいのかを考慮する必要がなくなる。したがって、前提知識を持たないユーザであっても簡便に使用することができる。また、処理負荷の高いマップ生成を続ける必要がなくなるため、処理負荷を軽減することができる。
【００５３】
＜変形例１−２＞
変形例１−１では、新たなマップが追加されない連続時間Ｔを計時し、該連続時間Ｔが閾値Ｔｔｈを超えた場合には、マップ生成時間を０に設定してマップ生成を停止していた。しかし、新たにマップが追加されるのは、ユーザが位置や姿勢を変えながら動いた場合である。そのため、ユーザが動かず止まっている場合には、十分な数のマップが生成されないままその生成が停止してしまう可能性がある。このように、ケースによっては、マップ生成を停止する必要がない場合がある。
【００５４】
そこで本変形例では、変形例１−１の構成において更に、ユーザが動かず止まっているかどうかを判定し、その判断結果をも参酌して、マップ生成を停止させるのか否かを決定する。本変形例に係る情報処理装置の動作について、図５のフローチャートに従って説明する。図５のフローチャートにおいて、図４に示した処理ステップと同じ処理ステップには同じステップ番号を付しており、該処理ステップに係る説明は省略する。
【００５５】
ステップＳ３０２０において、連続時間Ｔが閾値Ｔｔｈを超えた場合には、処理はステップＳ３０４０に進み、連続時間Ｔが閾値Ｔｔｈを超えていない場合には、処理はステップＳ２０５０に進む。
【００５６】
＜ステップＳ３０４０＞
位置姿勢推定部１０３０は、前（過去）のフレームについて推定した位置（姿勢）と現フレームについて推定した位置（姿勢）との差分（絶対値）を求め、該差分の累積加算値を変化量Ｄとして求める。変化量Ｄは、位置成分のみについて求めても良いし、姿勢成分のみについて求めても良いし、両方の成分について求めても良い。
【００５７】
＜ステップＳ３０５０＞
位置姿勢推定部１０３０は、ステップＳ３０４０で求めた変化量Ｄが閾値Ｄｔｈを超えているか否かを判断する。この判断の結果、変化量Ｄが閾値Ｄｔｈを超えている場合には、処理はステップＳ３０３０に進み、変化量Ｄが閾値Ｄｔｈを超えていない場合には、処理はステップＳ２０５０に戻る。
【００５８】
このような処理により、新たなマップが追加されなくなった場合であっても、カメラ１００の位置姿勢の変化量が小さい場合には、ユーザが動いていないと判定することができ、自動的にマップ生成を停止することをしない。一方で、カメラ１００の位置姿勢が所定の変化量よりも大きく動いているにも関わらず、新たにマップが追加されない場合には、マップ生成を停止することができる。
【００５９】
これにより、ユーザはいつマップ生成を停止すればよいのかを考慮する必要がなくなる。したがって、前提知識を持たないユーザであっても簡便に使用することができる。また、処理負荷の高いマップ生成を続ける必要がなくなるため、処理負荷を軽減することができる。
【００６０】
［第２の実施形態］
第１の実施形態では、カメラ位置姿勢推定とマップ生成とを並行して行う手法において、推定されたカメラ位置姿勢の入力を受けるとマップ生成時間を設定して計時を開始すると共にマップ生成を開始していた。そして、計時した時間がマップ生成時間を経過すると、マップ生成を終了した。しかしながら、マップ生成時間を設定する方法はこのような手法に限るものではない。例えば、複合現実感を体験する範囲が広い場合、生成すべきマップ数は多くなるため、複合現実感を体験する範囲が狭い場合に比べてより多いマップ生成時間が必要となる。このように、必要なマップ生成時間は、ケースに応じて異なるのが普通であるが、第１の実施形態のように、規定の１種類のマップ生成時間を設定してしまうと、ケースによっては十分なマップを生成することができず、マップが生成できない範囲ができてしまう。このように、複合現実感を体験する範囲に合わせてマップを生成することが望ましい。そこで、本実施形態では、カメラ位置姿勢推定とマップ生成とを並行して行う手法において、カメラの移動距離に基づいてマップ生成時間を設定する。以下では、第１の実施形態との差分について重点的に説明し、以下で特に触れない限りは、第１の実施形態と同様であるものとする。
【００６１】
先ず、本実施形態に係る情報処理装置の構成例について、図６のブロック図を用いて説明する。図６において、図１に示した機能部と同じ機能部には同じ参照番号を付しており、該機能部に係る説明は省略する。情報処理装置２０００は、情報処理装置１０００の構成に分布取得部１０８０を加えたものである。
【００６２】
分布取得部１０８０は、カメラ１００の現在位置（位置姿勢推定部１０３０が最近推定した位置）と、カメラ１００の初期位置（予め測定若しくは取得されて記憶部１０６０に登録されている）と、の間の距離（移動距離）を求める。
【００６３】
設定部１０４０は、分布取得部１０８０が求めた移動距離に応じたマップ生成時間を設定する。
【００６４】
次に、情報処理装置２０００の動作について、図７のフローチャートに従って説明する。なお、図７のフローチャートにおいて、図２に示した処理ステップと同じ処理ステップには同じステップ番号を付しており、該処理ステップに係る説明は省略する。
【００６５】
＜ステップＳ２１１０＞
分布取得部１０８０は、位置姿勢推定部１０３０が最近推定した位置と、カメラ１００の初期位置と、の間の距離（移動距離）を求める。なお、移動距離の求め方はこれに限るものではなく、例えば、ＧＰＳ等を用いてカメラ１００の初期位置からの移動経路を求めて、該移動経路の距離を移動距離として求めても良い。
【００６６】
ステップＳ２０６０では第１の実施形態と同様に、カメラ１００の位置姿勢の推定処理を開始したことをトリガにしてマップ生成時間を設定するのであるが、初回は第１の実施形態と同様に、予め設定されている時間をマップ生成時間として設定する。そして２回目以降は、ステップＳ２１１０において求めた移動距離に応じたマップ生成時間を設定する。
【００６７】
例えば、閾値を３ｍ、追加マップ生成時間を６０秒とした場合、カメラ１００の初期位置からの移動距離が３ｍを超えた時点で、現在設定されているマップ生成時間に６０秒を加算して該マップ生成時間を更新する。そしてその後、カメラ１００が移動した結果、カメラ１００の初期位置からの移動距離が６ｍを超えた時点で、現在設定されているマップ生成時間に更に６０秒を加算して該マップ生成時間を更新する。このようにして、初期位置から遠くなるほど、移動空間が大きいものと判断して、マップ生成時間をより大きくする。然るに、このような傾向でマップ生成時間を更新するのであれば、その更新方法やタイミングについてはこの例に限らない。
【００６８】
このような処理により、カメラ１００の移動距離に応じて、すなわち、移動空間のサイズに応じてマップ生成時間を調整することができ、これにより、カメラの移動範囲に合わせてマップを生成することができる。
【００６９】
また、どれくらいの間マップ生成をおこなえばよいのか、またはいつマップ生成をやめればよいかをカメラ位置姿勢推定技術の専門的な知識がなくても、自動的にマップ生成に要する時間を設定することができる。そのため、ユーザの負担を軽減し、簡便に複合現実感を体験できるようになる。
【００７０】
以下では、本実施形態の変形例について説明する。なお、本実施形態の変形例２−１及び変形例２−２では、第２の実施形態との差分について重点的に説明し、特に触れない限りは、第２の実施形態と同様であるものとする。
【００７１】
＜変形例２−１＞
第２の実施形態では、カメラ１００の移動距離が大きいほどマップ生成時間を延長していたが、マップ生成時間の延長方法はこれに限るものではない。本変形例では、記憶部１０６０に登録されているキーフレームの数に応じてマップ生成時間を延長する。
【００７２】
本変形例に係る情報処理装置の動作について、図８のフローチャートに従って説明する。なお、図８のフローチャートにおいて、図７に示した処理ステップと同じ処理ステップには同じステップ番号を付しており、該処理ステップに係る説明は省略する。
【００７３】
＜ステップＳ４０１０＞
分布取得部１０８０は、記憶部１０６０に登録されているキーフレームの数Ｎをカウントする。
【００７４】
＜ステップＳ４０２０＞
分布取得部１０８０は、ステップＳ４０１０でカウントしたキーフレームの数Ｎが閾値Ｎｔｈ未満であるか否かを判断する。この判断の結果、キーフレームの数Ｎが閾値Ｎｔｈ未満である場合には、処理はステップＳ４０３０に進み、キーフレームの数Ｎが閾値Ｎｔｈ以上である場合には、処理はステップＳ２０５０に進む。
【００７５】
ここで、閾値Ｎｔｈは、カメラ１００の画角のオーバーラップが５０％得られる場合の変化量に基づいて決定する。例えば、水平画角６０度のカメラで水平３６０度をカバーする際には、１２枚のキーフレームがあればよいため、閾値Ｎｔｈを１２とすることができる。しかし、閾値Ｎｔｈの決定方法はこれに限るものはなく、実験によって十分な精度を得られるキーフレーム数から求めてもよいし、何れの公知の手法で求めてもよい。
【００７６】
＜ステップＳ４０３０＞
設定部１０４０は、現在設定されているマップ生成時間を延長する。延長分はどのような値であっても良く、規定の値であっても良いし、キーフレームの数Ｎに応じた値であっても良い。
【００７７】
このような処理により、登録済みのキーフレームの数が少ないと判定される場合には、マップ生成時間を延長することで、マップ生成が不十分なために、カメラ位置姿勢の推定が正しく行えないということを避けることができる。
【００７８】
＜変形例２−２＞
第２の実施形態では、カメラ１００の移動距離を求め、該求めた移動距離に応じてマップ生成時間を調整していた。しかし、カメラ１００の移動可能な範囲が予め分かっている場合には、ユーザが不図示の操作部を操作してその範囲を入力し、設定部１０４０は、入力された範囲に応じたマップ生成時間を設定するようにしても構わない。
【００７９】
例えば、ユーザが不図示の操作部を操作して、カメラ１００の移動範囲として「３ｍ×３ｍの床面」を入力した場合、設定部１０４０は、これに対応するマップ生成時間として６０秒を設定する。また、ユーザが不図示の操作部を操作して、カメラ１００の移動範囲として「６ｍ×６ｍの床面」を入力した場合には、設定部１０４０は、これに対応するマップ生成時間として３６０秒を設定する。このような場合、記憶部１０６０には、各移動範囲に対応するマップ生成時間が予め登録されており、設定部１０４０は、ユーザが入力した移動範囲に応じたマップ生成時間を記憶部１０６０から取得することができる。なお、ユーザが入力した移動範囲に対応するマップ生成時間が登録されていない場合には、該移動範囲の近傍の登録済みの移動範囲に対応するマップ生成時間から補間により求めても良い。
【００８０】
［第３の実施形態］
特徴点の誤検出やマッチングの誤対応などにより、推定したカメラ位置姿勢の精度が低くなった場合、そのようなカメラ位置姿勢に基づくマップ生成を継続すると、結果として生成されるマップの精度が悪くなる。マップの精度が悪くなると、さらにカメラ位置姿勢の推定精度が悪くなってしまう。
【００８１】
そのため、本実施形態では、カメラ位置姿勢の安定性が低い場合には、マップ生成時間を一時的に０秒にすることでマップ生成を停止し、カメラ位置姿勢の安定性が高くなった場合に、所定のマップ生成時間を設定する。以下では、第１の実施形態との差分について重点的に説明し、以下で特に触れない限りは、第１の実施形態と同様であるものとする。
【００８２】
本実施形態に係る情報処理装置の構成例について、図９のブロック図を用いて説明する。図９において、図１に示した機能部と同じ機能部には同じ参照番号を付しており、該機能部に係る説明は省略する。図９の情報処理装置３０００は、情報処理装置１０００に安定度推定部１０９０を加えたものである。
【００８３】
安定度推定部１０９０は、位置姿勢推定部１０３０が推定した位置姿勢の安定度を推定する。位置姿勢の安定度は、時系列に取得されるフレーム画像間でのカメラ１００の位置及び／又は姿勢の変化量に基づいて推定する。変化量が閾値よりも大きい場合には、安定度を低く設定し、変化量が小さい場合には安定度を高く設定する。また、カメラ位置姿勢を推定する際の最適化計算において、誤差関数として再投影誤差を最小化する場合には、検出した特徴点の再投影誤差の分散であってもよい。また、特徴点周辺の輝度値を最小化する場合には、輝度値の分散であってもよい。また、カメラ位置姿勢の安定度は、公知の何れの手法によって求めてもよい。
【００８４】
次に、情報処理装置３０００の動作について、図１０のフローチャートに従って説明する。なお、図１０のフローチャートにおいて、図２の処理ステップと同じ処理ステップには同じステップ番号を付しており、該処理ステップに係る説明は省略する。
【００８５】
＜ステップＳ２１２０＞
安定度推定部１０９０は、位置姿勢推定部１０３０が推定した位置姿勢の安定度を推定する。時系列で入力されるフレーム画像の撮像位置または撮像姿勢が、連続したフレーム画像間で所定の距離または姿勢変化量より大きい場合には、カメラ位置姿勢の推定に失敗している可能性があるため、安定度を低く設定する。
【００８６】
＜ステップＳ２１６０＞
設定部１０４０は、ステップＳ２１２０において推定した安定度に応じたマップ生成時間を設定する。ステップＳ２１６０の処理の詳細について、図１１のフローチャートに従って説明する。
【００８７】
＜ステップＳ５０１０＞
設定部１０４０は（カメラ１００の位置姿勢の推定処理を開始したことをトリガにして）、マップ（初期マップを除く）の生成期間として予め設定されている時間をマップ生成時間として設定すると共に、計時を開始する。なお、計時開始以降は、本ステップではマップ生成時間の設定は行わない。
【００８８】
＜ステップＳ５０２０＞
設定部１０４０は、ステップＳ２１２０において推定した安定度Ｒが閾値Ｒｔｈ未満であるのか否かを判断する。この判断の結果、安定度Ｒが閾値Ｒｔｈ未満である場合には、処理はステップＳ５０３０に進み、安定度Ｒが閾値Ｒｔｈ以上である場合には、処理はステップＳ５０５０に進む。
【００８９】
＜ステップＳ５０３０＞
設定部１０４０は、マップ生成時間からステップＳ５０１０で計時を開始してからの経過時間を差し引いた残りの時間、すなわち、マップ生成のための残りの時間を求め、該求めた残りの時間を記憶部１０６０に格納する。
【００９０】
＜ステップＳ５０４０＞
設定部１０４０は、マップ生成時間を０に再設定する。その後、処理はステップＳ２０７０に進み。ステップＳ２０７０では、マップ生成時間＝０であるため、処理はステップＳ２０９０に進み、マップの生成は終了する。
【００９１】
＜ステップＳ５０５０＞
設定部１０４０は、記憶部１０６０にステップＳ５０３０で格納した「残りの時間」が格納されているのか否かを判断する。この判断の結果、記憶部１０６０に「残りの時間」が格納されている場合には処理はステップＳ５０６０に進み、格納されていない場合には、処理はステップＳ２０７０に進む。
【００９２】
＜ステップＳ５０６０＞
設定部１０４０は、記憶部１０６０に格納されている「残りの時間」をマップ生成時間として設定する。
【００９３】
このような処理により、マップの精度が悪くなることを避け、カメラ位置姿勢の安定度が高いときのみマップ生成を行うことができるため、精度のよいマップ生成を行うことができる。
【００９４】
以下では、本実施形態の変形例について説明する。なお、本実施形態の変形例３−１及び変形例３−２では、第３の実施形態との差分について重点的に説明し、特に触れない限りは、第３の実施形態と同様であるものとする。
【００９５】
＜変形例３−１＞
第３の実施形態では、カメラ１００の位置姿勢の安定度に応じて、マップ生成の停止と再開を制御していたが、マップ生成の再開の制御方法はこれ以外の方法も考え得る。本変形例では、マップ生成時間が経過してマップ生成が終わった後、再度マップ生成を再開させる例について説明する。
【００９６】
マップの特徴点を現在の撮影位置で撮影した画像に投影して、検出した特徴点と投影された特徴点との誤差を最小化するようにカメラ位置姿勢を推定する手法において、投影される特徴点が少ない場合に、マップ生成を再開してもよい。投影される特徴点が閾値より多いか否かを判断し、少ない場合にマップ生成時間に予め設定された時間を設定することで、マップ生成を再開してもよい。投影される特徴点が少ないということは、登録されている特徴点が少ないといえるため、追加で生成することが望ましい。
【００９７】
このような構成により、いったんマップ生成を終えたあとに、カメラ位置姿勢推定技術の専門的な知識がなくても、自動的にマップ生成を再開することができる。そのため、ユーザの負担を軽減し、簡便に複合現実感を体験できるようになる。
【００９８】
＜変形例３−２＞
変形例３−１では、カメラ位置姿勢の推定時に利用される特徴点の数に応じて、マップ生成を再開する方法について説明した。本変形例では、マップ生成を開始する方法について述べる。
【００９９】
既知の指標が検出されるとマップ生成を開始してもよい。さらに、既知の指標を連続検出するフレームの数が閾値以上となった場合に、マップ生成を開始してもよい。また、マップ生成をいったん終えたあとに、識別可能な指標でかつ予め登録しておいた指標を検出すると、マップ生成を再開してもよい。
【０１００】
ここで指標について説明する。図１２に示す如く、四角形形状の指標（以下、四角形指標と呼ぶ）は、内部に識別子を表すパターンを持ち、一意に同定可能であるとする。また、撮影画像に２値化処理を施した後にラベリング処理を行い、一定面積以上の領域の中から４つの直線によって形成されているものを候補領域として抽出する。さらに、候補領域の中に特定のパターンがあるか否かを判定することによって候補領域が指標領域であるかを判定し、内部のパターンを読み出すことによって指標の画像内の方向と識別子を取得することにより、取得された画像中から指標を検出する。
【０１０１】
なお、指標は、四角形指標に限るものではなく、撮影画像上において検出可能であって、かついずれの指標であるのかを識別可能である指標であれば、何れの形態であってもよい。例えば、図１３に示すように、それぞれが異なる色を有する円形状の指標のような点指標であってもよい。この場合には、画像上から各々の指標の色に対応する領域を検出し、その重心位置を指標の検出座標とする。また、それぞれが異なるテクスチャ特徴を有する特徴点（自然特徴点）を点指標としてもよい。この場合には、既知の情報として予め保持している各々の指標のテンプレート画像によるテンプレートマッチングを画像上に施すことにより、画像から指標を抽出する。これに限らず、空間中に固定される指標であって、それを撮影した画像から検出可能なものであればどのような指標であってもかまわない。
【０１０２】
以上のように、識別可能な指標を検出することで、マップ生成の開始を決定することができる。カメラ位置姿勢推定技術の専門的な知識がなくても、指標を検出するだけで自動的にマップ生成を開始または再開することができる。そのため、ユーザの負担を軽減し、簡便に複合現実感を体験できるようになる。
【０１０３】
［第４の実施形態］
図１，６，９に示した各機能部はハードウェアで構成しても良いが、画像取得部１０１０及び記憶部１０６０をハードウェアで構成し、残りの機能部の１以上をソフトウェアで構成しても構わない。このような場合、画像取得部１０１０及び記憶部１０６０をハードウェアとして有し、該ソフトウェアを実行可能な処理部を有するコンピュータ装置は、情報処理装置１０００，２０００，３０００に適用可能である。情報処理装置１０００，２０００，３０００に適用可能なコンピュータ装置のハードウェア構成例について、図１４のブロック図を用いて説明する。
【０１０４】
ＣＰＵ４００１は、ＲＡＭ４００２やＲＯＭ４００３に格納されているコンピュータプログラムやデータを用いて処理を実行する。これによりＣＰＵ４００１は、コンピュータ装置全体の動作制御を行うと共に、情報処理装置１０００，２０００，３０００が行うものとして上述した各処理を実行若しくは制御する。
【０１０５】
ＲＡＭ４００２は、外部記憶装置４００７や記憶媒体ドライブ４００８からロードされたコンピュータプログラムやデータ、Ｉ／Ｆ（インターフェース）４００９を介して外部から受信したデータ、を格納するためのエリアを有する。更に、ＲＡＭ４００２は、ＣＰＵ４００１が各種の処理を実行する際に用いるワークエリアを有する。このようにＲＡＭ４００２は、各種のエリアを適宜提供することができる。なお、ＲＡＭ４００２は、上記の記憶部１０６０として使用可能である。
【０１０６】
ＲＯＭ４００３には、コンピュータ装置の書き換え不要な設定データや、ブートプログラムなどが格納されている。
【０１０７】
キーボード４００４，マウス４００５は、ユーザが操作することで各種の指示をＣＰＵ４００１に対して入力するためのユーザインターフェースの一例である。表示部４００６は、ＣＲＴや液晶画面などにより構成されており、ＣＰＵ４００１による処理結果を画像や文字などでもって表示することができる。なお、キーボード４００４、マウス４００５、表示部２００の代わりにタッチパネル画面を設けても構わない。
【０１０８】
外部記憶装置４００７は、ハードディスクドライブ装置に代表される大容量情報記憶装置である。外部記憶装置４００７には、ＯＳ（オペレーティングシステム）や、図１，６，９において画像取得部１０１０及び記憶部１０６０以外の各機能部の動作をＣＰＵ４００１に実行させるためのコンピュータプログラムやデータが保存されている。このデータには、上記の閾値など、既知の情報として説明したものも含まれている。外部記憶装置４００７に保存されているコンピュータプログラムやデータは、ＣＰＵ４００１による制御に従って適宜ＲＡＭ４００２にロードされ、ＣＰＵ４００１による処理対象となる。なお、外部記憶装置４００７は、上記の記憶部１０６０として使用可能である。
【０１０９】
記憶媒体ドライブ４００８は、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭ等の記憶媒体に対するコンピュータプログラムやデータの読み書きが可能な装置であり、読み出したコンピュータプログラムやデータは、ＲＡＭ４００２や外部記憶装置４００７に対して出力される。なお、外部記憶装置４００７に保存されているものとして説明したコンピュータプログラムやデータの一部若しくは全部をこの記憶媒体に記録しておいても良い。
【０１１０】
Ｉ／Ｆ４００９は、コンピュータ装置をネットワークや外部機器と接続するためのインターフェースとして機能するものであり、例えば、上記の画像取得部１０１０の機能も含む。図１，６，９の場合、Ｉ／Ｆ４００９は、カメラ１００を接続するためのアナログビデオポートあるいはＩＥＥＥ１３９４等のデジタル入出力ポート、また、各種情報を表示部２００に対して出力するためのＤＶＩポートなどによって構成される。
【０１１１】
ＣＰＵ４００１、ＲＡＭ４００２、ＲＯＭ４００３、キーボード４００４、マウス４００５、表示部４００６、外部記憶装置４００７、記憶媒体ドライブ４００８、Ｉ／Ｆ４００９は何れも、バス４０１０に接続されている。
【０１１２】
なお、以上説明したそれぞれの実施形態や変形例は、その一部若しくは全部を適宜組み合わせて使用しても構わないし、選択的に使用するようにしても構わない。
【０１１３】
（その他の実施例）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【０１１４】
１０３０：位置姿勢推定部  １０４０：設定部  １０５０：マップ生成部
【図１】
0006789624.tif 000002
【図２】
0006789624.tif 000003
【図３】
0006789624.tif 000004
【図４】
0006789624.tif 000005
【図５】
0006789624.tif 000006
【図６】
0006789624.tif 000007
【図７】
0006789624.tif 000008
【図８】
0006789624.tif 000009
【図９】
0006789624.tif 000010
【図１０】
0006789624.tif 000011
【図１１】
0006789624.tif 000012
【図１２】
0006789624.tif 000013
【図１３】
0006789624.tif 000014
【図１４】
0006789624.tif 000015