以下、図面を参照して開示の技術の実施形態の一例を詳細に説明する。
<第1の実施形態>
図1に、情報処理装置10の構成例を表す概略図を示す。
図1に示すように、本実施形態の情報処理装置10は、カメラ12と、制御部14とを有する。カメラ12は、開示の技術の撮像装置の一例である。カメラ12は、車両などの移動体に搭載され、または人に携帯されうる。カメラ12の位置は、他の装置に搭載されて、または人に携帯されて運ばれることで変化しうる。カメラ12と制御部14とは、ともに情報処理装置10に含まれても良いし、情報処理装置10には制御部14が搭載され、カメラ12は、制御部14と通信することが可能な別装置であっても良い。本実施形態では、情報処理装置10が車両に搭載される場合を例に説明する。
カメラ12は、車両の周辺の画像を逐次撮像する。
制御部14は、データ記憶部15と、画像取得部16と、特徴点抽出部18と、姿勢推定部20と、マップ生成部22と、指標検出部24と、最適化部26と、調整部28とを備える。データ記憶部15は、開示の技術の記憶部の一例である。また、最適化部26は、開示の技術の推定部の一例である。
データ記憶部15には、車両の周辺環境の情報を表すマップ情報が格納される。マップ情報は、車両に搭載されたカメラ12により撮像された画像に基づき生成される。マップ情報について、以下説明する。
例えば、図2の2Aに示されるように、建物Rの周辺を携帯端末等に搭載されたカメラが移動する場合を例に説明する。図2の2Aは、上空からみた建物Rの周辺の領域を表している。図2の2Aでは、カメラの移動により移動軌跡L1が生成される。カメラが移動軌跡L1を移動する際には、端末に搭載されたカメラ12によってカメラ周辺の画像が逐次撮像される。逐次撮像されたカメラ周辺の画像のうち、所定の条件を満たす画像がキーフレーム画像としてデータ記憶部15に格納される。キーフレーム画像とは、所定の条件を満たす画像である。
画像からは特徴点が抽出される。特徴点とは、例えば、対象領域に存在する物体の形状を表す、画像内のエッジ点等である。また、画像中の特徴点に対応する3次元座標を表すマップ点が生成される。例えば、図2の2Bに示されるようなマップ点Mが特徴点Fに対して生成される。また、画像2Cから抽出される特徴点Fは、マップ点Mと対応付けられる。このため、データ記憶部15に格納されたマップ情報のマップ点Mと、画像2Cから抽出される特徴点Fとの対応付けに応じて、端末に搭載されたカメラ12の位置及び姿勢が逐次推定される。
しかし、データ記憶部15にマップ情報が格納されていない領域において、カメラ12の位置及び姿勢を推定する場合、同一箇所において撮像された複数の画像を取得することができなければ、カメラの移動軌跡のループが形成されない。このため、例えば、下記参考文献1に示されているような最適化処理を行うことができない。そのため、図2の2Bに示されるように、カメラ12の位置及び姿勢の推定結果は、本来の移動軌跡L1とは異なる移動軌跡L2となる。これにより、カメラ12の位置及び姿勢の推定結果を表す移動軌跡L2においては、カメラ12の位置及び姿勢の推定誤差が増大する。
参考文献1: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
そこで、本実施形態では、予め定められた指標を環境中に設置し、指標が検知される毎にカメラ12の位置及び姿勢の最適化を行う。以下、具体的に説明する。
データ記憶部15には、キーフレーム画像の各々と、キーフレーム画像が撮像されたときのカメラ12の位置及び姿勢の各々と、キーフレーム画像の特徴点の各々の3次元座標であるマップ点とを表すマップ情報が格納される。
具体的には、マップ情報は、キーフレームテーブルとマップ点テーブルとで表現され、キーフレームテーブル及びマップ点テーブルがマップ情報としてデータ記憶部15に格納される。
図3に示すキーフレームテーブルには、キーフレームの識別情報を表すキーフレームIDと、カメラ12の位置及び姿勢と、キーフレーム画像と、キーフレーム画像の特徴点と、特徴点に対応するマップ点IDとが対応付けられて格納される。例えば、図3のキーフレームテーブルのキーフレームID「001」に対応するカメラ12の位置及び姿勢は、図3に示されるように、(0.24,0.84,0.96,245.0,313.9,23.8)を示す6次元実数値である。6次元実数値のうち(0.24,0.84,0.96)はカメラ12の姿勢を表し、(245.0,313.9,23.8)はカメラの3次元位置を表す。キーフレームテーブルの1行の情報が1つのキーフレームを表す。
また、図3のキーフレームテーブルのキーフレームID「001」に対応するキーフレーム画像(24,46,…)は、キーフレーム画像の各画素の画素値を表す。また、図3のキーフレームテーブルのキーフレームID「001」に対応する特徴点「(11,42),(29,110)…」は、キーフレーム画像内の特徴点の位置に対応する画素位置を表す。また、図3のキーフレームテーブルのキーフレームID「001」に対応するマップ点ID「3,5,9,32…」は、各特徴点に対応するマップ点IDを表す。マップ点IDは、マップ点テーブルのマップ点IDと対応する。
図4に示すマップ点テーブルには、マップ点の識別情報を表すマップ点IDと、マップ点の3次元位置座標(X[m],Y[m],Z[m])と、マップ点の特徴量とが対応付けられて格納される。例えば、図4のマップ点テーブルの特徴量は、例えば、参考文献2に記載されているOriented FAST and Rotated BRIEF(ORB)等であり、ORBの特徴量は0または1を表す32次元の特徴量によって表現される。
参考文献2:E. Rublee et al., "ORB: An efficient alternative to SIFT or SURF", In Proc. of International Conference on Computer Vision, pp. 2564-2571, 2011.
本実施形態では、情報処理装置10の制御部14は、姿勢推定機能とマップ生成機能と最適化機能とを有する。以下、各機能に対応する各機能部について説明する。
なお、カメラ12の内部パラメータについては、例えば、参考文献3に記載の方法に基づきキャリブレーションにより予め取得される。カメラ12の内部パラメータとしては、例えば、焦点距離及び光学中心を含む行列と、歪み係数(例えば5次元)とが含まれる。
参考文献3:Z.Zhang et al., "A flexible new technique for camera calibration.", IEEE Transactions on Pattern Analysis and Machine Intelligence, 22(11):1330-1334, 2000.
[姿勢推定機能]
画像取得部16は、カメラ12によって撮像された画像を逐次取得する。次に、画像取得部16は、カメラ12によって撮像された画像をグレースケール画像へ変換する。そして、画像取得部16は、グレースケール画像を出力する。
特徴点抽出部18は、画像取得部16から出力されたグレースケール画像から、特徴点を取得する。例えば、特徴点抽出部18は、上記参考文献1に記載の手法を用いて、グレースケール画像から特徴点を抽出する。そして、特徴点抽出部18は、各特徴点に対して、特徴量を計算する。例えば、上記参考文献2に記載のORBを特徴量として用いる場合には、0または1を表す32次元の特徴量が抽出される。
図5に、各特徴点に対応する特徴量のデータ構造の一例を示す。図5に示されるように、特徴点の識別情報を表す特徴点IDと、特徴点の位置を表す画素u[pixel],v[pixel]と、特徴量とが対応付けられる。
姿勢推定部20は、特徴点抽出部18によって抽出された特徴点及び特徴点に対応する特徴量に基づいて、カメラ12の位置及び姿勢を推定する。姿勢推定部20は、マップ点が得られていない場合、例えば、上記参考文献1の「IV Automatic Map Initialization」に記載の方法を使用して、初期のマップ点を生成する。
具体的には、まず、姿勢推定部20は、任意の2視点から撮像されたグレースケール画像から、特徴点抽出部18により抽出された特徴点を取得する。次に、姿勢推定部20は、2視点から撮像されたグレースケール画像間で特徴点の対応付けを行い、1視点目に対応するカメラ12の位置及び姿勢に対する、2視点目に対応するカメラ12の位置及び姿勢を求める。なお、姿勢推定部20は、1視点目に対応するカメラ12の位置及び姿勢を、世界座標系の原点として設定し、2視点目に対応するカメラ12の位置及び姿勢を、カメラ12の位置及び姿勢の初期値として設定する。
また、姿勢推定部20は、1視点目に対応するカメラ12の位置及び姿勢に対する、2視点目に対応するカメラ12の位置及び姿勢に基づいて、三角測量を用いて、特徴点に対応する3次元座標を表すマップ点を計算する。
次に、姿勢推定部20は、車両の移動に合わせてカメラ12が移動する際に、マップ点を用いて、カメラ12の位置及び姿勢を逐次推定する。例えば、まず、姿勢推定部20は、カメラ12を搭載した車両が既定の運動モデル(例えば、等速運動)を行うと仮定する。そして、姿勢推定部20は、特徴点抽出部18によって抽出されたグレースケール画像の特徴点と、データ記憶部15のマップ点テーブルに格納されたマップ点との対応付けを行う。
より詳細には、姿勢推定部20は、データ記憶部15のマップ点テーブルに格納されたマップ点をグレースケール画像に投影し、グレースケール画像の特徴点の各々とマップ点の各々とを対応付ける。
例えば、姿勢推定部20は、以下の参考文献4に記載のPnPアルゴリズムを用いて、カメラの位置姿勢を推定する。PnPアルゴリズムとは、グレースケール画像に投影されたマップ点と特徴点との間の距離を最小にするようなカメラ12の位置及び姿勢を、Levenberg-Marquardt法などの非線形最適化アルゴリズムによって算出する手法である。
参考文献4: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).
また、姿勢推定部20は、画像取得部16によって出力されたグレースケール画像をキーフレーム画像として格納するか否かを判定する。例えば、姿勢推定部20は、以下の基準に従って、画像取得部16によって出力されたグレースケール画像をキーフレーム画像として格納するか否かを判定する。姿勢推定部20は、以下の(1)〜(3)の基準を全て満たす場合に、グレースケール画像をキーフレーム画像として、カメラ12の位置及び姿勢と、特徴点とマップ点との対応付けと共にデータ記憶部15へ格納する。
(1)前回のキーフレーム画像の格納から一定フレーム(例えば、20フレーム)経過している。
(2)前回までに格納されたキーフレーム画像のうち、グレースケール画像の位置と最も近い最近傍のキーフレーム画像の特徴点とグレースケール画像の特徴点との間の対応点数が一定数以上(例えば、50点)である。
(3)前回までに格納されたキーフレーム画像のうち、グレースケール画像の位置と最も近い最近傍のキーフレーム画像と比較して一定の割合(例えば、90%)対応点数が減少している。
[マップ生成機能]
マップ生成部22は、姿勢推定部20によって新たなキーフレーム画像がデータ記憶部15へ格納された場合、三角測量を用いて、新たなキーフレーム画像の特徴点の各々のマップ点を算出する。例えば、マップ生成部22は、新たなキーフレーム画像と、前回までにデータ記憶部15へ格納されたキーフレーム画像とに基づき、参考文献5に記載の手法により、新たなキーフレーム画像のマップ点を生成する。
参考文献5:R. I. Hartley et al., "Triangulation, Computer Vision and Image Understanding", Vol. 68, No.2, pp.146-157, 1997.
具体的には、マップ生成部22は、前回までにデータ記憶部15へ格納されたキーフレーム画像のうち、新たなキーフレーム画像の位置と最も近い最近傍のキーフレーム画像を選択する。次に、マップ生成部22は、新たなキーフレーム画像に含まれる特徴点に対応する、最近傍のキーフレーム画像における特徴点をエピポーラ探索で特定する。エピポーラ探索とは、2視点間の幾何拘束を用い、1視点目の特徴点が存在するべき2視点目のエピポーラ線上のみを探索範囲として対応点を見つける処理である。
そして、マップ生成部22は、新たなキーフレーム画像と最近傍のキーフレーム画像との間で対応付けられた特徴点の情報に基づき、三角測量を用いて、新たなキーフレーム画像のマップ点を算出する。なお、三角測量については、例えば、上記参考文献5の「5.1 Linear Triangulation」に記載の方法を用いることができる。
そして、マップ生成部22は、新たなキーフレーム画像のマップ点をデータ記憶部15へ格納する。
調整部28は、データ記憶部15に格納されたマップ情報に基づいて、全てのキーフレーム画像についての、キーフレーム画像上での特徴点とマップ点との間の再投影誤差の総和が最小となるように、マップ点を補正する。
具体的には、調整部28は、データ記憶部15のキーフレームテーブルに格納された各キーフレーム、各キーフレームに対応付けられたマップ点、及びカメラ12の内部パラメータを取得する。そして、調整部28は、キーフレーム画像上での特徴点とマップ点との間の再投影誤差が最小となるように、各キーフレーム画像が撮像されたときのカメラ12の位置及び姿勢と、各キーフレーム画像の特徴点に対応付けられたマップ点の座標を補正する。キーフレーム画像上での特徴点とマップ点との間の再投影誤差を最小化するためのアルゴリズムとしては、以下の参考文献6に記載されているLevenberg-Marquardt法などの非線形最適化アルゴリズムを用いることができる。調整部28における処理は、バンドル調整とも称される。
参考文献6:B. Triggs et al., "Bundle Adjustment- A Modern Synthesis", In Proc. of International Workshop on Vision Algorithms: Theory and Practice, pp.298-392, 1999.
そして、調整部28は、データ記憶部15に格納されたマップ情報のうちの各キーフレーム画像が撮像されたときのカメラ12の位置及び姿勢を、補正された位置及び姿勢に置き換える。また、調整部28は、データ記憶部15に格納されたマップ情報のうちの各キーフレーム画像に対応付けられたマップ点の座標を、補正されたマップ点の座標に置き換える。
[最適化機能]
指標検出部24は、データ記憶部15に格納された新たなキーフレーム画像に、形状及び大きさが予め定められた指標が含まれているか否かを検出する。なお、指標は、カメラが移動する対象領域に予め設置される。また、指標は複数設置され、複数の指標の各々についての、指標間の相対的な位置及び姿勢は既知である。例えば、図6に示されるような指標1が、環境に予め設置される。図6に示されるように、指標1には、予め定められたパターン2が含まれている。
指標検出部24は、例えば、参考文献7に記載の方法を用い、画像取得部16によって出力されたグレースケール画像に指標が存在するか否かを判定する。具体的には、指標検出部24は、画像取得部16によって出力されたグレースケール画像に対して二値化を行う。そして、指標検出部24は、指標の4隅座標の位置を推定することにより、指標を検出する。
参考文献7: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.
姿勢推定部20は、指標検出部24によって新たなキーフレーム画像から指標が検出された場合、指標を含むキーフレーム画像に基づいて、指標に対するカメラ12の位置及び姿勢を推定する。例えば、姿勢推定部20は、上記参考文献7の「4. Position and pose estimation of markers」に従って、指標に対するカメラ12の位置及び姿勢を推定する。
そして、最適化部26は、姿勢推定部20によって推定された新たなキーフレーム画像が撮像されたときの指標に対するカメラ12の位置及び姿勢に基づいて、データ記憶部15に格納されたマップ情報を補正する。
本実施形態におけるマップ情報の補正について、具体的に説明する。
例えば、図7の7Aに示されるように、各キーフレーム画像が撮像されたときのカメラの位置及び姿勢(a,b,c)が得られている場合を例に説明する。この場合、aはスタート地点のキーフレーム画像が撮像されたときのカメラ12の位置及び姿勢を表す。また、cは新たなキーフレーム画像が撮像されたときのカメラの位置及び姿勢を表す。bはaとcとの間に位置するキーフレーム画像が撮像されたときのカメラ12の位置及び姿勢を表す。また、Xは、姿勢推定部20によって得られた、指標1に対するカメラ12の位置及び姿勢を表す。
本実施形態では、図7の7Bに示されるように、カメラ12の位置及び姿勢aと、指標1に対するカメラ12の位置及び姿勢Xとに基づき、各キーフレーム画像におけるカメラ12の位置及び姿勢Yを得る。
具体的には、図7の7Cに示されるように、カメラ12の位置及び姿勢(a,b,c)と、指標1に対するカメラ12の位置及び姿勢Xと、カメラ12の位置及び姿勢aでの他の指標に対するカメラ12の位置及び姿勢とを含むループが形成される。このとき、ループを表すグラフを再計算することにより、補正されたカメラ12の位置及び姿勢Yを得る。これにより、補正前の移動軌跡Sが移動軌跡Pとなり、実世界と対応するマップ情報が得られる。
ここで、カメラの位置及び姿勢から形成されるループについてより詳細に説明する。
図8に示されるように、各キーフレーム画像が撮像されたときのカメラ12の位置及び姿勢(a,b,c)と、新たなキーフレーム画像が撮像されたときの指標(1A,1B)に対するカメラ12の位置及び姿勢(X1,X2)とを含むループが形成される。ただし、指標(1A,1B)間の相対的な位置及び姿勢は既知とする。
図8に示されるように、キーフレーム画像から指標1Aが検出された場合、指標1Aに対するカメラ12の位置及び姿勢X1が推定される。なお、aはキーフレーム画像として格納される際に推定されたカメラ12の位置及び姿勢である。
また、新たなキーフレーム画像から指標1Bが検出された場合、指標1Bに対するカメラ12の位置及び姿勢X2が推定される。なお、cはキーフレーム画像として格納される際に推定されたカメラ12の位置及び姿勢である。
そして、指標(1A,1B)間の相対的な位置及び姿勢と、指標1Aに対するカメラ12の位置及び姿勢X1と、各キーフレーム画像が撮像されたときのカメラ12の位置及び姿勢bと、指標1Bに対するカメラ12の位置及び姿勢X2とからループZが形成される。これにより、以下の参考文献8に記載のPose Graph最適化を行うことが可能となる。
参考文献8: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
具体的には、まず、最適化部26は、新たなキーフレーム画像から指標が検出された場合に、データ記憶部15に格納されたマップ情報を取得する。次に最適化部26は、前回、キーフレーム画像から指標が検出されたときの、指標に対するカメラ12の位置及び姿勢と、過去のキーフレーム画像が撮像されたときのカメラ12の位置及び姿勢の各々と、を取得する。最適化部26は、更に、新たなキーフレーム画像が撮像されたときの指標に対するカメラ12の位置及び姿勢と、指標間の相対的な位置及び姿勢とを取得して、ループを形成し、形成されるループに基づき、マップ情報を補正する。
より詳細には、最適化部26は、以下の参考文献8に記載のPose Graph最適化により、新たなキーフレーム画像の周辺のキーフレーム画像におけるカメラ12の位置及び姿勢の各々と、新たなキーフレーム画像におけるカメラ12の位置及び姿勢とを補正する。
そして、最適化部26は、各キーフレーム画像が撮像されたときのカメラ12の位置及び姿勢の補正に応じて、各キーフレーム画像の特徴点に対応するマップ点の座標を座標変換する。具体的には、最適化部26は、各キーフレーム画像が撮像されたときの補正前のカメラ12の位置及び姿勢と、補正前の各キーフレーム画像の特徴点に対応するマップ点との間の相対的関係が維持されるように、マップ点の座標を座標変換する。
調整部28は、最適化部26によって補正された、各キーフレーム画像の特徴点へのマップ点の再投影誤差を最小化するように、各キーフレーム画像におけるカメラ12の位置及び姿勢並びに各キーフレーム画像に対応付けられたマップ点の座標を補正する。そして、調整部28は、データ記憶部15に格納されたマップ情報のうちの各キーフレーム及び各キーフレーム画像に対応付けられたマップ点の座標を、補正された各キーフレーム画像及び各キーフレーム画像に対応付けられたマップ点の座標に置き換える。
情報処理装置10の制御部14は、例えば、図9に示すコンピュータ50で実現することができる。コンピュータ50はCPU51、一時記憶領域としてのメモリ52、及び不揮発性の記憶部53を備える。また、コンピュータ50は、カメラ12、表示装置、及び入出力装置等(図示省略)が接続される入出力interface(I/F)54、及び記録媒体59に対するデータの読み込み及び書き込みを制御するread/write(R/W)部55を備える。また、コンピュータ50は、インターネット等のネットワークに接続されるネットワークI/F56を備える。CPU51、メモリ52、記憶部53、入出力I/F54、R/W部55、及びネットワークI/F56は、バス57を介して互いに接続される。
記憶部53は、Hard Disk Drive(HDD)、solid state drive(SSD)、フラッシュメモリ等によって実現できる。記憶媒体としての記憶部53には、コンピュータ50を情報処理装置10の制御部14として機能させるための情報処理プログラム60が記憶されている。情報処理プログラム60は、画像取得プロセス62と、特徴点抽出プロセス63と、姿勢推定プロセス64と、マップ生成プロセス65と、指標検出プロセス66と、最適化プロセス67と、調整プロセス68とを有する。また、記憶部53は、データ記憶部15を構成する情報が記憶されるデータ記憶領域69を有する。
CPU51は、情報処理プログラム60を記憶部53から読み出してメモリ52に展開し、情報処理プログラム60が有するプロセスを順次実行する。CPU51は、画像取得プロセス62を実行することで、図1に示す画像取得部16として動作する。また、CPU51は、特徴点抽出プロセス63を実行することで、図1に示す特徴点抽出部18として動作する。また、CPU51は、姿勢推定プロセス64を実行することで、図1に示す姿勢推定部20として動作する。また、CPU51は、マップ生成プロセス65を実行することで、図1に示すマップ生成部22として動作する。また、CPU51は、指標検出プロセス66を実行することで、図1に示す指標検出部24として動作する。また、CPU51は、最適化プロセス67を実行することで、図1に示す最適化部26として動作する。また、CPU51は、調整プロセス68を実行することで、図1に示す調整部28として動作する。また、CPU51は、データ記憶領域69から情報を読み出して、データ記憶部15をメモリ52に展開する。これにより、情報処理プログラム60を実行したコンピュータ50が、情報処理装置10の制御部14として機能することになる。そのため、ソフトウェアである情報処理プログラム60を実行するプロセッサはハードウェアである。
なお、情報処理プログラム60により実現される機能は、例えば半導体集積回路、より詳しくはApplication Specific Integrated Circuit(ASIC)等で実現することも可能である。
次に、本実施形態に係る情報処理装置10の作用について説明する。情報処理装置10は、姿勢推定処理とマップ生成処理と最適化処理とを実行する。情報処理装置10を搭載した端末が移動を開始し、カメラ12がカメラの周辺の画像の撮像を開始すると、情報処理装置10の制御部14によって、図10に示す姿勢推定処理が実行される。また、同様に、情報処理装置10の制御部14によって、図11に示すマップ生成処理と、図12に示す最適化処理とが実行される。以下、各処理について詳述する。
<姿勢推定処理>
ステップS100において、画像取得部16は、カメラ12によって撮像された画像を取得する。次に、画像取得部16は、カメラ12によって撮像された画像をグレースケール画像へ変換する。そして、画像取得部16は、グレースケール画像を出力する。
ステップS102において、特徴点抽出部18は、上記ステップS100で出力されたグレースケール画像から、特徴点を抽出する。そして、特徴点抽出部18は、各特徴点に対して、特徴量を計算する。
ステップS104において、姿勢推定部20は、上記ステップS102で抽出された特徴点及び特徴点に対応する特徴量に基づいて、カメラ12の位置及び姿勢を推定する。
ステップS106において、姿勢推定部20は、上記ステップS100で出力されたグレースケール画像をキーフレーム画像として格納するか否かを判定する。グレースケール画像をキーフレーム画像として格納すると判定した場合には、ステップS108へ進む。一方、グレースケール画像をキーフレーム画像として格納しないと判定した場合には、ステップS100へ戻る。
ステップS108において、姿勢推定部20は、上記ステップS100で出力されたグレースケール画像を、キーフレーム画像としてデータ記憶部15へ格納する。また、上記ステップS104で推定された、カメラ12の位置及び姿勢をデータ記憶部15へ格納する。
<マップ生成処理>
ステップS200において、マップ生成部22は、姿勢推定処理によって新たなキーフレーム画像がデータ記憶部15へ格納されたか否かを判定する。キーフレーム画像がデータ記憶部15へ格納された場合、ステップS202へ進む。一方、キーフレーム画像がデータ記憶部15へ格納されていない場合、ステップS200へ戻る。
ステップS202において、マップ生成部22は、姿勢推定処理によってデータ記憶部15へ格納された新たなキーフレーム画像と、前回までにデータ記憶部15へ格納されたキーフレーム画像とに基づき、新たなキーフレーム画像のマップ点を生成する。
ステップS204において、マップ生成部22は、上記ステップS202で生成された新たなキーフレーム画像のマップ点をデータ記憶部15へ格納する。
ステップS206において、調整部28は、データ記憶部15に格納されたマップ情報に基づいて、全てのキーフレーム画像についての、キーフレーム画像上での特徴点とマップ点との間の再投影誤差の総和が最小となるように、マップ点を補正する。そして、調整部28は、データ記憶部15に格納されたマップ情報のうちの各キーフレーム画像が撮像されたときのカメラ12の位置及び姿勢を、補正された位置及び姿勢に置き換える。また、調整部28は、データ記憶部15に格納されたマップ情報のうちの各キーフレーム画像に対応付けられたマップ点を、補正されたマップ点に置き換える。
<最適化処理>
ステップS300において、指標検出部24は、姿勢推定処理によってデータ記憶部15に格納された新たなキーフレーム画像に指標が含まれているか否かを判定する。新たなキーフレーム画像に指標が含まれている場合には、ステップS302へ進む。
ステップS302において、姿勢推定部20は、指標を含む新たなキーフレーム画像に基づいて、指標に対するカメラ12の位置及び姿勢を推定する。
ステップS304において、最適化部26は、データ記憶部15に格納された過去のキーフレーム画像におけるカメラ12の位置及び姿勢の各々と、上記ステップS302で得られた指標に対するカメラ12の位置及び姿勢とからループを形成する。そして、最適化部26は、形成されるループに基づき、Pose Graph最適化により、過去のキーフレーム画像におけるカメラ12の位置及び姿勢の各々と、新たなキーフレーム画像におけるカメラ12の位置及び姿勢とを補正する。
ステップS306において、最適化部26は、上記ステップS304で得られた、各キーフレーム画像が撮像されたときのカメラ12の位置及び姿勢の補正に応じて、各キーフレームのマップ点の座標を座標変換する。
例えば、ループに基づく位置及び姿勢の補正はLoop Closure最適化を利用する事ができる。
ステップS308において、調整部28は、上記ステップS306で得られたマップ点の各キーフレーム画像の特徴点への再投影誤差を最小化するように、各キーフレーム画像におけるカメラ12の位置及び姿勢と、各キーフレーム画像のマップ点を補正する。そして、調整部28は、データ記憶部15に格納されたマップ情報のうちの各キーフレーム及び各キーフレームに対応付けられたマップ点を、補正された各キーフレーム及び各キーフレームに対応付けられたマップ点に置き換える。
以上説明したように、本実施形態に係る情報処理装置は、カメラによって撮像された画像に基づいて、カメラの位置及び姿勢を推定する。そして、撮像された画像から予め定められた指標が検出された場合に、カメラの位置及び姿勢の各々と、指標に対するカメラの位置及び姿勢とから形成されるループに基づいて、キーフレーム画像の各々を撮像したときのカメラの位置及び姿勢の各々を推定する。これにより、カメラの位置及び姿勢の推定誤差を低減させることができる。
また、指標が検出される毎に、キーフレーム画像の各々を撮像したときのカメラの位置及び姿勢の各々の最適化を行うことにより、高頻度で最適化を行うことができる。
また、高頻度で最適化が行われることにより、調整部によって行われるバンドル調整の収束までの時間が減少し、局所解への収束を回避することができる。
<第2の実施形態>
次に、第2の実施形態について説明する。第2の実施形態では、カメラによって撮像された画像から指標が検出された場合に、指標の検出結果に応じて、指標を含む画像の信頼度を算出する。そして、信頼度が予め設定された閾値より大きい場合に、キーフレーム画像の各々が撮像されたときのカメラの位置及び姿勢の各々を補正する点が第1の実施形態と異なる。
図13に、第2の実施形態の情報処理装置210の構成例を示す。第2の実施形態の情報処理装置210は、図13に示されるように、カメラ12と、制御部214とを備える。
制御部214は、データ記憶部15と、画像取得部16と、特徴点抽出部18と、姿勢推定部20と、マップ生成部22と、指標検出部24と、最適化部226と、調整部28と、信頼度算出部225とを備える。
信頼度算出部225は、データ記憶部15に格納されたキーフレーム画像から指標が検出された場合に、指標の検出結果に応じて信頼度を算出する。
例えば、信頼度算出部225は、キーフレーム画像から検出された指標の平面の法線と、カメラ12の光軸とのなす角θを算出する。そして、信頼度算出部225は、なす角θが、θ1≦θ≦θ2を満たす場合には、角度に関する信頼度を高くする。一方、なす角θが、θ1≦θ≦θ2を満たさない場合には、角度に関する信頼度を低くする。θ1とθ2とは予め設定され、例えば、θ1=π/18、θ2=4π/9である。指標とカメラとの光軸間のなす角θが大きすぎる場合又は小さすぎる場合は、指標の4隅の検出点の誤差がカメラの位置及び姿勢推定に大きな影響を及ぼすようになり(例えば参考文献9を参照)、推定精度が悪化するため、なす角θに応じて信頼度を算出する。
参考文献9: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.
また、信頼度算出部225は、カメラ12と指標との間の距離dに応じて、距離に関する信頼度を算出する。信頼度算出部225は、距離dが大きいほど信頼度が低くなるように、かつ距離dが小さいほど信頼度が高くなるように、距離に関する信頼度を算出する。カメラ12と指標との間の距離が大きくなると、4隅の検出点の同定精度が悪化し、推定精度が悪化するため、距離に応じて信頼度を算出する。
また、信頼度算出部225は、キーフレーム画像から検出された指標に含まれるパターンと、予め登録されたパターンの一致度を、一致に関する信頼度として算出する。パターンの一致度が低いと、異なる指標と認識される可能性が大きくなるため、パターンの一致度に応じて信頼度を算出する。
最適化部226は、信頼度算出部225によって算出された信頼度に応じて、過去のキーフレーム画像が撮像されたときのカメラ12の位置及び姿勢の各々と、新たなキーフレーム画像が撮像されたときの指標に対するカメラ12の位置及び姿勢とを補正する。
例えば、最適化部226は、信頼度算出部225によって算出された、角度に関する信頼度、距離に関する信頼度、及び一致に関する信頼度の少なくとも1つが閾値以上である場合に、キーフレーム画像が撮像されたときのカメラ12の位置及び姿勢の補正を行う。または、最適化部226は、信頼度算出部225により算出された、角度に関する信頼度、距離に関する信頼度、及び一致に関する信頼度の全てが閾値以上である場合、キーフレーム画像が撮像されたときのカメラ12の位置及び姿勢の補正を行うようにしてもよい。
情報処理装置210の制御部214は、例えば、図14に示すコンピュータ50で実現することができる。コンピュータ50の記憶媒体としての記憶部53には、コンピュータ50を情報処理装置210の制御部214として機能させるための情報処理プログラム260が記憶されている。情報処理プログラム260は、画像取得プロセス62と、特徴点抽出プロセス63と、姿勢推定プロセス64と、マップ生成プロセス65と、指標検出プロセス66と、信頼度算出プロセス266と、最適化プロセス267と、調整プロセス68とを有する。また、記憶部53は、データ記憶部15を構成する情報が記憶されるデータ記憶領域69を有する。
CPU51は、情報処理プログラム260を記憶部53から読み出してメモリ52に展開し、情報処理プログラム60が有するプロセスを順次実行する。CPU51は、画像取得プロセス62を実行することで、図13に示す画像取得部16として動作する。また、CPU51は、特徴点抽出プロセス63を実行することで、図13に示す特徴点抽出部18として動作する。また、CPU51は、姿勢推定プロセス64を実行することで、図13に示す姿勢推定部20として動作する。また、CPU51は、マップ生成プロセス65を実行することで、図13に示すマップ生成部22として動作する。また、CPU51は、指標検出プロセス66を実行することで、図13に示す指標検出部24として動作する。また、CPU51は、信頼度算出プロセス266を実行することで、図13に示す信頼度算出部225として動作する。また、CPU51は、最適化プロセス267を実行することで、図13に示す最適化部226として動作する。また、CPU51は、調整プロセス68を実行することで、図13に示す調整部28として動作する。また、CPU51は、データ記憶領域69から情報を読み出して、データ記憶部15をメモリ52に展開する。これにより、情報処理プログラム60を実行したコンピュータ50が、情報処理装置210の制御部214として機能することになる。そのため、ソフトウェアである情報処理プログラム260を実行するプロセッサはハードウェアである。
なお、情報処理プログラム260により実現される機能は、例えば半導体集積回路、より詳しくはASIC等で実現することも可能である。
次に第2の実施形態における情報処理装置210の作用について説明する。情報処理装置210によって、図15に示す最適化処理が実行される。
<最適化処理>
ステップS300〜ステップS302、ステップS304〜ステップS308は第1の実施形態と同様に実行される。
ステップS403において、信頼度算出部225は、キーフレーム画像の指標の検出結果に応じて信頼度を算出する。
ステップS404において、最適化部226は、上記ステップS403で算出された信頼度が閾値以上であるか否かを判定する。信頼度が閾値以上である場合には、ステップS304へ進む。一方、信頼度が閾値未満である場合には、ステップS300へ戻る。
以上説明したように、第2の実施形態では、情報処理装置210は、カメラによって撮像された画像から指標が検出された場合に、指標の検出結果に応じて、指標を含むキーフレーム画像の信頼度を算出する。そして、情報処理装置210は、信頼度が予め設定された閾値より大きい場合に、キーフレーム画像の各々が撮像されたときのカメラの位置及び姿勢の各々を補正する。これにより、指標の検出に関する信頼度を用いて、キーフレーム画像の各々が撮像されたときのカメラの位置及び姿勢の各々を精度よく補正することができる。
<第3の実施形態>
次に、第3の実施形態について説明する。第3の実施形態では、推定されたカメラの位置及び姿勢に応じて、予め設定された対象物が表示装置に重畳表示されるように、表示装置を制御する点が第1又は第2の実施形態と異なる。
図16に、第3の実施形態の情報処理装置310の構成例を示す。第3の実施形態の情報処理装置310は、図16に示されるように、カメラ12と、制御部314と、表示装置326とを備える。また、第3の実施形態では、情報処理装置310が情報端末に搭載される場合を例に説明する。ユーザは情報端末を操作して、表示装置に表示される画面を閲覧する。
制御部314は、データ記憶部15と、画像取得部16と、特徴点抽出部18と、姿勢推定部320と、マップ生成部22と、指標検出部324と、最適化部26と、調整部28と、初期位置推定部319と、表示制御部325とを備える。
第3の実施形態のデータ記憶部15には、予め生成されたマップ情報が格納されている。
初期位置推定部319は、特徴点抽出部18によって抽出された特徴点及び特徴点に対応する特徴量と、データ記憶部15に格納されたマップ情報とに基づいて、上記参考文献8に記載のRelocalizationにより、カメラ12の初期の位置及び初期の姿勢を推定する。
具体的には初期位置推定部319は、特徴点抽出部18により抽出された特徴点及び特徴点に対応する特徴量と、マップ情報のうちの特徴点及び特徴点に対応する特徴量とに基づき、画像取得部16により取得された画像と最も類似するキーフレーム画像を探索する。そして、初期位置推定部319は、画像取得部16によって取得された画像と最も類似するキーフレーム画像との間で、特徴点のマッチングを行う。そして、初期位置推定部319は、最も類似するキーフレーム画像における特徴点とマップ点とのペアに基づき、画像取得部16により取得された画像における特徴点とマップ点とを対応付ける。そして、初期位置推定部319は、上記参考文献4に記載のPnPアルゴリズムにより、カメラ12の初期の位置及び初期の姿勢を推定する。
指標検出部324は、更に、画像取得部16によって出力されたグレースケール画像に、指標が含まれているか否かを検出する。
姿勢推定部320は、指標検出部324によって指標が検出された場合には、指標を含むグレースケール画像に基づいて、指標に対するカメラ12の位置及び姿勢を推定する。一方、姿勢推定部320は、指標検出部324によって指標が検出されなかった場合には、特徴点抽出部18により抽出された特徴点及び特徴点に対応する特徴量に基づいて、カメラ12の位置及び姿勢を推定する。なお、姿勢推定部20は、例えば、以下の参考文献10に記載の方法を使用して、カメラ12の位置及び姿勢を推定してもよい。
参考文献10:特開2015‐158461号公報
表示制御部325は、姿勢推定部20によって推定されたカメラ12の位置及び姿勢に基づいて、予め設定された対象物が表示装置326に重畳表示されるように、表示装置326を制御する。
例えば、表示装置326には、図17に示されるようなカメラ12で撮影された表示画面Dが表示される。表示制御部325は、姿勢推定部20によって推定されたカメラ12の位置及び姿勢に基づいて、対象物Gが表示装置326に重畳表示されるように、表示装置326を制御する。
情報処理装置310の制御部314は、例えば、図18に示すコンピュータ50で実現することができる。コンピュータ50はCPU51、一時記憶領域としてのメモリ52、及び不揮発性の記憶部53を備える。また、コンピュータ50は、カメラ12、表示装置326、及び入出力装置等(図示省略)が接続される入出力I/F54、及び記録媒体59に対するデータの読み込み及び書き込みを制御するR/W部55を備える。
記憶部53は、HDD、SSD、フラッシュメモリ等によって実現できる。記憶媒体としての記憶部53には、コンピュータ50を情報処理装置310の制御部314として機能させるための情報処理プログラム360が記憶されている。情報処理プログラム360は、画像取得プロセス62と、特徴点抽出プロセス63と、姿勢推定プロセス364と、マップ生成プロセス65と、指標検出プロセス366とを有する。また、情報処理プログラム360は、最適化プロセス67と、調整プロセス68と、初期位置推定プロセス370と、表示制御プロセス371とを有する。また、記憶部53は、データ記憶部15を構成する情報が記憶されるデータ記憶領域69を有する。
CPU51は、情報処理プログラム260を記憶部53から読み出してメモリ52に展開し、情報処理プログラム60が有するプロセスを順次実行する。CPU51は、画像取得プロセス62を実行することで、図16に示す画像取得部16として動作する。また、CPU51は、特徴点抽出プロセス63を実行することで、図16に示す特徴点抽出部18として動作する。また、CPU51は、姿勢推定プロセス364を実行することで、図16に示す姿勢推定部320として動作する。また、CPU51は、マップ生成プロセス65を実行することで、図16に示すマップ生成部22として動作する。また、CPU51は、指標検出プロセス366を実行することで、図16に示す指標検出部324として動作する。また、CPU51は、最適化プロセス67を実行することで、図16に示す最適化部26として動作する。また、CPU51は、調整プロセス68を実行することで、図16に示す調整部28として動作する。また、CPU51は、初期位置推定プロセス370を実行することで、図16に示す初期位置推定部319として動作する。また、CPU51は、表示制御プロセス371を実行することで、図16に示す表示制御部325として動作する。また、CPU51は、データ記憶領域69から情報を読み出して、データ記憶部15をメモリ52に展開する。これにより、情報処理プログラム360を実行したコンピュータ50が、情報処理装置310の制御部314として機能することになる。そのため、ソフトウェアである情報処理プログラム360を実行するプロセッサはハードウェアである。
なお、情報処理プログラム360により実現される機能は、例えば半導体集積回路、より詳しくはASIC等で実現することも可能である。
次に、第3の実施形態に係る情報処理装置310の作用について説明する。情報処理装置310は、姿勢推定処理とマップ生成処理と最適化処理と表示制御処理とを実行する。姿勢推定処理とマップ生成処理と最適化処理とについては、第1又は第2の実施形態と同様である。以下、図19に示す表示制御処理について詳述する。
<表示制御処理>
表示制御処理を実行することを表す指示信号を受け付けると、情報処理装置310は、図19に示す表示制御処理を実行する。
ステップS500において、初期位置推定部319は、データ記憶部15に格納されたマップ情報を取得する。
ステップS502において、画像取得部16は、カメラ12によって撮像された初期の画像を取得する。次に、画像取得部16は、カメラ12によって撮像された画像をグレースケール画像へ変換する。そして、画像取得部16は、グレースケール画像を出力する。
ステップS504において、特徴点抽出部18は、上記ステップS502で出力されたグレースケール画像から、特徴点を抽出する。そして、特徴点抽出部18は、各特徴点に対して、特徴量を計算する。
ステップS506において、初期位置推定部319は、上記ステップS504で抽出された特徴点及び特徴点に対応する特徴量と、上記ステップS500で取得されたマップ情報とに基づき、カメラ12の初期の位置及び初期の姿勢を推定する。
ステップS508において、画像取得部16は、カメラ12によって撮像された画像を取得する。次に、画像取得部16は、カメラ12によって撮像された画像をグレースケール画像へ変換する。そして、画像取得部16は、グレースケール画像を出力する。
ステップS510において、指標検出部324は、上記ステップS508で出力されたグレースケール画像に、指標が含まれているか否かを判定する。グレースケール画像に指標が含まれている場合には、ステップS512へ進む。一方、グレースケール画像に指標が含まれていない場合には、ステップS514へ進む。
ステップS512において、姿勢推定部320は、指標を含むグレースケール画像に基づいて、指標に対するカメラ12の位置及び姿勢を推定する。
ステップS514において、特徴点抽出部18は、上記ステップS508で出力されたグレースケール画像から、特徴点を抽出する。そして、特徴点抽出部18は、各特徴点に対して、特徴量を計算する。
ステップS516において、姿勢推定部320は、上記ステップS514で抽出された特徴点及び特徴点に対応する特徴量に基づいて、カメラ12の位置及び姿勢を推定する。
ステップS518において、表示制御部325は、上記ステップS516で推定されたカメラ12の位置及び姿勢に基づいて、予め設定された対象物が表示装置326に重畳表示されるように、表示装置326を制御する。
ステップS520において、表示制御部325は、表示制御処理の停止信号を受け付けたか否かを判定する。表示制御処理の停止信号を受け付けた場合には、表示制御処理を終了する。表示制御処理の停止信号を受け付けていない場合には、ステップS508へ戻る。
以上説明したように、第3の実施形態では、情報処理装置310は、推定されたカメラの位置及び姿勢に応じて、対象物が表示装置に重畳表示されるように、表示装置を制御する。また、指標が検出される毎に、キーフレーム画像の各々が撮像されたときのカメラの位置及び姿勢の各々の最適化が行われることにより、高頻度で最適化が行われる。これにより、精度よく推定されたカメラの位置及び姿勢に応じて、表示画面の適切な箇所へ対象物を表示させることができる。
<第4の実施形態>
次に、第4の実施形態について説明する。第4の実施形態では、カメラによって撮像された画像から、前回検出された指標と対応する指標が検出された場合に、キーフレーム画像におけるカメラの位置及び姿勢を推定する点が第1〜第3の実施形態と異なる。
第1の実施形態では、複数の指標間の相対的な位置及び姿勢が既知である必要がある。第4の実施形態では、複数の指標間の相対的な位置及び姿勢が既知である必要はない。
図20に、第4の実施形態の情報処理装置410の構成例を示す。第4の実施形態の情報処理装置410は、図20に示されるように、カメラ12と、制御部414とを備える。
制御部414は、データ記憶部15と、画像取得部16と、特徴点抽出部18と、姿勢推定部420と、マップ生成部22と、指標検出部424と、最適化部426と、調整部28とを備える。
[姿勢推定処理]
指標検出部424は、更に、画像取得部16によって出力されたグレースケール画像に、指標が含まれているか否かを検出する。
姿勢推定部420は、特徴点抽出部18により抽出された特徴点及び特徴点に対応する特徴量に基づいて、カメラ12の位置及び姿勢を推定する。また、姿勢推定部420は、更に、指標検出部424によって指標が検出された場合には、指標を含むグレースケール画像に基づいて、指標に対するカメラ12の位置及び姿勢を推定する。
そして、姿勢推定部420は、指標検出部424によって指標が検出された場合には、指標を含むグレースケール画像をキーフレーム画像としてデータ記憶部15へ格納する。なお、指標が検出された場合には、指標を含むグレースケール画像がキーフレーム画像としてデータ記憶部15へ格納されるが、データ記憶部15へキーフレーム画像として格納される画像には、指標が必ず含まれているわけではない。例えば、第1の実施形態と同様に、所定の条件を満たしたキーフレーム画像も同様にデータ記憶部15へ格納される。
また、姿勢推定部420は、キーフレーム画像と共に、指標に対するカメラ12の位置及び姿勢をデータ記憶部15へ格納する。なお、姿勢推定部420は、キーフレーム画像を格納する際に、キーフレーム画像と共に、指標の識別情報を表す指標IDをデータ記憶部15へ格納する。例えば、キーフレーム画像中の指標領域画像を、指標IDとすることができる。また、姿勢推定部420は、連続するフレームで指標IDが同一の指標が検出された場合には、画像取得部16によって出力されたグレースケール画像についてキーフレーム画像として格納しない。
また、姿勢推定部420は、指標を含むグレースケール画像を新たなキーフレーム画像として格納する際に、データ記憶部15に既に格納されたキーフレーム画像に含まれる指標と同一であるか否かを判定する。具体的には、新たなキーフレーム画像に含まれている指標領域画像と、データ記憶部15に格納された指標IDとが同一であるか否かを判定する。
最適化部426は、新たなキーフレーム画像に含まれる指標領域画像がデータ記憶部15に格納されている指標IDと同一であると判定された場合、各キーフレーム画像が撮像されたときのカメラ12の位置及び姿勢に基づき、ループを形成する。具体的には、最適化部426は、新たなキーフレーム画像を撮像したときのカメラ12の位置及び姿勢と、データ記憶部15に既に格納された過去のキーフレーム画像が撮像されたときのカメラ12の位置及び姿勢との間にエッジを形成しループを形成する。
例えば、図21に示されるように、新たなキーフレーム画像から指標1が検出された場合、指標1に対するカメラ12の位置及び姿勢X1が推定される。また、既にデータ記憶部15に格納されている過去のキーフレーム画像からは指標1が検出されており、指標1に対するカメラ12の位置及び姿勢X2が推定されている。
この場合、指標1に対するカメラ12の位置及び姿勢X1と、各キーフレーム画像が撮像されたときのカメラ12の位置及び姿勢bと、指標1に対するカメラ12の位置及び姿勢X2とからループが形成される。これにより、上記参考文献8に記載のPose Graph最適化を行うことが可能となる。
従って、最適化部426は、上記参考文献8に記載のPose Graph最適化により、既にデータ記憶部15に格納されている過去のキーフレーム画像におけるカメラ12の位置及び姿勢の各々を補正する。
情報処理装置410の制御部414は、例えば、図22に示すコンピュータ50で実現することができる。コンピュータ50の記憶媒体としての記憶部53には、コンピュータ50を情報処理装置410の制御部414として機能させるための情報処理プログラム460が記憶されている。情報処理プログラム460は、画像取得プロセス62と、特徴点抽出プロセス63と、姿勢推定プロセス464と、マップ生成プロセス65と、指標検出プロセス466と、最適化プロセス467と、調整プロセス68とを有する。また、記憶部53は、データ記憶部15を構成する情報が記憶されるデータ記憶領域69を有する。
CPU51は、情報処理プログラム460を記憶部53から読み出してメモリ52に展開し、情報処理プログラム460が有するプロセスを順次実行する。CPU51は、画像取得プロセス62を実行することで、図20に示す画像取得部16として動作する。また、CPU51は、特徴点抽出プロセス63を実行することで、図20に示す特徴点抽出部18として動作する。また、CPU51は、姿勢推定プロセス464を実行することで、図20に示す姿勢推定部420として動作する。また、CPU51は、マップ生成プロセス65を実行することで、図20に示すマップ生成部22として動作する。また、CPU51は、指標検出プロセス466を実行することで、図20に示す指標検出部424として動作する。また、CPU51は、最適化プロセス467を実行することで、図20に示す最適化部426として動作する。また、CPU51は、調整プロセス68を実行することで、図20に示す調整部28として動作する。また、CPU51は、データ記憶領域69から情報を読み出して、データ記憶部15をメモリ52に展開する。これにより、情報処理プログラム460を実行したコンピュータ50が、情報処理装置410の制御部414として機能することになる。そのため、ソフトウェアである情報処理プログラム460を実行するプロセッサはハードウェアである。
なお、情報処理プログラム460により実現される機能は、例えば半導体集積回路、より詳しくはASIC等で実現することも可能である。
次に、第4の実施形態に係る情報処理装置410の作用について説明する。情報処理装置410は、図23に示す姿勢推定処理を実行する。また、情報処理装置410は、図24に示す最適化処理を実行する。
<姿勢推定処理>
ステップS100〜ステップS104は第1の実施形態と同様に実行される。
ステップS606において、指標検出部424は、ステップS100で出力されたグレースケール画像に、指標が含まれているか否かを検出する。グレースケール画像に指標が含まれていると検出された場合には、ステップS607へ進む。一方、グレースケール画像に指標が含まれていないと検出された場合には、ステップS100へ進む。
ステップS607において、姿勢推定部420は、指標を含むグレースケール画像に基づいて、指標に対するカメラ12の位置及び姿勢を推定する。
ステップS608において、姿勢推定部420は、上記ステップS100で出力されたグレースケール画像をキーフレーム画像としてデータ記憶部15へ格納する。また、姿勢推定部420は、キーフレーム画像と共に、上記ステップS607で推定された指標に対するカメラ12の位置及び姿勢をデータ記憶部15へ格納する。また、姿勢推定部420は、キーフレーム画像を格納する際に、指標の識別情報を表す指標IDをデータ記憶部15へ格納する。
<最適化処理>
ステップS204〜ステップS206は、第1の実施形態と同様に実行される。
ステップS700において、姿勢推定部420は、指標を含むグレースケール画像を新たなキーフレーム画像として格納する際に、新たなキーフレーム画像に含まれている指標領域画像と、データ記憶部15に格納された指標IDとが同一であるか否かを判定する。新たなキーフレーム画像に含まれている指標領域画像と同一である指標IDがデータ記憶部15に格納されている場合には、ステップS702へ進む。一方、新たなキーフレーム画像に含まれている指標領域画像と同一である指標IDがデータ記憶部15に格納されている場合には、ステップS700の処理を繰り返す。
ステップS702において、最適化部426は、新たなキーフレーム画像におけるカメラ12の位置及び姿勢と、データ記憶部15に既に格納された過去のキーフレーム画像におけるカメラ12の位置及び姿勢との間にエッジを形成しループを形成する。そして、最適化部426は、上記参考文献8に記載のPose Graph最適化により、既にデータ記憶部15に格納されている過去のキーフレーム画像におけるカメラ12の位置及び姿勢の各々を補正する。
なお、上記では、各プログラムが記憶部に予め記憶(インストール)されている態様を説明したが、これに限定されない。開示の技術に係るプログラムは、CD−ROM、DVD−ROM、USBメモリ等の記録媒体に記録された形態で提供することも可能である。
本明細書に記載された全ての文献、特許出願及び技術規格は、個々の文献、特許出願及び技術規格が参照により取り込まれることが具体的かつ個々に記された場合と同程度に、本明細書中に参照により取り込まれる。
次に、上記各実施形態の変形例を説明する。
上記第1及び第2の実施形態では、姿勢推定部20は、画像から抽出された特徴点及び特徴点に対応する特徴量と、データ記憶部15に格納されたマップ情報とに基づいて、カメラ12の位置及び姿勢を推定する場合を例に説明したがこれに限定されるものではない。例えば、指標検出部によって、グレースケール画像内に指標が検出された場合には、指標に対するカメラ12の位置及び姿勢を推定するようにしてもよい。
また、上記各実施形態では、データ記憶部15に格納されている全てのキーフレームに対して、Pose Graph最適化とバンドル調整を行う場合を例に説明したがこれに限定されるものではない。例えば、バンドル調整が実施されていないキーフレームに対してPose Graph最適化を行ってもよい。また、Pose Graph最適化が行われていないキーフレームに対してバンドル調整を行ってもよい。Pose Graph最適化の実施とバンドル調整の実施との組み合わせについては、適宜変更してもよい。
また、上記各実施形態では、キーフレーム画像から推定されたカメラの位置及び姿勢と、画像から指標が検出された際の指標に対する位置及び姿勢とでループを形成する場合について説明したが、これに限定されない。例えば、画像取得部によって前回までに逐次取得された画像の各々から推定されたカメラの位置及び姿勢と、画像から指標が検出された際の指標に対する位置及び姿勢とでループを形成し、最適化を実行してもよい。この場合、キーフレーム画像から推定された位置及び姿勢だけでなく、取得された画像の各々について推定された位置及び姿勢が最適化されるため、カメラの移動軌跡を精度良く推定することができる。なお、この場合、画像取得部で画像が取得される都度、画像に指標が含まれるか否かを判定するようにすればよい。
また、上記第3の実施形態では、表示装置に対象物を表示される場合を例に説明したが、例えば、工場又はプラント等の大規模な環境を撮影した画像に対して、付加情報を重畳表示させるように表示装置を制御し、作業者の作業支援を行うようにしてもよい。
以上の各実施形態に関し、更に以下の付記を開示する。
(付記1)
撮影位置が変化し得る撮像装置によって撮像された画像を取得する画像取得部と、
前記画像取得部によって取得された前記画像に基づいて、前記撮像装置の位置及び姿勢を推定し、前記画像取得部によって取得された前記画像から予め定められた指標が検出された場合に、前記指標に対する前記撮像装置の位置及び姿勢を推定する姿勢推定部と、
前記画像取得部によって取得された前記画像から前記指標が検出された場合に、前回までに取得された前記画像の各々に基づいて推定された前記撮像装置の位置の各々と、前記姿勢推定部によって推定された前記指標に対する前記撮像装置の位置とから形成されるループに基づいて、前記画像の各々が撮像されたときの前記撮像装置の位置及び姿勢の各々を補正する推定部と、
を含む情報処理装置。
(付記2)
前記推定部は、前記画像取得部により取得された画像のうち、所定の条件を満たすキーフレーム画像の各々が撮像されたときの前記撮像装置の位置及び姿勢の各々の推定結果に基づいて、前記キーフレーム画像の特徴点の各々に対応する位置の3次元座標を表すマップ点を生成する、
付記1に記載の情報処理装置。
(付記3)
前記推定部は、前記画像取得部により取得された画像のうち、所定の条件を満たすキーフレーム画像の各々が撮像されたときの前記撮像装置の位置及び姿勢の各々の推定結果に基づいて、記憶部に格納された、前記キーフレーム画像の各々が撮像されたときの前記撮像装置の位置及び姿勢の各々を補正する、
付記1又は付記2に記載の情報処理装置。
(付記4)
複数の前記指標の各々についての、前記指標間の相対的な位置及び姿勢は既知である、
付記1〜付記3の何れか1項に記載の情報処理装置。
(付記5)
前記画像取得部によって取得された前記画像から前記指標が検出された場合に、前記指標の検出結果に応じて、前記指標を含む前記画像の信頼度を算出する信頼度算出部を更に含み、
前記推定部は、前記信頼度算出部によって算出された前記信頼度が予め設定された閾値より大きい場合に、前記画像の各々が撮像されたときの前記撮像装置の位置及び姿勢の各々を補正する、
付記1〜付記4の何れか1項に記載の情報処理装置。
(付記6)
前記姿勢推定部によって推定された前記撮像装置の位置及び姿勢に応じて、予め設定された対象物が表示装置に重畳表示されるように、前記表示装置を制御する表示制御部を更に含む、
付記1〜付記5の何れか1項に記載の情報処理装置。
(付記7)
前記推定部は、前記画像取得部によって取得された前記画像から、前回検出された前記指標と対応する前記指標が検出された場合に、前記画像の各々が撮像されたときの前記撮像装置の位置及び姿勢の各々を補正する、
付記1〜付記6の何れか1項に記載の情報処理装置。
(付記8)
撮影位置が移動に伴って変わる撮像装置によって撮像された画像を取得し、
取得された前記画像に基づいて、前記撮像装置の位置及び姿勢を推定し、取得された前記画像から予め定められた指標が検出された場合に、前記指標に対する前記撮像装置の位置及び姿勢を推定し、
取得された前記画像から前記指標が検出された場合に、前回までに取得された前記画像の各々に基づいて推定された前記撮像装置の位置の各々と、推定された前記指標に対する前記撮像装置の位置とから形成されるループに基づいて、前記画像の各々が撮像されたときの前記撮像装置の位置及び姿勢の各々を補正する、
処理をコンピュータに実行させるための情報処理プログラム。
(付記9)
取得された画像のうち、所定の条件を満たすキーフレーム画像の各々が撮像されたときの前記撮像装置の位置及び姿勢の各々の推定結果に基づいて、前記キーフレーム画像の特徴点の各々に対応する位置の3次元座標を表すマップ点を生成する、
付記8に記載の情報処理プログラム。
(付記10)
取得された画像のうち、所定の条件を満たすキーフレーム画像の各々が撮像されたときの前記撮像装置の位置及び姿勢の各々の推定結果に基づいて、記憶部に格納された、前記キーフレーム画像の各々が撮像されたときの前記撮像装置の位置及び姿勢の各々を補正する、
付記8又は付記9に記載の情報処理プログラム。
(付記11)
複数の前記指標の各々についての、前記指標間の相対的な位置及び姿勢は既知である、
付記8〜付記10の何れか1項に記載の情報処理プログラム。
(付記12)
取得された前記画像から前記指標が検出された場合に、前記指標の検出結果に応じて、前記指標を含む前記画像の信頼度を更に算出し、
算出された前記信頼度が予め設定された閾値より大きい場合に、前記画像の各々が撮像されたときの前記撮像装置の位置及び姿勢の各々を補正する、
付記8〜付記11の何れか1項に記載の情報処理プログラム。
(付記13)
推定された前記撮像装置の位置及び姿勢に応じて、予め設定された対象物が表示装置に重畳表示されるように、前記表示装置を制御する、
付記8〜付記12の何れか1項に記載の情報処理プログラム。
(付記14)
取得された前記画像から、前回検出された前記指標と対応する前記指標が検出された場合に、前記画像の各々が撮像されたときの前記撮像装置の位置及び姿勢の各々を補正する、
付記8〜付記13の何れか1項に記載の情報処理プログラム。
(付記15)
撮影位置が移動に伴って変わる撮像装置によって撮像された画像を取得し、
取得された前記画像に基づいて、前記撮像装置の位置及び姿勢を推定し、取得された前記画像から予め定められた指標が検出された場合に、前記指標に対する前記撮像装置の位置及び姿勢を推定し、
取得された前記画像から前記指標が検出された場合に、前回までに取得された前記画像の各々に基づいて推定された前記撮像装置の位置の各々と、推定された前記指標に対する前記撮像装置の位置とから形成されるループに基づいて、前記画像の各々が撮像されたときの前記撮像装置の位置及び姿勢の各々を補正する、
処理をコンピュータに実行させるための情報処理方法。
(付記16)
取得された画像のうち、所定の条件を満たすキーフレーム画像の各々が撮像されたときの前記撮像装置の位置及び姿勢の各々の推定結果に基づいて、前記キーフレーム画像の特徴点の各々に対応する位置の3次元座標を表すマップ点を生成する、
付記15に記載の情報処理方法。
(付記17)
取得された画像のうち、所定の条件を満たすキーフレーム画像の各々が撮像されたときの前記撮像装置の位置及び姿勢の各々の推定結果に基づいて、記憶部に格納された、前記キーフレーム画像の各々が撮像されたときの前記撮像装置の位置及び姿勢の各々を補正する、
付記15又は付記16に記載の情報処理方法。
(付記18)
複数の前記指標の各々についての、前記指標間の相対的な位置及び姿勢は既知である、
付記15〜付記17の何れか1項に記載の情報処理方法。
(付記19)
取得された前記画像から前記指標が検出された場合に、前記指標の検出結果に応じて、前記指標を含む前記画像の信頼度を更に算出し、
算出された前記信頼度が予め設定された閾値より大きい場合に、前記画像の各々が撮像されたときの前記撮像装置の位置及び姿勢の各々を補正する、
付記15〜付記18の何れか1項に記載の情報処理方法。
(付記20)
撮影位置が移動に伴って変わる撮像装置によって撮像された画像を取得し、
取得された前記画像に基づいて、前記撮像装置の位置及び姿勢を推定し、取得された前記画像から予め定められた指標が検出された場合に、前記指標に対する前記撮像装置の位置及び姿勢を推定し、
取得された前記画像から前記指標が検出された場合に、前回までに取得された前記画像の各々に基づいて推定された前記撮像装置の位置の各々と、推定された前記指標に対する前記撮像装置の位置とから形成されるループに基づいて、前記画像の各々が撮像されたときの前記撮像装置の位置及び姿勢の各々を補正する、
処理をコンピュータに実行させるための情報処理プログラムを記憶した記憶媒体。