(57)【要約】  本書で開示されている、汎用処理ユニットからハードウェアアクセラレータユニットに画像ベースの追跡オペレーションをオフローディングするための、コンピュータで実装される方法は、（１）撮像デバイスからハードウェアアクセラレータユニットに撮像データを送信することと、（２）撮像デバイスから送信された撮像データのマルチスケール表現を生成するようハードウェアアクセラレータユニットに指示することと、（３）画像ベースの追跡オペレーションのセットのための入力データのセットを準備することと、（４）生成された撮像データのマルチスケール表現及び準備された入力データのセットを使用して画像ベースの追跡オペレーションのセットを実行するよう、ハードウェアアクセラレータユニットに指示することとを、含みうる。その他の様々な方法、システム、及びコンピュータ可読媒体についても開示されている。【選択図】図３
2021530016.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータで実装される方法であって、
撮像デバイスからハードウェアアクセラレータユニットに撮像データを送信することと、
前記撮像デバイスから送信された前記撮像データのマルチスケール表現を生成するよう前記ハードウェアアクセラレータユニットに指示することと、
画像ベースの追跡オペレーションのセットのための入力データのセットを準備することと、
生成された前記撮像データの前記マルチスケール表現及び準備された前記入力データのセットを使用して前記画像ベースの追跡オペレーションのセットを実行するよう、前記ハードウェアアクセラレータユニットに指示することとを含む、
コンピュータで実装される方法。
【請求項２】
前記ハードウェアアクセラレータユニットが、
デジタル信号プロセッサ（ＤＳＰ）と、
特定用途向け集積回路（ＡＳＩＣ）の、少なくとも一方を備える、請求項１に記載のコンピュータで実装される方法。
【請求項３】
前記ハードウェアアクセラレータユニットが、システムオンチップ（ＳｏＣ）アーキテクチャに含まれる、請求項２に記載のコンピュータで実装される方法。
【請求項４】
前記撮像デバイスから送信された前記撮像データの前記マルチスケール表現を生成するよう前記ハードウェアアクセラレータユニットに指示することが、前記撮像デバイスから送信された前記撮像データに基づいて画像ピラミッドを生成するよう前記ハードウェアアクセラレータユニットに指示することを含む、請求項１に記載のコンピュータで実装される方法。
【請求項５】
前記画像ベースの追跡オペレーションのセットが、
パッチマッチングオペレーションと、
コーナー検出オペレーションの、少なくとも一方を含む、請求項１に記載のコンピュータで実装される方法。
【請求項６】
前記パッチマッチングオペレーションがゼロ平均二乗和距離（ＺＳＳＤ）パッチマッチングオペレーションを含む、請求項５に記載のコンピュータで実装される方法。
【請求項７】
前記コーナー検出オペレーションがＨａｒｒｉｓコーナー検出オペレーションを含む、請求項５に記載のコンピュータで実装される方法。
【請求項８】
前記画像ベースの追跡オペレーションのセットがサブピクセル整列オペレーションを更に含む、請求項５に記載のコンピュータで実装される方法。
【請求項９】
前記サブピクセル整列オペレーションが二次元逆合成Ｌｕｃａｓ-Ｋａｎａｄｅ最適化を含む、請求項８に記載のコンピュータで実装される方法。
【請求項１０】
前記入力データのセットを準備することが、事前生成された環境のマップ及び前記撮像デバイスの予測姿勢に基づいて前記撮像データに含まれると予想されるフィーチャのセットを選択することを含む、請求項１に記載のコンピュータで実装される方法。
【請求項１１】
前記入力データのセットを準備することが、前記撮像デバイスの相対姿勢、キーフレームに含まれる確認済みフィーチャの奥行き、及び前記キーフレームに含まれる点の法線に基づいて、前記キーフレームのパッチをワーピングすることを更に含む、請求項１０に記載のコンピュータで実装される方法。
【請求項１２】
前記キーフレームに含まれる前記点の前記法線の推定値が所定の閾値の範囲内にあるかどうかを判定することを更に含み、
前記キーフレームに含まれる前記点の前記法線の前記推定値が前記所定の閾値の範囲内にある場合、前記キーフレームの前記パッチをワーピングすることが、前記キーフレームに含まれる前記点の前記法線の前記推定値に基づき、
前記キーフレームに含まれる前記点の前記法線の前記推定値が前記所定の閾値の範囲内にない場合、前記キーフレームの前記パッチをワーピングすることが、前記キーフレームに対する前記撮像データに含まれる新たなフレームの予測配向に基づいて、前記キーフレームの前記パッチに含まれる前記点の前記法線を特定することを含む、請求項１１に記載のコンピュータで実装される方法。
【請求項１３】
前記キーフレームの前記パッチをワーピングすることが、パッチマッチングオペレーションで利用するために、前記撮像データの前記マルチスケール表現に含まれる前記撮像データのスケール表現を算出することを更に含む、請求項１２に記載のコンピュータで実装される方法。
【請求項１４】
前記ハードウェアアクセラレータユニットが、前記撮像デバイスから前記撮像データを受信し、前記撮像データの前記マルチスケール表現を生成し、かつマルチスレッドアーキテクチャにおいてトラッカスレッドにより実施されるオペレーションのセットの一部として、前記画像ベースの追跡オペレーションのセットを実行するよう構成される、請求項１に記載のコンピュータで実装される方法。
【請求項１５】
入力電源の動作周波数で前記トラッカスレッドを実行することを更に含む、請求項１４に記載のコンピュータで実装される方法。
【請求項１６】
撮像デバイス、及び
ハードウェアアクセラレータユニットを備える、
頭部装着ディスプレイ（ＨＭＤ）デバイスと、
画像ベースの追跡サブシステムとを備える、システムであって、前記画像ベースの追跡サブシステムが、
前記撮像デバイスから前記ハードウェアアクセラレータユニットに撮像データを送信する、メモリに記憶された送信モジュールと、
前記撮像デバイスから送信された前記撮像データのマルチスケール表現を生成するよう前記ハードウェアアクセラレータユニットに指示する、メモリに記憶された生成モジュールと、
画像ベースの追跡オペレーションのセットのための入力データのセットを準備する、メモリに記憶された準備モジュールと、
生成された前記撮像データの前記マルチスケール表現及び準備された前記入力データのセットを使用して前記画像ベースの追跡オペレーションのセットを実行するよう、前記ハードウェアアクセラレータユニットに指示する、メモリに記憶された実行モジュールと、
前記送信モジュール、前記生成モジュール、前記準備モジュール、及び前記実行モジュールを実行する、少なくとも１つの物理プロセッサとを備える、
システム。
【請求項１７】
前記ハードウェアアクセラレータユニットが、
デジタル信号プロセッサ（ＤＳＰ）と、
特定用途向け集積回路（ＡＳＩＣ）の、少なくとも一方を備える、請求項１６に記載のシステム。
【請求項１８】
前記画像ベースの追跡オペレーションのセットが、
パッチマッチングオペレーションと、
コーナー検出オペレーションと、
サブピクセル整列オペレーションのうちの、少なくとも１つを含む、請求項１６に記載のシステム。
【請求項１９】
前記準備モジュールが、
事前生成された環境のマップ及び前記撮像デバイスの予測姿勢に基づいて前記撮像データに含まれると予想されるフィーチャのセットを選択すること、及び
前記撮像デバイスの相対姿勢、キーフレームに含まれる確認済みフィーチャの奥行き、及び前記キーフレームに含まれる点の法線に基づいて、前記キーフレームのパッチをワーピングすること、によって前記入力データのセットを準備する、請求項１６に記載のシステム。
【請求項２０】
コンピュータ可読命令を含む非一過性のコンピュータ可読媒体であって、前記命令は、演算デバイスの少なくとも１つのプロセッサによって実行されると、前記演算デバイスに、
撮像デバイスからハードウェアアクセラレータユニットに撮像データを送信することと、
前記撮像デバイスから送信された前記撮像データのマルチスケール表現を生成するよう前記ハードウェアアクセラレータユニットに指示することと、
画像ベースの追跡オペレーションのセットのための入力データのセットを準備することと、
生成された前記撮像データの前記マルチスケール表現及び準備された前記入力データのセットを使用して前記画像ベースの追跡オペレーションのセットを実行するよう、前記ハードウェアアクセラレータユニットに指示することとを実行させる、
非一過性のコンピュータ可読媒体。
【請求項２１】
コンピュータで実装される方法であって、
撮像デバイスからハードウェアアクセラレータユニットに撮像データを送信することと、
前記撮像デバイスから送信された前記撮像データのマルチスケール表現を生成するよう前記ハードウェアアクセラレータユニットに指示することと、
画像ベースの追跡オペレーションのセットのための入力データのセットを準備することと、
生成された前記撮像データの前記マルチスケール表現及び準備された前記入力データのセットを使用して前記画像ベースの追跡オペレーションのセットを実行するよう、前記ハードウェアアクセラレータユニットに指示することとを含む、
コンピュータで実装される方法。
【請求項２２】
前記ハードウェアアクセラレータユニットが、
デジタル信号プロセッサ（ＤＳＰ）と、
特定用途向け集積回路（ＡＳＩＣ）の、少なくとも一方を備え、
オプションで、前記ハードウェアアクセラレータユニットはシステムオンチップ（ＳｏＣ）アーキテクチャに含まれる、請求項２１に記載のコンピュータで実現される方法。
【請求項２３】
前記撮像デバイスから送信された前記撮像データの前記マルチスケール表現を生成するよう前記ハードウェアアクセラレータユニットに指示することが、前記撮像デバイスから送信された前記撮像データに基づいて画像ピラミッドを生成するよう前記ハードウェアアクセラレータユニットに指示することを含む、請求項２１又は２２に記載のコンピュータで実装される方法。
【請求項２４】
前記画像ベースの追跡オペレーションのセットが、
パッチマッチングオペレーションと、
コーナー検出オペレーションの、少なくとも一方を含む、請求項２１から２３のいずれか一項に記載のコンピュータで実装される方法。
【請求項２５】
前記パッチマッチングオペレーションがゼロ平均二乗和距離（ＺＳＳＤ）パッチマッチングオペレーションを含み、かつ／又は
前記コーナー検出オペレーションがＨａｒｒｉｓコーナー検出オペレーションを含み、かつ／又は
前記画像ベースの追跡オペレーションのセットがサブピクセル整列オペレーションを更に含み、
オプションで、前記サブピクセル整列オペレーションが二次元逆合成Ｌｕｃａｓ−Ｋａｎａｄｅ最適化を含む、請求項２４に記載のコンピュータで実装される方法。
【請求項２６】
前記入力データのセットを準備することが、事前生成された環境のマップ及び前記撮像デバイスの予測姿勢に基づいて前記撮像データに含まれると予想されるフィーチャのセットを選択することを含む、請求項２１から２５のいずれか一項に記載のコンピュータで実装される方法。
【請求項２７】
前記入力データのセットを準備することが、前記撮像デバイスの相対姿勢、キーフレームに含まれる確認済みフィーチャの奥行き、及び前記キーフレームに含まれる点の法線に基づいて、前記キーフレームのパッチをワーピングすることを更に含む、請求項２６に記載のコンピュータで実装される方法。
【請求項２８】
前記キーフレームに含まれる前記点の前記法線の推定値が所定の閾値の範囲内にあるかどうかを判定することを更に含み、
前記キーフレームに含まれる前記点の前記法線の前記推定値が前記所定の閾値の範囲内にある場合、前記キーフレームの前記パッチをワーピングすることが、前記キーフレームに含まれる前記点の前記法線の前記推定値に基づき、
前記キーフレームに含まれる前記点の前記法線の前記推定値が前記所定の閾値の範囲内にない場合、前記キーフレームの前記パッチをワーピングすることが、前記キーフレームに対する前記撮像データに含まれる新たなフレームの予測配向に基づいて、前記キーフレームの前記パッチに含まれる前記点の前記法線を特定することを含む、請求項２７に記載のコンピュータで実装される方法。
【請求項２９】
前記キーフレームの前記パッチをワーピングすることが、パッチマッチングオペレーションで利用するために、前記撮像データの前記マルチスケール表現に含まれる前記撮像データのスケール表現を算出することを更に含む、請求項２８に記載のコンピュータで実装される方法。
【請求項３０】
前記ハードウェアアクセラレータユニットが、前記撮像デバイスから前記撮像データを受信し、前記撮像データの前記マルチスケール表現を生成し、かつマルチスレッドアーキテクチャにおいてトラッカスレッドにより実施されるオペレーションのセットの一部として、前記画像ベースの追跡オペレーションのセットを実行するよう、構成されており、
オプションで、入力電源の動作周波数で前記トラッカスレッドを実行することを更に含む、請求項２１から２９のいずれか一項に記載のコンピュータで実装される方法。
【請求項３１】
撮像デバイス、及び
ハードウェアアクセラレータユニットを備える、
頭部装着ディスプレイ（ＨＭＤ）デバイスと、
画像ベースの追跡サブシステムとを備える、システムであって、前記画像ベースの追跡サブシステムが、
前記撮像デバイスから前記ハードウェアアクセラレータユニットに撮像データを送信する、メモリに記憶された送信モジュールと、
前記撮像デバイスから送信された前記撮像データのマルチスケール表現を生成するよう前記ハードウェアアクセラレータユニットに指示する、メモリに記憶された生成モジュールと、
画像ベースの追跡オペレーションのセットのための入力データのセットを準備する、メモリに記憶された準備モジュールと、
生成された前記撮像データの前記マルチスケール表現及び準備された入前記力データのセットを使用して前記画像ベースの追跡オペレーションのセットを実行するよう、前記ハードウェアアクセラレータユニットに指示する、メモリに記憶された実行モジュールと、
前記送信モジュール、前記生成モジュール、前記準備モジュール、及び前記実行モジュールを実行する、少なくとも１つの物理プロセッサとを備える、
システム。
【請求項３２】
前記ハードウェアアクセラレータユニットが、
デジタル信号プロセッサ（ＤＳＰ）と、
特定用途向け集積回路（ＡＳＩＣ）の、少なくとも一方を備える、請求項３１に記載のシステム。
【請求項３３】
前記画像ベースの追跡オペレーションのセットが、
パッチマッチングオペレーションと、
コーナー検出オペレーションと、
サブピクセル整列オペレーションのうちの、少なくとも１つを含む、請求項３１又は３２に記載のシステム。
【請求項３４】
前記準備モジュールが、
事前生成された環境のマップ及び前記撮像デバイスの予測姿勢に基づいて前記撮像データに含まれると予想されるフィーチャのセットを選択すること、及び
前記撮像デバイスの相対姿勢、キーフレームに含まれる確認済みフィーチャの奥行き、及び前記キーフレームに含まれる点の法線に基づいて、前記キーフレームのパッチをワーピングすること、によって前記入力データのセットを準備する、請求項３１から３３のいずれか一項に記載のシステム。
【請求項３５】
コンピュータ可読命令を含む非一過性のコンピュータ可読媒体であって、前記命令は、演算デバイスの少なくとも１つのプロセッサによって実行されると、前記演算デバイスに、請求項２１から３０のいずれか一項に記載の方法を実施すること、特に、
撮像デバイスからハードウェアアクセラレータユニットに撮像データを送信することと、
前記撮像デバイスから送信された前記撮像データのマルチスケール表現を生成するよう前記ハードウェアアクセラレータユニットに指示することと、
画像ベースの追跡オペレーションのセットのための入力データのセットを準備することと、
生成された前記撮像データの前記マルチスケール表現及び準備された前記入力データのセットを使用して前記画像ベースの追跡オペレーションのセットを実行するよう、前記ハードウェアアクセラレータユニットに指示することとを実行させる、
非一過性のコンピュータ可読媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
拡張現実（ＡＲ）システム及び仮想現実（ＶＲ）システムは、コンピュータで生成された三次元世界シミュレーションにおいて人々と対話することや、現実世界の光景に重ね合わされたデータを視認することといった刺激的なイベントを、ユーザが体験することを可能にしうる。かかる「人工現実（ａｒｔｉｆｉｃｉａｌ  ｒｅａｌｉｔｙ）」システムは、レクリエーション以外の目的にも使用されうる。例えば、これらのシステムを、政府が軍事訓練シミュレーションのために使用すること、医師が手術を行うために使用すること、及び技術者が視覚化補助として使用することが可能である。
【０００２】
人工現実システムは、多くの場合、アイウェアデバイス若しくはヘッドセット内に一体化されるか、又は様々な外部のデバイス若しくはアクセサリに装着される、複数の画像センサ又はカメラを含む。かかるシステムは、ユーザ、ユーザデバイス、頭部装着型ディスプレイ（ＨＭＤ）、及び／又は環境内のその他の物体の位置及び／又は向きを特定するために、前述の画像センサからの画像データを使用しうる。
【０００３】
かかる画像ベースの追跡技術における驚くべき進歩にもかかわらず、従来型の画像ベースの追跡システムは、ユーザの体験全体に悪影響を与えうる特定の欠陥を、依然として有している。例えば、一部の従来型の画像ベースの追跡システムは、撮像データに基づいて追跡対象物の位置及び／又は配向の変化を正確に特定するために、大量の処理リソース及び／又はメモリリソースを必要としうる。したがって、これらの処理リソース及び／又はメモリリソースは、仮想環境及び／又は拡張環境のレンダリングや、ビデオデータ及び／又はオーディオデータの処理などといった、ユーザの人工現実（例えばＡＲ／ＶＲ）体験を向上させうる別のオペレーションではなく、画像ベースの追跡オペレーション用に特化されている。
【発明の概要】
【０００４】
より詳細に後述するように、本開示は、汎用処理ユニット（例えば中央処理ユニット（ＣＰＵ））からハードウェアアクセラレータユニットに画像ベースの追跡オペレーションをオフローディングするための、様々なシステム及び方法について説明している。一部の例では、ハードウェアアクセラレータユニットは、デジタル信号プロセッサ（ＤＳＰ）（例えば汎用ＤＳＰや特定目的ＤＳＰなど）、及び／又は特定用途向け集積回路（ＡＳＩＣ）でありうる。少なくとも１つの例では、ＤＳＰ及び／又はＡＳＩＣは、システムオンチップ（ＳｏＣ）アーキテクチャに含まれてよく、かつ／又はＨＭＤに含まれうる。
【０００５】
本書に記載のシステム及び方法による、汎用処理ユニットからハードウェアアクセラレータユニットへの画像ベースに追跡オペレーションをオフローディングすることは、電力リソースを節約すること、利用可能な演算ハードウェアに演算タスクを効率的に配分すること、及び／又はユーザへの拡張現実体験の提供に関連する別の演算タスクを実施するために汎用処理ユニットを解放することを可能にする。追加的及び／又は代替的な利点も、以下の開示において明らかにされよう。
【０００６】
一例では、汎用処理ユニットからハードウェアアクセラレータユニットに画像ベースの追跡オペレーションをオフローディングするための、コンピュータで実装される方法は、（１）撮像デバイスからハードウェアアクセラレータユニットに撮像データを送信することと、（２）撮像デバイスから送信された撮像データのマルチスケール表現を生成するようハードウェアアクセラレータユニットに指示することとを、含みうる。一部の例では、この方法は、（１）画像ベースの追跡オペレーションのセットのための入力データのセットを準備することと、（２）生成された撮像データのマルチスケール表現及び準備された入力データのセットを使用して画像ベースの追跡オペレーションのセットを実行するよう、ハードウェアアクセラレータユニットに指示することとを、更に含みうる。
【０００７】
少なくとも１つの例では、ハードウェアアクセラレータユニットは、ＤＳＰとＡＳＩＣの少なくとも一方を含みうる。一部の例では、ハードウェアアクセラレータユニットはＳｏＣアーキテクチャに含まれることがある。
【０００８】
一部の実施形態では、撮像デバイスから送信された撮像データのマルチスケール表現を生成するようハードウェアアクセラレータユニットに指示することは、撮像デバイスから送信された撮像データに基づいて画像ピラミッドを生成するようハードウェアアクセラレータユニットに指示することを含みうる。
【０００９】
少なくとも１つの実施形態では、画像ベースの追跡オペレーションのセットは、（１）パッチマッチングオペレーションと、（２）コーナー検出オペレーションの、少なくとも一方を含みうる。一部の例では、パッチマッチングオペレーションは、ゼロ平均二乗和距離（ＺＳＳＤ）パッチマッチングオペレーションを含みうる。少なくとも１つの例では、コーナー検出オペレーションはＨａｒｒｉｓコーナー検出オペレーションを含みうる。少なくとも１つの例では、画像ベースの追跡オペレーションのセットは、サブピクセル整列オペレーションを更に含みうる。一部の例では、サブピクセル整列オペレーションは、二次元逆合成Ｌｕｃａｓ−Ｋａｎａｄｅ最適化を含みうる。
【００１０】
一部の例では、入力データのセットを準備することは、事前生成された環境のマップ及び撮像デバイスの予測姿勢に基づいて、撮像データに含まれると予想されるフィーチャのセットを選択することを含みうる。少なくとも１つの例では、入力データのセットを準備することは、撮像デバイスの相対姿勢、キーフレームに含まれる確認済みフィーチャの奥行き（ｄｅｐｔｈ）、及びキーフレームに含まれる点の法線に基づいて、キーフレームのパッチをワーピングすることを更に含みうる。
【００１１】
少なくとも１つの例では、コンピュータで実装される方法は、キーフレームに含まれる点の法線の推定値が所定の閾値の範囲内にあるかどうかを判定することを、更に含みうる。一部の例では、キーフレームに含まれる点の法線の推定値が所定の閾値の範囲内にある場合、キーフレームのパッチをワーピングすることは、キーフレームに含まれる点の法線の推定値に基づきうる。一部の例では、キーフレームに含まれる点の法線の推定値が所定の閾値の範囲内にない場合、キーフレームのパッチをワーピングすることは、このキーフレームに対する撮像データに含まれる新たなフレームの予測配向に基づいて、キーフレームのパッチに含まれる点の法線を特定することを含みうる。
【００１２】
一部の実施形態では、キーフレームのパッチをワーピングすることは、パッチマッチングオペレーションで利用するために、撮像データのマルチスケール表現に含まれる撮像データのスケール表現を算出することを、更に含みうる
【００１３】
一部の実施形態では、ハードウェアアクセラレータユニットは、撮像デバイスから撮像データを受信し、撮像データのマルチスケール表現を生成し、マルチスレッドアーキテクチャにおいてトラッカスレッドにより実施されるオペレーションのセットの一部として、画像ベースの追跡オペレーションのセットを実行するよう、構成されうる。一部の例では、方法は、入力電源の動作周波数でトラッカスレッドを実行することを、更に含みうる。
【００１４】
加えて、汎用処理ユニットからハードウェアアクセラレータユニットに画像ベースの追跡オペレーションをオフローディングすることに対応しているシステムは、撮像デバイス及びハードウェアアクセラレータユニットを含みうるＨＭＤデバイスを含むことがある。少なくとも１つの例では、ハードウェアアクセラレータユニットは、ＤＳＰ及び／又はＡＳＩＣを含みうる。
【００１５】
システムは、画像ベースの追跡サブシステムを更に含んでよく、この画像ベースの追跡サブシステムは、（１）撮像デバイスからハードウェアアクセラレータユニットに撮像データを送信する送信モジュールと、（２）撮像デバイスから送信された撮像データのマルチスケール表現を生成するようハードウェアアクセラレータユニットに指示する生成モジュールとを含む、メモリに記憶されたいくつかのモジュールを含みうる。一部の例では、画像ベースの追跡サブシステムは、（１）画像ベースの追跡オペレーションのセットのための入力データのセットを準備する準備モジュールと、（２）生成された撮像データのマルチスケール表現及び準備された入力データのセットを使用して画像ベースの追跡オペレーションのセットを実行するよう、ハードウェアアクセラレータユニットに指示する実行モジュールとを、更に含みうる。少なくとも１つの例では、画像ベースの追跡サブシステムは、送信モジュール、生成モジュール、準備モジュール、及び実行モジュールを実行する、少なくとも１つの物理プロセッサを更に含みうる。
【００１６】
少なくとも１つの例では、画像ベースの追跡オペレーションのセットは、（１）パッチマッチングオペレーション、（２）コーナー検出オペレーション、（３）サブピクセル整列オペレーション、のうちの少なくとも１つを含みうる。
【００１７】
一部の例では、準備モジュールは、（１）事前生成された環境のマップ及び撮像デバイスの予測姿勢に基づいて、撮像データに含まれると予想されるフィーチャのセットを選択すること、及び（２）撮像デバイスの相対姿勢、キーフレームに含まれる確認済みフィーチャの奥行き、及びキーフレームに含まれる点の法線に基づいて、キーフレームのパッチをワーピングすること、によって入力データのセットを準備しうる。
【００１８】
一部の例では、上述した方法は、コンピュータ可読媒体上のコンピュータ可読命令として符号化されうる。例えば、コンピュータ可読媒体は、コンピュータで実行可能な一又は複数の命令であって、演算デバイスの少なくとも１つのプロセッサによって実行されると、この演算デバイスに、（１）撮像デバイスからハードウェアアクセラレータユニットに撮像データを送信することと、（２）撮像デバイスから送信された撮像データのマルチスケール表現を生成するようハードウェアアクセラレータユニットに指示することとを実行させうる、一又は複数の命令を含みうる。
【００１９】
少なくとも１つの例では、コンピュータ可読媒体は、コンピュータで実行可能な一又は複数の命令であって、演算デバイスのプロセッサによって実行されると、この演算デバイスに、（１）画像ベースの追跡オペレーションのセットのための入力データのセットを準備することと、（２）生成された撮像データのマルチスケール表現及び準備された入力データのセットを使用して画像ベースの追跡オペレーションのセットを実行するよう、ハードウェアアクセラレータユニットに指示することとを実行させる、一又は複数の命令を更に含みうる。
【００２０】
上述したどの実施形態の特徴も、本書に記載の一般原則に従って互いに組み合わされて使用されうる。上記の実施形態、特徴、及び利点、並びにその他の実施形態、特徴、及び利点は、付随する図面及び特許請求の範囲と併せて以下の詳細説明を読むことで、より網羅的に理解されよう。
【００２１】
本発明による実施形態では、一又は複数の非一時的なコンピュータ可読記憶媒体はソフトウェアを具現化してよく、このソフトウェアは、実行されると、本発明による方法、又は上述の実施形態のいずれかを実施するよう動作可能である。
【００２２】
本発明による実施形態では、システムは、一又は複数のプロセッサと、プロセッサに連結された少なくとも１つのメモリであって、プロセッサによって実行可能な命令を含むメモリを備えてよく、プロセッサは、命令を実行する時に、本発明による方法、又は上述の実施形態のいずれかを実施するよう動作可能である。
【００２３】
本発明による実施形態では、コンピュータプログラム製品（好ましくは非一時的なコンピュータ可読記憶媒体を含むもの）は、データ処理システム上で実行されると、本発明による方法、又は上述の実施形態のいずれかを実施するよう動作可能でありうる。
【００２４】
本発明による実施形態は特に、方法、システム、及び記憶媒体を対象とする付随する特許請求の範囲において開示されており、１つのクレームカテゴリ（例えば方法）において言及される特徴はいずれも、別のクレームカテゴリ（例えばシステム、記憶媒体、及びコンピュータプログラム製品）においても同様に特許請求されうる。付随する特許請求の範囲における従属関係又は戻り参照は、形式的な理由によってのみ選択される。しかし、先行の請求項のいずれかを意図的に戻り参照すること（特に複数従属）によりもたらされる主題があればそれも、同様に特許請求されてよく、これにより、付随する特許請求の範囲において選択される従属とは無関係に、請求項とその特徴との任意の組み合わせが開示されることになり、かつ特許請求されうる。特許請求されうる主題は、付随する特許請求の範囲に明示されている特徴の組み合わせだけでなく、特許請求の範囲における特徴の他の任意の組み合わせも含み、特許請求の範囲で言及されている特徴の各々は、特許請求の範囲における他の特徴又は他の特徴同士の組み合わせのうちの任意のものと組み合わされうる。更に、本書で説明又は描写されている実施形態及び特徴はいずれも、別個の請求項で、かつ／又は、本書で説明若しくは描写されている実施形態若しくは特徴のいずれかとの任意の組み合わせ又は付随する請求項の特徴のいずれかとの任意の組み合わせで、特許請求されうる。
【００２５】
添付図面は、いくつかの例示的な実施形態を示しており、本明細書の一部をなしている。これらの図面は、以下の説明と共に、本開示の様々な原理を実証し、解説するものである。
【図面の簡単な説明】
【００２６】
【図１】汎用処理ユニットからハードウェアアクセラレータユニットに画像ベースの追跡オペレーションをオフローディングするための例示的なシステムのブロック図である。
【図２】汎用処理ユニットからハードウェアアクセラレータユニットに画像ベースの追跡オペレーションをオフローディングするためのシステムの例示的な一実行形態のブロック図である。
【図３】汎用処理ユニットからハードウェアアクセラレータユニットに画像ベースの追跡オペレーションをオフローディングするための例示的な方法のフロー図である。
【図４】撮像デバイスから送信された撮像データのマルチスケール表現を生成するようハードウェアアクセラレータユニットに指示することの、一例を示す。
【図５】事前生成された環境のマップ及び撮像デバイスの予測姿勢に基づいて撮像データに含まれると予想されるフィーチャのセットを選択することによって、画像ベースの追跡オペレーションのセットのための入力データのセットを準備することの、一例を示す。
【図６Ａ−６Ｂ】撮像デバイスの相対姿勢、キーフレームに含まれる確認済みフィーチャの奥行き、及びキーフレームに含まれる点の法線に基づいてキーフレームのパッチをワーピングすることによって入力データのセットを準備することの、一例を示す。
【図７】生成された撮像データのマルチスケール表現及び準備された入力データのセットを使用してパッチマッチングオペレーションを実行するよう、ハードウェアアクセラレータユニットに指示することの、一例を示す。
【図８】汎用処理ユニットからハードウェアアクセラレータユニットに画像ベースの追跡オペレーションをオフローディングする、画像ベースの追跡システムの例示的な一実行形態の動作フロー図である。
【発明を実施するための形態】
【００２７】
図面全体を通じて、同一の参照符号及び説明は、必ずしも同一ではないが類似した要素を示している。本書に記載の例示的な実施形態は様々な改変形態及び代替形態を許容可能であるが、特定の実施形態が、例として図面に示され、本書で詳細に説明されている。しかし、本書に記載の例示的な実施形態は、開示されている特定の形態に限定されることを意図するものではない。むしろ、本開示は、付随する特許請求の範囲に含まれる全ての改変形態、均等物、及び代替形態を包含する。
【００２８】
本開示は概して、汎用処理ユニットからハードウェアアクセラレータユニットに画像ベースの追跡オペレーションをオフローディングするためのシステム及び方法を対象としている。より詳細に後述するように、本開示の実施形態は、撮像デバイス（例えば、電磁スペクトルの少なくとも一部分において光情報を収集することが可能なカメラ）から、ＤＳＰ（例えば汎用及び／若しくは専用のＤＳＰ）並びに／又はＡＳＩＣといったハードウェアアクセラレータユニットに、撮像データ（例えば一又は複数の画像や、一又は複数の画像に関連する画像メタデータなど）を送信しうる。一部の例では、ハードウェアアクセラレータユニットはＳｏＣアーキテクチャ内に含まれてよく、このＳｏＣアーキテクチャは、一又は複数の汎用処理ユニット（例えばＣＰＵやグラフィック処理ユニット（ＧＰＵ）など）も含みうる。
【００２９】
一実施形態は、撮像デバイスから送信された撮像データのマルチスケール表現（画像ピラミッドなど）を生成するよう、ハードウェアアクセラレータユニットに指示することもある。かかる画像ピラミッドは、様々な画像ベースの追跡オペレーションで使用されうる撮像データの複数のスケール（例えばサイズ及び／又は解像度）を表わしうる。
【００３０】
一部の例では、一実施形態は、画像ベースの追跡オペレーションのセットのための入力データのセットを準備することもある。一実施形態は次いで、生成された撮像データのマルチスケール表現及び準備された入力データのセットを使用して画像ベースの追跡オペレーションのセットを実行するよう、ハードウェアアクセラレータユニットに指示しうる。
【００３１】
撮像データをハードウェアアクセラレータユニットに送信すること、撮像データのマルチスケール表現を生成するようハードウェアアクセラレータユニットに指示すること、画像ベースの追跡オペレーションのセットのための入力データのセットを準備すること、及び画像ベースの追跡オペレーションのセットを実行するようハードウェアアクセラレータユニットに指示することによって、本書に記載のシステム及び方法は、コストが大きくなることも考えられるかかる画像ベースの追跡オペレーションを、汎用処理ユニット（例えばＣＰＵやＧＰＵなど）からハードウェアアクセラレータユニット（例えばＤＳＰ及び／又はＡＳＩＣ）に有効にオフローディングしうる。これにより、他の用途（例えば人工環境の生成や別の演算デバイスとの通信など）のために、演算リソース（例えば処理リソース）が解放されうる。
【００３２】
更に、一部の例では、好適なハードウェアアクセラレータユニット（例えばＤＳＰ及び／又はＡＳＩＣ）は、従来型の人工現実システム及び／又は従来型のＨＭＤによって利用されるＳｏＣアーキテクチャ内に既に含まれていることもある。そうでなければ、ハードウェアアクセラレータユニットは、かかる従来型のシステムによって十分に利用されない可能性がある。ゆえに、本書に記載しているように汎用処理ユニットからハードウェアアクセラレータユニットに画像ベースの追跡オペレーションをオフローディングすることは、かかる既存のハードウェア演算リソースのより効率的な利用を提供しうる。
【００３３】
下記では、図１〜２及び図４〜８を参照しつつ、汎用処理ユニットからハードウェアアクセラレータユニットに画像ベースの追跡オペレーションをオフローディングするためのシステムについての詳細説明を提示する。対応するコンピュータで実装される方法についての詳細説明も、図３に関連付けて提示する。
【００３４】
図１は、汎用処理ユニットからハードウェアアクセラレータユニットに画像ベースの追跡オペレーションをオフローディングするための例示的なシステム１００のブロック図である。この図に示しているように、例示的なシステム１００は、一又は複数のタスクを実施するための一又は複数のモジュール１０２を含みうる。より詳細に後述するように、モジュール１０２は、撮像デバイスからハードウェアアクセラレータユニットに撮像データを送信しうる送信モジュール１０４と、撮像デバイスから送信された撮像データのマルチスケール表現を生成するようハードウェアアクセラレータユニットに指示しうる生成モジュール１０６とを含みうる。例示的なシステム１００は、画像ベースの追跡オペレーションのセットのための入力データのセットを準備しうる準備モジュール１０８と、生成された撮像データのマルチスケール表現及び準備された入力データのセットを使用して画像ベースの追跡オペレーションのセットを実行するよう、ハードウェアアクセラレータユニットに指示しうる実行モジュール１１０とを、更に含みうる。
【００３５】
図１に更に示しているように、例示的なシステム１００は、一又は複数のメモリデバイス（メモリ１２０など）も含みうる。メモリ１２０は、一般に、データ及び／又はコンピュータ可読命令を記憶することが可能な、任意の種類又は形態の揮発性又は不揮発性の記憶デバイス又は記憶媒体を表わす。一例では、メモリ１２０は、モジュール１０２のうちの一又は複数を記憶し、ローディングし、かつ／又は維持しうる。メモリ１２０の例は、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、フラッシュメモリ、ハードディスクドライブ（ＨＤＤ）、ソリッドステートドライブ（ＳＳＤ）、光ディスクドライブ、キャッシュ、又はこれらの（若しくはその他の任意の）好適な記憶メモリのうちの一又は複数の変形形態若しくは組み合わせを含むが、これらに限定されるわけではない。
【００３６】
図１に更に示しているように、例示的なシステム１００は、一又は複数の物理プロセッサ（物理プロセッサ１３０など）も含みうる。物理プロセッサ１３０は、一般に、コンピュータ可読命令を解釈しかつ／又は実行することが可能な、任意の種類又は形態のハードウェアで実装される汎用処理ユニットを表わす。一例では、物理プロセッサ１３０は、メモリ１２０に記憶されたモジュール１０２のうちの一又は複数にアクセスし、かつ／又はそれらを改変しうる。追加的又は代替的には、物理プロセッサ１３０は、汎用処理ユニット（例えば物理プロセッサ１３０）からハードウェアアクセラレータユニットへの画像ベースの追跡オペレーションのオフローディングを容易にするために、モジュール１０２のうちの一又は複数を実行しうる。物理プロセッサ１３０の例は、マイクロプロセッサ、マイクロコントローラ、ＣＰＵ、ソフトコアプロセッサを実装するフィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ＡＳＩＣ、これらのうちの一又は複数の部分、これらのうちの一又は複数の変形形態若しくは組み合わせ、又は他の任意の好適な物理プロセッサを含みうるが、これらに限定されるわけではない。
【００３７】
図１に更に示しているように、メモリ１２０及び物理プロセッサ１３０は、画像ベースの追跡サブシステム１４０の部分として含まれうる。画像ベースの追跡サブシステム１４０は、システム１００の一部として含まれうる任意の好適なシステムであって、環境内の物体の位置及び／又は配向を追跡するために撮像データを使用するよう構成されうる、任意の好適なシステムでありうる。
【００３８】
一部の実施形態では、図１に更に示しているように、画像ベースの追跡サブシステム１４０は、ＨＭＤ１５０と通信しうる。一部の例では、「頭部装着ディスプレイ（ｈｅａｄ−ｍｏｕｎｔｅｄ  ｄｉｓｐｌａｙ）」及び「頭部装着ディスプレイデバイス（ｈｅａｄ−ｍｏｕｎｔｅｄ  ｄｉｓｐｌａｙ  ｄｅｖｉｃｅ）」という語は、一般に、ユーザの頭部に又はその周りに装備されるよう構成され、かつユーザに視覚コンテンツを表示するよう構成されている、任意の種類又は形態の表示用のデバイス又はシステムのことを指しうる。頭部装着ディスプレイは、ディスプレイ画面（例えば液晶ディスプレイ（ＬＣＤ）画面、発光ダイオード（ＬＥＤ）ディスプレイ画面、又は有機ＬＥＤ（ＯＬＥＤ）ディスプレイ画面）、プロジェクタ、陰極線管、光学ミキサなどを介するものを含む、任意の好適な方式で、コンテンツを表示しうる。頭部装着ディスプレイは、様々なメディアフォーマットのうちの一又は複数でコンテンツを表示しうる。例えば、頭部装着ディスプレイは、ビデオ、写真、及び／又はコンピュータ生成画像（ＣＧＩ）を表示しうる。ＨＭＤ１５０は、より詳細に後述するように、撮像デバイス１５２及びハードウェアアクセラレータユニット１５４を更に含みうる。一部の例では、画像ベースの追跡サブシステム１４０は、ＨＭＤ１５０の一部として（例えば、ＨＭＤ１５０と共通のハウジング内に）含まれうる。他の例では、画像ベースの追跡サブシステム１４０（又はその構成要素のいずれか）は、ＨＭＤ１５０の外部にあってよく、かつ／又はＨＭＤ１５０と物理的に接続されていないことがあり、一又は複数の無線プロトコルを介してＨＭＤ１５０と通信しうる。
【００３９】
頭部装着ディスプレイは、多様かつ独特なユーザ体験を提供しうる。一部の頭部装着型ディスプレイは仮想現実体験を提供可能である（すなわち、コンピュータで生成された又は事前に記録されたコンテンツを表示可能である）一方、他の頭部装着型ディスプレイは、現実体験を提供しうる（すなわち、物理的世界からのライブ画像を表示しうる）。頭部装着ディスプレイは、ライブコンテンツと仮想コンテンツとが混合されればその混合物も提供しうる。例えば、仮想コンテンツは（例えば、光学シースルー又はビデオシースルーを介して）物理的世界に投影されてよく、これにより、拡張現実体験又は混合現実体験がもたらされうる。頭部装着型ディスプレイは、いくつものやり方でユーザの頭部に装着されるよう構成されうる。一部の頭部装着ディスプレイは、眼鏡又はバイザー（ｖｉｓｏｒ）に組み込まれることがある。その他の頭部装着ディスプレイは、ヘルメット、帽子、又はその他のヘッドウェアに組み込まれうる。
【００４０】
図１の例示的なシステム１００は様々なやり方で実装されうる。例えば、例示的なシステム１００の全部又は一部が、図２の例示的なシステム２００（「システム２００」）の部分を表わすこともある。図２に示しているように、システム２００は、ネットワーク２０４を介してＨＭＤ１５０と通信する演算デバイス２０２を含みうる。少なくとも１つの例では、演算デバイス２０２は、モジュール１０２のうちの一又は複数でプログラミングされうる。追加的又は代替的には、ＨＭＤ１５０が、モジュール１０２のうちの一又は複数でプログラミングされうる。
【００４１】
少なくとも１つの実施形態では、図１の一又は複数のモジュール１０２は、演算デバイス２０２及び／又はＨＭＤ１５０によって実行されると、演算デバイス２０２及び／又はＨＭＤ１５０が、汎用処理ユニットからハードウェアアクセラレータユニットに画像ベースの追跡オペレーションをオフローディングするための一又は複数のオペレーションを実施することを可能にしうる。例えば、より詳細に後述するように、送信モジュール１０４は、演算デバイス２０２及び／又はＨＭＤ１５０に、撮像デバイス（例えば撮像デバイス１５２）からハードウェアアクセラレータユニット（例えばハードウェアアクセラレータユニット１５４）に撮像データ（例えば撮像データ２０６）を送信させうる。一部の実施形態では、生成モジュール１０６は、演算デバイス２０２及び／又はＨＭＤ１５０に、撮像デバイス（例えば撮像デバイス１５２）から送信された撮像データのマルチスケール表現（例えばマルチスケール表現２０８）を生成するようハードウェアアクセラレータユニット（例えばハードウェアアクセラレータユニット１５４）に指示させうる。
【００４２】
更に、一部の例では、準備モジュール１０８は、演算デバイス２０２及び／又はＨＭＤ１５０に、画像ベースの追跡オペレーションのセット（例えば追跡オペレーション２１２）のための入力データのセット（例えば入力データ２１０）を準備させうる。更に、一部の例では、実行モジュール１１０は、生成された撮像データのマルチスケール表現（例えばマルチスケール表現２０８）及び準備された入力データのセット（例えば入力データ２１０）を使用して画像ベースの追跡オペレーションのセット（例えば追跡オペレーション２１２）を実行するよう、ハードウェアアクセラレータユニット（例えばハードウェアアクセラレータユニット１５４）に指示しうる。
【００４３】
演算デバイス２０２は、一般に、コンピュータで実行可能な命令を読み取ること及び／又は実行することが可能な、任意の種類又は形態の演算デバイスを表わす。少なくとも１つの実施形態では、演算デバイス２０２は、ＨＭＤ１５０から一又は複数の指示を受け取りうる。演算デバイス２０２の例は、サーバ、デスクトップ、ラップトップ、タブレット、携帯電話（例えばスマートフォン）、携帯情報端末（ＰＤＡ）、マルチメディアプレーヤ、埋め込みシステム、ウェアラブルデバイス（例えばスマートウォッチやスマートグラスなど）、ゲームコンソール、これらのうちの一又は複数の組み合わせ、又はその他の任意の好適な演算デバイスを含むが、これらに限定されるわけではない。
【００４４】
ネットワーク２０４は、一般に、演算デバイス２０２とＨＭＤ１５０間の通信及び／又はデータ転送を容易にすることが可能な任意の媒体又はアーキテクチャを表わす。ネットワーク２０４の例は、イントラネット、ＷＡＮ、ＬＡＮ、パーソナルエリアネットワーク（ＰＡＮ）、インターネット、電力線通信（ＰＬＣ）、セルラーネットワーク（例えばグローバルシステムフォーモバイルコミュニケーションズ（ＧＳＭ）ネットワーク、符号分割多元接続（ＣＤＭＡ）ネットワーク、ロングタームエボリューション（ＬＴＥ）ネットワークなど）、ユニバーサルシリアルバス（ＵＳＢ）接続、一又は複数の専用データ接続などを含むが、これらに限定されるわけではない。ネットワーク２０４は、無線又は有線の接続を使用して通信又はデータ転送を容易にしうる。一実施形態では、ネットワーク２０４は、演算デバイス２０２とＨＭＤ１５０との間の通信を容易にしうる。
【００４５】
少なくとも１つの例では、演算デバイス２０２及びＨＭＤ１５０は、モジュール１０２のうちの一又は複数でプログラミングされた演算デバイスでありうる。モジュール１０２の機能の全部又は一部は、演算デバイス２０２、ＨＭＤ１５０、及び／又は他の任意の好適な演算システムによって実施されうる。より詳細に後述するように、図１のモジュール１０２のうちの一又は複数は、演算デバイス２０２及び／又はＨＭＤ１５０の少なくとも１つのプロセッサによって実行されると、汎用処理ユニットからハードウェアアクセラレータユニットに画像ベースの追跡オペレーションをオフローディングしうる。
【００４６】
その他の多数のデバイス又はサブシステムが、図１のシステム１００及び／又は図２のシステム２００に接続されうる。逆に、本書で説明及び／又は図示している実施形態を実践するために、図１及び図２に示している構成要素及びデバイスの全てが存在する必要はない。上記で言及されているデバイス及びサブシステムは、図２に示しているものとは異なるやり方で相互接続されることもある。システム１００及び２００は、任意の数のソフトウェア構成、ファームウェア構成、及び／又はハードウェア構成を採用することもある。例えば、本書で開示している例示的な実施形態のうちの一又は複数は、コンピュータ可読媒体上のコンピュータプログラム（コンピュータソフトウェア、ソフトウェアアプリケーション、コンピュータ可読命令、及び／又はコンピュータ制御論理とも称される）として符号化されうる。
【００４７】
図３は、汎用処理ユニットからハードウェアアクセラレータユニットに画像ベースの追跡オペレーションをオフローディングするための、コンピュータで実装される例示的な方法３００のフロー図である。図３に示しているステップは、図１のシステム１００、図２のシステム２００、及び／又はこれらのうちの一又は複数の変形形態若しくは組み合わせを含む、コンピュータで実行可能な任意の好適なコード及び／又は演算システムによって実施されうる。一例では、図３に示しているステップの各々は、あるアルゴリズムを表わしうる。このアルゴリズムの構造は複数のサブステップを含み、かつ／又は複数のサブステップによって表わされる。以下で、かかるサブステップの例をより詳細に提示する。
【００４８】
図３に示しているように、ステップ３１０において、本書に記載のシステムのうちの一又は複数は、撮像デバイスからハードウェアアクセラレータユニットに撮像データを送信しうる。例えば、送信モジュール１０４が、演算デバイス２０２及び／又はＨＭＤ１５０に、撮像デバイス１５２からハードウェアアクセラレータユニット１５４に撮像データ２０６を送信させうる。
【００４９】
撮像デバイス１５２は、環境に関連する撮像データ２０６を収集しうる任意の好適なデバイスを含みうる。例えば、撮像デバイス１５２は、可視光カメラ、赤外線カメラ、熱カメラ、レーダーセンサなど（これらに限定されるわけではない）を含みうる。一部の例では、撮像デバイス１５２は、ＨＭＤ（例えばＨＭＤ１５０）に含まれたカメラであって、画像ベースの追跡システム（例えば画像ベースの追跡サブシステム１４０）と通信する、カメラを含みうる。少なくとも１つの例では、撮像デバイス１５２は、画像ベースの追跡システム（例えば画像ベースの追跡サブシステム１４０）に含まれ、かつ／さもなければ画像ベースの追跡システムと通信する、複数の撮像デバイスに含まれることもある。
【００５０】
一部の実施形態では、撮像デバイス１５２は従来型の撮像デバイス（例えばカメラ）を含むことがあり、これにより、撮像デバイス１５２によって捕捉され、撮像データ２０６によって表わされる信号が、二次元撮像データ（例えば、奥行き情報を有さない撮像データ）を含みうる。一部の実施形態では、撮像デバイス１５２は、撮像デバイス１５２からの撮像データ２０６を使用して奥行き情報を特定しかつ／又は生成しうる別のデバイス（例えば、画像ベースの追跡サブシステム１４０の一又は複数の構成要素）に、対応する撮像データを送信しうる。
【００５１】
ハードウェアアクセラレータユニット１５４は、汎用処理ユニット（例えば物理プロセッサ１３０）から画像ベースの追跡オペレーションがオフローディングされうる、任意の好適なハードウェアデバイスを含みうる。一部の例では、ハードウェアアクセラレータユニット１５４は、ＳｏＣアーキテクチャに含まれたＤＳＰ及び／又はＡＳＩＣを含みうる。
【００５２】
一部の例では、「デジタル信号プロセッサ（ｄｉｇｉｔａｌ  ｓｉｇｎａｌ  ｐｒｏｃｅｓｓｏｒ）」は、アナログ信号を表わす数値データの高速の（例えばリアルタイムの）処理（例えば測定、フィルタリング、圧縮など）を含むがこれに限定されるわけではない、デジタル信号処理オペレーションを加速するために、専用の命令セット及び／又はハードウェアアーキテクチャを実装する、任意のハードウェアデバイスを含みうる。少なくとも１つの例では、ＤＳＰは、汎用処理ユニットよりも良好なパフォーマンス、短いレイテンシ、及び少ない電力制約を伴って、かかるデジタル信号処理オペレーションを実施するよう構成されうる。少なくとも一部の実施形態では、デジタル信号プロセッサは、ベクトル演算を加速するよう構成されたベクトルユニット及び／又はベクトル命令セットを含みうる。
【００５３】
一部の例では、「特定用途向け集積回路（ａｐｐｌｉｃａｔｉｏｎ−ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）」は、特定の用途向けにカスタマイズされた任意の集積回路を含みうる。少なくとも１つの例では、ＡＳＩＣは、汎用処理ユニットよりも良好な性能、短いレイテンシ、及び少ない電力制約を伴って、特定の処理オペレーション（例えばベクトル演算）を実施するよう構成されうる。
【００５４】
更に、一部の例では、「システムオンチップ（ｓｙｓｔｅｍ−ｏｎ−ａ−ｃｈｉｐ）」及び／又は「システムオンチップアーキテクチャ（ｓｙｓｔｅｍ−ｏｎ−ａ−ｃｈｉｐ  ａｒｃｈｉｔｅｃｔｕｒｅ）」は、単一の集積回路内及び／又は基板内に演算構成要素が集積している、演算アーキテクチャ及び／又は演算デバイスを含みうる。一部の実施形態では、ＳＯＣアーキテクチャは、単一の集積回路内及び／又は基板内に集積された、汎用処理ユニット、ハードウェアアクセラレータユニット（例えばＤＳＰやＡＳＩＣなど）、メモリデバイス、ＧＰＵ等（ただしこれらに限定されるわけではない）を含みうる。
【００５５】
送信モジュール１０４は、任意の好適なやり方で、演算デバイス２０２及び／又はＨＭＤ１５０に、撮像デバイス１５２からハードウェアアクセラレータユニット１５４に撮像データ２０６を送信させうる。例えば、撮像デバイス１５２は、撮像デバイス１５２及び／又はＨＭＤ１５０の一部又は全部を取り囲むシーン又は局所領域を特徴付けうる撮像データ２０６を捕捉しうる。送信モジュール１０４は次いで、ＨＭＤ１５０に、撮像デバイス１５２から好適なデータ接続（例えば内部バス、周辺バス、ネットワーク２０４の一又は複数の構成要素など）を介してハードウェアアクセラレータユニット１５４に、撮像データ２０６を送信させうる。
【００５６】
再び図３を参照するに、ステップ３２０において、本書に記載のシステムのうちの一又は複数は、撮像デバイスから送信された撮像データのマルチスケール表現を生成するようハードウェアアクセラレータユニットに指示しうる。例えば、生成モジュール１０６が、演算デバイス２０２及び／又はＨＭＤ１５０に、撮像デバイス１５２から送信された撮像データ２０６のマルチスケール表現２０８を生成するようハードウェアアクセラレータユニット１５４に指示させうる。
【００５７】
生成モジュール１０６は、演算デバイス２０２及び／又はＨＭＤ１５０に、様々なコンテキストで撮像デバイス１５２から送信された撮像データ２０６のマルチスケール表現２０８を生成するようハードウェアアクセラレータユニット１５４に指示させうる。例えば、生成モジュール１０６は、演算デバイス及び／又はＨＭＤ１５０に、撮像データ２０６に基づいて画像ピラミッドを生成するようハードウェアアクセラレータユニット１５４に指示させうる。
【００５８】
一部の例では、「画像ピラミッド（ｉｍａｇｅ  ｐｙｒａｍｉｄ）」は、画像ピラミッドの先行レベルの、ローパスフィルタリングされた低密度の（例えばダウンサンプリングされた）一又は複数の画像を含んでよく、この場合の基準レベルは、オリジナル画像（例えば、撮像デバイス１５２などの撮像デバイスによって捕捉された二次元画像）と定義されうる。
【００５９】
加えて、画像ピラミッドの基本レベルは、任意の好適な画像操作のプロセス及び／又は技法に従って既に前処理された画像でありうる。例えば、本書に記載のシステムのうちの一又は複数（例えば、モジュール１０２のうちの一又は複数）は、オリジナル画像内に存在しうるエイリアシングアーティファクト（ａｌｉａｓｉｎｇ  ａｒｔｉｆａｃｔ）を抑制するために、撮像デバイス１５２によって捕捉された画像にガウス（Ｇａｕｓｓｉａｎ）ぼけ関数を適用しうる。本書に記載のシステムのうちの一又は複数（例えば、モジュール１０２のうちの一又は複数）は次いで、ぼかされた画像を画像ピラミッドの基本レベルに指定しうる。
【００６０】
一部の例では、画像ピラミッドは、以下に示しているように、再帰的に定義されうる。
レベルｌ＝０の場合、Ｇ０（ｘ，ｙ）＝Ｉ（ｘ，ｙ）、かつ
2021530016.tif 000003
であり、ここで、ｗ（ｍ，ｎ）は重み関数である。この重み関数は、分離可能かつ／又は対称であってよく、レベルｌ＋１において、ノードに一定の総重みを付与しうる。かかる画像ピラミッドは、ガウス画像ピラミッドと称されうる。他の例では、画像ピラミッドの各成分は、オリジナル画像に適用された等価重み関数により得られた平均値（例えば、局所平均値）を表わしうる。かかる例では、画像ピラミッドは、様々なスケールにおける局所平均値を包含しうる。
【００６１】
図４は、撮像デバイスから送信された撮像データのマルチスケール表現を生成するようハードウェアアクセラレータユニットに指示することの一例を、例として示している。図示しているように、図４は、４つのレベルを有する画像ピラミッドを含む、マルチスケール表現２０８の一例を示している。レベル４０２は、撮像データ２０６の一部分（例えば、撮像デバイス１５２によって捕捉され、ハードウェアアクセラレータユニット１５４に送信される二次元画像）を表わしうる。図４はレベル４０４（例えばレベル４０４−１〜４０４−３）を更に示しており、これらは各々、レベル４０２の漸進的にダウンサンプリングされたバージョンを表わしている。例えば、レベル４０４−１はレベル４０２のダウンサンプリングされたバージョンを表わし、レベル４０４−２はレベル４０４−１のダウンサンプリングされたバージョンを表わし、以下同様でありうる。追加的又は代替的には、レベル４０４−１は、レベル４０２の、第１ダウンサンプリング関数がレベル４０２に適用されたバージョンを表わし、レベル４０４−２は、レベル４０２の、第２ダウンサンプリング関数がレベル４０２に適用されたバージョンを表わし、以下同様でありうる。
【００６２】
生成モジュール１０６は、任意の好適なやり方でマルチスケール表現２０８を生成するようハードウェアアクセラレータユニット１５４に指示しうる。例えば、ハードウェアアクセラレータユニット１５４は、撮像デバイス１５２から撮像データ２０６を受信した上で、撮像データ２０６に含まれる画像を平滑化し、複数レベルの画像ピラミッドを得るために複数回ダウンサンプリングしうる。少なくとも１つの例では、ハードウェアアクセラレータユニット１５４は、４つのレベルの画像ピラミッドを得るために、撮像データ２０６に含まれる画像を３回ダウンサンプリングしうる。一部の例では、ハードウェアアクセラレータユニット１５４は、多次元（例えば、３×３、４×４、５×５など）カーネルでの畳み込みにより、画像を平滑化しうる。ゆえに、少なくとも１つの例では、ハードウェアアクセラレータユニット１５４は、３×３のダウンサンプリングカーネルで、撮像データ２０６を連続的に平滑化し、（例えば、２などの好適なダウンサンプル比を用いて）ダウンサンプリングすることによって、撮像データ２０６から画像ピラミッドを作成しうる。
【００６３】
ハードウェアアクセラレータユニット１５４は、ハードウェアアクセラレータユニット１５４に関連する命令セットに含まれる一又は複数の命令を実行することによって、前述のオペレーション（例えば平滑化、ダウンサンプリング、集約など）を実行しうる。例えば、ハードウェアアクセラレータユニット１５４は、乗算（例えばハーフワード、ワードバイハーフ、ベクトル縮小、及び／又は二重乗算）、ワード及び／又はハーフワードのデータに対する算術シフト及び／又は論理シフト、自動スケーリングなどといった、様々なベクトル演算を効率的に実行するよう構成されうる。ハードウェアアクセラレータユニット１５４は、撮像データ２０６からマルチスケール表現２０８を生成するために、このような効率的なベクトル演算のうちの一又は複数を利用しうる。ゆえに、上述した畳み込み（例えば、３×３カーネルでの畳み込みによって撮像データ２０６に含まれる画像を平滑化すること）が、ハードウェアアクセラレータユニット１５４に効率的に実装されうる。
【００６４】
再び図３を参照するに、ステップ３３０において、本書に記載のシステムのうちの一又は複数は、画像ベースの追跡オペレーションのセットのための入力データのセットを準備しうる。例えば、準備モジュール１０８が、演算デバイス２０２及び／又はＨＭＤ１５０に、追跡オペレーション２１２のための入力データ２１０を準備させうる。
【００６５】
一部の例では、「画像ベースの追跡オペレーション（ｉｍａｇｅ−ｂａｓｅｄ  ｔｒａｃｋｉｎｇ  ｏｐｅｒａｔｉｏｎ）」は、環境内の点の位置を特定するために使用されうる任意のオペレーションを含みうる。より詳細に後述するように、画像ベースの追跡オペレーションは、画像ピラミッドの生成、パッチマッチングオペレーション、サブピクセル整列オペレーション、コーナー検出オペレーション、ガンマ補正オペレーション（例えばガンマ圧縮オペレーションやガンマ展開オペレーションなど）等を含みうるが、これらに限定されるわけではない。一部の例では、入力データ２１０は、ハードウェアアクセラレータユニット１５４が一又は複数の画像ベースの追跡オペレーションを実行するために利用しうる、任意のデータを含みうる。
【００６６】
準備モジュール１０８は、演算デバイス２０２及び／又はＨＭＤ１５０に、様々なコンテキストの追跡オペレーション２１２のための入力データ２１０を準備させうる。例えば、準備モジュール１０８は、撮像データ２０６に含まれると予想されるフィーチャのセットを選択することにより、演算デバイス２０２及び／又はＨＭＤ１５０に追跡オペレーション２１２のための入力データ２１０を準備させうる。例えば、準備モジュール１０８は、環境のマップと追跡対象物（例えばＨＭＤ１５０）の予測姿勢とを表わすデータを受信して（例えば、かかるデータを読み取って、かかるデータにアクセスして、かかるデータを取得して）よく、これらのマップ及び予測姿勢に基づいて、撮像データ２０６（例えば、撮像データ２０６に含まれる二次元画像）内で視認可能になると予想されうる点のセットを特定しうる。
【００６７】
更に、一部の例では、準備モジュール１０８は、キーフレーム（例えば、キーフレームに関連する確認子）を選択しかつ／又は受信してよく、かつ、キーフレームの隣接グラフを探し出して、一又は複数の追加キーフレームをキーフレームと重複しうる視野に同定しうる。キーフレーム及び追加キーフレームに基づいて、準備モジュール１０８は、キーフレームから視認可能でありうる点のセットを特定しうる。準備モジュール１０８は次いで、特定された点のセットを予測されたカメラ姿勢のフレーム内に投影しうる。準備モジュール１０８は次いで、この点のセットが、撮像データ２０６に含まれる画像の境界内に含まれるよう投影されているかどうかを判定しうる。撮像データ２０６に含まれる画像の境界内に含まれるよう上手く投影されている点は次いで、入力データ２１０の一部として、ハードウェアアクセラレータユニット１５４に記憶されかつ／又は送られうる。一部の例では、「キーフレーム（ｋｅｙｆｒａｍｅ）」は、別のフレームを参照することなく復号されうるデジタルビデオストリームに含まれる（例えば、撮像デバイス１５２からの撮像データ２０６に含まれる）任意のフレームを含みうる。
【００６８】
図５は、事前生成された環境のマップ及び撮像デバイスの予測姿勢に基づいて撮像データに含まれると予想されるフィーチャのセットを選択することによって、画像ベースの追跡オペレーションのセットのための入力データのセットを準備することの図５００を、例として示している。図示しているように、図５はキーフレーム５０２及び投影フレーム５０４を含んでいる。上述したように、キーフレーム５０２は、撮像データ２０６に含まれうる現行フレームに（例えば時間的に、空間的に）最も近いと準備モジュール１０８が判定した、キーフレームでありうる。投影フレーム５０４は、撮像デバイス１５２の予測姿勢に基づく現行フレームの推定を表わしうる。経路５０６は、環境を通る追跡対象物（例えば、ＨＭＤ１５０）の経路を表わしてよく、位置５０８（例えば位置５０８−〜５０８−３）は、以前に特定された追跡対象物（例えばＨＭＤ１５０）の位置、及び／又は環境内での追跡対象物の以前の位置を特定するために使用された撮像データの先行フレームを表わしうる。
【００６９】
図５に更に示しているように、予測位置５１０は、準備モジュール１０８が、追跡対象物（例えばＨＭＤ１５０）に関連する一又は複数の慣性測定ユニット（ＩＭＵ）から集められた慣性データ５１２に基づいて、投影フレーム５０４に関連する追跡対象物（例えばＨＭＤ１５０）の予測位置及び／又は予測配向を既に予測していることを示す。
【００７０】
点５１４（例えば点５１４−１〜５１４−３）は、キーフレーム５０２に含まれる点でありうる。点５１４は、更に環境に更に関連付けられてもよく、かつ環境のマップに含まれうる。点５１４に関連する奥行きインジケータ５１６（例えば奥行きインジケータ５１６−１〜５１６−２）は、撮像デバイス（例えば撮像デバイス１５２）がキーフレーム５０２を捕捉した時点における、撮像デバイスの特定された位置に対する点５１４の特定された奥行きを表わしうる。投影された奥行きインジケータ５１８は、投影フレーム５０４内の点５１４−３の投影された奥行きを表わしうる。
【００７１】
ゆえに、図５に示しているように、準備モジュール１０８は、点５１４（例えば点５１４−１〜５１４−３）がキーフレーム５０２内で視認可能であると判定しうる。準備モジュール１０８は次いで、投影フレーム５０４内に点５１４を投影し、点５１４−が投影フレーム５０４の境界内に含まれるよう投影されていると判定しうる。ゆえに、準備モジュール１０８は、入力データ２１０の一部として、点５１４−３に関連するデータ（例えば、撮像データ２０６に含まれる画像内の点５１４−３の投影位置や、撮像デバイス１５２が撮像データ２０６を捕捉した時点における撮像デバイス１５２の位置に対する点５１４−の投影された奥行きなど）を含んでよく、点５１４−３に関連するデータを使用して一又は複数の画像ベースの追跡オペレーションを実行するよう、ハードウェアアクセラレータユニット１５４に指示しうる。
【００７２】
加えて、準備モジュール１０８は更に、撮像デバイスの相対姿勢、キーフレームに含まれる確認済みフィーチャの奥行き、及びキーフレームに含まれる点の法線に基づいてキーフレームのパッチをワーピングすることにより、追跡オペレーション２１２のための入力データ２１０を準備しうる。例えば、環境のマップに含まれる確認済みフィーチャの各々（例えば各点）は、確認済みフィーチャを三角測量するために画像ベースの追跡デバイスが使用したことがありうる先行フレームのセットに関連付けられうる。準備モジュール１０８は、撮像データ２０６に含まれると想定されうる現行フレームに（例えば、撮像デバイス及び／若しくは追跡対象物に対して時間的に、空間的に、又はコンテンツが）最も近いものでありうる確認済みフィーチャに関連するキーフレームを選択してよく、かつ、このキーフレームのパッチを現行フレーム内にワーピングしうる。一部の例では、準備モジュール１０８は、アフィン変換演算に従って、キーフレームのパッチを現行フレーム内にワーピングしうる。準備モジュール１０８は、入力データ２１０の一部として、ワーピングされたパッチを表わす情報を含みうる。
【００７３】
一部の例では、準備モジュール１０８は、キーフレームのパッチに含まれる点の法線の推定値が所定の閾値の範囲内にあるかどうかを判定することによって、キーフレームのパッチをワーピングしうる。キーフレームに含まれる点の法線の推定値が所定の閾値の範囲内にある場合、キーフレームのパッチをワーピングすることは、キーフレームに含まれる点の法線の推定値に基づきうる。一部の例では、「法線（ｎｏｒｍａｌ）」又は「点の法線（ｎｏｒｍａｌ  ｏｆ  ａ  ｐｏｉｎｔ）」は、点を含む接平面に垂直なベクトルを含みうる。
【００７４】
図６Ａには、点６０４を含むパッチ６０２が例として示されている。この図では、パッチ６０２はキーフレーム６０６に含まれてよく、キーフレーム６０６は、撮像データ２０６に含まれると想定されうる現行フレーム６０８に最も近いキーフレームでありうる。図示しているように、現行フレーム６０８（ひいてはＨＭＤ１５０及び／又は撮像デバイス１５２）は、キーフレーム６０６の姿勢に対する姿勢であって、ＨＭＤ１５０及び／又は撮像デバイス１５２に関連するＩＭＵによって得られた一又は複数の測定値、環境内のＨＭＤ１５０及び／又は撮像デバイス１５２の既に特定されている位置及び／又は配向を含む環境のマップ、環境の一又は複数の画像に含まれる一又は複数のフィーチャの、環境内での既に特定された位置などに基づいて、本書に記載のシステムのうちの一又は複数（例えば準備モジュール１０８）が予測しかつ／又は推定しうる、姿勢を有する。
【００７５】
図６Ａに更に示しているように、点６０４は、関連する推定法線６１０を有しうる。準備モジュールは、推定法線６１０が所定の閾値の範囲内にあると（例えば、推定法線６１０によって示された点６０４の法線の推定値は、精度が十分であり、許容範囲内にあり、量及び／又は質が十分な入力データに基づいて推定されたものであると）判定しうる。この例では、準備モジュール１０８は、キーフレームの姿勢、現行フレームの姿勢（例えば予測された姿勢）、及び推定法線６１０に基づいて、現行フレーム６０８にパッチ６０２をワーピングしうる。
【００７６】
他の例では、点６０４の法線は未知でありうる（例えば、点６０４の法線の推定値は所定の閾値を下回りうる）。かかる例では、準備モジュール１０８は、キーフレーム６０６（例えばキーフレーム６０６の姿勢）に対する現行フレーム６０８の想定姿勢、予測姿勢、及び／又は推定姿勢に基づいて、点６０４の法線を特定しうる（例えば特定済み法線６１２）。ゆえに、図６Ｂに示しているように、準備モジュール１０８は、点６０４の法線がキーフレーム６０６と現行フレーム６０８との間の空間におけるある点に向けられていると判定することによって、特定済み法線６１２を特定しうる。
【００７７】
更に、一部の例では、キーフレームのパッチをワーピングすることは、パッチマッチングオペレーションで利用するために、マルチスケール表現２０８に含まれる撮像データ２０６のスケール表現を算出することを含みうる。準備モジュール１０８は次いで、マルチスケール表現２０８に含まれるスケール表現の、算出されたスケール表現に対応する少なくとも一部分（例えば少なくとも１つのパッチ）を示す情報（例えば、パッチマッチングオペレーションにおいて画像ピラミッドの特定のレベルのパッチを利用することの指示）を、入力データ２１０内に含みうる。
【００７８】
本書に記載のシステム及び方法は、追跡オペレーション２１２のための入力データ２１０を準備することによって、一又は複数の画像ベースの追跡オペレーションを実行するようハードウェアアクセラレータユニット１５４に指示するための準備として、一又は複数のオペレーションを実行しうる。これにより、ハードウェアアクセラレータユニット１５４によって効率的に実施され得ない特定のオペレーションが、汎用処理ユニット（例えば物理プロセッサ１３０）に効率的に割り当てられうる。入力データ２１０を準備することにより、ハードウェアアクセラレータユニット１５４が、入力データ２１０を使用して、ハードウェアアクセラレータユニット１５４によって効率的に実施されうる画像ベースの追跡オペレーションを実行することも、有効に可能になりうる。
【００７９】
更に、入力データ２１０の準備に関連して上述したオペレーションのうちの一又は複数は、汎用プロセッサ（例えば物理プロセッサ１３０）によって実行されると前述したが、一部の実施形態では、ハードウェアアクセラレータユニット１５４によって実行されることもある。例えば、少なくとも１つの実施形態では、本書に記載のシステムのうちの一又は複数（例えば準備モジュール１０８）は、撮像データ２０６に含まれると予想されるフィーチャのセットを選択し、かつ／又は任意の好適な方法で（例えば、本書に記載しているやり方のいずれかで）キーフレームのパッチをワーピングするよう、ハードウェアアクセラレータユニット１５４に指示しうる。かかる例では、ハードウェアアクセラレータユニット１５４は、一又は複数の画像ベースの追跡オペレーションに加えて、かかるオペレーションも効率的に実行するよう構成されうる。
【００８０】
再び図３を参照するに、ステップ３４０において、本書に記載のシステムのうちの一又は複数は、生成された撮像データのマルチスケール表現及び準備された入力データのセットを使用して画像ベースの追跡オペレーションのセットを実行するよう、ハードウェアアクセラレータユニットに指示しうる。例えば、実行モジュール１１０は、演算デバイス２０２及び／又はＨＭＤ１５０に、マルチスケール表現２０８及び入力データ２１０を使用して追跡オペレーション２１２を実行するようハードウェアアクセラレータユニット１５４に指示させうる。
【００８１】
一部の例では、画像ベースの追跡オペレーションのセットは、画像ベースの追跡システム（例えば画像ベースの追跡サブシステム１４０）が環境内の追跡対象物を確認し、位置特定し、かつ／又はその位置及び／又は配向を特定することを可能にしうる、任意のオペレーションを含みうる。一部の例では、より詳細に後述するように、画像ベースの追跡オペレーションのセットは、パッチマッチングオペレーション、コーナー検出オペレーション、サブピクセル整列オペレーション、及び／又はガンマ補正オペレーション（例えばガンマ圧縮オペレーションやガンマ展開オペレーションなど）を含みうるが、これらに限定されるわけではない。
【００８２】
一部の例では、「パッチマッチングオペレーション（ｐａｔｃｈ  ｍａｔｃｈｉｎｇ  ｏｐｅｒａｔｉｏｎ）」は、画像の一部分を追加画像の別の部分と相関させうる、任意のオペレーションでありうる。例えば、ゼロ平均差分二乗和（ＺＳＳＤ）演算が、画像の一部分（例えば、キーフレームのワーピングされたパッチ）と追加画像の別の部分（例えば、撮像データ２０６に含まれる画像）とを相関させうる。
【００８３】
図７は、生成された撮像データのマルチスケール表現及び準備された入力データのセットを使用してパッチマッチングオペレーションを実行するようハードウェアアクセラレータユニットに指示することの例示的な図７００を、例として示している。図示しているように、図７は図５の要素のうちの多くを含んでいる。しかし、図７では、投影フレーム５０４が、撮像データ２０６に含まれる画像（例えば二次元画像）を表わしうる現行フレーム７０２で置換されている。図７に更に示しているように、予測モジュール１０８により、パッチ７０４、弧線７０６、及びワーピングされたパッチ７０８によって示されている近接キーフレーム（例えばキーフレーム５０２及び／又はキーフレーム６０６）から現行フレーム７０２へのパッチのワーピングも、既に行われている。図７に示している例では、予測モジュール１０８により、上述したパッチマッチングオペレーションで利用するために、マルチスケール表現に含まれる画像ピラミッド内のレベルといった現行フレーム７０２のマルチスケール表現（例えばマルチスケール表現２０８）に含まれる撮像データ２０６のスケール表現も、既に算出されている（ただし図７には図示していない）。
【００８４】
実行モジュール１１０は、準備モジュール１０８が投影フレーム５０４内で視認可能になると予測した可能性がある点のセット（例えば点５１４−３）の、現行フレーム７０２内の二次元対応点のセットを見い出すために、ハードウェアアクセラレータユニット１５４にパッチマッチングオペレーションを実行するよう指示しうる。実行モジュール１１０は、点５１４−３に関連する予測フィーチャ位置に基づいてサーチウインドウ７１０を確認するようハードウェアアクセラレータユニット１５４に指示することによって、パッチマッチングオペレーションを実行するようハードウェアアクセラレータユニット１５４に指示しうる。ハードウェアアクセラレータユニット１５４は次いで、現行フレーム７０２の算出されたスケール表現（例えば画像ピラミッドのレベル）を使用して、現行フレーム７０２の算出されたスケール表現の、サーチウインドウ７１０内に含まれる一部分により、ワーピングされたパッチ７０８の畳み込みを実施しうる。ハードウェアアクセラレータユニット１５４は更に、サーチウインドウ７１０内の点及びワーピングされたパッチ７０８について、ＺＳＳＤスコアを算出しうる。ハードウェアアクセラレータユニット１５４は次いで、所定の閾値ＺＳＳＤスコアを下回るＺＳＳＤスコアを有するサーチウインドウ７１０内の点を確認し、この点を、現行フレーム７０２内の対応点５１４（例えば点５１４−３）の位置に一致するもの（ｍａｔｃｈ）として指定しうる。ハードウェアアクセラレータユニット１５４は次いで、指定された点の二次元座標を記憶しうる。
【００８５】
一部の例では、ＺＳＳＤスコア決定が整数値を有するピクセル座標に対してのみ実施されうるので、上述のような、ＺＳＳＤスコアにより確認される対応は不正確になりうる。ゆえに、一部の例では、実行モジュール１１０は、既にマッチングされたピクセルの周囲でサブピクセル整列オペレーションを実施するようハードウェアアクセラレータユニット１５４に指示することによって、対応（例えば、現行フレーム７０２内の点５１４の確認されかつ／又は特定された位置）を精密化するようハードウェアアクセラレータユニット１５４に指示しうる。一部の例では、サブピクセル整列オペレーションは、８×８パッチ全体に対する二次元逆合成Ｌｕｃａｓ−Ｋａｎａｄｅ最適化を含みうる。換言すると、このＬｕｃａｓ−Ｋａｎａｄｅ最適化は、キーフレーム（例えばキーフレーム５０２）又は現行フレーム（例えば現行フレーム７０２）の抽出サブ領域（例えば５ピクセル×５ピクセル、８ピクセル×８ピクセル、８サブピクセル×８サブピクセルなどを測定するウインドウ）を、二次元逆合成Ｌｕｃａｓ−Ｋａｎａｄｅ最適化におけるテンプレートとして利用しうる。一部の例では、サブピクセル整列オペレーションは、例えば２つの並進パラメータ及び／又は１つの照明オフセットパラメータのために、更に最適化されうる。
【００８６】
更に、上述したように、一部の例では、実行モジュール１１０は更に、コーナー検出オペレーションを実行するようハードウェアアクセラレータユニット１５４に指示しうる。一部の例では、「コーナー検出オペレーション（ｃｏｒｎｅｒ  ｄｅｔｅｃｔｉｏｎ  ｏｐｅｒａｔｉｏｎ）」は、画像内の２つのエッジの接合部を確認しうる任意のオペレーションであってよく、この場合、画像内のエッジは、輝度が局所的に不連続であることによって示されうる。一部の例では、コーナー検出オペレーションは、Ｈａｒｒｉｓコーナー検出オペレーション、Ｍｏｒａｖｅｃコーナー検出オペレーション、Ｗａｎｇ・Ｂｒａｄｙコーナー検出オペレーションなどを含みうるが、これらに限定されるわけではない。
【００８７】
上述したように、ハードウェアアクセラレータユニット１５４は、ハードウェアアクセラレータユニット１５４に関連する命令セットに含まれる一又は複数の命令を実行することによって、前述の画像ベースの追跡オペレーションを実行しうる。例えば、ハードウェアアクセラレータユニット１５４は、乗算（例えばハーフワード、ワードバイハーフ、ベクトル縮小、及び／又は二重乗算）、ワード及び／又はハーフワードのデータに対する算術シフト及び／又は論理シフト、自動スケーリングなどといった、様々なベクトル演算を効率的に実行するよう構成されうる。ハードウェアアクセラレータユニット１５４は、上述した画像ベースの追跡オペレーションのうちの一又は複数を実行するために、前述の効率的なベクトル演算のうちの一又は複数（及び／又は、ハードウェアアクセラレータユニット１５４が実施するよう構成されうる他の任意のオペレーション）を利用しうる。ゆえに、追跡オペレーション２１２のうちの一又は複数は、ハードウェアアクセラレータユニット１５４により効率的に実装されうる。
【００８８】
図８は、画像ベースの追跡サブシステム１４０によって実行されうる例示的なマルチスレッド画像ベースの追跡パイプラインの動作フロー図８００を示しており、画像ベースの追跡オペレーションは、汎用処理ユニット（例えば物理プロセッサ１３０）からハードウェアアクセラレータユニット（例えばハードウェアアクセラレータユニット１５４）にオフローディングされうる。図８に示しているように、マルチスレッド画像ベースの追跡パイプラインは、３つのスレッド（すなわち、ＩＭＵスレッド８０２、マッパスレッド８０４、及びトラッカスレッド８０６）を含みうる。一部の例では、これらのスレッドは、別々のクロック速度で動作しうる（例えば実行されうる）。例えば、ＩＭＵスレッド８０２は１，０００Ｈｚで動作し、マッパスレッド８０４は５Ｈｚの周波数で動作し、トラッカスレッド８０６は、画像ベースの追跡サブシステム１４０の電源周波数（例えば２５Ｈｚや３０Ｈｚなど）で動作しうる。画像ベースの追跡サブシステムの電源周波数（例えば、画像ベースの追跡サブシステム１４０が動作する国の「幹線（ｍａｉｎｓ）」周波数）でトラッカスレッド８０６を動作させることによって、本書に記載のシステム及び方法は、何らかの外部要因（環境内の蛍光灯のちらつきなど）が画像ベースの追跡システム及び／又はＨＭＤの動作を妨害しうる程度を低減し、かつ／又はゼロにしうる。
【００８９】
ＩＭＵスレッド８０２は、ＩＭＵ（例えばＩＭＵ８０８）の測定値を処理しうる。一部の例では、ＩＭＵ８０８によって収集されるＩＭＵデータ（例えば、ＨＭＤなどの追跡対象物の角速度や線形加速度など）は、一又は複数のＩＭＵオペレーション８１０（例えば、ＩＭＵデータとその他の収集された慣性データとの統合、一又は複数の姿勢フィルタ及び／又は自由度フィルタに従ったフィルタリングなど）を受け、一又は複数の中間バッファ（例えば状態バッファ８１２及び／又はＩＭＵバッファ８１４）に追加されうる。
【００９０】
マッパスレッド８０４は、キーフレーム及び／又はキーフレームから三角測量された点並びに点行列８１６を受信し、かつ、マップ８２０を改変及び／又は更新しうる一又は複数のマッピングオペレーション８１８を実行しうる。マッピングオペレーション８１８は、キーフレーム及び／又は点行列８１６に含まれる点に基づいてマップ８２０を改変及び／又は更新しうる、任意のオペレーションを含みうる。例えば、マッピングオペレーション８１８は、新たなキーフレーム及び点をマップ８２０に追加すること、キーフレームの一又は複数の姿勢を最適化すること、（図６Ａ及び６Ｂを参照して上述したように）キーフレームに含まれる点の法線を特定しかつ／又は推定すること、及び／又は、トラッカスレッド８０６に関連するオペレーションのレイテンシを短くするためにマップ８２０を好適な中間記憶場所にコピーすること、を含みうるが、これらに限定されるわけではない。
【００９１】
マップ８２０は、環境内の一又は複数の点の、確認され、三角測量され、かつ／又は追跡された所在地を表わし、かつ／又はかかる所在地に関連する、データを含みうる。例えば、マップ８２０は、環境内の点の二次元位置及び／又は三次元位置、撮像デバイス（例えば撮像デバイス１５２）に対する点の奥行き、確認されかつ／又は位置特定された点の特定されかつ／又は推定された法線など（これらに限定されるわけではない）を含みうる。更に、マップ８２０は、環境内の一又は複数の点の所在地を特定するために、画像ベースの追跡システム（例えば画像ベースの追跡サブシステム１４０）を表わし、かつ／又はそれによって使用される情報を含みうる一又は複数のキーフレームを含みうる。マップ８２０は、任意の好適なデータ記憶媒体及び／又は任意の好適なデータ構造を含みうる。
【００９２】
トラッカスレッド８０６は、本書に記載のシステムのうちの一又は複数により、撮像データ（例えば撮像データ２０６）を処理するために一又は複数のオペレーションを実施しうる。例えば、本書に記載のシステムのうちの一又は複数（例えば送信モジュール１０４）は、撮像デバイス１５２に、撮像データ２０６をハードウェアアクセラレータユニット１５４に送信させうる。図８には１つの撮像デバイス１５２だけが図示されているかもしれないが、撮像デバイス１５２は、撮像データ２０６を提供しかつ／又は撮像データ２０６をハードウェアアクセラレータユニット１５４に送信しうる、複数の撮像デバイスのうちの１つでありうる。
【００９３】
更に、本書に記載のシステムのうちの一又は複数（例えば準備モジュール１０８）は、画像ベースの追跡オペレーションのセット（例えば追跡オペレーション２１２）のための入力データのセット（例えば入力データ２１０）を準備しうる。例えば、図５を参照して上述したように、準備モジュール１０８は、事前生成された環境のマップ（例えばマップ８２０）及び撮像デバイスの予測姿勢に基づいて（例えば、ＩＭＵ８０８から受信されかつ／又は状態バッファ８１２に記憶された統合ＩＭＵデータに基づいて）、撮像デバイス１５２からの撮像データに含まれると予想されるフィーチャのセットを選択しうる（フィーチャ選択８２２と図示されている）。更に、パッチワーピング８２４に図示されており、かつ図６〜７を参照して更なる詳細事項を上述したように、本書に記載のシステムのうちの一又は複数（例えば準備モジュール１０８）は更に、（１）撮像デバイスの相対姿勢（例えば、状態バッファ８１２及び／又はマップ８２０に含まれるキーフレームデータに含まれる統合ＩＭＵデータに基づくもの）、（２）（例えばマップ８２０に含まれている）キーフレームに含まれる確認済みフィーチャの奥行き（３）（例えばマップ８２０に含まれている）キーフレームに含まれる点の法線、に基づいてキーフレームのパッチをワーピングすることによって、入力データのセットを準備しうる。
【００９４】
図８のハードウェアアクセラレータユニット１５４の表現内に含まれる（例えば、この表現によって囲まれた）グラフィカル要素によって更に示されているように、本書に記載のシステムのうちの一又は複数（例えば生成モジュール１０６及び／又は実行モジュール１０８）は、一又は複数のオペレーションを実行するようハードウェアアクセラレータユニット１５４に指示しうる。例えば、マルチスケール８２６によって示されており、かつ図４を参照して上述したように、生成モジュール１０６は、撮像デバイス１５２からハードウェアアクセラレータユニット１５４に送信される撮像データ（例えば撮像データ２０６）のマルチスケール表現（例えばマルチスケール表現２０８）を生成するよう、ハードウェアアクセラレータユニット１５４に指示しうる。更に、図７を参照して上述したように、実行モジュール１１０は、生成された撮像データのマルチスケール表現（例えばマルチスケール表現２０８）及び準備された入力データのセット（例えば入力データ２１０）を使用して画像ベースの追跡オペレーションのセットを実行するよう、ハードウェアアクセラレータユニット１５４に指示しうる。一部の例では、画像ベースの追跡オペレーションのセットは、図８のパッチマッチング８２８、サブピクセル整列８３０、及びコーナー検出８３２によってそれぞれ示しているように、パッチマッチングオペレーション、サブピクセル整列オペレーション、及び／又はコーナー検出オペレーションを含みうるが、これに限定されるわけではない。
【００９５】
本書に記載のシステムのうちの一又は複数（例えばモジュール１０２のうちの一又は複数）は、撮像データ（例えば撮像データ２０６）を更に処理するために、トラッカスレッド８０６の一部として様々な追加オペレーションを実行しうる。かかるオペレーションは、上述したハードウェアアクセラレータユニット１５４によって実行されるオペレーションとは異なり、一部の例では、汎用処理ユニット（物理プロセッサ１３０など）により実行されうる。
【００９６】
例えば、姿勢推定８３４において、モジュール１０２のうちの一又は複数は、撮像デバイス１５２及び／又は一又は複数の追跡対象物の姿勢（例えば位置及び／又は配向）を推定しうる。かかる推定姿勢と共に、追加のＩＭＵデータ及び／又は校正データ（例えば、ＩＭＵ８０８及び／又はＩＭＵオペレーション８１０からのデータ）が、状態バッファ８１２を更新するために使用されうる。キーフレーム選択８３６において、モジュール１０２のうちの一又は複数は、画像データ２０６に含まれる一又は複数のキーフレームを選択してマップ８２０に追加し、上述したマッパスレッド８０４による処理のために、選択されたフレームをキーフレーム及び点行列８１６に送りうる。
【００９７】
図８に更に示しているように、本書に記載のシステムのうちの一又は複数（例えば、モジュール１０２のうちの一又は複数）は更に、トラッカスレッド８０４によって実行されるオペレーションの一部として、キーフレーム選択８３６からコーナー検出８３２に選択されたキーフレームが送られるようにしうる。本書に記載の一又は複数のシステム（例えば、実行モジュール１１０による指示を受けるハードウェアアクセラレータユニット１５４）は次いで、任意の好適なやり方で（例えば、上述したコーナー検出オペレーションにしたがって）、選択されたキーフレームに含まれる存在可能な点を検出しうる。
【００９８】
点生成８３８において、本書に記載のシステムのうちの一又は複数は、検出されたコーナーを受信可能であり、検出された点（例えば、一又は複数の追加キーフレーム内で確認された、選択されたキーフレーム内で検出された一又は複数の点と相関しうる点）と一致するものを見い出し、かつ／又は検出された点を三角測量するために、本書に記載のシステム及び／又は方法のうちの一又は複数（例えば、モジュール１０２のうちの一又は複数）を使用しうる。本書に記載のシステムのうちの一又は複数は次いで、生成された（例えば相関されかつ／又は三角測量された）点が、マッパスレッド８０４による更なる処理のため、及び／又はマップ８２０内への包含のために、キーフレーム及び点行列８１６に追加されるようにしうる。
【００９９】
本開示全体を通じて記述しているように、開示されているシステム及び方法は、従来型の画像ベースの追跡システムを凌駕する一又は複数の利点を提供しうる。例えば、本書に記載のシステム及び方法は、汎用処理ユニット（例えば物理プロセッサ１３０）を介して、パッチマッチング、サブピクセル整列、及び／又はコーナー検出などのオペレーションの準備として、撮像データに含まれると予想される一又は複数のフィーチャを選択することによって、及び／又はキーフレームのパッチをワーピングすることによって、画像ベースの追跡オペレーションのセットのための入力データのセットを準備しうる。
【０１００】
画像ベースの追跡オペレーションのための汎用処理ユニットによる入力データのかかる準備により、汎用処理ユニットと、ハードウェアアクセラレータユニットであって、画像ベースの追跡オペレーションのセット（例えば、撮像データ２０６のマルチスケール表現の生成、パッチマッチングオペレーションの実行、サブピクセル整列オペレーションの実行、コーナー検出オペレーションの実行など）を効率的に実施するよう（例えば、好適な命令セット、ハードウェアアーキテクチャ、及び／又は処理能力を伴って）構成されているハードウェアアクセラレータユニットとの間で、画像ベースの追跡オペレーションに関連する演算タスクが効率的に配分されうる。例えば、好適に構成されたハードウェアアクセラレータユニットは、準備された入力データが提供された場合、汎用処理ユニットよりも少ない電力を消費しつつ、画像ベースの追跡オペレーションのセットを実施することが可能でありうる。したがって、本書に記載のシステム及び方法は、画像ベースの追跡システムの限られた電力資源のより効率的な使用をもたらしうる。
【０１０１】
更に、一又は複数の画像ベースの追跡オペレーション（例えば、撮像データ２０６のマルチスケール表現の生成、パッチマッチングオペレーションの実行、サブピクセル整列オペレーションの実行、コーナー検出オペレーションの実行など）を効率的に実施することが可能なハードウェアアクセラレータユニット（例えばハードウェアアクセラレータユニット１５４）に、上述した画像ベースの追跡オペレーションを実行するよう指示することによって、本書に記載のシステム及び方法は、汎用処理ユニット（例えば物理プロセッサ１３０）からハードウェアアクセラレータユニットに、演算集約的な画像ベースの追跡オペレーションをオフローディングしうる。これにより、拡張現実体験をユーザに提供することに関連するその他のオペレーションを実施するよう、汎用処理ユニットが解放されうる。
【０１０２】
更に、一部の例では、本書に記載のシステム及び方法は、画像ベースの追跡オペレーションの実行中に、ピクセルデータ（例えば撮像データ２０６）をハードウェアアクセラレータユニット内に残しうる（例えば、ハードウェアアクセラレータユニットに関連するメモリ内及び／又はハードウェアアクセラレータユニットに含まれるメモリ内に保持させうる）。このことは、ハードウェアアクセラレータユニットに関連しうるコスト高な（例えば演算集約的な、帯域幅集約的な、電力集約的な）入力、出力、前処理、及び／又は後処理の動作を回避するのに役立ちうる。
【０１０３】
最後に、マルチスレッド画像ベースの追跡システムにおけるトラッカスレッドを画像ベースの追跡システムの電源周波数（例えば、画像ベースの追跡システムが動作しうる地域の「幹線周波数」）で動作させることによって、本書に記載のシステム及び方法は、何らかの外部要因が画像ベースの追跡システム及び／又はＨＭＤのオペレーションを妨害しうる程度を低減し、かつ／又はゼロにしうる。例えば、画像ベースの追跡システムが米国内で動作する場合にはトラッカスレッドを米国の幹線周波数（例えば３０Ｈｚ）で作動させることによって、本書に記載のシステム及び方法は、蛍光照明源のちらつきが画像ベースの追跡システムのオペレーションを妨害しうる妨害量を低減しうる。
【０１０４】
上記で詳述したように、本書で説明及び／又は図示している演算デバイス及びシステムは、コンピュータ可読命令（本書に記載のモジュールに包含されるものなど）を実行可能な任意の種類又は形態の演算デバイス又はシステムを広範に表わす。これらの演算デバイス（複数可）は各々、その最も基本的な構成において、少なくとも１つのメモリデバイスと、少なくとも１つの物理プロセッサとを含みうる。
【０１０５】
本書で説明及び／又は図示している複数のモジュールは、別個の要素として示されているが、単一のモジュール又はアプリケーションの部分を表わしていることもある。加えて、特定の実施形態では、これらのモジュールのうちの一又は複数は、演算デバイスによって実行されるとその演算デバイスに一又は複数のタスクを実施させうる、一又は複数のソフトウェアアプリケーション又はプログラムを表しうる。例えば、本書で説明及び／又は図示しているモジュールのうちの一又は複数は、本書で説明及び／又は図示している演算デバイス又はシステムのうちの一又は複数に記憶され、かつそれらで実行されるよう構成されたモジュールを表わしうる。これらのモジュールのうちの一又は複数は、一又は複数のタスクを実施するよう構成された一又は複数の特定用途向けコンピュータの全部又は一部を表わすこともある。
【０１０６】
加えて、本書に記載のモジュールのうちの一又は複数は、データ、物理デバイス、及び／又は物理デバイスの表現を、ある形態から別の形態に変換しうる。例えば、本書で列挙されているモジュールのうちの一又は複数は、変換されるべき撮像データを受信し、この撮像データを変換し、環境のマップを更新するために変換結果を出力し、環境内の物体の位置及び／又は配向を特定するために変換結果を使用し、かつ、ある期間にわたって環境内の物体の位置及び／又は配向を追跡するために変換結果を記憶しうる。追加的に又は代替的に、本書で列挙されているモジュールのうちの一又は複数は、演算デバイスで実行すること、演算デバイスにデータを記憶すること、及び／さもなければ演算デバイスと相互作用することによって、プロセッサ、揮発性メモリ、不揮発性メモリ、及び／又は物理演算デバイスの他の任意の部分を、ある形態から別の形態へと変換しうる。
【０１０７】
一部の実施形態では、「コンピュータ可読媒体（ｃｏｍｐｕｔｅｒ−ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）」という語は一般に、コンピュータ可読命令を記憶又は保持することが可能な任意の形態のデバイス、キャリア、又は媒体のことを指す。コンピュータ可読媒体の例は、伝送型媒体（搬送波など）、及び非一時型媒体（例えば、ハードディスクドライブ、テープドライブ、及びフロッピーディスクといった磁気記憶媒体、コンパクトディスク（ＣＤ）、デジタルビデオディスク（ＤＶＤ）、及びブルーレイディスクといった光記憶媒体、ソリッドステートドライブ及びフラッシュ媒体といった電子記憶媒体、及びその他の分配システム）を含むが、これらに限定されるわけではない。
【０１０８】
本開示の実施形態は、人工現実システムを含みうるか、又は人工現実システムと共に実装されうる。人工現実は、ユーザに提示される前に何らかの方式で調整された現実の一形態であり、例えば、仮想現実、拡張現実、混合現実、ハイブリッド現実、又はこれらの何らかの組み合わせ及び／若しくは派生物を含みうる。人工現実コンテンツは、完全に生成されたコンテンツ、又は捕捉された（例えば現実世界の）コンテンツと組み合わされた生成コンテンツを含みうる。人工現実コンテンツは、ビデオ、音声、触覚フィードバック、又は、これらの何らかの組み合わせを含んでよく、これらのうちのいずれも、単一のチャネル若しくは複数のチャネル（視聴者に三次元効果をもたらすステレオビデオなど）において提示されうる。更に、一部の実施形態では、人工現実は、例えば、人工現実のコンテンツを作成するために使用され、かつ／又は人工現実において別様に使用される（例えば、人工現実におけるアクティビティを実施する）アプリケーション、製品、アクセサリ、サービス、又はそれらの何らかの組み合わせに関連付けられることもある。人工現実コンテンツを提供する人工現実システムは、上述したように、ホストコンピュータシステムに接続されうるＨＭＤ、独立型ＨＭＤ、モバイルデバイス、若しくは演算システム、及び／又は、一又は複数の視聴者に人工現実コンテンツを提供することが可能な他の任意のハードウェアプラットフォームを含む、様々なプラットフォームで実装されうる。
【０１０９】
本書で説明及び／又は図示しているステップのプロセスパラメータ及びシーケンスは、単なる例として付与されており、所望に応じて変更されうる。例えば、本書で図示及び／又は説明しているステップは、特定の順序で図示又は説明されていることがあるが、必ずしも図示又は説明されている順序で実施される必要はない。本書で説明及び／又は図示している様々な例示的な方法は、本書で説明又は図示しているステップのうちの一又は複数を省略することも、開示されているステップに加えて追加のステップを含むことも可能である。
【０１１０】
前述の説明は、本書で開示されている例示的な実施形態の様々な態様を、他の当業者が最もよく利用することを可能にするために提供されてきた。この例示的な説明は、網羅的であること、又は開示されているいずれの形態そのものにも限定されることを、意図するものではない。本開示の本質及び範囲から逸脱することなく、多数の改変及び変形が可能である。本書で開示されている実施形態は、あらゆる点で例示的であり、限定的なものではないと見なされるべきである。本開示の範囲を特定する際には、付随する特許請求の範囲及びそれらの均等物を参照すべきである。
【０１１１】
特に記載していない限り、明細書及び特許請求の範囲において使用される「〜に接続され（ｃｏｎｎｅｃｔｅｄ  ｔｏ）」及び「〜に連結され（ｃｏｕｐｌｅｄ  ｔｏ）」という語（及びそれらの派生語）は、直接連結と間接（すなわち、他の要素又は構成要素を介した）連結の両方を許容すると解釈すべきである。加えて、明細書及び特許請求の範囲において使用される「１つの（ａ又はａｎ）」という語は、「少なくとも１つ（ａｔ  ｌｅａｓｔ  ｏｎｅ  ｏｆ）」を意味すると解釈すべきである。最後に、本明細書及び特許請求の範囲において使用される「含む（ｉｎｃｌｕｄｉｎｇ）」及び「有する（ｈａｖｉｎｇ）」という語（及びそれらの派生語）は、使用しやすいように、「備える（ｃｏｍｐｒｉｓｉｎｇ）」という語と交換可能であり、この語と同じ意味を有している。
【図１】
2021530016.tif 000004
【図２】
2021530016.tif 000005
【図３】
2021530016.tif 000006
【図４】
2021530016.tif 000007
【図５】
2021530016.tif 000008
【図６Ａ−６Ｂ】
2021530016.tif 000009
【図７】
2021530016.tif 000010
【図８】
2021530016.tif 000011
【国際調査報告】
2021530016.tif 000012
2021530016.tif 000013
2021530016.tif 000014