(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-16
(45)【発行日】2024-07-24
(54)【発明の名称】情報処理装置、位置推定方法、及びプログラム
(51)【国際特許分類】
G06T 7/70 20170101AFI20240717BHJP
【FI】
G06T7/70 Z
(21)【出願番号】P 2023501721
(86)(22)【出願日】2021-02-24
(86)【国際出願番号】 JP2021006881
(87)【国際公開番号】W WO2022180692
(87)【国際公開日】2022-09-01
【審査請求日】2023-08-02
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100103894
【氏名又は名称】家入 健
(72)【発明者】
【氏名】城島 貴弘
【審査官】松浦 功
(56)【参考文献】
【文献】国際公開第2019/130945(WO,A1)
【文献】国際公開第2014/102995(WO,A1)
【文献】濱田修平 外3名,環境カメラを用いた複合現実感のためのモバイルカメラの位置・姿勢推定,情報処理学会研究報告,社団法人情報処理学会,2008年11月20日,Vol.2008,No.115,pp.109-116
(58)【調査した分野】(Int.Cl.,DB名)
G06T 7/00 - 7/90
G01C 21/00
G05D 1/00
G06T 1/00
(57)【特許請求の範囲】
【請求項1】
第1の画像を撮影した撮影装置の推定位置を起点として前記撮影装置の正面方向および背面方向の少なくとも一方に所定数の仮想的な点を配置し、前記仮想的な点を、3次元情報である環境地図を生成するために用いられた複数の画像のそれぞれに投影する投影部と、
前記仮想的な点の投影結果に基づいて前記複数の画像の中から第2の画像を抽出する画像抽出部と、
前記撮影装置の位置及び姿勢を推定する対象となる対象画像に含まれる特徴点と、前記第2の画像に含まれる特徴点とを用いて、前記対象画像を撮影した前記撮影装置の位置及び姿勢を推定する推定部と、を備える情報処理装置。
【請求項2】
前記第1の画像は、
前記対象画像が入力された時点から所定期間前に前記撮影装置の位置及び姿勢が推定された画像である、請求項1に記載の情報処理装置。
【請求項3】
前記投影部は、
撮影装置の位置及び姿勢が推定された第3の画像と、前記第3の画像を撮影した前記撮影装置の位置及び姿勢を起点として、前記撮影装置の速度及び角速度に基づいて前記撮影装置の位置及び姿勢が推定される前記対象画像を、前記第1の画像として用いる、請求項1に記載の情報処理装置。
【請求項4】
前記投影部は、
前記第1の画像を撮影した撮影装置の位置を起点として、前記撮影装置の撮影方向および撮影方向と逆方向の少なくとも一方に向かう直線上に、前記仮想的な点を配置する、請求項1乃至3のいずれか1項に記載の情報処理装置。
【請求項5】
前記画像抽出部は、
前記複数の画像のそれぞれの画像に投影された前記仮想的な点の数を用いて、抽出する前記第2の画像を選択する、請求項1乃至4のいずれか1項に記載の情報処理装置。
【請求項6】
前記画像抽出部は、
前記複数の画像のそれぞれの画像を撮影した前記撮影装置の位置と、前記第1の画像を撮影した前記撮影装置の位置との間の距離と、前記複数の画像のそれぞれの画像を撮影した前記撮影装置の向いている方向と、前記第1の画像を撮影した前記撮影装置の向いている方向との角度の差を用いて、抽出する前記第2の画像を選択する、請求項5に記載の情報処理装置。
【請求項7】
前記環境地図は、SfM(Structure from Motion)を実行することによって生成される、請求項1乃至6のいずれか1項に記載の情報処理装置。
【請求項8】
前記環境地図を生成するために用いられた前記複数の画像と、前記撮影装置の位置及び姿勢が推定された複数の画像の中から所定の基準を満たす画像とをキーフレームとして管理する管理部をさらに備え、
前記推定部は、
前記対象画像の直前に撮影された画像、前記キーフレームとして最後に追加された画像、及び前記第2の画像のそれぞれに含まれる既知特徴点と、前記第2の画像に含まれる新規特徴点とのマッチングを行う、請求項1乃至7のいずれか1項に記載の情報処理装置。
【請求項9】
第1の画像を撮影した撮影装置の推定位置を起点として前記撮影装置の正面方向および背面方向の少なくとも一方に所定数の仮想的な点を配置し、前記仮想的な点を、3次元情報である環境地図を生成するために用いられた複数の画像のそれぞれに投影し、
前記仮想的な点の投影結果に基づいて前記複数の画像の中から第2の画像を抽出し、
前記撮影装置の位置及び姿勢を推定する対象となる対象画像に含まれる特徴点と、前記第2の画像に含まれる特徴点とを用いて、前記対象画像を撮影した前記撮影装置の位置及び姿勢を推定する、位置推定方法。
【請求項10】
第1の画像を撮影した撮影装置の推定位置を起点として前記撮影装置の正面方向および背面方向の少なくとも一方に所定数の仮想的な点を配置し、前記仮想的な点を、3次元情報である環境地図を生成するために用いられた複数の画像のそれぞれに投影し、
前記仮想的な点の投影結果に基づいて前記複数の画像の中から第2の画像を抽出し、
前記撮影装置の位置及び姿勢を推定する対象となる対象画像に含まれる特徴点と、前記第2の画像に含まれる特徴点とを用いて、前記対象画像を撮影した前記撮影装置の位置及び姿勢を推定することをコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、情報処理装置、位置推定方法、プログラム、およびそのプログラムが格納された非一時的なコンピュータ可読媒体に関する。
【背景技術】
【0002】
近年、ロボットが自律的に移動することを前提としたサービスが普及している。ロボットが自律的に移動するには、ロボットが、周囲の環境を認識し、自己の位置を高精度に推定することが必要となる。そこで、ロボットが撮影した映像から、周囲の環境地図を作成することと、作成した環境地図を参照して自己位置を推定することとを同時に実行するVSLAM(Visual Simultaneous Localization and Mapping)が検討されている。一般的なVSLAMでは、複数の映像に撮影された同一地点を、それら映像を構成する複数の画像(静止画)において特徴点として認識し、その特徴点の画像間の差異から、撮影したカメラの位置を推定する。さらに、VSLAMでは、カメラの位置をロボットの位置として認識するということが行われる。具体的には、複数の画像に含まれる特徴点の3次元位置を推定し、推定された3次元位置を画像に投影することによって得られる2次元位置と、画像に含まれる特徴点の位置の差異とを用いて、撮影したカメラの位置が推定される。このようなVSLAMでは、即時的な処理が必要とされる。
【0003】
一般的に、VSLAMを実行する場合、カメラの位置を推定する画像と、その画像の直前に撮影された画像とに含まれる特徴点をマッチングさせて、カメラの位置が推定される。ここで、リアルタイムに推定された特徴点の3次元位置に誤差が生じた場合、誤差が生じた3次元位置を用いて推定されるカメラの位置は不正確となる。
【0004】
特許文献1には、緯度経度情報を用いてサーバに格納されているジオタグ画像抽出し、複数のジオタグ画像における特徴点の画像間の差異を用いて、カメラ等の自己位置を推定する処理が開示されている。
【先行技術文献】
【特許文献】
【0005】
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかし、特許文献1に開示される自己位置推定処理においては、緯度経度情報が不明な場合にはジオタグ画像を抽出することができず、自己位置推定処理を行うことができない。そのため、特許文献1においては、緯度経度情報が不明な場合には、自己位置の精度を向上させることができないという問題がある。
【0007】
本開示の目的の1つは、自己位置を高精度に推定することができる情報処理装置、位置推定方法、プログラム、およびそのプログラムが格納された非一時的なコンピュータ可読媒体を提供することにある。
【課題を解決するための手段】
【0008】
本開示の第1の態様にかかる情報処理装置は、第1の画像を撮影した撮影装置の推定位置を起点として前記撮影装置の正面方向および背面方向の少なくとも一方に所定数の仮想的な点を配置し、前記仮想的な点を、3次元情報である環境地図を生成するために用いられた複数の画像のそれぞれに投影する投影部と、前記仮想的な点の投影結果に基づいて前記複数の画像の中から第2の画像を抽出する画像抽出部と、前記撮影装置の位置及び姿勢を推定する対象となる対象画像に含まれる特徴点と、前記第2の画像に含まれる特徴点とを用いて、前記対象画像を撮影した前記撮影装置の位置及び姿勢を推定する推定部と、を備える。
【0009】
本開示の第2の態様にかかる位置推定方法は、第1の画像を撮影した撮影装置の推定位置を起点として前記撮影装置の正面方向および背面方向の少なくとも一方に所定数の仮想的な点を配置し、前記仮想的な点を、3次元情報である環境地図を生成するために用いられた複数の画像のそれぞれに投影し、前記仮想的な点の投影結果に基づいて前記複数の画像の中から第2の画像を抽出し、前記撮影装置の位置及び姿勢を推定する対象となる対象画像に含まれる特徴点と、前記第2の画像に含まれる特徴点とを用いて、前記対象画像を撮影した前記撮影装置の位置及び姿勢を推定する。
【0010】
本開示の第3の態様にかかるプログラム或いはそのプログラムが格納された記録媒体は、第1の画像を撮影した撮影装置の推定位置を起点として前記撮影装置の正面方向および背面方向の少なくとも一方に所定数の仮想的な点を配置し、前記仮想的な点を、3次元情報である環境地図を生成するために用いられた複数の画像のそれぞれに投影し、前記仮想的な点の投影結果に基づいて前記複数の画像の中から第2の画像を抽出し、前記撮影装置の位置及び姿勢を推定する対象となる対象画像に含まれる特徴点と、前記第2の画像に含まれる特徴点とを用いて、前記対象画像を撮影した前記撮影装置の位置及び姿勢を推定することをコンピュータに実行させる。
【発明の効果】
【0011】
本開示により、自己位置を高精度に推定することができる情報処理装置、位置推定方法、プログラム、およびそのプログラムが格納された非一時的なコンピュータ可読媒体を提供することができる。
【図面の簡単な説明】
【0012】
【
図1】実施の形態1にかかる情報処理装置の構成図である。
【
図2】実施の形態2にかかる情報処理装置の構成図である。
【
図3】実施の形態2にかかるキーフレームリストを示すである。
【
図4】実施の形態2にかかるランドマークリストを示すである。
【
図5】実施の形態2にかかる仮想点の投影処理を説明する図である。
【
図6】実施の形態2にかかる撮影装置の位置推定処理を説明する図である。
【
図7】実施の形態2にかかる撮影装置の位置推定処理の流れを示す図である。
【
図8】それぞれの実施の形態にかかる情報処理装置の構成図である。
【発明を実施するための形態】
【0013】
(実施の形態1)
以下、図面を参照して本発明の実施の形態について説明する。
図1を用いて情報処理装置10の構成例について説明する。情報処理装置10は、プロセッサがメモリに格納されたプログラムを実施することによって動作するコンピュータ装置であってもよい。
【0014】
情報処理装置10は、投影部11、画像抽出部12、及び推定部13を有している。投影部11、画像抽出部12、及び推定部13は、プロセッサがメモリに格納されたプログラムを実施することによって処理が実施されるソフトウェアもしくはモジュールであってもよい。または、投影部11、画像抽出部12、及び推定部13は、回路もしくはチップ等のハードウェアであってもよい。
【0015】
投影部11は、第1の画像を撮影した撮影装置の推定位置を起点として撮影装置の正面方向、および背面方向の少なくとも一方に所定数の仮想的な点を配置し、仮想的な点を、3次元情報である環境地図を生成するために用いられた複数の画像のそれぞれに投影する。
【0016】
撮影装置は、例えばカメラであってもよく、カメラ機能を有する装置であってもよい。カメラ機能を有する装置は、例えば、スマートフォン等のモバイル端末であってもよい。画像は、例えば、静止画であってもよい。もしくは、画像は、動画を構成するフレーム画像であってもよい。また複数の画像は、動画を構成する複数のフレーム画像などの、複数の静止画を表すデータセット、もしくは、データレコードであってもよい。もしくは、複数の画像は、動画を構成する複数のフレーム画像から抽出されたフレーム画像であってもよい。
【0017】
第1の画像を撮影した撮影装置の推定位置は、例えば、初期値として予め与えられても良いし、撮影装置で連続して撮影された画像の一番最近位置が推定された画像の位置、もしくは連続して撮影された画像の位置の履歴から推測される位置を与えてもよい。さらには、画像のパターンマッチングに基づく当該画像と類似の位置が分かっている画像から推測される位置を与えても良い。
【0018】
撮影装置の正面方向とは、例えば、撮影装置の撮影方向であってもよい。撮影装置の撮影方向は、例えば、撮影装置のレンズが向いている方向であってもよい。また、撮影装置の正面方向とは、撮影装置の推定位置を起点として撮影装置の画角に含まれる空間へ向かう方向であってもよい。また、背面方向とは、正面方向とは逆の方向であってもよい。撮影装置の正面方向、および背面方向とは、換言すれば、当該撮影装置の画角中心を通り該撮影装置の正面方向(前方向)および背面方向(後ろ方向)に沿って延びる仮想的な直線の向きとも言える。仮想的な点は、3次元空間上に仮想的に配置された点である。仮想的な点の位置は、3次元座標を用いて示されてもよい。3次元座標は、例えば、ワールド座標系を用いて示されてもよい。
【0019】
3次元情報である環境地図は、撮影装置の周辺の環境を3次元情報を用いて示す地図である。3次元情報は、3D情報、3次元座標等と言い換えられてもよい。環境地図は、撮影装置の周辺の環境を示す地図情報を含むとともに、撮影装置の位置及び姿勢に関する情報も含む。撮影装置の姿勢は、例えば、撮影装置の傾きに関する情報であってもよい。環境地図は、複数の画像が撮影された撮影位置の特定と画像上に記録された特徴点の3次元位置を復元することによって生成される。つまり、環境地図は、撮影装置を用いて撮影された画像内の特徴点の3次元位置もしくは3次元座標の情報を含む。例えば、環境地図は、複数の画像を用いてSfM(Structure from Motion)を実行することによって生成されてもよい。SfMは、一連の既に獲得された2次元画像(もしくはフレーム)の全ての特徴点を算出し、時間的に前後する複数の画像から、マッチングする特徴点を推定する。さらに、SfMは、各特徴点が現れたフレームにおける2次元平面上の位置の差異に基づいて各フレームを撮影したカメラの3次元位置もしくは姿勢を精度高く推定する。
【0020】
仮想的な点を画像に投影するとは、仮想的な点の3次元座標を、画像を撮影した撮影装置が有する2次元座標へ変換することであってもよい。撮影装置が有する2次元座標は、例えば、カメラ座標と称されてもよい。
【0021】
画像抽出部12は、仮想的な点の投影結果に基づいて、環境地図を生成するために用いられた複数の画像の中から第2の画像を抽出する。仮想的な点の投影結果とは、例えば、画像内に投影された仮想的な点の数に関する情報であってもよい。第2の画像は、環境地図を生成するために用いられた画像である。画像抽出部12は、複数の画像の中から、仮想的な点の投影結果が所定の基準を満たす画像を第2の画像として抽出してもよい。
【0022】
推定部13は、撮影装置の位置及び姿勢を推定する対象となる対象画像に含まれる特徴点と、第2の画像に含まれる特徴点とを用いて、対象画像を撮影した撮影装置の位置及び姿勢を推定する。第2の画像及び対象画像に含まれる特徴点は、例えば、SIFT、SURF、ORB、AKAZE等を用いて検出されてもよい。第2の画像及び対象画像に含まれる特徴点は、カメラ座標である2次元座標を用いて示されてもよい。
【0023】
以上説明したように、情報処理装置10は、環境地図を生成するために用いられた画像を用いて、対象画像を撮影した撮影装置の位置及び姿勢を推定することができる。環境地図は、SfM等を実行することによって、高精度に復元されたそれぞれの画像の特徴点の3次元位置を用いて生成される。そのため、環境地図を生成するために用いられた画像を用いて、対象画像を撮影した撮影装置の位置及び姿勢を推定した場合、特徴点の3次元位置に誤差が生じている画像を用いた場合と比較して、撮影装置の位置及び姿勢の推定精度を向上させることができる。
【0024】
さらに、情報処理装置10の画像抽出部12は、仮想的な点の投影結果に基づいて複数の画像の中から第2の画像を抽出する。例えば、画像内に投影された仮想的な点の数が多い第2の画像は、対象画像に含まれるエリアと重複するエリアを撮影している可能性が高い。このように重複するエリアを含む第2の画像を用いることによって、画像間において対応する特徴点の数を多くすることができる。その結果、対象画像を撮影した撮影装置の位置及び姿勢の推定精度を向上させることができる。
【0025】
(実施の形態2)
続いて、
図2を用いて実施の形態2にかかる情報処理装置20の構成例について説明する。情報処理装置20は、
図1の情報処理装置10に、環境地図生成部21、画像管理部22、特徴点検出部23、及び3D位置特定部24が追加された構成である。環境地図生成部21等の情報処理装置20の構成要素は、プロセッサがメモリに格納されたプログラムを実施することによって処理が実行されるソフトウェアもしくはモジュールであってもよい。または、情報処理装置20の構成要素は、回路もしくはチップ等のハードウェアであってもよい。
【0026】
情報処理装置20は、撮影装置において撮影された複数の画像を用いて、それぞれの画像を撮影した撮影装置の位置及び姿勢をリアルタイムに推定する。例えば、情報処理装置20は、VSLAMを実行することによって、それぞれの画像を撮影した撮影装置の位置及び姿勢をリアルタイムに推定する。例えば、情報処理装置20は、自律的に移動するロボットの位置及び姿勢を補正する際に用いられる。例えば、移動中のロボットにおいてリアルタイムに撮影された画像と、SfMを利用した3次元マップの生成に用いられた画像のうちリアルタイムに撮影された画像と類似する環境画像とが比較される。リアルタイムに撮影された画像と、3次元マップの生成に用いられた画像との比較は、それぞれの画像に含まれる特徴点を用いて実行される。ロボットの位置及び姿勢は、比較結果に基づいて、推定及び補正される。ここで、ロボットの位置及び姿勢の推定及び補正は、VSLAMによって実行される。また、本開示において、ロボットは、移動することができれば装置を構成する形態に限定されず、例えば、人や動物を模した形態のロボット、車輪を利用して移動する形態の搬送車両(例えばAutomated Guided Vehicle)などを広く含むこととする。
【0027】
環境地図生成部21は、撮影装置において撮影された複数の画像を用いてSfMを実行することによって環境地図を生成する。環境地図生成部21は、情報処理装置20がカメラ機能を有する場合、情報処理装置20において撮影された画像を用いて環境地図を生成してもよい。もしくは、環境地図生成部21は、情報処理装置20とは異なる装置である撮影装置において撮影された画像を、ネットワーク等を介して受信し、環境地図を生成してもよい。
【0028】
環境地図生成部21は、画像を撮影した撮影装置の位置及び姿勢をリアルタイムに推定する処理を実行する前に、環境地図を生成する。SfMを用いて環境地図を生成する場合、VSLAMを用いて3次元地図を生成する場合と比較して、環境地図の作成に用いる画像の数が多く、さらに、計算量も多い。そのため、SfMを用いて生成された環境地図は、VSLAMを用いて、撮影装置の位置及び姿勢とともに生成された3次元地図よりも、撮影装置の周囲の環境の再現精度が高くなる。
【0029】
環境地図生成部21は、環境地図と、環境地図を生成するために用いた複数の画像とを、画像管理部22へ出力する。このとき環境地図生成部21は、画像情報をそのまま渡さず、画像内に検出された特徴点に関する情報のみを画像として出力してもよい。画像管理部22は、環境地図生成部21から受け取った環境地図及び画像を管理する。また、画像管理部22は、環境地図生成部21から受け取ったそれぞれの画像と、当該それぞれの画像を撮影した撮影装置の位置及び姿勢とを関連付けて管理する。さらに、画像管理部22は、当該それぞれの画像と、当該それぞれの画像内の特徴点の環境地図上の3次元座標とを関連付けて管理する。画像管理部22が管理する画像は、キーフレームと称されてもよい。ここで、キーフレームは、以下に説明する一連の画像処理の基点となり得るフレーム画像とも言える。さらに、キーフレーム内の特徴点の環境地図上の3次元座標は、ランドマークと称されてもよい。
【0030】
図3は、画像管理部22が管理するキーフレームリストを示している。IDは、キーフレームを識別するために用いられる情報である。キーフレーム毎に異なるIDが割り当てられている。キーフレームリスト中のSfMは、キーフレームが、SfMを実行する際に用いられたか否かを示している。例えば、キーフレームリストは、環境地図を生成する際に、SfMの実行において用いられた画像のみではなく、所定の基準を満たす画像もキーフレームとして管理してもよい。SfMがTrueと設定されているキーフレームは、SfMの実行において用いられた画像であり、Falseは、SfMの実行において用いられなかった画像である。例えば、画像に含まれる特徴点に対応する3次元座標の推定精度が所定の基準よりも高い場合に、その画像をキーフレームとして追加してもよい。もしくは、SfMの実行において用いられた画像に含まれる特徴点と、所定の閾値よりも多くの特徴点がマッチングする画像がキーフレームとして追加されてもよい。
【0031】
x、y、zは、キーフレームを撮影した撮影装置の3次元位置もしくは3次元座標を示している。qw、qx、qy、qzの4つのパラメータは、撮影装置の回転情報及び姿勢を示している。ランドマークは、キーフレーム内に含まれる特徴点に対応付けられたランドマークのIDを示している。例えば、IDを1とするキーフレームには、IDが1、2、及び3であるランドマークに対応する特徴点が含まれている。
【0032】
図4は、ランドマークリストを示している。IDは、ランドマークを識別するために用いられる情報である。x、y、zは、ランドマークの環境地図上の3次元位置を示している。また、ランドマークは、複数のキーフレームに含まれる可能性がある。そこで、キーフレーム毎の特徴ベクトルは、それぞれのキーフレームにおいてランドマークに対応する特徴点をベクトル形式にて示した情報である。例えば、IDを1とするランドマークは、キーフレームIDが1及び3のキーフレームに含まれる特徴点に対応する。
【0033】
図2に戻り、投影部11は、仮想点関連画像を撮影した撮影装置の推定位置を起点として、撮影装置から撮影方向に向かう直線(即ち、撮影方向に延びる仮想的な直線:以下同様)上に、所定の数の仮想点を配置する。仮想点関連画像は、VSLAMを用いて、既に撮影装置の位置、姿勢、及び画像内の特徴点の3次元位置が推定された画像である。仮想点関連画像は、例えば、リアルタイムに撮影装置の位置及び姿勢を推定する対象となる画像よりも前に撮影された画像であって、位置及び姿勢を推定する対象となる画像の直前に撮影装置の位置及び姿勢が推定された画像であってもよい。情報処理装置20がカメラ機能を有する場合、情報処理装置20において撮影された画像を仮想点関連画像として用いてもよい。もしくは、投影部11は、情報処理装置20とは異なる装置である撮影装置において撮影された画像を、ネットワーク等を介して受信し、受信した画像を仮想点関連画像として用いてもよい。
【0034】
ここで、仮想点関連画像として、リアルタイムに撮影装置の位置及び姿勢を推定する対象となる画像が用いられてもよい。この場合、仮想点を配置する直線の起点となる撮影装置の位置は、リアルタイムに撮影装置の位置及び姿勢を推定する対象となる画像と、この画像の1フレーム前の画像との間のフレーム間の速度、角速度を用いて予測されてもよい。さらに、仮想点を配置する直線の起点となる撮影装置の姿勢も、フレーム間の速度、角速度を用いて予測されてもよい。
【0035】
ここで
図5を用いて、投影部11における、仮想点の投影処理について説明する。
図5は、X軸、Y軸、及びZ軸を用いて表される3次元空間を示している。
図5は、撮影装置30が異なる場所において撮影した画像31~34を示している。画像31~34は、撮影装置30が撮影した際の画角に含まれる風景を2次元画像として示している。
図5は、撮影装置30の位置と、撮影装置30の撮影方向と、撮影した画像31~34との関係を示すために、撮影装置30の焦点距離、画角等を考慮して、画像31~34を仮想的に3次元空間内に配置した様子を示している。
【0036】
画像31を撮影した撮影装置30の位置及び姿勢は、既にVSLAMによって推定されているとする。画像31を撮影した撮影装置30の位置から、撮影方向に向かう直線上に、仮想点41~45が配置されている。仮想点の数は、5個に制限されない。また、仮想点と仮想点との間は、等間隔であってもよく、任意の間隔であってもよい。画像31は、仮想点関連画像であり、画像32~34は、キーフレームである。また、複数の仮想点は、画像31を撮影した撮影装置30の位置及び姿勢に基づいて定まる撮影装置30の画角の二等分線上に配置されてもよい。
【0037】
図5は、仮想点41~45がキーフレームである画像32及び画像33に投影されていることを示している。画像34に関しては、撮影装置30の撮影方向に仮想点41~45が含まれないため、仮想点41~45は、画像34に投影されない。
【0038】
投影部11は、画像管理部22に管理されている全てのキーフレームに対して、仮想点41~45の投影処理を行ってもよい。もしくは、投影部11は、画像管理部22において管理されているキーフレームのうち、SfMがTrueと設定されたキーフレームに対してのみ、仮想点41~45の投影処理を行ってもよい。もしくは、投影部11は、仮想点関連画像もしくはリアルタイムに撮影装置の位置及び姿勢を推定する対象となる画像、を撮影した撮影装置の位置と距離が閾値以上離れている場所において撮影されたキーフレームについては、投影処理を行わないようにしてもよい。ここで、投影部11が、仮想点41~45を、画像32に投影する際の投影処理について説明する。
【0039】
投影部11は、仮想点41の3次元座標に、画像32を撮影した際の撮影装置30の位置及び姿勢を示す回転行列、及び、撮影装置30の焦点と中心点を示すカメラパラメータの行列とを乗算する。カメラパラメータは、画角に関する情報が含まれており、画角は一般的に水平の画素数、垂直の画素数、光学センサーとレンズとの焦点距離などから構成される。これにより、投影部11は、画像32を含む平面上における仮想点41の投影位置を算出する。投影位置は、例えば、撮影装置30のカメラ座標を用いて特定される。投影部11は、仮想点41と同様に、仮想点42~45についても同様に、画像32を含む平面上におけるそれぞれの仮想点の投影位置を算出する。また、投影部11は、仮想点41~45を、画像33及び画像34等にも、同様に投影処理を実行する。
図5においては、仮想点44及び45が、画像32内に収まっていることを示している。さらに、仮想点43~45が、画像33内に収まっていることを示している。また、仮想点41~45のいずれも画像34内に収まっていないことを示している。
【0040】
図2に戻り、画像抽出部12は、投影部11における投影処理の結果に基づいて、複数のキーフレームの中からオーバーラップキーフレームを抽出する。例えば、画像抽出部12は、それぞれの画像内に収まっている仮想点の数を次の式1に適用して、画像毎のスコアを算出してもよい。
【0041】
Sn=N/{(aDn+α)(bRn+β)}・・・式1
Sn:画像nのスコア
N:画像n内に収まった仮想点の数
Dn:仮想点関連画像を撮影した撮影装置と画像nを撮影した撮影装置との距離
Rn:仮想点関連画像を撮影した撮影装置と画像nを撮影した撮影装置との角度
a,b,α,β:任意の係数
「/」:割り算を表す記号
【0042】
式1は、単に画像内に収まった仮想点の数が多い画像をオーバーラップキーフレームとして抽出するのではなく、仮想点関連画像を撮影した撮影装置との距離及び角度を考慮して、スコアを算出することを示している。距離を優先するか、角度を優先するかは、a,b,α,βの値を変更することによって実現され、特徴点のマッチング精度を向上させる適切な値を与える。マッチング精度の向上とは、例えば、マッチングする特徴点の数を増加させること、さらに、誤った特徴点同士をマッチングさせないこと、であってもよい。
【0043】
特徴点検出部23は、撮影装置もしくは情報処理装置20内のカメラ機能から、仮想点関連画像を取得してから所定期間経過後に取得したリアルタイム画像と、他の画像とを用いて特徴点マッチングを行う。リアルタイム画像は、例えば、特徴点検出部23が、仮想点関連画像の次に取得した画像であってもよい。つまり、特徴点検出部23が、仮想点関連画像及びリアルタイム画像を連続して取得した場合に、仮想点関連画像は、リアルタイム画像の直前に取得された画像であってもよい。言い換えると、仮想点関連画像は、リアルタイム画像の直前に撮影装置もしくは情報処理装置20内のカメラ機能において撮影された画像であってもよい。
【0044】
ここで、
図6を用いて、情報処理装置20において実行される撮影装置30の位置推定処理について説明する。
【0045】
特徴点検出部23は、リアルタイム画像と、複数の画像との間において特徴点マッチングを行う。例えば、特徴点検出部23が特徴点マッチングを行う複数の画像は、リアルタイム画像の1フレーム前に取得した画像、2フレーム前に取得した画像、画像管理部22において管理されている任意のキーフレーム、及びオーバーラップキーフレームであってもよい。リアルタイム画像の1フレーム前に取得した画像を、1フレーム前画像、と称し、リアルタイム画像の2フレーム前に取得した画像を、2フレーム前画像、と称する。
【0046】
例えば、
図6は、リアルタイム画像50と、オーバーラップキーフレーム60との間における特徴点マッチングを行うことを示している。1フレーム前画像、2フレーム前画像、及び画像管理部22において管理されている任意のキーフレームを用いた特徴点マッチング処理については、オーバーラップキーフレームを用いた特徴点マッチングと同様である。そのため、1フレーム前画像、2フレーム前画像、及び画像管理部22において管理されている任意のキーフレームを用いた特徴点マッチング処理については、詳細な説明を省略する。
【0047】
特徴点検出部23は、特徴点マッチングに用いるそれぞれの画像内の特徴点を検出する。特徴点検出部23は、それぞれの画像内の特徴点を、例えば、SIFT、SURF、ORB、AKAZE等を用いて検出してもよい。具体的には、特徴点検出部23は、オーバーラップキーフレーム60内のu1、u2、及びu3を特徴点(以下、既知特徴点と称する)として検出し、リアルタイム画像50内のt1、t2、及びt3を特徴点(以下、新規特徴点と称する)として検出する。さらに特徴点検出部23は、既知特徴点の特徴ベクトル及び新規特徴点の特徴ベクトルを比較し、ベクトルが示す距離の近い特徴点同士をマッチングする。
図6においては、特徴点検出部23は、u1を、t1に対応させ、u2を、t2に対応させ、u3を、t3に対応させている。u1がt1に対応するとは、マッチングすると言い換えられてもよく、u1とt1とが3次元上の同一の点を示していることを意味する。
【0048】
特徴点検出部23は、1フレーム前画像、2フレーム前画像、及び画像管理部22において管理されている任意のキーフレームのそれぞれと、リアルタイム画像との間においても特徴点マッチングを行う。
【0049】
ここで、特徴点検出部23は、リアルタイム画像内の一つの新規特徴点に対して、複数の画像において複数の既知特徴点が対応している場合は、所定の基準に従って、複数の既知特徴点の中から、新規特徴点に対応する一つの既知特徴点を決定する。
【0050】
例えば、所定の基準として、キーフレームリストにおいてSfM:Trueと設定されているキーフレームにおける既知特徴点を優先的に新規特徴点に対応する既知特徴点と決定してもよい。もしくは、所定の基準として、複数の既知特徴点の中心座標に一番近い既知特徴点を優先的に新規特徴点に対応する既知特徴点と決定してもよい。もしくは、所定の基準として、リアルタイム画像の1フレーム前に取得した画像に含まれる既知特徴点を優先的に新規特徴点に対応する既知特徴点と決定してもよい。
【0051】
3D位置特定部24は、特徴点検出部23において決定された既知特徴点の3次元点(ランドマーク)を検索する。例えば、特徴点検出部23が、オーバーラップキーフレーム60内の特徴点を、新規特徴点に対応する既知特徴点と決定したとする。この場合、
図6に示されるように、特徴点u1、u2、及びu3に対応するランドマークであるq1、q2、及びq3を検索する。q1は、特徴点u1の3次元点(もしくは3次元座標)を示している。同様に、q2は、u2の3次元点を示し、q3は、u3の3次元点を示している。q1、q2、及びq3は、SfMを用いて生成された環境地図上の3次元点である。そのため、q1、q2、及びq3は、VSLAMを用いて推定された3次元点よりも、精度高く推定された3次元点である。
【0052】
推定部13は、新規特徴点、既知特徴点、及び既知特徴点の3次元点を用いて、リアルタイム画像50を撮影した撮影装置30の位置及び姿勢を推定する。具体的には、推定部13は、リアルタイム画像50を撮影した撮影装置30の位置及び姿勢を仮定する。特徴点検出部23は、仮定した撮影装置30の位置及び姿勢においてq1、q2、及びq3を撮影した場合のq1、q2、及びq3の位置を、リアルタイム画像50に投影する。推定部13は、リアルタイム画像50を撮影した撮影装置30の位置及び姿勢を変更し、q1、q2、及びq3の位置をリアルタイム画像50に投影することを繰り返す。リアルタイム画像50内の点線で示されているt’1、t’2、t’3は、リアルタイム画像50に投影されたq1、q2、及びq3を示している。
【0053】
推定部13は、投影されたt’1、t’2、及びt’3と、リアルタイム画像50内の特徴点であるt1、t2、及びt3との差が最も小さくなる撮影装置30の位置及び姿勢を、撮影装置30の位置及び姿勢と推定する。
【0054】
続いて、
図7を用いて実施の形態2にかかる撮影装置の位置及び姿勢を推定する処理の流れについて説明する。ここで、
図7において説明する処理が実行される前に、環境地図生成部21は、複数の画像を用いてSfMを実行することによって環境地図を作成済みであるとする。つまり、
図7において説明する処理が実行される前に、画像管理部22は、環境地図を作成する際に用いられたキーフレーム、キーフレームリスト及びランドマークリストを管理している。
【0055】
はじめに、投影部11は、複数のキーフレームに対して仮想点を投影する(S11)。投影部11は、仮想点関連画像を撮影した撮影装置の位置及び姿勢に基づいて、撮影方向を特定する。さらに、投影部11は、撮影装置の位置を起点として、撮影方向に向かう直線上に配置した仮想点を、画像管理部22において管理されているキーフレームに投影する。
【0056】
次に、画像抽出部12は、仮想点が投影された複数のキーフレームの中から、少なくとも1つのオーバーラップキーフレームを抽出する(S12)。画像抽出部12は、上述した式1を用いて仮想点が投影されたキーフレーム毎のスコアを算出する。画像抽出部12は、最もスコアの高いキーフレームをオーバーラップキーフレームとして抽出してもよい。もしくは、画像抽出部12は、スコアの高い順に予め定められた数のキーフレームをオーバーラップキーフレームとして抽出してもよい。もしくは、画像抽出部12は、予め定められたスコアを満たす全てのキーフレームをオーバーラップキーフレームとして抽出してもよい。
【0057】
次に、特徴点検出部23は、リアルタイム画像の特徴点とともに、1フレーム前画像、2フレーム前画像、画像管理部22において管理されている任意のキーフレーム、及びオーバーラップキーフレームの特徴点を検出する(S13)。ここでは、1フレーム前画像及び2フレーム前画像の特徴点を検出することとしているが、特徴点検出部23は、n(nは正の整数)フレーム前画像までの特徴点を検出してもよい。
【0058】
次に、特徴点検出部23は、リアルタイム画像と、1フレーム前画像、2フレーム前画像、画像管理部22において管理されている任意のキーフレーム、及びオーバーラップキーフレームのそれぞれとの間において特徴点マッチングを実施する(S14)。特徴点検出部23は、リアルタイム画像と、それぞれの画像との特徴点マッチングを順番に実施してもよい(直列処理)。もしくは、特徴点検出部23は、リアルタイム画像と、それぞれの画像との特徴点マッチングを並列処理し、同じタイミングに実行してもよい。
【0059】
次に、特徴点検出部23は、所定の基準に従って、リアルタイム画像内の一つの新規特徴点に対応する複数の既知特徴点の中から、新規特徴点に対応する一つの既知特徴点を決定する(S15)。
【0060】
次に、3D位置特定部24は、ステップS13において決定された既知特徴点の3次元点を検索する(S16)。例えば、3D位置特定部24は、既知特徴点に対応する環境地図上の3次元点を検索する。
【0061】
次に、推定部13は、リアルタイム画像を撮影した撮影装置の位置及び姿勢を推定する(S17)。
【0062】
以上説明したように、実施の形態2にかかる情報処理装置20は、仮想点をキーフレームに投影した際のスコアに従って、オーバーラップキーフレームを抽出する。スコアの高いキーフレームは、リアルタイム画像に含まれるエリアとキーフレームに含まれるエリアとの重複度が高いことを意味する。これにより、情報処理装置20は、リアルタイム画像に含まれるエリアと重複するエリアが多いキーフレームを、オーバーラップキーフレームとして特定することができる。情報処理装置20は、このようなオーバーラップキーフレームを、特徴点マッチングに用いることによって、特徴点マッチングの精度を向上させることができる。その結果、情報処理装置20は、オーバーラップキーフレームを用いない場合と比較して、撮影装置の位置及び姿勢の推定精度を向上させることができる。
【0063】
図8は、情報処理装置10及び情報処理装置20(以下、情報処理装置10等とする)の構成例を示すブロック図である。
図8を参照すると、情報処理装置10等は、ネットワークインタフェース1201、プロセッサ1202、及びメモリ1203を含む。ネットワークインタフェース1201は、他のネットワークノードと通信するために使用されてもよい。ネットワークインタフェース1201は、例えば、IEEE 802.3 seriesに準拠したネットワークインタフェースカード(NIC)を含んでもよい。
【0064】
プロセッサ1202は、メモリ1203からソフトウェア(コンピュータプログラム)を読み出して実行することで、上述の実施形態においてフローチャートを用いて説明された情報処理装置10等の処理を行う。プロセッサ1202は、例えば、マイクロプロセッサ、MPU、又はCPUであってもよい。プロセッサ1202は、複数のプロセッサを含んでもよい。
【0065】
メモリ1203は、揮発性メモリ及び不揮発性メモリの組み合わせによって構成される。メモリ1203は、プロセッサ1202から離れて配置されたストレージを含んでもよい。この場合、プロセッサ1202は、図示されていないI/O(Input/Output)インタフェースを介してメモリ1203にアクセスしてもよい。
【0066】
図8の例では、メモリ1203は、ソフトウェアモジュール群を格納するために使用される。プロセッサ1202は、これらのソフトウェアモジュール群をメモリ1203から読み出して実行することで、上述の実施形態において説明された情報処理装置10等の処理を行うことができる。
【0067】
図8を用いて説明したように、上述の実施形態における情報処理装置10等が有するプロセッサの各々は、図面を用いて説明されたアルゴリズムをコンピュータに行わせるための命令群を含む1又は複数のプログラムを実行する。
【0068】
上述の例において、プログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD-ROM(Read Only Memory)、CD-R、CD-R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(Random Access Memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【0069】
なお、本開示は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【0070】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
(付記1)
第1の画像を撮影した撮影装置の推定位置を起点として前記撮影装置の正面方向および背面方向の少なくとも一方に所定数の仮想的な点を配置し、前記仮想的な点を、3次元情報である環境地図を生成するために用いられた複数の画像のそれぞれに投影する投影部と、
前記仮想的な点の投影結果に基づいて前記複数の画像の中から第2の画像を抽出する画像抽出部と、
前記撮影装置の位置及び姿勢を推定する対象となる対象画像に含まれる特徴点と、前記第2の画像に含まれる特徴点とを用いて、前記対象画像を撮影した前記撮影装置の位置及び姿勢を推定する推定部と、を備える情報処理装置。
(付記2)
前記第1の画像は、
前記対象画像が入力された時点から所定期間前に前記撮影装置の位置及び姿勢が推定された画像である、付記1に記載の情報処理装置。
(付記3)
前記投影部は、
撮影装置の位置及び姿勢が推定された第3の画像と、前記第3の画像を撮影した前記撮影装置の位置及び姿勢を起点として、前記撮影装置の速度及び角速度に基づいて前記撮影装置の位置及び姿勢が推定される前記対象画像を、前記第1の画像として用いる、付記1に記載の情報処理装置。
(付記4)
前記投影部は、
前記第1の画像を撮影した撮影装置の位置を起点として、前記撮影装置の撮影方向および撮影方向と逆方向に向かう直線上に、前記仮想的な点を配置する、付記1乃至3のいずれか1項に記載の情報処理装置。
(付記5)
前記画像抽出部は、
前記複数の画像のそれぞれの画像に投影された前記仮想的な点の数を用いて、抽出する前記第2の画像を選択する、付記1乃至4のいずれか1項に記載の情報処理装置。
(付記6)
前記画像抽出部は、
前記複数の画像のそれぞれの画像を撮影した前記撮影装置の位置と、前記第1の画像を撮影した前記撮影装置の位置との間の距離と、前記複数の画像のそれぞれの画像を撮影した前記撮影装置の向いている方向と、前記第1の画像を撮影した前記撮影装置の向いている方向との角度の差を用いて、抽出する前記第2の画像を選択する、付記5に記載の情報処理装置。
(付記7)
前記環境地図は、SfMを実行することによって生成される、付記1乃至6のいずれか1項に記載の情報処理装置。
(付記8)
前記環境地図を生成するために用いられた前記複数の画像と、前記撮影装置の位置及び姿勢が推定された複数の画像の中から所定の基準を満たす画像とをキーフレームとして管理する管理部をさらに備え、
前記推定部は、
前記対象画像の直前に撮影された画像、前記キーフレームとして最後に追加された画像、及び前記第2の画像のそれぞれに含まれる既知特徴点と、前記第2の画像に含まれる新規特徴点とのマッチングを行う、付記1乃至7のいずれか1項に記載の情報処理装置。
(付記9)
前記第2の画像に含まれる新規特徴点に、複数の既知特徴点が対応する場合に、所定の基準に従い、複数の既知特徴点の中から、前記新規特徴点に対応する一つの既知特徴点を前記新規特徴点に対応付ける検出部をさらに備える、付記8に記載の情報処理装置。
(付記10)
前記検出部は、
複数の既知特徴点のうち、SfMを実行して環境地図を生成する際に用いられた画像に含まれる既知特徴点を前記新規特徴点に対応付ける、付記9に記載の情報処理装置。
(付記11)
第1の画像を撮影した撮影装置の推定位置を起点として前記撮影装置の正面方向および背面方向の少なくとも一方に所定数の仮想的な点を配置し、前記仮想的な点を、3次元情報である環境地図を生成するために用いられた複数の画像のそれぞれに投影し、
前記仮想的な点の投影結果に基づいて前記複数の画像の中から第2の画像を抽出し、
前記撮影装置の位置及び姿勢を推定する対象となる対象画像に含まれる特徴点と、前記第2の画像に含まれる特徴点とを用いて、前記対象画像を撮影した前記撮影装置の位置及び姿勢を推定する、位置推定方法。
(付記12)
第1の画像を撮影した撮影装置の推定位置を起点として前記撮影装置の正面方向および背面方向の少なくとも一方に所定数の仮想的な点を配置し、前記仮想的な点を、3次元情報である環境地図を生成するために用いられた複数の画像のそれぞれに投影し、
前記仮想的な点の投影結果に基づいて前記複数の画像の中から第2の画像を抽出し、
前記撮影装置の位置及び姿勢を推定する対象となる対象画像に含まれる特徴点と、前記第2の画像に含まれる特徴点とを用いて、前記対象画像を撮影した前記撮影装置の位置及び姿勢を推定することをコンピュータに実行させるプログラム。
【符号の説明】
【0071】
10 情報処理装置
11 投影部
12 画像抽出部
13 推定部
20 情報処理装置
21 環境地図生成部
22 画像管理部
23 特徴点検出部
24 3D位置特定部
30 撮影装置
31 画像
32 画像
33 画像
34 画像
41 仮想点
42 仮想点
43 仮想点
44 仮想点
45 仮想点
50 リアルタイム画像
60 オーバーラップキーフレーム