説明

情報処理装置、および情報処理方法、並びにプログラム

【課題】計算量を削減し効率的な3次元位置情報の生成を行う構成を実現する。
【解決手段】カメラによる撮影画像を観測データとして入力し、特徴点位置情報を含む多次元正規分布データからなる状態データを更新することで特徴点の3次元位置を求める例えばSLAM処理において、3次元情報の生成対象領域を区分したサブマップを設定する。さらにサブマップに属しない特徴点に関するデータを含まないサブマップ対応の状態データを生成して、観測データに基づいてサブマップ対応状態データを更新する。本構成によれば状態データのデータ量が削減され、状態データ更新に伴う計算量を減少させることが可能であり、効率的な処理が実現される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、および情報処理方法、並びにプログラムに関する。さらに詳細には、3次元空間の解析処理を実行する情報処理装置、および情報処理方法、並びにプログラムに関する。
【背景技術】
【0002】
3次元空間の解析の処理手法として、3次元空間をカメラによって撮影し、その撮影画像の解析を行う手法がある。例えばカメラによって撮影された画像から複数の特徴点(ランドマーク(Landmark)とも呼ばれる)を抽出し、これらの特徴点の3次元位置を推定する処理が行われる。
【0003】
カメラを移動させながら画像を撮影し、複数の撮影画像に含まれる特徴点の軌跡を解析することで、特徴点の3次元位置を推定するとともに、カメラ(自己)の位置姿勢を推定(ローカリゼーション)することが可能となる。また特徴点の3次元位置情報を用いて周囲の地図(環境地図)を作成(mapping)することができる。このように、カメラ(自己)の位置同定(ローカリゼーション)と周囲の地図(環境地図)の作成(mapping)を並行して実行する処理はSLAM(simultaneous localization and mapping)と呼ばれる。
【0004】
SLAMの手法の1つとして、EKF(拡張カルマンフィルタ:Extended Kalman Filter)を使用したEKFベースのSLAMがある。なお、EKFベースのSLAMについては、例えば非特許文献1(S.Thrun,W.Burgard,and D.Fox. Probabilistic Robotics. MIT Press, Cambridge,MA,2005)に記載されている。
【0005】
EKFベースのSLAMは、例えばカメラを移動させながら画像を連続的に撮影し、各画像に含まれる特徴点の軌跡(トラッキング情報)を求め、移動ステレオ法でカメラの移動量と特徴点の3次元位置を同時に推定する方法である。この処理には、例えば、
カメラの位置、姿勢、速度、角速度、
各特徴点の位置情報、
これらの各情報を含む確率分布モデルとしての多次元正規分布データからなる「状態データ」を利用する。カルマンフィルタや拡張カルマンフィルタを用いて「状態データ」の更新処理を行って、特徴点位置、カメラ位置等を推定する。
【0006】
「状態データ」は、カメラの位置、姿勢、速度、角速度と、各特徴点の位置情報を示す平均ベクトルと分散共分散行列を含む多次元正規分布データによって構成される。分散共分散行列は、カメラの位置、姿勢、速度、角速度、各特徴点の位置情報、これらの固有状態値の[分散]と、上記各状態値の異なる状態値の組み合わせの相関情報に対応する[共分散]を含む行列である。なお、具体的なデータ構成については本発明の説明の欄で説明する。
【0007】
EKFベースのSLAMにおける「状態データ」の更新処理では、移動するカメラの撮影画像を利用するが、その結果、「状態データ」には登録されているが、処理対象として入力した最新のカメラ撮影画像に写っていない特徴点情報についても更新対象として処理を行うことになる。すなわち先行して入力した画像に含まれる特徴点が、最新の入力画像には含まれなくなる場合がある。先行して入力した画像に含まれる特徴点に関する情報は「状態データ」に登録される。この結果、「状態データ」に含まれる「カメラに写っている特徴点」と「カメラに写っていない特徴点」との相関情報についてもカルマンフィルタを適用して更新する処理が実行されることになる。
【0008】
すなわち、マップ作成対象領域が大きくなると特徴点の数も増大する。「状態データ」に多数の特徴点情報を含めた場合、カルマンフィルタや拡張カルマンフィルタを用いた「状態データ」の更新処理における計算量が大きくなる。
【0009】
「状態データ」には前述のように分散共分散行列が含まれ、この行列に全ての特徴点とカメラの相関情報が保持されることになる。従って特徴点数が増えると分散共分散行列のサイズも大きくなる。カルマンフィルタや拡張カルマンフィルタを用いた「状態データ」の更新処理における計算量は、特徴点の数nに対して、計算量がO(9n)のオーダーで増加する。データ更新は、繰り返し行うことが必要であり、その結果、特徴点数の多い広い領域の3次元マップを作成する場合の計算処理の負荷、処理時間が過大になるという問題がある。
【先行技術文献】
【非特許文献】
【0010】
【非特許文献1】S.Thrun,W.Burgard,and D.Fox. Probabilistic Robotics. MIT Press, Cambridge,MA,2005
【発明の概要】
【発明が解決しようとする課題】
【0011】
本発明は、例えば上述の問題点に鑑みてなされたものであり、撮影画像解析による特徴点位置推定を行う構成において、処理負荷を軽減し、精度を低下させることなく特徴点の3次元位置を推定し、3次元マップの生成を可能とする情報処理装置、および情報処理方法、並びにプログラムを提供することを目的とする。
【課題を解決するための手段】
【0012】
本発明の第1の側面は、
空間を移動するカメラが撮影した複数の異なる視点からの撮影画像を順次入力し、画像内の特徴点の3次元位置とカメラの位置姿勢情報を含む状態データを、特徴点のトラッキング情報を含む観測情報を適用して更新することで、カメラの位置、姿勢、または特徴点の3次元位置を求める3次元情報生成部と、
3次元位置の算出対象となる領域を分割したサブマップを設定するサブマップ設定部を有し、
前記3次元情報生成部は、
前記サブマップ設定部の設定したサブマップ各々に対して、サブマップ領域外の特徴点情報を含まないサブマップ対応状態データを設定し、設定したサブマップ対応状態データの更新処理を実行して、カメラの位置、姿勢、または各特徴点の3次元位置を求める情報処理装置にある。
【0013】
さらに、本発明の情報処理装置の一実施態様において、前記3次元情報生成部は、前記サブマップ対応状態データとして、前記カメラの位置、姿勢と、前記サブマップ内の各特徴点の位置の状態値を示す平均ベクトルと分散共分散行列を含む多次元正規分布データを、各サブマップに対応させて設定し、設定したサブマップ対応の多次元正規分布データを観測情報を適用して更新する。
【0014】
さらに、本発明の情報処理装置の一実施態様において、前記分散共分散行列は、カメラの位置、姿勢、各特徴点の位置情報、これらの固有状態値の分散と、前記各状態値の異なる状態値の組み合わせの相関情報に対応する共分散を含む行列である。
【0015】
さらに、本発明の情報処理装置の一実施態様において、前記3次元情報生成部は、カルマンフィルタ(Kalman Filter)、または拡張カルマンフィルタ(EKF:Extended Kalman Filter)を適用して前記サブマップ対応状態データの更新処理を実行する。
【0016】
さらに、本発明の情報処理装置の一実施態様において、前記3次元情報生成部は、旧サブマップから新サブマップへ、サブマップを切り換えて処理を行う場合、旧サブマップ対応状態データに含まれるカメラ情報をそのまま利用して新サブマップ対応状態データを生成する。
【0017】
さらに、本発明の情報処理装置の一実施態様において、前記サブマップ設定部は、サブマップに含まれる特徴点数が予め既定した上限数N以上となった場合、重複領域を持つ2つのサブマップに分割するサブマップ分割処理を実行し、当該2つのサブマップには少なくとも一つは同一の特徴点を有することを特徴とする。
【0018】
さらに、本発明の情報処理装置の一実施態様において、前記3次元情報生成部は、サブマップ分割処理において生成した2つの分割サブマップ各々に対応する2つのサブマップ対応状態データを生成する処理を行う構成であり、分割前のサブマップのサブマップ対応状態データから、各分割サブマップに含まれない特徴点情報を各々削除して2つの分割サブマップ各々のサブマップ対応状態データを生成する。
【0019】
さらに、本発明の情報処理装置の一実施態様において、前記サブマップ設定部は、3次元位置の算出対象となる領域を射影変換して生成した2次元平面を予め既定した大きさで、かつ重複領域を持つ複数のサブマップに分割するサブマップ分割処理を実行する。
【0020】
さらに、本発明の情報処理装置の一実施態様において、前記3次元情報生成部は、バンドル調整処理による特徴点位置修正処理を実行する。
【0021】
さらに、本発明の情報処理装置の一実施態様において、前記3次元情報生成部は、カメラの位置同定(ローカリゼーション)と周囲の地図(環境地図)の作成(mapping)を並行して実行するSLAM(simultaneous localization and mapping)処理を行う。
【0022】
さらに、本発明の第2の側面は、
情報処理装置において実行する情報処理方法であり、
サブマップ設定部が、3次元位置の算出対象となる領域を分割したサブマップを設定するサブマップ設定ステップと、
3次元情報生成部が、空間を移動するカメラが撮影した複数の異なる視点からの撮影画像を順次入力し、画像内の特徴点の3次元位置とカメラの位置姿勢情報を含む状態データを、特徴点のトラッキング情報を含む観測情報を適用して更新することでカメラの位置、姿勢、または特徴点の3次元位置を求める3次元情報生成ステップとを有し、
前記3次元情報生成ステップは、
前記サブマップ設定ステップにおいて設定されたサブマップ各々に対して、サブマップ領域外の特徴点情報を含まないサブマップ対応状態データを設定し、設定したサブマップ対応状態データの更新処理を実行してカメラの位置、姿勢、または各特徴点の3次元位置を求めるステップである情報処理方法にある。
【0023】
さらに、本発明の第3の側面は、
情報処理装置において情報処理を実行させるプログラムであり、
サブマップ設定部に、3次元位置の算出対象となる領域を分割したサブマップを設定させるサブマップ設定ステップと、
3次元情報生成部に、空間を移動するカメラが撮影した複数の異なる視点からの撮影画像を順次入力し、画像内の特徴点の3次元位置とカメラの位置姿勢情報を含む状態データを、特徴点のトラッキング情報を含む観測情報を適用して更新することでカメラの位置、姿勢、または特徴点の3次元位置を求めさせる3次元情報生成ステップとを有し、
前記3次元情報生成ステップは、
前記サブマップ設定ステップにおいて設定されたサブマップ各々に対して、サブマップ領域外の特徴点情報を含まないサブマップ対応状態データを設定し、設定したサブマップ対応状態データの更新処理を実行させてカメラの位置、姿勢、または各特徴点の3次元位置を求めるステップであるプログラムにある。
【0024】
なお、本発明のプログラムは、例えば、様々なプログラム・コードを実行可能な画像処理装置やコンピュータ・システムに対して、コンピュータ可読な形式で提供する記憶媒体、通信媒体によって提供可能なプログラムである。このようなプログラムをコンピュータ可読な形式で提供することにより、画像処理装置やコンピュータ・システム上でプログラムに応じた処理が実現される。
【0025】
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【発明の効果】
【0026】
本発明の一実施例の構成によれば、計算量を削減し効率的な3次元位置情報の生成を行う構成が実現される。カメラによる撮影画像を観測データとして入力し、特徴点位置情報を含む多次元正規分布データからなる状態データを更新することで特徴点の3次元位置を求める例えばSLAM処理において、3次元情報の生成対象領域を区分したサブマップを設定する。さらにサブマップに属しない特徴点に関するデータを含まないサブマップ対応の状態データを生成して、観測データに基づいてサブマップ対応状態データを更新する。本構成によれば状態データのデータ量が削減され、状態データ更新に伴う計算量を減少させることが可能であり、効率的な処理が実現される。
【図面の簡単な説明】
【0027】
【図1】SLAM(simultaneous localization and mapping)処理の概要について説明する図である。
【図2】SLAM処理に適用する状態データの構成について説明する図である。
【図3】ピンホールカメラモデルについて説明する図である。
【図4】ピンホールカメラモデルについて説明する図である。
【図5】SLAM処理に適用する状態データの構成について説明する図である。
【図6】本発明の情報処理装置の処理に適用するサブマップと状態データについて説明する図である。
【図7】本発明の情報処理装置の処理に適用するサブマップと画像フレームとの対応について説明する図である。
【図8】本発明の情報処理装置の処理に適用するサブマップと状態データについて説明する図である。
【図9】本発明の一実施例の情報処理装置の構成例について説明する図である。
【図10】本発明の一実施例の情報処理装置において実行する処理のシーケンスについて説明するフローチャートを示す図である。
【図11】図10に示すフローチャートのステップS101における注目サブマップ選択処理の詳細シーケンスについて説明するフローチャートを示す図である。
【図12】図10に示すフローチャートのステップS102における注目サブマップに対する「状態データ」を用意する処理について説明するフローチャートを示す図である。
【図13】サブマップ対応の状態データについて説明する図である。
【図14】注目サブマップに含まれる特徴点が、予め設定した既定上限数以上となった場合に分割する処理のシーケンスについて説明するフローチャートを示す図である。
【図15】図14のフローにおけるステップS303の「注目サブマップの分割処理」の詳細シーケンスについて説明するフローチャートを示す図である。
【図16】図15のフローにおけるステップS452〜S454のサブマップの分割処理の具体例について説明する図である。
【図17】図15のフローにおけるステップS455〜S456のサブマップ対応の状態データに対する処理の具体例について説明する図である。
【図18】図15のフローにおけるステップS455〜S456のサブマップ対応の状態データに対する処理の具体例について説明する図である。
【図19】図15のフローにおけるステップS455〜S456のサブマップ対応の状態データに対する処理の具体例について説明する図である。
【図20】3次元マップを2次元マップに射影近似し、2次元マップ上で空間的に等間隔に分割する処理の詳細シーケンスについて説明するフローチャートを示す図である。
【図21】3次元マップを2次元マップに射影近似し、2次元マップ上で空間的に等間隔に分割する処理の具体例について説明する図である。
【図22】3次元マップを2次元マップに射影近似し、2次元マップ上で空間的に等間隔に分割する処理の具体例について説明する図である。
【図23】図10のフローにおけるステップS108の全体最適化処理の詳細シーケンスについて説明するフローチャートを示す図である。
【図24】バンドル調整処理について説明する図である。
【図25】サブマップの重複領域の必要性について説明する図である。
【図26】サブマップの重複領域の必要性について説明する図である。
【発明を実施するための形態】
【0028】
以下、図面を参照しながら本発明の実施形態に係る情報処理装置、および情報処理方法、並びにプログラムの詳細について説明する。説明は以下の項目に従って行う。
1.SLAM処理の概要について
2.サプマップについて
3.情報処理装置の構成例およびサブマップを適用した処理例について
4.サブマップの設定手法の追加説明
【0029】
[1.SLAM処理の概要について]
本発明の情報処理装置は、カメラによって撮影された画像に含まれる特徴点情報を適用して特徴点の3次元位置を推定する処理を実行する。例えば、カメラ位置の同定(ローカリゼーション)と周囲の地図作成(mapping)処理を並行して実行するSLAM(simultaneous localization and mapping)処理を行う。
【0030】
具体的には、カメラを移動させながら画像を連続的に撮影し、各画像に含まれる特徴点の軌跡(トラッキング情報)を求め、移動ステレオ法でカメラの移動量と特徴点の3次元位置を同時に推定する。
【0031】
前述したようにSLAMの手法の1つとして、カルマンフィルタを適用したSLAMや、EKF(拡張カルマンフィルタ:Extended Kalman Filter)を使用したEKFベースのSLAMがある。SLAMについて図1以下を参照して説明する。図1のシステムは、単眼カメラ101から得られる映像を入力し解析を行う。カメラ101は、移動しながら画像を連続的に撮影する。SLAMは、映像内の特徴点のトラッキングを求め、特徴点の移動量(トラッキング結果)から移動ステレオ法でカメラの移動量と特徴点の3次元位置を同時に推定する。
【0032】
SLAMでは、図2に示す状態データを用いた処理を行う。すなわち、図1に示すカメラ101の移動量と、カメラ101によって撮影された画像に含まれる特徴点103の位置を、多次元正規分布で表現された「状態データ」を利用して推定する。
【0033】
「状態データ」は、図2に示すように、画像を撮影するカメラと特徴点の状態を示す状態値の多次元正規分布データによって構成される。すなわち、
カメラの位置、姿勢、速度、角速度、
各特徴点の位置情報(P1〜PN)、
これらの状態値を示す平均ベクトルと分散共分散行列を含む多次元正規分布データによって構成される。分散共分散行列は、カメラの位置、姿勢、速度、角速度、各特徴点の位置情報、これらの固有状態値の[分散(σaa)]と、上記各状態値の異なる状態値の組み合わせの相関情報に対応する[共分散(σab)]を含む行列である。
【0034】
カメラは移動しながら画像を撮影し、順次、取得する画像から特徴点トラッキング情報(軌跡)を得て、カルマンフィルタや拡張カルマンフィルタ(EKF)を適用して状態データの更新を実行し、カメラの位置同定(ローカリゼーション)と周囲の地図(環境地図)の作成(mapping)を行うものである。なお、単眼カメラはピンホールカメラモデルにフィットするものとし、全ての特徴点は静止していると仮定する。
【0035】
ピンホールカメラモデルについて、図3、図4を参照して説明する。ピンホールカメラモデルにおいて、特徴点の画像フレーム中の位置は下式(数式1)によって計算することができる。
【0036】
【数1】

