以下に図面を参照して、本発明にかかる移動体位置推定システムおよび移動体位置推定
方法の実施の形態を詳細に説明する。
(実施の形態)
移動する一般車の車載機のデータ(たとえば映像データなど)は、大量に収集(プローブ)される。この一般車の映像データから、走行時の位置および姿勢を推定し、車載データ解析に用いている。一般的に搭載されているGPS(Global Positioning System)装置では誤差の大きな自車位置測定しかできないため、詳細な自車位置を必要とするサービスには適用することができない。
この一般車のデータに対して、たとえば、走行中の撮影時の位置・姿勢を高精度に推定してその車載画像に付加するならば、画像から走路周辺の地物を抽出して自動運転向け地図などの地図を作成更新したり、自動運転向けに撮影時の周辺状況を解析したりする新しいサービス分野に応用することができる。このため、これら一般車映像を使った新しいサービス利用の前提として、車載画像を撮影したカメラ位置・姿勢(映像の撮影位置・姿勢)を正確に推定する技術が必要とされている。
SLAMは、移動中に取得した周辺状況に関する車載データ、たとえばLIDAR(Laser Imaging Detection and Ranging)データなどを入力とし、自車走行経路(自車の位置と姿勢)と周辺環境地図(周辺物の3次元位置マップなど)を同時に作成する技術の総称である。
なかでも、V−SLAMは、車載カメラで撮影した映像を入力とし、撮影した映像に映る被写体の変化を用いて、自車走行経路(自車位置・姿勢)と周辺環境地図(周辺の被写体の画像特徴点群の3次元位置マップ、以下、環境地図という)を推定作成することができる技術であり、一般車の単眼映像から自車位置と姿勢を推定することができる。
また、V−SLAMでは、新たに複数画像上で観測された画像特徴点に対し、三角測量で初期3次元位置を推定し、環境マップに追加する。その上で、随時、撮影画像での該環境マップの画像特徴点の想定映り込み状態と実際の撮影画像との違いを考慮しながら、画像群の撮影位置姿勢と、環境マップの画像特徴点群の3次元位置を最適化補正し、最終的な撮影画像群の撮影位置姿勢を得ることができる。
後述する図5に示す、実施の形態にかかる移動体位置推定システム500は、逆行判定部511、逆行画像取得部512、初期姿勢・座標系設定部513、フレーム姿勢推定部521、キーフレーム(KF)更新部522、3Dマップ特徴点更新部531、グラフ制約生成部532、KF姿勢・特徴点マップ最適化部533、ループ検出・クロージング部541、の9つのV−SLAMをベースとする処理部を持ち、かつ、実座標環境マップ550(KF群情報551、特徴点群情報552)、全画像位置姿勢データ560、の2つの内部保持データを持っている。
また、KF(キーフレーム)は、特に映像に含まれる全画像群の中で特に主要な画像である。V−SLAMでは、KF画像に対して撮影位置・姿勢を大域/局所の双方で矛盾が無いように、環境地図を用いて詳細な解析技法を用いて推定しておき、残る画像群は、KFからの相対関係を使って簡易に推定する、という方法が取られることが多い。そのため、実施の形態にかかる移動体位置推定方法においても、同様の方法を採用するが、全画像群をKFと見なしてもかまわない。
また、環境地図(実座標環境マップ550)は、各画像特徴点の3次元位置のほかに、どの画像特徴点はどの画像で用いるかに関する情報を持っている。これは、後述する図5に示す、KF群情報551と、特徴点群情報552である。KF群情報551は、主要な映像内の画像(KF)群の情報と、該KF画像上に各画像特徴が映っている2次元位置に関する情報の2つであり、環境地図を任意の画像の位置姿勢推定に用いるために必須な情報である。実座標環境マップ550の内容については、後述する図8において詳細に説明する。
一般的に特徴点ベースのV−SLAMの環境マップは、画像特徴点群の画像特徴と3次元位置、該特徴点群を閲覧している画像KFの情報、また、画像KFと似た画像を検索できるようにするための画像KF内の画像特徴群(多くは、3次元位置を保持している特徴点群よりも多くの画像特徴を持つ)、を含んでいる。
また、後述する図5に示す全画像位置姿勢データ560に示すように、画像位置姿勢は映像の全画像フレームの撮影位置・姿勢である。実座標環境マップ550のKF群情報551に含まれるKFの撮影位置・姿勢データは、全画像位置・姿勢の一部でもあり、重複するが、分かり易さのために、KF位置・姿勢として他のKF情報と共に記載している。なお、全画像位置姿勢データ560の内容については、後述する図9において詳細に説明する。
また、後述する図10に示す映像1001は、移動体(車両)に搭載したカメラ映像である。車載機などの車両の通信手段を用いたり、記録メディアを介して人手を使ったり、任意の方法で入手し、本発明の撮影位置推定システムの入力とする。また、特に記載していないが、映像の歪み補正等で用いるため、映像を撮影したカメラの内部パラメータは既知とし、適宜歪み補正を実施してよい。
(移動体位置推定方法の概要)
まず、図1Aおよび図1Bを用いて、本実施の形態にかかる移動体位置推定システムおよび移動体位置推定方法の概要について説明する。
本実施の形態にかかる移動体位置推定方法においては、V−SLAM処理をするにあたり、2つの処理を実行する。1つ目の処理は、映像を時間経過とは逆方向に処理するよう、映像を逆行するように取得する処理(逆行画像取得処理)である。この逆行画像取得処理は、たとえば、後述する逆行画像取得部512によっておこなわれる。
この逆行画像取得処理においては、たとえば、入力した映像ファイルに対し、撮影時刻が遡るように各画像を抽出して、後続のV−SLAM処理部に渡す。入力映像がライブ入力であった場合には、任意時間分の画像群をバッファリングして貯めておいて、貯めた時間分の映像に対して、随時、取得時刻と逆にV−SLAM処理部へと渡すようにすることができる。
2つ目の処理は、逆行画像取得処理をおこなう際に、V−SLAMの処理対象の映像の状態や、逆行なしで試行したV−SLAMの結果などから、入力した映像を時間反転(時間逆行)するか否かの判定をおこなう処理(逆行判定処理)である。したがって、この逆行判定処理によって、判定された結果に基づいて、逆行画像取得処理を実行するか否かを決定する。この逆行判定処理は、たとえば、後述する逆行判定部511によっておこなわれる。
逆行判定処理は、具体的には、たとえば、対象映像が移動体前方に向けて設置したカメラの映像であるか否かを判定して、移動体の前方を撮影した映像であれば、逆行画像(逆行映像)取得処理をおこなうと判定し、それ以外(たとえば、移動体の後方を撮影した映像)であれば、逆行画像取得処理をおこなわないと判定する。
ここで、当該カメラが前向き撮影カメラか否かは、任意の既知の方法、たとえば、移動体上のカメラ設置位置情報から得てもよいし、あるいは、撮影映像の被写体変化として、オプティカルフローによって周辺背景が近づく/遠ざかることを推定して、その推定結果に基づいて、当該カメラが前向き撮影であるか否かを判断するようにしてもよい。
後述するように、従来方式では、V−SLAM処理する画像群内で被写体の画像特徴点を最初に検知した2画像を、後述する、初期姿勢・座標系設定部513、3Dマップ特徴点更新部531の該画像特徴の算出、画像特徴の対応付けおよび三角測量で用いる。
このため、前向き撮影カメラの映像を処理する場合に、従来方式では、被写体が遠くに映り始めたときの2画像を該処理部513、531において用いることがほとんどであるのに対して、本実施の形態にかかる移動体位置推定方法では、逆行画像取得をおこなうため、被写体が最もカメラの近くに映ったときの2画像を使うことになる。この2画像は、被写体が大きく映っているため、画像特徴の算出および対応付けミスが生じにくく、従来のように被写体が遠くに映った時のように誤った対応づけを実施してしまうことが少ない。
このため、前向き撮影カメラの映像を処理する場合に、従来方式では、被写体が近くに映った時にも本来は対応付け済であるはずの画像特徴が対応付けミスで残ってしまっていて、それと路面微小凹凸などの本来は対応付けされないはずの間違った特徴と対応付けしてしまい、結果的に多数の間違ったマップ特徴が生じてしまうのに対して、本実施の形態にかかる移動体位置推定方法では、そのようなことが生じにくい。
また、本実施の形態にかかる移動体位置推定方法では、画像特徴の3D初期位置を求める三角測量でも、従来より見えの変化(交会角)が非常に大きな複数画像を使って実施することができるので、変化量から3D位置を推定する三角測量の精度が向上するため、環境マップにおける当該画像特徴の3D位置精度が向上する。
さらに、当該特徴点の3D位置は、最適化前の初期位置精度が向上したことに加えて、当該特徴点が大きく映る画像上では、3D位置の小さな変動は映り込む投影位置の大きな変化として現れることにより、3D特徴点が画像に映り込む投影位置と実際に該特徴が画像上に現れた位置との違い(再投影誤差)を使った該特徴点の3D位置の微調整最適化の精度も向上しやすい。この結果、環境マップの当該画像特徴の3D位置精度が向上する(後述する図4Aを参照)。
図1Aは、実施の形態にかかる移動体位置推定方法における姿勢グラフと最適化の一例を模式的に示す説明図である。また、図1Bは、従来技術にかかる移動体位置推定方法における姿勢グラフと最適化の一例を模式的に示す説明図である。
図1A、図1Bにおいて、被写体(特徴点A)100に対して、移動体の各撮影位置において撮影された画像101〜110を示している。矢印は移動体の進行方向を示している。したがって、各三角形101〜110は、それぞれの画像が撮影された位置を示しており、また、画像101が一番最初に撮影されたものであり、時系列に沿って、102→103→104→・・・→109→110の順で撮影されたことを示している。
そして、特徴点A100は、移動体が三角形101、102では撮影されておらず、三角形103の画像において、特徴点A100が初めて映っている。その後、三角形103の画像まで、特徴点A100が映っている。したがって、特徴点A100が映っている画像群は、画像103〜109である。
図1Bに示すように、従来方式では、被写体(特徴点A)100が遠くに見え始めたときの画像を使うのが一般的であった。すなわち、画像103と画像104が三角測量を実施する画像ペアであった。この場合、見えの変化(交会角)θbが小さい画像のペアで三角測量を実施するため、変化量から位置を推定する三角測量の精度が悪かった。
これに対して、実施の形態にかかる移動体位置推定方法は、図1Aに示すように、より被写体(特徴点A)100が最後に見え始めた、すなわち最も近いときの画像を使うものである。すなわち、画像108と画像109を三角測量を実施する画像ペアとする。見えの変化(交会角)θaが大きい画像のペアで三角測量を実施するため、変化量から位置を推定する三角測量の精度がよくなるものである。
なお、本実施の形態では、後ろ向き撮影カメラによる映像は、そもそも、「被写体がカメラに最も大きく映った画像」から順次遠くに映った画像へと撮影されているため、逆行画像取得を実施する必要がないと判断している。しかし、前後向き撮影カメラ以外のカメラ、たとえばやや斜め向きのカメラなどは、前後どちらの撮影カメラにより近いかを、任意の方法で判断して決定してもよい。
逆行判定処理は、この他に、対象映像のフレームレートが規定値よりも小さい場合は、逆行しないものと判定し、規定値よりも大きい場合は、逆行するものと判定するようにしてもよい。
フレームレートが低い映像は、2画像間で被写体が大きく変化し、特に、カメラ近くに被写体が映っている場合は、遠方に被写体が映っている時よりも映りの変化が大きい。このため、フレームレートが非常に低い映像では、カメラ近くに被写体が映っている2画像によって画像特徴点の対応付けやそれを用いた三角測量などを行おうとすると、被写体の特徴点の出現位置や見えが大きく変化しているために、同じ特徴点と判定することができない虞れがある。
この結果、逆行画像取得でカメラ近くに被写体が映った画像から処理をおこなっても、結局、被写体が適度に遠くに映るまで同じ特徴点として判定できないため、該被写体の画像特徴を環境マップに反映できず、環境マップの精度があまり向上しない上、環境マップに反映されてから該被写体が遠ざかって特徴が見えなくなるまでしか、該環境マップの特徴点をV−SLAMで利用できないので、利用できる画像数が減ってしまい、また、最も被写体の映りの良いカメラ至近の画像が全く使えない。
このため、初期の3D特徴点位置精度は若干向上するものの環境マップへの該特徴点登録が遅れるため、カメラ撮影位置姿勢算出に該被写体特徴点をあまり使えないので、従来方式に比べて逆行画像取得をおこなう利点が非常に少なくなる。
すなわち、図1Bにおいて、被写体(特徴点A)100が遠くに見え始めたときの画像を使うと、精度は低いが、低フレームレートでも、被写体が最もカメラに近い時の画像を含め、画像103〜109の7つの画像をフルでV−SLAMに利用できる。したがって、至近画像は、再投影誤差による最適化に使うことができる。
これに対して、図1Aにおいて、より被写体(特徴点A)100が最後に見えた、すなわち、最も近いときの画像を使うと、至近に映る画像群は、映り変化が激しすぎて特徴対応付けに失敗して、三角測量利用できないため、初期の3D位置(三角測量精度)はやや高いが、画像103〜107の5つの画像しかV−SLAMに利用できず、特に最も映りのよい最至近画像は、最適計算にさえも使うことができないため、精度が悪化する。
このように、低フレームレートだと、時間逆行で三角測量が遅れ、特徴点A100を利用できる画像数が減り、結果的に誤差が大きくなって、逆行利点が無い。したがって、本実施の形態にかかる移動体位置推定方法では、フレームレートが低い映像は、前向き撮影カメラの場合は、逆行画像を取得しない、という判断をおこなうことができる。
また、後ろ向き撮影カメラでは、フレームレートが低い映像の場合、前向き撮影カメラを逆行画像取得した時と同じ問題が生じ、環境マップ反映が遅れてしまうので、前向き撮影カメラとは逆に、逆行画像取得をおこなうと判断してもよい。後ろ向き撮影カメラに逆行画像取得をおこなうことで、被写体が最も遠方に映った画像から順にV−SLAM処理をおこなうことになり、三角測量による初期の3D特徴点の位置精度は若干悪化するものの、環境マップへの登録が比較的早く実施できるため、該特徴点を使ったカメラ撮影位置姿勢算出に該特徴点を十分活用できるという利点がある。
なお、フレームレートが低い映像であっても、特徴点の対応付けのパラメータ、たとえば、対応付け対象の特徴点を画像内のどの範囲までを探索するかの探索範囲のしきい値などを、フレームレートが高い映像とは異なる適切な値に変更することで、カメラに近い画像同士を使った特徴点対応付けが実施できる場合もあり、その場合はフレームレートによる逆行判定を省略してもよい。
一般的には、探索範囲が大きい程、対応付け処理にかかる処理負荷が高くなるため、特に低フレームレートの映像に対しては、対応付けパラメータの変更をおこなうのではなく、低フレームレートの逆行判定をおこなうことが望ましい。
逆行判定処理においては、この他にさらに、逆行画像取得なしのV−SLAM、すなわち従来技術と同じV−SLAMをあらかじめ一度実施しておき、その時に推定した撮影位置・姿勢の推定精度、または、推定失敗状況、または作成した環境マップの推定精度のいずれかを調べて、それが特に悪化している場合だけ、時間逆行によるV−SLAMを実施すると判断してもよい。
このように判定することで、渋滞シーンなど他の被写体(他の並走車等)で隠れてしまって、道路周辺地物が最もカメラ近くでは映り込まないことが多いシーン映像など、逆行画像を取得することに効果があるのか判断に迷う場合にも、必要な場合だけ、逆行画像の取得をおこなうことができる。
たとえば、撮影位置・姿勢の推定精度は、位置や姿勢変化のばらつきが大きい場合に精度が悪いと判断する。また、推定失敗状況はV−SLAMで入力した処理対象映像の画像数に対して、撮影位置・姿勢を算出できた画像数の占める割合を求め、割合は小さいときに精度が悪いと判断する。環境マップの推定精度は、たとえば環境マップの特徴点3D位置群の位置のばらつきの大きさや、明らかに高さや位置が異常値として推定されている特徴点群の含まれる割合などから、ばらつきや割合が大きいときに精度が悪いと判断する。
逆行判定処理では、これらの例で示した判断の1つ以上を、任意に組み合わせて判定してよい。
(逆行判定処理の手順)
図2Aおよび図2Bは、実施の形態にかかる移動体位置推定方法の処理の手順の一例を示すフローチャートである。図2Aは、逆行判定処理の手順の一例を示すフローチャートであり、図2Bは、逆行画像取得処理以降の処理の手順の一例を示すフローチャートである。
図2Aのフローチャートにおいて、逆行判定部511は、まず、カメラが前向きか否かを判断する(ステップS201)。ここで、カメラが前向きでない場合(ステップS201:No)は、ステップS205へ移行する。一方、カメラが前向きの場合(ステップS201:Yes)は、カメラの撮影フレームレートがしきい値以上か否かを判断する(ステップS202)。
ステップS202において、カメラの撮影フレームレートがしきい値以上の場合(ステップS202:Yes)は、「映像を逆行取得する」と判定する(ステップS203)。一方、ステップS202において、カメラの撮影フレームレートがしきい値以上でない場合(ステップS202:No)は、「映像を逆行取得しない」と判定する(ステップS206)。
ステップS203において、「映像を逆行取得する」と判定した後、従来の時間逆行なしのV−SLAM結果があり、その撮影位置・姿勢算出が良好だったか否かを判断する(ステップS204)。ここで、V−SLAM結果があり、その撮影位置・姿勢算出が良好だった場合(ステップS204:Yes)は、逆行画像を取得する必要がないので、V−SLAMの一連の処理を終了する。
一方、ステップS204において、V−SLAM結果がない場合、あるいは、V−SLAM結果があっても、その撮影位置・姿勢算出が良好でない場合(ステップS204:No)は、逆行画像を取得する必要があるので、図2BのステップS211へ移行する。
カメラが前向きでない場合(ステップS201:No)に移行したステップS205においても、カメラの撮影フレームレートがしきい値以上か否かを判断する(ステップS205)。ここでは、カメラの撮影フレームレートがしきい値以上でない場合(ステップS205:No)は、「映像を逆行取得する」と判定する(ステップS203)。一方、ステップS205において、カメラの撮影フレームレートがしきい値以上の場合(ステップS205:Yes)は、「映像を逆行取得しない」と判定する(ステップS206)。
ステップS206において、「映像を逆行取得しない」と判定した後、従来の時間逆行なしのV−SLAM結果があるか否かを判断する(ステップS207)。ここで、V−SLAM結果がある場合(ステップS207:Yes)は、V−SLAMの一連の処理を終了する。一方、ステップS207において、V−SLAM結果がない場合(ステップS207:No)は、図2BのステップS211へ移行する。
図2Bのフローチャートにおいて、判定の結果、映像を逆行取得する必要があるか否かを判定する(ステップS211)。判定の結果は、「映像を逆行取得する」(図2AのステップS203)または「映像を逆行取得しない」(図2AのステップS206)との判定の結果である。
ステップS211において、映像を逆行取得する必要がある場合(ステップS211:Yes)は、映像を逆時刻順に取得する『逆行取得フラグ』をONにして(ステップS212)、ステップS214へ移行する。一方、映像を逆行取得する必要がない場合(ステップS211:No)は、『逆行取得フラグ』をOFFにして(ステップS213)、ステップS214へ移行する。
ステップS214において、すべての映像を処理したか否かを判断する(ステップS214)。ここで、未だ、すべての映像を処理していない場合(ステップS214:No)は、映像内の未処理画像群から、『逆行取得フラグ』を用いて、最も後で撮影した画像を1つ取得する(ステップS215)。これは、『逆行取得フラグ』がONになっている場合であって、『逆行取得フラグ』がOFFになっている場合は、最も前で撮影した画像を1つ取得するようにするとよい。ここまでが、逆行画像取得部512によって実行される処理である。
そして、取得した画像内で特徴点群を取得し(ステップS216)、画像の撮影位置姿勢を、最新KFの撮影位置姿勢・特徴点群マップから推定する(ステップS217)。このように、特徴点群マップの投影位置から撮影位置姿勢を推定するが、マップ精度が向上しているので、推定精度も向上する。ただし、フレームレートが低いと、近くに映っている画像が2枚ないとマップ登録されないので、近くの特徴がマップにない可能性がある。ここまでが、後述するフレーム姿勢推定部521によって実行される処理である。
つぎに、取得した画像は、新KF画像であるか否かを判断する(ステップS218)。新KF画像であるか否かは、たとえば、最新KFとの相違が大きい、または、指定時間が離れているか否かによって判断することができる。ここで、取得した画像が、新KF画像でない場合(ステップS218:No)は、何もせずに、ステップS214へ戻る。
一方、取得した画像が、新KF画像である場合(ステップS218:Yes)は、ステップS219へ移行する。ここまでが、後述するKF(キーフレーム)更新部522によって実行される処理である。
つぎに、既存のKF画像内で特徴点と同じ特徴で、対応付けしていない特徴があるか否かを判断する(ステップS219)。ここで、対応付けしていない特徴がない場合(ステップS219:No)は、ステップS214へ戻る。
一方、対応付けしていない特徴がある場合(ステップS219:Yes)は、見つけた既存KF画像と現(KF)画像の、画像内特徴位置と撮影位置姿勢を使って、三角測量を実施する(ステップS220)。そして、特徴点の特徴と、三角測量による3次元位置を、環境マップに追加更新する(ステップS221)。ここまでが、後述する3Dマップ特徴点更新部531によって実行される処理である。
その後、追加更新した環境マップとKF群を使って、現(KF)画像の位置姿勢と環境マップを最適化する(ステップS222)。ここまでが、後述するグラフ制約生成部532、KF姿勢・特徴点マップ最適化部533によって実行される処理である。
その後、ステップS214へ戻る。そして、ステップS214において、すべての映像を処理した場合(ステップS214:Yes)は、図2Aに戻って、一連の処理を終了する。
このように、本実施の形態にかかる移動体位置推定方法は、カメラ映像の設置位置(撮影方向)や、フレームレート、従来V−SLAMの実施結果などから、映像を時間逆行するかを判定し、適宜、時間逆行させた画像群でV−SLAM処理することで、被写体およびその特徴点が画像内でより大きく映った画像を用いて三角測量をおこなうことができ、該特徴点の3D位置で構成された環境マップの精度を向上させると共に、該マップを使って推定算出するカメラの撮影位置・姿勢の推定精度を向上させるものである。
(V−SLAMの環境マップの比較)
図3Aは、実施の形態にかかる移動体位置推定方法における逆時刻によるV−SLAMの環境マップの一例を示す説明図である。また、図3Bは、従来技術にかかる移動体位置推定方法における順時刻によるV−SLAMの環境マップの一例を示す説明図である。図3Aと図3Bとは、その比較を示している。
図3A、図3Bは、環境マップの画像特徴の3D位置を、上空俯瞰した画像である。図3A、図3Bは、後述する図4A、図4Bのように、画像のほぼ中央を上から下へ伸びる道路を走行する移動体の映像を使って、同じ処理区間に対してV−SLAMで作成された環境マップを示しており、各ドットはマップ特徴点群を示している。
図3Aにおいて、逆画像を取得した場合に、逆時刻マップ特徴点群は、大きく被写体が映る画像で特徴対応付けと三角測量をおこなうため、本来の特徴のみのマップとなり、正しく道路周辺に3D位置が集中していることがわかる。一方、図3Bにおいて、逆画像を取得していない場合に、環境マップの特徴点が画像中央に縦に存在する道路より大きく離れた場所まで散らばっており、また、誤った特徴対応付けの結果、間違った特徴対応付けも増えてしまい、路面微小凹凸の特徴に対応するマップ特徴点も増えている。
このように、逆画像を取得することにより、生成する特徴点の3次元位置群である周辺環境マップの位置精度が向上して、位置誤差による特徴点位置の散らばりがなくなっていることがわかる。
(撮影位置・姿勢の推定結果の比較)
図4Aは、実施の形態にかかる移動体位置推定方法における周辺環境マップの一例を示す説明図である。また、図4Bは、従来技術にかかる移動体位置推定方法における周辺環境マップの一例を示す説明図である。図4Aと図4Bとは、撮影位置・姿勢の推定結果の比較を示している。
図4Aと図4Bは、上空俯瞰した画像で、処理映像の同じ走行区間を示している。図4Aにおいて、逆画像を取得した場合には、ほぼ走行区間全体で撮影位置・姿勢を推定できている。一方、図4Bにおいて、逆画像を取得していない場合には、環境マップ精度が低いために、撮影位置・姿勢の推定ができた画像が非常に少ない。
このように、初期の特徴点3D位置算出をおこなうタイミングが、従来方式おける「最も遠方に被写体が映った時(遠方に見え始めた時)」だったものが、本発明の実施にかかる移動体位置推定方法により、「最も近傍に被写体が映った時(最後に見えた時)」に変更することが可能になるため、入力映像状況に応じて、必要なら、被写体に対してより大きな映像内変化が得られる画像を使って実施することができる。このため、映像内変化から推定する特徴点の3次元位置推定の精度が向上し、高精度な周辺環境マップ(周辺特徴点群の3次元位置群)が得られる。
この結果、課題だった生成する周辺環境マップ(画像特徴点の3次元位置群)の位置精度が向上し、環境マップから推定した画像内容と実際の映像の映りの齟齬が拡大することなくV−SLAM処理を実施できるので、撮影位置姿勢推定処理の失敗(以後推定処理できず、撮影位置姿勢が推定できない区間が生じる)が起こりにくくなり、撮影位置姿勢の推定区間が伸びると共に、その精度も向上することができる。
(システム構成例)
つぎに、実施の形態にかかる移動体位置推定システム500のシステム構成について説明する。図5は、実施の形態にかかる移動体位置推定システムのシステム構成の一例を示す説明図である。
図5において、移動体位置推定システム500は、移動体位置推定装置の一例であるサーバ501と、移動体503に搭載された、映像を収集する情報収集装置の一例である車載機502とを備える。そして、サーバ501と車載機502とが、ネットワーク504によって接続されることにより、移動体位置推定システム500を構成する。また、移動体位置推定システム500は、図示は省略するが、クラウドコンピューティングシステムによって、その機能を実現するようにしてもよい。また、車載機502は、衛星505からのGNSS情報を収集するようにしてもよい。
サーバ501は、逆行判定部511と、逆行画像取得部512と、初期姿勢・座標系設定部513と、フレーム姿勢推定部521と、KF(キーフレーム)更新部522と、3Dマップ特徴点更新部531と、グラフ制約生成部532と、KF姿勢・特徴点マップ最適化部533と、ループ検出・クロージング部541の各機能部を有する。各構成部511〜513、521、522、531〜533、541によって、サーバ501の制御部を構成することができる。これらの構成部の詳細については、後述する。
また、サーバ501は、KF群情報551および特徴点群情報552などを記憶する実座標環境マップ550を備えている。あるいは、サーバ501は、実座標環境マップ550とアクセス可能に接続されている。
すなわち、実座標環境マップ550は、サーバ501内に設けられて(記憶されて)いてもよく、また、実座標環境マップ550は、図示を省略する別のサーバ内に設けられ、ネットワーク504などのネットワークによってサーバ501と接続されていてもよい。実座標環境マップ550の詳細については、後述する。
そして、上記構成部は、大きく分けて4つの機能部に分けることができる。逆行判定部511と、逆行画像取得部512と、初期姿勢・座標系設定部513と、によって、システムの初期化処理機能510を実現することができる。また、フレーム姿勢推定部521と、KF更新部522と、によって、位置姿勢推定(トラッキング)処理機能520を実現することができる。
また、3Dマップ特徴点更新部531と、グラフ制約生成部532と、KF姿勢・特徴点マップ最適化部533と、によって、環境マップ作成(ローカルマッピング)処理機能530を実現することができる。また、ループ検出・クロージング部541によって、ループクローズ処理機能540を実現することができる。
移動体503は、具体的には、たとえば、情報を収集するコネクテッドカーであるが、これには限定されない。一般乗用車やタクシーなどの営業車、二輪車(自動二輪や自転車)、大型車(バスやトラック)などであってもよい。また、移動体503には、水上を移動する船舶や上空を移動する航空機、無人航空機(ドローン)、自動走行ロボットなどであってもよい。
車載機502は、撮影映像に関する情報を収集する。また、車載機502は、GNSS情報を含む移動体503の情報を収集するようにしてもよい。移動体503の情報には、移動体503から収集する、移動体503の姿勢情報なども含まれる。
移動体503には、車載機502が備えられている。車載機502は、移動体503に搭載された専用の装置であってもよく、取り外し可能な機器であってもよい。また、スマートフォンやタブレットなどの通信機能を備えた携帯端末装置を移動体503において利用するものであってもよい。また、車載機502の機能を、移動体503が備えている機能を用いて実現するようにしてもよい。
したがって、車載機502の『車載』という表現は、移動体に搭載された専用装置という意味には限定されない。車載機502は、移動体503における情報を収集し、収集した情報をサーバ501に対して送信できる機能を持った装置であれば、どのような形態の装置であってもよい。
車載機502は、撮影映像に関する情報およびGNSS情報を含む移動体503の情報(車載データ)を取得し、取得した車載データを保存するようにしてもよい。そして、保存した車載データを、無線通信によって、ネットワーク504を介して、サーバ501へ送信する。また、サーバ501から配信されたプログラムを含む各種データを、ネットワーク504を介して、無線通信により受信する。
また、車載機502は、近距離通信機能により、近くを走行中の別の移動体503の情報を取得し、サーバ501へ送信するようにしてもよい。また、車載機502どうしが、近距離通信機能により、通信をおこない、他の車載機502を介して、サーバ501との通信をおこなうようにしてもよい。
このようにして、移動体位置推定システム500において、サーバ501は、移動体503に搭載された車載機502から車載データを取得するとともに、各車載機502へ各種データを配信することができる。
また、車載機502は、通信手段を備えていなくてよい。すなわち、車載機502は、サーバ501とは、ネットワーク504を介して接続されていなくてもよい。その場合は、車載機502に蓄積されたデータは、オフラインで(たとえば、記録メディアを介して人手などにより)、サーバ501に入力することができる。
図5において、サーバ501が、逆行判定部511と、逆行画像取得部512と、初期姿勢・座標系設定部513と、フレーム姿勢推定部521と、KF更新部522と、3Dマップ特徴点更新部531と、グラフ制約生成部532と、KF姿勢・特徴点マップ最適化部533と、ループ検出・クロージング部541の各機能部を有する構成とした。図示は省略するが、これらの各機能部の少なくとも一つを、サーバ501に加えて、あるいは、サーバに代えて、車載機502が有するようにしてもよい。
車載機502が、各機能部511〜513、521、522、531、532、533、541の少なくとも一つを有する場合は、サーバ501が実施する処理の内容と同じであってもよい。ただし、3D地図マップ情報は、任意の媒体(DVD/BLディスク、HDDなど)に保持していて利用する以外にも、適宜、図示を省略する外部サーバから無線ネットなどを経由して取得するようにしてもよい。
このように、移動体位置推定システム500は、逆行判定部511、逆行画像取得部512、初期姿勢・座標系設定部513、フレーム姿勢推定部521、キーフレーム(KF)更新部522、3Dマップ特徴点更新部531、グラフ制約生成部532、KF姿勢・特徴点マップ最適化部533、ループ検出・クロージング部541、の9つのV−SLAMをベースとする処理部を持ち、かつ、実座標環境マップ550(KF群情報551、特徴点群情報552)、全画像位置姿勢データ560、の2つの内部保持データを持っている。
(移動体位置推定装置のハードウェア構成例)
図6は、移動体位置推定装置のハードウェア構成の一例を示すブロック図である。移動体位置推定装置の一例であるサーバ501は、CPU(Central Processing Unit)601と、メモリ602と、ネットワークI/F(Interface)603と、記録媒体I/F604と、記録媒体605と、を有する。また、各構成部は、バス600によってそれぞれ接続される。
ここで、CPU601は、サーバ(移動体位置推定装置)501の全体の制御を司る。メモリ602は、たとえば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。具体的には、たとえば、フラッシュROMやROMが各種プログラムを記憶し、RAMがCPU601のワークエリアとして使用される。メモリ602に記憶されるプログラムは、CPU601にロードされることで、コーディングされている処理をCPU601に実行させる。
ネットワークI/F603は、通信回線を通じてネットワーク504に接続され、ネットワーク504を介して他の装置(たとえば、車載機502、実座標環境マップ550や全画像位置姿勢データ560が格納される装置、あるいは、他のサーバやシステム)に接続される。そして、ネットワークI/F603は、ネットワーク504と自装置内部とのインターフェースを司り、他の装置からのデータの入出力を制御する。ネットワークI/F603には、たとえば、モデムやLANアダプタなどを採用することができる。
記録媒体I/F604は、CPU601の制御にしたがって記録媒体605に対するデータのリード/ライトを制御する。記録媒体605は、記録媒体I/F604の制御で書き込まれたデータを記憶する。記録媒体605としては、たとえば、磁気ディスク、光ディスクなどが挙げられる。
なお、サーバ501は、上述した構成部のほかに、たとえば、SSD(Solid State Drive)、キーボード、ポインティングデバイス、ディスプレイなどを有していてもよい。
(車載機のハードウェア構成例)
図7は、車載機のハードウェア構成の一例を示すブロック図である。情報収集装置の一例である車載機502は、CPU701と、メモリ702と、無線通信装置703と、移動体I/F704と、撮像装置705と、受信装置706を有する。また、各構成部は、バス700によってそれぞれ接続される。
CPU701は、車載機502の全体の制御を司る。メモリ702は、たとえば、ROM、RAMおよびフラッシュROMなどを有する。具体的には、たとえば、フラッシュROMやROMが各種プログラムを記憶し、RAMがCPU701のワークエリアとして使用される。メモリ702に記憶されるプログラムは、CPU701にロードされることで、コーディングされている処理をCPU701に実行させる。
無線通信装置703は、発信された電波を受信したり、電波を発信したりする。アンテナと受信装置とを含む構成であり、各種通信規格による移動通信(具体的には、たとえば、3G、4G、5G、PHS通信など)、Wi−Fi(登録商標)などの通信を送受信する機能を備えている。
移動体I/F704は、移動体503と車載機502の自装置内部とのインターフェースを司り、移動体503からのデータの入出力を制御する、したがって、車載機502は、移動体I/F704を介して移動体503が備えるECU(各種センサなどを含む)707から情報を収集する。移動体I/F704は、具体的には、たとえば、有線により接続する際に用いるコネクタや近距離無線通信(具体的には、たとえば、Bluetooth(登録商標))装置などであってもよい。
受信装置(たとえばGPS(Global Positioning System)受信装置などのGNSS受信装置)706は、複数の衛星505からの電波を受信し、受信した電波に含まれる情報から、地球上の現在位置を算出する。
撮像装置(たとえばカメラなど)705は、静止画や動画を撮像する機器である。具体的には、たとえば、レンズと撮像素子とを備える構成である。撮像装置705による撮像画像は、メモリ702に保存される。また、カメラなどの撮像装置705は、画像認識機能や、バーコードやQRコード(登録商標)を読み取る機能や、OMR(Optical Mark Reader)、OCR(Optical Character Reader)機能などを備えていてもよい。
図7に示したように、撮像装置(カメラなど)705および受信装置(GNSS受信装置など)706は、車載機502が備えていてもよく、また、移動体503が備えていたり、別途、外付けされたものを用いるようにしてもよい。その際、撮像装置705あるいは受信装置706、車載機502とのデータのやりとりは、有線または無線通信によりおこなうようにしてもよい。
撮像装置705やGNSS受信装置706を、車載機502が備えていない場合は、移動体I/F704などを介して、それらの情報を取得するようにしてもよい。また、車載機502は、図示は省略するが、各種入力装置、ディスプレイ、メモリカードなどの記録媒体の読み書き用のインターフェース、各種入力端子などを備えていてもよい。
(実座標環境マップの内容)
図8は、実座標環境マップのデータ構成の一例を示す説明図である。図8において、実座標環境マップ550は、KF群情報551と、特徴点群情報(3次元位置情報)552aと、特徴点群情報(KF画像内位置情報)552bと、を有する。
ここで、既存技術の環境地図に相当するものが、実座標環境マップ550であり、各画像特徴点の3次元位置(特徴点群情報(3次元位置情報)552a)の他に、どの画像特徴点はどの画像で閲覧されたか(用いるか)に関する情報を持っている。これを、特徴点群情報(KF画像内位置情報)552bと、KF群情報551の2つで表している。主要な映像内の画像(KF)群の情報であるKF群情報551と、該KF画像上に各画像特徴が映っている2次元位置に関する情報である特徴点群情報(KF画像内位置情報)552bは、環境地図を任意の画像の位置・姿勢推定に用いるために必須な情報である。
図8に示すように、KF群情報551は、「ID」、「親KF ID」、「子KF ID」、「ループKF ID」、「姿勢情報」、「位置情報」、「特徴量」、「GNSS位置」および「映像フレーム番号」を含む各種情報を持っている。なお、「GNSS位置」に関する情報を持っていなくてもよい。
ここで、「ID」は、当該KFの情報を識別する一意の識別情報であり、「親KF ID」および「子KF ID」は、KFどうしをつなぐ情報であり、「ループKF ID」は、ループクローズ処理などで使う情報である。
また、「姿勢情報」・「位置情報」は、KFの推定撮影位置・姿勢情報であり、「特徴量」は、任意の画像に対して似た画像か否かを判断するのに用いる画像全体としての特徴量であり、「GNSS位置」は、新たに入力GNSS情報に相当する該KFの撮影時のGNSS位置であり、「映像フレーム番号」は、対応する映像のフレーム番号である。
図8に示すように、特徴点群情報(3次元位置情報)552aは、「ID」、「位置座標」、「特徴量」および「観測KFのID群」を含む各種情報を持っている。
ここで、「ID」は、当該特徴点情報を識別する一意の識別情報であり、「位置座標」は、推定した特徴点の実座標位置座標であり、「特徴量」は、画像特徴であり、「観測KFのID群」は、当該特徴点が映っているKFの情報であり、KF群情報551の中の該当するKF情報の「ID」が関連付けされる。なお、実座標位置座標は、初期姿勢・座標系設定部で作成した任意の実座標変換を利用して実座標化するものとして、ローカル値で保持していてもよい。
特徴点群情報(KF画像内位置情報)552bは、KF画像から抽出された画像特徴点群の情報であり、複数のKF画像から同時閲覧されて選定されて3次元位置を持つ特徴点群と、3次元位置を持たない特徴点群の二種類が存在する。3次元位置を持たないKF特徴点群は、任意の画像が該KF画像と似ているかを詳細評価するのに使ったり、将来新たなKF画像が得られた時に新しく選定されて3次元位置を持つ特徴点群になるのに備えて、保持しておく。
図8に示すように、特徴点群情報(KF画像内位置情報)552bは、「ID」、「KF ID」、「マップ点ID」、「特徴点位置」、「特徴点角度」および「縮小階層番号」を含む各種情報を持っている。
ここで、「ID」は、当該特徴点情報を識別する一意の識別情報である。「KF ID」は、当該KF特徴点を抽出したKFを特定するための情報であり、KF群情報551の中の該当するKF情報の「ID」が関連付けされる。「マップ点ID」は、特徴点群情報(3次元位置情報)552aへの参照情報であり、特徴点群情報(3次元位置情報)552aの中の該当する特徴点情報の「ID」が関連付けされる。この「マップ点ID」は、複数のKF画像から同時閲覧されて選定されて3次元位置を持つ特徴点群だけが持っており、3次元位置を持たない特徴点群は持っていない。
また、「特徴点位置」・「特徴点角度」は、たとえば、ORB(Oriented FAST and Rotated BRIEF)特徴の重心位置および方向ベクトルに関する情報である。また、「縮小階層番号」は、当該KF画像内での抽出状況に関する情報である。この「縮小階層番号」は、たとえば、画像特徴として縮小率を変えてピラミッド階層的に求めた縮小画像群を用いて算出したORB特徴点を想定している場合に、縮小画像群のどれで抽出したのかに関する情報である。これら「特徴点位置」「特徴点角度」「縮小階層番号」などは、他の画像特徴を使う場合は、その特徴に合わせた情報にしてよい。
このようにして、実座標環境マップ550が形成され、KF群情報と特徴点群情報とが関連付けされて、記憶される。なお、一般的に特徴点ベースのV−SLAMの環境マップは、画像特徴点群の画像特徴と3次元位置、該特徴点群を閲覧している画像KFの情報、また、画像KFと似た画像を検索できるようにするための画像KF内の画像特徴群を含むが、実座標環境マップ550は、従来のV−SLAMの環境マップと同じデータであってもよい。また、実座標環境マップ550は、KF群情報551に「GNSS位置」情報を保持するようにしてもよい。
(全画像位置姿勢データの内容)
図9は、全画像位置姿勢データのデータ構成の一例を示す説明図である。全画像位置姿勢データ560は、主要な画像で構成するKFとは異なり、すべての映像中の画像に対し、推定した撮影位置と姿勢を保持する。ここで、既存技術の映像内の全画像の撮影位置・姿勢に相当するものが、全画像位置姿勢データ560である。
図9に示すように、全画像位置姿勢データ560は、「ID」、「親KF ID」、「姿勢情報」、「位置情報」、「映像フレーム番号」を含む各種情報を持っている。ここで、「ID」は、当該位置姿勢データを識別する一意の識別情報である。「親KF ID」は、映像的に近く位置・姿勢を参照するKFの情報である。「姿勢情報」・「位置情報」は、親KFからの相対位置および姿勢であり、「映像フレーム番号」は、対応する映像のフレーム番号である。
位置姿勢情報は、たとえば、映像的に近いKFに対する相対位置・姿勢として保持しておき、最終的にV−SLAM結果を出力する際に、KFの位置・姿勢を反映させながら、実座標値にする。このようにすることで、逐次的にV−SLAMを処理する際に、KFの位置・姿勢が最適化処理の途中で変化することを気にせずに、全画像の位置・姿勢を最終的なKFの位置・姿勢に合わせて簡単に算出することができる。また、位置姿勢情報は、KFと同様に、実座標値でもローカル値で保持するようにしてもよい。
なお、図8および図9からもわかるように、この例では、KFの位置・姿勢に関する情報は、KFの他の情報とともに全画像位置姿勢とは別に保持するものとしている。全画像位置姿勢は映像の全画像フレームの撮影位置・姿勢であり、実座標環境マップ550のKF群情報551に含まれるKFの位置姿勢情報は、映像中の一部画像であるKF画像の撮影位置・姿勢であるため、全画像位置姿勢データ560に含めるようにしてもよい。
また、全画像位置姿勢データ560は、従来のV−SLAMと同じデータであってもよい。
また、図5の移動体位置推定システム500は、図示を省略するが、図8、図9で示した実座標環境マップ550、全画像位置姿勢データ560の各種情報の他に、従来と同様に、実座標環境マップを用いたV−SLAM計算を高速化するための様々な情報を追加で保持するようにしてもよい。たとえば、画像KF群内で3次元位置を持つマップ特徴点群を共有しているKFどうし、さらにその中でも最も特徴点群の共有数の多いKF群、などの関係を保持して、各KFどうしで互いに参照できてもよい。
より具体的には、たとえば、Covisivilityグラフであり、各KFをノードとしてエッジにマップ特徴点を共有するKF群、エッジの重みを共有するマップ特徴点数とする、グラフ構造のデータとして保持してよい。これらは、後述するローカルマッピング処理などで、KF位置・姿勢や環境マップの最適化計算対象を求めたり、ループクローズ処理などで現在の画像フレームに似た画像を探索したりするのを高速化するのに利用することができる。
(移動体位置推定システムの内容)
図10は、実施の形態にかかる移動体位置推定システム、移動体位置推定方法の内容の一例を示す説明図である。
図10において、カメラなどによる映像1001の入力データと、逆行判定部511と、逆行画像取得部512と、初期姿勢・座標系設定部513と、フレーム姿勢推定部521、キーフレーム(KF)更新部522、3Dマップ特徴点更新部531、グラフ制約生成部532、KF姿勢・特徴点マップ最適化部533、ループ検出・クロージング部541、の7つのV−SLAMをベースとする処理部と、実座標環境マップ550(KF群情報551、特徴点群情報552)、全画像位置姿勢データ560、の2つの内部保持データ、さらに、初期環境マップ1010のデータを持っていてもよい。また、このうち内部保持データの少なくともどちらかを出力データ(実座標環境マップ550’、全画像位置姿勢データ560’)として出力することができる。また、映像1001と同時に取得したGNSS情報1002の入力データを持っていてもよい。
なお、本実施の形態にかかる移動体位置推定システム500は、従来のV−SLAM技術をベースとしているため、各処理部の処理の一部で、従来のV−SLAMの処理と同じ処理をおこなうようにしてもよい。本実施の形態では、従来のV−SLAMとして特徴点ベースのV−SLAM、特にORB特徴を用いたORB−SLAMの基本的な処理例をあげ、従来のV−SLAM処理との差を示すようにして、以下に説明する。
(入力される情報の内容)
移動体位置推定システム500には、映像1001、GNSS情報1002、姿勢情報1003の各情報が入力される。なお、GNSS情報1002は入力されなくてもよい。映像1001は、逆行判定部511に入力され、GNSS情報1002は、初期姿勢・座標系設定部513に入力され、姿勢情報1003は、グラフ制約生成部532に入力される。ただし、初期姿勢・座標系設定部513に入力されるGNSS情報1002、グラフ制約生成部532に入力される姿勢情報1003については、必須の入力情報でなくてもよい。
映像1001は、車両などの移動体503に搭載した車載機502が有する撮像装置705によって撮影された映像である。車載機502などの車両の通信手段を用いたり、記録メディアを介して人手を使ったり、任意の方法で入手し、本システム500の入力とすることができる。また、映像の歪み補正などで用いるため、映像を撮影した撮像装置705の内部パラメータは既知とし、適宜歪み補正を実施するものとする。
GNSS情報1002は、映像撮影時の移動体503の位置であり、GPSなどの任意の既存の測位手段によるデータであり、映像と同等の任意の方法で入手して、本システム500の入力とすることができる。
なお、GNSS情報1002は、映像によるV−SLAMのスケールドリフトを補正するために新たに利用するものであり、できるだけ映像の全フレームで保持することが望ましいが、必ずしも全フレームで保持していなくてもよい。保持するフレームが多い程、本システムで出力する全画像位置姿勢、および、実座標環境マップの位置および姿勢精度を改善することができる。
また、後述するように、本システムの初期化で利用する少なくとも映像解析開始地点付近の2つの画像フレームは、GNSS情報を保持している必要があり、なるべく密にGNSS情報を保持しているほど、映像開始から早い段階で初期化処理が終了でき、撮影位置・姿勢推定処理を実施することができる。ただし、GNSS情報1002は保持していなくてもよい。
同様に、GNSS情報1002は、なるべく正確な位置であることが望ましく、精度が高い程、本システムの出力結果の位置および姿勢精度を改善することができる。また、GNSS情報は、GPS受信機などの位置になることが多いが、GPS受信機とカメラの相対位置関係を用いて、できるだけカメラの位置情報に変換してあることが望ましい。
また、姿勢情報1003は、任意のIMU(inertial measurement unit)などから取得する、映像を撮影した時のカメラ姿勢情報である。IMUは、具体的には、加速度センサ、ジャイロセンサなどである。たとえば、カメラを中心とし、自車前方、右方、鉛直上方、などの座標軸に対する回転角、ロール、ピッチ、ヨー角などである。GNSS情報と同様に、映像の画像すべてに対して保持してもよく、任意画像にだけ保持していてもよい。
なお、GNSS情報1002および姿勢情報1003は、上述したように別途センサ群から入手するのではなく、一度、V−SLAMで推定した各カメラ撮影位置・姿勢を、手作業などの任意の手法で補正し、補正した各カメラ撮影位置・姿勢を、再度、同じ映像のGNSS情報1002および姿勢情報1003として読み込ませるようにしてもよい。
また、後述するローカルマッピング機能により、入力されたGNSS情報1002による位置と、映像1001を解析した結果による位置の双方を適切にマージ反映させた推定ができるようにしてもよい。これにより、手修正した出力結果を入力とする再実施を通して、手修正結果に合わせて特徴点群を含めた実座標環境マップを滑らかに作成することが可能となる。ただし、このような、GNSS情報1002による位置と、映像1001を解析した結果による位置の双方を適切にマージ反映させた推定については、用いなくてもよい。
なお、最初の実施時は姿勢情報を入力しなくても位置情報とともに姿勢情報も推定出力するので、再実行では、該推定姿勢情報も位置情報とともに入力して使えるが、姿勢情報は使わずに位置情報だけを入力として使ってもよい。たとえば、手修正した位置情報と異なり、まったく姿勢情報を手修正できなかった場合などでは、2つの情報は確からしさが異なっているため、精度の低い推定姿勢情報は使わずに位置情報だけを再実施時に入力利用して、実座標環境マップを作成することができる。
また、一度出力した実座標環境マップ550’を再び入力として利用してもよい。たとえば、ある走路の最初の走行映像の撮影位置・姿勢を推定する際には、実座標環境マップが存在しないので、当該実座標環境マップの入力無しで本システムにおける処理を実行し、つぎに同じ走路を走行した二回目以降の走行映像の撮影位置・姿勢を推定する場合には、最初の走行映像の処理結果として出力した実座標環境マップ550’を入力して、あたかも当該映像の処理で作成した内部データかのように利用することができる。このとき、一回目と二回目以降の走行映像では、撮影する車両やカメラ、走行レーン内の位置などが異なっていてもよい。なお、実座標環境マップ550’を入力する場合には、GNSS情報1002の入力を省略してもよい。
なお、車載機502が、各機能部511〜513、521、522、531、532、533、541の少なくとも一つを有する場合は、映像1001やGNSS情報1002は、車載機502の内部に保持してV−SLAMを処理するようにしてもよい。
以後の本システムの説明では、特に記載がない場合には、実座標環境マップ入力がなく、一から実座標環境マップを作成する場合(GNSS情報1002の入力を必須とする場合)について説明をおこなうが、必ずしも、GNSS情報1002の入力を必須としなくてもよい。また、GNSS情報1002として、平面直角座標系の値を例として説明をおこなう。
(逆行判定部511の内容)
システムの初期化処理機能510を担当する逆行判定部511は、逆行画像取得部512の動作を決定する処理部であり、V−SLAMの処理対象の映像の状態や、逆行なしで試行したV−SLAMの結果などから、入力した映像を時間反転(時間逆行)するかの判定をおこなう。
逆行判定部511は、具体的には、たとえば、図6に示した、メモリ602に記憶されたプログラムをCPU601が実行することによって、その機能を実現することができる。また、具体的には、たとえば、図7に示した、メモリ702に記憶されたプログラムをCPU701が実行することによって、その機能を実現するようにしてもよい。
(逆行画像取得部512の内容)
システムの初期化処理機能510を担当する逆行画像取得部512は、逆行判定部511において、「時間逆行させる」と判断した場合に、以後のV−SLAM処理部で映像を時間経過とは逆方向に処理するよう、映像を逆行するように取得する。たとえば、入力した映像ファイルに対し、撮影時刻が遡るように各画像を抽出して、後続のV−SLAM処理部に渡す。
逆行画像取得部512は、具体的には、たとえば、図6に示した、メモリ602に記憶されたプログラムをCPU601が実行することによって、その機能を実現することができる。また、具体的には、たとえば、図7に示した、メモリ702に記憶されたプログラムをCPU701が実行することによって、その機能を実現するようにしてもよい。
(初期姿勢・座標系設定部513の内容)
システムの初期化処理機能510を担当する初期姿勢・座標系設定部513は、計算する座標系の決定とともに、初期化処理として以後のトラッキングなどの処理機能で必要とする内部データの作成をおこなう。具体的には、映像開始時の場所近傍にある特徴点群の3次元位置を推定するとともに、初期KF位置・姿勢の推定をおこない、以後の処理で最低限必要となる、映像開始時の場所近傍の実座標環境マップを作成する。この初期姿勢・座標系設定部の処理のうち、計算に用いる座標系の決定処理以外は、従来のV−SLAMの初期処理と同じ処理でもよい。この初期化処理が完了しないと、以後のフレーム姿勢推定を含めた処理は実行されないことも、従来のV−SLAMと同じである。
初期姿勢・座標系設定部513は、具体的には、たとえば、図6に示した、メモリ602に記憶されたプログラムをCPU601が実行することによって、その機能を実現することができる。また、具体的には、たとえば、図7に示した、メモリ702に記憶されたプログラムをCPU701が実行することによって、その機能を実現するようにしてもよい。
初期姿勢・座標系設定部513は、まず、歪み補正した映像の各画像に対し、任意の画像特徴群を取得する。つぎに、最初の2フレームで同時に映っている特徴点(各画像の特徴点のペア)を各画像特徴群から探索する。ペアの探索方法は、利用する画像特徴に依存し、既存の2画像の同特徴対の探索方法を利用してもよい。算出したペア数が十分多い場合には、特徴点群の画像変化を用いて、カメラの位置・姿勢変化と2画像に共通で映る各特徴点群の3次元位置を推定する。
すなわち、2画像に映る各特徴点ペアの位置・姿勢変化から既存の方法、たとえば、平面を想定したHomographyや、非平面を仮定した基礎行列などの幾何モデルを使った手法を用いて、2画像のカメラの位置・姿勢の変化を表す変換を推定するとともに、推定した2画像のカメラの位置・姿勢と各特徴ペアの各画像上の位置から、既存の三角測量などの手法を用いて、各特徴の3次元位置を推定する。
なお、ペア数が不足する場合には、2画像のどちらかの画像(たとえば、後時刻の画像)を他の画像(たとえば、さらにその後の時刻の画像)に変えてこの処理をおこなう。また、利用する最初の2フレームは、厳密に映像開始時点の画像でなくてもよく、同じ被写体が映っている可能性のある任意の2フレームであってもよい。たとえば、停車中映像であることがわかっているのであれば、カメラ撮影位置が変わったと思われる画像を、後時刻の画像として選ぶようにしてもよい。
また、このとき、すべての特徴点群ペアの3次元位置を算出するのではなく、他の特徴点群と比べて誤差の大きな特徴点を省いたり、画像全体でまんべんなく規定数の特徴点が得られるように、特徴点群が集中する画像部分では特徴点群を間引いたり、2カメラ位置と当該特徴点の成す角(交会角)が小さな特徴点を省いたり、というように、任意の特徴点選別をおこなってもよい。
また、初期姿勢・座標系設定部513は、従来のV−SLAMと同様にさらに最適化計算をおこなって、算出した初期値をより正確な値へと更新する処理を付加してもよい。具体的には、2画像の各画像に対し、カメラ位置と特徴点群の3次元位置とがわかっており、各画像に特徴点群がどう映り込むのかを計算することができるため、各画像への特徴点群の映り込み位置と、実際のカメラ画像での該特徴点の位置との差(再投影誤差と呼ぶ)を調べ、特徴点群の再投影誤差がなるべく少なくなるよう、特徴点やカメラ位置および姿勢を微調整する最適化補正(BA(Bundle Adjustment))をするようにしてもよい。
続いて、初期姿勢・座標系設定部513は、算出結果から初期環境マップ1010を作成する。すなわち、用いた2画像をKFとして推定した該画像の撮影位置・姿勢とともに初期環境マップ1010に登録して、同じく推定した特徴点群の情報(2画像上の位置や、3次元位置)も、初期環境マップ1010に登録する。この初期環境マップ1010は、初期化処理ということで、以後のトラッキングやローカルマッピングなどの機能部でおこなう方法とはやや異なる方法でKF位置・姿勢や特徴点群の3次元位置を推定しており、若干精度が低い。
なお、これらの2画像のカメラ位置・姿勢、および車両周辺の特徴点群の3次元位置の初期値の算出処理では、従来のV−SLAMと同様に2画像のうち片方の画像(多くは、より時間の早い画像。以後、「初期カメラの画像」と呼ぶ)のカメラ位置・姿勢(以後、「初期カメラ位置・姿勢」と呼ぶ)を原点および基準座標系としたローカル系で算出してよい。
たとえば、一般的に画像処理で用いる画像上の画素位置を示すための画素座標系は、撮影画像の画像横方向をX、画像下方向をYとすることが多い。このため、従来のV−SLAMもこれと似た基準座標系定義とするために、初期フレームのカメラ位置を原点(0,0,0)とし、自車右手方向X、自車鉛直下方向Y、自車前方方向Z、という右手系(SLAMローカル系)定義とすることが多い。本システムにおいても、このSLAMローカル系で2画像のカメラ位置・姿勢と、2画像に共通で映る特徴点群の3次元位置を算出する。
このように、初期姿勢・座標系設定部513は、従来のV−SLAMと同様に、初期環境マップ1010の作成(KF位置・姿勢の推定、および特徴点群の3次元位置の推定)処理をおこなう。
つぎに、初期姿勢・座標系設定部513は、SLAMローカル座標系で算出した環境マップのKF撮影位置・姿勢、および特徴点群の3次元位置を実座標系対応にするために、入力GNSS情報1002から2画像に対応するGNSS位置座標値を得て、SLAMローカル(座標)系と実座標系の変換行列を算出する。なお、SLAMローカル(座標)系と実座標系の変換行列を算出する際、入力GNSS情報1002から2画像に対応するGNSS位置座標値を得なくてもよい。
図11A〜11Cは、初期姿勢・座標系設定部513における変換行列算出の一例を示す説明図である。図11Aに示すように、本システム500では、実座標系として平面直角座標系を用いる。具体的には、符号1101は、(a)SLAMローカル系(右手系)を示している。具体的には、原点(初期カメラ)に対して、X方向が右手方向を示しており、Y方向が下方向を示しており、Z方向が進行方向を示している。
これに対して、符号1102は、(b)実座標系、すなわち、平面直角座標系(左手系)を示している。具体的には、平面直角座標系原点(0,0,0)に対して、X方向が「北」、すなわち、平面直角座標系X値[m]を示しており、Y方向が「東」、すなわち、平面直角座標系Y値[m]を示しており、Z方向が「上」、すなわち、標高値[m]を示している。
ただし、これは一例であって、従来のV−SLAMの右手系のSLAMローカル系とは異なる左手系の平面直角座標系を用いるのではなく、右手系の任意の座標系を用いるようにしてもよい。
図11Bは、移動ベクトルを示している。符号1103は、ローカル系の移動ベクトルAであり、符号1104は、実座標系の移動ベクトルBである。移動ベクトルとは、「任意2時刻の画像フレームの遅い時刻の方のフレーム(F2)の位置」と、「任意2時刻の画像フレームの早い時刻の方のフレーム(F1)の位置」の差分(F2−F1)を示す進行方向ベクトルである。図11Bに示すように、同じ移動ベクトルが、2つの座標系(移動ベクトルA1103と、移動ベクトルB1104)で表現されている。そこで、初期姿勢・座標系設定部513は、別の系の値に変換する変換行列(ローカル系→実座標系への変換行列M)を算出する。
図11Cは、SLAMローカル系から実座標系の値に変換するための変換行列Mの内容について示している。図11Cにおいて、SLAMローカル系から実座標系の値に変換するための変換行列Mは、座標系間のスケール相違を吸収するためのスケール変換行列M1、進行方向由来の系から緯度経度由来の系へ座標軸を変換した値にするための回転行列M2、XYZの座標軸定義を変えた値にするためのM3、右手系から左手系の値に変換するM4、原点を初期カメラ位置から平面直角座標系の原点に変更した値に変換するM5、の5つの行列の積算から成る。
スケール変換行列M1は、画像変化による任意スケールを実座標のスケールとする変換行列である。スケール変換行列M1によって、(1)SLAMローカル系1111を、(2)mスケールのSLAMローカル系1112に変換することができる。
図11Dは、画像変化由来の任意スケールを、緯度経度の座標系のスケール[m]にするスケール変換行列M1の算出の一例を示す説明図である。
図11Dにおいて、まず、SLAMローカル系の2画像カメラ位置Q1(前時刻画像F1に対応)、Q2(同後時刻画像F2)から、その差分(各位置差、Q2−Q1)である移動ベクトルA1103を算出する。成分定義はSLAMローカル系そのもの(従来のV−SLAM出力値)であってもよい。
つぎに、2画像のGNSS位置S1(前時刻画像F1に対応)、S2(同後時刻画像F2)から、実座標系(直角平面座標系)の値を使うが成分(軸)定義が異なる、特殊実座標系の移動ベクトルB1104(=S2−S1)を算出する。特殊実座標系は、(X成分=東が+の経度座標値差、Y成分=−(標高値差)、Z成分=北が+の緯度座標値差)とする。
そして、移動ベクトルA1103の大きさ=lenA、および、移動ベクトルB1104の大きさ=lenB、をそれぞれ求める。求めた大きさから、大きさ比 Rate=(lenB÷lenA)を求めて、Rate倍するスケール変換行列をスケール変換行列M1として求める。Eye(m,n)をm行n列の単位行列として表すとき、スケール変換行列M1は、
M1=Rate×Eye(3,3);となる。
図11Cに戻って、回転行列M2は、進行方向由来の座標系を緯度経度由来に変更する変換行列である。回転行列M2によって、(2)mスケールのSLAMローカル系1112を、(3)特殊実座標系1113に変換することができる。
図11Eは、回転変換行列M2の算出の一例を示す説明図である。図11Eにおいて、まず、移動ベクトルをそれぞれの長さで割り、正規化したローカル系の移動ベクトルA’=A/lenAと、正規化した実座標系の移動ベクトルB’=B/lenBを求める。
つぎに、符号1105に示すように、(a)ベクトルA’からベクトルB’、への成す角Θを、内積から求める。
Θ=acos(内積(A’,B’))
そして、符号1106に示すように、(b)ベクトルA’とベクトルB’の外積=A’×B’となる、上方向ベクトル(VectorUP)を求めて向きを考慮した角度Θ’を算出する。上方向ベクトルのY値が正の場合は、角度Θ’=−Θとし、負の場合は、角度Θ’=Θ、とする。
軸定義の変換と、座標値の変換は逆になるため、Y軸周りの(−Θ’)回転行列を、行列M2とする。
図11Cに戻って、実座標系定義変換行列M3は、X軸周りの−90度回転する変換行列である。実座標系定義変換行列M3によって、(3)特殊実座標系1113を、(4)特殊実座標系2、1114に変換することができる。
実座標系定義変換行列M4は、右手系から左手系に変換する変換行列である。XとYを互いに変換する。実座標系定義変換行列M4によって、(4)特殊実座標系2、1114を、(5)実座標系、すなわち、平面直角座標系(左手系)1115に変換することができる。ここでは、本来の平面直角座標系と原点位置が異なっている。
位置移動変換行列M5は、原点位置を移動させる変換行列である。具体的には、カメラの初期実座標位置(初期カメラ位置)を平行移動し、初期カメラ位置=平面直角座標系X[m],平面直角座標系Y[m],標高[m]とする。位置移動変換行列M5によって、(5)平面直角座標系(左手系)1115を、(6)本来の平面直角座標系(左手系)1116に変換することができる。
このようにして、SLAMローカル系1111(図11Aに示した1101)を実座標(平面直角座標系(左手系))1116(図11Aに示した1102)とすることができる。
初期姿勢・座標系設定部513は、この座標系変換行列Mを保持することで、従来のV−SLAMと同様に算出していたSLAMローカル座標系での初期環境マップを、平面直角座標系の実座標環境マップに変換することができる。この結果、画像由来で特に大きさには意味がなかったSLAMローカル系のスケールを、本システムにおいて使うことで、m単位の実座標スケールに統一することが可能になる。
なお、初期姿勢・座標系設定部513は、必要があれば、変換行列を持つだけでなく、実際に算出済の特徴点群の3次元初期位置や、2画像の撮影位置・姿勢位置を、この変換行列を用いて実座標系の値に変換してもよい。特に、頻繁に参照する特徴点群の位置は、後述するトラッキング処理機能(フレーム姿勢推定)失敗時の再初期化実施前後で統一のとれた値として使うため、実座標系の値として保持することが望ましい。実座標系の値としてあらかじめ保持しておけば、各画像上への投影位置は、該変換抜きで計算することができる。
一方で、平面直角座標系のような実座標系の値は、数値が非常に大きくなることが多いため、環境マップの特徴点群の3次元位置は従来と同じローカル座標系の値のまま保持し、加えて新たに変換行列も保持することで、必要な時だけ変換行列を用いて実座標系の値に変換してもよい。あるいは、実座標系の値であっても、適当な初期値からの差分値としてもよい。
本システム500においては、従来と同じローカル座標系で初期姿勢・座標系設定をおこなってから、実座標系に変換するための情報を作成して、以後の3次元座標値はすべて実座標変換をおこなった実座標系の値で保持するものとして、説明する。
なお、既存の実座標環境マップを入力する場合には、初期姿勢・座標系設定部の処理を飛ばし、入力した実座標環境マップを初期実座標環境マップとして、以後の処理と同様の処理を実施する。
本システム500においては、従来のV−SLAMと同様に、初期姿勢・座標系設定部513の処理を2画像(初期KF)に対して実施すると、初期化が完了されたとみなして、以後の処理を、まだ処理していない画像に対して順次実施していくことにする。したがって、以後の処理は、初期化に用いた2画像(初期KF)に対しては実施せず、それ以後の画像に実施するようにする。
なお、初期姿勢・座標系設定部513は、計算する座標系の決定とともに、初期化処理として以後のトラッキングなどの処理機能で必要とする内部データの作成をおこなうにあたり、上記の方法には限定されない、上記の方法以外の方法も用いておこなうようにしてもよい。
以後の処理である、トラッキング処理機能、マッピング処理機能、ループクローズ処理機能は、説明を簡単にするため、シーケンシャルに処理する形とする。実際には複数スレッドを用いた同時処理であってもよい。その場合には、各処理機能がそれぞれ、内部保持するKF位置・姿勢や、実座標環境マップを相互参照するので、適宜、既存の編集ロック機能などを用いて複数処理での同時編集を防ぐことができる。各処理機能は、処理対象の画像がなくなるまで、映像の各画像を順に処理していくこととする。
(フレーム姿勢推定部521の内容)
図10において、位置姿勢推定(トラッキング)処理機能520を担当するフレーム姿勢推定部521は、通常の処理に失敗した時の対応処理(後述するリローカリゼーション失敗時の処理)以外は、従来のV−SLAMと同様の処理をおこなう。すなわち、フレーム姿勢推定部521は、カメラ移動した入力新画像(歪み補正済)に対し画像特徴群を算出し、画像特徴量を比較することで同じ特徴点と思われる算出済の3D特徴点群の位置(実座標環境マップ550)を得る。
このとき、定速走行とみなし新画像カメラの初期位置・姿勢を推定し、1つ前の画像で用いた3D特徴点群を、推定した初期位置・姿勢を用いて新画像上に投影する。そして、その付近で対応する特徴点を検索することによって、同じ特徴点と思われる3D特徴点の候補を絞り込むようにしてもよい。
その後、同じ特徴点として見つかった3D特徴点群全体に対し、新画像上への再投影誤差が小さくなるように、新画像カメラの位置・姿勢を最適化する。すなわち、3D特徴点群の位置は変化させずに、カメラ位置・姿勢だけ最適化するBAをおこなう。続けて、新画像と3D特徴点群を共有する第1のKF群を探して、ついで、当該第1のKF群1と3D特徴点群を共有する第2のKF群を探し、これらの第1のKF群、第2のKF群の3D特徴点群を得る。
このとき、得た3D特徴点群に対し、新画像のカメラ位置からの距離(規定距離の範囲内)や、カメラからの閲覧方向の違い(たとえば、新画像のカメラ位置から該3D特徴点へ向けた閲覧方向ベクトルと、今迄のKF群のカメラ位置から該特徴点へ向けた閲覧方向ベクトルとの内積の大きさが規定値以上)などを用いて、任意の取捨選択をしてもよい。第1のKF群、第2のKF群から得た、より多くの3D特徴点群を使って、フレーム姿勢推定部521は、再度新画像上に投影し、再投影誤差が小さくなるような位置・姿勢最適化を実行する。
フレーム姿勢推定部521は、具体的には、たとえば、図6に示した、メモリ602に記憶されたプログラムをCPU601が実行することによって、その機能を実現することができる。また、具体的には、たとえば、図7に示した、メモリ702に記憶されたプログラムをCPU701が実行することによって、その機能を実現するようにしてもよい。
なお、フレーム姿勢推定部521で、十分な3D特徴点群が得られないなどの理由で、位置・姿勢推定に失敗した場合には、従来のV−SLAMと同様に、位置・姿勢復帰処理であるリローカリゼーション処理を実施するようにしてもよい。リローカリゼーション処理では、画像特徴的に似たKFがないか全KF群を探索し、似たKF候補群が見つかったら、それらKFの3D特徴点群と新画像の特徴点群とのマッチングをおこない、マッチング数が多いKFを最終的なKFとして選定するようにしてもよい。
リローカリゼーション処理は、つぎに、当該KFと新画像のマッチングした特徴点群どうしを使って、より少数の特徴点を用いた既知のPnP問題を解くことによって、初期位置・姿勢推定をおこなう。そして、得た新たな新画像の初期位置・姿勢から、より多くの特徴点群を使った非線形最小二乗法などの任意の最適化手法を用いて、位置・姿勢最適化を実施し、当該新画像の推定カメラ位置・姿勢とする。
ここまで、本システム500のフレーム姿勢推定部521は、従来のV−SLAMと同じ処理を実施する。一方で、本システム500のフレーム姿勢推定部521は、上述したリローカリゼーション処理も失敗した場合の処理が、従来のV−SLAMと異なる。リローカリゼーション処理も失敗した場合には、従来のV−SLAMでは、処理続行が不能であるため、そのまま処理を終了する。しかし、本システム500の場合は、処理終了をする代わりに初期姿勢・座標系設定部513に戻って、既存の実座標環境マップ550や全画像位置姿勢データ560などの内部算出データを残したまま、初期化処理を再実施することができる。
従来のV−SLAMでは、リローカリゼーション失敗は、今迄の追跡してきた画像およびKF群と対応関係がまったく取れなくなったことを意味する。上述したように、従来のV−SLAMは、算出するSLAMローカル系が初期化で用いた初期画像に関係する座標系であるため、一度対応関係が取れなくなると、以後、再度初期化処理をおこなっても、今迄の算出した環境マップとは異なる新たな初期画像に関する座標系で計算を始めるため、実質的に対応が取れなくなったところまでと、再度初期化を始めて以降とでは、算出する環境マップおよび、カメラの位置・姿勢の値の対応が取れず、実質的に別物の細切れとなってしまう。
このため、従来のV−SLAMは、リローカリゼーション失敗時には、初期化処理をおこなっても意味が無いため、初期化処理をおこなわずに処理終了としていた。しかし、本システム500では、初期化処理として初期化後の座標系およびV−SLAMの値は、すべて実座標系とすることができるので、今迄追跡してきた画像およびKF群との対応関係が取れなくなっても、実座標系の値である以上、算出する環境マップやカメラ位置・姿勢の値は整合性の取れた値となっている。
これにより、初期化の前後で算出する環境マップおよびカメラ位置・姿勢の値は、そのまま両方を混ぜて保持しても問題がないため、本システム500においては、従来のV−SLAMと異なり、リローカリゼーション失敗時には、初期姿勢・座標系設定部513による処理を再度実施する。このとき、上述したように、特に多数かつ頻繁に参照をする特徴点群の3次元位置は、SLAMローカル座標系の値と実座標系への変換行列として保持していると、初期化処理を実行するたびに、双方の値が変わってしまう(積算した実座標系の値は同じ)可能性があって煩雑なため、できるだけ実座標系の値にして保持しておくことが望ましい。
(KF更新部522の内容)
図10において、位置姿勢推定(トラッキング)処理機能520を担当するKF(キーフレーム)更新部522は、従来のV−SLAMのように画像特徴的に新画像をKFにするか否かを判定する。
従来のV−SLAMの画像特徴的なKFにするか否かの判定は、たとえば、最後のKFからの経過時間や経過フレーム数が規定値を超えた場合や、フレーム姿勢推定部で取得したKF群1のうち、最も新画像と3D特徴点群を共有するKFとの共有3D特徴点群数が、規定数以下だった場合、などである。その後、新追加するKFに対し、KF更新部は、KFとされた新画像を実座標環境マップのKF群に追加する。上述したように、特徴点を共有するKF群どうしで別途グラフ構造(KF群1)を保持している場合には、適宜、新追加するKF(新画像)についても、該グラフ構造を更新する。
また、本システム500のKF更新部522は、さらにGNSS位置を保持する画像か否かも用いて、新たにKF画像を選定するようにしてもよい。すなわち、すべての画像にGNSS位置が無く、GNSS位置が無い画像が規定数以上続いた場合において、GNSS位置がある画像が新画像として入力された場合に、画像特徴的な従来の判定の結果に関わらず、新画像を新しいKFとして採用する。
KF更新部522は、具体的には、たとえば、図6に示した、メモリ602に記憶されたプログラムをCPU601が実行することによって、その機能を実現することができる。また、具体的には、たとえば、図7に示した、メモリ702に記憶されたプログラムをCPU701が実行することによって、その機能を実現するようにしてもよい。
図12は、KF更新部の処理の手順の一例を示すフローチャートである。なお、KF更新部522の処理の手順は、このフローチャートの手順には限られない。図12のフローチャートにおいて、KF更新部522において、現在の画像が、現在利用中のKFから規定フレーム数以上離れているか否かについて判断する(ステップS1201)。ここで、規定フレーム数以上離れていない場合(ステップS1201:No)は、何もせずに、一連の処理を終了する。
一方、規定フレーム数以上離れている場合(ステップS1201:Yes)は、つぎに、現在の画像が、現在利用中のKFとの共通特徴点が規定数以下か否かを判断する(ステップS1202)。ここで、共通特徴点が規定数以下でない場合(ステップS1202:No)は、ステップS1204へ移行する。一方、共通特徴点が規定数以下である場合(ステップS1202:Yes)は、つぎに、現在の画像フレームが、現在利用中のKFと最も共通特徴点が多い他のKFに対し、共通特徴点が規定数以下か否かを判断する(ステップS1203)。
ステップS1203において、共通特徴点が規定数以下でない場合(ステップS1203:No)は、ステップS1204へ移行する。一方、共通特徴点が規定数以下である場合(ステップS1203:Yes)は、ステップS1206へ移行する。つぎに、ステップS1204において、現在の画像が、GNSSの位置情報を保持しているか否かを判断するようにしてもよい(ステップS1204)。ここで、GNSSの位置情報を保持していない場合(ステップS1204:No)は、一連の処理を終了する。一方、GNSSの位置情報を保持している場合(ステップS1204:Yes)は、ステップS1205へ移行する。
ステップS1205において、現在のKFは、GNSS位置情報を保持する最も新しいKFから規定KF数以上離れているか否かを判断するようにしてもよい(ステップS1205)。ここで、最も新しいKFから規定KF数以上離れている場合(ステップS1205:Yes)は、ステップS1206へ移行する。一方、離れていない場合(ステップS1205:No)は、一連の処理を終了する。
ステップS1206において、現在の画像を新KFとする(ステップS1206)。そして、新KFを実座標環境マップのKF群に追加する(ステップS1207)。さらに、KF群の特徴点共有関係のグラフ構造に新KFを追加し、グラフを更新する(ステップS1208)。これにより、一連の処理を終了する。
なお、KFの追加判断だけを、トラッキング処理機能520を担当する処理部いずれか(たとえばKF更新部522)でおこない、実際のKF追加処理を独立させ、ローカルマッピング処理機能530を担当する処理部531〜533のいずれかで実施するようにしてもよい。
また、本実施の形態においては、GNSS位置情報を取得していなくてもよく、その場合は、ステップS1204およびS1205の各処理は実行せずに、省略するようにしてもよい。
本システム500においては、KF追加処理を、KF更新部522で実施するものとして説明した。しかし、トラッキング処理機能520は、全画像フレームに対する処理であり、ローカルマッピング処理機能530は、KF追加タイミングで実施するKFに関する処理として考える方を優先させるなら、KF追加処理を実施するか否かの判断のみをトラッキング処理機能520を担当する処理部521、522のいずれかで実施し、実際のKF追加処理は、ローカルマッピング処理機能530を担当する処理部531〜533のいずれかで実施した方がよい。従来のV−SLAMにおいても、KF追加処理自体は、ローカルマッピング処理機能530を担当する処理部531〜533のいずれかで実施することが多い。
(3Dマップ特徴点更新部531の内容)
環境マップ作成(ローカルマッピング)処理機能530を担当する3Dマップ特徴点更新部531は、従来のV−SLAMと同様の、追加したKFを使って最近追加した3Dマップ点の除去判断を実施するとともに、新たな3Dマップ点の追加処理を実行する。
3Dマップ特徴点更新部531は、具体的には、たとえば、図6に示した、メモリ602に記憶されたプログラムをCPU601が実行することによって、その機能を実現することができる。また、具体的には、たとえば、図7に示した、メモリ702に記憶されたプログラムをCPU701が実行することによって、その機能を実現するようにしてもよい。
3Dマップ点の除去判断処理として、3Dマップ特徴点更新部531は、最近追加した3Dマップ点群が、新追加KFを含めたKF群全体で規定数以上のKFから閲覧できているか否かなどから、3Dマップ点が利用されているか否かを判定する。そして、3Dマップ点が利用されていないと判断された場合には、3Dマップ点を除去する。
なお、3Dマップ特徴点更新部531では、除去判断だけおこない、実際の除去処理は、続くKF姿勢・特徴点マップ最適化部533のBAなどの3Dマップ点の利用有無を別途詳細に調査利用する処理などと同時に実施してもよい。
新3Dマップ追加処理として、3Dマップ特徴点更新部531は、追加した新KFで3D特徴点群と対応付いていない特徴点を探し、KF更新部522で更新した新KFと特徴点を共有する第1のKF群の同じく対応付いていない特徴点と、画像特徴量から同じ特徴点を探す。このとき、さらに当該KFでのエピポーラ制約や再投影誤差などの任意の方法で、同じ特徴点か否かを絞り込んでもよい。同じ特徴点が見つかった場合には、2つのKFのカメラ位置と、当該KF上の画像に映る同じ特徴点の画像内位置を用いて、既知の三角測量の手法を使って、当該特徴点の3次元位置を求め、新たな3D特徴点として、実座標環境マップに追加する。
(グラフ制約生成部532の内容)
環境マップ作成(ローカルマッピング)処理機能530を担当するグラフ制約生成部532は、続くKF姿勢・特徴点マップ最適化部533で、従来のように現キーフレームと周辺の特徴点群の3次元位置をBAで求める処理(ローカルBA)をおこなう前に、新たに、現キーフレームの位置と周辺の特徴点群の3次元位置を入力GNSS情報に合わせて姿勢グラフを用いて事前に補正する処理を実施するため、その準備をおこなう処理部である。
グラフ制約生成部532は、具体的には、たとえば、図6に示した、メモリ602に記憶されたプログラムをCPU601が実行することによって、その機能を実現することができる。また、具体的には、たとえば、図7に示した、メモリ702に記憶されたプログラムをCPU701が実行することによって、その機能を実現するようにしてもよい。
姿勢グラフという概念、および、グラフ構造を用いた最適化計算自体は、一般的なグラフ理論(姿勢グラフ構造)に基づく最適化計算と同じでもよく、既存のg2o(General Graph Optimization)などの最適化ライブラリを用いてもよい。
グラフ制約生成部532は、この一般的なグラフ構造を活用し、KF位置・姿勢のみの最適化(実座標環境マップのうちKF情報群のおおまかな最適化)と、当該最適化後のKF群と周辺の特徴点群の双方を使った位置・姿勢の最適化(実座標環境マップ全体の詳細最適化)、という2段階の最適化向けに、それぞれ最適化対象(ノード)と拘束条件(エッジ)の異なる2つの姿勢グラフを作成する。
(KF姿勢・特徴点マップ最適化部533の内容)
環境マップ作成(ローカルマッピング)処理機能530を担当するKF姿勢・特徴点マップ最適化部533は、新たに、グラフ制約生成部532において生成した新しい2つの姿勢グラフを用いて、一般的なグラフ最適化計算をおこなう。
KF姿勢・特徴点マップ最適化部533は、具体的には、たとえば、図6に示した、メモリ602に記憶されたプログラムをCPU601が実行することによって、その機能を実現することができる。また、具体的には、たとえば、図7に示した、メモリ702に記憶されたプログラムをCPU701が実行することによって、その機能を実現するようにしてもよい。
(ループ検出・クロージング部541の内容)
ループクローズ処理機能540を担当するループ検出・クロージング部541は、従来のV−SLAMと同様に、新KFと保持するKF画像群との画像全体の画像特徴量を比較して類似度を調べて、映像取得時の走行経路で同じ場所を複数回走行していないか(ループが発生していないか)を確認する。そして、類似度が高く同じ場所を走行していると思われた場合には、関係する実座標環境マップ550のKF群情報551の「ループKF ID」に、該当する過去に同場所走行した時のKF群を設定して、互いの参照を可能としておく。
また、ループ検出・クロージング部541は、ループ発生時の新KFに対し、新KF近傍のKF群を用いたローカルBA、または、全KF群を用いたグローバルBAのいずれかを実施して、同場所走行時のKFの位置関係を調整する。新KF近傍のKF群は、マップ特徴点の共有状態などから選定してもよく、過去に同場所走行した時のKF群との共有状態を利用してもよい。
ループ検出・クロージング部541は、具体的には、たとえば、図6に示した、メモリ602に記憶されたプログラムをCPU601が実行することによって、その機能を実現することができる。また、具体的には、たとえば、図7に示した、メモリ702に記憶されたプログラムをCPU701が実行することによって、その機能を実現するようにしてもよい。
なお、本システム500においては、上述した各処理を通して、入力GNSS情報1002を用いてスケールドリフトが起きないように、実座標環境マップ550を構築済である。したがって、スケールドリフト対策が主体のループ検出・クロージング部541における処理は省略してもよい。
以上説明したように、本実施の形態によれば、サーバ(情報処理装置/移動体位置推定装置)501が、撮影された時系列画像(映像)1001のうちの任意の画像について、当該任意の画像の特徴から、当該任意の画像の撮影位置・姿勢推定および環境地図生成の情報処理(S216〜S222)をおこなうにあたり、逆行画像取得部512が、撮影画像を時刻に対して逆行させた逆行画像を取得し(S212)、当該逆行画像を用いて前記情報処理をおこなう。
また、サーバ(情報処理装置/移動体位置推定装置)501が、撮影された時系列画像(1001)のうちの任意の画像について、当該任意の画像の特徴から、当該任意の画像の撮影位置・姿勢推定および環境地図生成の情報処理(S216〜S222)をおこなうにあたり、逆行画像取得部512が、相互に区別可能な特徴量を持つ画像特徴点が映る画像群のうち、最も遅い時刻近傍で撮影した画像を用いて(S215)前記情報処理をおこなう。
これにより、用いる画像が、従来における「最も遠方に被写体の画像特徴点が映った時(遠方に見え始めた時)」だったものから、「最も近傍に被写体の画像特徴点が映った時(最後に見えた時)」に変更することができ、それによって、映像内変化から推定する特徴点の3次元位置推定の精度が向上し、高精度な周辺環境マップ(周辺特徴点群の3次元位置群)の作成が可能となる。
また、本実施の形態によれば、サーバ(情報処理装置/移動体位置推定装置)501の逆行判定部511が、逆行画像を取得するか否かを判定する。具体的には、たとえば、時系列画像の撮影方向に基づいて(S201)、逆行画像を取得するか否かを判定し、移動体の前方を撮影している場合に、逆行画像を取得すると判定する。また、時系列画像のフレームレートに基づいて(S202、S205)、逆行画像を取得するか否かを判定し、フレームレートが所定のしきい値以上の場合は、逆行画像を取得すると判定する。また、逆行未実施時の撮影位置姿勢推定結果の状態または精度に基づいて(S204、S207)、あるいは、環境地図の精度に基づいて(S204、S207)、逆行画像を取得するか否かを判定する。したがって、いずれの場合においても、逆行画像を用いることが有効な場合のみ、当該逆行画像を利用することができる。
本実施の形態にかかる移動体位置推定システムは、具体的には、たとえば、自動運転向け高精度地図更新システム、屋外撮影画像の地図貼り付けアプリケーション、屋外画像・映像内被写体の実座標位置の自動推定アプリケーション、任意道路シーンのCG再現システムなどの幅広いシステムやアプリケーションに応用することができる。
なお、本実施の形態で説明した移動体位置推定方法は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することにより実現することができる。プログラム配信プログラムは、ハードディスク、フレキシブルディスク、CD(Compact Disc)−ROM、MO(Magneto−Optical Disk)、DVD(Digital Versatile Disk)、USB(Universal Serial Bus)メモリなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、移動体位置推定プログラムは、インターネットなどのネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)撮影された時系列画像のうちの任意の画像について、当該任意の画像の特徴から、当該任意の画像の撮影位置・姿勢推定および環境地図生成の情報処理をおこなう移動体位置推定システムであって、
前記時系列画像を時刻に対して逆行させた逆行画像を取得し、当該逆行画像を用いて前記情報処理をおこなう、
情報処理装置を有することを特徴とする移動体位置推定システム。
(付記2)前記情報処理装置は、
前記逆行画像を用いて、
相互に区別可能な特徴量を持つ画像特徴点を複数抽出する情報処理、
前記時系列画像の系列中の複数の画像相互間で、前記特徴量が類似する前記画像特徴点どうしを対応付ける情報処理、および、
対応付けられた各特徴点の各前記画像上での2次元位置を用いて、前記撮影位置を推定する情報処理、
の少なくともいずれか一つをおこなうことを特徴とする付記1に記載の移動体位置推定システム。
(付記3)前記情報処理装置は、前記逆行画像を取得するか否かを判定することを特徴とする付記1または2に記載の移動体位置推定システム。
(付記4)前記情報処理装置は、前記時系列画像の撮影方向に基づいて、前記逆行画像を取得するか否かを判定することを特徴とする付記3に記載の移動体位置推定システム。
(付記5)前記情報処理装置は、前記時系列画像の撮影方向に基づいて、移動体の前方を撮影している場合は、前記逆行画像を取得すると判定することを特徴とする付記4に記載の移動体位置推定システム。
(付記6)前記情報処理装置は、前記時系列画像のフレームレートに基づいて、前記逆行画像を取得するか否かを判定することを特徴とする付記3〜5のいずれか一つに記載の移動体位置推定システム。
(付記7)前記情報処理装置は、前記時系列画像のフレームレートに基づいて、前記フレームレートが所定のしきい値以上の場合は、前記逆行画像を取得すると判定することを特徴とする付記6に記載の移動体位置推定システム。
(付記8)前記情報処理装置は、逆行未実施時の撮影位置姿勢推定結果の状態または精度に基づいて、前記逆行画像を取得するか否かを判定することを特徴とする付記3〜7のいずれか一つに記載の移動体位置推定システム。
(付記9)前記情報処理装置は、環境地図の精度に基づいて、前記逆行画像を取得するか否かを判定することを特徴とする付記3〜8のいずれか一つに記載の移動体位置推定システム。
(付記10)撮影された時系列画像のうちの任意の画像について、当該任意の画像の特徴から、当該任意の画像の撮影位置・姿勢推定および環境地図生成の情報処理をおこなう移動体位置推定システムであって、
相互に区別可能な特徴量を持つ画像特徴点が映る画像群のうち、最も遅い時刻近傍で撮影した画像を用いて前記情報処理をおこなうことを特徴とする移動体位置推定システム。
(付記11)情報処理装置が、
撮影された時系列画像のうちの任意の画像について、当該任意の画像の特徴から、当該任意の画像の撮影位置・姿勢推定および環境地図生成の情報処理をおこなうにあたり、
前記時系列画像を時刻に対して逆行させた逆行画像を取得し、当該逆行画像を用いて前記情報処理をおこなう、
ことを特徴とする移動体位置推定方法。
(付記12)情報処理装置が、
撮影された時系列画像のうちの任意の画像について、当該任意の画像の特徴から、当該任意の画像の撮影位置・姿勢推定および環境地図生成の情報処理をおこなうにあたり、
相互に区別可能な特徴量を持つ画像特徴点が映る画像群のうち、最も遅い時刻近傍で撮影した画像を用いて前記情報処理をおこなう、
ことを特徴とする移動体位置推定方法。