(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0015】
添付図面に関連して下で示される詳細な説明は、本開示の様々な態様の説明であることを意図されたものであって、本開示を実践できる唯一の態様を表すことを意図されたものではない。本開示で説明される各態様は、単に本開示の例または実例として提供され、必ずしも、他の態様より好ましいまたは有利と解釈されるべきものではない。この詳細な説明は、本開示の完全な理解を提供するために、特定の詳細を含む。しかしながら、本開示を、これらの特定の詳細なしで実践できることは、当業者には明白である。場合によっては、本開示の概念を曖昧にするのを回避するために、周知の構造およびデバイスがブロック図の形式で示されている。頭字語および他の説明的用語法が、単に便宜および明瞭さのために使用される場合があるが、これらは、本開示の範囲を限定することを意図されたものではない。
【0016】
本明細書で使用される時に、ユーザデバイスは、例示的なユーザデバイス(UD)100ならびに/または追跡初期化を実行でき、ARおよび他のコンピュータビジョン(CV)アプリケーションを走行させることができる他のユーザ機器の形をとることができる。いくつかの実施形態では、UD 100は、セルラー電話、携帯電話、もしくは他のワイヤレス通信デバイス、パーソナル通信システム(PCS)デバイス、パーソナルナビゲーションデバイス(PND)、パーソナル情報マネージャ(PIM)、携帯情報端末(PDA)、タブレットコンピュータ、ハンドヘルドコンピューティングデバイス、ラップトップ、またはワイヤレス通信信号および/もしくはナビゲーション信号を受信することができる他の適切なモバイルデバイスの形をとることができる。いくつかの実施形態では、UD 100は、ウェアラブルヘッドセットと対にされたディスプレイデバイスおよび/またはカメラを含むことができる、ウェアラブルコンピューティングデバイスの形をとることができる。たとえば、ヘッドセットは、生の画像および/または実世界の画像を表示するのに使用され得るヘッドマウントディスプレイ(HMD)を含むことができる。いくつかの実施形態では、生の画像に、1つまたは複数の仮想オブジェクトをオーバーレイすることができる。
【0017】
「ユーザデバイス」という用語は、衛星信号受信、アシスタンスデータ受信、および/または位置関連処理がデバイスまたはパーソナルナビゲーションデバイス(PND)のどちらで行われるのかにかかわりなく、短距離ワイヤレス、赤外線、有線接続、または他の接続によるなど、PNDと通信するデバイスを指すのにも使用される。また、「ユーザデバイス」は、インターネット、Wi-Fi、または他のネットワークを介するなど、サーバと通信することができる、ワイヤレス通信デバイス、コンピュータ、ラップトップ、その他を含むすべてのデバイスを含むことが意図されている。上記の任意の動作可能な組合せも、「ユーザデバイス」と考えられる。本明細書で開示される実施形態を、独立型のユーザデバイス内で、たとえば、別のデバイスとの通信を必要としないデバイス内で使用することができる。
【0018】
「ユーザデバイス」という用語は、ネットワークに接続されまたはワイヤレスにもしくは有線接続を介してのいずれかで別のデバイスと通信するようには構成されない場合があるゲーム機または他のデバイスを含むことも意図されている。たとえば、「ユーザデバイス」は、通信要素および/またはネットワーキング機能性を省略する場合がある。たとえば、本明細書で説明する実施形態は、別のデバイスとの有線またはワイヤレスネットワーキングのために接続するように構成されない独立型デバイスで実装され得る。
【0019】
コンピュータビジョンアプリケーションという用語は、本明細書で使用される時に、画像の獲得、処理、分析、および理解に関するアプリケーションのクラスを指す。CVアプリケーションは、マッピング、モデリング(3Dモデリングを含む)、ナビゲーション、拡張現実アプリケーション、ならびに、画像センサから獲得された画像が、取り込まれる画像からマップ、モデルを作成し、かつ/または環境に関する構造的情報を導出/表現するために処理される、様々な他のアプリケーションを限定なしに含む。多くのCVアプリケーションでは、取り込まれる画像に関する幾何学情報を使用して、初期化ステップにおいてマップまたはモデルを作成することができる。したがって、モデルの品質が、カメラ移動の軌跡および/または初期化中の取り込まれる画像の位置に依存する可能性がある。いくつかの例では、CVアプリケーションが、初期化中にユーザの従う特定の移動シーケンスまたはモーションシーケンスを好む場合がある。
【0020】
さらに、SLAMという用語は、モデリングされる環境のマップなどの環境のマップが、そのマップに対する相対的なユーザデバイスの姿勢を同時に追跡している間に作成される、技法のクラスを指すのに使用される。ユーザデバイスの姿勢は、画像または基準のフレームに対する相対的なユーザデバイスの位置および方位を指す。SLAM技法は、ユーザデバイス上のカメラなどの単一の(単眼)カメラによって取り込まれる画像が、環境のマップに対する相対的なカメラの姿勢を同時に追跡している間にそのマップを作成するのに使用され得る、Visual SLAM(VSLAM)を含む。したがって、VSLAMは、取り囲む環境の3D構造をも判定している間のカメラの6DOF姿勢の追跡を含むことができる。たとえば、いくつかの実施形態では、VSLAM技法は、1つまたは複数の取り込まれる画像フレーム内の顕著な特徴パッチを検出し、取り込まれる画像フレームをキーフレームまたは基準フレームとして記憶することができる。次いで、カメラの姿勢を、たとえば現在の取り込まれる画像フレームを1つまたは複数のキーフレームと比較することによって、判定することができる。
【0021】
SLAM/VSLAMまたは他のCVアプリケーションを利用する前に、通常は、初期化プロセスが実行される。たとえば、SLAMマップを、オブジェクト追跡およびより広範囲のマップ作成の前に初期化することができる。この初期化を実行する複数の形があるが、その方法を、ターゲットベースの初期化技法とターゲットレスの初期化技法とに分類することができる。ターゲットベースの技法は、シーン内の既知のオブジェクトの存在を仮定し、ターゲットレスの手法は、任意のシーンを扱うことができる。SLAM/VSLAMなどの特定の例示的なアプリケーションが、本明細書で議論されるが、本明細書で開示される実施形態は、全般的に、CVアプリケーション、CV手順、および/またはCV機能の初期化に関する。たとえば、初期化を、頑健で透過的な追跡にしばしば依存するARアプリケーション(たとえば、ゲームアプリケーション)のために実行することができる。
【0022】
通常、ターゲットレス初期化技法は、初期化プロセスを収束させるために、カメラモーションのシーケンスを実行することに基づく。たとえば、ターゲットレス初期化は、カメラが、異なる視点から同一のシーンを観察する軌跡内で移動し、これによって、特徴点の共通セットを観察する2つのビューの間に適当なベースラインを作成する時に、容易にされる。通常、ターゲットレス手法でのカメラモーションシーケンスは、点の共通セットを観察する2つのビューの間の適当なオーバーラップを作成するための、異なる視点からのシーン観察を容易にする。しかしながら、カメラモーションシーケンスが、初心者ユーザにとって不自然であり、非直観的なので、カメラが、回転されまたはシーンオブジェクトのサブセットを連続して観察せずに移動され、これによって、ビューの間の合同で観察される点の小さいベースラインまたは十分なベースラインを有する最適未満の個数の観察された点につながる場合がある。ベースラインは、2つのビューの間の三角測量を可能にするための、コンピュータビジョン(CV)アルゴリズムおよび多視点幾何(Multiple View Geometry、MVG)アルゴリズムでの視差の作成に関する。MVGは、環境の画像またはビューから環境の3D構造を判定するための、エピポーラ幾何学、射影幾何学、およびアフィン幾何学を含む幾何学原理の使用を指す。
【0023】
その上、伝統的なVSLAM初期化に必要な反直観的カメラモーションシーケンスにかかわらず、ユーザフィードバックは、従来の手法では提供されない。したがって、ユーザは、モーションシーケンスの必要と、カメラモーションシーケンスを実行する試みとの両方に関して混乱する。ユーザが情報を受け取る範囲において、従来の手法では、情報は、これまで、事後であり、3Dシーンの単純な外心的なビューおよび/または反復的再構成に制限されてきた。Parallel Tracking and Mapping(PTAM)など、いくつかの技法は、検出された特徴点の跡を表示することができるが、そのようなフィードバックは、直観的ではなく、通常のデバイスユーザが初期化カメラモーションシーケンスを実行するために有用ではない。
【0024】
したがって、開示される実施形態は、ARアプリケーションにシームレスに一体化され得るが、ユーザとトラッカとの両方に適する初期化を容易にするために、カメラモーションシーケンスおよび/または最適カメラ軌跡の判定を容易にする。さらに、開示される実施形態は、モーション補正のためのフィードバックを含むカメラモーション実行に関するフィードバックを提供することによって、現在のカメラ軌跡の品質尺度/スコアを提供し、カメラモーションシーケンスの実行を通じてユーザを対話的に案内することもできる。頑健でユーザフレンドリな初期化を容易にすることによって、開示される実施形態は、アクセシビリティを高め、ユーザの時間および労力を減らし、より最適なAR経験を可能にする。
【0025】
図1に、例示的なUD 100のブロック図を示す。
図1に示されているように、UD 100は、接続120を介して動作可能に結合され得る、カメラ110、慣性測定ユニット(IMU)130、プロセッサ150、メモリ160、および/またはトランシーバ170を含むことができる。接続120は、バス、信号線、ファイバ、リンク、その他、またはこれらの何らかの組合せを含むことができる。
【0026】
トランシーバ170は、たとえば、1つまたは複数のタイプのワイヤレス通信ネットワークを介して1つまたは複数の信号を送信することを可能にされた送信器と、その1つまたは複数のタイプのワイヤレス通信ネットワークを介して送信された1つまたは複数の信号を受信するための受信器とを含むことができる。トランシーバ170は、IEEE 802.11x系列の標準規格に基づくものとすることができるWi-Fiネットワークもしくは無線ローカルエリアネットワーク(WLAN)、IEEE 802.15x系列の標準規格に基づくものとすることができるBluetooth(登録商標)、Near Field Communication(NFC)、その他などの無線パーソナルエリアネットワーク(WPAN)、および/またはLTE、WiMAXその他などの無線広域ネットワーク(WWAN)などであるがこれに限定されない様々な技術に基づくワイヤレスネットワークとの通信を容易にすることができる。
【0027】
WWANは、符号分割多元接続(CDMA)ネットワーク、時分割多元接続(TDMA)ネットワーク、周波数分割多元接続(FDMA)ネットワーク、直交周波数分割多元接続(OFDMA)ネットワーク、単一搬送周波数分割多元接続(SC-FDMA)ネットワーク、ロングタームエボリューション(LTE)、WiMaxなどでもよい。さらに、UD 100は、有線ネットワークを介する通信のために1つまたは複数のポートを含むこともできる。いくつかの実施形態では、トランシーバ170および/またはユーザデバイス100上の1つまたは複数の他のポートを、省略することができる。CDMAネットワークは、cdma2000、Wideband-CDMA(W-CDMA)などの1つまたは複数の無線アクセス技術(RAT)を実施してよい。cdma2000は、IS-95標準規格、IS-2000標準規格、およびIS-856標準規格を含む。TDMAネットワークは、Global System for Mobile Communications(GSM(登録商標))、Digital Advanced Mobile Phone System(D-AMPS)、または何らかの他のRATを実施することができる。GSM(登録商標)、W-CDMAおよびLTEは、「第3世代パートナーシッププロジェクト」(3GPP)という名称の組織からの文書で説明される。cdma2000は、「第3世代パートナーシッププロジェクト2」(3GPP2)という名称の団体から発行されている文献に記載されている。3GPP文献および3GPP2文献は公的に入手可能である。
【0028】
UD 100は、衛星測位システム(SPS)の一部とすることができる、1つまたは複数の地球周回宇宙船(SV)から信号を受信することもできる。たとえば、SVは、米国の全地球測位システム(GPS)、欧州のGalileoシステム、ロシアのGlonassシステム、または中国のCompassシステムもしくは北斗システム、ならびに/あるいは地域衛星システムおよび/または静止衛星型衛星航法補強システムなどの全地球的航法衛星システム(GNSS)のコンステレーションに含まれるものとすることができる。
【0029】
いくつかの実施形態では、UD 100は、以下で「カメラ110」と称する、CCDセンサもしくはCMOSセンサなどの1つまたは複数の画像センサおよび/またはカメラ110を含むことができる。カメラ110は、光画像を電子画像またはデジタル画像に変換することができ、キャプチャされた画像をプロセッサ150に送ることができる。一般に、カメラ110は、「色情報」を提供するカラーカメラまたはグレースケールカメラとすることができる。本明細書で使用する「色情報」という用語は、カラーおよび/またはグレースケールの情報を指す。一般に、本明細書で使用する色画像または色情報は、1〜N個のチャネルを含むものと見なされてよく、このNは、画像を記憶するために使用されている色空間に依存する整数である。たとえば、RGB画像は、3つのチャネルを含み、赤情報、青情報および緑情報にそれぞれ1つのチャネルがある。いくつかの実施形態では、カメラ110は、UD 100内の他の機能ユニットに動作可能に結合され得るが、これとは別々に収容される、ウェアラブルカメラとすることができる。
【0030】
いくつかの実施形態では、カメラ110は、前向きカメラおよび/または後ろ向きカメラを含むことができ、CMOSセンサおよび他のビジュアルセンサを組み込むこともできる。一実施形態では、前向きカメラは、デバイスの通常のユーザ動作の間にユーザの方を向き、一方、後ろ向きカメラは、デバイスの通常の動作の間にユーザと反対の方を向く。いくつかの実施形態では、カメラ110は、静止画像とビデオ画像の両方をキャプチャ可能であってよい。たとえば、カメラ110は、30フレーム毎秒(fps)のフレームレートでビデオ画像を取り込むことができる。一実施形態では、カメラ110によって取り込まれる画像は、生の未圧縮フォーマットとすることができ、処理され、かつ/またはメモリ160に記憶される前に圧縮され得る。いくつかの実施形態では、画像圧縮が、ロスレス圧縮技法またはロッシー圧縮技法を使用して、プロセッサ150によって実行され得る。
【0031】
いくつかの実施形態では、UD 100は、ディスプレイまたはスクリーン170をも含むことができ、ディスプレイ170は、カメラ110によって取り込まれる生の画像、AR画像、グラフィカルユーザインターフェース(GUI)、プログラム出力などを表示するのに使用され得る。いくつかの実施形態では、ディスプレイ170は、液晶ディスプレイ(LCD)ディスプレイまたはその変形、有機発光ダイオード(OLED)ディスプレイなどの発光ダイオード(LED)ディスプレイまたはその変形、あるいはヘッドアップディスプレイを使用して実施され得る。いくつかの実施形態では、ディスプレイ170を、UD 100内の他の機能ユニットに動作可能に結合され得るが、これとは別々に収容される、HMDなどのウェアラブルディスプレイとすることができる。
【0032】
UD 100内に含まれるすべてのモジュールが、
図1に示されているわけではない。例示的なユーザデバイス100を、図示の機能ブロックのうちの1つまたは複数を追加し、組み合わせ、または省略することによるなど、本開示と一貫する形で、様々な形で変更することもできる。たとえば、いくつかの構成では、ユーザデバイス100が、トランシーバ170を含まなくてもよい。さらに、ある種の例の実施態様では、ユーザデバイス100が、環境光センサ、超音波センサ、その他など、様々な他のセンサ(図示せず)を含むことができる。いくつかの実施形態では、UD 100は、外部ディスプレイ上での画像の表示を可能にするために、有線のまたはワイヤレスのポートを含むことができる。いくつかの実施形態では、UD 100は、3軸加速度計、3軸ジャイロスコープ、および/または磁力計を含むことができる慣性測定ユニット(IMU)を含むことができる。IMU 130は、速度、方位、および/または他の位置関連情報をプロセッサ150に提供することができる。いくつかの実施形態では、IMU 130は、カメラ110による各画像フレームの取込と同期して、測定情報を出力することができる。いくつかの実施形態では、IMU 130の出力は、カメラ110および/またはUD 100の姿勢を判定するために、部分的にプロセッサ150によって使用され得る。いくつかの実施形態では、ユーザデバイス100の諸部分は、1つまたは複数のチップセットおよび/または類似物の形をとることができる。
【0033】
プロセッサ150は、ハードウェア、ファームウェアおよびソフトウェアの組合せを使用して実装され得る。プロセッサ150は、テキスト検出および追跡に関するコンピューティング手順またはコンピューティングプロセスの少なくとも一部を実行するように構成可能な1つまたは複数の回路を表すことができ、メモリ160から命令および/またはデータを取り出すことができる。プロセッサ150は、1つまたは複数の特定用途向け集積回路(ASIC)、デジタル信号プロセッサ(DSP)、デジタル信号処理デバイス(DSPD)、プログラマブル論理デバイス(PLD)、フィールドプログラマブルゲートアレイ(FPGA)、コントローラ、マイクロコントローラ、マイクロプロセッサ、組込みプロセッサコア、電子デバイス、本明細書で説明される機能を実行するように設計された他の電子ユニット、またはその組合せの中で実施され得る。いくつかの実施形態では、プロセッサ150は、CVアプリケーション初期化モジュール155を含むことができ、CVアプリケーション初期化モジュール155は、CVアプリケーション初期化に関する機能性を提供することができる。
【0034】
メモリ160を、プロセッサ150内でおよび/またはプロセッサ150の外部で実施することができる。本明細書で使用される時に、「メモリ」という用語は、すべてのタイプの長期、短期、揮発性、不揮発性、または他のメモリを指し、どの特定のタイプのメモリ、メモリの個数、またはメモリが記憶される物理媒体のタイプにも限定されない。いくつかの実施形態では、メモリ160は、画像処理、CVアプリケーション初期化を含むCV/MVGアルゴリズム、SLAM/VSLAM方法、およびプロセッサ150によって実行される他のタスクの実行を容易にするためにコードおよび/またはデータを保持することができる。たとえば、メモリ160は、データ、取り込まれる静止画像、ビデオフレーム、プログラム結果、ならびに様々なセンサによって提供されるデータを保持することができる。一般に、メモリ160は、任意のデータ記憶機構を表すことができる。たとえば、メモリ160は1次メモリおよび/または2次メモリを含み得る。1次メモリは、たとえば、ランダムアクセスメモリ、読み取り専用メモリなどを含み得る。
図1ではプロセッサ150とは別個のものとして示されているが、1次メモリの全部または一部がプロセッサ150内に設けられるか、あるいはプロセッサ150と共設および/または結合され得ることを理解されたい。
【0035】
2次メモリは、たとえば、1次メモリと同じもしくは同様のタイプのメモリ、および/または、たとえばフラッシュ/USBメモリドライブ、メモリカードドライブ、ディスクドライブ、光ディスクドライブ、テープドライブ、固体メモリドライブなど、1つまたは複数のデータ記憶デバイスまたはシステムを含み得る。ある種の実施形態では、2次メモリは、ユーザデバイス100に結合されたリムーバブルメディアドライブ(図示せず)内の非一時的コンピュータ可読媒体を動作可能に受け、または他の形でこれに結合するように構成可能とすることができる。いくつかの実施形態では、非一時的コンピュータ可読媒体は、メモリ160および/またはプロセッサ150の一部を形成することができる。
【0036】
ユーザデバイス100は、カメラ110によって取り込まれる画像を処理するためのソフトウェアを含むこともできる。たとえば、プロセッサ150は、CV/MVGプログラムを実行することができ、画像内の特徴を検出するためにプログラムを走行させることができ、画像登録を実行することができ、カメラ110によって取り込まれる1つまたは複数の画像を使用してARプログラムを走行させることができるものとすることができる。多くの拡張現実(AR)アプリケーションでは、たとえば、1つまたは複数の仮想オブジェクトを、生のカメラビューに重畳することができる。仮想オブジェクトの正確な登録は、仮想オブジェクトをレンダリングする時の生ビデオ画像内の仮想オブジェクトの正しい配置を保証することができる。登録、画像登録または画像整合は、異なるデータセットを単一の座標系に変換および/または統合するプロセスを指す。
【0037】
ARアプリケーションを実行している時、たとえば、プロセッサ150は、仮想オブジェクトをライブカメラビュー内に配置し、仮想オブジェクトは、カメラの姿勢と一致するようにキャプチャされた画像内で回転および/または変位され得る。カメラの姿勢は、画像または基準のフレームに対する相対的なカメラの位置および方位を指す。いくつかの実施形態では、画像内の1つまたは複数の特徴を使用して、画像に対する相対的なユーザデバイスおよび/またはカメラの姿勢を判定することができる。いくつかの実施形態では、画像に対するカメラ110の姿勢は、IMU 130からの入力に部分的に基づいて判断または修正され得る。いくつかの実施形態では、レンズの焦点距離、カメラ焦点距離、その他などのカメラ110の既知の固有パラメータおよび特性を、IMUおよび/または他のセンサからの入力に関連して使用して、カメラ姿勢判定を支援し、かつ/またはこれを洗練することができる。
【0038】
単一のカメラを使用する単眼SLAMシステムでは、点または線などの特徴を、既知のカメラ姿勢を有する2つのフレームの間で三角測量することができる。カメラ姿勢を、初期基準ターゲットを追跡することによって、および/または2つのフレームの間でエピポーラ幾何学を使用して相対モーションを推定することによって、入手することができる。エピポーラ幾何学は、2つの別個のカメラ位置から見られる3D点の間の幾何学関係および2D画像へのその投影に関係するが、画像点の間の制約を判定するのに使用され得る。
【0039】
2つのフレームの間の相対的なモーションを推定するために、点の対応または類似する特徴のセットが、使用され、2つのフレームの間の適度なオーバーラップが、対応の信頼できる確立を容易にする。その上、2つのフレーム内の対応する点または特徴の間の正確な三角測量は、2つのカメラ中心と3D点との間の適当に大きい三角測量角度によって容易にされる。特徴点対応の入手を容易にするために、SLAMベースの技法を使用し、かつ/または呼び出す多くのCVアプリケーションは、明示的な初期化ステップをユーザに提示する。いくつかの実施形態では、CVアプリケーション初期化は、少なくとも部分的にCVアプリケーション初期化モジュール155によって実行され得る。
【0040】
たとえば、初期キーフレームを、手作業で選択することができ、システムは、Kanade-Lucas-Tomasi(KLT)アルゴリズム、その変形、または任意の他の適切な特徴対応技法などの特徴追跡アルゴリズムを使用して、現在のビデオフレーム内の対応を追跡することができる。対応は、たとえば、第1の適切に取り込まれるビデオフレームと現在のビデオフレームとの間で判定され得る。同時に、システムは、エピポーラ幾何学を推定し、シーン内の3D点を三角測量することができる。成功の場合には、システムは、3D点のこのセットを用いて初期化され、追跡およびマッピングは、この初期マップを用いて進行する。他の関連する手法は、相対モーション推定品質の何らかの尺度を最大化する。いくつかの実施形態では、CVアプリケーション初期化モジュール155を、ハードウェア、ソフトウェア、および/またはファームウェアの何らかの組合せによって実施することができる。
【0041】
図2Aおよび
図2Bに、SLAM/VSLAM初期化を含むことができる、CVアプリケーション初期化を容易にするためのUD 100上のカメラ110の例示的なモーションを示す。
【0042】
図2Aに示されているように、SLAM初期化200は、UD 100上のカメラ110(
図2Aには図示せず)が、ピボットと称するターゲットまたはオブジェクトの回りで回転する時に、容易にされ得る。ピボットモーションシーケンス220は、本明細書で使用される時に、あるピボット距離230でのオブジェクト軸210の回りのほぼ円形の移動を指す。ピボットモーションシーケンス220を、たとえば、中心に配置されたオブジェクトを見つめながらカメラを円に沿って動かすことによって実現することができる。ピボット距離230は、上の例では円の半径である。
【0043】
ピボットモーションシーケンス220中に、カメラ110によって取り込まれる画像を、ディスプレイ170上に表示することができる。さらに、ピボットモーションシーケンス中に、すべての特徴点は、連続してビュー内に留まることができ、追跡され得、大きいベースラインが、通常、ピボットモーションシーケンスの終りまでに到達される。
【0044】
図2Bに示されているように、SLAM初期化250は、カメラ110が、やはり追跡を容易にする横並進モーションシーケンス260で移動される時にも、容易にされる。横並進モーションシーケンス中に、カメラ110によって取り込まれる画像を、ディスプレイ170上に表示することができる。さらに、横並進モーションシーケンス260中に、初期特徴点の多くは、特にベースラインが大きすぎない時に、横並進モーションシーケンスの終りまで、ビュー内にある。
【0045】
それぞれ
図2Aおよび
図2Bに示されたピボットモーションシーケンス220および並進モーションシーケンス260は、両方ともSLAM初期化に有用であるが、ピボットモーションシーケンスは、説明が相対的により複雑であり、実行するのにより高い器用さを必要とする可能性がある。その一方で、横並進モーションシーケンスは、ユーザが実行するのにより単純であると同時に、トラッカに適度な情報を提供する。
【0046】
通常、初心者ユーザは、上で説明された軌跡のうちの1つまたは複数に従うのに困難を感じる可能性があり、どのシーンオブジェクトのサブセットをも継続的に観察せずにカメラ110を動かす可能性がある。不正なまたは悪く実行されたモーションシーケンスは、SLAMシステムを初期化する時の障害につながる可能性がある。したがって、説明される実施形態は、ユーザとトラッカとの両方に適切な初期化を容易にするための、カメラモーションシーケンスの判定を可能にすることができる。いくつかの実施形態では、現在のカメラ軌跡の品質尺度/スコアを提供することもできる。いくつかの実施形態では、ユーザを、さらに、初期化のための望ましい軌跡に従うように対話的に案内することができる。
【0047】
いくつかの実施形態では、初期化プロセス中に、デバイスの現在の姿勢/軌跡を判定するために、ならびに/あるいは現在の軌跡および/または所望の軌跡に関するフィードバックを提供するために、CVアプリケーション初期化モジュール155は、SLAMシステムが初期化される前に、6DOFを伴う初期開始フレームと現在のビデオフレームとの間でのカメラ110の相対モーション(たとえば、3Dの並進および回転)の粗推定値を提供する、追跡システムからの入力を受け取ることができる。たとえば、一実施形態では、第1の基準画像(たとえば、カメラ110によって取り込まれる初期化画像などの第1の画像)からの瞬間的なまたはすばやいカメラ追跡を、第1の基準画像を処理することと、初期推定深さを使用して抽出された関心点(interest point)のセットを計算することとに少なくとも部分的に基づいて、使用することができる。たとえば、3Dターゲットについて、3Dターゲットのデータセットに、推定深さに基づいて、第1の単一の基準画像からのすべての関心点の深さおよび位置を完全に投入することができる。一実施形態では、第1のキーフレーム内で検出されたすべての点を、カメラ中心から単位距離を有するようにセットすることができる。深さのすべての誤差は、カメラ姿勢が3Dターゲットに関して変化する時に補正され得る。たとえば、追跡システムは、カメラ110の観察されたモーションを考慮して更新され得る、シーン(たとえば、3Dマップ)の部分(たとえば、関心点)を自動的に選択することができる。別の実施形態では、相対モーションの推定を、IMU 130によって提供される追加入力に部分的に基づくものとすることができる。したがって、追跡システムは、第1の基準画像から先へのカメラ110の連続追跡を提供することができる。追跡システムおよび他の態様は、たとえば、参照によってその全体がこれによって組み込まれている、A. Mulloni、M. Ramachandran、G. Reitmayr、D. Wagner、R. Grasset、およびS. Diaz、「User friendly SLAM initialization」、2013 IEEE International Symposium on Mixed and Augmented Reality(ISMAR)、153〜162頁、2013年10月に記載されている。
【0048】
カメラ110の連続追跡は、部分的に、カメラの現在の姿勢を計算するために、および/またはカメラ110の従う軌跡を判定するために、使用され得る。たとえば、いくつかの実施形態では、CVアプリケーション初期化モジュール155は、初期カメラ姿勢、推定された現在のカメラ軌跡、および現在のカメラ姿勢に少なくとも部分的に基づいて、カメラ110によって到達されるべき望ましい次の位置を判定することができる。さらに、いくつかの実施形態では、CVアプリケーション初期化モジュール155は、ユーザによって従われる現在のカメラ軌跡の品質尺度/インジケータおよび/または品質スコアを提供することができる。さらに、いくつかの実施形態では、CVアプリケーション初期化モジュール155は、ユーザが現在の軌跡を補正し、所望の軌跡に従うのを案内するためにディスプレイ170を使用して対話型視覚化を提供し、従われた軌跡の品質に関する対話型フィードバックを提供することができる。
【0049】
いくつかの実施形態では、SLAM初期化を実行することができるCVアプリケーション初期化モジュール155は、いくつかの場合に統合されたアプリケーションの一部を形成することができる2つのコンポーネントを含むことができる。一実施形態では、2つのキーフレームの間の十分なベースラインが形成されるや否やSLAMマップを初期化する追跡システムが、一方のコンポーネントを形成することができる。追跡システムに詳細を提供するエリア(たとえば、特徴に富むエリア)内で十分なベースラインを提供するためのカメラモーションシーケンスの実行を対話的に容易にするユーザインターフェースが、別のコンポーネントを形成することができる。
【0050】
いくつかの実施形態で、CVアプリケーション初期化モジュール155は、UD 100の初期位置、その現在位置を考慮して、UD 100によって到達される望ましい次の位置を判定することができる。いくつかの実施形態で、CVアプリケーション初期化モジュール155は、ユーザによって従われる現在の軌跡の品質スコアをさらに判定することができる。いくつかの実施形態で、CVアプリケーション初期化モジュール155は、ユーザが現在の軌跡を補正し、かつ/または所望の軌跡に従うのを案内するために対話型視覚化を提供することもできる。
【0051】
その初期位置に関するカメラ110の6自由度(6DOF)相対モーションを、次の構造を有する4×4行列Cによって記述することができる。
【0053】
ここで、Rは、3x3回転行列であり、
【0055】
は、並進を記述する3次元ベクトルであり、上付きの「T」は、tの転置を表す。
【0056】
デバイスの前にピボット距離d>0を有するピボットの回りの回転について、最適軌跡に関するカメラ110のすべての姿勢は、次の制約を満足する。
【0060】
かどうかを判定することができる。いくつかの実施形態では、
【0062】
の値をチェックして、これがある所定の制約内またはある選択された値の範囲内に含まれるかどうかを判定することができる。
【0063】
一般に、ピボット距離dは、様々な判断基準に基づいて選択され得る。たとえば、ピボット距離dを、d>0になる任意の値として選択することができる(たとえば、d=1)。いくつかの実施形態では、ピボット距離dを、カメラ110および/またはUD 100からの観察された特徴点の平均距離に基づいて選択することができる。いくつかの実施形態では、ピボット距離dを、ある固定されたしきい値を超える任意に大きい値として選択することができる。より大きい値のピボット距離dが使用される時に、軌跡は、横並進を近似する。したがって、横並進を、適当に大きい値のピボット距離dを選択することによってモデリングすることができる。
【0064】
上の定式化を考慮すると、時刻iにおけるデバイスモーションC
iの対数(log)を表す6次元ベクトルは、
【0066】
として与えられ、ここで、log(C
i)は、変換行列C
iによって表されたSE(3)の対数であり、軌跡上の望ましい次の位置は、同一の所望の軌跡に従う/その上で継続する増分モーション
【0070】
であり、順方向モーションを保証するために、α>0である。SE(3)という用語は、6自由度(6DoF)を有する6パラメータ特殊ユークリッド群(3)を指し、ここで、上で注記したように、3つのパラメータt
x t
y t
zは、3D並進ベクトルに対応し、3つのパラメータr
x r
y r
zは、回転ベクトルに対応する。SE(3)群は、対応するリー代数se(3)を有し、このse(3)の基底は、6つの4×4行列であり、各行列は、各軸に沿った無限小の回転または無限小の並進のいずれかに対応する。上の式(4)によって示されるものなどの対数マップは、リー群とそれに対応するリー代数との間で要素を変換する。対数マップに関する詳細は、参照によってその全体がこれによって組み込まれている、Jose-Luis Blanco、「A tutorial on SE(3) transformation parameterizations and on-manifold optimization」、Technical report #012010、2013年5月9日、ETS Ingenieria Informatica, Universidad de Malaga, Campus de Teatinos s/n - 29071 Malaga, Spainから得ることができる。
【0071】
現在の軌跡に従うことは、カメラ110/UD 100をピボットの回りでさらに移動し、シーンをビュー内に保つと同時に、アングルを初期位置まで広げる。したがって、式(5)を使用して、カメラ110/UD 100の移動に関する最適の方向および/または望ましい方向を判定することができる。
【0072】
いくつかの実施形態では、比例定数αを使用して、実際のユーザ軌跡を所望の軌跡と比較することによって最新のユーザが実行したモーションの品質尺度Δv
i+1を計算することもできる。たとえば、Δv
i+1を、実際のデバイスモーションから推定し、これまでに確立された軌跡と比較することができる。
【0073】
一実施形態では、同一方向のモーションについて、品質尺度を、
【0075】
の大きさに基づいて判定することができ(大きいほど良い)、ここで、
【0077】
は、v
iとΔv
i+1との内積を表す。別の実施形態では、品質尺度を、NCC(v
i,Δv
i+1)によって与えられるベクトルv
iとv
i+1との間の正規化相互相関(NCC)の度合に基づくものとすることができる。一実施態様では、NCC(v
i,Δv
i+1)は、
【0079】
のドット積をベクトルv
iおよびv
i+1の標準偏差によって割ったものとして得ることができる。たとえば、モーションは、NCC(v
i,Δv
i+1)が1により近い場合に、より高い品質を有すると考えられ、またはより良い品質尺度を割り当てられ得る(すなわち、1により近いNCC値は、モーションのより良い品質を暗示する)。
【0080】
いくつかの実施形態では、ピボット距離d、時刻iでのカメラモーションの対数v
i、および軌跡上の望ましい次の位置Δv
i+1に基づく所望の軌跡内のユーザ移動に関する命令を、UD 100上のディスプレイ170を介して対話的に提示することができる。さらに、いくつかの実施形態では、命令は、UD 100/カメラ110の期待される移動または所望の移動に関する継続的なフィードバックを提供することができる。いくつかの実施形態では、GUIは、UD 100/カメラ110の現在の移動および/または初期化プロセスの始めからのUD 100/カメラ110の移動を示す視覚化を提供することができる。いくつかの実施形態では、対話型フィードバックは、時間的態様および空間的態様に関する情報(たとえば、開始、終了、現在の進捗状況)を提供することができる。下で説明される実施形態では、所望の軌跡内のユーザ移動に関する命令を、d、v
i、およびΔv
i+1に基づくものとすることができ、UD 100上のインターフェースを使用してユーザに対話的に提示することができる。
【0081】
視覚的ガイダンスは、ユーザ命令およびモーションを単一の統一された座標系(coordinate frame)で示すことができるので、より直観的になり得る。その一方で、スクリーンディスプレイの使用は、スクリーンに表示された画像を同時に見つめている間にUD 100/カメラ110/ディスプレイ170が移動される可能性があるので、より高いユーザの器用さおよび調整を必要とする可能性がある。したがって、いくつかの実施形態では、フィードバックを提供するための、可聴、触覚(たとえば、振動触覚アクチュエータを使用する)などの様々な他のモダリティを使用することができる。たとえば、音声コマンドおよび/または可聴サウンドを使用して、フィードバックを提供することができる。いくつかの実施形態では、UD 100は、ユーザが最適軌跡からあるしきい値だけ逸脱する時に、振動することができる。たとえば、オーディオ音量、周波数、および/または振動の度合を、最適軌跡からのUD 100/カメラ110の逸脱の範囲に基づいて変更することができる。いくつかの実施形態では、可聴フィードバックおよび/または触覚フィードバックを、ディスプレイ170上の視覚的表示に加えて提供することができる。いくつかの実施形態では、提供されるフィードバックは、たとえばテキストまたは絵図の形での、実行されたモーションシーケンスの品質の表示をも含むことができる。
【0082】
いくつかの実施形態では、GUIを使用して、ユーザが横並進モーションシーケンスおよび/またはピボットモーションシーケンスを対話的に実行するのを助けることができる。いくつかの実施形態では、様々なGUI実施態様を使用して、下でさらに説明される、スクリーン整列された2Dガイダンス、スクリーン整列された3Dガイダンス、ワールド整列された3Dガイダンス、その他などであるがこれに限定されないガイダンスを提供することができる。
【0083】
いくつかの実施形態では、スクリーン整列された2Dガイダンスは、モーションシーケンスを説明し、ユーザを対話的に案内すると同時に、モーションシーケンスの表示を提供するのに2Dスクリーン整列されたUI要素を使用することができる。たとえば、一実施形態では、横並進モーションシーケンスを実行する時に、レベルインジケータまたは人工的な水平線を使用して、回転の範囲を示すことができ、適当な並進モーションの実行を容易にすることができる。ユーザが、モーションに多すぎる回転を導入する時には、レベルインジケータが、これをユーザにシグナリングする。
【0084】
図3A〜
図3Cに、SLAM初期化モーションシーケンスの表示を提供するために2Dスクリーン整列されたUI要素を使用する例示的なGUIのビューを示す。
図3Aに示されているように、一実施態様では、2Dスクリーン整列されたカーソル317を、UD 100上のディスプレイ170上に示すことができる。いくつかの実施形態では、ディスプレイ170は、カメラ110によって取り込まれる画像を同時に示すことができ、カーソル317、327、および337は、表示される画像にオーバーレイされ得る。
図3〜
図7では、いくつかの要素が、原寸通りに描かれておらず、明瞭さのために誇張されている場合があることに留意されたい。
【0085】
図3Aでは、UD 100の初期位置310で、カーソル317は、水平にされ、判定された所望の軌跡に基づいて実行すべき横並進モーションの方向を指すことができる(たとえば、カーソルの水平軸を、スクリーン170の縁に整列させることができる)。いくつかの実施形態では、位置/軌跡のさらなる表示を、円内の中央に配置されて図示されている、標的中心(bullseye)インジケータ315によって提供することができる。
図3Bでは、位置320で、横並進モーションが、ある公差判断基準内で正しく実行された場合に、カーソル327は、横並進モーションの方向を指し続けることができ、標的中心インジケータ325は、中央に配置され得る。その一方で、
図3Cに示されているように、たとえば位置330でのユーザによるデバイスの回転のゆえに、モーションが不正に実行された場合には、カーソル337は、ユーザの以前の不正な回転モーションを打ち消す方向を指す方向にされ得、標的中心インジケータ335は、中心から外れて移動することができる。
【0086】
様々な他の2Dスクリーン整列されたUI要素を、カーソル/標的中心の代わりにまたはこれに加えて使用することができる。たとえば、破線、人工的な水平線などを使用することができる。いくつかの実施形態では、UI要素を、スクリーンの角または別の遮られない位置に表示することができる。いくつかの実施形態では、ユーザが、UI要素のタイプ、スクリーン上の位置、色、および点滅、オーディオ/触覚効果その他などの効果を構成できるものとすることができる。いくつかの実施形態では、命令を、可聴音声/マルチメディア命令を使用して提供することができる。たとえば、ユーザに、右(または左)に移動する音声命令を与えることができ、あるいは、軌跡が所望の軌跡から逸脱しつつあることを警告し、かつ/または現在の軌跡を補正する命令を提供することができる。いくつかの実施形態では、音声命令を、ディスプレイ170上のグラフィカル警告または絵図警告に関連して提供することができる。いくつかの実施形態では、初期化または初期化手順を呼び出すARアプリケーションが、初期化中のUI要素に関するデフォルトセッティングを有することができる。
【0087】
図4A〜
図4Bに、SLAM初期化モーションシーケンスの表示を提供するために3Dスクリーン整列されたUI要素を使用する例示的なGUIのビューを示す。いくつかの実施形態では、3D要素は、ベースライン作成を容易にする形でユーザ移動を促進することができる。ベースラインは、2つのビューの間の三角測量を可能にするために、CV/MVGアルゴリズムにおいて視差を作成する。視差の結果として、あるビュー内のシーンのいくつかの部分が、別のビュー内では遮蔽される。したがって、視差を活用して、パラメータd、v
i、Δv
i+1に基づくSLAM軌跡の初期化に必要な並進移動またはピボット回転される移動を促進することができる。
【0088】
一実施形態では、SLAM初期化のために望ましいモーションを、移動するカメラによって見られるシーンオクルージョンを作成する形でUD 100を移動するようにユーザにグラフィカルにコミュニケートすることによって入手することができる。たとえば、一実施形態では、ユーザに、遮蔽するオブジェクトの背後を見るように、仮想鍵穴を通して見るように、または横並進移動を促進するはずの別の視差効果を使用するように指示することができる。
【0089】
図4Aに示されているように、破線の矢印447と、鍵穴450内の遮られたオブジェクト445とを、3Dスクリーン整列されたガイダンスのために例示的なGUI内でユーザに示すことができる。
図4Aに示されているように、鍵穴450は、スクリーン170の縁の近くにある。矢印447は、移動の方向を示すことができ、ユーザは、UD 100を用いて横並進モーションシーケンスを実行することができ、その結果、
図4Bに示されているように、以前に遮られていたオブジェクト445が、今は、鍵穴455内のオブジェクト460として完全に可視になり、この鍵穴455は、今はスクリーン170上でより中央寄りに配置されている。
【0090】
別の実施形態では、ディスプレイ170上の画像を、第1のフレームから入手された近似姿勢を使用して、異なる深さにある2つのオブジェクトを用いて増補することができる。両方の増補されたオブジェクトは、第1のビュー内でカメラから可視にされ得、3Dシーン整列されたGUI要素は、第1の増補されたオブジェクトがビュー内に保たれると同時に、第2の増補されたオブジェクトが移動の結果として第1の増補されたオブジェクトの背後で徐々に隠されるようにするための、UD 100の移動の方向を示すのに使用され得る。
【0091】
さらなる実施形態では、ディスプレイ170上の画像を、第1のフレームから入手された近似姿勢を使用して、異なる深さにある2つのオブジェクトを用いて増補することができる。第2の増補されたオブジェクトは、第1のオブジェクトの背後で隠され得る、すなわち、第1の増補されたオブジェクトは、初期化アプリケーションが開始される時の初期カメラビュー内で、第2の増補されたオブジェクトを遮蔽する。3Dシーン整列されたGUI要素を使用して、第1の増補をビュー内に保ちながら第2の増補されたオブジェクトが徐々に可視になるようにするための、UD 100の移動の方向を示すことができる。
【0092】
いくつかの実施形態では、増補されたオブジェクトのスケールを、初期化トラッカによって報告される平均ベースライン角度または中央値ベースライン角度に従って、動的に増やし、かつ/または減らすことができる。したがって、ディスオクルージョンまたはオクルージョンの範囲は、シーン点のベースライン角度の大きさに比例するものとすることができる。増補されたオブジェクトの動的スケーリングから生じるオクルージョン/ディスオクルージョンは、増補されたオブジェクトが当初の近くの深さでレンダリングされるがシーン点がより遠い場合に増補されたオブジェクトがユーザから離れて移動する効果を作成する。したがって、真のシーン深さに対する相対的なモーションシーケンスが、促進される。
【0093】
別の実施形態では、インセンティブまたはフィードバックを、ベースライン角度の量に基づいてアプリケーション内で提供することができる。たとえば、角度に応じて、増補されるオブジェクトの活発さを高めることができる。増強されるオブジェクトの双方向性は、実行されるモーションシーケンスの方向に依存するものとすることができる。たとえば、ユーザが増補されたオブジェクトの表側を見るためにピボットモーションシーケンスを実行する可能性が高くなるようにする形で、増補されたオブジェクトを表示することによって、ピボットモーションシーケンスを促進することができる。
【0094】
図5A〜
図5Cに、SLAM初期化モーションシーケンスの表示を提供するために3Dスクリーン整列されたUI要素を使用する例示的なGUIのビューを示す。
図5Aに示されているように、破線の矢印565を、ディスプレイ170を使用する3Dスクリーン整列されたガイダンスのための別のGUI内でユーザに示すことができる。矢印565、575(
図5B)、および585(
図5C)は、正しいモーションシーケンスの「影」トレースまたは「ゴースト」トレースを表す移動の方向を示すことができる。一実施形態では、破線の矢印565、575、および585などの3Dグラフィックスが、モーションシーケンスを実行するための方向を示すことができる。
図5Bでは、位置520で、モーションが何らかの公差パラメータ内で正しく実行された場合に、UD 100のモーションを示す矢印577と、モーションシーケンスのさらなる実行のための正しい方向を示す矢印575とは、ほぼ平行である。
図5Cでは、位置530で、モーションが不正に実行された場合に、UD 100のモーションの正しい方向を示す破線の矢印585と、UD 100のモーションを示す矢印587とは、発散している。いくつかの実施形態では、矢印577および/または矢印587は、ユーザによるモーションシーケンス実行の品質を示すために、品質尺度に基づいてカラーコーディングされ得る。
【0095】
図6Aおよび
図6Bに、SLAM初期化モーションシーケンスの表示を提供するために3Dスクリーン整列されたUI要素を使用する例示的なGUIのビューを示す。
図6Aに示されているように、鳥の群れ(
図6Aおよび
図6Bでは三角形として図示)689-1が、所望の/最適の軌跡に沿って移動して示され、ユーザがその軌跡から逸れる場合には、鳥の群れ689-2のモーションが、所望の/最適の起動に従うようにユーザを案内するために変更され得る。
【0096】
図7に、モーションシーケンスの表示を提供するために3Dワールド整列されたUI要素を使用する例示的なGUIの実施形態を示す。いくつかの実施形態では、環境内に埋め込まれた3D要素を、所望のモーションシーケンスの実行に向けられたヒントと一緒に示すことができる。たとえば、一実施形態では、
図7に示されているように、3Dの家を、「玄関口を見よ(Look at the Front door)」提案792および/または別のUI要素と共に、UD 100上のディスプレイ170上に示すことができる。いくつかの実施形態では、示された家、提案792、UI要素793および795の遠近感が、家をビュー内に保ちながら玄関口を見るためにUD 100をピボット回転させるようにユーザに仕向けるピボットモーションシーケンスを示すことができる。
【0097】
別の実施形態では、ユーザと反対に面する3Dキャラクタを、テーブルの反対側に表示することができ、その結果、そのキャラクタの目を見るために、テーブルを回るピボットモーションシーケンスが誘い出されるようになる。別の実施形態では、アプリケーションの対話メニューを使用することができ、たとえば、テーブルを回るピボットモーションシーケンスを、正しいメニュー項目のユーザ選択を可能にする前に使用することができる。さらなる実施形態では、たとえば事前に設計された軌跡上に配置された異なる仮想アイテムを集めるようにユーザに求めることによって、モーションを暗示するミニゲームを提示することができる。いくつかの実施形態では、初期化ルーチンを呼び出すARアプリケーションに対応するテーマを有するミニゲームを提示することができる。
【0098】
図8Aおよび
図8Bに、整列されたUI要素の2.5D表現を使用するGUIの例示的な実施態様を示す。2.5Dという用語は、画像シーケンス内で3-Dの外見をシミュレートするグラフィカル投影および/または他の技法を指すのに使用される。2.5-D表現は、適度な量の情報を示すことを可能にすると同時に、エンドユーザの単純さを容易にすることができる。さらに、
図8Aに示されているように、2.5D GUIは、水平並進モーションシーケンスまたは横並進モーションシーケンスとピボットモーションシーケンスとの視覚化を可能にすることができる。
【0099】
図8Aおよび
図8BのGUIビュー805では、インターフェースは、明るいオブジェクト804によって表されるデバイスの初期位置と、暗いオブジェクト807として示されたデバイスの現在位置とを示す。デバイスを示すオブジェクトの色が、モーションシーケンスの実行に応じて、暗から明へ(または第1の色から第2の色へ)およびその逆に変化し得ることに留意されたい。アニメーション付きの矢印809は、ユーザがデバイスを動かさなければならない方向を示す。
【0100】
図8Aでは、GUIビュー810、815、および817が、モーションシーケンスが正しく実行された場合の画像のシーケンスを示すが、
図8Bでは、GUI 850、855、および857が、モーションシーケンスが不正に実行された場合の画像のシーケンスを示す。
図8Aに示されているように、GUIビュー810では、UD 100の初期位置804は、明るいオブジェクトによって示され、UD 100の現在位置820は、暗いオブジェクトによって示される。GUIビュー805、810、815、および817を比較することによってわかるように、UD 100/カメラ110は、その初期位置807から位置820、825、および827へ、アニメーション付きの矢印809によって示される方向で移動した。この視覚化におけるオブジェクトの方位は、デバイスの移動と対話的に一致する。したがって、モーションシーケンスが正しく実行されたGUIビュー810、815、および817では、位置820、825、および827にある緑のオブジェクトは、垂直である。
【0101】
図8Bでは、モーションシーケンスが不正に実行されたGUIビュー850に示されているように、位置860で、回転が公差レベル内である可能性があるので、暗いオブジェクトが、第1の方位で傾いて示されている。GUIビュー855では、UD 100の回転が、許容される公差を超え、したがって、位置865では、オブジェクトの色が変更され、傾きが増やされている。最後に、GUIビュー857では、メッセージ870が、モーションシーケンスの不正な実行が原因の初期化の失敗を示す。
図8Aおよび
図8Bに示された、整列されたUI要素の2.5-D表現を使用するGUI表現は、回転モーションの場合に完全な3自由度警告をコミュニケートし、ユーザのモーション補正に対話的に反応する。
【0102】
図9に、初期化のために特徴に富んだ位置を選択し、かつ/または初期化に悪い位置の使用を防ぐために2.5D表現を使用するGUIの例示的な実施態様を示す。
図9に示されているように、GUI 970内で、UD 100上のカメラ110が、初期化に悪い位置を指している時に、増補された円筒形オブジェクト980が、色を変える(たとえば、赤に)。GUI 975内では、UD 100上のカメラ110が、初期化のための良い位置を指しており、増補された円筒形オブジェクト980は、異なる色になる(たとえば、緑に)。バー982の色は、初期化が完了し、ARアプリケーションを走行できる時を示す。GUI 977では、増補された円筒形オブジェクトは、GUIが機能していることを示すために示されている。一般に、3Dキャラクタまたはエンドアプリケーションで使用されるオブジェクトなど、任意の3Dオブジェクトを使用することができる。
【0103】
いくつかの実施形態では、上で説明された初期化技法は、単眼カメラからの画像シーケンスを使用して、シーンに関する以前の知識を全く用いずに瞬間的なまたは高速のリアルタイム6DOF追跡を提供することができる追跡システムに関連して使用され得る。上の初期化技法に関連して使用され得る例示的な追跡システムの追加の詳細を、下で提供する。一般に、初期化ルーチンは、ユーザカメラ移動が、基礎になるプロセスによって使用される、ARシステムまたは他のコンピュータビジョンのシステム、機能、および/もしくはアプリケーションを含む、SLAM/VSLAMまたは他のシステムと共に使用され得る。
【0104】
追跡システムは、初期キーフレームから2D点を追跡することと、初期キーフレームに関して各連続するフレームの3D点位置および相対カメラ姿勢を合同で最適化すること(ミニバンドル調整(mini-bundle adjustment)と称する)とによって働くことができる。したがって、追跡システムは、アプリケーションスタートアップからSLAM/VSLAMシステムがそのマップを成功して初期化し終えるまでの姿勢追跡によく適する可能性がある。バンドル調整は、(i)異なる視点からの複数の3D点を示す画像のセット内のシーンジオメトリについて記述する3D座標ならびに(ii)すべての点の対応する画像投影を含む最適性判断基準に従う、画像を獲得するのに使用されるカメラの相対モーションのパラメータの同時洗練を指す。バンドル調整では、観察された画像点と予測された画像点との画像位置の間の投影誤差を最小化することができる。
【0105】
追跡システムでは、第1のキーフレーム内で検出されたすべての点が、カメラ中心から1単位の距離を有するようにセットされ得る。カメラが移動する時に、すべての点の深さと相対姿勢とが、継続的に更新され得る。点は、第1のカメラ中心から発し、第1のキーフレーム内のそれぞれの観察を通過する光線に沿って前後に移動する。したがって、1点あたり単一のパラメータだけが、推定され得、これは、この方法を、たとえば携帯電話またはUD 100上でリアルタイムで走行するのに十分に効率的にする。カメラフレームごとに、すべての特徴の三角測量角度を計算することができる。特徴が、ある角度しきい値を通過する時に、その特徴を、頑健としてマークすることができる。十分な特徴が頑健になった後に、この方法は、現在のカメラフレームを自動的にキーフレームに昇格させ、2つのキーフレームを使用してマップを初期化することができる。
【0106】
図10Aおよび
図10Bに、SLAM/VSLAM初期化を実行するための例示的な方法の流れ
図1000を示す。いくつかの実施形態では、方法1000を、カメラ110およびスクリーン170を含むユーザデバイス(UD)100上で実行することができる。いくつかの実施形態では、方法1000の諸部分を、プロセッサ150および/またはCVアプリケーション初期化モジュール155によって実行することができる。初期化の開始時に、ステップ1010で、リアルタイム対話型グラフィカルユーザインターフェース(GUI)をUDスクリーン170上に表示することができる。次に、ステップ1015で、カメラ110によって取り込まれる画像を入手することができる。
【0107】
ステップ1020では、カメラによって取り込まれる画像の、SLAM初期化に関する適切さを、たとえばUD 100上のプロセッサ150によってリアルタイムで判定することができる。たとえば、取り込まれる画像が、特徴に富む場合には、その画像を、適切と判定することができる。取り込まれる画像が、特徴に欠ける場合には、その画像を、不適切であるものとして拒絶することができる。
【0108】
ステップ1025では、画像が適切である(ステップ1025の「Y」)場合に、ステップ1035で、適切さの表示を提供するために、ディスプレイをリアルタイムで対話的に更新することができる。たとえば、
図9に示された円筒形または別の仮想オブジェクト980の色を変更することができる(たとえば、緑に)。ステップ1025で、画像が不適切である(ステップ1025の「N」)場合には、ステップ1030で、画像が不適切であることの表示を提供するために、ディスプレイをリアルタイムで対話的に更新することができ、別の反復を、ステップ1015で開始することができる。たとえば、
図9に示された円筒形または別の仮想オブジェクト980の色を変更することができ(たとえば、赤に)、別の反復を、ステップ1015で開始することができる。したがって、
図10Aの方法を使用して、SLAM初期化に関する画像の適切さを確立することができる。いくつかの実施形態では、
図10Aの方法を、SLAM初期化のためのアプリケーションに緊密に統合することができる。
【0109】
画像が、初期化に適すると判定される(ステップ1025の「Y」)場合には、ステップ1040で、第1の取り込まれる画像を入手することができ、ステップ1045で、ピボット距離dの値を更新することができる。いくつかの実施形態では、初期カメラ位置を、推定しまたは仮定することもできる。たとえば、初期カメラ位置を、ワールド座標系(coordinate frame)の適当な選択に基づいて選択することができる。一例として、初期カメラ位置を、姿勢(空間座標系に対応することができる)を識別するようにセットすることができ、かつ/または、加速度計読みに基づいて選択することができる(すなわち、空間フレームのZ軸が、測定された垂直方向と一致する場合がある)。一般に、初期カメラ姿勢は、方法1000の後続ステップに影響せずに、様々な形で仮定され、かつ/または推定され得る。
【0110】
さらに、値dを、d>0になるような任意の値(たとえば、d=1)に基づいて更新することができる。いくつかの実施形態では、dを、カメラ110および/またはUD 100からの観察された特徴点の平均距離に基づいて更新することができる。いくつかの実施形態では、dを、何らかの固定されたしきい値を超える任意に大きい値として更新することができる。より大きい値のdが使用される時に、軌跡は、横並進を近似する。いくつかの実施形態では、dの値を、ユーザセッティングまたはそれのための初期化が実行されつつあるCVアプリケーションもしくはARアプリケーションのセッティングに基づいて選択することができる。たとえば、ユーザが、初期化のために並進モーションシーケンスを場合に、並進しきい値を超えるdの大きい値を使用することができる。
【0111】
ステップ1050では、次のカメラによって取り込まれる画像iを入手することができる。次に、ステップ1055では、次の/現在の画像iについて、v
iを
【0118】
があるしきい値未満であるかどうかを検証することによって、姿勢Cが所望のピボットの回りの回転を構成するかどうかを判定することができる。いくつかの実施形態では、
【0120】
の値をチェックして、これがある所定の制約内またはある選択された値の範囲内に含まれるかどうかを判定することができる。値
【0122】
が、所定の制約内に含まれない場合には、エラー表示または適当な補正アクションをユーザに表示することができる。いくつかの実施形態では、エラー表示または補正アクションを、現在の軌跡の品質表示/尺度の一部として提供することができる。
【0125】
をテストすることができ、ここで、前と同様に、v
iは、実際の軌跡に基づき、この実際の軌跡は、現在の画像iについて判定された姿勢に基づいて計算され得、
【0127】
は、直前のフレームに基づいて計算され得る、前に判定された最適軌跡に基づく。
【0128】
いくつかの実施形態では、ステップ1065で、品質尺度が、現在の軌跡について判定される。たとえば、現在のフレームに基づいて計算されたカメラ姿勢が、前のフレーム内で行われた最適軌跡に関するカメラ姿勢予測と比較される。いくつかの実施形態では、品質尺度を、テスト
【0132】
に基づくものとすることができる。さらに、いくつかの実施形態では、ステップ1065で、現在の姿勢に基づいて
【0135】
ステップ1070では、(i)現在の取り込まれる画像iから推定された現在のカメラ姿勢と、
【0137】
に基づくものとすることができる所望の/計算された最適の軌跡とに基づくCV/MVGアプリケーション/SLAM初期化に関するUDの所望の移動方向、および/または(ii)テスト
【0141】
に基づくものとすることができる現在のカメラ軌跡の品質の表示の表示を提供するために、GUIを対話的にリアルタイムで更新することができる。現在のカメラ姿勢を、現在の取り込まれるカメラ画像に部分的に基づいて、トラッカによって判定することができる。
図3〜
図8に示された技法のうちの1つまたは複数を使用して、SLAM初期化に関するUDの所望の移動方向の表示を提供することができる。いくつかの実施形態では、スクリーン上で増補されたオブジェクトを、カラーコーディングして、現在の軌跡品質の表示を提供することができる。
【0142】
ステップ1075で、CV/MVG/SLAM初期化が完了した(ステップ1075の「Y」)場合には、ステップ1080で、CV/MVG/SLAMプロセスを開始することができる。たとえば、十分に大きいベースラインが入手済みである場合には、ステップ1080でCV/MVG/SLAMプロセスを開始することができる。そうでない場合には、ステップ1050で、次の反復を開始する。
【0143】
流れ
図1000は、SLAM/VSLAM初期化の手順を示すが、この方法を、他の様々なマッピングまたはコンピュータビジョンの機能、手順、および/またはアプリケーションと共に使用することができる。したがって、SLAM初期化は、1つの潜在的な実施形態に過ぎず、SLAM以外の実施形態が、実施され得る。同様に、
図3〜
図8が、例示的アプリケーションとしてSLAM/VSLAM初期化を使用して上で説明された場合があるが、
図3〜
図8の関連する説明で議論されたプロセスおよび実施形態を、他の様々なおよび/マッピングまたはコンピュータビジョンの機能、手順、および/またはアプリケーションと共に使用することができる。
【0144】
図11に、開示される実施形態と一貫する形でSLAM/VSLAM初期化を実行するための例示的な方法1100の流れ図を示す。いくつかの実施形態では、方法1100を、カメラ110およびディスプレイ170を使用してUD 100上で実行することができる。
【0145】
ステップ1110では、コンピュータビジョン(CV)アプリケーションの初期化に最適のカメラ軌跡を判定することができる。いくつかの実施形態では、最適軌跡は、初期カメラ姿勢と推定されたピボット距離とに基づいて判定され得、初期カメラ姿勢は、カメラ110によって取り込まれる第1の画像に基づいて推定され得る。いくつかの実施形態では、ピボット距離は、任意の正の値、第1の画像内の観察された特徴点の平均距離、または、いくつかの場合に並進しきい値とすることができるしきい値を超える値のうちの少なくとも1つとして決定され得る。
【0146】
いくつかの実施形態では、最適カメラ軌跡を判定する前に、初期化に関するカメラによって取り込まれる画像の適切さを、カメラによって取り込まれる画像内の特徴点の個数に部分的に基づいて判定することができ、カメラによって取り込まれる画像は、そのカメラによって取り込まれる画像が初期化に関して適切であると判定される時に、第1の画像として選択され得る。いくつかの実施形態では、第1の画像の選択時に、初期化に関する第1の画像の適切さの表示を、カメラによって取り込まれる画像の表示を第1の仮想オブジェクトを用いて増補することによって提供することができる。いくつかの実施形態では、初期化に関するカメラによって取り込まれる画像の不適切さの表示を、カメラによって取り込まれる画像の表示を第2の仮想オブジェクトを用いて増補することによって、および/または第1の仮想オブジェクトに関連する表示される視覚的特性を変更することによって、提供することができる。適切さまたは不適切さの表示を、ディスプレイ170上に表示される対話型グラフィカルユーザインターフェース(GUI)を介して提供することができる。
【0147】
次に、ステップ1120では、ディスプレイ170を、カメラ110/UD 100の所望の移動方向の表示を用いてリアルタイムで更新することができ、所望の移動方向の表示は、現在のカメラ姿勢および最適軌跡に部分的に基づき、現在のカメラ姿勢は、カメラ110によって取り込まれる現在の画像に基づいて推定される。いくつかの実施形態では、カメラの所望の移動方向は、カメラの最適軌跡とのカメラの現在の軌跡の比較に部分的に基づいて入手され得、カメラの現在の軌跡は、以前のカメラ姿勢のシーケンスから判定される。いくつかの実施形態では、ディスプレイは、カメラの更新された所望の移動方向の表示のシーケンスを用いてリアルタイムでさらに更新され得る。たとえば、シーケンス内の各所望の移動方向を、カメラの将来の移動に関連する対応するカメラ姿勢に部分的に基づいて更新することができる。
【0148】
いくつかの実施形態では、移動方向の表示は、移動方向の表示を提供するための2次元(2D)スクリーン整列されたUI要素を含むスクリーン整列された2Dガイダンス方式、移動方向の表示を提供するための3次元(3D)スクリーン整列されたUI要素を含むスクリーン整列された3Dガイダンス方式、移動方向の表示を提供するための実世界オブジェクトに整列された3D UI要素を含むワールド整列された3Dガイダンス方式、または2.5次元(2.5-D)で表示されるUI要素を含むワールド整列された2.5-Dガイダンス方式であって、UI要素は、移動方向の表示を提供するために実世界オブジェクトに整列される、2.5-Dガイダンス方式のうちの少なくとも1つを使用して提供され得る。
【0149】
いくつかの実施形態では、所望の移動方向の表示は、横並進とピボット初期化モーションシーケンスとの両方について提供され得る。いくつかの実施形態では、所望の移動方向の表示は、過去の移動の表示と、好ましい将来の移動方向の表示とを含むことができる。いくつかの実施形態では、所望の移動方向の表示は、カメラの回転移動をも示すことができる。いくつかの実施形態では、所望の移動方向の表示は、所望の軌跡と現在の軌跡に対する補正との両方を示すことができる。さらに、いくつかの実施形態では、可聴フィードバックおよび/または触覚フィードバックのうちの少なくとも1つを、所望の移動方向の表示に関連してユーザに提供することができる。
【0150】
いくつかの実施形態では、カメラの現在の軌跡の品質の尺度を提供することもできる。たとえば、カメラの現在の軌跡を、現在のカメラ姿勢と以前のカメラ姿勢のシーケンスとに部分的に基づいて判定することができ、品質の尺度を、最適軌跡との現在の軌跡の比較に基づくものとすることができる。
【0151】
本明細書で説明される方法論を、応用例に応じて様々な手段によって実施することができる。たとえば、ファームウェアおよび/またはソフトウェア実装形態の場合、これらの方法は、本明細書で説明する機能を実行するモジュール(たとえば、手順、機能など)で実施され得る。命令を有形に具現化するいずれの機械可読媒体も、本明細書で説明する方法を実施する際に使用され得る。たとえば、ソフトウェアコードはメモリに記憶され、プロセッサユニットにより実行され得る。いくつかの実施形態では、機能は、1つまたは複数の命令またはコードとして、コンピュータ可読媒体上に記憶され得る。これらの例には、データ構造により符号化されたコンピュータ可読媒体およびコンピュータプログラムにより符号化されたコンピュータ可読媒体が含まれる。コンピュータ可読媒体は、物理的なコンピュータ記憶媒体を含む。
【0152】
記憶媒体は、コンピュータによってアクセスされ得る任意の使用可能な媒体であり得る。限定ではなく、例として、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROMもしくは他の光ディスク(disc)ストレージ、磁気ディスク(disk)ストレージもしくは他の磁気ストレージデバイス、または所望のプログラムコードを命令またはデータ構造の形で記憶するために使用されコンピュータによってアクセスされ得る任意の他の媒体を含むことができ、本明細書で使用する場合、ディスク(diskおよびdisc)には、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)、およびブルーレイディスク(disc)が含まれ、ディスク(disk)は通常、データを磁気的に再生するが、ディスク(disc)はデータをレーザーによって光学的に再生する。前述の組合せも、コンピュータ可読媒体の範囲内に含まれるべきである。
【0153】
コンピュータ可読媒体における記憶に加えて、命令および/またはデータは、通信装置に含まれる送信媒体における信号として提供され得る。たとえば、通信装置は、命令およびデータを示す信号を有するトランシーバを含むことができる。命令およびデータは、1つまたは複数のプロセッサに、特許請求の範囲で概要を示される機能を実施させるように構成される。すなわち、通信装置は、開示される機能を実行するための情報を示す信号を有する伝送媒体を含む。第1の時には、通信装置に含まれる伝送媒体は、開示される機能を実行するための情報の第1の部分を含むことができるが、第2の時には、通信装置に含まれる伝送媒体は、開示される機能を実行するための情報の第2の部分を含むことができる。
【0154】
開示される態様の前の説明は、当業者が本開示を作成しまたは使用することを可能にするために提供されるものである。これらの態様に対する様々な変更は、当業者にたやすく明白になり、本明細書で定義される包括的原理は、本開示の趣旨または範囲から逸脱することなく、他の態様に適用され得る。