【文献】
PIRCHHEIM, Christian et al.,Handling Pure Camera Rotation in Keyframe-Based SLAM,IEEE International Symposium on Mixed and Augmented Reality 2013, Science and Technology Proceedings,IEEE,2013年10月 1日,pp.229-238
【文献】
GAUGLITZ, Steffen et al.,Live Tracking and Mapping from Bpth General and Rotation-Only Camera Motion,IEEE International Symposium on Mixed and Augmented Reality 2012, Science and Technology Proceedings,IEEE,2012年11月 5日,pp.13-22
(58)【調査した分野】(Int.Cl.,DB名)
少なくとも前記並進運動を使用して、前記デバイスからの1つまたは複数の特徴に関する距離を三角測量することによって、前記デバイスに関する前記1つまたは複数の特徴に関する深度情報を決定するステップをさらに含む、請求項2に記載の方法。
前記並進運動の検出に少なくとも基づいて、一般運動モードで前記デバイスを追跡するために3次元(3D)マップを初期化するステップをさらに含む、請求項1に記載の方法。
前記並進運動の検出に少なくとも基づいて、2つのキーフレームを使用した3次元(3D)マップのステレオ初期化を使用して、前記デバイスを追跡するために3Dマップを初期化するステップをさらに含む、請求項1に記載の方法。
第1の時点において獲得された参照キーフレームと第2の時点において獲得された現在キーフレームとの間の運動に関して、前記視覚ベースの回転運動角度と前記センサーベースの回転運動角度とが検出される、請求項1に記載の方法。
前記プロセッサが、前記複数のキーフレーム間の少なくとも前記視差角度を使用して、前記並進運動を決定するように構成されることをさらに含む、請求項9に記載のデバイス。
前記プロセッサが、少なくとも前記並進運動を使用して、前記デバイスからの1つまたは複数の特徴に関する距離を三角測量することによって、前記デバイスに関する前記1つまたは複数の特徴に関する深度情報を決定するように構成されることをさらに含む、請求項10に記載のデバイス。
前記プロセッサが、前記並進運動の検出に少なくとも基づいて、一般運動モードで前記デバイスを追跡するために3次元(3D)マップを初期化することをさらに含む、請求項9に記載のデバイス。
前記プロセッサが、前記並進運動の検出に少なくとも基づいて、2つのキーフレームを使用した3次元(3D)マップのステレオ初期化を使用して、前記デバイスを追跡するために3Dマップを初期化することをさらに含む、請求項9に記載のデバイス。
前記プロセッサが、前記並進運動の検出に少なくとも基づいて、知られている追跡ターゲットを使用することによって、前記デバイスを追跡するために3次元(3D)マップを初期化することをさらに含む、請求項9に記載のデバイス。
第1の時点において獲得された参照キーフレームと第2の時点において獲得された現在キーフレームとの間の運動に関して、前記視覚ベースの回転運動角度と前記センサーベースの回転運動角度とが検出される、請求項9に記載のデバイス。
少なくとも前記並進運動を使用して、前記デバイスからの1つまたは複数の特徴に関する距離を三角測量することによって、前記デバイスに関する前記1つまたは複数の特徴に関する深度情報を決定することをさらに含む、請求項19に記載の非一時的コンピュータ可読記憶媒体。
第1の時点において獲得された参照キーフレームと第2の時点において獲得された現在キーフレームとの間の運動に関して、前記視覚ベースの回転運動角度と前記センサーベースの回転運動角度とが検出される、請求項18に記載の非一時的コンピュータ可読記憶媒体。
前記1つまたは複数の運動センサーが、ジャイロスコープ、加速度計、または磁力計のうちの1つまたは複数を含む、請求項18に記載の非一時的コンピュータ可読記憶媒体。
デバイスに関する視覚ベースの回転運動角度を決定するための手段であって、前記視覚ベースの回転運動角度が、複数のキーフレームに対して画像処理を実行することによって決定される、決定するための手段と、
前記複数のキーフレーム間の前記デバイスに関するセンサーベースの回転運動角度を決定するための手段であって、前記センサーベースの回転運動角度が、前記デバイスに結合された1つまたは複数の運動センサーを使用して決定される、決定するための手段と、
前記デバイスに関する視差角度を決定するための手段であって、前記視差角度が、前記視覚ベースの回転運動角度と前記センサーベースの回転運動角度とを比較することによって決定される、決定するための手段と、
前記視差角度をしきい値と比較するための手段と、
前記視差角度が前記しきい値を上回ることに基づいて、並進運動を検出するための手段と
を含む、装置。
少なくとも前記並進運動を使用して、前記デバイスからの1つまたは複数の特徴に関する距離を三角測量することによって、前記デバイスに関する前記1つまたは複数の特徴に関する深度情報を決定するステップをさらに含む、請求項23に記載の装置。
第1の時点において獲得された参照キーフレームと第2の時点において獲得された現在キーフレームとの間の運動に関して、前記視覚ベースの回転運動角度と前記センサーベースの回転運動角度とが検出される、請求項23に記載の装置。
【発明を実施するための形態】
【0015】
ここで、本明細書の一部を形成する添付の図面に関連して、いくつかの例示的な実施形態を説明する。本開示の1つまたは複数の態様が実装され得る特定の実施形態を以下で説明するが、本開示の範囲または添付の特許請求の範囲の趣旨から逸脱することなく、他の実施形態が使用されることがあり、種々の修正が行われることがある。
【0016】
ここで、本明細書の一部を形成する添付の図面に関連して、いくつかの例示的な実施形態を説明する。本開示の1つまたは複数の態様が実装され得る特定の実施形態を以下で説明するが、本開示の範囲または添付の特許請求の範囲の趣旨から逸脱することなく、他の実施形態が使用されることがあり、種々の修正が行われることがある。
【0017】
「例示的」または「例」という単語は、本明細書では「例、事例、または例示としての役割を果たすこと」を意味するために使用される。「例示的」もしくは「例」として本明細書において説明するいずれの態様または実施形態も、他の態様もしくは実施形態に比べて好ましいか、または有利であると必ずしも解釈されるべきではない。
【0018】
本開示の態様は、これに限定はされないが、視覚的SLAM(VSLAM)および空中協調視覚的同時位置特定およびマッピング(C-VSLAM:Airborne Cooperative Visual Simultaneous Localization and Mapping)など、同時位置特定およびマッピング(SLAM)システムに関する。SLAMシステムは、単一のカメラの入力を処理して、カメラが移動するにつれて、環境のマップ(別名、モデル)を連続的に構築することができる。環境のマップは、3次元(3D)特徴など、環境のいくつかの態様を表し得る。視覚的SLAMシステムは、マップに対するカメラの位置および配向(姿勢)を同時に追跡するように構成され得る。いくつかの最適化されたSLAMシステムは、マッピングからの追跡を減結合して、これらのタスクを非対称的に実行することができる。いくつかの実装形態では、追跡機能およびマッピング機能は、マルチコアプロセッサ上で平行して実行され得る別個の処理スレッドを使用して実行され得る。キーフレームベースのSLAMシステムは、着信カメラ画像ストリームまたはビデオフィードからのフレームを別々に選択して、(たとえば、マップを拡張するために)マッピングおよび追跡するためにこれらのフレームを使用する。そのような別々に選択されたカメラ画像フレームは、キーフレームと呼ばれる場合がある。
【0019】
6自由度(6DOF)を備えたSLAMシステムは、一般カメラ運動(並進、および、オプションで回転を含む運動)を想定して、運動からの構造復元(structure-from-motion)技法を適用して、3D特徴マップを作成する。運動からの構造復元技法は、2次元キーフレームから環境に関する3D情報を抽出することを含み得る。複数のカメラ視点の観測からの3Dマップ特徴のロバストな三角測量は、並進カメラ運動または一般カメラ運動によって十分な視差が誘導されることを必要とする。視差角度は、2つの視点間でデバイスの並進運動によって誘導された2つの視点間の角度である。本明細書で説明するように、6DOF運動および一般運動は、本開示の範囲から逸脱せずに、交換可能に使用され得る。
【0020】
対照的に、パノラマSLAMシステムは、回転専用カメラ運動を想定し、3自由度(3DOF)でカメラを追跡する。視差が観測されないため、特徴点は三角測量されず、したがって、深度情報を伴わない光線または特徴としてだけ記述され得る。本明細書で説明する場合、そのような光点(ray point)特徴は有限特徴と呼ばれ、深度情報を含む、6DOF SLAMからの3D点特徴は無限特徴と呼ばれる。本明細書で説明する場合、パノラマSLAMは3DOF SLAMと呼ばれる場合があり、パノラマ回転は3DOF回転と呼ばれる場合があり、本開示の範囲から逸脱せずに、交換可能に使用され得る。
【0021】
制約なしSLAM(USLAM:Unconstrained SLAM)システムは、一般カメラ運動と回転専用カメラ運動の両方に対処する。現在のカメラ運動に応じて、これらのSLAMシステムは、運動からの構造復元技法またはパノラマ追跡およびマッピング技法のいずれかを適用し、3Dマップおよびパノラママップのセットをもたらす。一般カメラ運動は、フル6DOFでカメラを追跡することを可能にする有限深度を備えた特徴からなる3Dマップにマッピングされる。対照的に、回転専用カメラ運動は、3DOF回転としてだけ、カメラを追跡することを可能にする無限深度を備えた特徴からなるパノラママップにマッピングされる。USLAMは、ハイブリッドSLAM(HSLAM:Hybrid SLAM)と呼ばれる場合もあり、本開示の範囲から逸脱せずに、これらの用語は本明細書を通して交換可能に使用され得る。
【0022】
USLAMマッピングおよび追跡は、ユーザによって実行されるカメラ運動に応じて、ユーザが一般運動と純回転運動との間をシームレスに切り替えることを可能にする。一実施形態では、USLAMマッピングは、6DOFキーフレームおよびパノラマキーフレームを利用して、三次元(3D)マップの新しい部分を推定する。6DOF情報とパノラマ情報とを組み合わせるそのようなマップは、グローバルSLAM(Global SLAM)マップと呼ばれる場合がある。したがって、グローバルSLAMマップを、1つまたは複数の一般運動マップおよびパノラママップのコンテナと説明することができる。グローバルSLAMマップは、ハイブリッドマップと呼ばれることもあり、本開示の範囲から逸脱せずに、グローバルSLAMマップと交換可能に使用され得る。
【0023】
USLAMシステムは、一般に、可能な場合はいつでも、一般運動マップとパノラママップとをマージして(共通尺度を含む)共通座標系を備えたより大きなマップにすることを目的とする。たとえば、USLAMシステムは、マップの対同士の間に十分な重複を用いて、一般運動マップとパノラママップとをマージすることができる。概して、グローバルSLAMマップは、一般に、連結されていないいくつかのマップを含むことが可能であり、これは、個々の3D/パノラママップ間の空間変換が知られていない(または、部分的にだけ知られている)ことを意味する。
【0024】
本開示のいくつかの態様によれば、デバイスは、パノラマSLAMモードで動作する間に、並進運動を受ける場合がある。場合によっては、並進運動は、デバイスのユーザによる、パンなど、偶発的な運動の結果であり得る。従来は、そのような並進運動は、パノラマSLAMにおいて特徴の追跡のエラーおよび損失を生じさせる。
【0025】
本開示の態様は、並進運動をロバストに検出して、回転専用運動モードと一般運動モードとの間、および対応するパノラマ/3Dの追跡モードとマッピングモードとの間を遷移するための技法について説明する。不正確な遷移は、誤って測定された特徴で3Dとパノラママップの両方を破損し、追跡障害をもたらす。モデル選択アルゴリズムなどの既存の視覚専用方法と対照的に、本開示の態様は、慣性(ジャイロスコープ、加速度計)センサ、磁気(コンパス)センサ、視覚(カメラ)センサ、または任意の他のセンサを含む、1つまたは複数のセンサを使用する。
【0026】
下でより詳細に説明するように、いくつかの態様では、USLAMシステムは、シーンのマッピングされた部分から離れた回転(別名、6DOFマッピングからパノラママッピングへの遷移)に対処するように構成される。これらの回転が検出されて、無限特徴を含むパノラママップを構築するために使用される特殊な「パノラマ」(別名、3DOF)キーフレームが選択される。パノラママップは、3Dマップの一部として登録される。場合によっては、パノラマキーフレームは、カメラがシーンのマッピングされた部分から離れるにつれて、パノラママップを構築するための基礎として、最後の一般運動キーフレームを使用する。
【0027】
USLAMシステムは、パノラママップから別の3Dマップへの遷移をサポートする。シーンのマッピングされた部分から離れるカメラ並進は、視覚センサおよび運動センサの姿勢を比較し、続いて、グローバルSLAMマップに追加される(他の3Dマップと整合しない)新しい3Dマップを初期化することによって、検出される。
【0028】
具体的には、カメラが3DOF回転運動モデルを使用してパノラママップから追跡される間に、回転専用運動から一般運動への遷移を検出するための技法について説明する。2つのカメラ視点間で検出される並進運動の検出は、画像処理技法およびセンサを使用して獲得された回転角度を比較することによって実行され得る。視覚ベースの回転運動角度とも呼ばれる、画像処理を使用して検出された回転角度は、並進運動によってもたらされた視覚角度成分を含み得る。他方で、センサベースの回転運動角度とも呼ばれる、センサからの回転角度は、2つのカメラ視野間のデバイスの実際の(または、実際に近い)回転を表す。並進運動によってもたらされた2つの視点間の角度である視差角度は、視覚ベースの回転運動角度をセンサベースの回転運動角度と比較することによって算出され得る。キーフレームは、視差ヒューリスティックとカバレッジヒューリスティックとを使用して選択され得る。視差角度は並進運動の基線およびシーンの深度に左右され、したがって、並進運動を決定するために使用され得る。2つの視野点間で決定された並進運動を使用して、2つの視野において共通して観測された特徴を三角測量し、それによって、特徴の深度を決定することができる。2つのカメラ視野は、6DOFキーフレームとして選択され、三角測量された有限特徴とともに新しい3Dマップに追加される。次に、新しい3DマップがグローバルSLAMマップに追加される。したがって、視差角度を確実に決定することは、新しい3Dマップのロバストな初期化を可能にし、これはフル6DOFにおけるカメラの連続的な追跡を可能にする。
【0029】
本明細書で説明する技法は、パノラマSLAMモードで動作する間に検出された並進運動を使用して、追加の6DOFマップでグローバルSLMマップをポピュレートすることを可能にし、グローバルSLAMマップの品質を強化する。さらに、技法は、6DOF SLAMを使用して、並進運動を適切に検出し、追跡し続けることによって、パノラマSLAMモードの並進運動による特徴の追跡損失を防ぐことができる。
【0030】
図1は、本発明の態様を実施することができるシステムを示すブロック図である。システムは、1つまたは複数の汎用プロセッサ161と、画像処理モジュール171と、追跡モジュール181と、6DOF SLAMモジュール173、3DOF SLAMモジュール175、およびマッピングモード切替えモジュール179を含むマッピングモジュール180と、メモリ164とを含み得るデバイス100であってよい。デバイス100はまた、ソフトウェアインターフェース、ハードウェアインターフェース、またはそれらの何らかの組合せを介して、追跡モジュール181と、画像処理モジュール171と、マッピングモジュール180(6DOF SLAMモジュール173、3DOF SLAMモジュール175、およびマッピングモード切替えモジュール179)を直接的にまたは間接的にのいずれかで結合する、1つもしくは複数のバス177または信号線を含み得る。モジュール170、171、173、175、179、180、および181は、明確にするためにプロセッサ161および/またはハードウェア162とは別に示されているが、これらは、ソフトウェア165およびファームウェア163内の命令に基づいて、プロセッサ161および/またはハードウェア162内で結合および/または実装(もしくは、その上で実行)可能である。制御ユニット160は、下で説明するUSLAMを実行するための方法を実装するように構成され得る。たとえば、制御ユニット160は、
図2〜
図10で説明するモバイルデバイス100の機能を実装するように構成され得る。いくつかの実施形態では、ソフトウェア165またはファームウェア163の命令は、非一時的コンピュータ可読媒体上に記憶され得る。
【0031】
デバイス100は、モバイルデバイス、ワイヤレスデバイス、セルフォン、拡張現実感(AR:augmented reality)デバイス、パーソナルデジタルアシスタント、着用可能デバイス(たとえば、眼鏡、腕時計、帽子、頭部装着デバイス(HMD:head mounted device)または同様の身体装着デバイス)、モバイルコンピュータ、タブレット、パーソナルコンピュータ、ラップトップコンピュータ、データ処理デバイス/システム、または処理能力を有する任意のタイプのデバイスであってもよい。
【0032】
一実施形態では、デバイス100はモバイル/携帯型プラットフォームである。デバイス100は、カメラ114などの画像を捕獲するための手段を含むことができ、また、加速度計、ジャイロスコープ、電子コンパス、または他の同様の運動知覚要素などの運動センサ111を含むことも可能である。そのような運動センサ111は、センサベースの回転運動角度、したがって、デバイス100に関連する並進運動を決定するために使用され得る。
【0033】
デバイス100は、前向きカメラまたは後向きカメラ(たとえばカメラ114)上の画像を捕獲することも可能である。デバイス100は、ディスプレイ112上になど、拡張現実感画像を表示するための手段を含むユーザインターフェース150をさらに含むことができる。また、ユーザインターフェース150は、視覚的または物理的なキーボード、キーパッド152、またはユーザが情報をデバイス100内に入力することができる他の入力デバイスを含むことも可能である。必要に応じて、タッチスクリーン/センサを有するディスプレイ112内に仮想キーパッドを統合することにより、キーボードまたはキーパッド152を除去することができる。たとえば、デバイス100がセルラー電話のようなモバイルプラットフォームであるとき、ユーザインターフェース150は、マイクロフォン154およびスピーカー156も含み得る。デバイス100は、衛星位置システム受信機、電力デバイス(たとえば、電池)など、本開示には無関係の他の要素、ならびに典型的には携帯型電子デバイスおよび非携帯型電子デバイスに関連する他の構成要素を含むことができる。
【0034】
デバイス100は、モバイルデバイスまたはワイヤレスデバイスとして機能することができ、また、任意の適切なワイヤレス通信技術に基づくか、またはさもなければサポートするワイヤレスネットワークを通した1つまたは複数のワイヤレス通信リンクを介して通信することができる。たとえば、いくつかの態様では、デバイス100は、クライアントまたはサーバであってもよく、また、ワイヤレスネットワークに関連し得る。いくつかの態様では、ネットワークは、ボディエリアネットワークまたはパーソナルエリアネットワーク(たとえば、超広帯域ネットワーク)を備えることができる。いくつかの態様では、ネットワークは、ローカルエリアネットワーク、または広域ネットワークを備えることができる。ワイヤレスデバイスは、様々なワイヤレス通信技術、プロトコル、またはたとえば3G、LTE、Advanced LTE、4G、CDMA、TDMA、OFDM、OFDMA、WiMAXおよびWi-Fiなどの規格のうちの1つまたは複数をサポートするか、またはさもなければ使用することができる。同様に、ワイヤレスデバイスは、様々な対応する変調スキームまたは多重化スキームのうちの1つまたは複数をサポートするか、またはさもなければ使用することができる。モバイルワイヤレスデバイスは、他のモバイルデバイス、セルラーフォン、他のワイヤードコンピュータおよびワイヤレスコンピュータ、インターネットウェブサイト、等々とワイヤレスに通信することができる。
【0035】
上で説明したように、デバイス100は、携帯型電子デバイス(たとえば、スマートフォン、専用拡張現実感(AR)デバイス、ゲームデバイス、またはAR処理能力および表示能力を有する他のデバイス)であってもよい。本明細書で説明するARシステムを実装するデバイスは、様々な環境(たとえば、ショッピングモール、道路、事務所、家庭、またはユーザが自分のデバイスを使用することができる場所)で使用され得る。ユーザは、広範囲にわたる様々な状況で自分のデバイス100の複数の特徴とインターフェースすることができる。AR文脈では、ユーザは、自分のデバイスを使用して、自分のデバイスのディスプレイを通して実世界の表現を見ることができる。ユーザは、自分のデバイスのカメラを使用して実世界画像/ビデオを受け取り、かつ、デバイス上に表示された実世界画像/ビデオの上に追加情報または代替情報を重ねる方法で画像を処理することにより、自分のAR可能デバイスと対話することができる。ユーザは、自分のデバイス上でAR実施を見る際に、実世界対象またはシーンをデバイスディスプレイ上で、実時間で置き換えるか、または変更することができる。仮想対象(たとえばテキスト、画像、ビデオ)は、デバイスディスプレイ上に描写されたシーンの表現の中に挿入され得る。
【0036】
本開示の態様によれば、USLAMシステム170は、非一時的コンピュータ可読媒体から取り出された命令を使用して実行され得る。一実装形態では、これらの命令はソフトウェア165としてメモリ164内に記憶される。これらの命令は、1つまたは複数のプロセッサ161を使用して実行され得る。
【0037】
いくつかの実施形態では、USLAMシステム170の構成要素は、(1)マッピングモジュール180と、(2)追跡モジュール181と、(3)マッピングモジュール180および追跡モジュール181によって共有されるグローバルSLAMマップデータ構造とを含み得る。加えて、USLAMシステム170は、画像処理モジュール171を含み得る。
【0038】
一実施形態では、USLAMシステム170は、有限特徴および無限特徴を備えたマップのデータベースとして実装され得るグローバルSLAMマップを維持する。グローバルSLAMマップ166の一部はメモリ165内でバッファリングされ得る。マップデータベースは、複数の3Dマップを含み得る。いくつかの実装形態では、任意の所与の時点で、3Dマップのうちの1つだけがアクティブであり得る。
【0039】
追跡モジュール181は、カメラからのビデオストリームをフレームレートで処理して、アクティブな3Dマップに対する一般カメラ運動と回転専用カメラ運動の両方を追跡する。統合された姿勢推定器は、有限3Dマップ特徴と無限3Dマップ特徴の両方の測定を組み合わせて、6DOF姿勢または3DOF姿勢のいずれかを自動的に計算する。6DOF姿勢は、3Dマップに対するカメラ画像の3DOF回転(別名、配向)および3DOF姿勢(別名、並進)を決定する。3DOF姿勢は、3Dマップに対する3DOF回転を単に決定する。いくつかの実装形態では、追跡モジュール181はまた、マッピングモジュール180に渡されるキーフレームを選択する。計算された姿勢のDOFカウントに対応して、これらのキーフレームは6DOFキーフレームまたは3DOFキーフレームと呼ばれる場合がある。
【0040】
マッピングモジュール180は、追跡モジュール181によって選択された6DOFキーフレームとパノラマキーフレームとに基づいて、グローバルSLAMマップを拡張し、改良する。キーフレームは、視差ヒューリスティックとカバレッジヒューリスティックとを使用して選択され得る。視差は、共通して閲覧されるシーンジオメトリ(別名、有限3Dマップ特徴)上への2つのカメラフレームの視野方向間の(たとえば、現在フレームと既存のキーフレームとの間の)角度である。カバレッジは、有限特徴投影でカバーされるフレーム面積比である。
【0041】
マッピングモジュール180は、6DOF SLAMモジュール173と、パノラマSLAMモジュール175と、マッピングモード切替えモジュール179とを含み得る。6DOF SLAMモジュール173とパノラマSLAMモジュール175は両方とも、メモリ164内に記憶されたグローバルSLAMマップ166にアクセスし、更新することができる。
【0042】
いくつかの実施形態では、6DOF SLAMモジュール173は、捕獲された画像からの有限特徴を用いてキーフレームを作成することができる。6DOF SLAMモジュール173は、捕獲した画像がグローバルSLAMマップとすでに関連付けられている前のキーフレームからのしきい値並進と一致すると決定すると、キーフレームを生成することができる。上で論じたように、6DOF SLAMモジュール173は、2つ以上のキーフレーム(たとえば、一対のキーフレームまたは複数の対のキーフレーム)から三角測量された3D特徴点を含み得るマップを生成して、そのマップをグローバルSLAMマップ166内に挿入することができる。
【0043】
いくつかの他の実施形態では、パノラマSLAMモジュール175は無限特徴を用いてパノラママップを作成する。他の実施形態では、パノラマSLAMモジュール175は、捕獲された複数の画像をまとめて縫いつづって、回転専用カメラ運動を用いて取得された画像の結合収集にすることもできる。3DOF SLAM(たとえば、パノラマSLAMモジュール175による回転追跡)を使用するUSLAMシステム170は、(すなわち、6DOF SLAMモジュール173によって算出される)6DOF SLAMの6DOFと比べて、3回転自由度(3DOF)を算出することができる。パノラマSLAMモジュール175は、相対回転を使用して回転キーフレームを互いに関連付けることができる。USLAMシステム170は、最小しきい値視差または並進が一致しないとき、特徴点三角測量をバイパスまたはスキップすることができる。たとえば、カメラの位置はそのままであり、先行するキーフレームから純回転のみが生じたとき、最小しきい値の視差または並進は一致しないことになる。
【0044】
本開示のいくつかの態様は、パノラマSLAMモードで動作する間にカメラの移動における並進運動を検出することに基づく単眼VSLAMに関する技法について説明する。並進運動は、運動センサ111からの回転運動を使用して算出され得る。動きセンサ111は、加速度計、ジャイロスコープなどの慣性センサと、磁力計などの磁気センサとを含み得る。さらに、運動センサはまた、カメラセンサと、運動を決定するための関連するハードウェアおよび/またはソフトウェア論理とを含み得る。パノラマSLAMを実行する間に並進運動を検出することに基づいて、6DOFキーフレームと有限マップ特徴とからなる新しい3Dマップを初期化することができ、6DOF SLAMへの切替え、および新しい3Dマップに対するカメラの連続的な追跡を引き起こすことができる。
【0045】
いくつかの実施形態によれば、並進運動の検出は、マッピングモード切替えモジュール179によって実行される。2つのカメラ視野間の並進運動の検出は、画像処理技法およびセンサを使用して獲得された回転角度を比較することによって実行され得る。視覚ベースの回転運動角度とも呼ばれる、画像処理を使用して検出された回転角度は、並進運動によってもたらされた視覚角度成分を含み得る。他方で、センサベースの回転運動角度とも呼ばれる、センサからの回転角度は、2つのカメラ視野間のデバイスの実際の回転を表す。並進運動によってもたらされた2つの視点間の角度である視差角度は、視覚ベースの回転運動角度をセンサベースの回転運動角度と比較することによって算出され得る。その後、視差角度を使用して、並進運動を算出することができる。いくつかの態様では、パノラマSLAMマッピングから6DOF SLAMマッピングに切り替えるためのインジケータとして、あるしきい値を超える(視差角度によって示される)並進運動を使用することができる。
【0046】
パノラマSLAMマッピングから6DOF SLAMマッピングへの切替えは、並進運動が利用可能である場合、さもなければ、それらに関連するそのような深度情報を有さないことになる点特徴に関する深度を含めることによって、グローバルGlobal SLAMマップの強化を可能にする。
【0047】
図2は、本開示のいくつかの態様による、制約なしSLAMシステム170に関するフローチャートを示す。
図2では、202および204と標示されたブロックは3Dマップを表す。各3Dマップは、複数のパノラママップと一般運動マップとを備えたコンテナとして処理され得る。システム起動において、(a)少なくとも2つのキーフレームを使用するステレオ初期化(ユーザが並進/一般カメラ運動を実行する)、(b)知られている追跡ターゲットに関する検出など、1つまたは複数の初期化方法、または任意の他の適切な方法を使用して、第1の3Dマップを初期化する(ブロック206)。
【0048】
その後、ユーザによって実行されるカメラ運動に応じて、様々なマッピングモードを実行することができる。概して、一般カメラ運動の段階の間に、6DOF SLAMモジュール173によって6DOFマッピング210が実行され、純回転カメラ運動の段階の間に、パノラマSLAMモジュール175によって3DOFマッピング212が実行される。それに応じて、マッピングエンジンは、以下を行うことができる。
a.(視覚ベースの方法を使用して)純回転運動が検出されたとき、6DOFマッピング210から3DOFマッピング212への遷移、および、
b.(視覚ベースの方法を使用して)生成された運動が検出されて、カメラが知られているマップ領域(すでに3D内にマッピングされているシーンの部分)に向けて移動するとき、3DOFマッピング212から6DOFマッピング210への遷移。
【0049】
場合によっては、(視覚センサおよび運動センサを使用して)一般運動が検出されて、カメラが知られていないマップ領域(すでに3D内にマッピングされていないシーンの部分)に向けて移動するとき、マッピングモジュール180は、3DOFマッピング212から3Dマップ初期化208に遷移する。3DOFマッピング212から3Dマップ初期化208への遷移については、下でさらに詳細に説明する。
【0050】
知られていないマップ領域3Dマップ初期化208ならびに(6DOFおよび3DOF)マッピングに関するブロック206、210、および212に関して前に説明した手順と同様のことを実行することができる。新しい3Dマップ204が初期化されて、マッピングモジュール180は、一般運動に関して6DOFマッピング214を実行し、純回転運動、および、遷移が知られているマップ領域内である限り、2つの間の遷移に関して3DOFマッピング216を実行することができる。
【0051】
図3は、有限3D特徴306を含む、時間tにおける、グローバルSLAMマップ表現を示す。有限特徴は、6DOF SLAMモジュール173によって、検出され、3Dマップの一部として記憶され得る。ブロック302および304は、経時的なカメラの異なる位置および配向に関連するキーフレームを表す。点線ブロック302は、時間t-1において、過去に生じたキーフレームを表すのに対して、実線ブロック304は、時間tにおける現在フレームを表す。
図3は、一般カメラ運動に関する6DOFマッピングを示すが、カメラ姿勢は6DOFマッピングにおいて完全に制約される。6DOFキーフレームがシーンの新しい部分を画像化する間に既存のキーフレームに対して十分な視差を生成するとき、6DOFキーフレームが選択される。6DOFマッピング110用のロバストな特徴三角測定のために十分な視差が望ましい。一実施形態では、6DOFキーフレームを3Dマップに挿入するとき、新しい有限マップ特徴が追加される。
【0052】
図4は、本開示のいくつかの態様による、有限3D特徴306と無限特徴410とを含む、時間t+1における、グローバルSLAMマップ表現の部分を示す。
【0053】
ブロック302、304、および408は、経時的なカメラの異なる位置および配向に関連するキーフレームを表す。点線ブロック302および304は、時間t-1およびtにおいて、過去に生じたキーフレームを表すのに対して、実線ブロック408は、時間t+1における現在フレームを表す。システムが準回転運動を検出したとき、新しいパノラママップを構成し、回転のその中心を定義する参照パノラマキーフレーム408が選択される。参照パノラマキーフレーム408は6DOF姿勢を有し、したがって、3Dマップに対して十分に位置特定されていることに留意されたい。純回転カメラ運動は、追跡された6DOF姿勢の履歴に基づいて検出され得る。たとえば、現在フレームが、6DOFフレーム履歴内に含まれたフレームに関して低い視差および十分な角度を示す場合、純回転が想定され得る。いくつかの実装形態では、参照パノラマキーフレームを挿入する一環として、1つまたは複数の新しい無限マップ特徴をマップ内に挿入することができる。
【0054】
図5は、本開示のいくつかの態様による、有限3D特徴306と無限特徴410とを含む、時間t+2における、グローバルSLAMマップ表現の部分を示す。ブロック302、304、408、および512は、経時的なカメラの異なる位置および配向に関連するキーフレームを表す。点線ブロック302、304、および408は、時間t-1、t、およびt+1において、過去に生じたキーフレームを表すのに対して、実線ブロックは、時間t+2における現在フレーム512を表す。
【0055】
連続的な順回転カメラ運動を実行する間に、パノラマモジュール175は、狭いカバレッジと十分な回転とに基づいて、従属パノラマキーフレーム512を選択し続ける。狭いカバレージは、カメラがマッピングされないシーン領域を探査し続けていることを示す。回転は、現在のフレームの視野方向と現在のパノラママップのキーフレーム姿勢との間の差動角度として計算され得る。これらのキーフレームは従属キーフレームと呼ばれるが、これはこれらのキーフレームは参照パノラマキーフレームからその3D位置を採用するためである。いくつかの実装形態では、パノラマキーフレームを挿入する一環として、1つまたは複数の新しい無限マップ特徴を3Dマップ内に挿入することができる。
【0056】
図6は、本開示のいくつかの態様による、有限3D特徴306と無限特徴410とを含む、時間t+3における、グローバルSLAMマップ表現の一部を示す。点線ブロック302、304、および他の番号付けされていないブロックは、時間t-1、t、t+1、およびt+2において、過去に生じたキーフレームを表すのに対して、実線ブロックは、時間t+3における現在フレーム614を表す。
図6に示すように、カメラが、フル6DOF姿勢を推定することができるように、パノラマの中心から離れて、すでに知られている3Dマップ領域に戻る場合、システムは、(
図2を参照して説明したように)すでに開始された3Dマップ202に関して、3DOFマッピング212から6DOFマッピング210に切り替える。
【0057】
図7は、本開示のいくつかの態様による、有限3D特徴306と無限特徴410とを含む、時間t+4における、グローバルSLAMマップ表現の部分を示す。点線ブロック302、304、および716は、時間t-1、t、t+1、t+2、およびt+3において、過去に生じたキーフレームを表すのに対して、実線ブロック718は、時間t+4における現在フレームを表す。
カメラデバイスが知られていないシーン領域に向けてパノラマの中心から並進するとき、十分な視差を提供する2つのキーフレームが見出されるとすぐに、新しい3Dマップが開始する(ブロック208)。
【0058】
いくつかの実施形態では、参照キーフレーム716(たとえば、パノラママップの参照キーフレーム)と現在フレーム718との間の運動に関して視覚および慣性/磁気センサから別個に、かつ同時に推定された2つの3DOF回転を比較することによって、デバイスのカメラ並進が決定される。視覚回転(別名、3DOF姿勢)はパノラママップの無限特徴から推定される。パノラママップ追跡は並進を測定することを可能にしないため、生じる回転推定は仮想回転を含む。運動センサから推定されたセンサ3DOF回転は、キーフレーム(716および718)間のデバイスの実際の(実際に近い)回転を表す。センサベースの回転運動角度は、カスタムセンサ融合フレームワーク(custom sensor fusion framework)を使用して計算することができるか、または現代のモバイルOSプラットフォームによって提供されるAPI呼出しを使用して取り出すことができる。
【0059】
本開示の態様によれば、並進は1つまたは複数のセンサから直接的に推定されず、代わりに、回転運動が決定され、次いで、並進運動を推定する際に使用される。1つまたは複数のセンサから直接的に導出された並進運動に依存しないことによって、本開示の態様は、加速度計ドリフトに伴うよく知られている問題を回避する。言い換えれば、慣性/磁気センサから3DOF回転を推定することは、フル6DOF姿勢を推定するよりもロバストである。
【0060】
カメラ並進を決定するために、マッピングモード切替えモジュール179は、参照キーフレーム716と現在フレーム718との間の回転に関する視覚センサおよび運動センサの3DOF回転推定間の差分を検出することができる。実験を使用して決定されるように、生じる差分回転角度は、視覚回転の推定のために使用される画像特徴の平均視差角度にほぼ対応する。したがって、マッピングモード切替えモジュール179は、3DOFパノラママッピングおよび追跡から6DOF一般マッピングおよび追跡への遷移をトリガするために都合がよく、かつ設定可能なしきい値視差角度オフセットを決定することができる。しきい値は、後続のマップ初期化ステップにおけるロバストな特徴三角測定を確実にし得る。
【0061】
図8で、ブロック208に関して前に説明したように、時間t+5において、新しい3Dマップを初期化することができる。遷移がトリガされると、6DOFでカメラデバイスの連続的な追跡を可能にする新しい3Dマップが異なるビューから作成される。新しい3Dマップは、2D観測からの有限3D特徴を三角測定することによって、一対のキーフレーム(たとえば、回転比較のために使用される参照フレームおよび現在フレーム)から初期化される。このタスクの場合、任意のステレオ初期化方法(たとえば、5点アルゴリズムと組み合わせたワイドベースライン整合)を使用することができる。「新しい」3Dマップ(ジグザグ)720と「古い」3Dマップ(ジグザグ)306を接続することができないことに留意されたい。2つのマップ間の空間変換は、部分的にだけ知られている場合があり、たとえば、2つの3Dマップの各々は別個の基準を有し得る。新しい3Dマップ720はグローバルSLAMマップに追加されて、「アクティブ」として設定される。ブロック822によって示すように、追加の一般運動は、有限3D特徴を用いて新しい3Dマップ720をさらに改良する際に使用され得る。
【0062】
図9は、本開示のいくつかの態様による、例示的な並進SLAMモジュールの態様を示すブロック図である。マッピングモード切替えモジュール179は、視覚ベースの回転運動決定器モジュール902と、センサベースの回転角度決定器モジュール904と、視差角度決定器モジュール906と、並進運動決定器モジュール908と、SLAM切替えモジュール910と、深度決定モジュール912とを含み得る。マッピングモード切替えモジュール179の構成要素は、画像処理モジュール171と、運動センサモジュール111と、3DOF SLAMモジュール175と、6DOF SLAMモジュール173とに結合され得る。
図9で説明するモジュールは、ソフトウェア165およびファームウェア163内の命令に基づいて、プロセッサ161および/またはハードウェア162など、
図1に説明した構成要素を使用して組合せおよび/または実装可能である。いくつかの実施形態では、ソフトウェア165またはファームウェア163の命令は、非一時的コンピュータ可読媒体上に記憶され得る。
【0063】
いくつかの実装形態では、回転専用モードで動作する間に、画像処理モジュール171は、さらなる処理のためにカメラ114からいくつかの画像またはキーフレームを獲得することができる。
図1の追跡モジュール181は、キーフレームを使用してパノラママップに対してデバイスを追跡することができる。加えて、マッピングモジュール180は、追加の無限特徴を検出して、これらの特徴を3Dマップ内に挿入することができる。
【0064】
視覚ベースの回転運動決定器902は、画像処理モジュール171からキーフレームを受け取って、画像処理技法を使用して、2つのキーフレーム間でデバイスが受ける回転に関する視覚ベースの回転運動角度を決定することができる。デバイスが受ける並進運動による視覚ベースの回転運動角度の一部として、視覚角度と呼ばれる、追加の回転角度成分を符号化することができる。本質的に、パノラマモードの間、SLAMシステムは、回転運動だけを予想して、デバイスが回転運動だけを受けていると想定して、視覚ベースの回転運動角度を算出する。したがって、任意の並進運動は視覚ベースの回転運動の一部として誤って符号化される。場合によっては、並進運動は、パノラマSLAMモードでユーザの一部に偶発的にパンすることに起因し得る。
【0065】
平行して、センサベースの回転運動決定器904は、視覚ベースの回転運動角度が算出される同じ期間にわたってセンサベースの回転運動角度を決定することができる。たとえば、(参照キーフレームと現在キーフレームとを備える)一対のキーフレームに関して視覚ベースの回転運動角度が算出される場合、センサベースの回転運動角度も参照キーフレームと現在キーフレームとが獲得された時点でのセンサ示度を使用して算出される。センサベースの回転運動角度は、キーフレーム間のデバイスに関する実際の(または、実際に近い)回転角度を表す。
【0066】
視差角度決定器モジュール906は、センサベースの回転運動角度と視覚ベースの回転運動角度とを比較することによって、視差角度を決定する。視差角度、すなわち、並進運動によってもたらされた2つの視点間の角度は、ベースラインとシーンの深度との間の差分をやはり表す。いくつかの実施形態では、視差角度はしきい値角度と比較される。視差角度がしきい値以下である場合、視差角度はノイズとして無視されてよい。
【0067】
視差角度がしきい値を超える場合、並進運動決定器モジュール908の一部として並進運動が決定される。並進運動決定器モジュール908は、視差角度を使用して並進運動を決定する。並進運動が決定されると、深度決定器モジュール912は、並進運動を使用して、デバイスからの1つまたは複数の特徴に関する距離を三角測量することによって、そのデバイスについての1つまたは複数の特徴に関する深度を決定することができる。SLAM切替えモジュール910は、パノラマSLAMモジュール175から6DOF SLAMモジュール173にマッピングモジュール180を切り替えることができる。場合によっては、カメラがアクティブな3Dマップ領域外の新しい領域に移動するとき、6DOF SLAM173に切り替える前に、新しい3Dマップをやはり初期化することができる。
【0068】
図10は、本開示の1つまたは複数の態様による方法を実行するための流れ図を示す。1つまたは複数の態様によれば、
図10に示す流れ
図1000で説明した方法および/または方法ステップのいずれかおよび/またはすべてが、たとえば、デバイス100、
図1でより詳細に説明した構成要素によって、かつ/またはそれらにおいて実装され得る。一実施形態では、
図10に関して以下で説明する方法プロセスのうちの1つまたは複数は、プロセッサ161または別のプロセッサなどの、モバイルデバイスのプロセッサによって実装される。加えてまたは代替として、本明細書で説明する方法および/または方法ステップのいずれかおよび/またはすべては、メモリ164または別のコンピュータ可読媒体などのコンピュータ可読媒体上に記憶されたコンピュータ可読命令などのコンピュータ可読命令で実装され得る。
【0069】
ブロック1002で、デバイスの構成要素は、複数のキーフレーム間のデバイスに関する視覚ベースの回転運動角度を決定し、視覚ベースの回転運動角度は、複数のキーフレームに対して画像処理を実行することによって決定される。
【0070】
ブロック1004で、デバイスの構成要素は、複数のキーフレーム間のデバイスに関するセンサベースの回転運動角度を決定し、センサベースの回転運動角度は、デバイスに結合された1つまたは複数の運動センサを使用して決定される。1つまたは複数のセンサは、デバイスに内蔵された慣性(ジャイロスコープ、加速度計)センサ、磁気(コンパス)センサ、および/または視覚(カメラ)センサを含み得る。
【0071】
ブロック1006で、デバイスの構成要素は、デバイスに関する視差角度を決定し、視差角度は、視野ベースの回転運動角度をセンサベースの回転運動角度と比較することによって決定される。いくつかの態様では、第1の時点において獲得された参照キーフレームと第2の時点において獲得された現在キーフレームとの間の運動に関して、視覚ベースの回転運動角度とセンサベースの回転運動角度とが検出される。
【0072】
ブロック1008で、デバイスの構成要素は視差角度をしきい値と比較する。しきい値は設定可能であってよい。
【0073】
ブロック1010で、視差角度がしきい値を超える場合、デバイスの構成要素は並進運動を検出する。いくつかの実装形態では、視差角度がしきい値以下である場合、視差角度の変化は無視できると決定されてよい。
【0074】
ブロック1012で、デバイスの構成要素は、視差角度を使用して並進運動を決定する。加えて、視差角度が決定されると、デバイスの態様は、少なくとも並進運動を使用して、デバイスからの1つまたは複数の特徴に関する距離を三角測量することによって、そのデバイスに関する1つまたは複数の特徴を決定することができる。
【0075】
デバイスの構成要素は、並進運動の検出に少なくとも基づいて、一般運動モードでデバイスを追跡するために3次元(3D)マップをさらに初期化することができる。デバイスの構成要素は、6自由度(6DOF) SLAMマッピングに切り替えることもできる。一態様では、デバイスを追跡するために3次元(3D)マップを初期化することは、並進運動の検出に少なくとも基づいて、2つのキーフレームを使用した3Dマップのステレオ初期化を含み得る。
【0076】
図10に示す具体的なステップは、本開示のある実施形態による、動作モードを切り替える特定の方法を提供することを諒解されたい。したがって、代替実施形態ではステップの他のシーケンスが実行されてもよい。たとえば、代替実施形態は、異なる順序で、上で概説されたステップを実行することができる。例示のために、ユーザは、第3の動作モードから第1の動作モードに、またはそれらの間の任意の組合せに変えることを選択し得る。さらに、
図10に示した個別のステップは、個別のステップに適している通りに様々なシーケンスで実行され得る複数のサブステップを含み得る。さらに、追加のステップが、具体的な用途に応じて、追加または削除され得る。当業者であれば、プロセスの多くの変形形態、修正形態、および代替形態を認識し、諒解するであろう。