(57)【要約】【課題】より低い消費電力で確実に自己位置を推定することができるようにする。【解決手段】起動判定部は、複数のカメラのうちのいくつかを自己位置推定に用いる起動カメラとして選択し、起動切替部は起動カメラの選択結果に基づいて、複数のカメラのうちの起動カメラとされたカメラを起動状態とさせて画像を撮影させるとともに、残りのカメラの起動を停止させる。自己位置推定部は、起動カメラにより撮影された画像に基づいて自己位置推定を行う。また、起動判定部は、所定のタイミングで起動カメラを選択し直す。本技術は、自己位置推定システムに適用することができる。【選択図】図２
2016197083.tif 000002
【特許請求の範囲】
【請求項１】
複数のカメラのうちのいくつかを自己位置推定に用いる起動カメラとして選択する起動判定部と、
前記起動カメラの選択結果に基づいて、前記複数の前記カメラのうちの前記起動カメラとされた前記カメラを起動状態とさせて画像を撮影させ、前記複数の前記カメラのうちの前記起動カメラとは異なる前記カメラの起動を停止させる起動切替部と
を備える制御装置。
【請求項２】
前記起動判定部は、所定のタイミングで前記起動カメラを選択し直す
請求項１に記載の制御装置。
【請求項３】
前記起動判定部は、前記所定のタイミングで、前記起動カメラにより撮影を行うスリープモードから、前記複数の前記カメラ全てを起動させるカウントモードに移行させるとともに、前記カウントモードの状態で前記複数の前記カメラにより撮影された画像に基づいて前記起動カメラを選択する
請求項２に記載の制御装置。
【請求項４】
前記起動判定部は、前記カメラにより撮影された前記画像から検出された特徴点の数に基づいて前記起動カメラを選択する
請求項３に記載の制御装置。
【請求項５】
前記起動判定部は、前記カメラにより撮影された前記画像から検出された特徴点の空間上の分布に基づいて前記起動カメラを選択する
請求項３に記載の制御装置。
【請求項６】
前記起動判定部は、前記カメラにより撮影された前記画像から検出された特徴点の前記画像上の分布に基づいて前記起動カメラを選択する
請求項３に記載の制御装置。
【請求項７】
前記起動判定部は、前記自己位置推定に用いられる三次元マップにより示されるランドマークに対応する、前記カメラにより撮影された前記画像から検出された特徴点の数に基づいて前記起動カメラを選択する
請求項３に記載の制御装置。
【請求項８】
前記起動判定部は、一定の時間間隔で前記スリープモードから前記カウントモードへと移行させる
請求項３に記載の制御装置。
【請求項９】
前記起動判定部は、前記スリープモードの状態で前記起動カメラにより撮影された前記画像から検出された特徴点の数に基づいて、前記スリープモードから前記カウントモードへと移行させる
請求項３に記載の制御装置。
【請求項１０】
前記起動判定部は、基準となる特徴点数に対する、前記スリープモードの状態で前記起動カメラにより撮影された前記画像から検出された特徴点の数の割り合いに基づいて、前記スリープモードから前記カウントモードへと移行させる
請求項３に記載の制御装置。
【請求項１１】
前記起動判定部は、前記自己位置推定の結果に基づいて前記スリープモードから前記カウントモードへと移行させる
請求項３に記載の制御装置。
【請求項１２】
前記起動判定部は、前記カメラの移動距離または回転量に基づいて前記スリープモードから前記カウントモードへと移行させる
請求項３に記載の制御装置。
【請求項１３】
前記起動判定部は、前記自己位置推定により得られた自己位置と、前記自己位置推定に用いられる三次元マップにより示されるランドマークとの位置関係に基づいて、前記起動カメラを選択する
請求項２に記載の制御装置。
【請求項１４】
前記起動判定部は、前記複数の前記カメラのそれぞれの観察視野を撮影可能な広角カメラで得られた画像に基づいて、前記起動カメラを選択する
請求項２に記載の制御装置。
【請求項１５】
前記複数の前記カメラは、球面上または円周上に並べられている
請求項１に記載の制御装置。
【請求項１６】
前記起動カメラにより撮影された前記画像に基づいて前記自己位置推定を行う自己位置推定部をさらに備える
請求項１に記載の制御装置。
【請求項１７】
複数のカメラのうちのいくつかを自己位置推定に用いる起動カメラとして選択し、
前記起動カメラの選択結果に基づいて、前記複数の前記カメラのうちの前記起動カメラとされた前記カメラを起動状態とさせて画像を撮影させ、前記複数の前記カメラのうちの前記起動カメラとは異なる前記カメラの起動を停止させる
ステップを含む制御方法。
【請求項１８】
複数のカメラのうちのいくつかを自己位置推定に用いる起動カメラとして選択し、
前記起動カメラの選択結果に基づいて、前記複数の前記カメラのうちの前記起動カメラとされた前記カメラを起動状態とさせて画像を撮影させ、前記複数の前記カメラのうちの前記起動カメラとは異なる前記カメラの起動を停止させる
ステップを含む処理をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は制御装置および方法、並びにプログラムに関し、特に、より低い消費電力で確実に自己位置を推定することができるようにした制御装置および方法、並びにプログラムに関する。
【背景技術】
【０００２】
従来、カメラで撮影された画像に基づいて、実空間上におけるカメラの位置を推定する自己位置推定では、画像に含まれている指標となる勾配や特徴点などが用いられて、カメラの自己位置が推定される（例えば、特許文献１参照）。
【０００３】
そのため、被写体が白壁である場合など、撮影された画像内に特徴点等がない場合には、継続してカメラの自己位置を推定することが原理上不可能である。
【０００４】
現実には、四方を白壁に囲まれたような状況は少なく、前方視野に特徴点がない状況でも、後方や天井などには自己位置推定を行うのに十分な特徴点が存在することが多い。
【０００５】
しかし、例えばユーザが自己位置推定に用いるアクションカム等のカメラを装着して室内を移動する場合、室内に特徴点の検出が可能な被写体が少ないときには、ユーザは常に特徴点の検出が可能な被写体の方向を向いていなければならなくなる。このように、常に視野内に特徴点が含まれるようにすると、ユーザの動きが制限され、自由度が損なわれてしまう。
【０００６】
一方、ユーザが自由に動くことができ、かつ画像から特徴点が検出されない状況を回避するために、全周カメラを利用して自己位置推定を行うことが考えられる。この場合、全周カメラで撮影された画像から特徴点等が検出されて自己位置が推定される。
【０００７】
ところが、全周カメラを用いて周囲の環境の画像を撮影すると、特徴点を検出することのできる空間上の範囲は広がるが、カメラの画角が広がることで空間解像度が低下するので、十分な精度で自己位置を推定することができなくなってしまう。
【０００８】
そこで、ユーザの動きが制限されることなく、かつ十分な精度で自己位置を推定することができるようにするために、複数のカメラを用いて自己位置推定を行う技術が提案されている。この技術では、複数のカメラが並べられて、それらの複数のカメラが１つの広角カメラとして機能する。
【０００９】
このように複数のカメラを用いれば、カメラにより観察されない領域、つまり死角を減らすことができるので、画像から特徴点が検出されないような状況を回避することができ、ユーザの動きを制限せずに自己位置を推定することができる。また、複数のカメラで周囲の環境を撮影するので、画像の空間解像度が低下してしまうこともなく、十分な精度で自己位置を推定することができる。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００９−２３７８４８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、上述した技術では、常に複数のカメラで周囲の環境を撮影する必要があるため、自己位置推定に用いるカメラの数が増える分だけ、電力消費量が増加する。特に、カメラの数に対して電力消費量は正比例することから、ウェアラブルデバイスなどで自己位置推定を行なおうとする場合には、自己位置推定での消費電力を低く抑える必要がある。
【００１２】
本技術は、このような状況に鑑みてなされたものであり、より低い消費電力で確実に自己位置を推定することができるようにするものである。
【課題を解決するための手段】
【００１３】
本技術の一側面の制御装置は、複数のカメラのうちのいくつかを自己位置推定に用いる起動カメラとして選択する起動判定部と、前記起動カメラの選択結果に基づいて、前記複数の前記カメラのうちの前記起動カメラとされた前記カメラを起動状態とさせて画像を撮影させ、前記複数の前記カメラのうちの前記起動カメラとは異なる前記カメラの起動を停止させる起動切替部とを備える。
【００１４】
前記起動判定部には、所定のタイミングで前記起動カメラを選択し直させることができる。
【００１５】
前記起動判定部には、前記所定のタイミングで、前記起動カメラにより撮影を行うスリープモードから、前記複数の前記カメラ全てを起動させるカウントモードに移行させるとともに、前記カウントモードの状態で前記複数の前記カメラにより撮影された画像に基づいて前記起動カメラを選択させることができる。
【００１６】
前記起動判定部には、前記カメラにより撮影された前記画像から検出された特徴点の数に基づいて前記起動カメラを選択させることができる。
【００１７】
前記起動判定部には、前記カメラにより撮影された前記画像から検出された特徴点の空間上の分布に基づいて前記起動カメラを選択させることができる。
【００１８】
前記起動判定部には、前記カメラにより撮影された前記画像から検出された特徴点の前記画像上の分布に基づいて前記起動カメラを選択させることができる。
【００１９】
前記起動判定部には、前記自己位置推定に用いられる三次元マップにより示されるランドマークに対応する、前記カメラにより撮影された前記画像から検出された特徴点の数に基づいて前記起動カメラを選択させることができる。
【００２０】
前記起動判定部には、一定の時間間隔で前記スリープモードから前記カウントモードへと移行させるようにすることができる。
【００２１】
前記起動判定部には、前記スリープモードの状態で前記起動カメラにより撮影された前記画像から検出された特徴点の数に基づいて、前記スリープモードから前記カウントモードへと移行させるようにすることができる。
【００２２】
前記起動判定部には、基準となる特徴点数に対する、前記スリープモードの状態で前記起動カメラにより撮影された前記画像から検出された特徴点の数の割り合いに基づいて、前記スリープモードから前記カウントモードへと移行させるようにすることができる。
【００２３】
前記起動判定部には、前記自己位置推定の結果に基づいて前記スリープモードから前記カウントモードへと移行させるようにすることができる。
【００２４】
前記起動判定部には、前記カメラの移動距離または回転量に基づいて前記スリープモードから前記カウントモードへと移行させるようにすることができる。
【００２５】
前記起動判定部には、前記自己位置推定により得られた自己位置と、前記自己位置推定に用いられる三次元マップにより示されるランドマークとの位置関係に基づいて、前記起動カメラを選択させることができる。
【００２６】
前記起動判定部には、前記複数の前記カメラのそれぞれの観察視野を撮影可能な広角カメラで得られた画像に基づいて、前記起動カメラを選択させることができる。
【００２７】
前記複数の前記カメラは、球面上または円周上に並べられているようにすることができる。
【００２８】
制御装置には、前記起動カメラにより撮影された前記画像に基づいて前記自己位置推定を行う自己位置推定部をさらに設けることができる。
【００２９】
本技術の一側面の制御方法またはプログラムは、複数のカメラのうちのいくつかを自己位置推定に用いる起動カメラとして選択し、前記起動カメラの選択結果に基づいて、前記複数の前記カメラのうちの前記起動カメラとされた前記カメラを起動状態とさせて画像を撮影させ、前記複数の前記カメラのうちの前記起動カメラとは異なる前記カメラの起動を停止させるステップを含む。
【００３０】
本技術の一側面においては、複数のカメラのうちのいくつかが自己位置推定に用いる起動カメラとして選択され、前記起動カメラの選択結果に基づいて、前記複数の前記カメラのうちの前記起動カメラとされた前記カメラが起動状態とされて画像が撮影され、前記複数の前記カメラのうちの前記起動カメラとは異なる前記カメラの起動が停止される。
【発明の効果】
【００３１】
本技術の一側面によれば、より低い消費電力で確実に自己位置を推定することができる。
【００３２】
なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載された何れかの効果であってもよい。
【図面の簡単な説明】
【００３３】
【図１】本技術について説明する図である。
【図２】自己位置推定システムの構成例を示す図である。
【図３】自己位置推定処理を説明するフローチャートである。
【図４】自己位置推定処理を説明するフローチャートである。
【図５】自己位置推定処理を説明するフローチャートである。
【図６】自己位置推定処理を説明するフローチャートである。
【図７】自己位置推定処理を説明するフローチャートである。
【図８】自己位置推定処理を説明するフローチャートである。
【図９】自己位置推定処理を説明するフローチャートである。
【図１０】自己位置推定処理を説明するフローチャートである。
【図１１】自己位置推定処理を説明するフローチャートである。
【図１２】自己位置推定処理を説明するフローチャートである。
【図１３】自己位置推定処理を説明するフローチャートである。
【図１４】自己位置推定処理を説明するフローチャートである。
【図１５】自己位置推定処理を説明するフローチャートである。
【図１６】自己位置推定処理を説明するフローチャートである。
【図１７】自己位置推定処理を説明するフローチャートである。
【図１８】自己位置推定処理を説明するフローチャートである。
【図１９】自己位置推定システムの構成例を示す図である。
【図２０】コンピュータの構成例を示す図である。
【発明を実施するための形態】
【００３４】
以下、図面を参照して、本技術を適用した実施の形態について説明する。
【００３５】
〈第１の実施の形態〉
〈本技術について〉
本技術は、複数のカメラ、より詳細には複数のカメラまたはカメラセットを用いて自己位置推定を行う場合に、必要に応じていくつかのカメラの動作を一時的に停止させることで、消費電力を低く抑えつつ、十分な精度で確実に自己位置を推定することができるようにするものである。
【００３６】
例えば、図１の矢印Q11に示すように、自己位置推定の対象であるユーザ１１が４つのカメラ２１−１乃至カメラ２１−４を装着しており、これらのカメラ２１−１乃至カメラ２１−４により撮影された画像が用いられて、ユーザ１１の自己位置が推定されるとする。
【００３７】
なお、以下、カメラ２１−１乃至カメラ２１−４を特に区別する必要のない場合、単にカメラ２１とも称することとする。
【００３８】
この例では、ユーザ１１の前後左右の各方向がカメラ２１により撮影されるので、これらの４つのカメラ２１により、ユーザ１１の全周方向が観察されることになる。したがって、少なくとも何れかのカメラ２１により撮影された画像からは特徴点を検出することができ、十分な精度で確実にユーザ１１（カメラ２１）の自己位置を推定することができる。
【００３９】
しかし、上述したようにｎ個のカメラ２１を用いて自己位置推定を行う場合には、１つのカメラ２１を用いて自己位置推定を行う場合と比較して、カメラ２１の消費電力はｎ倍となってしまう。
【００４０】
そこで、本技術では、複数のカメラ２１のうちのいくつかのカメラ２１のみを起動させ、残りのカメラ２１は一時的に起動を停止させることで、カメラ２１の消費電力を低く抑えるとともに、十分な精度で確実に自己位置を推定することができるようにした。
【００４１】
具体的には、矢印Q11に示すように全てのカメラ２１が起動している状態で、各カメラ２１により画像（以下、撮影画像とも称する）が撮影され、得られた撮影画像、またはこれまでの自己位置推定の結果に基づいて、起動状態を維持するカメラ２１が選択される。すなわち、自己位置推定に用いるカメラ２１が選択される。
【００４２】
ここでは、説明を簡単にするために、撮影画像から検出された特徴点の数が最も多いカメラ２１が、起動状態が維持されるカメラ２１として選択されるものとする。
【００４３】
いま、矢印Q11に示すようにカメラ２１−１で得られた撮影画像からは２個の特徴点が検出され、カメラ２１−２で得られた撮影画像からは１６個の特徴点が検出され、カメラ２１−３で得られた撮影画像からは５個の特徴点が検出されたとする。また、カメラ２１−４で得られた撮影画像からは８個の特徴点が検出されたとする。
【００４４】
この場合、撮影画像から検出された特徴点の数が最も多いカメラ２１−２が起動状態が維持されるカメラ２１として選択され、残りのカメラ２１は一時的な起動停止状態、つまりスリープ状態とするカメラ２１として選択される。
【００４５】
そして、その選択に従って、矢印Q12に示すようにカメラ２１−２の起動状態が維持され、かつカメラ２１−１、カメラ２１−３、およびカメラ２１−４が一時的な起動停止状態（スリープ状態）とされる。この状態では、カメラ２１−２により撮影された撮影画像から特徴点が検出され、その検出結果に基づいて、ユーザ１１の自己位置が推定される。
【００４６】
なお、以下、矢印Q11に示すように起動状態とするカメラ２１を決定するめに、一時的に全カメラ２１を起動させた状態をカウントモードとも称することとする。また、以下、矢印Q12に示すように、いくつかのカメラ２１のみを起動させ、残りのカメラ２１の起動を一時的に停止させた状態をスリープモードとも称することとする。
【００４７】
この例では、スリープモードである場合には、１つのカメラ２１のみが起動された状態となっているので、実質的に１台分のカメラ２１を動作させる分の消費電力で自己位置推定を行うことができる。しかも、この場合、４つのカメラ２１のうち、最も自己位置推定を高精度に行うことができるカメラ２１が起動状態とされるので、撮影画像から特徴点が検出されなかったり、自己位置推定の精度が低下してしまうこともない。
【００４８】
このように１つのカメラ２１により自己位置推定を行っているスリープモードでは、ユーザ１１の移動等により、起動しているカメラ２１での自己位置推定の精度が低下してくることがある。すなわち、この例では、起動しているカメラ２１で得られた撮影画像から検出される特徴点の数が減少してしまうことがある。
【００４９】
そこで、本技術では、矢印Q13に示すように、撮影画像から検出される特徴点の数が所定の数以下になったときなど、所定のタイミングで、これまで起動停止状態（スリープ状態）とされていたカメラ２１を起動状態に復帰させ、スリープモード時に起動状態とするカメラ２１を選択し直す。
【００５０】
換言すれば、スリープモードからカウントモードへと状態遷移が行われ、一旦、全てのカメラ２１が起動された状態とされる。そして、再度、スリープモードとするときに起動させておくカメラ２１が選択され、その選択結果に応じて再びスリープモードへと移行される。
【００５１】
このように、所定のタイミングでスリープモードとカウントモードとを切り替えて、スリープモードのときには、複数のカメラ２１のうちのいくつかのカメラ２１のみで自己位置推定を行うようにすることで、より低い消費電力で確実に自己位置を推定することができる。
【００５２】
なお、ここではスリープモードのときに起動させるカメラ２１の数が１つである例について説明したが、起動させておくカメラ２１の数は、１つであっても複数であってもよい。また、スリープモードのときに起動させておくカメラ２１の数も可変とされてもよい。
【００５３】
また、以下、スリープモードであるときに一時的に起動停止状態とされるカメラ２１を、特に起動停止カメラとも称することとし、スリープモードであるときに起動させておくカメラ２１を起動カメラとも称することとする。
【００５４】
以上のように全カメラ２１のうちのいくつかのカメラ２１のみを選択的に起動させて自己位置推定する場合、起動カメラを選択する指標や、スリープモードからカウントモードへと移行するタイミングとして、いくつかの例が考えられる。
【００５５】
〈起動カメラの選択について〉
起動カメラを選択する指標としては、カウントモードの状態で各カメラ２１により撮影された撮影画像から得られる指標などが考えられる。具体的には、上述した撮影画像から検出される特徴点の数の他、例えば撮影画像上または実空間上における特徴点の分布や、自己位置推定に用いる登録されたランドマークに対応する撮影画像上の特徴点の数などが考えられる。
【００５６】
実空間上をカメラ２１を装着したユーザ１１が移動する場合、撮影画像から検出された特徴点に対応する実空間上の被写体位置が、カメラ２１からより遠い位置にあるほど、その後のより長い時間、その被写体がカメラ２１により観察されるはずである。つまり、より後のフレームの撮影画像からも、その被写体に対応する特徴点が検出されるはずである。
【００５７】
そこで、例えば実空間上における特徴点の分布に基づいて起動カメラを選択する例として、撮影画像から検出された特徴点に対して、その特徴点に対応する被写体と、カメラ２１との実空間上の距離に応じた重みを付けて、撮影画像から検出された特徴点の数に応じたスコアを求めるようにしてもよい。この場合、各カメラ２１のスコアに基づいて、起動カメラが選択される。
【００５８】
したがって、この例では、より多くの特徴点が、より長く観察されるカメラ２１が起動カメラとして選択されるので、スリープモードから次のカウントモードへと移行（遷移）するまでの時間をより長くし、効率よく自己位置を推定することができるようになる。
【００５９】
また、撮影画像上の特徴点の分布を指標として起動カメラを選択する場合、撮影画像をいくつかの領域にグリッド分割して、グリッドにより分割された領域（以下、分割領域と称する）単位で特徴点数をカウントし、そのカウント結果に基づいて起動カメラを選択することもできる。
【００６０】
一般的に、撮影画像全体に特徴点が均一に分布している方が、より高精度に自己位置を推定することができることから、撮影画像全体で、つまり各分割領域でまんべんなく特徴点が検出されたカメラ２１を起動カメラとして選択するようにすればよい。
【００６１】
また、撮影画像をグリッド分割する他、実空間をグリッド分割し、分割された各空間単位で撮影画像から検出された特徴点の数、つまり特徴点に対応する実空間上の被写体の部位の数をカウントし、そのカウント結果に基づいて起動カメラを選択してもよい。
【００６２】
さらに、例えばSLAM（Simultaneous Localization And Mapping）などのように、実空間に対応する三次元座標上で、事前に登録されたランドマークおよび逐次的に登録されたランドマークと、撮影画像から検出された特徴点との対応関係から自己位置を推定する手法が知られている。このような手法で自己位置推定を行う場合、ランドマークと現時刻での自己位置との位置関係に基づいて、起動カメラを選択するようにしてもよい。
【００６３】
ここでランドマークとは、撮影画像から特徴点が検出された、または撮影画像から特徴点が検出され得る実空間上の被写体の部位であり、自己位置推定時には、各ランドマークの位置を示す情報、つまり三次元座標系におけるランドマークの位置情報を示す三次元マップが用いられる。
【００６４】
具体的には、例えば撮影時刻の異なる撮影画像から検出された各特徴点の対応関係が求められ、それらの特徴点の対応関係、および特徴点とランドマークの対応関係等からユーザ１１（カメラ２１）の自己位置が推定により求められる。
【００６５】
この場合、現在の自己位置と各カメラ２１の画角とから、実空間におけるカメラ２１により観察される領域、つまりカメラ２１の撮影方向を特定することができる。また、各カメラ２１の撮影方向と、三次元マップに示される各ランドマークの位置とから、各カメラ２１で観察されるランドマークの数、つまり撮影画像から検出される、ランドマークに対応する特徴点の数を推定することができる。
【００６６】
そこで、現在の自己位置と三次元マップに示されるランドマークとの位置関係から、最も多くのランドマークが観察されるカメラ２１を起動カメラとして選択するようにしてもよい。そうすることで、ランドマークに対応する特徴点がより多く検出され、より高精度に自己位置を推定可能なカメラ２１を起動カメラとして選択することができる。この場合、起動カメラを選択するにあたり、特に撮影画像から特徴点を検出しなくてもよいため、スリープモードからカウントモードに移行する必要はない。つまり、常にスリープモードの状態で、必要に応じて起動カメラを切り替えながら動作することができる。
【００６７】
また、三次元マップを用いて自己位置を推定する場合、撮影画像から特徴点を検出するとともに、検出された特徴点のうち、登録されているランドマークに対応する特徴点を特定し、撮影画像内に含まれる、ランドマークに対応する特徴点の数が最も多いカメラ２１を起動カメラとしてもよい。この場合は、起動カメラを選択するためにカウントモードへと移行する必要がある。
【００６８】
〈スリープモードからカウントモードへの移行について〉
さらに、スリープモードからカウントモードへと移行するタイミングとして、以下の例が考えられる。
【００６９】
例えば、一定時間が経過するごとにスリープモードからカウントモードに移行することが考えられる。この場合、一定時間の計測には、撮影画像の撮影時刻を示すタイムスタンプを用いてもよいし、カウンタ等を用いるようにしてもよい。
【００７０】
また、例えば自己位置推定時のトラッキング点、つまりスリープモードである状態で得られた撮影画像から検出された、ランドマークに対応する特徴点の数や割り合いなどが一定値以下になったタイミングで、スリープモードからカウントモードに移行するようにしてもよい。
【００７１】
例えばランドマークに対応する特徴点の割り合いを用いる場合、基準となるフレームの撮影画像で得られたランドマークに対応する特徴点の数に対する、現フレームの撮影画像で得られたランドマークに対応する特徴点の数の割り合いが予め定められた値と比較される。
【００７２】
なお、ランドマークに対応する特徴点の数や割り合いだけでなく、スリープモードの状態のときに起動カメラで得られた撮影画像から検出された特徴点の数や割り合いなどが、基準とするフレームの撮影画像から検出された特徴点の数や割り合いに対して減少してきたタイミングで、スリープモードからカウントモードに移行するようにしてもよい。
【００７３】
また、自己位置の推定結果に基づいて、スリープモードからカウントモードへと移行するようにしてもよい。そのような場合、例えば特定の撮影画像のフレームなどの基準となる時刻における自己位置からのユーザ１１の動き量（移動距離）が一定量を超えた場合に、カウントモードへと移行すればよい。なお、この場合、ユーザ１１の動き量は、撮影画像上の動き量であってもよいし、実空間上の動き量であってもよい。
【００７４】
さらに、ジャイロセンサのようなユーザ１１の動き量を測定可能なセンサを用いて、ユーザ１１の動き量が一定値以上となったときにスリープモードからカウントモードへと移行するようにしてもよい。同様に、GPS（Global Positioning System）センサ等のユーザ１１の実空間上の位置を測定可能なセンサを用いて、ユーザ１１の所定位置からの移動距離が一定値以上となったときにスリープモードからカウントモードへと移行するようにしてもよい。
【００７５】
〈自己位置推定システムの構成例〉
次に、本技術を適用したより具体的な実施の形態について説明する。図２は、本技術を適用した自己位置推定システムの一実施の形態の構成例を示す図である。
【００７６】
図２に示す自己位置推定システムは、カメラ５１−１乃至カメラ５１−Ｋ、および画像処理装置５２を有している。なお、ここでは自己位置推定システムが三次元マップを利用して自己位置を推定する例について説明するが、他のどのような手法により自己位置を推定するようにしてもよい。
【００７７】
カメラ５１−１乃至カメラ５１−Ｋは、図１に示したカメラ２１に対応するカメラであり、ユーザ等の自己位置推定の対象に取り付けられている。なお、以下、カメラ５１−１乃至カメラ５１−Ｋを特に区別する必要のない場合、単にカメラ５１とも称することとする。また、ここでは自己位置推定の対象は、例えばカメラ５１と画像処理装置５２とからなるウェアラブルデバイスを装着するユーザであるものとする。
【００７８】
各カメラ５１は、例えば球面上や円周上に等間隔で並べられて配置されるなど、実空間上における自己位置推定対象であるユーザの周囲の全域または略全域がカメラ５１により観察可能となるように配置される。また、各カメラ５１は、有線または無線により画像処理装置５２に接続されている。
【００７９】
カメラ５１は、ユーザの周囲の領域を被写体として撮影し、その結果得られた撮影画像を画像処理装置５２に供給する。また、カメラ５１は、画像処理装置５２の指示に応じて、起動停止状態（スリープ状態）となったり、起動停止状態から起動状態に復帰したりする。
【００８０】
なお、カメラ５１は、単眼カメラであってもよいし、左右の２つのカメラからなるステレオカメラ等のカメラセットであってもよい。以下では、カメラ５１が左カメラと右カメラとからなるステレオカメラであるものとして説明を続ける。特に、以下ではカメラ５１を構成する左カメラにより得られた撮影画像を左撮影画像とも称することとし、カメラ５１を構成する右カメラにより得られた撮影画像を右撮影画像とも称することとする。
【００８１】
画像処理装置５２は、各カメラ５１を制御して、カメラ５１を起動停止状態としたり、起動状態としたりするとともに、カメラ５１から供給された撮影画像に基づいて、ユーザの自己位置を推定し、その推定結果を出力する。
【００８２】
画像処理装置５２は、自己位置推定部６１、起動判定部６２、および起動切替部６３を有している。
【００８３】
自己位置推定部６１は、カメラ５１から供給された撮影画像に基づいて、ユーザの自己位置を推定する。自己位置推定部６１は、特徴点検出部７１、ランドマーク推定部７２、および自己位置算出部７３を有している。
【００８４】
特徴点検出部７１は、カメラ５１から供給された撮影画像から特徴点を検出し、その検出結果をランドマーク推定部７２に供給する。
【００８５】
ランドマーク推定部７２は、自己位置算出部７３による自己位置の推定結果を参照しながら、特徴点検出部７１から供給された特徴点の検出結果に基づいて三次元マップを更新する。また、ランドマーク推定部７２は、更新された三次元マップと、特徴点検出部７１から供給された特徴点の検出結果とを自己位置算出部７３に供給する。
【００８６】
自己位置算出部７３は、ランドマーク推定部７２から供給された三次元マップと特徴点の検出結果とに基づいて、推定によりユーザの自己位置を算出し、その算出結果を後段のブロックに出力する。
【００８７】
また、自己位置推定部６１は、特徴点の検出結果や、三次元マップにより示されるランドマーク位置、自己位置の推定結果など、必要に応じて各種の情報を起動判定部６２に供給する。
【００８８】
起動判定部６２は、自己位置推定部６１から供給された情報に基づいて、自己位置推定システムの状態をカウントモードまたはスリープモードに遷移（移行）させる。また、起動判定部６２は、自己位置推定部６１から供給された情報に基づいて、カウントモードへと移行したタイミングで、自己位置推定に用いる起動カメラを選択し、その選択結果を起動切替部６３に供給する。
【００８９】
起動切替部６３は、起動判定部６２から供給された起動カメラの選択結果や、カメラ５１の起動指示に基づいてカメラ５１の起動や動作を制御する。すなわち、起動切替部６３は、カメラ５１を起動状態とさせて撮影画像を撮影させたり、カメラ５１をスリープ（起動停止）させたりする。
【００９０】
画像処理装置５２に設けられた起動判定部６２および起動切替部６３は、自己位置推定に用いる起動カメラを選択し、その選択結果に基づいてカメラ５１の起動を制御する制御装置として機能する。なお、ここでは画像処理装置５２に起動判定部６２および起動切替部６３と、自己位置推定部６１とが設けられる構成となっているが、起動判定部６２および起動切替部６３と、自己位置推定部６１とは異なる装置に設けられていてもよい。
【００９１】
〈自己位置推定処理の説明〉
続いて、図２に示した自己位置推定システムの動作について説明する。
【００９２】
自己位置推定システムは、ユーザの自己位置の推定開始が指示されると、自己位置推定処理を行って、ユーザの自己位置の推定結果を出力する。以下、図３のフローチャートを参照して、自己位置推定システムによる自己位置推定処理について説明する。
【００９３】
ステップＳ１１において、起動判定部６２は、カメラ５１の起動状況に基づいてスリープモードであるか否かを判定する。
【００９４】
ステップＳ１１においてスリープモードであると判定された場合、処理はステップＳ１２へと進む。
【００９５】
ステップＳ１２において、起動判定部６２は、カメラ５１で得られる撮影画像の撮影時刻を示すタイムスタンプtと、保持している基準となる時刻を示す基準タイムスタンプtkとの差t-tkが所定の閾値α未満であるか否か、すなわちt-tk<αであるか否かを判定する。
【００９６】
起動判定部６２は、最後にカウントモードからスリープモードへと移行（遷移）したときの撮影画像のタイムスタンプtを、基準タイムスタンプtkとして保持している。
【００９７】
ステップＳ１２の処理では、起動判定部６２は起動切替部６３を介してカメラ５１から、現時刻を示すタイムスタンプtを取得し、取得したタイムスタンプtと、保持している基準タイムスタンプtkとを比較して、t-tk<αであるかを判定する。
【００９８】
したがって、この処理では、最後にカウントモードからスリープモードへと移行してから、つまりスリープモードとなってから、所定の時間αだけ経過したか否かが判定されることになる。
【００９９】
なお、ここでは撮影画像のタイムスタンプtを利用して、スリープモードとなってから所定時間が経過したかを特定する例について説明するが、その他、起動判定部６２自身が時刻を管理するようにしたり、他の時刻情報を取得したりするようにしてもよい。例えば起動判定部６２が、スリープモードとなった時点で時間のカウントを開始し、所定時間が経過したかを特定するようにしてもよい。
【０１００】
ステップＳ１２においてt-tk<αでない、つまりスリープモードとなってから、所定の時間が経過したと判定された場合、起動判定部６２は起動切替部６３に全カメラ５１の起動を指示し、処理はステップＳ１３へと進む。
【０１０１】
ステップＳ１３において、起動切替部６３は、起動判定部６２の指示に応じて全カメラ５１を起動させる。これにより、これまでスリープ状態であったカメラ５１が復帰し、全てのカメラ５１が起動している状態となる。すると各カメラ５１は、周囲の被写体を撮影して、その結果得られた撮影画像を特徴点検出部７１へと供給する。
【０１０２】
ステップＳ１４において、起動判定部６２は自己位置推定システムの状態を、スリープモードからカウントモードへと移行させる。そして、その後、処理はステップＳ１１に戻り、上述した処理が繰り返し行われる。
【０１０３】
一方、ステップＳ１２において、t-tk<αである、すなわちスリープモードとなってから、まだ所定の時間が経過していないと判定された場合、ステップＳ１５において、起動判定部６２はスリープモードの状態を維持する。
【０１０４】
この場合、スリープモードでの自己位置推定が継続して行われることになる。ステップＳ１５の処理が行われると、その後、処理はステップＳ２５へと進む。
【０１０５】
また、ステップＳ１１において、スリープモードではないと判定された場合、すなわちカウントモードである場合、処理はステップＳ１６へと進む。
【０１０６】
ステップＳ１６において、起動判定部６２は、処理対象として処理したカメラ５１の数を示すカウンタiの値をカウンタi＝0とする。すなわち、カウンタiの値を0にリセットする。ここで、カウンタiの値は、処理対象のカメラ５１を特定するカメラインデックスとしても用いられることとする。例えばカウンタi＝0の状態で処理対象とされているカメラ５１は、カメラインデックスi＝0であるカメラ５１であるとされる。
【０１０７】
ステップＳ１７において、起動判定部６２は全てのカメラ５１について処理を行ったか否かを判定する。例えば図２に示す例では、カメラ５１の数はK個となっているので、カウンタiの値がK未満である場合、つまりi<Kである場合、まだ全てのカメラ５１を処理対象として処理を行っていないと判定される。
【０１０８】
ステップＳ１７において、全てのカメラ５１について処理を行っていないと判定された場合、処理はステップＳ１８へと進む。
【０１０９】
ステップＳ１８において、特徴点検出部７１は、カウンタi、すなわちカメラインデックスiの値により特定される処理対象のカメラ５１から供給された撮影画像から、特徴点を検出する。ここで、ステップＳ１８で特徴点の検出対象とされる撮影画像は、カウントモードの状態で処理対象のカメラ５１により撮影されたものである。
【０１１０】
この例では、カメラ５１はステレオカメラであるので、処理対象のカメラ５１から特徴点検出部７１には撮影画像として左撮影画像と右撮影画像が供給される。特徴点検出部７１は、例えばハリスコーナー検出やSIFT(Scale Invariant Feature Transform)等のコーナー検出アルゴリズムにより、処理対象のカメラ５１から供給された左撮影画像または右撮影画像の何れか一方から特徴点を検出する。
【０１１１】
ステップＳ１９において、起動判定部６２は、処理対象のカメラ５１で得られた撮影画像、より詳細には左撮影画像または右撮影画像の何れかから検出された特徴点の数を示す特徴点数nと、これまで処理対象としたカメラ５１について得られた特徴点数nの最大値である特徴点数nmaxとを比較し、n>nmaxであるか否かを判定する。すなわち、処理対象のカメラ５１について得られた特徴点数nが、最後にカウントモードとなった後、これまでに得られている特徴点数nのなかの最大値である特徴点数nmaxよりも大きいか否かが判定される。
【０１１２】
また、起動判定部６２は特徴点数nmaxが得られたときのカウンタiの値を、その特徴点数nmaxが得られたカメラ５１を特定するカメラインデックスimaxの値として保持しているものとする。なお、これらの特徴点数nmaxとカメラインデックスimaxの値は、カウンタiがリセットされるタイミングでリセットされる。
【０１１３】
ステップＳ１９において、n>nmaxでないと判定された場合、ステップＳ２０の処理はスキップされて、処理はステップＳ２１へと進む。
【０１１４】
これに対して、ステップＳ１９においてn>nmaxであると判定された場合、ステップＳ２０において、起動判定部６２はnmax＝nおよびimax＝iとする。
【０１１５】
すなわち、起動判定部６２は保持している特徴点数nmaxの値が、処理対象のカメラ５１について得られた特徴点数nの値となるように特徴点数nmaxを更新する。また、起動判定部６２は保持しているカメラインデックスimaxの値が、処理対象のカメラ５１を示すカメラインデックスi、つまり現時点におけるカウンタiの値となるようにカメラインデックスimaxを更新する。
【０１１６】
このような処理が全カメラ５１について行われると、その時点におけるカメラインデックスimaxの値は、現時点において最も撮影画像から検出された特徴点の数が多かったカメラ５１を示すカメラインデックスiの値となる。
【０１１７】
同様に特徴点数nmaxの値は、カメラインデックスimaxにより示されるカメラ５１について得られた特徴点数nの値、つまり現時点における撮影画像から検出された特徴点の数の最大値となる。
【０１１８】
ステップＳ２０において特徴点数nmaxおよびカメラインデックスimaxが更新されると、その後、処理はステップＳ２１へと進む。
【０１１９】
ステップＳ２０において特徴点数nmaxおよびカメラインデックスimaxが更新されたか、またはステップＳ１９においてn>nmaxでないと判定されると、ステップＳ２１において、起動判定部６２は保持しているカウンタiの値を１だけインクリメントする。そして、その後、処理はステップＳ１７に戻り、上述した処理が繰り返し行われる。
【０１２０】
また、ステップＳ１７において、全てのカメラ５１について処理を行ったと判定された場合、つまりカウンタi≧Kであり、最終的な特徴点数nmaxおよびカメラインデックスimaxが得られた場合、処理はステップＳ２２へと進む。
【０１２１】
ステップＳ２２において、起動判定部６２は自己位置推定システムの状態を、カウントモードからスリープモードへと移行させる。
【０１２２】
そして、ステップＳ２３において、起動判定部６２は基準タイムスタンプtk＝タイムスタンプtとする。
【０１２３】
すなわち、起動判定部６２は、起動切替部６３を介してカメラ５１から、現時刻を示すタイムスタンプtを取得し、保持している基準タイムスタンプtkの値が、新たに取得したタイムスタンプtの値となるように、基準タイムスタンプtkを更新する。これにより、カウントモードからスリープモードへと移行した時点におけるタイムスタンプtが、新たな基準タイムスタンプtkとされることになる。
【０１２４】
また、起動判定部６２は、スリープモードとなると、カメラインデックスimaxにより示されるカメラ５１を、スリープモード時に起動させる起動カメラとして選択し、その選択結果を起動切替部６３に供給する。
【０１２５】
ステップＳ２４において、起動切替部６３は、起動判定部６２から供給された起動カメラの選択結果に基づいて各カメラ５１を制御して、カメラインデックスimaxにより示されるカメラ５１のみを起動させたままとし、残りのカメラ５１の起動を一時的に停止させる。また、起動切替部６３は起動カメラとしたカメラ５１を制御して撮影画像を撮影させる。
【０１２６】
このような処理によれば、カウントモードの状態のときに撮影された撮影画像から特徴点が検出され、その結果、最も多くの特徴点が検出された１つのカメラ５１、つまり最も高い精度でより確実に自己位置を推定できるであろうカメラ５１が起動カメラとされ、他のカメラ５１は起動停止カメラとされることになる。これにより、起動カメラによって十分な精度で確実に自己位置を推定しつつ、他のカメラ５１の起動を停止させて消費電力を低く抑えることができるようになる。
【０１２７】
ステップＳ２４において起動カメラの選択結果に応じてカメラ５１の起動制御が行われると、その後、処理はステップＳ２５へと進む。
【０１２８】
ステップＳ２４においてカメラ５１の起動制御が行われたか、またはステップＳ１５においてスリープモードが維持されると、ステップＳ２５において、起動カメラとされたカメラ５１は、周囲の被写体を撮影し、その結果得られた撮影画像を特徴点検出部７１に供給する。このとき、起動停止カメラは、撮影を行わずに起動停止状態となっている。
【０１２９】
ステップＳ２６において、特徴点検出部７１は、例えばハリスコーナー検出やSIFT等のコーナー検出アルゴリズムにより、起動カメラとされたカメラ５１から撮影画像として供給された左撮影画像および右撮影画像から特徴点を検出し、その検出結果をランドマーク推定部７２に供給する。
【０１３０】
ステップＳ２７において、ランドマーク推定部７２は、最後に行われた自己位置推定の結果、その自己位置推定に用いられた撮影画像についての特徴点検出結果、およびカメラ５１の眼間距離（ベースラインの長さ）に基づいてランドマーク推定を行う。
【０１３１】
具体的には、例えばランドマーク推定部７２は、最後に行われた自己位置推定の結果と、その時の特徴点検出結果とを自己位置算出部７３から取得する。そして、ランドマーク推定部７２は、最後に行われた自己位置推定に用いられた撮影画像についての特徴点検出結果に基づいて、左撮影画像上の特徴点と、右撮影画像上の特徴点との対応関係を求める視差マッチングを行う。
【０１３２】
視差マッチングでは、互いに対応する特徴点、すなわち被写体の同一部位から抽出された左撮影画像上の特徴点と右撮影画像上の特徴点との位置関係から、撮影画像上における特徴点の視差が求まる。ここで、視差が求められる特徴点は、ランドマーク推定部７２が保持している三次元マップに示される各ランドマークに対応する特徴点である。
【０１３３】
ランドマーク推定部７２は、このようにして得られたランドマークに対応する特徴点の視差と、カメラ５１を構成する左カメラと右カメラの間の距離である眼間距離と、最後に行われた自己位置推定の結果とから、実空間上（三次元座標系）におけるランドマークの位置を求める。そして、ランドマーク推定部７２は、求められたランドマークの位置に基づいて、保持している三次元マップを更新する。
【０１３４】
なお、ここで行われる三次元マップの更新には、最後に行われた自己位置推定の結果と、その時の特徴点検出結果のみが用いられ、直前のステップＳ２６の処理で得られた、最新の撮影画像からの特徴点の検出結果は用いられない。そのため、ステップＳ２７で行われるランドマーク推定の処理は、最後に自己位置推定が行われた時点で実行されるようにしてもよい。
【０１３５】
ランドマーク推定部７２は、このようにして更新された三次元マップと、今回のステップＳ２６の結果として特徴点検出部７１から供給された特徴点の検出結果とを自己位置算出部７３に供給する。
【０１３６】
ステップＳ２８において、自己位置算出部７３は、ランドマーク推定部７２から供給された特徴点の検出結果および三次元マップと、最後に行われた自己位置推定の結果とに基づいて、自己位置推定を行う。
【０１３７】
例えば自己位置算出部７３は、最後に自己位置推定が行われたときの撮影画像上における特徴点の移動量、またはそのときの実空間上におけるカメラ５１の移動量に基づいて、今回、自己位置推定を行うときのマッチング範囲を定める。
【０１３８】
具体的には、自己位置算出部７３は、今回得られた撮影画像から、前回得られた撮影画像上のランドマークに対応する特徴点に対応する特徴点を探索するにあたり、前回、自己位置推定が行われたときの特徴点の移動量に基づいて、撮影画像上の探索対象とすべき領域、つまり対応する特徴点が存在するであろう領域をマッチング範囲として定める。
【０１３９】
自己位置算出部７３は、ランドマーク推定部７２から供給された特徴点の検出結果に基づいて、今回得られた撮影画像のマッチング範囲を対象とし、そのマッチング範囲に含まれる特徴点と、前回、自己位置推定が行われたときの撮影画像から検出された特徴点との対応関係を求めるマッチング処理を行う。これにより、前回得られた撮影画像上の、ランドマークに対応する特徴点と、その特徴点と同じ部位から抽出された、今回得られた撮影画像上の特徴点との対応関係が求まる。なお、マッチング処理は、左撮影画像または右撮影画像の何れか一方のみ行われてもよいし、それらの両方の撮影画像について行われてもよい。
【０１４０】
自己位置算出部７３は、このようにして得られたランドマークに対応する特徴点の対応関係と、更新された三次元マップにより示される各ランドマークの位置とに基づいて、現時刻におけるユーザの位置および姿勢を自己位置として算出する。
【０１４１】
ここで、ユーザの位置および姿勢とは、実空間上、つまり三次元座標系におけるユーザの位置、およびユーザの向いている方向である。より詳細には、ユーザの向いている方向、つまりユーザの姿勢は、例えばユーザの頭部のヨー角、ロール角、およびピッチ角により表現される。
【０１４２】
このようにして自己位置推定の結果として、現時刻でのユーザの自己位置が得られると、自己位置算出部７３は、自己位置推定の結果を後段に出力する。そして、その後、処理はステップＳ１１に戻り、上述した処理が繰り返し行われる。また、ユーザの自己位置の推定終了が指示されると、自己位置推定処理は終了する。
【０１４３】
以上のようにして、自己位置推定システムは、スリープモードとなってから所定時間が経過するとカウントモードへと移行して起動カメラを選択し直し、再びスリープモードへと移行する。このように一定の時間間隔で起動カメラを選択し直して、再度、スリープモードへと移行することで、より低い消費電力で自己位置推定を行うことができる。
【０１４４】
特に、一定の時間間隔で起動カメラを選択し直し、最も多くの特徴点を検出できるカメラ５１を起動カメラとして選択することで、少ない消費電力でも、十分な精度で確実に自己位置を推定することができる。
【０１４５】
なお、ここではカメラ５１がステレオカメラである場合を例として説明したが、カメラ５１で得られた撮影画像に基づいて行われる自己位置推定の方法は、どのような方法であってもよい。例えばカメラ５１は単眼カメラであってもよく、そのような場合でも、自己位置推定部６１では、SLAM等により自己位置推定を行うことができる。
【０１４６】
自己位置推定時には、例えば自己位置推定部６１は、最後に自己位置推定が行われたときの実空間（三次元座標系）上におけるユーザの移動量に基づいて、現時刻におけるユーザのおおよその自己位置を推定し、撮影画像上におけるマッチング範囲を求める。
【０１４７】
そして、自己位置推定部６１は、今回得られた撮影画像におけるマッチング範囲を対象として、そのマッチング範囲内にある特徴点と、前回得られた撮影画像における、ランドマークに対応する特徴点との対応関係をマッチング処理により求める。このマッチング処理により、撮影画像上におけるランドマークに対応する特徴点の移動量が求まる。
【０１４８】
さらに、自己位置推定部６１は、ランドマークに対応する特徴点の撮影画像上の移動量と、前回の自己位置推定結果により示される自己位置とから、現時刻の最終的な自己位置と、実空間におけるランドマーク位置とを算出する。このとき、自己位置推定部６１は、求められたランドマーク位置に基づいて、適宜、三次元マップを更新する。
【０１４９】
〈第１の実施の形態の変形例１〉
〈自己位置推定処理の説明〉
また、以上においては、スリープモードで起動する起動カメラとして１つのカメラ５１を選択する例について説明したが、１または複数のカメラ５１が起動カメラとして選択されるようにしてもよい。
【０１５０】
以下、図４のフローチャートを参照して、そのような場合に自己位置推定システムにより行われる自己位置推定処理について説明する。なお、ステップＳ５１乃至ステップＳ５８の処理は、図３のステップＳ１１乃至ステップＳ１８の処理と同様であるので、その説明は省略する。
【０１５１】
ステップＳ５８において撮影画像から特徴点が検出されると、ステップＳ５９において、起動判定部６２は、処理対象のカメラ５１について得られた特徴点数nと、予め定められた閾値nthとを比較してn>nthであるか否かを判定する。
【０１５２】
ここで、閾値nthは、例えば十分な精度で自己位置推定を行うのに必要とされる特徴点数などとされる。したがって、撮影画像から閾値nthよりも多い数の特徴点が検出されたカメラ５１は、十分な精度で自己位置推定を行うことができるカメラ５１、つまり起動カメラとすべきカメラ５１であるということができる。
【０１５３】
そこで、ステップＳ５９においてn>nthであると判定された場合、起動判定部６２は処理対象のカメラ５１を起動カメラとして選択し、その選択結果を起動切替部６３に供給して処理はステップＳ６０に進む。
【０１５４】
なお、ここでは特徴点数が閾値より大きいカメラ５１が起動カメラとされるが、その他、例えば特徴点数が閾値より大きいカメラ５１のなかから、特徴点数が多い順に予め定められた数のカメラ５１が起動カメラとして選択されるようにしてもよい。
【０１５５】
ステップＳ６０において、起動切替部６３は、起動判定部６２から供給された起動カメラの選択結果に基づいて、処理対象のカメラ５１を起動させ、処理はステップＳ６２へと進む。すなわち、処理対象のカメラ５１が起動されたままの状態とされる。
【０１５６】
これに対して、ステップＳ５９においてn>nthでない、つまり処理対象のカメラ５１について求めた特徴点数nが閾値nth以下である場合、起動判定部６２は処理対象のカメラ５１を起動停止カメラとして選択し、その選択結果を起動切替部６３に供給して処理はステップＳ６１に進む。
【０１５７】
ステップＳ６１において、起動切替部６３は、起動判定部６２から供給された起動停止カメラの選択結果に基づいて、処理対象のカメラ５１の起動を一時的に停止させ、処理はステップＳ６２へと進む。すなわち、処理対象のカメラ５１がスリープ状態とされる。
【０１５８】
ステップＳ６０においてカメラ５１が起動されたか、またはステップＳ６１においてカメラ５１の起動が停止されると、ステップＳ６２において、起動判定部６２は保持しているカウンタiの値を１だけインクリメントする。そして、その後、処理はステップＳ５７に戻り、上述した処理が繰り返し行われる。
【０１５９】
また、ステップＳ５７において、全てのカメラ５１について処理を行ったと判定された場合、ステップＳ６３において、起動判定部６２は自己位置推定システムの状態を、カウントモードからスリープモードへと移行させる。
【０１６０】
そして、ステップＳ６４において、起動判定部６２は基準タイムスタンプtk＝タイムスタンプtとする。すなわち、ステップＳ６４では、図３のステップＳ２３と同様の処理が行われ、基準タイムスタンプtkが更新される。
【０１６１】
ステップＳ６４で基準タイムスタンプtkが更新されたか、またはステップＳ５５でスリープモードが維持されると、その後、ステップＳ６５乃至ステップＳ６８の処理が行われて、処理はステップＳ５１に戻り、上述した処理が繰り返し行われる。また、ユーザの自己位置の推定終了が指示されると、自己位置推定処理は終了する。
【０１６２】
なお、ステップＳ６５乃至ステップＳ６８の処理は、図３のステップＳ２５乃至ステップＳ２８の処理と同様であるので、その説明は省略する。
【０１６３】
但し、この例では起動カメラが複数あることもあり、起動カメラとされたカメラ５１ごとに自己位置推定結果が得られることになる。この場合、例えば自己位置算出部７３は、各カメラ５１について得られた自己位置の平均値など、それらの自己位置に基づいて得られた１つの自己位置を、最終的な自己位置とする。また、起動カメラごとに自己位置を求めてから最終的な自己位置を算出するのではなく、自己位置算出の過程で、各起動カメラにおける計算結果が１つに統合されるようにしてもよい。
【０１６４】
以上のようにして、自己位置推定システムは、スリープモードとなってから所定時間が経過するとカウントモードへと移行して起動カメラを選択し直し、再びスリープモードへと移行する。これにより、より低い消費電力で自己位置推定を行うことができる。
【０１６５】
特に、一定の時間間隔で起動カメラを選択し直し、閾値より多い数の特徴点を検出できるカメラ５１を起動カメラとして選択することで、少ない消費電力でも、十分な精度で確実に自己位置を推定することができる。
【０１６６】
〈第１の実施の形態の変形例２〉
〈自己位置推定処理の説明〉
また、以上においては撮影画像から検出される特徴点の数に基づいて起動カメラを選択する例について説明したが、撮影画全体から均一に、かつより多くの特徴点が検出される１つのカメラ５１を起動カメラとして選択するようにしてもよい。
【０１６７】
以下、図５のフローチャートを参照して、そのような場合に自己位置推定システムにより行われる自己位置推定処理について説明する。なお、ステップＳ９１乃至ステップＳ９８の処理は、図３のステップＳ１１乃至ステップＳ１８の処理と同様であるので、その説明は省略する。
【０１６８】
ステップＳ９９において起動判定部６２は、特徴点検出部７１からステップＳ９８における特徴点の検出結果を取得し、その検出結果に基づいて特徴点面積Sを求める。
【０１６９】
例えば、起動判定部６２は、処理対象のカメラ５１で得られた撮影画像について、その撮影画像から検出された特徴点を中心とする所定の大きさの矩形領域を特徴領域とする。さらに、起動判定部６２は、特徴点のペアごとに、それらの２つの特徴領域同士が重なり合っている部分の面積を算出し、算出された面積の総和を、全特徴点の特徴領域の面積の総和から減算して得られる値を特徴点面積Sとする。
【０１７０】
このようにして求められる特徴点面積Sは、撮影画像から、より多くの特徴点が検出されるほど大きくなる。また、撮影画像の各領域から特徴点が均一に検出されるほど、特徴領域同士が重なり合う領域が小さくなり、その結果、特徴点面積Sは大きくなる。
【０１７１】
したがって、複数のカメラ５１のうち、最も特徴点面積Sが大きいカメラ５１が、撮影画像全体から均一に、かつより多くの特徴点が検出される、最も自己位置推定に用いるのに適したカメラ５１であるということができる。
【０１７２】
このように特徴点面積Sに基づいて起動カメラを選択することは、カウントモードの状態で得られた撮影画像上の特徴点の分布に基づいて起動カメラを選択することであるということができる。
【０１７３】
ステップＳ１００において、起動判定部６２は、処理対象のカメラ５１について得られた特徴点面積Sと、最後にカウントモードとなった後、これまで処理対象としたカメラ５１について得られた特徴点面積Sの最大値である特徴点面積Smaxとを比較し、S>Smaxであるか否かを判定する。すなわち、処理対象のカメラ５１について得られた特徴点面積Sが、これまで得られている特徴点面積Sのなかの最大値である特徴点面積Smaxよりも大きいか否かが判定される。
【０１７４】
また、起動判定部６２は特徴点面積Smaxが得られたときのカウンタiの値を、その特徴点面積Smaxが得られたカメラ５１を特定するカメラインデックスimaxの値として保持しているものとする。
【０１７５】
ステップＳ１００において、S>Smaxでないと判定された場合、ステップＳ１０１の処理はスキップされて、処理はステップＳ１０２へと進む。
【０１７６】
これに対して、ステップＳ１００においてS>Smaxであると判定された場合、ステップＳ１０１において、起動判定部６２はSmax＝Sおよびimax＝iとする。
【０１７７】
すなわち、起動判定部６２は保持している特徴点面積Smaxの値が、処理対象のカメラ５１について得られた特徴点面積Sの値となるように特徴点面積Smaxを更新する。また、起動判定部６２は保持しているカメラインデックスimaxの値が、処理対象のカメラ５１を示すカメラインデックスi、つまり現時点におけるカウンタiの値となるようにカメラインデックスimaxを更新する。
【０１７８】
このような処理が全カメラ５１について行われると、その時点におけるカメラインデックスimaxの値は、現時点において最も特徴点面積Sが大きいカメラ５１を示すカメラインデックスiの値となる。
【０１７９】
同様に特徴点面積Smaxの値は、カメラインデックスimaxにより示されるカメラ５１について得られた特徴点面積Sの値、つまり現時点における特徴点面積Sの最大値となる。
【０１８０】
ステップＳ１０１において特徴点面積Smaxおよびカメラインデックスimaxが更新されると、その後、処理はステップＳ１０２へと進む。
【０１８１】
ステップＳ１０１において特徴点面積Smaxおよびカメラインデックスimaxが更新されたか、またはステップＳ１００においてS>Smaxでないと判定されると、ステップＳ１０２において、起動判定部６２は保持しているカウンタiの値を１だけインクリメントする。そして、その後、処理はステップＳ９７に戻り、上述した処理が繰り返し行われる。
【０１８２】
また、ステップＳ９７において、全てのカメラ５１について処理を行ったと判定された場合、ステップＳ１０３において、起動判定部６２は自己位置推定システムの状態を、カウントモードからスリープモードへと移行させる。
【０１８３】
そして、ステップＳ１０４において、起動判定部６２は基準タイムスタンプtk＝タイムスタンプtとする。すなわち、ステップＳ１０４では、図３のステップＳ２３と同様の処理が行われ、基準タイムスタンプtkが更新される。
【０１８４】
また、起動判定部６２は、スリープモードとなると、カメラインデックスimaxにより示されるカメラ５１を、スリープモード時に起動させる起動カメラとして選択し、その選択結果を起動切替部６３に供給する。
【０１８５】
ステップＳ１０５において、起動切替部６３は、起動判定部６２から供給された起動カメラの選択結果に基づいて、カメラインデックスimaxにより示されるカメラ５１のみを起動させたままとし、残りのカメラ５１の起動を一時的に停止させる。
【０１８６】
このような処理によれば、自己位置推定に最も適したカメラ５１が起動カメラとされ、他のカメラ５１は起動停止カメラとされることになる。その結果、起動カメラによって十分な精度で確実に自己位置を推定しつつ、他のカメラ５１の起動を停止させて消費電力を低く抑えることができるようになる。
【０１８７】
ステップＳ１０５でカメラ５１の起動制御が行われたか、またはステップＳ９５でスリープモードが維持されると、その後、ステップＳ１０６乃至ステップＳ１０９の処理が行われて、処理はステップＳ９１に戻り、上述した処理が繰り返し行われる。また、ユーザの自己位置の推定終了が指示されると、自己位置推定処理は終了する。
【０１８８】
なお、ステップＳ１０６乃至ステップＳ１０９の処理は、図３のステップＳ２５乃至ステップＳ２８の処理と同様であるので、その説明は省略する。
【０１８９】
以上のようにして、自己位置推定システムは、スリープモードとなってから所定時間が経過するとカウントモードへと移行して起動カメラを選択し直し、再びスリープモードへと移行する。これにより、より低い消費電力で自己位置推定を行うことができる。
【０１９０】
特に、一定の時間間隔で起動カメラを選択し直し、最も多くかつ均一に特徴点を検出できるカメラ５１を起動カメラとして選択することで、少ない消費電力でも、十分な精度で確実に自己位置を推定することができる。
【０１９１】
〈第１の実施の形態の変形例３〉
〈自己位置推定処理の説明〉
また、起動カメラを選択するにあたり、最も多くのランドマークを観測できるカメラ５１を起動カメラとするようにしてもよい。
【０１９２】
以下、図６のフローチャートを参照して、そのような場合に自己位置推定システムにより行われる自己位置推定処理について説明する。なお、ステップＳ１３１乃至ステップＳ１３７の処理は、図３のステップＳ１１乃至ステップＳ１７の処理と同様であるので、その説明は省略する。
【０１９３】
ステップＳ１３７において全てのカメラ５１について処理を行っていないと判定された場合、処理はステップＳ１３８へと進む。
【０１９４】
ステップＳ１３８において、自己位置推定部６１は、カウンタi、すなわちカメラインデックスiの値により特定される処理対象のカメラ５１から供給された撮影画像に基づいて自己位置推定を行う。この撮影画像は、カウントモードの状態で撮影されて得られたものである。
【０１９５】
例えば自己位置推定部６１の特徴点検出部７１は、処理対象のカメラ５１から供給された撮影画像から特徴点を検出し、その検出結果をランドマーク推定部７２を介して自己位置算出部７３に供給する。また、ランドマーク推定部７２は、必要に応じて図３のステップＳ２７の処理と同様の処理を行い、保持している三次元マップを更新する。
【０１９６】
自己位置算出部７３は、最後に自己位置推定が行われたときの撮影画像からの特徴点の検出結果と、ランドマーク推定部７２から供給された、カメラインデックスiのカメラ５１で得られた撮影画像についての特徴点の検出結果とに基づいて、それらの撮影画像から検出された特徴点の対応関係を求める。
【０１９７】
そして自己位置算出部７３は、このようにして得られた特徴点の対応関係と、更新された三次元マップとに基づいて、現時刻におけるユーザの位置および姿勢を自己位置として算出する。
【０１９８】
ステップＳ１３９において、自己位置算出部７３は、ステップＳ１３８の処理で求めた現時刻における自己位置と、三次元マップとに基づいて、カメラインデックスiである処理対象のカメラ５１で得られた撮影画像で観測されるランドマークの数を視野内ランドマーク数mとして求める。すなわち、撮影画像に含まれる、三次元マップに示されるランドマークに対応する特徴点の数が視野内ランドマーク数mとされる。
【０１９９】
自己位置推定部６１は、このようにして得られた視野内ランドマーク数mを、起動判定部６２に供給する。
【０２００】
一般的に、カメラ５１について得られた視野内ランドマーク数mが多いほど、そのカメラ５１を用いて自己位置推定を行なえば、より高精度かつ確実に自己位置を推定することができるはずである。そこで、起動判定部６２では、最も視野内ランドマーク数mが多いカメラ５１が起動カメラとして選択されるように処理が行われる。
【０２０１】
ステップＳ１４０において起動判定部６２は、自己位置推定部６１から供給された視野内ランドマーク数mと、最後にカウントモードとなった後、これまで処理対象としたカメラ５１について得られた視野内ランドマーク数mの最大値である視野内ランドマーク数mmaxとを比較し、m>mmaxであるか否かを判定する。すなわち、処理対象のカメラ５１について得られた視野内ランドマーク数mが、これまで得られている視野内ランドマーク数mのなかの最大値である視野内ランドマーク数mmaxよりも大きいか否かが判定される。
【０２０２】
また、起動判定部６２は視野内ランドマーク数mmaxが得られたときのカウンタiの値を、その視野内ランドマーク数mmaxが得られたカメラ５１を特定するカメラインデックスimaxの値として保持しているものとする。
【０２０３】
ステップＳ１４０において、m>mmaxでないと判定された場合、ステップＳ１４１の処理はスキップされて、処理はステップＳ１４２へと進む。
【０２０４】
これに対して、ステップＳ１４０においてm>mmaxであると判定された場合、ステップＳ１４１において、起動判定部６２はmmax＝mおよびimax＝iとする。
【０２０５】
すなわち、起動判定部６２は保持している視野内ランドマーク数mmaxの値が、処理対象のカメラ５１について得られた視野内ランドマーク数mの値となるように視野内ランドマーク数mmaxを更新する。また、起動判定部６２は保持しているカメラインデックスimaxの値が、処理対象のカメラ５１を示すカメラインデックスi、つまり現時点におけるカウンタiの値となるようにカメラインデックスimaxを更新する。
【０２０６】
このような処理が全カメラ５１について行われると、その時点におけるカメラインデックスimaxの値は、現時点において最も視野内ランドマーク数mが多いカメラ５１を示すカメラインデックスiの値となる。
【０２０７】
同様に視野内ランドマーク数mmaxの値は、カメラインデックスimaxにより示されるカメラ５１について得られた視野内ランドマーク数mの値、つまり現時点における視野内ランドマーク数mの最大値となる。
【０２０８】
ステップＳ１４１において視野内ランドマーク数mmaxおよびカメラインデックスimaxが更新されると、その後、処理はステップＳ１４２へと進む。
【０２０９】
ステップＳ１４１において視野内ランドマーク数mmaxおよびカメラインデックスimaxが更新されたか、またはステップＳ１４０においてm>mmaxでないと判定されると、ステップＳ１４２において、起動判定部６２は保持しているカウンタiの値を１だけインクリメントする。そして、その後、処理はステップＳ１３７に戻り、上述した処理が繰り返し行われる。
【０２１０】
また、ステップＳ１３７において、全てのカメラ５１について処理を行ったと判定されると、その後、ステップＳ１４３乃至ステップＳ１４５の処理が行われて、視野内ランドマーク数mが最大となるカメラ５１が起動カメラとして選択される。なお、これらのステップＳ１４３乃至ステップＳ１４５の処理は図３のステップＳ２２乃至ステップＳ２４の処理と同様であるので、その説明は省略する。
【０２１１】
さらに、ステップＳ１４５においてカメラ５１の起動制御が行われたか、またはステップＳ１３５においてスリープモードが維持されると、ステップＳ１４６乃至ステップＳ１４９の処理が行われて処理はステップＳ１３１に戻り、上述した処理が繰り返し行われる。また、ユーザの自己位置の推定終了が指示されると、自己位置推定処理は終了する。
【０２１２】
なお、ステップＳ１４６乃至ステップＳ１４９の処理は、図３のステップＳ２５乃至ステップＳ２８の処理と同様であるので、その説明は省略する。
【０２１３】
以上のようにして、自己位置推定システムは、スリープモードとなってから所定時間が経過するとカウントモードへと移行して起動カメラを選択し直し、再びスリープモードへと移行する。これにより、より低い消費電力で自己位置推定を行うことができる。
【０２１４】
特に、一定の時間間隔で起動カメラを選択し直し、最も多くランドマークを観測できるカメラ５１を起動カメラとして選択することで、少ない消費電力でも、十分な精度で確実に自己位置を推定することができる。
【０２１５】
〈第２の実施の形態〉
〈自己位置推定処理の説明〉
さらに、以上においては、一定の時間が経過したらスリープモードからカウントモードへと移行する例について説明したが、ユーザ（カメラ５１）の自己位置が基準となる位置から所定距離以上、移動したタイミングでカウントモードに移行されるようにしてもよい。
【０２１６】
以下、図７のフローチャートを参照して、そのような場合に自己位置推定システムにより行われる自己位置推定処理について説明する。なお、ステップＳ１７１の処理は、図３のステップＳ１１の処理と同様であるので、その説明は省略する。
【０２１７】
ステップＳ１７１においてスリープモードであると判定された場合、起動判定部６２は、自己位置推定部６１の自己位置算出部７３から、現時刻における自己位置の算出結果を自己位置xとして取得し、処理はステップＳ１７２へと進む。
【０２１８】
ステップＳ１７２において、起動判定部６２は取得した現時刻における自己位置xと、保持している基準となる自己位置である基準自己位置xkとの間の距離|x-xk|が所定の閾値β未満であるか否か、すなわち|x-xk|<βであるか否かを判定する。
【０２１９】
起動判定部６２は、最後にカウントモードからスリープモードへと移行（遷移）したときのユーザの自己位置xを、基準自己位置xkとして保持している。
【０２２０】
ステップＳ１７２の処理では、実空間上（三次元座標系）における基準自己位置xkから自己位置xまでの距離|x-xk|が閾値β未満であるかが判定される。したがって、この処理では、最後にカウントモードからスリープモードへと移行してから、つまりスリープモードとなってから、ユーザの自己位置が所定の距離β以上、移動したか否かが判定されることになる。
【０２２１】
なお、ここでは実空間上における自己位置の移動距離に基づいて、カウントモードへと移行するかの判定を行う例について説明するが、その他、撮影画像上におけるランドマークに対応する特徴点の移動距離に基づいて判定を行うようにしてもよい。また、ユーザの姿勢の変化量に基づいて、判定を行うようにしてもよい。
【０２２２】
ステップＳ１７２において|x-xk|<βでない、つまりスリープモードとなってから、所定距離β以上、自己位置が変化したと判定された場合、起動判定部６２は起動切替部６３に全カメラ５１の起動を指示し、処理はステップＳ１７３へと進む。
【０２２３】
そして、その後、ステップＳ１７３およびステップＳ１７４の処理が行われ、処理はステップＳ１７１に戻り、上述した処理が繰り返し行われる。なお、ステップＳ１７３およびステップＳ１７４の処理は、図３のステップＳ１３およびステップＳ１４の処理と同様であるので、その説明は省略する。
【０２２４】
また、ステップＳ１７２において、|x-xk|<βである、すなわちスリープモードとなってから自己位置が所定距離β以上、移動していないと判定された場合、ステップＳ１７５において、起動判定部６２はスリープモードの状態を維持する。
【０２２５】
スリープモードの状態が維持されると、その後、処理はステップＳ１８５へと進む。
【０２２６】
また、ステップＳ１７１において、スリープモードではないと判定された場合、すなわちカウントモードである場合、処理はステップＳ１７６へと進む。
【０２２７】
そして、ステップＳ１７６乃至ステップＳ１８２の処理が行われるが、これらの処理は図３のステップＳ１６乃至ステップＳ２２の処理と同様であるので、その説明は省略する。
【０２２８】
ステップＳ１８３において、起動判定部６２は基準自己位置xk＝現時刻の自己位置xとする。
【０２２９】
すなわち、起動判定部６２は、保持している基準自己位置xkが、現時刻の自己位置xとなるように、基準自己位置xkを更新する。これにより、カウントモードからスリープモードへと移行した時点における自己位置が、新たな基準自己位置xkとされることになる。
【０２３０】
基準自己位置xkが更新されると、その後、ステップＳ１８４の処理が行われて、処理はステップＳ１８５へと進むが、ステップＳ１８４の処理は図３のステップＳ２４の処理と同様であるので、その説明は省略する。
【０２３１】
ステップＳ１８４においてカメラ５１の起動制御が行われたか、またはステップＳ１７５においてスリープモードが維持されると、ステップＳ１８５乃至ステップＳ１８８の処理が行われて処理はステップＳ１７１に戻り、上述した処理が繰り返し行われる。また、ユーザの自己位置の推定終了が指示されると、自己位置推定処理は終了する。
【０２３２】
なお、ステップＳ１８５乃至ステップＳ１８８の処理は、図３のステップＳ２５乃至ステップＳ２８の処理と同様であるので、その説明は省略する。
【０２３３】
以上のようにして、自己位置推定システムは、スリープモードとなってから自己位置が所定距離以上、移動するとカウントモードへと移行して起動カメラを選択し直し、再びスリープモードへと移行する。これにより、より低い消費電力で自己位置推定を行うことができる。
【０２３４】
特に、自己位置が所定距離以上、移動したタイミングで起動カメラを選択し直し、最も多くの特徴点を検出できるカメラ５１を起動カメラとして選択することで、少ない消費電力でも、十分な精度で確実に自己位置を推定することができる。
【０２３５】
〈第２の実施の形態の変形例１〉
〈自己位置推定処理の説明〉
また、自己位置の移動距離に基づいてカウントモードに移行するかの判定を行う場合においても、図４を参照して説明したように、１または複数のカメラ５１が起動カメラとして選択されるようにしてもよい。
【０２３６】
以下、図８のフローチャートを参照して、そのような場合に自己位置推定システムにより行われる自己位置推定処理について説明する。なお、ステップＳ２１１乃至ステップＳ２１８の処理は、図７のステップＳ１７１乃至ステップＳ１７８の処理と同様であるので、その説明は省略する。
【０２３７】
また、ステップＳ２１８において特徴点が検出されると、その後、ステップＳ２１９乃至ステップＳ２２３の処理が行われて、特徴点数nが閾値nthより大きいカメラ５１が起動カメラとして選択される。なお、これらのステップＳ２１９乃至ステップＳ２２３の処理は図４のステップＳ５９乃至ステップＳ６３の処理と同様であるので、その説明は省略する。
【０２３８】
ステップＳ２２４において、起動判定部６２は基準自己位置xk＝現時刻の自己位置xとする。ステップＳ２２４では、図７のステップＳ１８３と同様の処理が行われる。
【０２３９】
ステップＳ２２４で基準自己位置xkが更新されたか、またはステップＳ２１５においてスリープモードが維持されると、ステップＳ２２５乃至ステップＳ２２８の処理が行われて処理はステップＳ２１１に戻り、上述した処理が繰り返し行われる。また、ユーザの自己位置の推定終了が指示されると、自己位置推定処理は終了する。
【０２４０】
なお、ステップＳ２２５乃至ステップＳ２２８の処理は、図３のステップＳ２５乃至ステップＳ２８の処理と同様であるので、その説明は省略する。
【０２４１】
以上のようにして、自己位置推定システムは、スリープモードとなってから自己位置が所定距離以上、移動するとカウントモードへと移行して起動カメラを選択し直し、再びスリープモードへと移行する。これにより、より低い消費電力で自己位置推定を行うことができる。
【０２４２】
特に、自己位置が所定距離以上、移動したタイミングで起動カメラを選択し直し、閾値より多い数の特徴点を検出できるカメラ５１を起動カメラとして選択することで、少ない消費電力でも、十分な精度で確実に自己位置を推定することができる。
【０２４３】
〈第２の実施の形態の変形例２〉
〈自己位置推定処理の説明〉
また、自己位置の移動距離に基づいてカウントモードに移行するかの判定を行う場合においても、図５を参照して説明したように、特徴点面積Sに基づいて起動カメラを選択するようにしてもよい。
【０２４４】
以下、図９のフローチャートを参照して、そのような場合に自己位置推定システムにより行われる自己位置推定処理について説明する。なお、ステップＳ２５１乃至ステップＳ２５８の処理は、図７のステップＳ１７１乃至ステップＳ１７８の処理と同様であるので、その説明は省略する。
【０２４５】
また、ステップＳ２５８において特徴点が検出されると、その後、ステップＳ２５９乃至ステップＳ２６３の処理が行われて、特徴点面積Sが最大となるカメラ５１が起動カメラとして選択される。なお、これらのステップＳ２５９乃至ステップＳ２６３の処理は図５のステップＳ９９乃至ステップＳ１０３の処理と同様であるので、その説明は省略する。
【０２４６】
ステップＳ２６４において、起動判定部６２は基準自己位置xk＝現時刻の自己位置xとする。ステップＳ２６４では、図７のステップＳ１８３と同様の処理が行われる。
【０２４７】
基準自己位置xkが更新されると、その後、ステップＳ２６５の処理が行われて、処理はステップＳ２６６へと進むが、ステップＳ２６５の処理は図３のステップＳ２４の処理と同様であるので、その説明は省略する。
【０２４８】
ステップＳ２６５においてカメラ５１の起動制御が行われたか、またはステップＳ２５５においてスリープモードが維持されると、ステップＳ２６６乃至ステップＳ２６９の処理が行われて処理はステップＳ２５１に戻り、上述した処理が繰り返し行われる。また、ユーザの自己位置の推定終了が指示されると、自己位置推定処理は終了する。
【０２４９】
なお、ステップＳ２６６乃至ステップＳ２６９の処理は、図３のステップＳ２５乃至ステップＳ２８の処理と同様であるので、その説明は省略する。
【０２５０】
以上のようにして、自己位置推定システムは、スリープモードとなってから自己位置が所定距離以上、移動するとカウントモードへと移行して起動カメラを選択し直し、再びスリープモードへと移行する。これにより、より低い消費電力で自己位置推定を行うことができる。
【０２５１】
特に、自己位置が所定距離以上、移動したタイミングで起動カメラを選択し直し、最も多くかつ均一に特徴点を検出できるカメラ５１を起動カメラとして選択することで、少ない消費電力でも、十分な精度で確実に自己位置を推定することができる。
【０２５２】
〈第２の実施の形態の変形例３〉
〈自己位置推定処理の説明〉
また、自己位置の移動距離に基づいてカウントモードに移行するかの判定を行う場合においても、図６を参照して説明したように、視野内ランドマーク数mに基づいて起動カメラを選択するようにしてもよい。
【０２５３】
以下、図１０のフローチャートを参照して、そのような場合に自己位置推定システムにより行われる自己位置推定処理について説明する。なお、ステップＳ２９１乃至ステップＳ２９７の処理は、図７のステップＳ１７１乃至ステップＳ１７７の処理と同様であるので、その説明は省略する。
【０２５４】
また、ステップＳ２９７において全てのカメラ５１について処理を行ったかの判定が行われると、その後、ステップＳ２９８乃至ステップＳ３０３の処理が行われて、視野内ランドマーク数mが最大となるカメラ５１が起動カメラとして選択される。なお、これらのステップＳ２９８乃至ステップＳ３０３の処理は図６のステップＳ１３８乃至ステップＳ１４３の処理と同様であるので、その説明は省略する。
【０２５５】
ステップＳ３０４において、起動判定部６２は基準自己位置xk＝現時刻の自己位置xとする。ステップＳ３０４では、図７のステップＳ１８３と同様の処理が行われる。
【０２５６】
基準自己位置xkが更新されると、その後、ステップＳ３０５の処理が行われて、処理はステップＳ３０６へと進むが、ステップＳ３０５の処理は図３のステップＳ２４の処理と同様であるので、その説明は省略する。
【０２５７】
ステップＳ３０５においてカメラ５１の起動制御が行われたか、またはステップＳ２９５においてスリープモードが維持されると、ステップＳ３０６乃至ステップＳ３０９の処理が行われて処理はステップＳ２９１に戻り、上述した処理が繰り返し行われる。また、ユーザの自己位置の推定終了が指示されると、自己位置推定処理は終了する。
【０２５８】
なお、ステップＳ３０６乃至ステップＳ３０９の処理は、図３のステップＳ２５乃至ステップＳ２８の処理と同様であるので、その説明は省略する。
【０２５９】
以上のようにして、自己位置推定システムは、スリープモードとなってから自己位置が所定距離以上、移動するとカウントモードへと移行して起動カメラを選択し直し、再びスリープモードへと移行する。これにより、より低い消費電力で自己位置推定を行うことができる。
【０２６０】
特に、自己位置が所定距離以上、移動したタイミングで起動カメラを選択し直し、最も多くランドマークを観測できるカメラ５１を起動カメラとして選択することで、少ない消費電力でも、十分な精度で確実に自己位置を推定することができる。
【０２６１】
〈第３の実施の形態〉
〈自己位置推定処理の説明〉
さらに、スリープモードの状態のときに起動カメラで得られた撮影画像から検出される特徴点の数の基準となる特徴点数に対する割り合いが低下してきたタイミングでカウントモードに移行されるようにしてもよい。
【０２６２】
以下、図１１のフローチャートを参照して、そのような場合に自己位置推定システムにより行われる自己位置推定処理について説明する。なお、ステップＳ３３１の処理は、図３のステップＳ１１の処理と同様であるので、その説明は省略する。
【０２６３】
ステップＳ３３１においてスリープモードであると判定された場合、起動判定部６２は、自己位置推定部６１の特徴点検出部７１から、起動カメラの最新の撮影画像から検出された特徴点の数を特徴点数nとして取得し、処理はステップＳ３３２へと進む。ここで、特徴点数nの取得対象となる最新の撮影画像は、スリープモードの状態で起動カメラにより撮影された撮影画像である。
【０２６４】
ステップＳ３３２において、起動判定部６２は取得した最新の特徴点数nと、保持している基準となる特徴点数である基準特徴点数nkとの比n/nkが所定の閾値γ未満であるか否か、すなわちn/nk<γであるか否かを判定する。
【０２６５】
起動判定部６２は、最後にカウントモードからスリープモードへと移行（遷移）したときの各カメラ５１の撮影画像について得られた特徴点数の最大値を、基準特徴点数nkとして保持している。したがって、ステップＳ３３２の処理では、スリープモードとなった時点を基準として、その時点での特徴点数の最大値に対する、現時刻の起動カメラの特徴点数の割り合いがどの程度低下したかが判定される。そして、例えば現時刻で観測される特徴点の数が減少し、n/nk<γとなったときにスリープモードからカウントモードへと移行するように制御される。
【０２６６】
ステップＳ３３２においてn/nk<γである、つまりスリープモードとなってから、観測される特徴点の数が低下し、特徴点数が十分でないと判定された場合、起動判定部６２は起動切替部６３に全カメラ５１の起動を指示し、処理はステップＳ３３３へと進む。
【０２６７】
そして、その後、ステップＳ３３３およびステップＳ３３４の処理が行われ、処理はステップＳ３３１に戻り、上述した処理が繰り返し行われる。なお、ステップＳ３３３およびステップＳ３３４の処理は、図３のステップＳ１３およびステップＳ１４の処理と同様であるので、その説明は省略する。
【０２６８】
また、ステップＳ３３２において、n/nk<γでない、すなわち十分な数の特徴点が観測されている状態であると判定された場合、ステップＳ３３５において、起動判定部６２はスリープモードの状態を維持する。
【０２６９】
スリープモードの状態が維持されると、その後、処理はステップＳ３４５へと進む。
【０２７０】
また、ステップＳ３３１において、スリープモードではないと判定された場合、すなわちカウントモードである場合、処理はステップＳ３３６へと進む。
【０２７１】
そして、ステップＳ３３６乃至ステップＳ３４２の処理が行われるが、これらの処理は図３のステップＳ１６乃至ステップＳ２２の処理と同様であるので、その説明は省略する。
【０２７２】
ステップＳ３４３において、起動判定部６２は基準特徴点数nk＝特徴点数nmaxとする。
【０２７３】
すなわち、起動判定部６２は、保持している基準特徴点数nkが、現時刻の撮影画像から検出された特徴点の数の最大値、つまりステップＳ３３８の処理で撮影画像から検出された特徴点の数の最大値である特徴点数nmaxとなるように、基準特徴点数nkを更新する。
【０２７４】
これにより、カウントモードからスリープモードへと移行した時点における特徴点数の最大値が、新たな基準特徴点数nkとされることになる。なお、この例では、基準特徴点数nkとされる特徴点数nmaxは、ステップＳ３４０の処理で得られる特徴点数nmaxと同じである。
【０２７５】
基準特徴点数nkが更新されると、その後、ステップＳ３４４の処理が行われて、処理はステップＳ３４５へと進むが、ステップＳ３４４の処理は図３のステップＳ２４の処理と同様であるので、その説明は省略する。
【０２７６】
ステップＳ３４４においてカメラ５１の起動制御が行われたか、またはステップＳ３３５においてスリープモードが維持されると、ステップＳ３４５乃至ステップＳ３４８の処理が行われて処理はステップＳ３３１に戻り、上述した処理が繰り返し行われる。また、ユーザの自己位置の推定終了が指示されると、自己位置推定処理は終了する。
【０２７７】
なお、ステップＳ３４５乃至ステップＳ３４８の処理は、図３のステップＳ２５乃至ステップＳ２８の処理と同様であるので、その説明は省略する。
【０２７８】
以上のようにして、自己位置推定システムは、スリープモードとなってから基準特徴点数と現時刻の特徴点数との比が閾値未満まで減少するとカウントモードへと移行して起動カメラを選択し直し、再びスリープモードへと移行する。これにより、より低い消費電力で自己位置推定を行うことができる。
【０２７９】
特に、基準特徴点数と現時刻の特徴点数との比が閾値未満となったタイミングで起動カメラを選択し直し、最も多くの特徴点を検出できるカメラ５１を起動カメラとして選択することで、少ない消費電力でも、十分な精度で確実に自己位置を推定することができる。
【０２８０】
〈第３の実施の形態の変形例１〉
〈自己位置推定処理の説明〉
また、特徴点数の比に基づいてカウントモードに移行するかの判定を行う場合においても、図４を参照して説明したように、１または複数のカメラ５１が起動カメラとして選択されるようにしてもよい。
【０２８１】
以下、図１２のフローチャートを参照して、そのような場合に自己位置推定システムにより行われる自己位置推定処理について説明する。なお、ステップＳ３７１乃至ステップＳ３７８の処理は、図１１のステップＳ３３１乃至ステップＳ３３８の処理と同様であるので、その説明は省略する。
【０２８２】
また、ステップＳ３７８において特徴点が検出されると、その後、ステップＳ３７９乃至ステップＳ３８３の処理が行われて、特徴点数nが閾値nthより大きいカメラ５１が起動カメラとして選択される。なお、これらのステップＳ３７９乃至ステップＳ３８３の処理は図４のステップＳ５９乃至ステップＳ６３の処理と同様であるので、その説明は省略する。
【０２８３】
ステップＳ３８４において、起動判定部６２は基準特徴点数nk＝特徴点数nmaxとする。ステップＳ３８４では、図１１のステップＳ３４３と同様の処理が行われる。
【０２８４】
ステップＳ３８４で基準特徴点数nkが更新されたか、またはステップＳ３７５においてスリープモードが維持されると、ステップＳ３８５乃至ステップＳ３８８の処理が行われて処理はステップＳ３７１に戻り、上述した処理が繰り返し行われる。また、ユーザの自己位置の推定終了が指示されると、自己位置推定処理は終了する。
【０２８５】
なお、ステップＳ３８５乃至ステップＳ３８８の処理は、図３のステップＳ２５乃至ステップＳ２８の処理と同様であるので、その説明は省略する。
【０２８６】
以上のようにして、自己位置推定システムは、スリープモードとなってから基準特徴点数と現時刻の特徴点数との比が閾値未満まで減少するとカウントモードへと移行して起動カメラを選択し直し、再びスリープモードへと移行する。これにより、より低い消費電力で自己位置推定を行うことができる。
【０２８７】
特に、基準特徴点数と現時刻の特徴点数との比が閾値未満となったタイミングで起動カメラを選択し直し、閾値より多い数の特徴点を検出できるカメラ５１を起動カメラとして選択することで、少ない消費電力でも、十分な精度で確実に自己位置を推定することができる。
【０２８８】
〈第３の実施の形態の変形例２〉
〈自己位置推定処理の説明〉
また、特徴点数の比に基づいてカウントモードに移行するかの判定を行う場合においても、図５を参照して説明したように、特徴点面積Sに基づいて起動カメラを選択するようにしてもよい。
【０２８９】
以下、図１３のフローチャートを参照して、そのような場合に自己位置推定システムにより行われる自己位置推定処理について説明する。なお、ステップＳ４１１乃至ステップＳ４１８の処理は、図１１のステップＳ３３１乃至ステップＳ３３８の処理と同様であるので、その説明は省略する。
【０２９０】
また、ステップＳ４１８において特徴点が検出されると、その後、ステップＳ４１９乃至ステップＳ４２３の処理が行われて、特徴点面積Sが最大となるカメラ５１が起動カメラとして選択される。なお、これらのステップＳ４１９乃至ステップＳ４２３の処理は図５のステップＳ９９乃至ステップＳ１０３の処理と同様であるので、その説明は省略する。
【０２９１】
ステップＳ４２４において、起動判定部６２は基準特徴点数nk＝特徴点数nmaxとする。ステップＳ４２４では、図１１のステップＳ３４３と同様の処理が行われる。
【０２９２】
基準特徴点数nkが更新されると、その後、ステップＳ４２５の処理が行われて、処理はステップＳ４２６へと進むが、ステップＳ４２５の処理は図３のステップＳ２４の処理と同様であるので、その説明は省略する。
【０２９３】
ステップＳ４２５においてカメラ５１の起動制御が行われたか、またはステップＳ４１５においてスリープモードが維持されると、ステップＳ４２６乃至ステップＳ４２９の処理が行われて処理はステップＳ４１１に戻り、上述した処理が繰り返し行われる。また、ユーザの自己位置の推定終了が指示されると、自己位置推定処理は終了する。
【０２９４】
なお、ステップＳ４２６乃至ステップＳ４２９の処理は、図３のステップＳ２５乃至ステップＳ２８の処理と同様であるので、その説明は省略する。
【０２９５】
以上のようにして、自己位置推定システムは、スリープモードとなってから基準特徴点数と現時刻の特徴点数との比が閾値未満まで減少するとカウントモードへと移行して起動カメラを選択し直し、再びスリープモードへと移行する。これにより、より低い消費電力で自己位置推定を行うことができる。
【０２９６】
特に、基準特徴点数と現時刻の特徴点数との比が閾値未満となったタイミングで起動カメラを選択し直し、最も多くかつ均一に特徴点を検出できるカメラ５１を起動カメラとして選択することで、少ない消費電力でも、十分な精度で確実に自己位置を推定することができる。
【０２９７】
〈第３の実施の形態の変形例３〉
〈自己位置推定処理の説明〉
また、特徴点数の比に基づいてカウントモードに移行するかの判定を行う場合においても、図６を参照して説明したように、視野内ランドマーク数mに基づいて起動カメラを選択するようにしてもよい。
【０２９８】
以下、図１４のフローチャートを参照して、そのような場合に自己位置推定システムにより行われる自己位置推定処理について説明する。なお、ステップＳ４５１乃至ステップＳ４５７の処理は、図１１のステップＳ３３１乃至ステップＳ３３７の処理と同様であるので、その説明は省略する。
【０２９９】
また、ステップＳ４５７において全てのカメラ５１について処理を行ったかの判定が行われると、その後、ステップＳ４５８乃至ステップＳ４６３の処理が行われて、視野内ランドマーク数mが最大となるカメラ５１が起動カメラとして選択される。なお、これらのステップＳ４５８乃至ステップＳ４６３の処理は図６のステップＳ１３８乃至ステップＳ１４３の処理と同様であるので、その説明は省略する。
【０３００】
ステップＳ４６４において、起動判定部６２は基準特徴点数nk＝特徴点数nmaxとする。ステップＳ４６４では、図１１のステップＳ３４３と同様の処理が行われる。
【０３０１】
基準特徴点数nkが更新されると、その後、ステップＳ４６５の処理が行われて、処理はステップＳ４６６へと進むが、ステップＳ４６５の処理は図３のステップＳ２４の処理と同様であるので、その説明は省略する。
【０３０２】
ステップＳ４６５においてカメラ５１の起動制御が行われたか、またはステップＳ４５５においてスリープモードが維持されると、ステップＳ４６６乃至ステップＳ４６９の処理が行われて処理はステップＳ４５１に戻り、上述した処理が繰り返し行われる。また、ユーザの自己位置の推定終了が指示されると、自己位置推定処理は終了する。
【０３０３】
なお、ステップＳ４６６乃至ステップＳ４６９の処理は、図３のステップＳ２５乃至ステップＳ２８の処理と同様であるので、その説明は省略する。
【０３０４】
以上のようにして、自己位置推定システムは、スリープモードとなってから基準特徴点数と現時刻の特徴点数との比が閾値未満まで減少するとカウントモードへと移行して起動カメラを選択し直し、再びスリープモードへと移行する。これにより、より低い消費電力で自己位置推定を行うことができる。
【０３０５】
特に、基準特徴点数と現時刻の特徴点数との比が閾値未満となったタイミングで起動カメラを選択し直し、最も多くランドマークを観測できるカメラ５１を起動カメラとして選択することで、少ない消費電力でも、十分な精度で確実に自己位置を推定することができる。
【０３０６】
〈第４の実施の形態〉
〈自己位置推定処理の説明〉
さらに、基準となる状態からのユーザ（カメラ５１）の動き量、特に回転量が所定量以上となったタイミングでカウントモードに移行されるようにしてもよい。
【０３０７】
以下、図１５のフローチャートを参照して、そのような場合に自己位置推定システムにより行われる自己位置推定処理について説明する。なお、ステップＳ４９１の処理は、図３のステップＳ１１の処理と同様であるので、その説明は省略する。
【０３０８】
ステップＳ４９１においてスリープモードであると判定された場合、起動判定部６２は、画像処理装置５２に設けられた図示せぬジャイロセンサから、現時刻におけるユーザ（カメラ５１）の回転量を示す回転行列Rを取得して、処理はステップＳ４９２へと進む。
【０３０９】
ステップＳ４９２において、起動判定部６２は取得した現時刻の回転行列Rの転置行列RTと、保持している基準となる時刻における回転量を示す基準回転行列Rkとの積を関数に代入して得られる、基準となる時刻からの回転量f(RTRk)が所定の閾値δ未満であるか否か、すなわちf(RTRk)<δであるか否かを判定する。なお、回転量f(RTRk)は、回転差分の主成分回りの回転量である。
【０３１０】
起動判定部６２は、最後にカウントモードからスリープモードへと移行（遷移）したときのジャイロセンサの出力である回転行列Rを、基準回転行列Rkとして保持している。したがって、ステップＳ４９２の処理では、スリープモードとなった時点を基準として、その時点から現時刻までのユーザ（カメラ５１）の回転量f(RTRk)が閾値δ以上となったかが判定される。そして、例えば回転量f(RTRk)が閾値δ以上となったときにスリープモードからカウントモードへと移行するように制御される。
【０３１１】
ステップＳ４９２においてf(RTRk)<δでない、つまりスリープモードとなってからの回転量f(RTRk)が十分大きいと判定された場合、起動判定部６２は起動切替部６３に全カメラ５１の起動を指示し、処理はステップＳ４９３へと進む。
【０３１２】
そして、その後、ステップＳ４９３およびステップＳ４９４の処理が行われ、処理はステップＳ４９１に戻り、上述した処理が繰り返し行われる。なお、ステップＳ４９３およびステップＳ４９４の処理は、図３のステップＳ１３およびステップＳ１４の処理と同様であるので、その説明は省略する。
【０３１３】
また、ステップＳ４９２において、f(RTRk)<δである、すなわちスリープモードとなってからの回転量f(RTRk)が十分小さい状態であると判定された場合、ステップＳ４９５において、起動判定部６２はスリープモードの状態を維持する。
【０３１４】
スリープモードの状態が維持されると、その後、処理はステップＳ５０５へと進む。
【０３１５】
また、ステップＳ４９１において、スリープモードではないと判定された場合、すなわちカウントモードである場合、処理はステップＳ４９６へと進む。
【０３１６】
そして、ステップＳ４９６乃至ステップＳ５０２の処理が行われるが、これらの処理は図３のステップＳ１６乃至ステップＳ２２の処理と同様であるので、その説明は省略する。
【０３１７】
ステップＳ５０３において、起動判定部６２は基準回転行列Rk＝回転行列Rとする。
【０３１８】
すなわち、起動判定部６２は、保持している基準回転行列Rkが、現時刻におけるジャイロセンサの出力、つまりステップＳ５０２でスリープモードとされたときのジャイロセンサの出力である回転行列Rとなるように、基準回転行列Rkを更新する。
【０３１９】
基準回転行列Rkが更新されると、その後、ステップＳ５０４の処理が行われて、処理はステップＳ５０５へと進むが、ステップＳ５０４の処理は図３のステップＳ２４の処理と同様であるので、その説明は省略する。
【０３２０】
ステップＳ５０４においてカメラ５１の起動制御が行われたか、またはステップＳ４９５においてスリープモードが維持されると、ステップＳ５０５乃至ステップＳ５０８の処理が行われて処理はステップＳ４９１に戻り、上述した処理が繰り返し行われる。また、ユーザの自己位置の推定終了が指示されると、自己位置推定処理は終了する。
【０３２１】
なお、ステップＳ５０５乃至ステップＳ５０８の処理は、図３のステップＳ２５乃至ステップＳ２８の処理と同様であるので、その説明は省略する。
【０３２２】
以上のようにして、自己位置推定システムは、スリープモードとなってからのユーザの回転量が閾値以上となるとカウントモードへと移行して起動カメラを選択し直し、再びスリープモードへと移行する。これにより、より低い消費電力で自己位置推定を行うことができる。
【０３２３】
特に、スリープモードとなってからのユーザの回転量が閾値以上となったタイミングで起動カメラを選択し直し、最も多くの特徴点を検出できるカメラ５１を起動カメラとして選択することで、少ない消費電力でも、十分な精度で確実に自己位置を推定することができる。
【０３２４】
〈第４の実施の形態の変形例１〉
〈自己位置推定処理の説明〉
また、基準となる状態からの回転量に基づいてカウントモードに移行するかの判定を行う場合においても、図４を参照して説明したように、１または複数のカメラ５１が起動カメラとして選択されるようにしてもよい。
【０３２５】
以下、図１６のフローチャートを参照して、そのような場合に自己位置推定システムにより行われる自己位置推定処理について説明する。なお、ステップＳ５３１乃至ステップＳ５３８の処理は、図１５のステップＳ４９１乃至ステップＳ４９８の処理と同様であるので、その説明は省略する。
【０３２６】
また、ステップＳ５３８において特徴点が検出されると、その後、ステップＳ５３９乃至ステップＳ５４３の処理が行われて、特徴点数nが閾値nthより大きいカメラ５１が起動カメラとして選択される。なお、これらのステップＳ５３９乃至ステップＳ５４３の処理は図４のステップＳ５９乃至ステップＳ６３の処理と同様であるので、その説明は省略する。
【０３２７】
ステップＳ５４４において、起動判定部６２は基準回転行列Rk＝回転行列Rとする。ステップＳ５４４では、図１５のステップＳ５０３と同様の処理が行われる。
【０３２８】
ステップＳ５４４で基準回転行列Rkが更新されたか、またはステップＳ５３５においてスリープモードが維持されると、ステップＳ５４５乃至ステップＳ５４８の処理が行われて処理はステップＳ５３１に戻り、上述した処理が繰り返し行われる。また、ユーザの自己位置の推定終了が指示されると、自己位置推定処理は終了する。
【０３２９】
なお、ステップＳ５４５乃至ステップＳ５４８の処理は、図３のステップＳ２５乃至ステップＳ２８の処理と同様であるので、その説明は省略する。
【０３３０】
以上のようにして、自己位置推定システムは、スリープモードとなってからのユーザの回転量が閾値以上となるとカウントモードへと移行して起動カメラを選択し直し、再びスリープモードへと移行する。これにより、より低い消費電力で自己位置推定を行うことができる。
【０３３１】
特に、スリープモードとなってからのユーザの回転量が閾値以上となったタイミングで起動カメラを選択し直し、閾値より多い数の特徴点を検出できるカメラ５１を起動カメラとして選択することで、少ない消費電力でも、十分な精度で確実に自己位置を推定することができる。
【０３３２】
〈第４の実施の形態の変形例２〉
〈自己位置推定処理の説明〉
また、基準となる状態からの回転量に基づいてカウントモードに移行するかの判定を行う場合においても、図５を参照して説明したように、特徴点面積Sに基づいて起動カメラを選択するようにしてもよい。
【０３３３】
以下、図１７のフローチャートを参照して、そのような場合に自己位置推定システムにより行われる自己位置推定処理について説明する。なお、ステップＳ５７１乃至ステップＳ５７８の処理は、図１５のステップＳ４９１乃至ステップＳ４９８の処理と同様であるので、その説明は省略する。
【０３３４】
また、ステップＳ５７８において特徴点が検出されると、その後、ステップＳ５７９乃至ステップＳ５８３の処理が行われて、特徴点面積Sが最大となるカメラ５１が起動カメラとして選択される。なお、これらのステップＳ５７９乃至ステップＳ５８３の処理は図５のステップＳ９９乃至ステップＳ１０３の処理と同様であるので、その説明は省略する。
【０３３５】
ステップＳ５８４において、起動判定部６２は基準回転行列Rk＝回転行列Rとする。ステップＳ５８４では、図１５のステップＳ５０３と同様の処理が行われる。
【０３３６】
基準回転行列Rkが更新されると、その後、ステップＳ５８５の処理が行われて、処理はステップＳ５８６へと進むが、ステップＳ５８５の処理は図３のステップＳ２４の処理と同様であるので、その説明は省略する。
【０３３７】
ステップＳ５８５においてカメラ５１の起動制御が行われたか、またはステップＳ５７５においてスリープモードが維持されると、ステップＳ５８６乃至ステップＳ５８９の処理が行われて処理はステップＳ５７１に戻り、上述した処理が繰り返し行われる。また、ユーザの自己位置の推定終了が指示されると、自己位置推定処理は終了する。
【０３３８】
なお、ステップＳ５８６乃至ステップＳ５８９の処理は、図３のステップＳ２５乃至ステップＳ２８の処理と同様であるので、その説明は省略する。
【０３３９】
以上のようにして、自己位置推定システムは、スリープモードとなってからのユーザの回転量が閾値以上となるとカウントモードへと移行して起動カメラを選択し直し、再びスリープモードへと移行する。これにより、より低い消費電力で自己位置推定を行うことができる。
【０３４０】
特に、スリープモードとなってからのユーザの回転量が閾値以上となったタイミングで起動カメラを選択し直し、最も多くかつ均一に特徴点を検出できるカメラ５１を起動カメラとして選択することで、少ない消費電力でも、十分な精度で確実に自己位置を推定することができる。
【０３４１】
〈第４の実施の形態の変形例３〉
〈自己位置推定処理の説明〉
また、基準となる状態からの回転量に基づいてカウントモードに移行するかの判定を行う場合においても、図６を参照して説明したように、視野内ランドマーク数mに基づいて起動カメラを選択するようにしてもよい。
【０３４２】
以下、図１８のフローチャートを参照して、そのような場合に自己位置推定システムにより行われる自己位置推定処理について説明する。なお、ステップＳ６１１乃至ステップＳ６１７の処理は、図１５のステップＳ４９１乃至ステップＳ４９７の処理と同様であるので、その説明は省略する。
【０３４３】
また、ステップＳ６１７において全てのカメラ５１について処理を行ったかの判定が行われると、その後、ステップＳ６１８乃至ステップＳ６２３の処理が行われて、視野内ランドマーク数mが最大となるカメラ５１が起動カメラとして選択される。なお、これらのステップＳ６１８乃至ステップＳ６２３処理は図６のステップＳ１３８乃至ステップＳ１４３の処理と同様であるので、その説明は省略する。
【０３４４】
ステップＳ６２４において、起動判定部６２は基準回転行列Rk＝回転行列Rとする。ステップＳ６２４では、図１５のステップＳ５０３と同様の処理が行われる。
【０３４５】
基準回転行列Rkが更新されると、その後、ステップＳ６２５の処理が行われて、処理はステップＳ６２６へと進むが、ステップＳ６２５の処理は図３のステップＳ２４の処理と同様であるので、その説明は省略する。
【０３４６】
ステップＳ６２５においてカメラ５１の起動制御が行われたか、またはステップＳ６１５においてスリープモードが維持されると、ステップＳ６２６乃至ステップＳ６２９の処理が行われて処理はステップＳ６１１に戻り、上述した処理が繰り返し行われる。また、ユーザの自己位置の推定終了が指示されると、自己位置推定処理は終了する。
【０３４７】
なお、ステップＳ６２６乃至ステップＳ６２９の処理は、図３のステップＳ２５乃至ステップＳ２８の処理と同様であるので、その説明は省略する。
【０３４８】
以上のようにして、自己位置推定システムは、スリープモードとなってからのユーザの回転量が閾値以上となるとカウントモードへと移行して起動カメラを選択し直し、再びスリープモードへと移行する。これにより、より低い消費電力で自己位置推定を行うことができる。
【０３４９】
特に、スリープモードとなってからのユーザの回転量が閾値以上となったタイミングで起動カメラを選択し直し、最も多くランドマークを観測できるカメラ５１を起動カメラとして選択することで、少ない消費電力でも、十分な精度で確実に自己位置を推定することができる。
【０３５０】
〈第５の実施の形態〉
〈自己位置推定システムの構成例〉
また、以上においては、起動制御の対象となるカメラ５１で得られる撮影画像に基づいて、起動カメラと起動停止カメラを選択する例について説明したが、他のカメラで得られる情報に基づいて、起動カメラと起動停止カメラを選択するようにしてもよい。
【０３５１】
そのような場合、自己位置推定システムは、例えば図１９に示すように構成される。
【０３５２】
この例では、自己位置推定の対象であるユーザ１０１が４つのカメラ１０２−１乃至カメラ１０２−４を装着しており、これらのカメラ１０２−１乃至カメラ１０２−４で得られた撮影画像に基づいて、ユーザ１０１の自己位置が推定される。
【０３５３】
なお、以下、カメラ１０２−１乃至カメラ１０２−４を特に区別する必要のない場合、単にカメラ１０２とも称することとする。
【０３５４】
図１９では、各カメラ１０２が図２に示したカメラ５１に対応しており、これらの各カメラ１０２が起動カメラまたは起動停止カメラとされて、自己位置推定が行われる。また、カメラ１０２を有する自己位置推定システムは、さらに全周カメラ１０３と、図２に示した画像処理装置５２（図１９では不図示）とを有している。
【０３５５】
この全周カメラ１０３は、ユーザ１０１に装着され、ユーザ１０１の全周囲を被写体として撮影する広角カメラとなっている。すなわち、全周カメラ１０３は、全てのカメラ１０２の観察視野を撮影可能な広角カメラとなっている。
【０３５６】
但し、全周カメラ１０３は画角が360度である全方位を撮影可能な広角カメラであるが、全周カメラ１０３で得られる画像では、カメラ１０２で得られる画像よりも空間解像度が低くなる。そのため、全周カメラ１０３で得られる画像を自己位置推定に用いても十分な精度で自己位置を推定することはできない。
【０３５７】
このような自己位置推定システムでは、全周カメラ１０３で得られる画像（以下、全周画像とも称する）が４つの分割領域に分割され、それらの各分割領域に対して、各カメラ１０２が割り当てられている。つまり、各カメラ１０２の観察視野と、各分割領域に対応する全周カメラ１０３の観察視野とが等しくなるように、分割領域にカメラ１０２が割り当てられる。換言すれば、カメラ１０２で得られる撮影画像の被写体と、分割領域の被写体とが等しくなるように割り当てがなされている。
【０３５８】
自己位置推定システムを構成する特徴点検出部７１は、全周画像の各分割領域から特徴点を検出する。さらに起動判定部６２は、その検出結果に基づいて、最も特徴点数が多い分割領域に対応するカメラ１０２を起動カメラとして選択し、残りのカメラ１０２を起動停止カメラとする。
【０３５９】
この場合、全てのカメラ１０２で撮影を行い、起動カメラを選択する必要がないので、カウントモードへと移行する必要がなくなる。なお、どのようなタイミングで起動カメラを切り替えるかは、上述したように一定時間ごとに切り替えたり、ユーザの自己位置の移動距離や特徴点数の比、ユーザの回転量等に基づいて切り替えたりするなど、任意のタイミングで切り替えればよい。
【０３６０】
また、起動カメラの選択方法も、各分割領域の特徴点数に限らず、閾値以上の数の特徴点が検出された分割領域に対応するカメラ１０２を起動カメラとしたり、特徴点面積が最大となる分割領域に対応するカメラ１０２を起動カメラとしたり、視野内ランドマーク数が最大となる分割領域に対応するカメラ１０２を起動カメラとしたりするなど、どのような方法とされてもよい。
【０３６１】
以上の第１の実施の形態乃至第５の実施の形態で説明した本技術によれば、複数のカメラを組み合わせて自己位置推定を行うことで、起動カメラの撮影画像から自己位置推定に必要となる特徴点が検出されないという状況を回避することができる。つまり、より確実に自己位置推定を行うことができる。
【０３６２】
しかも、複数のカメラを組み合わせることで、全周カメラを用いる場合よりも高い解像度の撮影画像を得ることができ、より高精度に自己位置を推定することができる。
【０３６３】
さらに、複数のカメラのうちの必要なカメラのみを起動させ、残りのカメラの起動を一時的に停止させるので、単一カメラを用いる場合と同程度の消費電力で自己位置推定を行うことができる。
【０３６４】
なお、本技術では、カウントモードへと移行するタイミングを定める指標や、起動カメラを選択する際の指標として、上述した例を任意に組み合わせて用いることが可能である。
【０３６５】
ところで、上述した一連の処理は、ハードウェアにより実行することもできるし、ソフトウェアにより実行することもできる。一連の処理をソフトウェアにより実行する場合には、そのソフトウェアを構成するプログラムが、コンピュータにインストールされる。ここで、コンピュータには、専用のハードウェアに組み込まれているコンピュータや、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のコンピュータなどが含まれる。
【０３６６】
図２０は、上述した一連の処理をプログラムにより実行するコンピュータのハードウェアの構成例を示すブロック図である。
【０３６７】
コンピュータにおいて、ＣＰＵ（Central Processing Unit）５０１，ＲＯＭ（Read Only Me mory）５０２，ＲＡＭ（Random Access Memory）５０３は、バス５０４により相互に接続されている。
【０３６８】
バス５０４には、さらに、入出力インターフェース５０５が接続されている。入出力インターフェース５０５には、入力部５０６、出力部５０７、記録部５０８、通信部５０９、及びドライブ５１０が接続されている。
【０３６９】
入力部５０６は、キーボード、マウス、マイクロフォン、撮像素子などよりなる。出力部５０７は、ディスプレイ、スピーカなどよりなる。記録部５０８は、ハードディスクや不揮発性のメモリなどよりなる。通信部５０９は、ネットワークインターフェースなどよりなる。ドライブ５１０は、磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリなどのリムーバブルメディア５１１を駆動する。
【０３７０】
以上のように構成されるコンピュータでは、ＣＰＵ５０１が、例えば、記録部５０８に記録されているプログラムを、入出力インターフェース５０５及びバス５０４を介して、ＲＡＭ５０３にロードして実行することにより、上述した一連の処理が行われる。
【０３７１】
コンピュータ（ＣＰＵ５０１）が実行するプログラムは、例えば、パッケージメディア等としてのリムーバブルメディア５１１に記録して提供することができる。また、プログラムは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供することができる。
【０３７２】
コンピュータでは、プログラムは、リムーバブルメディア５１１をドライブ５１０に装着することにより、入出力インターフェース５０５を介して、記録部５０８にインストールすることができる。また、プログラムは、有線または無線の伝送媒体を介して、通信部５０９で受信し、記録部５０８にインストールすることができる。その他、プログラムは、ＲＯＭ５０２や記録部５０８に、あらかじめインストールしておくことができる。
【０３７３】
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
【０３７４】
また、本技術の実施の形態は、上述した実施の形態に限定されるものではなく、本技術の要旨を逸脱しない範囲において種々の変更が可能である。
【０３７５】
例えば、本技術は、１つの機能をネットワークを介して複数の装置で分担、共同して処理するクラウドコンピューティングの構成をとることができる。
【０３７６】
また、上述のフローチャートで説明した各ステップは、１つの装置で実行する他、複数の装置で分担して実行することができる。
【０３７７】
さらに、１つのステップに複数の処理が含まれる場合には、その１つのステップに含まれる複数の処理は、１つの装置で実行する他、複数の装置で分担して実行することができる。
【０３７８】
また、本明細書中に記載された効果はあくまで例示であって限定されるものではなく、他の効果があってもよい。
【０３７９】
さらに、本技術は、以下の構成とすることも可能である。
【０３８０】
（１）
複数のカメラのうちのいくつかを自己位置推定に用いる起動カメラとして選択する起動判定部と、
前記起動カメラの選択結果に基づいて、前記複数の前記カメラのうちの前記起動カメラとされた前記カメラを起動状態とさせて画像を撮影させ、前記複数の前記カメラのうちの前記起動カメラとは異なる前記カメラの起動を停止させる起動切替部と
を備える制御装置。
（２）
前記起動判定部は、所定のタイミングで前記起動カメラを選択し直す
（１）に記載の制御装置。
（３）
前記起動判定部は、前記所定のタイミングで、前記起動カメラにより撮影を行うスリープモードから、前記複数の前記カメラ全てを起動させるカウントモードに移行させるとともに、前記カウントモードの状態で前記複数の前記カメラにより撮影された画像に基づいて前記起動カメラを選択する
（２）に記載の制御装置。
（４）
前記起動判定部は、前記カメラにより撮影された前記画像から検出された特徴点の数に基づいて前記起動カメラを選択する
（３）に記載の制御装置。
（５）
前記起動判定部は、前記カメラにより撮影された前記画像から検出された特徴点の空間上の分布に基づいて前記起動カメラを選択する
（３）に記載の制御装置。
（６）
前記起動判定部は、前記カメラにより撮影された前記画像から検出された特徴点の前記画像上の分布に基づいて前記起動カメラを選択する
（３）に記載の制御装置。
（７）
前記起動判定部は、前記自己位置推定に用いられる三次元マップにより示されるランドマークに対応する、前記カメラにより撮影された前記画像から検出された特徴点の数に基づいて前記起動カメラを選択する
（３）に記載の制御装置。
（８）
前記起動判定部は、一定の時間間隔で前記スリープモードから前記カウントモードへと移行させる
（３）乃至（７）の何れか一項に記載の制御装置。
（９）
前記起動判定部は、前記スリープモードの状態で前記起動カメラにより撮影された前記画像から検出された特徴点の数に基づいて、前記スリープモードから前記カウントモードへと移行させる
（３）乃至（７）の何れか一項に記載の制御装置。
（１０）
前記起動判定部は、基準となる特徴点数に対する、前記スリープモードの状態で前記起動カメラにより撮影された前記画像から検出された特徴点の数の割り合いに基づいて、前記スリープモードから前記カウントモードへと移行させる
（３）乃至（７）の何れか一項に記載の制御装置。
（１１）
前記起動判定部は、前記自己位置推定の結果に基づいて前記スリープモードから前記カウントモードへと移行させる
（３）乃至（７）の何れか一項に記載の制御装置。
（１２）
前記起動判定部は、前記カメラの移動距離または回転量に基づいて前記スリープモードから前記カウントモードへと移行させる
（３）乃至（７）の何れか一項に記載の制御装置。
（１３）
前記起動判定部は、前記自己位置推定により得られた自己位置と、前記自己位置推定に用いられる三次元マップにより示されるランドマークとの位置関係に基づいて、前記起動カメラを選択する
（２）に記載の制御装置。
（１４）
前記起動判定部は、前記複数の前記カメラのそれぞれの観察視野を撮影可能な広角カメラで得られた画像に基づいて、前記起動カメラを選択する
（２）に記載の制御装置。
（１５）
前記複数の前記カメラは、球面上または円周上に並べられている
（１）乃至（１４）の何れか一項に記載の制御装置。
（１６）
前記起動カメラにより撮影された前記画像に基づいて前記自己位置推定を行う自己位置推定部をさらに備える
（１）乃至（１５）の何れか一項に記載の制御装置。
（１７）
複数のカメラのうちのいくつかを自己位置推定に用いる起動カメラとして選択し、
前記起動カメラの選択結果に基づいて、前記複数の前記カメラのうちの前記起動カメラとされた前記カメラを起動状態とさせて画像を撮影させ、前記複数の前記カメラのうちの前記起動カメラとは異なる前記カメラの起動を停止させる
ステップを含む制御方法。
（１８）
複数のカメラのうちのいくつかを自己位置推定に用いる起動カメラとして選択し、
前記起動カメラの選択結果に基づいて、前記複数の前記カメラのうちの前記起動カメラとされた前記カメラを起動状態とさせて画像を撮影させ、前記複数の前記カメラのうちの前記起動カメラとは異なる前記カメラの起動を停止させる
ステップを含む処理をコンピュータに実行させるプログラム。
【符号の説明】
【０３８１】
５１−１乃至５１−Ｋ，５１  カメラ，  ５２  画像処理装置，  ６１  自己位置推定部，  ６２  起動判定部，  ６３  起動切替部，  ７１  特徴点検出部，  ７２  ランドマーク推定部，  ７３  自己位置算出部，  １０２−１乃至１０２−４，１０２  カメラ，  １０３  全周カメラ
【図１】
2016197083.tif 000003
【図２】
2016197083.tif 000004
【図３】
2016197083.tif 000005
【図４】
2016197083.tif 000006
【図５】
2016197083.tif 000007
【図６】
2016197083.tif 000008
【図７】
2016197083.tif 000009
【図８】
2016197083.tif 000010
【図９】
2016197083.tif 000011
【図１０】
2016197083.tif 000012
【図１１】
2016197083.tif 000013
【図１２】
2016197083.tif 000014
【図１３】
2016197083.tif 000015
【図１４】
2016197083.tif 000016
【図１５】
2016197083.tif 000017
【図１６】
2016197083.tif 000018
【図１７】
2016197083.tif 000019
【図１８】
2016197083.tif 000020
【図１９】
2016197083.tif 000021
【図２０】
2016197083.tif 000022