(57)【要約】【課題】撮像装置の位置及び姿勢の推定誤差を低減させる。【解決手段】情報処理装置１０の画像取得部１６は、車両に搭載されたカメラ１２によって撮像された画像を取得する。そして、姿勢推定部２０は、画像取得部１６によって取得された画像に基づいて、カメラ１２の位置及び姿勢を推定する。最適化部２６は、画像から指標が検出された場合、前回までに取得された画像の各々のカメラ１２の位置及び姿勢の各々と、指標に対するカメラ１２の位置及び姿勢とから形成されるループに基づき、画像を撮像したときのカメラ１２の位置及び姿勢を推定する。【選択図】図１
2018173882.tif 000002
【特許請求の範囲】
【請求項１】
撮影位置が変化し得る撮像装置によって撮像された画像を取得する画像取得部と、
前記画像取得部によって取得された前記画像に基づいて、前記撮像装置の位置及び姿勢を推定し、前記画像取得部によって取得された前記画像から予め定められた指標が検出された場合に、前記指標に対する前記撮像装置の位置及び姿勢を推定する姿勢推定部と、
前記画像取得部によって取得された前記画像から前記指標が検出された場合に、前回までに取得された前記画像の各々に基づいて推定された前記撮像装置の位置の各々と、前記姿勢推定部によって推定された前記指標に対する前記撮像装置の位置とから形成されるループに基づいて、前記画像の各々が撮像されたときの前記撮像装置の位置及び姿勢の各々を補正する推定部と、
を含む情報処理装置。
【請求項２】
前記推定部は、前記画像取得部により取得された画像のうち、所定の条件を満たすキーフレーム画像の各々が撮像されたときの前記撮像装置の位置及び姿勢の各々の推定結果に基づいて、前記キーフレーム画像の特徴点の各々に対応する位置の３次元座標を表すマップ点を生成する、
請求項１に記載の情報処理装置。
【請求項３】
前記推定部は、前記画像取得部により取得された画像のうち、所定の条件を満たすキーフレーム画像の各々が撮像されたときの前記撮像装置の位置及び姿勢の各々の推定結果に基づいて、記憶部に格納された、前記キーフレーム画像の各々が撮像されたときの前記撮像装置の位置及び姿勢の各々を補正する、
請求項１又は請求項２に記載の情報処理装置。
【請求項４】
複数の前記指標の各々についての、前記指標間の相対的な位置及び姿勢は既知である、
請求項１〜請求項３の何れか１項に記載の情報処理装置。
【請求項５】
前記画像取得部によって取得された前記画像から前記指標が検出された場合に、前記指標の検出結果に応じて、前記指標を含む前記画像の信頼度を算出する信頼度算出部を更に含み、
前記推定部は、前記信頼度算出部によって算出された前記信頼度が予め設定された閾値より大きい場合に、前記画像の各々が撮像されたときの前記撮像装置の位置及び姿勢の各々を補正する、
請求項１〜請求項４の何れか１項に記載の情報処理装置。
【請求項６】
前記姿勢推定部によって推定された前記撮像装置の位置及び姿勢に応じて、予め設定された対象物が表示装置に重畳表示されるように、前記表示装置を制御する表示制御部を更に含む、
請求項１〜請求項５の何れか１項に記載の情報処理装置。
【請求項７】
前記推定部は、前記画像取得部によって取得された前記画像から、前回検出された前記指標と対応する前記指標が検出された場合に、前記画像の各々が撮像されたときの前記撮像装置の位置及び姿勢の各々を補正する、
請求項１〜請求項６の何れか１項に記載の情報処理装置。
【請求項８】
撮影位置が移動に伴って変わる撮像装置によって撮像された画像を取得し、
取得された前記画像に基づいて、前記撮像装置の位置及び姿勢を推定し、取得された前記画像から予め定められた指標が検出された場合に、前記指標に対する前記撮像装置の位置及び姿勢を推定し、
取得された前記画像から前記指標が検出された場合に、前回までに取得された前記画像の各々に基づいて推定された前記撮像装置の位置の各々と、推定された前記指標に対する前記撮像装置の位置とから形成されるループに基づいて、前記画像の各々が撮像されたときの前記撮像装置の位置及び姿勢の各々を補正する、
処理をコンピュータに実行させるための情報処理プログラム。
【請求項９】
撮影位置が移動に伴って変わる撮像装置によって撮像された画像を取得し、
取得された前記画像に基づいて、前記撮像装置の位置及び姿勢を推定し、取得された前記画像から予め定められた指標が検出された場合に、前記指標に対する前記撮像装置の位置及び姿勢を推定し、
取得された前記画像から前記指標が検出された場合に、前回までに取得された前記画像の各々に基づいて推定された前記撮像装置の位置及び姿勢の各々と、推定された前記指標に対する前記撮像装置の位置及び姿勢とから形成されるループに基づいて、前記画像の各々が撮像されたときの前記撮像装置の位置及び姿勢の各々を補正する、
処理をコンピュータに実行させる情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
開示の技術は、情報処理装置、方法、及びプログラムに関する。
【背景技術】
【０００２】
観測位置を精度よく検出するための画像処理装置が知られている。この画像処理装置は、観測位置におけるシーンの法線情報を生成し、生成した法線情報に基づき観測位置を推定する。
【０００３】
また、コンピュータビジョンベースの追跡のために複数のマップをマージするための方法が知られている。この方法は、複数のモバイルデバイスからのシーンの複数のマップを使用して自己位置推定及び地図構築同時実行し、Simultaneous Localization and Mapping（ＳＬＡＭ）マップを生成する。そして、この方法では、複数のモバイルデバイスの間でＳＬＡＭマップを共有する。
【０００４】
また、端末に搭載されたカメラによって撮像された画像と、端末の移動軌跡から形成されるループとに基づき、端末の位置及び姿勢を推定する技術が知られている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】国際公開第２０１６／１８１６８７号
【特許文献２】特表２０１６‐５００８８５号公報
【非特許文献】
【０００６】
【非特許文献１】Ra´ul Mur-Artal, J. M. M. Montiel,"ORB-SLAM: A Versatile and Accurate Monocular SLAM System",IEEE TRANSACTIONS ON ROBOTICS, VOL. 31, NO. 5, OCTOBER 2015
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、カメラを搭載した端末の移動軌跡がループを形成しない場合がある。この場合には、端末が備える撮像装置の位置及び姿勢の推定誤差が増大する可能性が高い。
【０００８】
一つの側面では、開示の技術は、撮像装置の位置及び姿勢の推定誤差を低減させることが目的である。
【課題を解決するための手段】
【０００９】
開示の技術は、一つの実施態様では、情報処理装置は、端末に搭載された撮像装置によって撮像された画像を取得する。そして、情報処理装置は、取得された前記画像に基づいて、前記撮像装置の位置及び姿勢を推定し、取得された前記画像から予め定められた指標が検出された場合に、前記指標に対する前記撮像装置の位置及び姿勢を推定する。情報処理装置は、前記画像から前記指標が検出された場合に、ループに基づいて、前記画像の各々が撮像されたときの前記撮像装置の位置及び姿勢の各々を推定する。ループは、前回までに取得された前記画像の各々に基づいて推定された前記撮像装置の位置の各々と、推定された前記指標に対する前記撮像装置の位置とから形成される。
【発明の効果】
【００１０】
一つの側面として、撮像装置の位置及び姿勢の推定誤差を低減させることができる、という効果を有する。
【図面の簡単な説明】
【００１１】
【図１】第１の実施形態に係る情報処理装置の概略ブロック図である。
【図２】カメラの位置及び姿勢の推定誤差を説明するための説明図である。
【図３】キーフレームテーブルの一例を示す図である。
【図４】マップ点テーブルの一例を示す図である。
【図５】特徴点と特徴点に対応する特徴量の一例を示す図である。
【図６】指標とパターンとの一例を示す図である。
【図７】キーフレーム画像が撮像されたときのカメラの位置及び姿勢の最適化を説明するための説明図である。
【図８】本実施形態で形成されるループを説明するための図である。
【図９】第１の実施形態に係る情報処理装置の制御部として機能するコンピュータの概略構成を示すブロック図である。
【図１０】第１の実施形態における姿勢推定処理の一例を示すフローチャートである。
【図１１】第１の実施形態におけるマップ生成処理の一例を示すフローチャートである。
【図１２】第１の実施形態における最適化処理の一例を示すフローチャートである。
【図１３】第２の実施形態に係る情報処理装置の概略ブロック図である。
【図１４】第２の実施形態に係る情報処理装置の制御部として機能するコンピュータの概略構成を示すブロック図である。
【図１５】第２の実施形態における最適化処理の一例を示すフローチャートである。
【図１６】第３の実施形態に係る情報処理装置の概略ブロック図である。
【図１７】表示装置に表示される表示画面の一例を示す図である。
【図１８】第３の実施形態に係る情報処理装置の制御部として機能するコンピュータの概略構成を示すブロック図である。
【図１９】第３の実施形態における表示制御処理の一例を示すフローチャートである。
【図２０】第４の実施形態に係る情報処理装置の概略ブロック図である。
【図２１】第４の実施形態で形成されるループを説明するための図である。
【図２２】第４の実施形態に係る情報処理装置の制御部として機能するコンピュータの概略構成を示すブロック図である。
【図２３】第４の実施形態における姿勢推定処理の一例を示すフローチャートである。
【図２４】第４の実施形態における最適化処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、図面を参照して開示の技術の実施形態の一例を詳細に説明する。
【００１３】
＜第１の実施形態＞
図１に、情報処理装置１０の構成例を表す概略図を示す。
【００１４】
図１に示すように、本実施形態の情報処理装置１０は、カメラ１２と、制御部１４とを有する。カメラ１２は、開示の技術の撮像装置の一例である。カメラ１２は、車両などの移動体に搭載され、または人に携帯されうる。カメラ１２の位置は、他の装置に搭載されて、または人に携帯されて運ばれることで変化しうる。カメラ１２と制御部１４とは、ともに情報処理装置１０に含まれても良いし、情報処理装置１０には制御部１４が搭載され、カメラ１２は、制御部１４と通信することが可能な別装置であっても良い。本実施形態では、情報処理装置１０が車両に搭載される場合を例に説明する。
【００１５】
カメラ１２は、車両の周辺の画像を逐次撮像する。
【００１６】
制御部１４は、データ記憶部１５と、画像取得部１６と、特徴点抽出部１８と、姿勢推定部２０と、マップ生成部２２と、指標検出部２４と、最適化部２６と、調整部２８とを備える。データ記憶部１５は、開示の技術の記憶部の一例である。また、最適化部２６は、開示の技術の推定部の一例である。
【００１７】
データ記憶部１５には、車両の周辺環境の情報を表すマップ情報が格納される。マップ情報は、車両に搭載されたカメラ１２により撮像された画像に基づき生成される。マップ情報について、以下説明する。
【００１８】
例えば、図２の２Ａに示されるように、建物Ｒの周辺を携帯端末等に搭載されたカメラが移動する場合を例に説明する。図２の２Ａは、上空からみた建物Ｒの周辺の領域を表している。図２の２Ａでは、カメラの移動により移動軌跡Ｌ１が生成される。カメラが移動軌跡Ｌ１を移動する際には、端末に搭載されたカメラ１２によってカメラ周辺の画像が逐次撮像される。逐次撮像されたカメラ周辺の画像のうち、所定の条件を満たす画像がキーフレーム画像としてデータ記憶部１５に格納される。キーフレーム画像とは、所定の条件を満たす画像である。
【００１９】
画像からは特徴点が抽出される。特徴点とは、例えば、対象領域に存在する物体の形状を表す、画像内のエッジ点等である。また、画像中の特徴点に対応する３次元座標を表すマップ点が生成される。例えば、図２の２Ｂに示されるようなマップ点Ｍが特徴点Ｆに対して生成される。また、画像２Ｃから抽出される特徴点Ｆは、マップ点Ｍと対応付けられる。このため、データ記憶部１５に格納されたマップ情報のマップ点Ｍと、画像２Ｃから抽出される特徴点Ｆとの対応付けに応じて、端末に搭載されたカメラ１２の位置及び姿勢が逐次推定される。
【００２０】
しかし、データ記憶部１５にマップ情報が格納されていない領域において、カメラ１２の位置及び姿勢を推定する場合、同一箇所において撮像された複数の画像を取得することができなければ、カメラの移動軌跡のループが形成されない。このため、例えば、下記参考文献１に示されているような最適化処理を行うことができない。そのため、図２の２Ｂに示されるように、カメラ１２の位置及び姿勢の推定結果は、本来の移動軌跡Ｌ１とは異なる移動軌跡Ｌ２となる。これにより、カメラ１２の位置及び姿勢の推定結果を表す移動軌跡Ｌ２においては、カメラ１２の位置及び姿勢の推定誤差が増大する。
【００２１】
参考文献１：Ra´ul Mur-Artal, J. M. M. Montiel,"ORB-SLAM: A Versatile and Accurate Monocular SLAM System",IEEE TRANSACTIONS ON ROBOTICS, VOL. 31, NO. 5, OCTOBER 2015
【００２２】
そこで、本実施形態では、予め定められた指標を環境中に設置し、指標が検知される毎にカメラ１２の位置及び姿勢の最適化を行う。以下、具体的に説明する。
【００２３】
データ記憶部１５には、キーフレーム画像の各々と、キーフレーム画像が撮像されたときのカメラ１２の位置及び姿勢の各々と、キーフレーム画像の特徴点の各々の３次元座標であるマップ点とを表すマップ情報が格納される。
【００２４】
具体的には、マップ情報は、キーフレームテーブルとマップ点テーブルとで表現され、キーフレームテーブル及びマップ点テーブルがマップ情報としてデータ記憶部１５に格納される。
【００２５】
図３に示すキーフレームテーブルには、キーフレームの識別情報を表すキーフレームＩＤと、カメラ１２の位置及び姿勢と、キーフレーム画像と、キーフレーム画像の特徴点と、特徴点に対応するマップ点ＩＤとが対応付けられて格納される。例えば、図３のキーフレームテーブルのキーフレームＩＤ「001」に対応するカメラ１２の位置及び姿勢は、図３に示されるように、(0.24,0.84,0.96,245.0,313.9,23.8)を示す６次元実数値である。６次元実数値のうち(0.24,0.84,0.96）はカメラ１２の姿勢を表し、(245.0,313.9,23.8)はカメラの３次元位置を表す。キーフレームテーブルの１行の情報が１つのキーフレームを表す。
【００２６】
また、図３のキーフレームテーブルのキーフレームＩＤ「001」に対応するキーフレーム画像(24,46,…)は、キーフレーム画像の各画素の画素値を表す。また、図３のキーフレームテーブルのキーフレームＩＤ「001」に対応する特徴点「(11,42),(29,110)…」は、キーフレーム画像内の特徴点の位置に対応する画素位置を表す。また、図３のキーフレームテーブルのキーフレームＩＤ「001」に対応するマップ点ＩＤ「3,5,9,32…」は、各特徴点に対応するマップ点ＩＤを表す。マップ点ＩＤは、マップ点テーブルのマップ点ＩＤと対応する。
【００２７】
図４に示すマップ点テーブルには、マップ点の識別情報を表すマップ点ＩＤと、マップ点の３次元位置座標（Ｘ[ｍ]，Ｙ[ｍ]，Ｚ[ｍ]）と、マップ点の特徴量とが対応付けられて格納される。例えば、図４のマップ点テーブルの特徴量は、例えば、参考文献２に記載されているOriented FAST and Rotated BRIEF(ORB)等であり、ORBの特徴量は０または１を表す３２次元の特徴量によって表現される。
【００２８】
参考文献２：E. Rublee et al., "ORB: An efficient alternative to SIFT or SURF", In Proc. of International Conference on Computer Vision, pp. 2564-2571, 2011.
【００２９】
本実施形態では、情報処理装置１０の制御部１４は、姿勢推定機能とマップ生成機能と最適化機能とを有する。以下、各機能に対応する各機能部について説明する。
【００３０】
なお、カメラ１２の内部パラメータについては、例えば、参考文献３に記載の方法に基づきキャリブレーションにより予め取得される。カメラ１２の内部パラメータとしては、例えば、焦点距離及び光学中心を含む行列と、歪み係数（例えば５次元）とが含まれる。
【００３１】
参考文献３：Z.Zhang et al., "A flexible new technique for camera calibration.", IEEE Transactions on Pattern Analysis and Machine Intelligence, 22(11):1330-1334, 2000.
【００３２】
［姿勢推定機能］
【００３３】
画像取得部１６は、カメラ１２によって撮像された画像を逐次取得する。次に、画像取得部１６は、カメラ１２によって撮像された画像をグレースケール画像へ変換する。そして、画像取得部１６は、グレースケール画像を出力する。
【００３４】
特徴点抽出部１８は、画像取得部１６から出力されたグレースケール画像から、特徴点を取得する。例えば、特徴点抽出部１８は、上記参考文献１に記載の手法を用いて、グレースケール画像から特徴点を抽出する。そして、特徴点抽出部１８は、各特徴点に対して、特徴量を計算する。例えば、上記参考文献２に記載のORBを特徴量として用いる場合には、０または１を表す３２次元の特徴量が抽出される。
【００３５】
図５に、各特徴点に対応する特徴量のデータ構造の一例を示す。図５に示されるように、特徴点の識別情報を表す特徴点ＩＤと、特徴点の位置を表す画素ｕ[pixel]，ｖ[pixel]と、特徴量とが対応付けられる。
【００３６】
姿勢推定部２０は、特徴点抽出部１８によって抽出された特徴点及び特徴点に対応する特徴量に基づいて、カメラ１２の位置及び姿勢を推定する。姿勢推定部２０は、マップ点が得られていない場合、例えば、上記参考文献１の「IV Automatic Map Initialization」に記載の方法を使用して、初期のマップ点を生成する。
【００３７】
具体的には、まず、姿勢推定部２０は、任意の２視点から撮像されたグレースケール画像から、特徴点抽出部１８により抽出された特徴点を取得する。次に、姿勢推定部２０は、２視点から撮像されたグレースケール画像間で特徴点の対応付けを行い、１視点目に対応するカメラ１２の位置及び姿勢に対する、２視点目に対応するカメラ１２の位置及び姿勢を求める。なお、姿勢推定部２０は、１視点目に対応するカメラ１２の位置及び姿勢を、世界座標系の原点として設定し、２視点目に対応するカメラ１２の位置及び姿勢を、カメラ１２の位置及び姿勢の初期値として設定する。
【００３８】
また、姿勢推定部２０は、１視点目に対応するカメラ１２の位置及び姿勢に対する、２視点目に対応するカメラ１２の位置及び姿勢に基づいて、三角測量を用いて、特徴点に対応する３次元座標を表すマップ点を計算する。
【００３９】
次に、姿勢推定部２０は、車両の移動に合わせてカメラ１２が移動する際に、マップ点を用いて、カメラ１２の位置及び姿勢を逐次推定する。例えば、まず、姿勢推定部２０は、カメラ１２を搭載した車両が既定の運動モデル（例えば、等速運動）を行うと仮定する。そして、姿勢推定部２０は、特徴点抽出部１８によって抽出されたグレースケール画像の特徴点と、データ記憶部１５のマップ点テーブルに格納されたマップ点との対応付けを行う。
【００４０】
より詳細には、姿勢推定部２０は、データ記憶部１５のマップ点テーブルに格納されたマップ点をグレースケール画像に投影し、グレースケール画像の特徴点の各々とマップ点の各々とを対応付ける。
【００４１】
例えば、姿勢推定部２０は、以下の参考文献４に記載のPnPアルゴリズムを用いて、カメラの位置姿勢を推定する。PnPアルゴリズムとは、グレースケール画像に投影されたマップ点と特徴点との間の距離を最小にするようなカメラ１２の位置及び姿勢を、Levenberg-Marquardt法などの非線形最適化アルゴリズムによって算出する手法である。
【００４２】
参考文献４：V. Lepetit et al., "EPnP: An Accurate O(n) Solution to the PnP Problem", International Journal of Computer Vision, Vol.81, No.2, pp.155-166(2008).
【００４３】
また、姿勢推定部２０は、画像取得部１６によって出力されたグレースケール画像をキーフレーム画像として格納するか否かを判定する。例えば、姿勢推定部２０は、以下の基準に従って、画像取得部１６によって出力されたグレースケール画像をキーフレーム画像として格納するか否かを判定する。姿勢推定部２０は、以下の（１）〜（３）の基準を全て満たす場合に、グレースケール画像をキーフレーム画像として、カメラ１２の位置及び姿勢と、特徴点とマップ点との対応付けと共にデータ記憶部１５へ格納する。
【００４４】
（１）前回のキーフレーム画像の格納から一定フレーム（例えば、２０フレーム）経過している。
（２）前回までに格納されたキーフレーム画像のうち、グレースケール画像の位置と最も近い最近傍のキーフレーム画像の特徴点とグレースケール画像の特徴点との間の対応点数が一定数以上（例えば、５０点）である。
（３）前回までに格納されたキーフレーム画像のうち、グレースケール画像の位置と最も近い最近傍のキーフレーム画像と比較して一定の割合（例えば、９０％）対応点数が減少している。
【００４５】
［マップ生成機能］
【００４６】
マップ生成部２２は、姿勢推定部２０によって新たなキーフレーム画像がデータ記憶部１５へ格納された場合、三角測量を用いて、新たなキーフレーム画像の特徴点の各々のマップ点を算出する。例えば、マップ生成部２２は、新たなキーフレーム画像と、前回までにデータ記憶部１５へ格納されたキーフレーム画像とに基づき、参考文献５に記載の手法により、新たなキーフレーム画像のマップ点を生成する。
【００４７】
参考文献５：R. I. Hartley et al., "Triangulation, Computer Vision and Image Understanding", Vol. 68, No.2, pp.146-157, 1997.
【００４８】
具体的には、マップ生成部２２は、前回までにデータ記憶部１５へ格納されたキーフレーム画像のうち、新たなキーフレーム画像の位置と最も近い最近傍のキーフレーム画像を選択する。次に、マップ生成部２２は、新たなキーフレーム画像に含まれる特徴点に対応する、最近傍のキーフレーム画像における特徴点をエピポーラ探索で特定する。エピポーラ探索とは、２視点間の幾何拘束を用い、１視点目の特徴点が存在するべき２視点目のエピポーラ線上のみを探索範囲として対応点を見つける処理である。
【００４９】
そして、マップ生成部２２は、新たなキーフレーム画像と最近傍のキーフレーム画像との間で対応付けられた特徴点の情報に基づき、三角測量を用いて、新たなキーフレーム画像のマップ点を算出する。なお、三角測量については、例えば、上記参考文献５の「5.1 Linear Triangulation」に記載の方法を用いることができる。
【００５０】
そして、マップ生成部２２は、新たなキーフレーム画像のマップ点をデータ記憶部１５へ格納する。
【００５１】
調整部２８は、データ記憶部１５に格納されたマップ情報に基づいて、全てのキーフレーム画像についての、キーフレーム画像上での特徴点とマップ点との間の再投影誤差の総和が最小となるように、マップ点を補正する。
【００５２】
具体的には、調整部２８は、データ記憶部１５のキーフレームテーブルに格納された各キーフレーム、各キーフレームに対応付けられたマップ点、及びカメラ１２の内部パラメータを取得する。そして、調整部２８は、キーフレーム画像上での特徴点とマップ点との間の再投影誤差が最小となるように、各キーフレーム画像が撮像されたときのカメラ１２の位置及び姿勢と、各キーフレーム画像の特徴点に対応付けられたマップ点の座標を補正する。キーフレーム画像上での特徴点とマップ点との間の再投影誤差を最小化するためのアルゴリズムとしては、以下の参考文献６に記載されているLevenberg-Marquardt法などの非線形最適化アルゴリズムを用いることができる。調整部２８における処理は、バンドル調整とも称される。
【００５３】
参考文献６：B. Triggs et al., "Bundle Adjustment- A Modern Synthesis", In Proc. of International Workshop on Vision Algorithms: Theory and Practice, pp.298-392, 1999.
【００５４】
そして、調整部２８は、データ記憶部１５に格納されたマップ情報のうちの各キーフレーム画像が撮像されたときのカメラ１２の位置及び姿勢を、補正された位置及び姿勢に置き換える。また、調整部２８は、データ記憶部１５に格納されたマップ情報のうちの各キーフレーム画像に対応付けられたマップ点の座標を、補正されたマップ点の座標に置き換える。
【００５５】
［最適化機能］
【００５６】
指標検出部２４は、データ記憶部１５に格納された新たなキーフレーム画像に、形状及び大きさが予め定められた指標が含まれているか否かを検出する。なお、指標は、カメラが移動する対象領域に予め設置される。また、指標は複数設置され、複数の指標の各々についての、指標間の相対的な位置及び姿勢は既知である。例えば、図６に示されるような指標１が、環境に予め設置される。図６に示されるように、指標１には、予め定められたパターン２が含まれている。
【００５７】
指標検出部２４は、例えば、参考文献７に記載の方法を用い、画像取得部１６によって出力されたグレースケール画像に指標が存在するか否かを判定する。具体的には、指標検出部２４は、画像取得部１６によって出力されたグレースケール画像に対して二値化を行う。そして、指標検出部２４は、指標の４隅座標の位置を推定することにより、指標を検出する。
【００５８】
参考文献７：H. Kato et al., "Marker tracking and HMD calibration for a video-based augmented reality conferencing system", In Proc. of IEEE and ACM International Workshop on Augmented Reality (IWAR), pp.85-94, 1999.
【００５９】
姿勢推定部２０は、指標検出部２４によって新たなキーフレーム画像から指標が検出された場合、指標を含むキーフレーム画像に基づいて、指標に対するカメラ１２の位置及び姿勢を推定する。例えば、姿勢推定部２０は、上記参考文献７の「4. Position and pose estimation of markers」に従って、指標に対するカメラ１２の位置及び姿勢を推定する。
【００６０】
そして、最適化部２６は、姿勢推定部２０によって推定された新たなキーフレーム画像が撮像されたときの指標に対するカメラ１２の位置及び姿勢に基づいて、データ記憶部１５に格納されたマップ情報を補正する。
【００６１】
本実施形態におけるマップ情報の補正について、具体的に説明する。
【００６２】
例えば、図７の７Ａに示されるように、各キーフレーム画像が撮像されたときのカメラの位置及び姿勢（ａ，ｂ，ｃ）が得られている場合を例に説明する。この場合、ａはスタート地点のキーフレーム画像が撮像されたときのカメラ１２の位置及び姿勢を表す。また、ｃは新たなキーフレーム画像が撮像されたときのカメラの位置及び姿勢を表す。ｂはａとｃとの間に位置するキーフレーム画像が撮像されたときのカメラ１２の位置及び姿勢を表す。また、Ｘは、姿勢推定部２０によって得られた、指標１に対するカメラ１２の位置及び姿勢を表す。
【００６３】
本実施形態では、図７の７Ｂに示されるように、カメラ１２の位置及び姿勢ａと、指標１に対するカメラ１２の位置及び姿勢Ｘとに基づき、各キーフレーム画像におけるカメラ１２の位置及び姿勢Ｙを得る。
【００６４】
具体的には、図７の７Ｃに示されるように、カメラ１２の位置及び姿勢（ａ，ｂ，ｃ）と、指標１に対するカメラ１２の位置及び姿勢Ｘと、カメラ１２の位置及び姿勢ａでの他の指標に対するカメラ１２の位置及び姿勢とを含むループが形成される。このとき、ループを表すグラフを再計算することにより、補正されたカメラ１２の位置及び姿勢Ｙを得る。これにより、補正前の移動軌跡Ｓが移動軌跡Ｐとなり、実世界と対応するマップ情報が得られる。
【００６５】
ここで、カメラの位置及び姿勢から形成されるループについてより詳細に説明する。
【００６６】
図８に示されるように、各キーフレーム画像が撮像されたときのカメラ１２の位置及び姿勢（ａ，ｂ，ｃ）と、新たなキーフレーム画像が撮像されたときの指標（１Ａ，１Ｂ）に対するカメラ１２の位置及び姿勢（Ｘ１，Ｘ２）とを含むループが形成される。ただし、指標（１Ａ，１Ｂ）間の相対的な位置及び姿勢は既知とする。
【００６７】
図８に示されるように、キーフレーム画像から指標１Ａが検出された場合、指標１Ａに対するカメラ１２の位置及び姿勢Ｘ１が推定される。なお、ａはキーフレーム画像として格納される際に推定されたカメラ１２の位置及び姿勢である。
【００６８】
また、新たなキーフレーム画像から指標１Ｂが検出された場合、指標１Ｂに対するカメラ１２の位置及び姿勢Ｘ２が推定される。なお、ｃはキーフレーム画像として格納される際に推定されたカメラ１２の位置及び姿勢である。
【００６９】
そして、指標（１Ａ，１Ｂ）間の相対的な位置及び姿勢と、指標１Ａに対するカメラ１２の位置及び姿勢Ｘ１と、各キーフレーム画像が撮像されたときのカメラ１２の位置及び姿勢ｂと、指標１Ｂに対するカメラ１２の位置及び姿勢Ｘ２とからループＺが形成される。これにより、以下の参考文献８に記載のPose Graph最適化を行うことが可能となる。
【００７０】
参考文献８：Ra´ul Mur-Artal and Juan D. Tard´os,"Fast Relocalisation and Loop Closing in Keyframe-Based SLAM",2014 IEEE International Conference on Robotics & Automation (ICRA) May 31 - June 7, 2014. Hong Kong, China
【００７１】
具体的には、まず、最適化部２６は、新たなキーフレーム画像から指標が検出された場合に、データ記憶部１５に格納されたマップ情報を取得する。次に最適化部２６は、前回、キーフレーム画像から指標が検出されたときの、指標に対するカメラ１２の位置及び姿勢と、過去のキーフレーム画像が撮像されたときのカメラ１２の位置及び姿勢の各々と、を取得する。最適化部２６は、更に、新たなキーフレーム画像が撮像されたときの指標に対するカメラ１２の位置及び姿勢と、指標間の相対的な位置及び姿勢とを取得して、ループを形成し、形成されるループに基づき、マップ情報を補正する。
【００７２】
より詳細には、最適化部２６は、以下の参考文献８に記載のPose Graph最適化により、新たなキーフレーム画像の周辺のキーフレーム画像におけるカメラ１２の位置及び姿勢の各々と、新たなキーフレーム画像におけるカメラ１２の位置及び姿勢とを補正する。
【００７３】
そして、最適化部２６は、各キーフレーム画像が撮像されたときのカメラ１２の位置及び姿勢の補正に応じて、各キーフレーム画像の特徴点に対応するマップ点の座標を座標変換する。具体的には、最適化部２６は、各キーフレーム画像が撮像されたときの補正前のカメラ１２の位置及び姿勢と、補正前の各キーフレーム画像の特徴点に対応するマップ点との間の相対的関係が維持されるように、マップ点の座標を座標変換する。
【００７４】
調整部２８は、最適化部２６によって補正された、各キーフレーム画像の特徴点へのマップ点の再投影誤差を最小化するように、各キーフレーム画像におけるカメラ１２の位置及び姿勢並びに各キーフレーム画像に対応付けられたマップ点の座標を補正する。そして、調整部２８は、データ記憶部１５に格納されたマップ情報のうちの各キーフレーム及び各キーフレーム画像に対応付けられたマップ点の座標を、補正された各キーフレーム画像及び各キーフレーム画像に対応付けられたマップ点の座標に置き換える。
【００７５】
情報処理装置１０の制御部１４は、例えば、図９に示すコンピュータ５０で実現することができる。コンピュータ５０はＣＰＵ５１、一時記憶領域としてのメモリ５２、及び不揮発性の記憶部５３を備える。また、コンピュータ５０は、カメラ１２、表示装置、及び入出力装置等（図示省略）が接続される入出力interface（Ｉ／Ｆ）５４、及び記録媒体５９に対するデータの読み込み及び書き込みを制御するread/write（Ｒ／Ｗ）部５５を備える。また、コンピュータ５０は、インターネット等のネットワークに接続されるネットワークＩ／Ｆ５６を備える。ＣＰＵ５１、メモリ５２、記憶部５３、入出力Ｉ／Ｆ５４、Ｒ／Ｗ部５５、及びネットワークＩ／Ｆ５６は、バス５７を介して互いに接続される。
【００７６】
記憶部５３は、Hard Disk Drive（ＨＤＤ）、solid state drive（ＳＳＤ）、フラッシュメモリ等によって実現できる。記憶媒体としての記憶部５３には、コンピュータ５０を情報処理装置１０の制御部１４として機能させるための情報処理プログラム６０が記憶されている。情報処理プログラム６０は、画像取得プロセス６２と、特徴点抽出プロセス６３と、姿勢推定プロセス６４と、マップ生成プロセス６５と、指標検出プロセス６６と、最適化プロセス６７と、調整プロセス６８とを有する。また、記憶部５３は、データ記憶部１５を構成する情報が記憶されるデータ記憶領域６９を有する。
【００７７】
ＣＰＵ５１は、情報処理プログラム６０を記憶部５３から読み出してメモリ５２に展開し、情報処理プログラム６０が有するプロセスを順次実行する。ＣＰＵ５１は、画像取得プロセス６２を実行することで、図１に示す画像取得部１６として動作する。また、ＣＰＵ５１は、特徴点抽出プロセス６３を実行することで、図１に示す特徴点抽出部１８として動作する。また、ＣＰＵ５１は、姿勢推定プロセス６４を実行することで、図１に示す姿勢推定部２０として動作する。また、ＣＰＵ５１は、マップ生成プロセス６５を実行することで、図１に示すマップ生成部２２として動作する。また、ＣＰＵ５１は、指標検出プロセス６６を実行することで、図１に示す指標検出部２４として動作する。また、ＣＰＵ５１は、最適化プロセス６７を実行することで、図１に示す最適化部２６として動作する。また、ＣＰＵ５１は、調整プロセス６８を実行することで、図１に示す調整部２８として動作する。また、ＣＰＵ５１は、データ記憶領域６９から情報を読み出して、データ記憶部１５をメモリ５２に展開する。これにより、情報処理プログラム６０を実行したコンピュータ５０が、情報処理装置１０の制御部１４として機能することになる。そのため、ソフトウェアである情報処理プログラム６０を実行するプロセッサはハードウェアである。
【００７８】
なお、情報処理プログラム６０により実現される機能は、例えば半導体集積回路、より詳しくはApplication Specific Integrated Circuit（ＡＳＩＣ）等で実現することも可能である。
【００７９】
次に、本実施形態に係る情報処理装置１０の作用について説明する。情報処理装置１０は、姿勢推定処理とマップ生成処理と最適化処理とを実行する。情報処理装置１０を搭載した端末が移動を開始し、カメラ１２がカメラの周辺の画像の撮像を開始すると、情報処理装置１０の制御部１４によって、図１０に示す姿勢推定処理が実行される。また、同様に、情報処理装置１０の制御部１４によって、図１１に示すマップ生成処理と、図１２に示す最適化処理とが実行される。以下、各処理について詳述する。
【００８０】
＜姿勢推定処理＞
【００８１】
ステップＳ１００において、画像取得部１６は、カメラ１２によって撮像された画像を取得する。次に、画像取得部１６は、カメラ１２によって撮像された画像をグレースケール画像へ変換する。そして、画像取得部１６は、グレースケール画像を出力する。
【００８２】
ステップＳ１０２において、特徴点抽出部１８は、上記ステップＳ１００で出力されたグレースケール画像から、特徴点を抽出する。そして、特徴点抽出部１８は、各特徴点に対して、特徴量を計算する。
【００８３】
ステップＳ１０４において、姿勢推定部２０は、上記ステップＳ１０２で抽出された特徴点及び特徴点に対応する特徴量に基づいて、カメラ１２の位置及び姿勢を推定する。
【００８４】
ステップＳ１０６において、姿勢推定部２０は、上記ステップＳ１００で出力されたグレースケール画像をキーフレーム画像として格納するか否かを判定する。グレースケール画像をキーフレーム画像として格納すると判定した場合には、ステップＳ１０８へ進む。一方、グレースケール画像をキーフレーム画像として格納しないと判定した場合には、ステップＳ１００へ戻る。
【００８５】
ステップＳ１０８において、姿勢推定部２０は、上記ステップＳ１００で出力されたグレースケール画像を、キーフレーム画像としてデータ記憶部１５へ格納する。また、上記ステップＳ１０４で推定された、カメラ１２の位置及び姿勢をデータ記憶部１５へ格納する。
【００８６】
＜マップ生成処理＞
【００８７】
ステップＳ２００において、マップ生成部２２は、姿勢推定処理によって新たなキーフレーム画像がデータ記憶部１５へ格納されたか否かを判定する。キーフレーム画像がデータ記憶部１５へ格納された場合、ステップＳ２０２へ進む。一方、キーフレーム画像がデータ記憶部１５へ格納されていない場合、ステップＳ２００へ戻る。
【００８８】
ステップＳ２０２において、マップ生成部２２は、姿勢推定処理によってデータ記憶部１５へ格納された新たなキーフレーム画像と、前回までにデータ記憶部１５へ格納されたキーフレーム画像とに基づき、新たなキーフレーム画像のマップ点を生成する。
【００８９】
ステップＳ２０４において、マップ生成部２２は、上記ステップＳ２０２で生成された新たなキーフレーム画像のマップ点をデータ記憶部１５へ格納する。
【００９０】
ステップＳ２０６において、調整部２８は、データ記憶部１５に格納されたマップ情報に基づいて、全てのキーフレーム画像についての、キーフレーム画像上での特徴点とマップ点との間の再投影誤差の総和が最小となるように、マップ点を補正する。そして、調整部２８は、データ記憶部１５に格納されたマップ情報のうちの各キーフレーム画像が撮像されたときのカメラ１２の位置及び姿勢を、補正された位置及び姿勢に置き換える。また、調整部２８は、データ記憶部１５に格納されたマップ情報のうちの各キーフレーム画像に対応付けられたマップ点を、補正されたマップ点に置き換える。
【００９１】
＜最適化処理＞
【００９２】
ステップＳ３００において、指標検出部２４は、姿勢推定処理によってデータ記憶部１５に格納された新たなキーフレーム画像に指標が含まれているか否かを判定する。新たなキーフレーム画像に指標が含まれている場合には、ステップＳ３０２へ進む。
【００９３】
ステップＳ３０２において、姿勢推定部２０は、指標を含む新たなキーフレーム画像に基づいて、指標に対するカメラ１２の位置及び姿勢を推定する。
【００９４】
ステップＳ３０４において、最適化部２６は、データ記憶部１５に格納された過去のキーフレーム画像におけるカメラ１２の位置及び姿勢の各々と、上記ステップＳ３０２で得られた指標に対するカメラ１２の位置及び姿勢とからループを形成する。そして、最適化部２６は、形成されるループに基づき、Pose Graph最適化により、過去のキーフレーム画像におけるカメラ１２の位置及び姿勢の各々と、新たなキーフレーム画像におけるカメラ１２の位置及び姿勢とを補正する。
【００９５】
ステップＳ３０６において、最適化部２６は、上記ステップＳ３０４で得られた、各キーフレーム画像が撮像されたときのカメラ１２の位置及び姿勢の補正に応じて、各キーフレームのマップ点の座標を座標変換する。
例えば、ループに基づく位置及び姿勢の補正はLoop Closure最適化を利用する事ができる。
【００９６】
ステップＳ３０８において、調整部２８は、上記ステップＳ３０６で得られたマップ点の各キーフレーム画像の特徴点への再投影誤差を最小化するように、各キーフレーム画像におけるカメラ１２の位置及び姿勢と、各キーフレーム画像のマップ点を補正する。そして、調整部２８は、データ記憶部１５に格納されたマップ情報のうちの各キーフレーム及び各キーフレームに対応付けられたマップ点を、補正された各キーフレーム及び各キーフレームに対応付けられたマップ点に置き換える。
【００９７】
以上説明したように、本実施形態に係る情報処理装置は、カメラによって撮像された画像に基づいて、カメラの位置及び姿勢を推定する。そして、撮像された画像から予め定められた指標が検出された場合に、カメラの位置及び姿勢の各々と、指標に対するカメラの位置及び姿勢とから形成されるループに基づいて、キーフレーム画像の各々を撮像したときのカメラの位置及び姿勢の各々を推定する。これにより、カメラの位置及び姿勢の推定誤差を低減させることができる。
【００９８】
また、指標が検出される毎に、キーフレーム画像の各々を撮像したときのカメラの位置及び姿勢の各々の最適化を行うことにより、高頻度で最適化を行うことができる。
【００９９】
また、高頻度で最適化が行われることにより、調整部によって行われるバンドル調整の収束までの時間が減少し、局所解への収束を回避することができる。
【０１００】
＜第２の実施形態＞
次に、第２の実施形態について説明する。第２の実施形態では、カメラによって撮像された画像から指標が検出された場合に、指標の検出結果に応じて、指標を含む画像の信頼度を算出する。そして、信頼度が予め設定された閾値より大きい場合に、キーフレーム画像の各々が撮像されたときのカメラの位置及び姿勢の各々を補正する点が第１の実施形態と異なる。
【０１０１】
図１３に、第２の実施形態の情報処理装置２１０の構成例を示す。第２の実施形態の情報処理装置２１０は、図１３に示されるように、カメラ１２と、制御部２１４とを備える。
【０１０２】
制御部２１４は、データ記憶部１５と、画像取得部１６と、特徴点抽出部１８と、姿勢推定部２０と、マップ生成部２２と、指標検出部２４と、最適化部２２６と、調整部２８と、信頼度算出部２２５とを備える。
【０１０３】
信頼度算出部２２５は、データ記憶部１５に格納されたキーフレーム画像から指標が検出された場合に、指標の検出結果に応じて信頼度を算出する。
【０１０４】
例えば、信頼度算出部２２５は、キーフレーム画像から検出された指標の平面の法線と、カメラ１２の光軸とのなす角θを算出する。そして、信頼度算出部２２５は、なす角θが、θ１≦θ≦θ２を満たす場合には、角度に関する信頼度を高くする。一方、なす角θが、θ１≦θ≦θ２を満たさない場合には、角度に関する信頼度を低くする。θ１とθ２とは予め設定され、例えば、θ１＝π／１８、θ２＝４π／９である。指標とカメラとの光軸間のなす角θが大きすぎる場合又は小さすぎる場合は、指標の４隅の検出点の誤差がカメラの位置及び姿勢推定に大きな影響を及ぼすようになり（例えば参考文献９を参照）、推定精度が悪化するため、なす角θに応じて信頼度を算出する。
【０１０５】
参考文献９：Y. Uematsu et al., "Improvement of Accuracy for 2D Marker-Based Tracking Using Particle Filter", In Proc. of IEEE International Conference on Artificial Reality and Telexistence(ICAT), pp.183-189, 2007.
【０１０６】
また、信頼度算出部２２５は、カメラ１２と指標との間の距離ｄに応じて、距離に関する信頼度を算出する。信頼度算出部２２５は、距離ｄが大きいほど信頼度が低くなるように、かつ距離ｄが小さいほど信頼度が高くなるように、距離に関する信頼度を算出する。カメラ１２と指標との間の距離が大きくなると、４隅の検出点の同定精度が悪化し、推定精度が悪化するため、距離に応じて信頼度を算出する。
【０１０７】
また、信頼度算出部２２５は、キーフレーム画像から検出された指標に含まれるパターンと、予め登録されたパターンの一致度を、一致に関する信頼度として算出する。パターンの一致度が低いと、異なる指標と認識される可能性が大きくなるため、パターンの一致度に応じて信頼度を算出する。
【０１０８】
最適化部２２６は、信頼度算出部２２５によって算出された信頼度に応じて、過去のキーフレーム画像が撮像されたときのカメラ１２の位置及び姿勢の各々と、新たなキーフレーム画像が撮像されたときの指標に対するカメラ１２の位置及び姿勢とを補正する。
【０１０９】
例えば、最適化部２２６は、信頼度算出部２２５によって算出された、角度に関する信頼度、距離に関する信頼度、及び一致に関する信頼度の少なくとも１つが閾値以上である場合に、キーフレーム画像が撮像されたときのカメラ１２の位置及び姿勢の補正を行う。または、最適化部２２６は、信頼度算出部２２５により算出された、角度に関する信頼度、距離に関する信頼度、及び一致に関する信頼度の全てが閾値以上である場合、キーフレーム画像が撮像されたときのカメラ１２の位置及び姿勢の補正を行うようにしてもよい。
【０１１０】
情報処理装置２１０の制御部２１４は、例えば、図１４に示すコンピュータ５０で実現することができる。コンピュータ５０の記憶媒体としての記憶部５３には、コンピュータ５０を情報処理装置２１０の制御部２１４として機能させるための情報処理プログラム２６０が記憶されている。情報処理プログラム２６０は、画像取得プロセス６２と、特徴点抽出プロセス６３と、姿勢推定プロセス６４と、マップ生成プロセス６５と、指標検出プロセス６６と、信頼度算出プロセス２６６と、最適化プロセス２６７と、調整プロセス６８とを有する。また、記憶部５３は、データ記憶部１５を構成する情報が記憶されるデータ記憶領域６９を有する。
【０１１１】
ＣＰＵ５１は、情報処理プログラム２６０を記憶部５３から読み出してメモリ５２に展開し、情報処理プログラム６０が有するプロセスを順次実行する。ＣＰＵ５１は、画像取得プロセス６２を実行することで、図１３に示す画像取得部１６として動作する。また、ＣＰＵ５１は、特徴点抽出プロセス６３を実行することで、図１３に示す特徴点抽出部１８として動作する。また、ＣＰＵ５１は、姿勢推定プロセス６４を実行することで、図１３に示す姿勢推定部２０として動作する。また、ＣＰＵ５１は、マップ生成プロセス６５を実行することで、図１３に示すマップ生成部２２として動作する。また、ＣＰＵ５１は、指標検出プロセス６６を実行することで、図１３に示す指標検出部２４として動作する。また、ＣＰＵ５１は、信頼度算出プロセス２６６を実行することで、図１３に示す信頼度算出部２２５として動作する。また、ＣＰＵ５１は、最適化プロセス２６７を実行することで、図１３に示す最適化部２２６として動作する。また、ＣＰＵ５１は、調整プロセス６８を実行することで、図１３に示す調整部２８として動作する。また、ＣＰＵ５１は、データ記憶領域６９から情報を読み出して、データ記憶部１５をメモリ５２に展開する。これにより、情報処理プログラム６０を実行したコンピュータ５０が、情報処理装置２１０の制御部２１４として機能することになる。そのため、ソフトウェアである情報処理プログラム２６０を実行するプロセッサはハードウェアである。
【０１１２】
なお、情報処理プログラム２６０により実現される機能は、例えば半導体集積回路、より詳しくはＡＳＩＣ等で実現することも可能である。
【０１１３】
次に第２の実施形態における情報処理装置２１０の作用について説明する。情報処理装置２１０によって、図１５に示す最適化処理が実行される。
【０１１４】
＜最適化処理＞
ステップＳ３００〜ステップＳ３０２、ステップＳ３０４〜ステップＳ３０８は第１の実施形態と同様に実行される。
【０１１５】
ステップＳ４０３において、信頼度算出部２２５は、キーフレーム画像の指標の検出結果に応じて信頼度を算出する。
【０１１６】
ステップＳ４０４において、最適化部２２６は、上記ステップＳ４０３で算出された信頼度が閾値以上であるか否かを判定する。信頼度が閾値以上である場合には、ステップＳ３０４へ進む。一方、信頼度が閾値未満である場合には、ステップＳ３００へ戻る。
【０１１７】
以上説明したように、第２の実施形態では、情報処理装置２１０は、カメラによって撮像された画像から指標が検出された場合に、指標の検出結果に応じて、指標を含むキーフレーム画像の信頼度を算出する。そして、情報処理装置２１０は、信頼度が予め設定された閾値より大きい場合に、キーフレーム画像の各々が撮像されたときのカメラの位置及び姿勢の各々を補正する。これにより、指標の検出に関する信頼度を用いて、キーフレーム画像の各々が撮像されたときのカメラの位置及び姿勢の各々を精度よく補正することができる。
【０１１８】
＜第３の実施形態＞
次に、第３の実施形態について説明する。第３の実施形態では、推定されたカメラの位置及び姿勢に応じて、予め設定された対象物が表示装置に重畳表示されるように、表示装置を制御する点が第１又は第２の実施形態と異なる。
【０１１９】
図１６に、第３の実施形態の情報処理装置３１０の構成例を示す。第３の実施形態の情報処理装置３１０は、図１６に示されるように、カメラ１２と、制御部３１４と、表示装置３２６とを備える。また、第３の実施形態では、情報処理装置３１０が情報端末に搭載される場合を例に説明する。ユーザは情報端末を操作して、表示装置に表示される画面を閲覧する。
【０１２０】
制御部３１４は、データ記憶部１５と、画像取得部１６と、特徴点抽出部１８と、姿勢推定部３２０と、マップ生成部２２と、指標検出部３２４と、最適化部２６と、調整部２８と、初期位置推定部３１９と、表示制御部３２５とを備える。
【０１２１】
第３の実施形態のデータ記憶部１５には、予め生成されたマップ情報が格納されている。
【０１２２】
初期位置推定部３１９は、特徴点抽出部１８によって抽出された特徴点及び特徴点に対応する特徴量と、データ記憶部１５に格納されたマップ情報とに基づいて、上記参考文献８に記載のRelocalizationにより、カメラ１２の初期の位置及び初期の姿勢を推定する。
【０１２３】
具体的には初期位置推定部３１９は、特徴点抽出部１８により抽出された特徴点及び特徴点に対応する特徴量と、マップ情報のうちの特徴点及び特徴点に対応する特徴量とに基づき、画像取得部１６により取得された画像と最も類似するキーフレーム画像を探索する。そして、初期位置推定部３１９は、画像取得部１６によって取得された画像と最も類似するキーフレーム画像との間で、特徴点のマッチングを行う。そして、初期位置推定部３１９は、最も類似するキーフレーム画像における特徴点とマップ点とのペアに基づき、画像取得部１６により取得された画像における特徴点とマップ点とを対応付ける。そして、初期位置推定部３１９は、上記参考文献４に記載のPnPアルゴリズムにより、カメラ１２の初期の位置及び初期の姿勢を推定する。
【０１２４】
指標検出部３２４は、更に、画像取得部１６によって出力されたグレースケール画像に、指標が含まれているか否かを検出する。
【０１２５】
姿勢推定部３２０は、指標検出部３２４によって指標が検出された場合には、指標を含むグレースケール画像に基づいて、指標に対するカメラ１２の位置及び姿勢を推定する。一方、姿勢推定部３２０は、指標検出部３２４によって指標が検出されなかった場合には、特徴点抽出部１８により抽出された特徴点及び特徴点に対応する特徴量に基づいて、カメラ１２の位置及び姿勢を推定する。なお、姿勢推定部２０は、例えば、以下の参考文献１０に記載の方法を使用して、カメラ１２の位置及び姿勢を推定してもよい。
【０１２６】
参考文献１０：特開２０１５‐１５８４６１号公報
【０１２７】
表示制御部３２５は、姿勢推定部２０によって推定されたカメラ１２の位置及び姿勢に基づいて、予め設定された対象物が表示装置３２６に重畳表示されるように、表示装置３２６を制御する。
【０１２８】
例えば、表示装置３２６には、図１７に示されるようなカメラ１２で撮影された表示画面Ｄが表示される。表示制御部３２５は、姿勢推定部２０によって推定されたカメラ１２の位置及び姿勢に基づいて、対象物Ｇが表示装置３２６に重畳表示されるように、表示装置３２６を制御する。
【０１２９】
情報処理装置３１０の制御部３１４は、例えば、図１８に示すコンピュータ５０で実現することができる。コンピュータ５０はＣＰＵ５１、一時記憶領域としてのメモリ５２、及び不揮発性の記憶部５３を備える。また、コンピュータ５０は、カメラ１２、表示装置３２６、及び入出力装置等（図示省略）が接続される入出力Ｉ／Ｆ５４、及び記録媒体５９に対するデータの読み込み及び書き込みを制御するＲ／Ｗ部５５を備える。
【０１３０】
記憶部５３は、ＨＤＤ、ＳＳＤ、フラッシュメモリ等によって実現できる。記憶媒体としての記憶部５３には、コンピュータ５０を情報処理装置３１０の制御部３１４として機能させるための情報処理プログラム３６０が記憶されている。情報処理プログラム３６０は、画像取得プロセス６２と、特徴点抽出プロセス６３と、姿勢推定プロセス３６４と、マップ生成プロセス６５と、指標検出プロセス３６６とを有する。また、情報処理プログラム３６０は、最適化プロセス６７と、調整プロセス６８と、初期位置推定プロセス３７０と、表示制御プロセス３７１とを有する。また、記憶部５３は、データ記憶部１５を構成する情報が記憶されるデータ記憶領域６９を有する。
【０１３１】
ＣＰＵ５１は、情報処理プログラム２６０を記憶部５３から読み出してメモリ５２に展開し、情報処理プログラム６０が有するプロセスを順次実行する。ＣＰＵ５１は、画像取得プロセス６２を実行することで、図１６に示す画像取得部１６として動作する。また、ＣＰＵ５１は、特徴点抽出プロセス６３を実行することで、図１６に示す特徴点抽出部１８として動作する。また、ＣＰＵ５１は、姿勢推定プロセス３６４を実行することで、図１６に示す姿勢推定部３２０として動作する。また、ＣＰＵ５１は、マップ生成プロセス６５を実行することで、図１６に示すマップ生成部２２として動作する。また、ＣＰＵ５１は、指標検出プロセス３６６を実行することで、図１６に示す指標検出部３２４として動作する。また、ＣＰＵ５１は、最適化プロセス６７を実行することで、図１６に示す最適化部２６として動作する。また、ＣＰＵ５１は、調整プロセス６８を実行することで、図１６に示す調整部２８として動作する。また、ＣＰＵ５１は、初期位置推定プロセス３７０を実行することで、図１６に示す初期位置推定部３１９として動作する。また、ＣＰＵ５１は、表示制御プロセス３７１を実行することで、図１６に示す表示制御部３２５として動作する。また、ＣＰＵ５１は、データ記憶領域６９から情報を読み出して、データ記憶部１５をメモリ５２に展開する。これにより、情報処理プログラム３６０を実行したコンピュータ５０が、情報処理装置３１０の制御部３１４として機能することになる。そのため、ソフトウェアである情報処理プログラム３６０を実行するプロセッサはハードウェアである。
【０１３２】
なお、情報処理プログラム３６０により実現される機能は、例えば半導体集積回路、より詳しくはＡＳＩＣ等で実現することも可能である。
【０１３３】
次に、第３の実施形態に係る情報処理装置３１０の作用について説明する。情報処理装置３１０は、姿勢推定処理とマップ生成処理と最適化処理と表示制御処理とを実行する。姿勢推定処理とマップ生成処理と最適化処理とについては、第１又は第２の実施形態と同様である。以下、図１９に示す表示制御処理について詳述する。
【０１３４】
＜表示制御処理＞
表示制御処理を実行することを表す指示信号を受け付けると、情報処理装置３１０は、図１９に示す表示制御処理を実行する。
【０１３５】
ステップＳ５００において、初期位置推定部３１９は、データ記憶部１５に格納されたマップ情報を取得する。
【０１３６】
ステップＳ５０２において、画像取得部１６は、カメラ１２によって撮像された初期の画像を取得する。次に、画像取得部１６は、カメラ１２によって撮像された画像をグレースケール画像へ変換する。そして、画像取得部１６は、グレースケール画像を出力する。
【０１３７】
ステップＳ５０４において、特徴点抽出部１８は、上記ステップＳ５０２で出力されたグレースケール画像から、特徴点を抽出する。そして、特徴点抽出部１８は、各特徴点に対して、特徴量を計算する。
【０１３８】
ステップＳ５０６において、初期位置推定部３１９は、上記ステップＳ５０４で抽出された特徴点及び特徴点に対応する特徴量と、上記ステップＳ５００で取得されたマップ情報とに基づき、カメラ１２の初期の位置及び初期の姿勢を推定する。
【０１３９】
ステップＳ５０８において、画像取得部１６は、カメラ１２によって撮像された画像を取得する。次に、画像取得部１６は、カメラ１２によって撮像された画像をグレースケール画像へ変換する。そして、画像取得部１６は、グレースケール画像を出力する。
【０１４０】
ステップＳ５１０において、指標検出部３２４は、上記ステップＳ５０８で出力されたグレースケール画像に、指標が含まれているか否かを判定する。グレースケール画像に指標が含まれている場合には、ステップＳ５１２へ進む。一方、グレースケール画像に指標が含まれていない場合には、ステップＳ５１４へ進む。
【０１４１】
ステップＳ５１２において、姿勢推定部３２０は、指標を含むグレースケール画像に基づいて、指標に対するカメラ１２の位置及び姿勢を推定する。
【０１４２】
ステップＳ５１４において、特徴点抽出部１８は、上記ステップＳ５０８で出力されたグレースケール画像から、特徴点を抽出する。そして、特徴点抽出部１８は、各特徴点に対して、特徴量を計算する。
【０１４３】
ステップＳ５１６において、姿勢推定部３２０は、上記ステップＳ５１４で抽出された特徴点及び特徴点に対応する特徴量に基づいて、カメラ１２の位置及び姿勢を推定する。
【０１４４】
ステップＳ５１８において、表示制御部３２５は、上記ステップＳ５１６で推定されたカメラ１２の位置及び姿勢に基づいて、予め設定された対象物が表示装置３２６に重畳表示されるように、表示装置３２６を制御する。
【０１４５】
ステップＳ５２０において、表示制御部３２５は、表示制御処理の停止信号を受け付けたか否かを判定する。表示制御処理の停止信号を受け付けた場合には、表示制御処理を終了する。表示制御処理の停止信号を受け付けていない場合には、ステップＳ５０８へ戻る。
【０１４６】
以上説明したように、第３の実施形態では、情報処理装置３１０は、推定されたカメラの位置及び姿勢に応じて、対象物が表示装置に重畳表示されるように、表示装置を制御する。また、指標が検出される毎に、キーフレーム画像の各々が撮像されたときのカメラの位置及び姿勢の各々の最適化が行われることにより、高頻度で最適化が行われる。これにより、精度よく推定されたカメラの位置及び姿勢に応じて、表示画面の適切な箇所へ対象物を表示させることができる。
【０１４７】
＜第４の実施形態＞
次に、第４の実施形態について説明する。第４の実施形態では、カメラによって撮像された画像から、前回検出された指標と対応する指標が検出された場合に、キーフレーム画像におけるカメラの位置及び姿勢を推定する点が第１〜第３の実施形態と異なる。
【０１４８】
第１の実施形態では、複数の指標間の相対的な位置及び姿勢が既知である必要がある。第４の実施形態では、複数の指標間の相対的な位置及び姿勢が既知である必要はない。
【０１４９】
図２０に、第４の実施形態の情報処理装置４１０の構成例を示す。第４の実施形態の情報処理装置４１０は、図２０に示されるように、カメラ１２と、制御部４１４とを備える。
【０１５０】
制御部４１４は、データ記憶部１５と、画像取得部１６と、特徴点抽出部１８と、姿勢推定部４２０と、マップ生成部２２と、指標検出部４２４と、最適化部４２６と、調整部２８とを備える。
【０１５１】
［姿勢推定処理］
【０１５２】
指標検出部４２４は、更に、画像取得部１６によって出力されたグレースケール画像に、指標が含まれているか否かを検出する。
【０１５３】
姿勢推定部４２０は、特徴点抽出部１８により抽出された特徴点及び特徴点に対応する特徴量に基づいて、カメラ１２の位置及び姿勢を推定する。また、姿勢推定部４２０は、更に、指標検出部４２４によって指標が検出された場合には、指標を含むグレースケール画像に基づいて、指標に対するカメラ１２の位置及び姿勢を推定する。
【０１５４】
そして、姿勢推定部４２０は、指標検出部４２４によって指標が検出された場合には、指標を含むグレースケール画像をキーフレーム画像としてデータ記憶部１５へ格納する。なお、指標が検出された場合には、指標を含むグレースケール画像がキーフレーム画像としてデータ記憶部１５へ格納されるが、データ記憶部１５へキーフレーム画像として格納される画像には、指標が必ず含まれているわけではない。例えば、第１の実施形態と同様に、所定の条件を満たしたキーフレーム画像も同様にデータ記憶部１５へ格納される。
【０１５５】
また、姿勢推定部４２０は、キーフレーム画像と共に、指標に対するカメラ１２の位置及び姿勢をデータ記憶部１５へ格納する。なお、姿勢推定部４２０は、キーフレーム画像を格納する際に、キーフレーム画像と共に、指標の識別情報を表す指標ＩＤをデータ記憶部１５へ格納する。例えば、キーフレーム画像中の指標領域画像を、指標ＩＤとすることができる。また、姿勢推定部４２０は、連続するフレームで指標ＩＤが同一の指標が検出された場合には、画像取得部１６によって出力されたグレースケール画像についてキーフレーム画像として格納しない。
【０１５６】
また、姿勢推定部４２０は、指標を含むグレースケール画像を新たなキーフレーム画像として格納する際に、データ記憶部１５に既に格納されたキーフレーム画像に含まれる指標と同一であるか否かを判定する。具体的には、新たなキーフレーム画像に含まれている指標領域画像と、データ記憶部１５に格納された指標ＩＤとが同一であるか否かを判定する。
【０１５７】
最適化部４２６は、新たなキーフレーム画像に含まれる指標領域画像がデータ記憶部１５に格納されている指標ＩＤと同一であると判定された場合、各キーフレーム画像が撮像されたときのカメラ１２の位置及び姿勢に基づき、ループを形成する。具体的には、最適化部４２６は、新たなキーフレーム画像を撮像したときのカメラ１２の位置及び姿勢と、データ記憶部１５に既に格納された過去のキーフレーム画像が撮像されたときのカメラ１２の位置及び姿勢との間にエッジを形成しループを形成する。
【０１５８】
例えば、図２１に示されるように、新たなキーフレーム画像から指標１が検出された場合、指標１に対するカメラ１２の位置及び姿勢Ｘ１が推定される。また、既にデータ記憶部１５に格納されている過去のキーフレーム画像からは指標１が検出されており、指標１に対するカメラ１２の位置及び姿勢Ｘ２が推定されている。
【０１５９】
この場合、指標１に対するカメラ１２の位置及び姿勢Ｘ１と、各キーフレーム画像が撮像されたときのカメラ１２の位置及び姿勢ｂと、指標１に対するカメラ１２の位置及び姿勢Ｘ２とからループが形成される。これにより、上記参考文献８に記載のPose Graph最適化を行うことが可能となる。
【０１６０】
従って、最適化部４２６は、上記参考文献８に記載のPose Graph最適化により、既にデータ記憶部１５に格納されている過去のキーフレーム画像におけるカメラ１２の位置及び姿勢の各々を補正する。
【０１６１】
情報処理装置４１０の制御部４１４は、例えば、図２２に示すコンピュータ５０で実現することができる。コンピュータ５０の記憶媒体としての記憶部５３には、コンピュータ５０を情報処理装置４１０の制御部４１４として機能させるための情報処理プログラム４６０が記憶されている。情報処理プログラム４６０は、画像取得プロセス６２と、特徴点抽出プロセス６３と、姿勢推定プロセス４６４と、マップ生成プロセス６５と、指標検出プロセス４６６と、最適化プロセス４６７と、調整プロセス６８とを有する。また、記憶部５３は、データ記憶部１５を構成する情報が記憶されるデータ記憶領域６９を有する。
【０１６２】
ＣＰＵ５１は、情報処理プログラム４６０を記憶部５３から読み出してメモリ５２に展開し、情報処理プログラム４６０が有するプロセスを順次実行する。ＣＰＵ５１は、画像取得プロセス６２を実行することで、図２０に示す画像取得部１６として動作する。また、ＣＰＵ５１は、特徴点抽出プロセス６３を実行することで、図２０に示す特徴点抽出部１８として動作する。また、ＣＰＵ５１は、姿勢推定プロセス４６４を実行することで、図２０に示す姿勢推定部４２０として動作する。また、ＣＰＵ５１は、マップ生成プロセス６５を実行することで、図２０に示すマップ生成部２２として動作する。また、ＣＰＵ５１は、指標検出プロセス４６６を実行することで、図２０に示す指標検出部４２４として動作する。また、ＣＰＵ５１は、最適化プロセス４６７を実行することで、図２０に示す最適化部４２６として動作する。また、ＣＰＵ５１は、調整プロセス６８を実行することで、図２０に示す調整部２８として動作する。また、ＣＰＵ５１は、データ記憶領域６９から情報を読み出して、データ記憶部１５をメモリ５２に展開する。これにより、情報処理プログラム４６０を実行したコンピュータ５０が、情報処理装置４１０の制御部４１４として機能することになる。そのため、ソフトウェアである情報処理プログラム４６０を実行するプロセッサはハードウェアである。
【０１６３】
なお、情報処理プログラム４６０により実現される機能は、例えば半導体集積回路、より詳しくはＡＳＩＣ等で実現することも可能である。
【０１６４】
次に、第４の実施形態に係る情報処理装置４１０の作用について説明する。情報処理装置４１０は、図２３に示す姿勢推定処理を実行する。また、情報処理装置４１０は、図２４に示す最適化処理を実行する。
【０１６５】
＜姿勢推定処理＞
ステップＳ１００〜ステップＳ１０４は第１の実施形態と同様に実行される。
【０１６６】
ステップＳ６０６において、指標検出部４２４は、ステップＳ１００で出力されたグレースケール画像に、指標が含まれているか否かを検出する。グレースケール画像に指標が含まれていると検出された場合には、ステップＳ６０７へ進む。一方、グレースケール画像に指標が含まれていないと検出された場合には、ステップＳ１００へ進む。
【０１６７】
ステップＳ６０７において、姿勢推定部４２０は、指標を含むグレースケール画像に基づいて、指標に対するカメラ１２の位置及び姿勢を推定する。
【０１６８】
ステップＳ６０８において、姿勢推定部４２０は、上記ステップＳ１００で出力されたグレースケール画像をキーフレーム画像としてデータ記憶部１５へ格納する。また、姿勢推定部４２０は、キーフレーム画像と共に、上記ステップＳ６０７で推定された指標に対するカメラ１２の位置及び姿勢をデータ記憶部１５へ格納する。また、姿勢推定部４２０は、キーフレーム画像を格納する際に、指標の識別情報を表す指標ＩＤをデータ記憶部１５へ格納する。
【０１６９】
＜最適化処理＞
ステップＳ２０４〜ステップＳ２０６は、第１の実施形態と同様に実行される。
【０１７０】
ステップＳ７００において、姿勢推定部４２０は、指標を含むグレースケール画像を新たなキーフレーム画像として格納する際に、新たなキーフレーム画像に含まれている指標領域画像と、データ記憶部１５に格納された指標ＩＤとが同一であるか否かを判定する。新たなキーフレーム画像に含まれている指標領域画像と同一である指標ＩＤがデータ記憶部１５に格納されている場合には、ステップＳ７０２へ進む。一方、新たなキーフレーム画像に含まれている指標領域画像と同一である指標ＩＤがデータ記憶部１５に格納されている場合には、ステップＳ７００の処理を繰り返す。
【０１７１】
ステップＳ７０２において、最適化部４２６は、新たなキーフレーム画像におけるカメラ１２の位置及び姿勢と、データ記憶部１５に既に格納された過去のキーフレーム画像におけるカメラ１２の位置及び姿勢との間にエッジを形成しループを形成する。そして、最適化部４２６は、上記参考文献８に記載のPose Graph最適化により、既にデータ記憶部１５に格納されている過去のキーフレーム画像におけるカメラ１２の位置及び姿勢の各々を補正する。
【０１７２】
なお、上記では、各プログラムが記憶部に予め記憶（インストール）されている態様を説明したが、これに限定されない。開示の技術に係るプログラムは、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ＵＳＢメモリ等の記録媒体に記録された形態で提供することも可能である。
【０１７３】
本明細書に記載された全ての文献、特許出願及び技術規格は、個々の文献、特許出願及び技術規格が参照により取り込まれることが具体的かつ個々に記された場合と同程度に、本明細書中に参照により取り込まれる。
【０１７４】
次に、上記各実施形態の変形例を説明する。
【０１７５】
上記第１及び第２の実施形態では、姿勢推定部２０は、画像から抽出された特徴点及び特徴点に対応する特徴量と、データ記憶部１５に格納されたマップ情報とに基づいて、カメラ１２の位置及び姿勢を推定する場合を例に説明したがこれに限定されるものではない。例えば、指標検出部によって、グレースケール画像内に指標が検出された場合には、指標に対するカメラ１２の位置及び姿勢を推定するようにしてもよい。
【０１７６】
また、上記各実施形態では、データ記憶部１５に格納されている全てのキーフレームに対して、Pose Graph最適化とバンドル調整を行う場合を例に説明したがこれに限定されるものではない。例えば、バンドル調整が実施されていないキーフレームに対してPose Graph最適化を行ってもよい。また、Pose Graph最適化が行われていないキーフレームに対してバンドル調整を行ってもよい。Pose Graph最適化の実施とバンドル調整の実施との組み合わせについては、適宜変更してもよい。
【０１７７】
また、上記各実施形態では、キーフレーム画像から推定されたカメラの位置及び姿勢と、画像から指標が検出された際の指標に対する位置及び姿勢とでループを形成する場合について説明したが、これに限定されない。例えば、画像取得部によって前回までに逐次取得された画像の各々から推定されたカメラの位置及び姿勢と、画像から指標が検出された際の指標に対する位置及び姿勢とでループを形成し、最適化を実行してもよい。この場合、キーフレーム画像から推定された位置及び姿勢だけでなく、取得された画像の各々について推定された位置及び姿勢が最適化されるため、カメラの移動軌跡を精度良く推定することができる。なお、この場合、画像取得部で画像が取得される都度、画像に指標が含まれるか否かを判定するようにすればよい。
【０１７８】
また、上記第３の実施形態では、表示装置に対象物を表示される場合を例に説明したが、例えば、工場又はプラント等の大規模な環境を撮影した画像に対して、付加情報を重畳表示させるように表示装置を制御し、作業者の作業支援を行うようにしてもよい。
【０１７９】
以上の各実施形態に関し、更に以下の付記を開示する。
【０１８０】
（付記１）
撮影位置が変化し得る撮像装置によって撮像された画像を取得する画像取得部と、
前記画像取得部によって取得された前記画像に基づいて、前記撮像装置の位置及び姿勢を推定し、前記画像取得部によって取得された前記画像から予め定められた指標が検出された場合に、前記指標に対する前記撮像装置の位置及び姿勢を推定する姿勢推定部と、
前記画像取得部によって取得された前記画像から前記指標が検出された場合に、前回までに取得された前記画像の各々に基づいて推定された前記撮像装置の位置の各々と、前記姿勢推定部によって推定された前記指標に対する前記撮像装置の位置とから形成されるループに基づいて、前記画像の各々が撮像されたときの前記撮像装置の位置及び姿勢の各々を補正する推定部と、
を含む情報処理装置。
【０１８１】
（付記２）
前記推定部は、前記画像取得部により取得された画像のうち、所定の条件を満たすキーフレーム画像の各々が撮像されたときの前記撮像装置の位置及び姿勢の各々の推定結果に基づいて、前記キーフレーム画像の特徴点の各々に対応する位置の３次元座標を表すマップ点を生成する、
付記１に記載の情報処理装置。
【０１８２】
（付記３）
前記推定部は、前記画像取得部により取得された画像のうち、所定の条件を満たすキーフレーム画像の各々が撮像されたときの前記撮像装置の位置及び姿勢の各々の推定結果に基づいて、記憶部に格納された、前記キーフレーム画像の各々が撮像されたときの前記撮像装置の位置及び姿勢の各々を補正する、
付記１又は付記２に記載の情報処理装置。
【０１８３】
（付記４）
複数の前記指標の各々についての、前記指標間の相対的な位置及び姿勢は既知である、
付記１〜付記３の何れか１項に記載の情報処理装置。
【０１８４】
（付記５）
前記画像取得部によって取得された前記画像から前記指標が検出された場合に、前記指標の検出結果に応じて、前記指標を含む前記画像の信頼度を算出する信頼度算出部を更に含み、
前記推定部は、前記信頼度算出部によって算出された前記信頼度が予め設定された閾値より大きい場合に、前記画像の各々が撮像されたときの前記撮像装置の位置及び姿勢の各々を補正する、
付記１〜付記４の何れか１項に記載の情報処理装置。
【０１８５】
（付記６）
前記姿勢推定部によって推定された前記撮像装置の位置及び姿勢に応じて、予め設定された対象物が表示装置に重畳表示されるように、前記表示装置を制御する表示制御部を更に含む、
付記１〜付記５の何れか１項に記載の情報処理装置。
【０１８６】
（付記７）
前記推定部は、前記画像取得部によって取得された前記画像から、前回検出された前記指標と対応する前記指標が検出された場合に、前記画像の各々が撮像されたときの前記撮像装置の位置及び姿勢の各々を補正する、
付記１〜付記６の何れか１項に記載の情報処理装置。
【０１８７】
（付記８）
撮影位置が移動に伴って変わる撮像装置によって撮像された画像を取得し、
取得された前記画像に基づいて、前記撮像装置の位置及び姿勢を推定し、取得された前記画像から予め定められた指標が検出された場合に、前記指標に対する前記撮像装置の位置及び姿勢を推定し、
取得された前記画像から前記指標が検出された場合に、前回までに取得された前記画像の各々に基づいて推定された前記撮像装置の位置の各々と、推定された前記指標に対する前記撮像装置の位置とから形成されるループに基づいて、前記画像の各々が撮像されたときの前記撮像装置の位置及び姿勢の各々を補正する、
処理をコンピュータに実行させるための情報処理プログラム。
【０１８８】
（付記９）
取得された画像のうち、所定の条件を満たすキーフレーム画像の各々が撮像されたときの前記撮像装置の位置及び姿勢の各々の推定結果に基づいて、前記キーフレーム画像の特徴点の各々に対応する位置の３次元座標を表すマップ点を生成する、
付記８に記載の情報処理プログラム。
【０１８９】
（付記１０）
取得された画像のうち、所定の条件を満たすキーフレーム画像の各々が撮像されたときの前記撮像装置の位置及び姿勢の各々の推定結果に基づいて、記憶部に格納された、前記キーフレーム画像の各々が撮像されたときの前記撮像装置の位置及び姿勢の各々を補正する、
付記８又は付記９に記載の情報処理プログラム。
【０１９０】
（付記１１）
複数の前記指標の各々についての、前記指標間の相対的な位置及び姿勢は既知である、
付記８〜付記１０の何れか１項に記載の情報処理プログラム。
【０１９１】
（付記１２）
取得された前記画像から前記指標が検出された場合に、前記指標の検出結果に応じて、前記指標を含む前記画像の信頼度を更に算出し、
算出された前記信頼度が予め設定された閾値より大きい場合に、前記画像の各々が撮像されたときの前記撮像装置の位置及び姿勢の各々を補正する、
付記８〜付記１１の何れか１項に記載の情報処理プログラム。
【０１９２】
（付記１３）
推定された前記撮像装置の位置及び姿勢に応じて、予め設定された対象物が表示装置に重畳表示されるように、前記表示装置を制御する、
付記８〜付記１２の何れか１項に記載の情報処理プログラム。
【０１９３】
（付記１４）
取得された前記画像から、前回検出された前記指標と対応する前記指標が検出された場合に、前記画像の各々が撮像されたときの前記撮像装置の位置及び姿勢の各々を補正する、
付記８〜付記１３の何れか１項に記載の情報処理プログラム。
【０１９４】
（付記１５）
撮影位置が移動に伴って変わる撮像装置によって撮像された画像を取得し、
取得された前記画像に基づいて、前記撮像装置の位置及び姿勢を推定し、取得された前記画像から予め定められた指標が検出された場合に、前記指標に対する前記撮像装置の位置及び姿勢を推定し、
取得された前記画像から前記指標が検出された場合に、前回までに取得された前記画像の各々に基づいて推定された前記撮像装置の位置の各々と、推定された前記指標に対する前記撮像装置の位置とから形成されるループに基づいて、前記画像の各々が撮像されたときの前記撮像装置の位置及び姿勢の各々を補正する、
処理をコンピュータに実行させるための情報処理方法。
【０１９５】
（付記１６）
取得された画像のうち、所定の条件を満たすキーフレーム画像の各々が撮像されたときの前記撮像装置の位置及び姿勢の各々の推定結果に基づいて、前記キーフレーム画像の特徴点の各々に対応する位置の３次元座標を表すマップ点を生成する、
付記１５に記載の情報処理方法。
【０１９６】
（付記１７）
取得された画像のうち、所定の条件を満たすキーフレーム画像の各々が撮像されたときの前記撮像装置の位置及び姿勢の各々の推定結果に基づいて、記憶部に格納された、前記キーフレーム画像の各々が撮像されたときの前記撮像装置の位置及び姿勢の各々を補正する、
付記１５又は付記１６に記載の情報処理方法。
【０１９７】
（付記１８）
複数の前記指標の各々についての、前記指標間の相対的な位置及び姿勢は既知である、
付記１５〜付記１７の何れか１項に記載の情報処理方法。
【０１９８】
（付記１９）
取得された前記画像から前記指標が検出された場合に、前記指標の検出結果に応じて、前記指標を含む前記画像の信頼度を更に算出し、
算出された前記信頼度が予め設定された閾値より大きい場合に、前記画像の各々が撮像されたときの前記撮像装置の位置及び姿勢の各々を補正する、
付記１５〜付記１８の何れか１項に記載の情報処理方法。
【０１９９】
（付記２０）
撮影位置が移動に伴って変わる撮像装置によって撮像された画像を取得し、
取得された前記画像に基づいて、前記撮像装置の位置及び姿勢を推定し、取得された前記画像から予め定められた指標が検出された場合に、前記指標に対する前記撮像装置の位置及び姿勢を推定し、
取得された前記画像から前記指標が検出された場合に、前回までに取得された前記画像の各々に基づいて推定された前記撮像装置の位置の各々と、推定された前記指標に対する前記撮像装置の位置とから形成されるループに基づいて、前記画像の各々が撮像されたときの前記撮像装置の位置及び姿勢の各々を補正する、
処理をコンピュータに実行させるための情報処理プログラムを記憶した記憶媒体。
【符号の説明】
【０２００】
１，１Ａ，１Ｂ       指標
１０，２１０，３１０，４１０       情報処理装置
１２   カメラ
１４，２１４，３１４，４１４       制御部
１５   データ記憶部
１６   画像取得部
１８   特徴点抽出部
２０，３２０，４２０ 姿勢推定部
２２   マップ生成部
２４，３２４，４２４ 指標検出部
２６，２２６，４２６ 最適化部
２８   調整部
２２５ 信頼度算出部
３１９ 初期位置推定部
３２５ 表示制御部
３２６ 表示装置
５０   コンピュータ
５１   ＣＰＵ
５３   記憶部
５９   記録媒体
６０，２６０，３６０，４６０       情報処理プログラム
Ｍ     マップ点
【図１】
2018173882.tif 000003
【図２】
2018173882.tif 000004
【図３】
2018173882.tif 000005
【図４】
2018173882.tif 000006
【図５】
2018173882.tif 000007
【図６】
2018173882.tif 000008
【図７】
2018173882.tif 000009
【図８】
2018173882.tif 000010
【図９】
2018173882.tif 000011
【図１０】
2018173882.tif 000012
【図１１】
2018173882.tif 000013
【図１２】
2018173882.tif 000014
【図１３】
2018173882.tif 000015
【図１４】
2018173882.tif 000016
【図１５】
2018173882.tif 000017
【図１６】
2018173882.tif 000018
【図１７】
2018173882.tif 000019
【図１８】
2018173882.tif 000020
【図１９】
2018173882.tif 000021
【図２０】
2018173882.tif 000022
【図２１】
2018173882.tif 000023
【図２２】
2018173882.tif 000024
【図２３】
2018173882.tif 000025
【図２４】
2018173882.tif 000026