・・・(数式1)
【0037】
上記式の意味について、図3、図4を参照して説明する。上記式は、カメラの撮影画像130に含まれるオブジェクト131の点(m)のカメラ撮影画像平面の画素位置132、すなわち、カメラ座標系によって表現されている位置と、世界座標系におけるオブジェクト120の3次元位置(M)121との対応関係を示す式である。
【0038】
カメラ撮影画像平面の画素位置132はカメラ座標系によって表現されている。カメラ座標系は、カメラの焦点を原点Cとして、像平面がXc,Ycの二次元平面、奥行きをZcとした座標系であり、カメラの動きによって原点Cは移動する。
【0039】
一方、オブジェクト120の3次元位置(M)121は、カメラの動きによって移動しない原点Oを有するXYZ三軸からなる世界座標系によって示される。この異なる座標系でのオブジェクトの位置の対応関係を示す式が上述のピンホールカメラモデルとして定義される。
【0040】
この式に含まれる値は、図4に示すように、
λ:正規化パラメータ
A:カメラ内部パラメータ、
Cw:カメラ位置、
Rw:カメラ回転行列、
を意味している。
【0041】
さらに、
【数2】

は、同次座標系で表現されたカメラの像平面上の位置である。
λは、正規化パラメータであり、
【数3】

の第3項を満足させるための値である。
【0042】
なお、カメラ内部パラメータAには、以下の値が含まれる。
f:焦点距離
θ:画像軸の直交性(理想値は90°)
:縦軸のスケール(3次元位置のスケールから二次元画像のスケールへの変換)
:横軸のスケール(3次元位置のスケールから二次元画像のスケールへの変換)
(u,v):画像中心位置
【0043】
このように、世界座標系にある特徴点は位置[M]で表現される。また、カメラは位置[Cw]と姿勢(回転行列)Rwで表現される。カメラの焦点位置・画像中心等はカメラ内部パラメータ[A]で表現される。これらのパラメータから、「世界座標系にある特徴点」から「カメラの像平面上」に射影されるそれぞれの位置の関係式が、上述した式(数式1)によって表現することができる。
【0044】
また、カメラの位置・姿勢を回転行列Rwと並進ベクトルtwで表現した場合は、以下に示す式(数式2)のようになる。但し、並進ベクトルtwとカメラ位置との関係は式(数式3)で表される。
【0045】
【数4】

