(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-09-21
(45)【発行日】2022-09-30
(54)【発明の名称】汎用処理ユニットからハードウェアアクセラレータユニットに画像ベースの追跡オペレーションをオフローディングするためのシステム及び方法
(51)【国際特許分類】
G06T 7/246 20170101AFI20220922BHJP
G06T 1/20 20060101ALI20220922BHJP
G06T 7/00 20170101ALI20220922BHJP
【FI】
G06T7/246
G06T1/20 A
G06T7/00 300D
(21)【出願番号】P 2020567759
(86)(22)【出願日】2018-07-09
(86)【国際出願番号】 US2018041329
(87)【国際公開番号】W WO2020009710
(87)【国際公開日】2020-01-09
【審査請求日】2021-04-23
(32)【優先日】2018-07-06
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】515046968
【氏名又は名称】メタ プラットフォームズ テクノロジーズ, リミテッド ライアビリティ カンパニー
【氏名又は名称原語表記】META PLATFORMS TECHNOLOGIES, LLC
(74)【代理人】
【識別番号】110002974
【氏名又は名称】弁理士法人World IP
(72)【発明者】
【氏名】リンデ, オスカー
(72)【発明者】
【氏名】フォースター, クリスティアン
【審査官】伊知地 和之
(56)【参考文献】
【文献】特開2015-069410(JP,A)
【文献】特表2008-513890(JP,A)
【文献】特表2015-506516(JP,A)
【文献】特表2013-508844(JP,A)
【文献】米国特許出願公開第2016/0086336(US,A1)
【文献】米国特許出願公開第2011/0286627(US,A1)
【文献】Jianghua Cheng et al.,A Robust Real-Time Indoor Navigation Technique Based on GPU-Accelerated Feature Matching,2016 International Conference on Indoor Positioning and Indoor Navigation (IPIN),米国,2016年11月17日,https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7743624
【文献】SUDIPTA N. SINHA ET AL.,Feature tracking and matching in video using programmable graphics hardware,MACHINE VISION AND APPLICATIONS,ドイツ,SPRINGER,2011年01月01日,Vol.22, No.1,pp.207-217
(58)【調査した分野】(Int.Cl.,DB名)
G06T 1/00
G06T 7/00 - 7/90
CSDB(日本国特許庁)
IEEE Xplore
(57)【特許請求の範囲】
【請求項1】
コンピュータで実装される方法であって、
撮像デバイスからハードウェアアクセラレータユニットに撮像データを送信することと、
前記撮像デバイスから送信された前記撮像データのマルチスケール表現を生成するよう前記ハードウェアアクセラレータユニットに指示することと、
環境内の物体の位置を追跡するように構成された画像ベースの追跡オペレーションのセットのための入力データのセットを準備すること
であって、
前記入力データが、前記環境の画像と、一又は複数のセンサからのセンサデータとを含む、入力データのセットを準備することと、
生成された前記撮像データの前記マルチスケール表現及び準備された前記入力データのセットを使用して前記画像ベースの追跡オペレーションのセットを実行するよう、前記ハードウェアアクセラレータユニットに指示することと
、を含
み、
前記撮像データが、前記ハードウェアアクセラレータユニットのメモリにローディングされ、且つ前記画像ベースの追跡オペレーションのセットの実行中に前記ハードウェアアクセラレータユニットのメモリ内に保持され、
前記画像ベースの追跡オペレーションが、
前記センサデータに少なくとも部分的に基づいて、前記環境の前記画像内で視認可能になると予測された一又は複数の点の予測位置を、当該画像中において確認すること、及び
前記画像中の前記一又は複数の点が、確認された前記予測位置にあると判定すること
によって前記環境内の前記物体の位置を追跡する、コンピュータで実装される方法。
【請求項2】
前記ハードウェアアクセラレータユニットが、
デジタル信号プロセッサ(DSP)と、
特定用途向け集積回路(ASIC)の、少なくとも一方を備え、
オプションで、前記ハードウェアアクセラレータユニットはシステムオンチップ(SoC)アーキテクチャに含まれる、請求項
1に記載のコンピュータで実現される方法。
【請求項3】
前記撮像デバイスから送信された前記撮像データの前記マルチスケール表現を生成するよう前記ハードウェアアクセラレータユニットに指示することが、前記撮像デバイスから送信された前記撮像データに基づいて画像ピラミッドを生成するよう前記ハードウェアアクセラレータユニットに指示することを含む、請求項
1又は
2に記載のコンピュータで実装される方法。
【請求項4】
前記画像ベースの追跡オペレーションのセットが、
パッチマッチングオペレーションと、
コーナー検出オペレーションの、少なくとも一方を含む、請求項
1から
3のいずれか一項に記載のコンピュータで実装される方法。
【請求項5】
前記パッチマッチングオペレーションがゼロ平均二乗和距離(ZSSD)パッチマッチングオペレーションを含み、かつ/又は
前記コーナー検出オペレーションがHarrisコーナー検出オペレーションを含み、かつ/又は
前記画像ベースの追跡オペレーションのセットがサブピクセル整列オペレーションを更に含み、
オプションで、前記サブピクセル整列オペレーションが二次元逆合成Lucas-Kanade最適化を含む、請求項
4に記載のコンピュータで実装される方法。
【請求項6】
前記入力データのセットを準備することが、事前生成された
前記環境のマップ及び前記撮像デバイスの予測姿勢に基づいて前記撮像データに含まれると予想されるフィーチャのセットを選択することを含む、請求項
1から
5のいずれか一項に記載のコンピュータで実装される方法。
【請求項7】
前記入力データのセットを準備することが、前記撮像デバイスの相対姿勢、キーフレームに含まれる確認済みフィーチャの奥行き、及び前記キーフレームに含まれる点の法線に基づいて、前記キーフレームのパッチをワーピングすることを更に含む、請求項
6に記載のコンピュータで実装される方法。
【請求項8】
前記キーフレームに含まれる前記点の前記法線の推定値が所定の閾値の範囲内にあるかどうかを判定することを更に含み、
前記キーフレームに含まれる前記点の前記法線の前記推定値が前記所定の閾値の範囲内にある場合、前記キーフレームの前記パッチをワーピングすることが、前記キーフレームに含まれる前記点の前記法線の前記推定値に基づき、
前記キーフレームに含まれる前記点の前記法線の前記推定値が前記所定の閾値の範囲内にない場合、前記キーフレームの前記パッチをワーピングすることが、前記キーフレームに対する前記撮像データに含まれる新たなフレームの予測配向に基づいて、前記キーフレームの前記パッチに含まれる前記点の前記法線を特定することを含む、請求項
7に記載のコンピュータで実装される方法。
【請求項9】
前記キーフレームの前記パッチをワーピングすることが、パッチマッチングオペレーションで利用するために、前記撮像データの前記マルチスケール表現に含まれる前記撮像データのスケール表現を算出することを更に含む、請求項
8に記載のコンピュータで実装される方法。
【請求項10】
前記ハードウェアアクセラレータユニットが、前記撮像デバイスから前記撮像データを受信し、前記撮像データの前記マルチスケール表現を生成し、かつマルチスレッドアーキテクチャにおいてトラッカスレッドにより実施されるオペレーションのセットの一部として、前記画像ベースの追跡オペレーションのセットを実行するよう、構成されており、
オプションで、入力電源の動作周波数で前記トラッカスレッドを実行することを更に含む、請求項
1から
9のいずれか一項に記載のコンピュータで実装される方法。
【請求項11】
撮像デバイス、及び
ハードウェアアクセラレータユニットを備える、
頭部装着ディスプレイ(HMD)デバイスと、
画像ベースの追跡サブシステムとを備える、システムであって、前記画像ベースの追跡サブシステムが、
前記撮像デバイスから前記ハードウェアアクセラレータユニットに撮像データを送信する、メモリに記憶された送信モジュールと、
前記撮像デバイスから送信された前記撮像データのマルチスケール表現を生成するよう前記ハードウェアアクセラレータユニットに指示する、メモリに記憶された生成モジュールと、
環境内の物体の位置を追跡するように構成された画像ベースの追跡オペレーションのセットのための入力データのセットを準備する、メモリに記憶された準備モジュール
であって、
前記入力データが、前記環境の画像と、一又は複数のセンサからのセンサデータとを含む、準備モジュールと、
生成された前記撮像データの前記マルチスケール表現及び準備され
た前記
入力データのセットを使用して前記画像ベースの追跡オペレーションのセットを実行するよう、前記ハードウェアアクセラレータユニットに指示する、メモリに記憶された実行モジュールと、
前記送信モジュール、前記生成モジュール、前記準備モジュール、及び前記実行モジュールを実行する、少なくとも1つの物理プロセッサと
、を備
え、
前記撮像データが、前記ハードウェアアクセラレータユニットのメモリにローディングされ、且つ前記画像ベースの追跡オペレーションのセットの実行中に前記ハードウェアアクセラレータユニットのメモリ内に保持され、
前記画像ベースの追跡オペレーションが、
前記センサデータに少なくとも部分的に基づいて、前記環境の前記画像内で視認可能になると予測された一又は複数の点の予測位置を、当該画像中において確認すること、及び
前記画像中の前記一又は複数の点が、確認された前記予測位置にあると判定すること
によって前記環境内の前記物体の位置を追跡する、システム。
【請求項12】
前記ハードウェアアクセラレータユニットが、
デジタル信号プロセッサ(DSP)と、
特定用途向け集積回路(ASIC)の、少なくとも一方を備える、請求項
11に記載のシステム。
【請求項13】
前記画像ベースの追跡オペレーションのセットが、
パッチマッチングオペレーションと、
コーナー検出オペレーションと、
サブピクセル整列オペレーションのうちの、少なくとも1つを含む、請求項
11又は
12に記載のシステム。
【請求項14】
前記準備モジュールが、
事前生成された
前記環境のマップ及び前記撮像デバイスの予測姿勢に基づいて前記撮像データに含まれると予想されるフィーチャのセットを選択すること、及び
前記撮像デバイスの相対姿勢、キーフレームに含まれる確認済みフィーチャの奥行き、及び前記キーフレームに含まれる点の法線に基づいて、前記キーフレームのパッチをワーピングすること
によって前記入力データのセットを準備する、請求項
11から
13のいずれか一項に記載のシステム。
【請求項15】
コンピュータ可読命令を含む非一過性のコンピュータ可読媒体であって、前記命令は、演算デバイスの少なくとも1つのプロセッサによって実行されると、前記演算デバイスに
、
撮像デバイスからハードウェアアクセラレータユニットに撮像データを送信することと、
前記撮像デバイスから送信された前記撮像データのマルチスケール表現を生成するよう前記ハードウェアアクセラレータユニットに指示することと、
環境内の物体の位置を追跡するように構成された画像ベースの追跡オペレーションのセットのための入力データのセットを準備すること
であって、
前記入力データが、前記環境の画像と、一又は複数のセンサからのセンサデータとを含む、入力データのセットを準備することと、
生成された前記撮像データの前記マルチスケール表現及び準備された前記入力データのセットを使用して前記画像ベースの追跡オペレーションのセットを実行するよう、前記ハードウェアアクセラレータユニットに指示することと
、を実行さ
せ、
前記撮像データが、前記ハードウェアアクセラレータユニットのメモリにローディングされ、且つ前記画像ベースの追跡オペレーションのセットの実行中に前記ハードウェアアクセラレータユニットメモリ内に保持され、
前記画像ベースの追跡オペレーションが、
前記センサデータに少なくとも部分的に基づいて、前記環境の前記画像内で視認可能になると予測された一又は複数の点の予測位置を、前記画像中において確認すること、及び
前記画像中の前記一又は複数の点が、確認された前記予測位置にあると判定すること
によって前記環境内の前記物体の位置を追跡する、非一過性のコンピュータ可読媒体。
【発明の詳細な説明】
【背景技術】
【0001】
拡張現実(AR)システム及び仮想現実(VR)システムは、コンピュータで生成された三次元世界シミュレーションにおいて人々と対話することや、現実世界の光景に重ね合わされたデータを視認することといった刺激的なイベントを、ユーザが体験することを可能にしうる。かかる「人工現実(artificial reality)」システムは、レクリエーション以外の目的にも使用されうる。例えば、これらのシステムを、政府が軍事訓練シミュレーションのために使用すること、医師が手術を行うために使用すること、及び技術者が視覚化補助として使用することが可能である。
【0002】
人工現実システムは、多くの場合、アイウェアデバイス若しくはヘッドセット内に一体化されるか、又は様々な外部のデバイス若しくはアクセサリに装着される、複数の画像センサ又はカメラを含む。かかるシステムは、ユーザ、ユーザデバイス、頭部装着型ディスプレイ(HMD)、及び/又は環境内のその他の物体の位置及び/又は向きを特定するために、前述の画像センサからの画像データを使用しうる。
【0003】
かかる画像ベースの追跡技術における驚くべき進歩にもかかわらず、従来型の画像ベースの追跡システムは、ユーザの体験全体に悪影響を与えうる特定の欠陥を、依然として有している。例えば、一部の従来型の画像ベースの追跡システムは、撮像データに基づいて追跡対象物の位置及び/又は配向の変化を正確に特定するために、大量の処理リソース及び/又はメモリリソースを必要としうる。したがって、これらの処理リソース及び/又はメモリリソースは、仮想環境及び/又は拡張環境のレンダリングや、ビデオデータ及び/又はオーディオデータの処理などといった、ユーザの人工現実(例えばAR/VR)体験を向上させうる別のオペレーションではなく、画像ベースの追跡オペレーション用に特化されている。
【発明の概要】
【0004】
より詳細に後述するように、本開示は、汎用処理ユニット(例えば中央処理ユニット(CPU))からハードウェアアクセラレータユニットに画像ベースの追跡オペレーションをオフローディングするための、様々なシステム及び方法について説明している。一部の例では、ハードウェアアクセラレータユニットは、デジタル信号プロセッサ(DSP)(例えば汎用DSPや特定目的DSPなど)、及び/又は特定用途向け集積回路(ASIC)でありうる。少なくとも1つの例では、DSP及び/又はASICは、システムオンチップ(SoC)アーキテクチャに含まれてよく、かつ/又はHMDに含まれうる。
【0005】
本書に記載のシステム及び方法による、汎用処理ユニットからハードウェアアクセラレータユニットへの画像ベースに追跡オペレーションをオフローディングすることは、電力リソースを節約すること、利用可能な演算ハードウェアに演算タスクを効率的に配分すること、及び/又はユーザへの拡張現実体験の提供に関連する別の演算タスクを実施するために汎用処理ユニットを解放することを可能にする。追加的及び/又は代替的な利点も、以下の開示において明らかにされよう。
【0006】
一例では、汎用処理ユニットからハードウェアアクセラレータユニットに画像ベースの追跡オペレーションをオフローディングするための、コンピュータで実装される方法は、(1)撮像デバイスからハードウェアアクセラレータユニットに撮像データを送信することと、(2)撮像デバイスから送信された撮像データのマルチスケール表現を生成するようハードウェアアクセラレータユニットに指示することとを、含みうる。一部の例では、この方法は、(1)画像ベースの追跡オペレーションのセットのための入力データのセットを準備することと、(2)生成された撮像データのマルチスケール表現及び準備された入力データのセットを使用して画像ベースの追跡オペレーションのセットを実行するよう、ハードウェアアクセラレータユニットに指示することとを、更に含みうる。
【0007】
少なくとも1つの例では、ハードウェアアクセラレータユニットは、DSPとASICの少なくとも一方を含みうる。一部の例では、ハードウェアアクセラレータユニットはSoCアーキテクチャに含まれることがある。
【0008】
一部の実施形態では、撮像デバイスから送信された撮像データのマルチスケール表現を生成するようハードウェアアクセラレータユニットに指示することは、撮像デバイスから送信された撮像データに基づいて画像ピラミッドを生成するようハードウェアアクセラレータユニットに指示することを含みうる。
【0009】
少なくとも1つの実施形態では、画像ベースの追跡オペレーションのセットは、(1)パッチマッチングオペレーションと、(2)コーナー検出オペレーションの、少なくとも一方を含みうる。一部の例では、パッチマッチングオペレーションは、ゼロ平均二乗和距離(ZSSD)パッチマッチングオペレーションを含みうる。少なくとも1つの例では、コーナー検出オペレーションはHarrisコーナー検出オペレーションを含みうる。少なくとも1つの例では、画像ベースの追跡オペレーションのセットは、サブピクセル整列オペレーションを更に含みうる。一部の例では、サブピクセル整列オペレーションは、二次元逆合成Lucas-Kanade最適化を含みうる。
【0010】
一部の例では、入力データのセットを準備することは、事前生成された環境のマップ及び撮像デバイスの予測姿勢に基づいて、撮像データに含まれると予想されるフィーチャのセットを選択することを含みうる。少なくとも1つの例では、入力データのセットを準備することは、撮像デバイスの相対姿勢、キーフレームに含まれる確認済みフィーチャの奥行き(depth)、及びキーフレームに含まれる点の法線に基づいて、キーフレームのパッチをワーピングすることを更に含みうる。
【0011】
少なくとも1つの例では、コンピュータで実装される方法は、キーフレームに含まれる点の法線の推定値が所定の閾値の範囲内にあるかどうかを判定することを、更に含みうる。一部の例では、キーフレームに含まれる点の法線の推定値が所定の閾値の範囲内にある場合、キーフレームのパッチをワーピングすることは、キーフレームに含まれる点の法線の推定値に基づきうる。一部の例では、キーフレームに含まれる点の法線の推定値が所定の閾値の範囲内にない場合、キーフレームのパッチをワーピングすることは、このキーフレームに対する撮像データに含まれる新たなフレームの予測配向に基づいて、キーフレームのパッチに含まれる点の法線を特定することを含みうる。
【0012】
一部の実施形態では、キーフレームのパッチをワーピングすることは、パッチマッチングオペレーションで利用するために、撮像データのマルチスケール表現に含まれる撮像データのスケール表現を算出することを、更に含みうる
【0013】
一部の実施形態では、ハードウェアアクセラレータユニットは、撮像デバイスから撮像データを受信し、撮像データのマルチスケール表現を生成し、マルチスレッドアーキテクチャにおいてトラッカスレッドにより実施されるオペレーションのセットの一部として、画像ベースの追跡オペレーションのセットを実行するよう、構成されうる。一部の例では、方法は、入力電源の動作周波数でトラッカスレッドを実行することを、更に含みうる。
【0014】
加えて、汎用処理ユニットからハードウェアアクセラレータユニットに画像ベースの追跡オペレーションをオフローディングすることに対応しているシステムは、撮像デバイス及びハードウェアアクセラレータユニットを含みうるHMDデバイスを含むことがある。少なくとも1つの例では、ハードウェアアクセラレータユニットは、DSP及び/又はASICを含みうる。
【0015】
システムは、画像ベースの追跡サブシステムを更に含んでよく、この画像ベースの追跡サブシステムは、(1)撮像デバイスからハードウェアアクセラレータユニットに撮像データを送信する送信モジュールと、(2)撮像デバイスから送信された撮像データのマルチスケール表現を生成するようハードウェアアクセラレータユニットに指示する生成モジュールとを含む、メモリに記憶されたいくつかのモジュールを含みうる。一部の例では、画像ベースの追跡サブシステムは、(1)画像ベースの追跡オペレーションのセットのための入力データのセットを準備する準備モジュールと、(2)生成された撮像データのマルチスケール表現及び準備された入力データのセットを使用して画像ベースの追跡オペレーションのセットを実行するよう、ハードウェアアクセラレータユニットに指示する実行モジュールとを、更に含みうる。少なくとも1つの例では、画像ベースの追跡サブシステムは、送信モジュール、生成モジュール、準備モジュール、及び実行モジュールを実行する、少なくとも1つの物理プロセッサを更に含みうる。
【0016】
少なくとも1つの例では、画像ベースの追跡オペレーションのセットは、(1)パッチマッチングオペレーション、(2)コーナー検出オペレーション、(3)サブピクセル整列オペレーション、のうちの少なくとも1つを含みうる。
【0017】
一部の例では、準備モジュールは、(1)事前生成された環境のマップ及び撮像デバイスの予測姿勢に基づいて、撮像データに含まれると予想されるフィーチャのセットを選択すること、及び(2)撮像デバイスの相対姿勢、キーフレームに含まれる確認済みフィーチャの奥行き、及びキーフレームに含まれる点の法線に基づいて、キーフレームのパッチをワーピングすること、によって入力データのセットを準備しうる。
【0018】
一部の例では、上述した方法は、コンピュータ可読媒体上のコンピュータ可読命令として符号化されうる。例えば、コンピュータ可読媒体は、コンピュータで実行可能な一又は複数の命令であって、演算デバイスの少なくとも1つのプロセッサによって実行されると、この演算デバイスに、(1)撮像デバイスからハードウェアアクセラレータユニットに撮像データを送信することと、(2)撮像デバイスから送信された撮像データのマルチスケール表現を生成するようハードウェアアクセラレータユニットに指示することとを実行させうる、一又は複数の命令を含みうる。
【0019】
少なくとも1つの例では、コンピュータ可読媒体は、コンピュータで実行可能な一又は複数の命令であって、演算デバイスのプロセッサによって実行されると、この演算デバイスに、(1)画像ベースの追跡オペレーションのセットのための入力データのセットを準備することと、(2)生成された撮像データのマルチスケール表現及び準備された入力データのセットを使用して画像ベースの追跡オペレーションのセットを実行するよう、ハードウェアアクセラレータユニットに指示することとを実行させる、一又は複数の命令を更に含みうる。
【0020】
上述したどの実施形態の特徴も、本書に記載の一般原則に従って互いに組み合わされて使用されうる。上記の実施形態、特徴、及び利点、並びにその他の実施形態、特徴、及び利点は、付随する図面及び特許請求の範囲と併せて以下の詳細説明を読むことで、より網羅的に理解されよう。
【0021】
本発明による実施形態では、一又は複数の非一時的なコンピュータ可読記憶媒体はソフトウェアを具現化してよく、このソフトウェアは、実行されると、本発明による方法、又は上述の実施形態のいずれかを実施するよう動作可能である。
【0022】
本発明による実施形態では、システムは、一又は複数のプロセッサと、プロセッサに連結された少なくとも1つのメモリであって、プロセッサによって実行可能な命令を含むメモリを備えてよく、プロセッサは、命令を実行する時に、本発明による方法、又は上述の実施形態のいずれかを実施するよう動作可能である。
【0023】
本発明による実施形態では、コンピュータプログラム製品(好ましくは非一時的なコンピュータ可読記憶媒体を含むもの)は、データ処理システム上で実行されると、本発明による方法、又は上述の実施形態のいずれかを実施するよう動作可能でありうる。
【0024】
本発明による実施形態は特に、方法、システム、及び記憶媒体を対象とする付随する特許請求の範囲において開示されており、1つのクレームカテゴリ(例えば方法)において言及される特徴はいずれも、別のクレームカテゴリ(例えばシステム、記憶媒体、及びコンピュータプログラム製品)においても同様に特許請求されうる。付随する特許請求の範囲における従属関係又は戻り参照は、形式的な理由によってのみ選択される。しかし、先行の請求項のいずれかを意図的に戻り参照すること(特に複数従属)によりもたらされる主題があればそれも、同様に特許請求されてよく、これにより、付随する特許請求の範囲において選択される従属とは無関係に、請求項とその特徴との任意の組み合わせが開示されることになり、かつ特許請求されうる。特許請求されうる主題は、付随する特許請求の範囲に明示されている特徴の組み合わせだけでなく、特許請求の範囲における特徴の他の任意の組み合わせも含み、特許請求の範囲で言及されている特徴の各々は、特許請求の範囲における他の特徴又は他の特徴同士の組み合わせのうちの任意のものと組み合わされうる。更に、本書で説明又は描写されている実施形態及び特徴はいずれも、別個の請求項で、かつ/又は、本書で説明若しくは描写されている実施形態若しくは特徴のいずれかとの任意の組み合わせ又は付随する請求項の特徴のいずれかとの任意の組み合わせで、特許請求されうる。
【0025】
添付図面は、いくつかの例示的な実施形態を示しており、本明細書の一部をなしている。これらの図面は、以下の説明と共に、本開示の様々な原理を実証し、解説するものである。
【図面の簡単な説明】
【0026】
【
図1】汎用処理ユニットからハードウェアアクセラレータユニットに画像ベースの追跡オペレーションをオフローディングするための例示的なシステムのブロック図である。
【
図2】汎用処理ユニットからハードウェアアクセラレータユニットに画像ベースの追跡オペレーションをオフローディングするためのシステムの例示的な一実行形態のブロック図である。
【
図3】汎用処理ユニットからハードウェアアクセラレータユニットに画像ベースの追跡オペレーションをオフローディングするための例示的な方法のフロー図である。
【
図4】撮像デバイスから送信された撮像データのマルチスケール表現を生成するようハードウェアアクセラレータユニットに指示することの、一例を示す。
【
図5】事前生成された環境のマップ及び撮像デバイスの予測姿勢に基づいて撮像データに含まれると予想されるフィーチャのセットを選択することによって、画像ベースの追跡オペレーションのセットのための入力データのセットを準備することの、一例を示す。
【
図6A-6B】撮像デバイスの相対姿勢、キーフレームに含まれる確認済みフィーチャの奥行き、及びキーフレームに含まれる点の法線に基づいてキーフレームのパッチをワーピングすることによって入力データのセットを準備することの、一例を示す。
【
図7】生成された撮像データのマルチスケール表現及び準備された入力データのセットを使用してパッチマッチングオペレーションを実行するよう、ハードウェアアクセラレータユニットに指示することの、一例を示す。
【
図8】汎用処理ユニットからハードウェアアクセラレータユニットに画像ベースの追跡オペレーションをオフローディングする、画像ベースの追跡システムの例示的な一実行形態の動作フロー図である。
【発明を実施するための形態】
【0027】
図面全体を通じて、同一の参照符号及び説明は、必ずしも同一ではないが類似した要素を示している。本書に記載の例示的な実施形態は様々な改変形態及び代替形態を許容可能であるが、特定の実施形態が、例として図面に示され、本書で詳細に説明されている。しかし、本書に記載の例示的な実施形態は、開示されている特定の形態に限定されることを意図するものではない。むしろ、本開示は、付随する特許請求の範囲に含まれる全ての改変形態、均等物、及び代替形態を包含する。
【0028】
本開示は概して、汎用処理ユニットからハードウェアアクセラレータユニットに画像ベースの追跡オペレーションをオフローディングするためのシステム及び方法を対象としている。より詳細に後述するように、本開示の実施形態は、撮像デバイス(例えば、電磁スペクトルの少なくとも一部分において光情報を収集することが可能なカメラ)から、DSP(例えば汎用及び/若しくは専用のDSP)並びに/又はASICといったハードウェアアクセラレータユニットに、撮像データ(例えば一又は複数の画像や、一又は複数の画像に関連する画像メタデータなど)を送信しうる。一部の例では、ハードウェアアクセラレータユニットはSoCアーキテクチャ内に含まれてよく、このSoCアーキテクチャは、一又は複数の汎用処理ユニット(例えばCPUやグラフィック処理ユニット(GPU)など)も含みうる。
【0029】
一実施形態は、撮像デバイスから送信された撮像データのマルチスケール表現(画像ピラミッドなど)を生成するよう、ハードウェアアクセラレータユニットに指示することもある。かかる画像ピラミッドは、様々な画像ベースの追跡オペレーションで使用されうる撮像データの複数のスケール(例えばサイズ及び/又は解像度)を表わしうる。
【0030】
一部の例では、一実施形態は、画像ベースの追跡オペレーションのセットのための入力データのセットを準備することもある。一実施形態は次いで、生成された撮像データのマルチスケール表現及び準備された入力データのセットを使用して画像ベースの追跡オペレーションのセットを実行するよう、ハードウェアアクセラレータユニットに指示しうる。
【0031】
撮像データをハードウェアアクセラレータユニットに送信すること、撮像データのマルチスケール表現を生成するようハードウェアアクセラレータユニットに指示すること、画像ベースの追跡オペレーションのセットのための入力データのセットを準備すること、及び画像ベースの追跡オペレーションのセットを実行するようハードウェアアクセラレータユニットに指示することによって、本書に記載のシステム及び方法は、コストが大きくなることも考えられるかかる画像ベースの追跡オペレーションを、汎用処理ユニット(例えばCPUやGPUなど)からハードウェアアクセラレータユニット(例えばDSP及び/又はASIC)に有効にオフローディングしうる。これにより、他の用途(例えば人工環境の生成や別の演算デバイスとの通信など)のために、演算リソース(例えば処理リソース)が解放されうる。
【0032】
更に、一部の例では、好適なハードウェアアクセラレータユニット(例えばDSP及び/又はASIC)は、従来型の人工現実システム及び/又は従来型のHMDによって利用されるSoCアーキテクチャ内に既に含まれていることもある。そうでなければ、ハードウェアアクセラレータユニットは、かかる従来型のシステムによって十分に利用されない可能性がある。ゆえに、本書に記載しているように汎用処理ユニットからハードウェアアクセラレータユニットに画像ベースの追跡オペレーションをオフローディングすることは、かかる既存のハードウェア演算リソースのより効率的な利用を提供しうる。
【0033】
下記では、
図1~2及び
図4~8を参照しつつ、汎用処理ユニットからハードウェアアクセラレータユニットに画像ベースの追跡オペレーションをオフローディングするためのシステムについての詳細説明を提示する。対応するコンピュータで実装される方法についての詳細説明も、
図3に関連付けて提示する。
【0034】
図1は、汎用処理ユニットからハードウェアアクセラレータユニットに画像ベースの追跡オペレーションをオフローディングするための例示的なシステム100のブロック図である。この図に示しているように、例示的なシステム100は、一又は複数のタスクを実施するための一又は複数のモジュール102を含みうる。より詳細に後述するように、モジュール102は、撮像デバイスからハードウェアアクセラレータユニットに撮像データを送信しうる送信モジュール104と、撮像デバイスから送信された撮像データのマルチスケール表現を生成するようハードウェアアクセラレータユニットに指示しうる生成モジュール106とを含みうる。例示的なシステム100は、画像ベースの追跡オペレーションのセットのための入力データのセットを準備しうる準備モジュール108と、生成された撮像データのマルチスケール表現及び準備された入力データのセットを使用して画像ベースの追跡オペレーションのセットを実行するよう、ハードウェアアクセラレータユニットに指示しうる実行モジュール110とを、更に含みうる。
【0035】
図1に更に示しているように、例示的なシステム100は、一又は複数のメモリデバイス(メモリ120など)も含みうる。メモリ120は、一般に、データ及び/又はコンピュータ可読命令を記憶することが可能な、任意の種類又は形態の揮発性又は不揮発性の記憶デバイス又は記憶媒体を表わす。一例では、メモリ120は、モジュール102のうちの一又は複数を記憶し、ローディングし、かつ/又は維持しうる。メモリ120の例は、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、フラッシュメモリ、ハードディスクドライブ(HDD)、ソリッドステートドライブ(SSD)、光ディスクドライブ、キャッシュ、又はこれらの(若しくはその他の任意の)好適な記憶メモリのうちの一又は複数の変形形態若しくは組み合わせを含むが、これらに限定されるわけではない。
【0036】
図1に更に示しているように、例示的なシステム100は、一又は複数の物理プロセッサ(物理プロセッサ130など)も含みうる。物理プロセッサ130は、一般に、コンピュータ可読命令を解釈しかつ/又は実行することが可能な、任意の種類又は形態のハードウェアで実装される汎用処理ユニットを表わす。一例では、物理プロセッサ130は、メモリ120に記憶されたモジュール102のうちの一又は複数にアクセスし、かつ/又はそれらを改変しうる。追加的又は代替的には、物理プロセッサ130は、汎用処理ユニット(例えば物理プロセッサ130)からハードウェアアクセラレータユニットへの画像ベースの追跡オペレーションのオフローディングを容易にするために、モジュール102のうちの一又は複数を実行しうる。物理プロセッサ130の例は、マイクロプロセッサ、マイクロコントローラ、CPU、ソフトコアプロセッサを実装するフィールドプログラマブルゲートアレイ(FPGA)、ASIC、これらのうちの一又は複数の部分、これらのうちの一又は複数の変形形態若しくは組み合わせ、又は他の任意の好適な物理プロセッサを含みうるが、これらに限定されるわけではない。
【0037】
図1に更に示しているように、メモリ120及び物理プロセッサ130は、画像ベースの追跡サブシステム140の部分として含まれうる。画像ベースの追跡サブシステム140は、システム100の一部として含まれうる任意の好適なシステムであって、環境内の物体の位置及び/又は配向を追跡するために撮像データを使用するよう構成されうる、任意の好適なシステムでありうる。
【0038】
一部の実施形態では、
図1に更に示しているように、画像ベースの追跡サブシステム140は、HMD150と通信しうる。一部の例では、「頭部装着ディスプレイ(head-mounted display)」及び「頭部装着ディスプレイデバイス(head-mounted display device)」という語は、一般に、ユーザの頭部に又はその周りに装備されるよう構成され、かつユーザに視覚コンテンツを表示するよう構成されている、任意の種類又は形態の表示用のデバイス又はシステムのことを指しうる。頭部装着ディスプレイは、ディスプレイ画面(例えば液晶ディスプレイ(LCD)画面、発光ダイオード(LED)ディスプレイ画面、又は有機LED(OLED)ディスプレイ画面)、プロジェクタ、陰極線管、光学ミキサなどを介するものを含む、任意の好適な方式で、コンテンツを表示しうる。頭部装着ディスプレイは、様々なメディアフォーマットのうちの一又は複数でコンテンツを表示しうる。例えば、頭部装着ディスプレイは、ビデオ、写真、及び/又はコンピュータ生成画像(CGI)を表示しうる。HMD150は、より詳細に後述するように、撮像デバイス152及びハードウェアアクセラレータユニット154を更に含みうる。一部の例では、画像ベースの追跡サブシステム140は、HMD150の一部として(例えば、HMD150と共通のハウジング内に)含まれうる。他の例では、画像ベースの追跡サブシステム140(又はその構成要素のいずれか)は、HMD150の外部にあってよく、かつ/又はHMD150と物理的に接続されていないことがあり、一又は複数の無線プロトコルを介してHMD150と通信しうる。
【0039】
頭部装着ディスプレイは、多様かつ独特なユーザ体験を提供しうる。一部の頭部装着型ディスプレイは仮想現実体験を提供可能である(すなわち、コンピュータで生成された又は事前に記録されたコンテンツを表示可能である)一方、他の頭部装着型ディスプレイは、現実体験を提供しうる(すなわち、物理的世界からのライブ画像を表示しうる)。頭部装着ディスプレイは、ライブコンテンツと仮想コンテンツとが混合されればその混合物も提供しうる。例えば、仮想コンテンツは(例えば、光学シースルー又はビデオシースルーを介して)物理的世界に投影されてよく、これにより、拡張現実体験又は混合現実体験がもたらされうる。頭部装着型ディスプレイは、いくつものやり方でユーザの頭部に装着されるよう構成されうる。一部の頭部装着ディスプレイは、眼鏡又はバイザー(visor)に組み込まれることがある。その他の頭部装着ディスプレイは、ヘルメット、帽子、又はその他のヘッドウェアに組み込まれうる。
【0040】
図1の例示的なシステム100は様々なやり方で実装されうる。例えば、例示的なシステム100の全部又は一部が、
図2の例示的なシステム200(「システム200」)の部分を表わすこともある。
図2に示しているように、システム200は、ネットワーク204を介してHMD150と通信する演算デバイス202を含みうる。少なくとも1つの例では、演算デバイス202は、モジュール102のうちの一又は複数でプログラミングされうる。追加的又は代替的には、HMD150が、モジュール102のうちの一又は複数でプログラミングされうる。
【0041】
少なくとも1つの実施形態では、
図1の一又は複数のモジュール102は、演算デバイス202及び/又はHMD150によって実行されると、演算デバイス202及び/又はHMD150が、汎用処理ユニットからハードウェアアクセラレータユニットに画像ベースの追跡オペレーションをオフローディングするための一又は複数のオペレーションを実施することを可能にしうる。例えば、より詳細に後述するように、送信モジュール104は、演算デバイス202及び/又はHMD150に、撮像デバイス(例えば撮像デバイス152)からハードウェアアクセラレータユニット(例えばハードウェアアクセラレータユニット154)に撮像データ(例えば撮像データ206)を送信させうる。一部の実施形態では、生成モジュール106は、演算デバイス202及び/又はHMD150に、撮像デバイス(例えば撮像デバイス152)から送信された撮像データのマルチスケール表現(例えばマルチスケール表現208)を生成するようハードウェアアクセラレータユニット(例えばハードウェアアクセラレータユニット154)に指示させうる。
【0042】
更に、一部の例では、準備モジュール108は、演算デバイス202及び/又はHMD150に、画像ベースの追跡オペレーションのセット(例えば追跡オペレーション212)のための入力データのセット(例えば入力データ210)を準備させうる。更に、一部の例では、実行モジュール110は、生成された撮像データのマルチスケール表現(例えばマルチスケール表現208)及び準備された入力データのセット(例えば入力データ210)を使用して画像ベースの追跡オペレーションのセット(例えば追跡オペレーション212)を実行するよう、ハードウェアアクセラレータユニット(例えばハードウェアアクセラレータユニット154)に指示しうる。
【0043】
演算デバイス202は、一般に、コンピュータで実行可能な命令を読み取ること及び/又は実行することが可能な、任意の種類又は形態の演算デバイスを表わす。少なくとも1つの実施形態では、演算デバイス202は、HMD150から一又は複数の指示を受け取りうる。演算デバイス202の例は、サーバ、デスクトップ、ラップトップ、タブレット、携帯電話(例えばスマートフォン)、携帯情報端末(PDA)、マルチメディアプレーヤ、埋め込みシステム、ウェアラブルデバイス(例えばスマートウォッチやスマートグラスなど)、ゲームコンソール、これらのうちの一又は複数の組み合わせ、又はその他の任意の好適な演算デバイスを含むが、これらに限定されるわけではない。
【0044】
ネットワーク204は、一般に、演算デバイス202とHMD150間の通信及び/又はデータ転送を容易にすることが可能な任意の媒体又はアーキテクチャを表わす。ネットワーク204の例は、イントラネット、WAN、LAN、パーソナルエリアネットワーク(PAN)、インターネット、電力線通信(PLC)、セルラーネットワーク(例えばグローバルシステムフォーモバイルコミュニケーションズ(GSM)ネットワーク、符号分割多元接続(CDMA)ネットワーク、ロングタームエボリューション(LTE)ネットワークなど)、ユニバーサルシリアルバス(USB)接続、一又は複数の専用データ接続などを含むが、これらに限定されるわけではない。ネットワーク204は、無線又は有線の接続を使用して通信又はデータ転送を容易にしうる。一実施形態では、ネットワーク204は、演算デバイス202とHMD150との間の通信を容易にしうる。
【0045】
少なくとも1つの例では、演算デバイス202及びHMD150は、モジュール102のうちの一又は複数でプログラミングされた演算デバイスでありうる。モジュール102の機能の全部又は一部は、演算デバイス202、HMD150、及び/又は他の任意の好適な演算システムによって実施されうる。より詳細に後述するように、
図1のモジュール102のうちの一又は複数は、演算デバイス202及び/又はHMD150の少なくとも1つのプロセッサによって実行されると、汎用処理ユニットからハードウェアアクセラレータユニットに画像ベースの追跡オペレーションをオフローディングしうる。
【0046】
その他の多数のデバイス又はサブシステムが、
図1のシステム100及び/又は
図2のシステム200に接続されうる。逆に、本書で説明及び/又は図示している実施形態を実践するために、
図1及び
図2に示している構成要素及びデバイスの全てが存在する必要はない。上記で言及されているデバイス及びサブシステムは、
図2に示しているものとは異なるやり方で相互接続されることもある。システム100及び200は、任意の数のソフトウェア構成、ファームウェア構成、及び/又はハードウェア構成を採用することもある。例えば、本書で開示している例示的な実施形態のうちの一又は複数は、コンピュータ可読媒体上のコンピュータプログラム(コンピュータソフトウェア、ソフトウェアアプリケーション、コンピュータ可読命令、及び/又はコンピュータ制御論理とも称される)として符号化されうる。
【0047】
図3は、汎用処理ユニットからハードウェアアクセラレータユニットに画像ベースの追跡オペレーションをオフローディングするための、コンピュータで実装される例示的な方法300のフロー図である。
図3に示しているステップは、
図1のシステム100、
図2のシステム200、及び/又はこれらのうちの一又は複数の変形形態若しくは組み合わせを含む、コンピュータで実行可能な任意の好適なコード及び/又は演算システムによって実施されうる。一例では、
図3に示しているステップの各々は、あるアルゴリズムを表わしうる。このアルゴリズムの構造は複数のサブステップを含み、かつ/又は複数のサブステップによって表わされる。以下で、かかるサブステップの例をより詳細に提示する。
【0048】
図3に示しているように、ステップ310において、本書に記載のシステムのうちの一又は複数は、撮像デバイスからハードウェアアクセラレータユニットに撮像データを送信しうる。例えば、送信モジュール104が、演算デバイス202及び/又はHMD150に、撮像デバイス152からハードウェアアクセラレータユニット154に撮像データ206を送信させうる。
【0049】
撮像デバイス152は、環境に関連する撮像データ206を収集しうる任意の好適なデバイスを含みうる。例えば、撮像デバイス152は、可視光カメラ、赤外線カメラ、熱カメラ、レーダーセンサなど(これらに限定されるわけではない)を含みうる。一部の例では、撮像デバイス152は、HMD(例えばHMD150)に含まれたカメラであって、画像ベースの追跡システム(例えば画像ベースの追跡サブシステム140)と通信する、カメラを含みうる。少なくとも1つの例では、撮像デバイス152は、画像ベースの追跡システム(例えば画像ベースの追跡サブシステム140)に含まれ、かつ/さもなければ画像ベースの追跡システムと通信する、複数の撮像デバイスに含まれることもある。
【0050】
一部の実施形態では、撮像デバイス152は従来型の撮像デバイス(例えばカメラ)を含むことがあり、これにより、撮像デバイス152によって捕捉され、撮像データ206によって表わされる信号が、二次元撮像データ(例えば、奥行き情報を有さない撮像データ)を含みうる。一部の実施形態では、撮像デバイス152は、撮像デバイス152からの撮像データ206を使用して奥行き情報を特定しかつ/又は生成しうる別のデバイス(例えば、画像ベースの追跡サブシステム140の一又は複数の構成要素)に、対応する撮像データを送信しうる。
【0051】
ハードウェアアクセラレータユニット154は、汎用処理ユニット(例えば物理プロセッサ130)から画像ベースの追跡オペレーションがオフローディングされうる、任意の好適なハードウェアデバイスを含みうる。一部の例では、ハードウェアアクセラレータユニット154は、SoCアーキテクチャに含まれたDSP及び/又はASICを含みうる。
【0052】
一部の例では、「デジタル信号プロセッサ(digital signal processor)」は、アナログ信号を表わす数値データの高速の(例えばリアルタイムの)処理(例えば測定、フィルタリング、圧縮など)を含むがこれに限定されるわけではない、デジタル信号処理オペレーションを加速するために、専用の命令セット及び/又はハードウェアアーキテクチャを実装する、任意のハードウェアデバイスを含みうる。少なくとも1つの例では、DSPは、汎用処理ユニットよりも良好なパフォーマンス、短いレイテンシ、及び少ない電力制約を伴って、かかるデジタル信号処理オペレーションを実施するよう構成されうる。少なくとも一部の実施形態では、デジタル信号プロセッサは、ベクトル演算を加速するよう構成されたベクトルユニット及び/又はベクトル命令セットを含みうる。
【0053】
一部の例では、「特定用途向け集積回路(application-specific integrated circuit)」は、特定の用途向けにカスタマイズされた任意の集積回路を含みうる。少なくとも1つの例では、ASICは、汎用処理ユニットよりも良好な性能、短いレイテンシ、及び少ない電力制約を伴って、特定の処理オペレーション(例えばベクトル演算)を実施するよう構成されうる。
【0054】
更に、一部の例では、「システムオンチップ(system-on-a-chip)」及び/又は「システムオンチップアーキテクチャ(system-on-a-chip architecture)」は、単一の集積回路内及び/又は基板内に演算構成要素が集積している、演算アーキテクチャ及び/又は演算デバイスを含みうる。一部の実施形態では、SOCアーキテクチャは、単一の集積回路内及び/又は基板内に集積された、汎用処理ユニット、ハードウェアアクセラレータユニット(例えばDSPやASICなど)、メモリデバイス、GPU等(ただしこれらに限定されるわけではない)を含みうる。
【0055】
送信モジュール104は、任意の好適なやり方で、演算デバイス202及び/又はHMD150に、撮像デバイス152からハードウェアアクセラレータユニット154に撮像データ206を送信させうる。例えば、撮像デバイス152は、撮像デバイス152及び/又はHMD150の一部又は全部を取り囲むシーン又は局所領域を特徴付けうる撮像データ206を捕捉しうる。送信モジュール104は次いで、HMD150に、撮像デバイス152から好適なデータ接続(例えば内部バス、周辺バス、ネットワーク204の一又は複数の構成要素など)を介してハードウェアアクセラレータユニット154に、撮像データ206を送信させうる。
【0056】
再び
図3を参照するに、ステップ320において、本書に記載のシステムのうちの一又は複数は、撮像デバイスから送信された撮像データのマルチスケール表現を生成するようハードウェアアクセラレータユニットに指示しうる。例えば、生成モジュール106が、演算デバイス202及び/又はHMD150に、撮像デバイス152から送信された撮像データ206のマルチスケール表現208を生成するようハードウェアアクセラレータユニット154に指示させうる。
【0057】
生成モジュール106は、演算デバイス202及び/又はHMD150に、様々なコンテキストで撮像デバイス152から送信された撮像データ206のマルチスケール表現208を生成するようハードウェアアクセラレータユニット154に指示させうる。例えば、生成モジュール106は、演算デバイス及び/又はHMD150に、撮像データ206に基づいて画像ピラミッドを生成するようハードウェアアクセラレータユニット154に指示させうる。
【0058】
一部の例では、「画像ピラミッド(image pyramid)」は、画像ピラミッドの先行レベルの、ローパスフィルタリングされた低密度の(例えばダウンサンプリングされた)一又は複数の画像を含んでよく、この場合の基準レベルは、オリジナル画像(例えば、撮像デバイス152などの撮像デバイスによって捕捉された二次元画像)と定義されうる。
【0059】
加えて、画像ピラミッドの基本レベルは、任意の好適な画像操作のプロセス及び/又は技法に従って既に前処理された画像でありうる。例えば、本書に記載のシステムのうちの一又は複数(例えば、モジュール102のうちの一又は複数)は、オリジナル画像内に存在しうるエイリアシングアーティファクト(aliasing artifact)を抑制するために、撮像デバイス152によって捕捉された画像にガウス(Gaussian)ぼけ関数を適用しうる。本書に記載のシステムのうちの一又は複数(例えば、モジュール102のうちの一又は複数)は次いで、ぼかされた画像を画像ピラミッドの基本レベルに指定しうる。
【0060】
一部の例では、画像ピラミッドは、以下に示しているように、再帰的に定義されうる。
レベルl=0の場合、G
0(x,y)=I(x,y)、かつ
であり、ここで、w(m,n)は重み関数である。この重み関数は、分離可能かつ/又は対称であってよく、レベルl+1において、ノードに一定の総重みを付与しうる。かかる画像ピラミッドは、ガウス画像ピラミッドと称されうる。他の例では、画像ピラミッドの各成分は、オリジナル画像に適用された等価重み関数により得られた平均値(例えば、局所平均値)を表わしうる。かかる例では、画像ピラミッドは、様々なスケールにおける局所平均値を包含しうる。
【0061】
図4は、撮像デバイスから送信された撮像データのマルチスケール表現を生成するようハードウェアアクセラレータユニットに指示することの一例を、例として示している。図示しているように、
図4は、4つのレベルを有する画像ピラミッドを含む、マルチスケール表現208の一例を示している。レベル402は、撮像データ206の一部分(例えば、撮像デバイス152によって捕捉され、ハードウェアアクセラレータユニット154に送信される二次元画像)を表わしうる。
図4はレベル404(例えばレベル404-1~404-3)を更に示しており、これらは各々、レベル402の漸進的にダウンサンプリングされたバージョンを表わしている。例えば、レベル404-1はレベル402のダウンサンプリングされたバージョンを表わし、レベル404-2はレベル404-1のダウンサンプリングされたバージョンを表わし、以下同様でありうる。追加的又は代替的には、レベル404-1は、レベル402の、第1ダウンサンプリング関数がレベル402に適用されたバージョンを表わし、レベル404-2は、レベル402の、第2ダウンサンプリング関数がレベル402に適用されたバージョンを表わし、以下同様でありうる。
【0062】
生成モジュール106は、任意の好適なやり方でマルチスケール表現208を生成するようハードウェアアクセラレータユニット154に指示しうる。例えば、ハードウェアアクセラレータユニット154は、撮像デバイス152から撮像データ206を受信した上で、撮像データ206に含まれる画像を平滑化し、複数レベルの画像ピラミッドを得るために複数回ダウンサンプリングしうる。少なくとも1つの例では、ハードウェアアクセラレータユニット154は、4つのレベルの画像ピラミッドを得るために、撮像データ206に含まれる画像を3回ダウンサンプリングしうる。一部の例では、ハードウェアアクセラレータユニット154は、多次元(例えば、3×3、4×4、5×5など)カーネルでの畳み込みにより、画像を平滑化しうる。ゆえに、少なくとも1つの例では、ハードウェアアクセラレータユニット154は、3×3のダウンサンプリングカーネルで、撮像データ206を連続的に平滑化し、(例えば、2などの好適なダウンサンプル比を用いて)ダウンサンプリングすることによって、撮像データ206から画像ピラミッドを作成しうる。
【0063】
ハードウェアアクセラレータユニット154は、ハードウェアアクセラレータユニット154に関連する命令セットに含まれる一又は複数の命令を実行することによって、前述のオペレーション(例えば平滑化、ダウンサンプリング、集約など)を実行しうる。例えば、ハードウェアアクセラレータユニット154は、乗算(例えばハーフワード、ワードバイハーフ、ベクトル縮小、及び/又は二重乗算)、ワード及び/又はハーフワードのデータに対する算術シフト及び/又は論理シフト、自動スケーリングなどといった、様々なベクトル演算を効率的に実行するよう構成されうる。ハードウェアアクセラレータユニット154は、撮像データ206からマルチスケール表現208を生成するために、このような効率的なベクトル演算のうちの一又は複数を利用しうる。ゆえに、上述した畳み込み(例えば、3×3カーネルでの畳み込みによって撮像データ206に含まれる画像を平滑化すること)が、ハードウェアアクセラレータユニット154に効率的に実装されうる。
【0064】
再び
図3を参照するに、ステップ330において、本書に記載のシステムのうちの一又は複数は、画像ベースの追跡オペレーションのセットのための入力データのセットを準備しうる。例えば、準備モジュール108が、演算デバイス202及び/又はHMD150に、追跡オペレーション212のための入力データ210を準備させうる。
【0065】
一部の例では、「画像ベースの追跡オペレーション(image-based tracking operation)」は、環境内の点の位置を特定するために使用されうる任意のオペレーションを含みうる。より詳細に後述するように、画像ベースの追跡オペレーションは、画像ピラミッドの生成、パッチマッチングオペレーション、サブピクセル整列オペレーション、コーナー検出オペレーション、ガンマ補正オペレーション(例えばガンマ圧縮オペレーションやガンマ展開オペレーションなど)等を含みうるが、これらに限定されるわけではない。一部の例では、入力データ210は、ハードウェアアクセラレータユニット154が一又は複数の画像ベースの追跡オペレーションを実行するために利用しうる、任意のデータを含みうる。
【0066】
準備モジュール108は、演算デバイス202及び/又はHMD150に、様々なコンテキストの追跡オペレーション212のための入力データ210を準備させうる。例えば、準備モジュール108は、撮像データ206に含まれると予想されるフィーチャのセットを選択することにより、演算デバイス202及び/又はHMD150に追跡オペレーション212のための入力データ210を準備させうる。例えば、準備モジュール108は、環境のマップと追跡対象物(例えばHMD150)の予測姿勢とを表わすデータを受信して(例えば、かかるデータを読み取って、かかるデータにアクセスして、かかるデータを取得して)よく、これらのマップ及び予測姿勢に基づいて、撮像データ206(例えば、撮像データ206に含まれる二次元画像)内で視認可能になると予想されうる点のセットを特定しうる。
【0067】
更に、一部の例では、準備モジュール108は、キーフレーム(例えば、キーフレームに関連する確認子)を選択しかつ/又は受信してよく、かつ、キーフレームの隣接グラフを探し出して、一又は複数の追加キーフレームをキーフレームと重複しうる視野に同定しうる。キーフレーム及び追加キーフレームに基づいて、準備モジュール108は、キーフレームから視認可能でありうる点のセットを特定しうる。準備モジュール108は次いで、特定された点のセットを予測されたカメラ姿勢のフレーム内に投影しうる。準備モジュール108は次いで、この点のセットが、撮像データ206に含まれる画像の境界内に含まれるよう投影されているかどうかを判定しうる。撮像データ206に含まれる画像の境界内に含まれるよう上手く投影されている点は次いで、入力データ210の一部として、ハードウェアアクセラレータユニット154に記憶されかつ/又は送られうる。一部の例では、「キーフレーム(keyframe)」は、別のフレームを参照することなく復号されうるデジタルビデオストリームに含まれる(例えば、撮像デバイス152からの撮像データ206に含まれる)任意のフレームを含みうる。
【0068】
図5は、事前生成された環境のマップ及び撮像デバイスの予測姿勢に基づいて撮像データに含まれると予想されるフィーチャのセットを選択することによって、画像ベースの追跡オペレーションのセットのための入力データのセットを準備することの
図500を、例として示している。図示しているように、
図5はキーフレーム502及び投影フレーム504を含んでいる。上述したように、キーフレーム502は、撮像データ206に含まれうる現行フレームに(例えば時間的に、空間的に)最も近いと準備モジュール108が判定した、キーフレームでありうる。投影フレーム504は、撮像デバイス152の予測姿勢に基づく現行フレームの推定を表わしうる。経路506は、環境を通る追跡対象物(例えば、HMD150)の経路を表わしてよく、位置508(例えば位置508-~508-3)は、以前に特定された追跡対象物(例えばHMD150)の位置、及び/又は環境内での追跡対象物の以前の位置を特定するために使用された撮像データの先行フレームを表わしうる。
【0069】
図5に更に示しているように、予測位置510は、準備モジュール108が、追跡対象物(例えばHMD150)に関連する一又は複数の慣性測定ユニット(IMU)から集められた慣性データ512に基づいて、投影フレーム504に関連する追跡対象物(例えばHMD150)の予測位置及び/又は予測配向を既に予測していることを示す。
【0070】
点514(例えば点514-1~514-3)は、キーフレーム502に含まれる点でありうる。点514は、更に環境に更に関連付けられてもよく、かつ環境のマップに含まれうる。点514に関連する奥行きインジケータ516(例えば奥行きインジケータ516-1~516-2)は、撮像デバイス(例えば撮像デバイス152)がキーフレーム502を捕捉した時点における、撮像デバイスの特定された位置に対する点514の特定された奥行きを表わしうる。投影された奥行きインジケータ518は、投影フレーム504内の点514-3の投影された奥行きを表わしうる。
【0071】
ゆえに、
図5に示しているように、準備モジュール108は、点514(例えば点514-1~514-3)がキーフレーム502内で視認可能であると判定しうる。準備モジュール108は次いで、投影フレーム504内に点514を投影し、点514-が投影フレーム504の境界内に含まれるよう投影されていると判定しうる。ゆえに、準備モジュール108は、入力データ210の一部として、点514-3に関連するデータ(例えば、撮像データ206に含まれる画像内の点514-3の投影位置や、撮像デバイス152が撮像データ206を捕捉した時点における撮像デバイス152の位置に対する点514-の投影された奥行きなど)を含んでよく、点514-3に関連するデータを使用して一又は複数の画像ベースの追跡オペレーションを実行するよう、ハードウェアアクセラレータユニット154に指示しうる。
【0072】
加えて、準備モジュール108は更に、撮像デバイスの相対姿勢、キーフレームに含まれる確認済みフィーチャの奥行き、及びキーフレームに含まれる点の法線に基づいてキーフレームのパッチをワーピングすることにより、追跡オペレーション212のための入力データ210を準備しうる。例えば、環境のマップに含まれる確認済みフィーチャの各々(例えば各点)は、確認済みフィーチャを三角測量するために画像ベースの追跡デバイスが使用したことがありうる先行フレームのセットに関連付けられうる。準備モジュール108は、撮像データ206に含まれると想定されうる現行フレームに(例えば、撮像デバイス及び/若しくは追跡対象物に対して時間的に、空間的に、又はコンテンツが)最も近いものでありうる確認済みフィーチャに関連するキーフレームを選択してよく、かつ、このキーフレームのパッチを現行フレーム内にワーピングしうる。一部の例では、準備モジュール108は、アフィン変換演算に従って、キーフレームのパッチを現行フレーム内にワーピングしうる。準備モジュール108は、入力データ210の一部として、ワーピングされたパッチを表わす情報を含みうる。
【0073】
一部の例では、準備モジュール108は、キーフレームのパッチに含まれる点の法線の推定値が所定の閾値の範囲内にあるかどうかを判定することによって、キーフレームのパッチをワーピングしうる。キーフレームに含まれる点の法線の推定値が所定の閾値の範囲内にある場合、キーフレームのパッチをワーピングすることは、キーフレームに含まれる点の法線の推定値に基づきうる。一部の例では、「法線(normal)」又は「点の法線(normal of a point)」は、点を含む接平面に垂直なベクトルを含みうる。
【0074】
図6Aには、点604を含むパッチ602が例として示されている。この図では、パッチ602はキーフレーム606に含まれてよく、キーフレーム606は、撮像データ206に含まれると想定されうる現行フレーム608に最も近いキーフレームでありうる。図示しているように、現行フレーム608(ひいてはHMD150及び/又は撮像デバイス152)は、キーフレーム606の姿勢に対する姿勢であって、HMD150及び/又は撮像デバイス152に関連するIMUによって得られた一又は複数の測定値、環境内のHMD150及び/又は撮像デバイス152の既に特定されている位置及び/又は配向を含む環境のマップ、環境の一又は複数の画像に含まれる一又は複数のフィーチャの、環境内での既に特定された位置などに基づいて、本書に記載のシステムのうちの一又は複数(例えば準備モジュール108)が予測しかつ/又は推定しうる、姿勢を有する。
【0075】
図6Aに更に示しているように、点604は、関連する推定法線610を有しうる。準備モジュールは、推定法線610が所定の閾値の範囲内にあると(例えば、推定法線610によって示された点604の法線の推定値は、精度が十分であり、許容範囲内にあり、量及び/又は質が十分な入力データに基づいて推定されたものであると)判定しうる。この例では、準備モジュール108は、キーフレームの姿勢、現行フレームの姿勢(例えば予測された姿勢)、及び推定法線610に基づいて、現行フレーム608にパッチ602をワーピングしうる。
【0076】
他の例では、点604の法線は未知でありうる(例えば、点604の法線の推定値は所定の閾値を下回りうる)。かかる例では、準備モジュール108は、キーフレーム606(例えばキーフレーム606の姿勢)に対する現行フレーム608の想定姿勢、予測姿勢、及び/又は推定姿勢に基づいて、点604の法線を特定しうる(例えば特定済み法線612)。ゆえに、
図6Bに示しているように、準備モジュール108は、点604の法線がキーフレーム606と現行フレーム608との間の空間におけるある点に向けられていると判定することによって、特定済み法線612を特定しうる。
【0077】
更に、一部の例では、キーフレームのパッチをワーピングすることは、パッチマッチングオペレーションで利用するために、マルチスケール表現208に含まれる撮像データ206のスケール表現を算出することを含みうる。準備モジュール108は次いで、マルチスケール表現208に含まれるスケール表現の、算出されたスケール表現に対応する少なくとも一部分(例えば少なくとも1つのパッチ)を示す情報(例えば、パッチマッチングオペレーションにおいて画像ピラミッドの特定のレベルのパッチを利用することの指示)を、入力データ210内に含みうる。
【0078】
本書に記載のシステム及び方法は、追跡オペレーション212のための入力データ210を準備することによって、一又は複数の画像ベースの追跡オペレーションを実行するようハードウェアアクセラレータユニット154に指示するための準備として、一又は複数のオペレーションを実行しうる。これにより、ハードウェアアクセラレータユニット154によって効率的に実施され得ない特定のオペレーションが、汎用処理ユニット(例えば物理プロセッサ130)に効率的に割り当てられうる。入力データ210を準備することにより、ハードウェアアクセラレータユニット154が、入力データ210を使用して、ハードウェアアクセラレータユニット154によって効率的に実施されうる画像ベースの追跡オペレーションを実行することも、有効に可能になりうる。
【0079】
更に、入力データ210の準備に関連して上述したオペレーションのうちの一又は複数は、汎用プロセッサ(例えば物理プロセッサ130)によって実行されると前述したが、一部の実施形態では、ハードウェアアクセラレータユニット154によって実行されることもある。例えば、少なくとも1つの実施形態では、本書に記載のシステムのうちの一又は複数(例えば準備モジュール108)は、撮像データ206に含まれると予想されるフィーチャのセットを選択し、かつ/又は任意の好適な方法で(例えば、本書に記載しているやり方のいずれかで)キーフレームのパッチをワーピングするよう、ハードウェアアクセラレータユニット154に指示しうる。かかる例では、ハードウェアアクセラレータユニット154は、一又は複数の画像ベースの追跡オペレーションに加えて、かかるオペレーションも効率的に実行するよう構成されうる。
【0080】
再び
図3を参照するに、ステップ340において、本書に記載のシステムのうちの一又は複数は、生成された撮像データのマルチスケール表現及び準備された入力データのセットを使用して画像ベースの追跡オペレーションのセットを実行するよう、ハードウェアアクセラレータユニットに指示しうる。例えば、実行モジュール110は、演算デバイス202及び/又はHMD150に、マルチスケール表現208及び入力データ210を使用して追跡オペレーション212を実行するようハードウェアアクセラレータユニット154に指示させうる。
【0081】
一部の例では、画像ベースの追跡オペレーションのセットは、画像ベースの追跡システム(例えば画像ベースの追跡サブシステム140)が環境内の追跡対象物を確認し、位置特定し、かつ/又はその位置及び/又は配向を特定することを可能にしうる、任意のオペレーションを含みうる。一部の例では、より詳細に後述するように、画像ベースの追跡オペレーションのセットは、パッチマッチングオペレーション、コーナー検出オペレーション、サブピクセル整列オペレーション、及び/又はガンマ補正オペレーション(例えばガンマ圧縮オペレーションやガンマ展開オペレーションなど)を含みうるが、これらに限定されるわけではない。
【0082】
一部の例では、「パッチマッチングオペレーション(patch matching operation)」は、画像の一部分を追加画像の別の部分と相関させうる、任意のオペレーションでありうる。例えば、ゼロ平均差分二乗和(ZSSD)演算が、画像の一部分(例えば、キーフレームのワーピングされたパッチ)と追加画像の別の部分(例えば、撮像データ206に含まれる画像)とを相関させうる。
【0083】
図7は、生成された撮像データのマルチスケール表現及び準備された入力データのセットを使用してパッチマッチングオペレーションを実行するようハードウェアアクセラレータユニットに指示することの例示的な
図700を、例として示している。図示しているように、
図7は
図5の要素のうちの多くを含んでいる。しかし、
図7では、投影フレーム504が、撮像データ206に含まれる画像(例えば二次元画像)を表わしうる現行フレーム702で置換されている。
図7に更に示しているように、予測モジュール108により、パッチ704、弧線706、及びワーピングされたパッチ708によって示されている近接キーフレーム(例えばキーフレーム502及び/又はキーフレーム606)から現行フレーム702へのパッチのワーピングも、既に行われている。
図7に示している例では、予測モジュール108により、上述したパッチマッチングオペレーションで利用するために、マルチスケール表現に含まれる画像ピラミッド内のレベルといった現行フレーム702のマルチスケール表現(例えばマルチスケール表現208)に含まれる撮像データ206のスケール表現も、既に算出されている(ただし
図7には図示していない)。
【0084】
実行モジュール110は、準備モジュール108が投影フレーム504内で視認可能になると予測した可能性がある点のセット(例えば点514-3)の、現行フレーム702内の二次元対応点のセットを見い出すために、ハードウェアアクセラレータユニット154にパッチマッチングオペレーションを実行するよう指示しうる。実行モジュール110は、点514-3に関連する予測フィーチャ位置に基づいてサーチウインドウ710を確認するようハードウェアアクセラレータユニット154に指示することによって、パッチマッチングオペレーションを実行するようハードウェアアクセラレータユニット154に指示しうる。ハードウェアアクセラレータユニット154は次いで、現行フレーム702の算出されたスケール表現(例えば画像ピラミッドのレベル)を使用して、現行フレーム702の算出されたスケール表現の、サーチウインドウ710内に含まれる一部分により、ワーピングされたパッチ708の畳み込みを実施しうる。ハードウェアアクセラレータユニット154は更に、サーチウインドウ710内の点及びワーピングされたパッチ708について、ZSSDスコアを算出しうる。ハードウェアアクセラレータユニット154は次いで、所定の閾値ZSSDスコアを下回るZSSDスコアを有するサーチウインドウ710内の点を確認し、この点を、現行フレーム702内の対応点514(例えば点514-3)の位置に一致するもの(match)として指定しうる。ハードウェアアクセラレータユニット154は次いで、指定された点の二次元座標を記憶しうる。
【0085】
一部の例では、ZSSDスコア決定が整数値を有するピクセル座標に対してのみ実施されうるので、上述のような、ZSSDスコアにより確認される対応は不正確になりうる。ゆえに、一部の例では、実行モジュール110は、既にマッチングされたピクセルの周囲でサブピクセル整列オペレーションを実施するようハードウェアアクセラレータユニット154に指示することによって、対応(例えば、現行フレーム702内の点514の確認されかつ/又は特定された位置)を精密化するようハードウェアアクセラレータユニット154に指示しうる。一部の例では、サブピクセル整列オペレーションは、8×8パッチ全体に対する二次元逆合成Lucas-Kanade最適化を含みうる。換言すると、このLucas-Kanade最適化は、キーフレーム(例えばキーフレーム502)又は現行フレーム(例えば現行フレーム702)の抽出サブ領域(例えば5ピクセル×5ピクセル、8ピクセル×8ピクセル、8サブピクセル×8サブピクセルなどを測定するウインドウ)を、二次元逆合成Lucas-Kanade最適化におけるテンプレートとして利用しうる。一部の例では、サブピクセル整列オペレーションは、例えば2つの並進パラメータ及び/又は1つの照明オフセットパラメータのために、更に最適化されうる。
【0086】
更に、上述したように、一部の例では、実行モジュール110は更に、コーナー検出オペレーションを実行するようハードウェアアクセラレータユニット154に指示しうる。一部の例では、「コーナー検出オペレーション(corner detection operation)」は、画像内の2つのエッジの接合部を確認しうる任意のオペレーションであってよく、この場合、画像内のエッジは、輝度が局所的に不連続であることによって示されうる。一部の例では、コーナー検出オペレーションは、Harrisコーナー検出オペレーション、Moravecコーナー検出オペレーション、Wang・Bradyコーナー検出オペレーションなどを含みうるが、これらに限定されるわけではない。
【0087】
上述したように、ハードウェアアクセラレータユニット154は、ハードウェアアクセラレータユニット154に関連する命令セットに含まれる一又は複数の命令を実行することによって、前述の画像ベースの追跡オペレーションを実行しうる。例えば、ハードウェアアクセラレータユニット154は、乗算(例えばハーフワード、ワードバイハーフ、ベクトル縮小、及び/又は二重乗算)、ワード及び/又はハーフワードのデータに対する算術シフト及び/又は論理シフト、自動スケーリングなどといった、様々なベクトル演算を効率的に実行するよう構成されうる。ハードウェアアクセラレータユニット154は、上述した画像ベースの追跡オペレーションのうちの一又は複数を実行するために、前述の効率的なベクトル演算のうちの一又は複数(及び/又は、ハードウェアアクセラレータユニット154が実施するよう構成されうる他の任意のオペレーション)を利用しうる。ゆえに、追跡オペレーション212のうちの一又は複数は、ハードウェアアクセラレータユニット154により効率的に実装されうる。
【0088】
図8は、画像ベースの追跡サブシステム140によって実行されうる例示的なマルチスレッド画像ベースの追跡パイプラインの動作フロー
図800を示しており、画像ベースの追跡オペレーションは、汎用処理ユニット(例えば物理プロセッサ130)からハードウェアアクセラレータユニット(例えばハードウェアアクセラレータユニット154)にオフローディングされうる。
図8に示しているように、マルチスレッド画像ベースの追跡パイプラインは、3つのスレッド(すなわち、IMUスレッド802、マッパスレッド804、及びトラッカスレッド806)を含みうる。一部の例では、これらのスレッドは、別々のクロック速度で動作しうる(例えば実行されうる)。例えば、IMUスレッド802は1,000Hzで動作し、マッパスレッド804は5Hzの周波数で動作し、トラッカスレッド806は、画像ベースの追跡サブシステム140の電源周波数(例えば25Hzや30Hzなど)で動作しうる。画像ベースの追跡サブシステムの電源周波数(例えば、画像ベースの追跡サブシステム140が動作する国の「幹線(mains)」周波数)でトラッカスレッド806を動作させることによって、本書に記載のシステム及び方法は、何らかの外部要因(環境内の蛍光灯のちらつきなど)が画像ベースの追跡システム及び/又はHMDの動作を妨害しうる程度を低減し、かつ/又はゼロにしうる。
【0089】
IMUスレッド802は、IMU(例えばIMU808)の測定値を処理しうる。一部の例では、IMU808によって収集されるIMUデータ(例えば、HMDなどの追跡対象物の角速度や線形加速度など)は、一又は複数のIMUオペレーション810(例えば、IMUデータとその他の収集された慣性データとの統合、一又は複数の姿勢フィルタ及び/又は自由度フィルタに従ったフィルタリングなど)を受け、一又は複数の中間バッファ(例えば状態バッファ812及び/又はIMUバッファ814)に追加されうる。
【0090】
マッパスレッド804は、キーフレーム及び/又はキーフレームから三角測量された点並びに点行列816を受信し、かつ、マップ820を改変及び/又は更新しうる一又は複数のマッピングオペレーション818を実行しうる。マッピングオペレーション818は、キーフレーム及び/又は点行列816に含まれる点に基づいてマップ820を改変及び/又は更新しうる、任意のオペレーションを含みうる。例えば、マッピングオペレーション818は、新たなキーフレーム及び点をマップ820に追加すること、キーフレームの一又は複数の姿勢を最適化すること、(
図6A及び6Bを参照して上述したように)キーフレームに含まれる点の法線を特定しかつ/又は推定すること、及び/又は、トラッカスレッド806に関連するオペレーションのレイテンシを短くするためにマップ820を好適な中間記憶場所にコピーすること、を含みうるが、これらに限定されるわけではない。
【0091】
マップ820は、環境内の一又は複数の点の、確認され、三角測量され、かつ/又は追跡された所在地を表わし、かつ/又はかかる所在地に関連する、データを含みうる。例えば、マップ820は、環境内の点の二次元位置及び/又は三次元位置、撮像デバイス(例えば撮像デバイス152)に対する点の奥行き、確認されかつ/又は位置特定された点の特定されかつ/又は推定された法線など(これらに限定されるわけではない)を含みうる。更に、マップ820は、環境内の一又は複数の点の所在地を特定するために、画像ベースの追跡システム(例えば画像ベースの追跡サブシステム140)を表わし、かつ/又はそれによって使用される情報を含みうる一又は複数のキーフレームを含みうる。マップ820は、任意の好適なデータ記憶媒体及び/又は任意の好適なデータ構造を含みうる。
【0092】
トラッカスレッド806は、本書に記載のシステムのうちの一又は複数により、撮像データ(例えば撮像データ206)を処理するために一又は複数のオペレーションを実施しうる。例えば、本書に記載のシステムのうちの一又は複数(例えば送信モジュール104)は、撮像デバイス152に、撮像データ206をハードウェアアクセラレータユニット154に送信させうる。
図8には1つの撮像デバイス152だけが図示されているかもしれないが、撮像デバイス152は、撮像データ206を提供しかつ/又は撮像データ206をハードウェアアクセラレータユニット154に送信しうる、複数の撮像デバイスのうちの1つでありうる。
【0093】
更に、本書に記載のシステムのうちの一又は複数(例えば準備モジュール108)は、画像ベースの追跡オペレーションのセット(例えば追跡オペレーション212)のための入力データのセット(例えば入力データ210)を準備しうる。例えば、
図5を参照して上述したように、準備モジュール108は、事前生成された環境のマップ(例えばマップ820)及び撮像デバイスの予測姿勢に基づいて(例えば、IMU808から受信されかつ/又は状態バッファ812に記憶された統合IMUデータに基づいて)、撮像デバイス152からの撮像データに含まれると予想されるフィーチャのセットを選択しうる(フィーチャ選択822と図示されている)。更に、パッチワーピング824に図示されており、かつ
図6~7を参照して更なる詳細事項を上述したように、本書に記載のシステムのうちの一又は複数(例えば準備モジュール108)は更に、(1)撮像デバイスの相対姿勢(例えば、状態バッファ812及び/又はマップ820に含まれるキーフレームデータに含まれる統合IMUデータに基づくもの)、(2)(例えばマップ820に含まれている)キーフレームに含まれる確認済みフィーチャの奥行き(3)(例えばマップ820に含まれている)キーフレームに含まれる点の法線、に基づいてキーフレームのパッチをワーピングすることによって、入力データのセットを準備しうる。
【0094】
図8のハードウェアアクセラレータユニット154の表現内に含まれる(例えば、この表現によって囲まれた)グラフィカル要素によって更に示されているように、本書に記載のシステムのうちの一又は複数(例えば生成モジュール106及び/又は実行モジュール108)は、一又は複数のオペレーションを実行するようハードウェアアクセラレータユニット154に指示しうる。例えば、マルチスケール826によって示されており、かつ
図4を参照して上述したように、生成モジュール106は、撮像デバイス152からハードウェアアクセラレータユニット154に送信される撮像データ(例えば撮像データ206)のマルチスケール表現(例えばマルチスケール表現208)を生成するよう、ハードウェアアクセラレータユニット154に指示しうる。更に、
図7を参照して上述したように、実行モジュール110は、生成された撮像データのマルチスケール表現(例えばマルチスケール表現208)及び準備された入力データのセット(例えば入力データ210)を使用して画像ベースの追跡オペレーションのセットを実行するよう、ハードウェアアクセラレータユニット154に指示しうる。一部の例では、画像ベースの追跡オペレーションのセットは、
図8のパッチマッチング828、サブピクセル整列830、及びコーナー検出832によってそれぞれ示しているように、パッチマッチングオペレーション、サブピクセル整列オペレーション、及び/又はコーナー検出オペレーションを含みうるが、これに限定されるわけではない。
【0095】
本書に記載のシステムのうちの一又は複数(例えばモジュール102のうちの一又は複数)は、撮像データ(例えば撮像データ206)を更に処理するために、トラッカスレッド806の一部として様々な追加オペレーションを実行しうる。かかるオペレーションは、上述したハードウェアアクセラレータユニット154によって実行されるオペレーションとは異なり、一部の例では、汎用処理ユニット(物理プロセッサ130など)により実行されうる。
【0096】
例えば、姿勢推定834において、モジュール102のうちの一又は複数は、撮像デバイス152及び/又は一又は複数の追跡対象物の姿勢(例えば位置及び/又は配向)を推定しうる。かかる推定姿勢と共に、追加のIMUデータ及び/又は校正データ(例えば、IMU808及び/又はIMUオペレーション810からのデータ)が、状態バッファ812を更新するために使用されうる。キーフレーム選択836において、モジュール102のうちの一又は複数は、画像データ206に含まれる一又は複数のキーフレームを選択してマップ820に追加し、上述したマッパスレッド804による処理のために、選択されたフレームをキーフレーム及び点行列816に送りうる。
【0097】
図8に更に示しているように、本書に記載のシステムのうちの一又は複数(例えば、モジュール102のうちの一又は複数)は更に、トラッカスレッド804によって実行されるオペレーションの一部として、キーフレーム選択836からコーナー検出832に選択されたキーフレームが送られるようにしうる。本書に記載の一又は複数のシステム(例えば、実行モジュール110による指示を受けるハードウェアアクセラレータユニット154)は次いで、任意の好適なやり方で(例えば、上述したコーナー検出オペレーションにしたがって)、選択されたキーフレームに含まれる存在可能な点を検出しうる。
【0098】
点生成838において、本書に記載のシステムのうちの一又は複数は、検出されたコーナーを受信可能であり、検出された点(例えば、一又は複数の追加キーフレーム内で確認された、選択されたキーフレーム内で検出された一又は複数の点と相関しうる点)と一致するものを見い出し、かつ/又は検出された点を三角測量するために、本書に記載のシステム及び/又は方法のうちの一又は複数(例えば、モジュール102のうちの一又は複数)を使用しうる。本書に記載のシステムのうちの一又は複数は次いで、生成された(例えば相関されかつ/又は三角測量された)点が、マッパスレッド804による更なる処理のため、及び/又はマップ820内への包含のために、キーフレーム及び点行列816に追加されるようにしうる。
【0099】
本開示全体を通じて記述しているように、開示されているシステム及び方法は、従来型の画像ベースの追跡システムを凌駕する一又は複数の利点を提供しうる。例えば、本書に記載のシステム及び方法は、汎用処理ユニット(例えば物理プロセッサ130)を介して、パッチマッチング、サブピクセル整列、及び/又はコーナー検出などのオペレーションの準備として、撮像データに含まれると予想される一又は複数のフィーチャを選択することによって、及び/又はキーフレームのパッチをワーピングすることによって、画像ベースの追跡オペレーションのセットのための入力データのセットを準備しうる。
【0100】
画像ベースの追跡オペレーションのための汎用処理ユニットによる入力データのかかる準備により、汎用処理ユニットと、ハードウェアアクセラレータユニットであって、画像ベースの追跡オペレーションのセット(例えば、撮像データ206のマルチスケール表現の生成、パッチマッチングオペレーションの実行、サブピクセル整列オペレーションの実行、コーナー検出オペレーションの実行など)を効率的に実施するよう(例えば、好適な命令セット、ハードウェアアーキテクチャ、及び/又は処理能力を伴って)構成されているハードウェアアクセラレータユニットとの間で、画像ベースの追跡オペレーションに関連する演算タスクが効率的に配分されうる。例えば、好適に構成されたハードウェアアクセラレータユニットは、準備された入力データが提供された場合、汎用処理ユニットよりも少ない電力を消費しつつ、画像ベースの追跡オペレーションのセットを実施することが可能でありうる。したがって、本書に記載のシステム及び方法は、画像ベースの追跡システムの限られた電力資源のより効率的な使用をもたらしうる。
【0101】
更に、一又は複数の画像ベースの追跡オペレーション(例えば、撮像データ206のマルチスケール表現の生成、パッチマッチングオペレーションの実行、サブピクセル整列オペレーションの実行、コーナー検出オペレーションの実行など)を効率的に実施することが可能なハードウェアアクセラレータユニット(例えばハードウェアアクセラレータユニット154)に、上述した画像ベースの追跡オペレーションを実行するよう指示することによって、本書に記載のシステム及び方法は、汎用処理ユニット(例えば物理プロセッサ130)からハードウェアアクセラレータユニットに、演算集約的な画像ベースの追跡オペレーションをオフローディングしうる。これにより、拡張現実体験をユーザに提供することに関連するその他のオペレーションを実施するよう、汎用処理ユニットが解放されうる。
【0102】
更に、一部の例では、本書に記載のシステム及び方法は、画像ベースの追跡オペレーションの実行中に、ピクセルデータ(例えば撮像データ206)をハードウェアアクセラレータユニット内に残しうる(例えば、ハードウェアアクセラレータユニットに関連するメモリ内及び/又はハードウェアアクセラレータユニットに含まれるメモリ内に保持させうる)。このことは、ハードウェアアクセラレータユニットに関連しうるコスト高な(例えば演算集約的な、帯域幅集約的な、電力集約的な)入力、出力、前処理、及び/又は後処理の動作を回避するのに役立ちうる。
【0103】
最後に、マルチスレッド画像ベースの追跡システムにおけるトラッカスレッドを画像ベースの追跡システムの電源周波数(例えば、画像ベースの追跡システムが動作しうる地域の「幹線周波数」)で動作させることによって、本書に記載のシステム及び方法は、何らかの外部要因が画像ベースの追跡システム及び/又はHMDのオペレーションを妨害しうる程度を低減し、かつ/又はゼロにしうる。例えば、画像ベースの追跡システムが米国内で動作する場合にはトラッカスレッドを米国の幹線周波数(例えば30Hz)で作動させることによって、本書に記載のシステム及び方法は、蛍光照明源のちらつきが画像ベースの追跡システムのオペレーションを妨害しうる妨害量を低減しうる。
【0104】
上記で詳述したように、本書で説明及び/又は図示している演算デバイス及びシステムは、コンピュータ可読命令(本書に記載のモジュールに包含されるものなど)を実行可能な任意の種類又は形態の演算デバイス又はシステムを広範に表わす。これらの演算デバイス(複数可)は各々、その最も基本的な構成において、少なくとも1つのメモリデバイスと、少なくとも1つの物理プロセッサとを含みうる。
【0105】
本書で説明及び/又は図示している複数のモジュールは、別個の要素として示されているが、単一のモジュール又はアプリケーションの部分を表わしていることもある。加えて、特定の実施形態では、これらのモジュールのうちの一又は複数は、演算デバイスによって実行されるとその演算デバイスに一又は複数のタスクを実施させうる、一又は複数のソフトウェアアプリケーション又はプログラムを表しうる。例えば、本書で説明及び/又は図示しているモジュールのうちの一又は複数は、本書で説明及び/又は図示している演算デバイス又はシステムのうちの一又は複数に記憶され、かつそれらで実行されるよう構成されたモジュールを表わしうる。これらのモジュールのうちの一又は複数は、一又は複数のタスクを実施するよう構成された一又は複数の特定用途向けコンピュータの全部又は一部を表わすこともある。
【0106】
加えて、本書に記載のモジュールのうちの一又は複数は、データ、物理デバイス、及び/又は物理デバイスの表現を、ある形態から別の形態に変換しうる。例えば、本書で列挙されているモジュールのうちの一又は複数は、変換されるべき撮像データを受信し、この撮像データを変換し、環境のマップを更新するために変換結果を出力し、環境内の物体の位置及び/又は配向を特定するために変換結果を使用し、かつ、ある期間にわたって環境内の物体の位置及び/又は配向を追跡するために変換結果を記憶しうる。追加的に又は代替的に、本書で列挙されているモジュールのうちの一又は複数は、演算デバイスで実行すること、演算デバイスにデータを記憶すること、及び/さもなければ演算デバイスと相互作用することによって、プロセッサ、揮発性メモリ、不揮発性メモリ、及び/又は物理演算デバイスの他の任意の部分を、ある形態から別の形態へと変換しうる。
【0107】
一部の実施形態では、「コンピュータ可読媒体(computer-readable medium)」という語は一般に、コンピュータ可読命令を記憶又は保持することが可能な任意の形態のデバイス、キャリア、又は媒体のことを指す。コンピュータ可読媒体の例は、伝送型媒体(搬送波など)、及び非一時型媒体(例えば、ハードディスクドライブ、テープドライブ、及びフロッピーディスクといった磁気記憶媒体、コンパクトディスク(CD)、デジタルビデオディスク(DVD)、及びブルーレイディスクといった光記憶媒体、ソリッドステートドライブ及びフラッシュ媒体といった電子記憶媒体、及びその他の分配システム)を含むが、これらに限定されるわけではない。
【0108】
本開示の実施形態は、人工現実システムを含みうるか、又は人工現実システムと共に実装されうる。人工現実は、ユーザに提示される前に何らかの方式で調整された現実の一形態であり、例えば、仮想現実、拡張現実、混合現実、ハイブリッド現実、又はこれらの何らかの組み合わせ及び/若しくは派生物を含みうる。人工現実コンテンツは、完全に生成されたコンテンツ、又は捕捉された(例えば現実世界の)コンテンツと組み合わされた生成コンテンツを含みうる。人工現実コンテンツは、ビデオ、音声、触覚フィードバック、又は、これらの何らかの組み合わせを含んでよく、これらのうちのいずれも、単一のチャネル若しくは複数のチャネル(視聴者に三次元効果をもたらすステレオビデオなど)において提示されうる。更に、一部の実施形態では、人工現実は、例えば、人工現実のコンテンツを作成するために使用され、かつ/又は人工現実において別様に使用される(例えば、人工現実におけるアクティビティを実施する)アプリケーション、製品、アクセサリ、サービス、又はそれらの何らかの組み合わせに関連付けられることもある。人工現実コンテンツを提供する人工現実システムは、上述したように、ホストコンピュータシステムに接続されうるHMD、独立型HMD、モバイルデバイス、若しくは演算システム、及び/又は、一又は複数の視聴者に人工現実コンテンツを提供することが可能な他の任意のハードウェアプラットフォームを含む、様々なプラットフォームで実装されうる。
【0109】
本書で説明及び/又は図示しているステップのプロセスパラメータ及びシーケンスは、単なる例として付与されており、所望に応じて変更されうる。例えば、本書で図示及び/又は説明しているステップは、特定の順序で図示又は説明されていることがあるが、必ずしも図示又は説明されている順序で実施される必要はない。本書で説明及び/又は図示している様々な例示的な方法は、本書で説明又は図示しているステップのうちの一又は複数を省略することも、開示されているステップに加えて追加のステップを含むことも可能である。
【0110】
前述の説明は、本書で開示されている例示的な実施形態の様々な態様を、他の当業者が最もよく利用することを可能にするために提供されてきた。この例示的な説明は、網羅的であること、又は開示されているいずれの形態そのものにも限定されることを、意図するものではない。本開示の本質及び範囲から逸脱することなく、多数の改変及び変形が可能である。本書で開示されている実施形態は、あらゆる点で例示的であり、限定的なものではないと見なされるべきである。本開示の範囲を特定する際には、付随する特許請求の範囲及びそれらの均等物を参照すべきである。
【0111】
特に記載していない限り、明細書及び特許請求の範囲において使用される「~に接続され(connected to)」及び「~に連結され(coupled to)」という語(及びそれらの派生語)は、直接連結と間接(すなわち、他の要素又は構成要素を介した)連結の両方を許容すると解釈すべきである。加えて、明細書及び特許請求の範囲において使用される「1つの(a又はan)」という語は、「少なくとも1つ(at least one of)」を意味すると解釈すべきである。最後に、本明細書及び特許請求の範囲において使用される「含む(including)」及び「有する(having)」という語(及びそれらの派生語)は、使用しやすいように、「備える(comprising)」という語と交換可能であり、この語と同じ意味を有している。