・・・(数式2)
【0046】
【数5】

・・・(数式3)
【0047】
図1のシステムにおける単眼カメラ101は、このようなピンホールカメラモデルにフィットするカメラである。カメラは移動しながら画像を撮影し、順次、取得する画像から特徴点トラッキング情報(軌跡)を得て、カルマンフィルタや拡張カルマンフィルタを適用して状態データの更新を実行し、カメラの位置同定(ローカリゼーション)と周囲の地図(環境地図)の作成(mapping)を行うものである。
【0048】
カルマンフィルタ、および拡張カルマンフィルタについて説明する。カルマンフィルタは、カメラによって撮影される画像を構成するフレームを順次入力して処理を行う。処理対象フレームの1フレーム前の状態(推定値)と現在フレームから得られる観測値(特徴点トラッキング結果)から現在の状態(推定値)を与える逐次推定型(予測)フィルタである。なお、「状態」は、図2に示す(a)平均ベクトルと、(b)分散共分散行列で構成される多次元正規分布モデルで表現される状態データに対応する。
【0049】
以下にカルマンフィルタの数式を示す。
【数6】

但し、
Ftは予測モデル(行列)
Htは観測モデル(行列)
を表し、平均0、分散共分散Qtの多次元正規分布モデルに従う予測モデル誤差、平均0、分散共分散Rtの多次元正規分布モデルに従う観測モデル誤差を表す。
また、[^]は予測値を意味する。なお、各モデルの設定例は、例えば[http://en.wikipedia.org/wiki/Kalman_filter#Examples]を参照のこと。
【0050】
カルマンフィルタは、FtとHtが行列であるため、線形モデルしか扱えない。この問題を解決するために、拡張カルマンフィルタ(EKF:Extended Kalman Filter)がある。拡張カルマンフィルタ(EKF)は非線形の予測モデル・観測モデルを扱うことができる。拡張カルマンフィルタ(EKF)の式は以下の通りである。
【0051】
【数7】

但し、
Fは予測モデル関数、
Hは観測モデル関数、
を表し、
(▽F(x))は関数Fのヤコビ行列、
(▽H(x))は関数Hのヤコビ行列、
Qtは予測モデル誤差(平均0,分散共分散Qtの多次元正規分布モデルに従う)、
Rtは観測モデル誤差(平均0,分散共分散Rtの多次元正規分布モデルに従う)、
を表す。
【0052】
図1に示すカメラ101は移動しながら画像を撮影し、順次、取得する画像から特徴点トラッキング情報(軌跡)を得て、上述したカルマンフィルタや拡張カルマンフィルタを適用して状態データの更新を実行し、カメラの位置同定(ローカリゼーション)と周囲の地図(環境地図)の作成(mapping)を行う。
【0053】
先に図2を参照して説明したように、図1に示すカメラ101の移動量と、カメラ101によって撮影された画像に含まれる特徴点103の位置の推定は、図2に示す多次元正規分布で表現された「状態データ」を利用して行われる。
【0054】
図2を参照して説明したように状態データは、画像を撮影するカメラと特徴点の状態を示す状態値の多次元正規分布データによって構成される。すなわち、
カメラの位置、姿勢、速度、角速度、
各特徴点の位置情報(P1〜PN)、
これらの状態値を示す平均ベクトルと分散共分散行列を含む多次元正規分布データによって構成される。図5(a)に示すように、分散共分散行列は、
カメラの位置、姿勢、速度、角速度、
各特徴点の位置情報、
これらの固有状態値の[分散]と、上記各状態値の異なる状態値の組み合わせの相関情報に対応する[共分散]を含む行列である。
【0055】
図2、図5に示す状態データにおいて特徴点#1〜#Nの位置はP1〜PNとして示されている。分散共分散行列には、特徴点#1〜#Nの位置:P1〜PNに関する共分散データが要素として含まれる。
【0056】
カメラは移動しながら画像を連続的に撮影しており、撮影画像に含まれる特徴点は順次入れ替わる。すなわち、すべてのフレームに特徴点#1〜#Nが含まれるとは限らない。すなわち、ある画像フレームF1には含まれるが、次の画像フレームF2には含まれない特徴点や、画像フレームF2には含まれるが、前の画像フレームF1には含まれない特徴点が存在する。
【0057】
すなわち、図5(b)に示すように、カメラ151は移動ライン152に沿って移動して画像を連続撮影しており、各画像に含まれる特徴点は、順次入れ替わることになる。例えば時間tnにおける撮影画像は撮影画像範囲153の画像であるとすると、その撮影画像に含まれる特徴点は、特徴点A1〜A3である。特徴点Bや特徴点Cは、その撮影画像には含まれず、その前の撮影画像やその後の撮影画像に含まれる特徴点となる。
【0058】
従来型のEKFベースのSLAMにおいては、処理時点で得られている特徴点の情報を全て含む「状態データ」を適用した処理が行われる。例えば、フレームf01〜fnnの画像を利用したSLAM処理を実行する場合、フレームf01〜fnnにおいてカ検出される特徴点をすべて含む状態データを設定して、更新処理を行う。
【0059】
従って、カルマンフィルタやEKF(拡張カルマンフィルタ)を適用した更新処理を行う状態データには登録されているが、観測値として入力される画像フレームに写っていない特徴点も存在し、この場合、状態データに含まれる観測値としての入力画像フレームにない特徴点情報の更新処理も行われる。状態データに含まれる共分散データである「カメラに写っている特徴点」と「カメラに写っていない特徴点」との相関情報に基づいてカルマンフィルタやEKFを適用した更新処理が実行される。
【0060】
結果として、SLAM処理では、多数の特徴点情報を含む更新処理が必要になり、現在の画像から得られていない特徴点の位置情報を用いた状態データの更新処理が行われることになる。このような処理は、計算コストの増大を発生させ処理の非効率化の要因になる。
【0061】
1つ具体例をあげて説明する。現在の撮影画像に含まれる特徴点、すなわち、「見えている特徴点の位置」が正しく(正しい=推定値と実際値があっている)、現在の撮影画像に含まれない特徴点、すなわち「カメラの位置姿勢・見えていない特徴点の位置」が正しくない場合を考える。「状態データ」に相関情報がない(=分散共分散行列の共分散成分が全て0)モデルの場合はカメラ位置のみ更新される。「状態データ」に相関情報がある(=分散共分散行列の共分散成分が全て0ではない)モデルの場合はカメラ位置姿勢の更新の度合と相関情報に応じて見えていない特徴点の位置も更新される。
【0062】
ただし、分散共分散行列は全ての特徴点とカメラの相関情報を保持しているため、特徴点の数が増えると分散共分散行列のサイズも大きくなる。特徴点の数nに対して、計算量はO(9n)のオーダーで増加する。リアルタイム処理する場合は、特に大きな問題である。このように、状態データに特徴点情報を多く含む場合、処理時間および処理負荷が大きくなるという問題がある。
【0063】
[2.サブマップについて]
そこで、本発明では、図6に示すように3次元位置解析対象となる全体領域を示すマップ200を複数のサブマップ211,221に切り分けて処理を行う。各々のサブマップには、
(a)「サブマップの識別子としての番号(ID)」、
(b)「SLAMの計算で用いる「状態データ」」、
これらのデータが対応付けられる。
【0064】
本実施例では、図6下段に示すサブマップM1,211,サブマップM2,221のようにM1,M2,・・・を各サブマップの識別子(ID)としている。サブマップ対応の状態データ212,222は、先に図2を参照して説明した状態データと同様のデータであり、画像を撮影するカメラと特徴点の状態を示す状態値の多次元正規分布データによって構成される。すなわち、
カメラの位置、姿勢、速度、角速度、
各特徴点の位置情報(P1〜PN)、
これらの状態値を示す平均ベクトルと分散共分散行列を含む多次元正規分布データによって構成される。分散共分散行列は、カメラの位置、姿勢、速度、角速度、各特徴点の位置情報、これらの固有状態値の[分散(σaa)]と、上記各状態値の異なる状態値の組み合わせの相関情報に対応する[共分散(σab)]を含む行列である。
【0065】
なお、各サブマップ対応の状態データに含まれる特徴点情報は、各々のサブマップ内に含まれる特徴点の情報のみである。すなわち、図6に示すサブマップM1,211対応の状態データ212は、
カメラの位置、姿勢、速度、角速度、
サブマップM1,211内の特徴点a,b,c,d,eの位置情報、
これらの状態値を示す平均ベクトルと分散共分散行列を含む多次元正規分布データによって構成される。
【0066】
一方サブマップM2,221対応の状態データ222は、
カメラの位置、姿勢、速度、角速度、
サブマップM2,221内の特徴点d,e,f,g,hの位置情報、
これらの状態値を示す平均ベクトルと分散共分散行列を含む多次元正規分布データによって構成される。
【0067】
各サブマップ対応の状態データには、自己のサブマップのみに含まれる特徴点と、異なるサブマップにのみに含まれる特徴点との相互の相関情報、すなわち共分散データなど、自己のサブマップに含まれない特徴点に関する平均ベクトル、分散共分散データは含まれない。
【0068】
例えばサブマップM1,211の状態データ212には、サブマップM1,211にのみ含まれる特徴点(a,b,c)と、サブマップM2,221のみに含まれる特徴点(f,g,h)との相関情報、すなわち共分散データは含まれない。サブマップM2,221の状態データ222にも、サブマップM2,221にのみ含まれる特徴点(f,g,h)と、サブマップM1,211のみに含まれる特徴点(a,b,c)との相関情報、すなわち共分散データは含まれない。
【0069】
なお、サブマップ211,221ごとに対応して設定された「状態データ」212,222は全て世界座標系で表現される。SLAM処理においては、特定のサブマップに対応する「状態データ」のみを対象とした処理、例えばカルマンフィルタや拡張カルマンフィルタを適用した更新処理を行うことで計算量を低減する。
【0070】
なお、サブマップは、SLAMの実行単位として設定する領域である。図1に示すカメラ101によつて撮影される画像フレームに対応するものではない。カメラ101によって撮影される画像フレームとサブマップとの対応は例えば図7に示す対応となる。
【0071】
カメラ101はポイントAからポイントBに移動しながら連続的な撮影処理を行っており、その間、例えば、フレームf001〜f100、計100フレームを撮影する。これらの多数の画像フレームから様々な特徴点が抽出され、特徴点のトラッキング(軌跡)データが取得される。
【0072】
サブマップM1,211は、例えば画像フレームf001〜f060の60フレーム分の画像を利用してSLAM処理を行う領域である。また、サブマップM2,221は、例えば画像フレームf041〜f100の60フレーム分の画像を利用してSLAM処理を行う領域である。このように、サブマップM1,M2・・・は、SLAMの実行単位として設定する領域である。なお、上述したフレーム数は一例であり、各サブマップに対応するフレーム数は任意の数でよい。
【0073】
サブマップ領域の設定は、例えば、1つのサブマップに含まれる特徴点の数が、予め設定した上限数以下とするという条件を用いて行われる。なお、図6、図7には2つのサブマップのみを示しているが、サブマップ数は任意の数に設定できる。図8には、4つのサブマップM1〜M4の設定例を示している。図6〜図8に示すように、サブマップは別のサブマップと重なるように設定する。このとき重複した領域にある特徴点は各サブマップの状態変数で表現する。要するに、重複した領域にある特徴点は位置情報を複数保持する。複数ある特徴点位置は、後で位置情報が収束するように最適化処理する(図10のフローチャートの「全体最適化」に該当)。詳しくは後述する。
【0074】
[3.情報処理装置の構成例およびサブマップを適用した処理例について]
次に、本発明の情報処理装置の構成例およびサブマップを適用した処理例について説明する。図9は、本発明の情報処理装置の一実施例構成を示す図である。本発明の情報処理装置300は、カメラ301によって撮影された画像データに基づいて、特徴点トラッキング情報(軌跡)を得て、カルマンフィルタや拡張カルマンフィルタを適用して状態データの更新を実行し、カメラの位置同定(ローカリゼーション)と周囲の地図(環境地図)の作成(mapping)を行うものである。なお、カメラ301はピンホールカメラモデルにフィットするものである。
【0075】
本発明の一実施形態にかかる情報処理装置300は図9に示すように、周囲環境を撮影するカメラ301の撮影した撮影画像をカメラ301から直接、あるいはカメラ301が撮影し、撮影画像記憶部302(DB0:データベース0)に格納された撮影画像を入力して処理を行う。
【0076】
サブマップ設定部303は、3次元マップの生成対象となる処理対象領域(全体マップ)を任意の複数領域に区分したサブマップ領域を設定する。なお、3次元マップの生成対象となる領域は図9に示すカメラ301における撮影画像によってカバーされる領域となる。3次元マップの生成処理は、カメラ301の撮影画像をリアルタイムで順次入力して実行してもよいし、撮影済み画像を記憶した記憶部302から取得して実行してもよい。
【0077】
撮影済み画像を記憶した記憶部から取得する場合は、3次元マップの生成対象となる処理対象領域(全体マップ)が予め確認できるので、確認された全体領域を複数のサブマップ領域に分割することができる。分割処理は任意の基準で行ってよい。例えば全体領域を2分割して初期的な2つのサブマップを設定する。あるいは4分割して4つのサブマップを設定するといった処理が可能である。あるいは一定の撮影画像フレーム数単位、撮影時間単位でサブマップを設定してもよい。たとえば先に図7を参照して説明したように、予め設定したフレーム数、例えば60フレームの画像フレームによってカバーされる領域を1つのサブマップとする処理や、予め設定した所定のカメラ移動距離単位で1つのサブマップを設定するといった処理を行う構成としてもよい。
【0078】
カメラ301の撮影画像をリアルタイムで順次入力して処理を行う場合も、予め設定したフレーム数の画像フレームによってカバーされる領域を1つのサブマップとする処理や、予め設定した所定のカメラ移動距離単位で1つのサブマップを設定するといった処理を行う構成とすることができる。
【0079】
サブマップ設定部303は、このように、カメラ301または記憶部302から撮影画像を入力してサブマップの設定を行う。なお、初期的には1つのマップのみを設定し、そのマップを処理の進行に従って複数のサブマップに分割する処理を行う構成としてもよい。例えば処理対象とするマップまたはサブマップ内の特徴点数が予め既定した上限数以上になった場合に2つに分割するといった処理を行うことが可能である。あるいは処理対象のマップまたはサブマップの空間的な領域が既定サイズより大きくなった場合に、分割するといった処理が可能である。これらのサブマップ設定処理、分割処理については、後段で詳細に説明する。
【0080】
情報処理装置300は、さらに、カメラの位置姿勢を推定するカメラ位置姿勢検出部304、カメラ位置姿勢検出部304において検出されたカメラ位置姿勢情報を記憶するカメラ位置姿勢記憶部306(DB1:データベース1)を有する。
また、撮影画像に含まれる特徴点の追跡処理を実行する特徴点追跡部305、特徴点追跡部305の検出した特徴点の軌跡情報を記憶する特徴点軌跡(トラッキング)情報記憶部307(DB2:データベース2)を有する。
【0081】
さらに、カメラ位置姿勢記憶部304に格納されたカメラ位置姿勢情報と、特徴点軌跡情報記憶部305に格納された特徴点軌跡情報を入力して、これらの入力情報に基づいてカメラの位置姿勢および特徴点の3次元位置を算出する3次元情報生成部308、さらに、自己(カメラ)位置と、特徴点3次元位置情報を含むサブマップ対応状態データ(存在確率分布データ)を格納した状態データ記憶部309を有する。
【0082】
カメラ位置姿勢検出部304、特徴点追跡部305、および3次元情報生成部308は、サブマップ設定部303において設定されたサブマップ単位で処理を行なうことになる。
【0083】
カメラ301は、例えば移動するロボットに装着され、あるいはユーザ(人)によって適宜、移動される。すなわちカメラ301の位置や姿勢は固定されたものではなく、変更された位置姿勢からの撮影画像、すなわち異なる視点から撮影された画像フレーム(例えば動画像)を順次入力する。なお、カメラ301は前述したようにピンホールカメラモデルに合うものを用いている。
【0084】
カメラ位置姿勢検出部304は、カメラ301から入力する映像内の特徴点を利用して、特徴点の位置とカメラ位置を毎フレーム修正し、カメラ位置姿勢検出部304で決めた世界座標系で表されたカメラの推定位置および姿勢情報としてのカメラの位置(Cw)およびカメラの回転行列(Rw)を生成してカメラ位置姿勢記憶部306に格納する。
【0085】
なお、この処理は、例えば論文[Andrew J.Davison,"Real−time simultaneous localisation and mapping with a single camera",Proceedings of the 9th International Conference on Computer Vision,Ninth,(2003)]に記載された方法を用いることができる。
【0086】
なお、カメラ位置姿勢検出部304では、カメラの位置(Cw)およびカメラの回転行列(Rw)の各々について、正規分布に従った存在確率分布を持つカメラ位置姿勢情報を生成してカメラ位置姿勢記憶部306に格納する。
【0087】
カメラ301の撮影画像は特徴点追跡部305にも入力される。特徴点追跡部305は、カメラ301によって取得されるフレーム画像内から選択される局所領域(特徴点)のフレーム間の移動量を求める。例えば、特徴点追跡部305は前フレームの局所領域画像とのウインドウマッチングを実行して特徴点のフレーム間の移動量を求める。
【0088】
特徴点追跡部305で得られる特徴点追跡結果は、特徴点トラッキングデータとして特徴点軌跡(トラッキング)情報記憶部307に記録される。
【0089】
図9のカメラ位置姿勢記憶部306と特徴点軌跡(トラッキング)情報記憶部307は、それぞれカメラ位置姿勢検出部304の検出したカメラ位置姿勢情報と、特徴点追跡部305の検出した特徴点軌跡情報について、全フレームの出力結果を保持している。なお、それぞれのデータのフレーム時間の同期はとれているものとする。
【0090】
3次元情報生成部308は、カメラ位置姿勢記憶部306と特徴点軌跡(トラッキング)情報記憶部307に格納されたカメラ位置姿勢情報および特徴点軌跡(トラッキング)情報を入力し、前述のサブマップ対応の状態データを適用したSLAM処理を実行して、カメラの位置姿勢の推定(ローカリゼーション)と特徴点の3次元位置の推定(マッピング)を実行する。この処理は、サブマップ対応の状態データの更新処理、すなわち先に説明したカルマンフィルタや拡張カルマンフィルタを適用した更新処理が含まれる。サブマップ対応の状態データは、状態データ記憶部309(DB3:データベース3)に格納され、随時更新される。
【0091】
なお、図9に示す構成において、各処理ブロックは、固有のハードウェアとして設定してもよいし、例えばPCなどの情報処理装置において所定のプログラムを実行させて各処理ブロックに対応する処理を実行させる構成としてもよい。例えば後述する図10に示す処理シーケンスを実行させるプログラムをメモリに格納し、プログラム実行部としてのCPUを備えた制御部においてプログラムを実行させることで処理を行うことが可能である。
【0092】
本発明の情報処理装置の実行する処理シーケンスについて、図10に示すフローチャートを参照して説明する。
まず、処理の全体概要について説明し、その後、各ステップの処理の詳細について説明する。なお、図10に示すフローチャートのステップS101〜S107は、1つの画像フレームの入力ごとに実行する処理である。ステップS108における全体最適化処理の実行単位としてのフレーム数を[L]フレーム、例えばL=60フレームとして、処理フレームがLに至るまでは、ステップS101〜S107の処理を入力フレームごとに繰り返し実行する。
【0093】
ステップS107において、フレーム数がLとなった場合、ステップS108において全体最適化処理を実行して、ステップS109においてカウンタを0にリセットして、ステップS101に戻り、その後の入力フレームに対する処理を実行する。
【0094】
なお、図10に示す記憶部(DB)320は、図9に示す4つの記憶部DB0〜DB3に対応する。すなわち、
撮影画像記憶部302(DB0:データベース0)
カメラ位置姿勢記憶部306(DB1:データベース1)
特徴点軌跡(トラッキング)情報記憶部307(DB2:データベース2)
状態データ記憶部309(DB3:データベース3)
これら4つの記憶部を示している。
【0095】
図10に示すフローチャートの処理の全体概要について説明する。
ステップS101:注目サブマップを選択する。
ステップS102:注目サブマップに対する「状態データ」を用意する。
ステップS103:初期化処理(最初の処理フレームのみ)。
ステップS104:注目サブマップの状態データを適用した状態データ更新処理、例えばEKF SLAMによる状態データ更新処理を実行する。なお、本実施例ではEKF(拡張カルマンフィルタ)を適用した処理例について説明するが、カルマンフィルタを適用した処理として実行することも可能である。
ステップS105:必要に応じて注目サブマップの切り分け処理を行う。予め設定した条件、例えばサブマップに含まれる特徴点が既定上限数を越えた場合などに注目サブマップを2つのサブマップに分割する。
ステップS106:処理回数(処理フレーム数)のカウント値の更新処理(+1)を行う。
ステップS107:処理回数(処理フレーム数)が既定処理回数Lを超えたか否かを判定する。
ステップS108:全体最適化処理を行う。
ステップS109:カウント値を0にリセットする。
このような処理を繰り返し実行する。
【0096】
なお、ステップS103の処理は、最初の処理フレームのみに対する処理であり、最初の処理フレームではSLAM処理に必要となる初期化処理を行う。なお、初期化処理において生成する最初のサブマップは、「サブマップM1」とする。
また、予め設定したフレーム数、Lフレームに1回の割合で全体最適化(=「バンドル調整処理」)を行う。これは、サブマップ同士の位置あわせを行い、重複した領域にある特徴点の位置が収束するようにする処理である。
【0097】
以下、図10に示すフローチャートの各ステップの処理の詳細について説明する。
(ステップS101)注目サブマップの選択処理について
まず、図10に示すフローチャートのステップS101における注目サブマップ選択処理の詳細シーケンスについて、図11に示すフローチャートを参照して説明する。
【0098】
まずステップS151において、3次元マップの生成対象となる処理対象領域の少なくとも一部を含むサブマップを設定する。なお、初期的には、1つのサブマップのみを設定してもよいし、処理対象領域を複数領域に区分して複数のサブマップ領域を設定してもよい。
【0099】
なお、3次元マップの生成対象となる領域は、図9に示すカメラ301における撮影画像によってカバーされる領域となる。3次元マップの生成処理は、カメラ301の撮影画像をリアルタイムで順次入力して実行してもよいし、撮影済み画像を記憶した記憶部から取得して実行してもよい。
【0100】
サブマップの設定態様は様々な態様が可能である。例えば全体マップが把握できている場合は、初期的に全体マップを1つのサブマップとしてもよいし、予め2以上の任意数のサブマップを設定してもよい。複数のサブマップを設定する場合は、カメラの移動距離や撮影フレーム数、撮影時間などの様々な基準に従って全体マップを分割することができる。
【0101】
カメラ301の撮影画像をリアルタイムで順次入力して処理を行う場合は、順次入力する画像フレームによって取得される領域によって1つのサブマップが設定されることになる。この場合、初期的には1つのサブマップのみとなり、画像フレームの入力に応じてサブマップ領域が次第に大きくなる。大きくなったサブマップは、ステップS105のマップ切り分け処理によって、2つのサブマップに分割されることになる。この処理については後段で詳細に説明する。
【0102】
図11のフローのステップS152では、ステップS151で設定したサブマップ毎にカメラに写っている特徴点をスキャンする。カメラ位置姿勢は、初期設定情報、または直前フレームでのカルマンフィルタはまたはEKFを用いたSLAMによる推定結果を適用し、ピンホールカメラモデル(図3、図4参照)に従ってスキャンする。
【0103】
次に、ステップS153において、スキャンした特徴点がどのサブマップに属しているかチェックし、特徴点が一番多く属しているサブマップを注目サブマップとする。もし特徴点が一番多く属しているサブマップが複数ある場合は、番号(ID)が大きいサブマップを選択する。以上で、注目サブマップの選択が完了する。
【0104】
(ステップS102)注目サブマップに対する「状態データ」を用意する処理について、
次に、図10に示すフローチャートのステップS102における注目サブマップに対する「状態データ」を用意する処理について図12に示すフローチャートを参照して説明する。
【0105】
まず、ステップS201において、現在の注目サブマップ識別子(ID)を保存する。これは、例えば、現在の処理フレームの1フレーム前の処理フレームに対応する注目サブマップ識別子(ID(番号))を把握するために行う。
【0106】
ステップS202では、1フレーム前の注目サブマップと現フレームの注目サブマップが異なるか否かを判定し、異なる場合はステップS203において、1フレーム前の注目サブマップの「状態データ」のカメラ情報を現フレームの注目サブマップの「状態データ」のカメラ情報に上書きする。
【0107】
なお、「状態データ」は、先に図2を参照して説明したように、画像を撮影するカメラと特徴点の状態を示す状態値の多次元正規分布データによって構成される。すなわち、
カメラの位置、姿勢、速度、角速度、
各特徴点の位置情報(P1〜PN)、
これらの状態値を示す平均ベクトルと分散共分散行列を含む多次元正規分布データによって構成される。
これらの状態データは、サブマップ対応の状態データとして設定され、特徴点に関する情報は各サブマップに含まれる特徴点情報のみが含まれている。
【0108】
ステップS203では、サブマップ対応の状態データに含まれるカメラ情報、すなわち、サブマップ対応の状態データに含まれるカメラの位置、姿勢、速度、角速度に関する情報については、新たなサブマップに対する処理を行う場合、1フレーム前の異なるサブマップ対応の状態データを利用する。
【0109】
図13にサブマップ対応の状態データの例を示す。この状態データにおけるカメラ情報は、(a)平均ベクトルのデータ部分321と、(b)分散共分散行列のデータ部分331の各データ部分である。これらのデータ部分については、1フレーム前の異なるサブマップ対応の状態データをそのままコピーして利用する。
【0110】
さらに、ステップS203では、状態データ中の分散共分散行列に含まれるカメラと特徴点の共分散の値を全て0にする。これは、前のサブマップで求めたカメラ位置は、前のサブマップ内の特徴点との関係から求めたものであり、現在のサブマップの特徴点とは関係ないため、データをリセットするものである。
【0111】
図13に示す「状態データ」の(b)分散共分散行列のデータ部分332,333の共分散の値を全て0にする。
以上でEKF SLAM用の「状態データ」の前処理が完了する。
【0112】
(ステップS104)注目サブマップの状態データを適用した状態データ更新処理について、
ステップS104の注目サブマップの状態データを適用した状態データ更新処理は、例えばカルマンフィルタ、あるいは拡張カルマンフィルタを適用した状態データの更新処理として行われる。注目サブマップ対応の状態データを、入力フレームから得られる情報、すなわち、カメラの位置、姿勢、速度、角速度、各特徴点の位置情報を利用して、更新する処理を行う。
【0113】
拡張カルマンフィルタを適用した処理、すなわちEKFベースのSLAMについては、例えば、["Real−Time Simultaneous Localisation and Mapping with a Single Camera",Andrew J. Davison, ICCV 2003]、あるいは、本出願人が先に出願した[特開2008−304269号公報]に記載されており、この記載方法を適用することが可能である。ただし、本願において適用する状態データ、すなわち更新処理対象とするのはサブマップ対応の状態データである。サブマップ対応の状態データには、サブマップに含まれる特徴点以外の特徴点についての位置情報、相関情報は含まれず、データ量が少ないため、極めて高速な計算処理が可能となる。
【0114】
なお、サブマップ対応の状態データの更新処理に適用するために入力した画像フレームに、状態データに登録されていない新たな特徴点が検出された場合は、その新規特徴点を状態データ中の変数として追加する処理を行う。
【0115】
(ステップS105)注目サブマップの切り分け処理について
次に、図10に示すフローチャートのステップS105において実行する注目サブマップの切り分け処理について説明する。
【0116】
注目サブマップの切り分け処理は必要に応じて実行される。現在処理対象としている注目サブマップは、予め設定した条件に応じて分割する。
以下、具体例として以下の2つの分割処理例について説明する。
(a)注目サブマップに含まれる特徴点が、予め設定した既定上限数以上となった場合に分割する処理例
(b)3次元マップを2次元マップに射影近似し、2次元マップ上で空間的に等間隔に分割する処理例
【0117】
まず、上記(a)の処理例、すなわち、
(a)注目サブマップに含まれる特徴点が、予め設定した既定上限数以上となった場合に分割する処理例について説明する。
【0118】
この分割処理の全体シーケンスを図14に示すフローチャートを参照して説明する。
最初に、ステップS301において、注目サブマップの特徴点の総数をカウントする。
次に、ステップS302において、カウントした特徴点の総数が、予め設定した既定上限数[N]以上であるか否かを判定する。
【0119】
カウントした特徴点の総数が、予め設定した規定上限数[N]以上である場合は、ステップS303に進み、現在処理対象としている注目サブマップの分割処理を行う。N点未満であれば分割処理をしないで終了する。
【0120】
なお、予め設定する既定上限数[N]は、カメラなどの状況に応じて設定する。本例では、既定上限数:N=125とする。
【0121】
図14のフローにおけるステップS303の「注目サブマップの分割処理」の詳細シーケンスについて、図15に示すフローチャートを参照して説明する。サブマップ分割処理は、図9に示す情報処理装置300のサブマップ設定部303において実行される。なお、分割処理対象とするサブマップは、図10に示すフローの最初のステップS101において選択した注目サブマップである。
【0122】
まず、ステップS451において、処理対象としているサブマップ、すなわち注目サブマップが、他のサブマップとの重なり領域の有無を判定する。重なり領域を持たない場合は、ステップS452に進み、重なり領域を持つ場合は、ステップS453に進む。
【0123】
注目サブマップが、他のサブマップとの重なり領域を持たない場合は、ステップS452に進み、注目サブマップの特徴点群の重心を求め,重心から最も遠い特徴点を点Gとする。
また、注目サブマップが、他のサブマップとの重なり領域を持つ場合は、ステップS453に進み、注目サブマップの特徴点で、他のサブマップに属する点を選び、選択した点群の重心を点Gとする。
これらの処理を実行する。この処理について図16を参照して説明する。
【0124】
図16には、
(a)サブマップ重複領域がない場合のサブマップ分割処理(S452の処理)
(b)サブマップ重複領域がある場合のサブマップ分割処理(S453の処理)
これらの各処理の具体例を示している。分割処理対象としている注目サブマップはサブマップM4である。
【0125】
図16(a)に示すように、サブマップ重複領域がない場合のサブマップ分割処理(S452の処理)は、注目サブマップM4の特徴点群の重心P1を求め,重心P1から最も遠い特徴点を点G1とする処理である。
一方、サブマップ重複領域がある場合のサブマップ分割処理(S453の処理)は図16(b)に示すように、注目サブマップM4の特徴点で、他の重複サブマップM3に属する特徴点を選び、選択した特徴点群の重心を点G2とする処理である。
【0126】
これらの処理の後、ステップS454に進む。
ステップS454では、注目サブマップに属する特徴点各々の点Gからの距離を算出し、距離の遠い順に並べて、以下の各サブマップ対応の特徴点設定処理を行う。
1番〜M番:新規サブマップの特徴点
M+1番〜2M番:注目サブマップと新規サブマップの重複領域の特徴点
上記の処理によって、新規サブマップを設定する。
なお、Mは、注目サブマッフ内の特徴点数=Nとしたとき、例えば、
M=N×0.2
の設定とする。
N=125の場合、M=25であり、新規追加サブマップにはサブマップ分割時点で、50の特徴点が設定される。50の特徴点中、25の特徴点が新規追加サブマップのみに属する特徴点であり、残り25の特徴点が新規追加サブマップと注目サブマップの重複領域に属する特徴点となる。
【0127】
この処理の具体例は、図16に示す通りである。(a)サブマップ重複領域がない場合のサブマップ分割処理では、図16(a)に示すように、新規追加サブマップM5が設定され、(b)サブマップ重複領域がある場合のサブマップ分割処理では、図16(b)に示すように、新規追加サブマップM5が設定される。
【0128】
次に、ステップS455において、分割前の注目サブマップの「状態データ」を分割後の新規追加サブマップの「状態データ」とするコピー処理を行う。
最後に、ステップS456において、注目サブマップと新規追加サブマップの各「状態データ」から各サブマップに属さない特徴点」の情報を削除して、各サブマップの状態データとする処理を行う。
【0129】
図17以下を参照してこれらの処理の具体例について説明する。図17は、分割処理対象となる注目サブマップM4に対応する状態データのコピー処理について説明する図である。
【0130】
図17(a)は、分割処理前のサブマップM4とサブマップM4対応状態データ351を示している。状態データは、先に図2を参照して説明したように、
カメラの位置、姿勢、速度、角速度、
各特徴点の位置情報(P1〜PN)、
これらの状態値を示す平均ベクトルと分散共分散行列を含む多次元正規分布データによって構成される。
【0131】
ステップS455の処理は、図17(a)に示すサブマップM4対応状態データ351を図17(b)に示すように、サブマップM4対応状態データ352、サブマップM5対応状態データ353として設定する処理である。これらは仮のサブマップ対応状態データである。
【0132】
次に、これらのサブマップM4対応状態データ352と、サブマップM5対応状態データ353から、それぞれのサブマップに属さない特徴点に関する情報を削除する処理を行う。
【0133】
図18は、状態データ中の平均ベクトルからの情報削除処理、図19は、分散共分散行列からの情報削除処理の具体例を示している。このように、これらのサブマップM4対応状態データ352と、サブマップM5対応状態データ353から、それぞれのサブマップに属さない特徴点に関する情報を削除する処理を行って、最終的な各サブマップの状態データを更新および設定する処理を行なう。
【0134】
この処理によって、図14に示すフローチャートにおけるステップS303の注目サブマップの分割処理が終了する。なお、図14のフローに示すサブマップ分割処理は、前述のように、図10に示すフローチャートのステップS105において実行する注目サブマップの切り分け処理の一態様である。
【0135】
前述したように図10に示すフローチャートのステップS105において実行する注目サブマップの切り分け処理は、必要に応じて実行される処理であり、例えば以下のいずれかの処理態様で行われる。
(a)注目サブマップに含まれる特徴点が、予め設定した既定上限数以上となった場合に分割する処理
(b)3次元マップを2次元マップに射影近似し、2次元マップ上で空間的に等間隔に分割する処理
図14〜図19を参照して説明した処理は、上記の(a)の処理に対応する。
【0136】
次に、図20以下を参照して、上記の(b)のサブマップ分割処理例について説明する。すなわち、
(b)3次元マップを2次元マップに射影近似し、2次元マップ上で空間的に等間隔に分割する処理
である。
【0137】
このサブマップ分割処理の全体シーケンスを説明するフローチャートを図20に示す。
図20に示すフローチャートを参照して、3次元マップを2次元マップに射影近似し、2次元マップ上で空間的に等間隔に分割し手サブマップ分割を行う処理について説明する。
【0138】
なお、図20に示すフローの処理の前処理として、ステップS500の処理として、処理対象としている3次元空間に以下のパラメータを設定しておく。
*ベクトル[k]
*ベクトル[r
*ベクトル[r
*分割中心[O]
*距離[d],[e]
【0139】
図21を参照してこれらのパラメータについて説明する。
図21は3次元マップを生成する対象となる空間(部屋)を示している。これらの空間に設定される多数の特徴点に対する3次元位置を算出する。
ベクトル[k]は2次元マップへ射影する方向を表しており、状況に応じて設定する。例えば、図21に示すような部屋に関するマップを扱うとした場合、図21に示すように、床面に垂直なベクトルをベクトル[k]と設定するのが適していると考える。
【0140】
ベクトル[r]と、ベクトル[r]は、図21に示すように、3次元空間上の2次元マップの座標軸ベクトルを表す。ベクトル[r]と、ベクトル[r]は、以下の条件を満足するように設定する。
(条件1)ベクトル[k]と、射影変換によって生成する2次元マップの座標軸r,r同士は直交する。
(条件2)2次元マップの座標軸[r],[r]同士は直交する。
これらの条件を満たすように状況にあわせて設定する。
なお、これらのベクトル,[k],[r],[r]は3×1の行列として表現される。
【0141】
分割中心[O]は、図22に示すように、射影して生成した2次元マップにおける分割処理の基準点である。
距離[d]は、図22に示すように、射影して生成した2次元マップにおいて設定するサブマップ間隔である。
距離[e]は、図22に示すように、生成した2次元マップにおいて設定するサブマップの重複領域の重複幅である。
【0142】
図20のステップS501では、3次元空間のマップに属する全特徴点を2次元マップに射影する。射影変換は、図20に示すように、以下の式(数式A)を適用することができる。
【0143】
【数8】

・・・・・(数式A)
【0144】
但し、X,Y,Zは特徴点の3次元空間上の位置、u,vは特徴点の2次元マップ上の位置、λは任意の数を表す。
【0145】
次に、ステップS502において2次元マップに射影された特徴点マップを分割してサブマップを生成する。マップ分割処理は、図22に示すように、分割中心[O]を中心に、距離[d],[e]を利用して等間隔に分割する。
【0146】
図22には、太線で示す6つのサブマップM1〜M6を示している。分割中心[O]を分割基準点として、射影して生成した2次元マップにおいて、サブマップ間隔を[d]、サブマップ重複領域の重複幅を[e]として6つのサブマップが設定される。この処理が、3次元マップを2次元マップに射影近似し、2次元マップ上で空間的に等間隔に分割する処理である。なお、さらに、新しくサブマップを作る必要がある場合は、今まであるサブマップの識別子と異なる識別子、例えば番号の最大値に1を足したものを新しく割り当てて新規追加サブマップの識別子とする。
【0147】
このように、図10のステップS105のサブマップ切り分け処理は、
図14〜図19を参照して説明した
(a)注目サブマップに含まれる特徴点が、予め設定した既定上限数以上となった場合に分割する処理
あるいは、図20〜図22を参照して説明した
(b)3次元マップを2次元マップに射影近似し、2次元マップ上で空間的に等間隔に分割する処理
上記処理のいずれかを適用して実行される。なお、(a),(b)の処理を組み合わせて実行する構成としてもよい。
【0148】
図10のフローチャートの説明に戻る。ステップS105の処理、すなわち必要に応じたマップ切り分け処理が終了すると、ステップS106において、入力フレームのカウンタを更新する。すなわち、1つの処理フレームごとにカウンタを[+1]とするカウンタ更新処理を実行する。
【0149】
次に、ステップS107において、予め設定したステップS108における全体最適化処理の実行単位としてのフレーム数[L]とカウンタ値を比較する。カウンタ値がL未満である場合は、処理フレームがLにいたるまでは、ステップS101〜S107の処理を入力フレームごとに繰り返し実行する。Lは例えば60フレームである。
【0150】
ステップS107において、フレーム数がLとなった場合、ステップS108において全体最適化処理を実行して、ステップS109においてカウンタを0にリセットして、ステップS101に戻り、その後の入力フレームに対する処理を実行する。
【0151】
ステップS108の全体最適化処理について、図23、図24を参照して説明する。ステップS108の全体最適化処理の詳細シーケンスについて、図23に示すフローチャートを参照して説明する。
【0152】
全体最適化処理は、バンドル調整処理(Bundle Adjustment)を用いる。図23に示すフローの説明の前にバンドル調整処理(Bundle Adjustment)の概要について図24を参照して説明する。
【0153】
バンドル調整処理(Bundle Adjustment)は、例えば図24に示すように、3つの異なる位置からの撮影画像411〜413を利用し、その撮影画像中から検出した特徴点421〜423を利用して、特徴点の3次元位置を求める。複数の画像に含まれる特徴点中、対応する特徴点の位置は図24に示す特徴点421のように、各画像の撮影ポイントから特徴点421を結ぶ線(Bundle)が1つの特徴点421位置において交わるはずである。
【0154】
しかし、カメラの位置や特徴点の画像内の位置情報などは必ずしも正確に算出されず様々な要因による誤差が含まれる。従ってこのような誤差を取り除く必要がある。具体的には1つの対応する特徴点の3次元位置とカメラ位置とを結ぶ線が、その1つの特徴点において交わるように補正する。すなわち算出済みのカメラ位置や特徴点位置を修正する処理が必要となる。この処理がバンドル調整処理(Bundle Adjustment)として実行され、この調整処理によって修正された特徴点位置情報やカメラ位置情報を利用してより精度の高い3次元情報を生成することが可能となる。このバンドル調整処理(Bundle Adjustment)は従来から知られる一般的な方法で、例えば、文献["The Design and Implementation of a Generic Sparse Bundle Adjustment Software Package Based on the Levenberg−Marquardt Algorithm",by M.I.A.Lourakis and A.A.Argyros,Aug.(2004).]に記載された手法を適用できる。
【0155】
図23に示すフローチャートの各ステップの処理について説明する。なお、この処理は、図9に示す3次元情報生成部308において行われる処理である。この処理における入力は以下の情報である。
*カメラ位置姿勢の履歴
*最新フレームでの特徴点位置全て
*特徴点トラッキング結果(画像内の特徴点の位置。カメラ位置の履歴に対応する画像全て)
【0156】
なお、カメラ位置の履歴と特徴点トラッキング結果は、毎フレームごとに実行するEKF SLAM処理(図10のフローのステップS104の処理)の結果から取得する。
【0157】
まず、ステップS601において、最新フレームの特徴点位置を、特徴点が属するサブマップの状態データから取得する。特徴点位置は、所属するサブマップの状態データの平均ベクトル(図2(a))から取得する。複数のサブマップに属する特徴点(図7のd、e)は、所属するサブマップ各々の状態データの平均ベクトルから、所属するサブマップ数の位置情報を取得し、取得した特徴点位置の平均値をとる。この特徴点位置を初期値とする。
【0158】
ステップS602では、最新のカメラ位置姿勢情報を取得する。処理対象としているサブマップの状態データから取得することができる。
【0159】
ステップS603では、図24を参照して説明したバンドル調整処理(Bundle Adjustment)による全体最適化処理を行う。すなわち、同じ特徴点が撮影されている複数の画像フレームを取得して、これら複数の画像フレームにおける共通する特徴点の位置を一致させるバンドル調整処理による全体最適化を実行する。
【0160】
この処理によって、特徴点位置の微調整が行われることになり、サブマップの状態データも、この微調整後の特徴点位置情報に基づいて更新することが必要となる。具体的には、ステップS604において、微調整された各特徴点が所属しているサブマップの特徴点位置を上書きする。複数のサブマップに属する特徴点(図7のd、e)は、所属するサブマップ各々の状態データの平均ベクトルに(図2(a))に、最適化された位置情報を上書きする。
さらに、ステップS605において、最新のカメラ位置・姿勢を上書きする。
以上で、図10に示すフローのステップS108の全体最適化処理が完了する。
この全体最適化処理は計算負担が重いため、図10のフローに示すようにLフレームに1回の割合で処理する。
【0161】
以上で本発明の3次元マップの生成に必要となる特徴点位置が算出される。
上述した説明から理解されるように、本発明の処理では、3次元マップの生成領域全体を複数のサブマップに区分し、各サブマップ対応の状態データを設定して、このサブマップ対応の状態データに対する更新処理をカルマンフィルタや拡張カルマンフィルタ(EKF)を用いて実行する。この構成により、状態データ更新に伴う計算量が大幅に削減でき、効率的なSLAM処理、すなわち、特徴点の3次元位置解析、カメラの位置姿勢算出、さらに3次元環境マップの作成を行うことができる。
【0162】
[4.サブマップの設定手法の追加説明]
上述した本発明の処理において、サブマップの設定に際して、隣接するサブマップは共通する特徴点を持つ重複領域を持つように設定することが好ましいと説明した。この理由について、図25、図26を参照して説明する。
【0163】
隣接するサブマップは共通する特徴点を持つ重複領域を持つように設定することが好ましい理由は、マップの全体最適化(バンドル調整処理)をより正確に行うためである。
【0164】
図25はサブマップ同士が重複するように配置した例である。星印は特徴点、カメラは図に示す移動軌跡に沿って左から右に移動して、1a,1b,1c/2a,1d/2b,2c,2dの各地点で画像を撮影しているものとする。
1aでは、サブマップM1の領域の画像を撮影している。
1b,1c,2a,2bでは、サブマップM1とサブマップM2の重複領域の画像を撮影している。
2cでは、サブマップM2の領域の画像を撮影している。
1a,1b,1c,2a,2b,2cの各カメラ位置と星印で示す特徴点を結ぶ直線は、特徴点のバンドル(トラッキング結果)を表している。
【0165】
この設定で、特徴点451,452のバンドル調整を行う場合について考察する。例えば、サブマップM1とサブマップM2に属する特徴点451に注目する。特徴点451を結ぶバンドル情報(トラッキング結果)は3つあり、それぞれ、カメラ1b、カメラ1c、カメラ2aとを結んでいる。特徴点451と、カメラ1b、カメラ1c、カメラ2aとを結ぶバンドル(トラッキング情報)は、前述のとおりEKFSLAM(図10のフローのステップS104)が生成する。ただし、EKFSLAMには1つのサブマップのみ入力される。
カメラが1bの位置にある時と1cの位置にある時は、注目サブマップはサブマップM1であるので、特徴点451と、カメラ1b、カメラ1cとを結ぶバンドル(トラッキング情報)は、サブマップM1からEKFSLAMによって生成される。
一方、カメラが2aの位置にある時は、注目サブマップはサブマップM2であるので、特徴点451と、カメラ2aとを結ぶバンドル(トラッキング情報)は、サブマップM2からEKFSLAMによって生成される。
特徴点451とカメラ1b、カメラ1c、カメラ2aとを結ぶそれぞれのバンドルは、異なるサブマップから生成されているが、特徴点451はサブマップM1とサブマップM2に属していることがわかっているため、バンドルは特徴点451で交わることがわかる。
バンドル調整は、カメラ位置1b,1c,2aの3つ異なるカメラ位置でのバンドル情報が適用でき、先に図24を参照しいて説明したバンドル調整が可能となる。
【0166】
また、サブマップM1とサブマップM2に属する特徴点452に注目する。特徴点452を結ぶバンドル情報(トラッキング結果)は3つあり、それぞれ、カメラ1c、カメラ2a、カメラ2bとを結んでいる。特徴点452と、カメラ1c、カメラ2a、カメラ2bとを結ぶバンドル(トラッキング情報)は、前述のとおりEKFSLAM(図10のフローのステップS104)が生成する。ただし、EKFSLAMには1つのサブマップのみ入力される。
カメラが1cの位置にある時は、注目サブマップはサブマップM1であるので、特徴点452と、カメラ1cとを結ぶバンドル(トラッキング情報)は、サブマップM1からEKFSLAMによって生成される。
一方、カメラが2aの位置にある時と2bの位置にあるは、注目サブマップはサブマップM2であるので、特徴点452と、カメラ2a、カメラ2bとを結ぶバンドル(トラッキング情報)は、サブマップM2からEKFSLAMによって生成される。
特徴点452とカメラ1c、カメラ2a、カメラ2bとを結ぶそれぞれのバンドルは、異なるサブマップから生成されているが、特徴点452はサブマップM1とサブマップM2に属していることがわかっているため、バンドルは特徴点452で交わることがわかる。
バンドル調整は、カメラ位置1c,2a,2bの3つのカメラ位置でのバンドル情報が適用でき、先に図24を参照しいて説明したバンドル調整が可能となる。
【0167】
これに対して、図25と同じ特徴点配置において、サブマップ同士が重ならないようにサブマップを設定した場合の例を図26に示す。図25の例と比較すると、図26の例では、特徴点451とカメラ2aとを結ぶバンドル、特徴点452とカメラ1cを結ぶバンドルがない。
特徴点451とカメラ2aとを結ぶバンドルがない理由を説明する。バンドル(トラッキング結果)を生成するEKFSLAMには1つのサブマップのみ入力される。カメラが2aの場所にあるとき、注目サブマップはM2である。このとき、サブマップM1にしか属さない特徴点451はEKFSLAMには入力されない。従って、カメラ2aと特徴点451とのバンドル(トラッキング結果)はEKFSLAMで生成されないため、図26の例にはない。
同様ではあるが、特徴点452とカメラ1cとを結ぶバンドルがない理由を説明する。バンドル(トラッキング結果)を生成するEKFSLAMには1つのサブマップのみ入力される。カメラが1cの場所にあるとき、注目サブマップはM2である。このとき、サブマップM2にしか属さない特徴点452はEKFSLAMには入力されない。従って、カメラ1cと特徴点452とのバンドル(トラッキング結果)はEKFSLAMで生成されないため、図26の例にはない。
図26において、サブマップM1の特徴点451のバンドル調整処理を行おうとした場合、カメラ位置1b,1cの2つのサブマップM1に対応する異なるカメラ位置でのバンドル情報のみしか利用できない。
【0168】
同様に、サブマップM2の特徴点452のバンドル調整処理を行おうとした場合、カメラ位置2a,2bの2つのサブマップM2に対応する異なるカメラ位置でのバンドル情報のみしか利用できない。
図26では、サブマップM1とサブマップM2との関連性を表すバンドルが存在しない。そのため、図24の全体最適化を行うと、サブマップM1、サブマップM2それぞれ独立に最適化され、サブマップの境界部分(例えば、図26の特徴点451、特徴点452、カメラ1c、カメラ2aそれぞれの間の位置姿勢関係)はバンドル調整(全体最適化)されない問題が発生する。
【0169】
結果として、サブマップに重複領域を設定しない場合、サブマップの端部にある特徴点のバンドル調整が出来ない場合が発生する。この場合には、特徴点の3次元位置の精度が低下する可能性がある。このような理由から、サブマップの設定に際しては、隣接するサブマップは共通する特徴点を持つ重複領域を持つように設定することが好ましい。
【0170】
以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が該実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、特許請求の範囲の欄を参酌すべきである。
【0171】
なお、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。
【0172】
例えば、プログラムは記録媒体としてのハードディスクやROM(Read Only Memory)に予め記録しておくことができる。あるいは、プログラムはフレキシブルディスク、CD−ROM(Compact Disc Read Only Memory),MO(Magneto optical)ディスク,DVD(Digital Versatile Disc)、磁気ディスク、半導体メモリなどのリムーバブル記録媒体に、一時的あるいは永続的に格納(記録)しておくことができる。このようなリムーバブル記録媒体は、いわゆるパッケージソフトウエアとして提供することができる。
【0173】
なお、プログラムは、上述したようなリムーバブル記録媒体からコンピュータにインストールする他、ダウンロードサイトから、コンピュータに無線転送や、LAN(Local Area Network)、インターネットといったネットワークを介して、コンピュータに有線で転送し、コンピュータでは、そのようにして転送されてくるプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることができる。
【0174】
なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【産業上の利用可能性】
【0175】
以上、説明したように、本発明の一実施例の構成によれば、計算量を削減し効率的な3次元位置情報の生成を行う構成が実現される。カメラによる撮影画像を観測データとして入力し、特徴点位置情報を含む多次元正規分布データからなる状態データを更新することで特徴点の3次元位置を求める例えばSLAM処理において、3次元情報の生成対象領域を区分したサブマップを設定する。さらにサブマップに属しない特徴点に関するデータを含まないサブマップ対応の状態データを生成して、観測データに基づいてサブマップ対応状態データを更新する。本構成によれば状態データのデータ量が削減され、状態データ更新に伴う計算量を減少させることが可能であり、効率的な処理が実現される。
【符号の説明】
【0176】
101 カメラ
102 撮影画像
103 特徴点
104 トラッキング(軌跡)情報
120 オブジェクト
121 オブジェクト3次元位置
130 カメラ撮影平面画像
131 オブジェクト
132 オブジェクト画素位置
211,221 サブマップ
212,222 サブマップ対応状態データ
300 情報処理装置
301 カメラ
302 撮影画像記憶部
303 サブマップ設定部
304 カメラ位置姿勢検出部
305 特徴点追跡部
306 カメラ位置姿勢記憶部
307 特徴点軌跡(トラッキング)情報記憶部
308 3次元情報生成部
309 状態データ記憶部
320 記憶部
351〜353 サブマップ対応状態データ
411〜413 撮影画像
421〜423 特徴点
451,452 特徴点

【特許請求の範囲】
【請求項1】
空間を移動するカメラが撮影した複数の異なる視点からの撮影画像を順次入力し、画像内の特徴点の3次元位置とカメラの位置姿勢情報を含む状態データを、特徴点のトラッキング情報を含む観測情報を適用して更新することで、カメラの位置、姿勢、または特徴点の3次元位置を求める3次元情報生成部と、
3次元位置の算出対象となる領域を分割したサブマップを設定するサブマップ設定部を有し、
前記3次元情報生成部は、
前記サブマップ設定部の設定したサブマップ各々に対して、サブマップ領域外の特徴点情報を含まないサブマップ対応状態データを設定し、設定したサブマップ対応状態データの更新処理を実行して、カメラの位置、姿勢、または各特徴点の3次元位置を求める情報処理装置。
【請求項2】
前記3次元情報生成部は、
前記サブマップ対応状態データとして、
前記カメラの位置、姿勢と、前記サブマップ内の各特徴点の位置の状態値を示す平均ベクトルと分散共分散行列を含む多次元正規分布データを、各サブマップに対応させて設定し、設定したサブマップ対応の多次元正規分布データを観測情報を適用して更新する請求項1に記載の情報処理装置。
【請求項3】
前記分散共分散行列は、カメラの位置、姿勢、各特徴点の位置情報、これらの固有状態値の分散と、前記各状態値の異なる状態値の組み合わせの相関情報に対応する共分散を含む行列である請求項2に記載の情報処理装置。
【請求項4】
前記3次元情報生成部は、
カルマンフィルタ(Kalman Filter)、または拡張カルマンフィルタ(EKF:Extended Kalman Filter)を適用して前記サブマップ対応状態データの更新処理を実行する請求項1〜3いずれかに記載の情報処理装置。
【請求項5】
前記3次元情報生成部は、
旧サブマップから新サブマップへ、サブマップを切り換えて処理を行う場合、旧サブマップ対応状態データに含まれるカメラ情報をそのまま利用して新サブマップ対応状態データを生成する請求項1に記載の情報処理装置。
【請求項6】
前記サブマップ設定部は、
サブマップに含まれる特徴点数が予め既定した上限数N以上となった場合、重複領域を持つ2つのサブマップに分割するサブマップ分割処理を実行し、
当該2つのサブマップには少なくとも一つは同一の特徴点を有することを特徴とする請求項1〜5いずれかに記載の情報処理装置。
【請求項7】
前記3次元情報生成部は、
サブマップ分割処理において生成した2つの分割サブマップ各々に対応する2つのサブマップ対応状態データを生成する処理を行う構成であり、
分割前のサブマップのサブマップ対応状態データから、各分割サブマップに含まれない特徴点情報を各々削除して2つの分割サブマップ各々のサブマップ対応状態データを生成する請求項6に記載の情報処理装置。
【請求項8】
前記サブマップ設定部は、
3次元位置の算出対象となる領域を射影変換して生成した2次元平面を予め既定した大きさで、かつ重複領域を持つ複数のサブマップに分割するサブマップ分割処理を実行する請求項1〜5いずれかに記載の情報処理装置。
【請求項9】
前記3次元情報生成部は、
バンドル調整処理による特徴点位置修正処理を実行する請求項1に記載の情報処理装置。
【請求項10】
前記3次元情報生成部は、
カメラの位置同定(ローカリゼーション)と周囲の地図(環境地図)の作成(mapping)を並行して実行するSLAM(simultaneous localization and mapping)処理を行う請求項1〜9いずれかに記載の情報処理装置。
【請求項11】
情報処理装置において実行する情報処理方法であり、
サブマップ設定部が、3次元位置の算出対象となる領域を分割したサブマップを設定するサブマップ設定ステップと、
3次元情報生成部が、空間を移動するカメラが撮影した複数の異なる視点からの撮影画像を順次入力し、画像内の特徴点の3次元位置とカメラの位置姿勢情報を含む状態データを、特徴点のトラッキング情報を含む観測情報を適用して更新することでカメラの位置、姿勢、または特徴点の3次元位置を求める3次元情報生成ステップとを有し、
前記3次元情報生成ステップは、
前記サブマップ設定ステップにおいて設定されたサブマップ各々に対して、サブマップ領域外の特徴点情報を含まないサブマップ対応状態データを設定し、設定したサブマップ対応状態データの更新処理を実行してカメラの位置、姿勢、または各特徴点の3次元位置を求めるステップである情報処理方法。
【請求項12】
情報処理装置において情報処理を実行させるプログラムであり、
サブマップ設定部に、3次元位置の算出対象となる領域を分割したサブマップを設定させるサブマップ設定ステップと、
3次元情報生成部に、空間を移動するカメラが撮影した複数の異なる視点からの撮影画像を順次入力し、画像内の特徴点の3次元位置とカメラの位置姿勢情報を含む状態データを、特徴点のトラッキング情報を含む観測情報を適用して更新することでカメラの位置、姿勢、または特徴点の3次元位置を求めさせる3次元情報生成ステップとを有し、
前記3次元情報生成ステップは、
前記サブマップ設定ステップにおいて設定されたサブマップ各々に対して、サブマップ領域外の特徴点情報を含まないサブマップ対応状態データを設定し、設定したサブマップ対応状態データの更新処理を実行させてカメラの位置、姿勢、または各特徴点の3次元位置を求めるステップであるプログラム。

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図1】
image rotate

【図5】
image rotate

【図11】
image rotate

【図21】
image rotate

【図22】
image rotate


【公開番号】特開2011−43419(P2011−43419A)
【公開日】平成23年3月3日(2011.3.3)
【国際特許分類】
【出願番号】特願2009−192091(P2009−192091)
【出願日】平成21年8月21日(2009.8.21)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】