(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-03-09
(45)【発行日】2022-03-17
(54)【発明の名称】拡張現実効果の動的グレースフルデグラデーション
(51)【国際特許分類】
G06T 7/20 20170101AFI20220310BHJP
G06T 19/00 20110101ALI20220310BHJP
【FI】
G06T7/20 300Z
G06T19/00 600
(21)【出願番号】P 2020522321
(86)(22)【出願日】2017-11-06
(86)【国際出願番号】 US2017060118
(87)【国際公開番号】W WO2019089051
(87)【国際公開日】2019-05-09
【審査請求日】2020-08-07
(32)【優先日】2017-11-03
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】508178054
【氏名又は名称】メタ プラットフォームズ, インク.
(74)【代理人】
【識別番号】110002974
【氏名又は名称】特許業務法人World IP
(72)【発明者】
【氏名】コレット ロメア, アルバロ
(72)【発明者】
【氏名】マレル, タリー
(72)【発明者】
【氏名】コルヒス, エルメス ジェルミ ピケ
(72)【発明者】
【氏名】ラムナス, クリシュナン
(72)【発明者】
【氏名】メイヤー, トーマス ワード
(72)【発明者】
【氏名】リー, ジャオ
(72)【発明者】
【氏名】キッシュ, スティーブン
【審査官】粕谷 満成
(56)【参考文献】
【文献】特表2013-541096(JP,A)
【文献】米国特許出願公開第2009/0169053(US,A1)
【文献】特開2012-209943(JP,A)
【文献】特開2010-225609(JP,A)
【文献】特開2003-216434(JP,A)
【文献】特開2002-157596(JP,A)
【文献】特開2004-283959(JP,A)
【文献】Cheng Lin et al.,A visual-inertial fusion based tracking system for mobile augmented reality,2015 IEEE International Conference on Signal Processing, Communications and Computing (ICSPCC),IEEE,2021年09月19日,https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7338954
(58)【調査した分野】(Int.Cl.,DB名)
G06T 7/20
G06T 19/00
(57)【特許請求の範囲】
【請求項1】
コンピューティングデバイスによって、
シーンに関連する1つまたは複数の第1のビデオフレームを取得することと、
前記1つまたは複数の第1のビデオフレームに基づいて、第1の追跡アルゴリズムを使用して第1の追跡データを生成することと、
前記第1の追跡データに関連する第1の信頼性スコアを生成することと、
前記第1の追跡データに基づいて拡張現実効果を表示することと、
前記第1の信頼性スコアが第1のしきい値を上回ると決定することと、
前記シーンに関連する1つまたは複数の第2のビデオフレームを取得することであって、前記1つまたは複数の第2のビデオフレームが前記1つまたは複数の第1のビデオフレームの後にある、1つまたは複数の第2のビデオフレームを取得することと、
前記1つまたは複数の第2のビデオフレームに基づいて、前記第1の追跡アルゴリズムを使用して第2の追跡データを生成することと、
前記第2の追跡データに関連する第2の信頼性スコアを生成することと、
前記第2の信頼性スコアが第2のしきい値を下回ると決定することと、
前記シーンに関連する1つまたは複数の第3のビデオフレームを取得することであって、前記1つまたは複数の第3のビデオフレームが前記1つまたは複数の第2のビデオフレームの後にある、1つまたは複数の第3のビデオフレームを取得することと、
前記1つまたは複数の第3のビデオフレームに基づいて、前記第1の追跡アルゴリズムとは異なる第2の追跡アルゴリズムを使用して第3の追跡データを生成することであって、前記第2の追跡アルゴリズムは、前記第2の信頼性スコアが前記第2のしきい値を下回る
と決定したことに応答して選択される、第3の追跡データを生成することと、
前記第3の追跡データに基づいて前記拡張現実効果を表示することと
を含む、方法
であって、
前記第1の追跡データと、前記第2の追跡データと、前記第3の追跡データとが、前記シーン中の第1のオブジェクトに関連し、
前記第1の追跡アルゴリズムは、前記第2の追跡アルゴリズムよりも計算コストが高く、
前記第1の追跡アルゴリズムが、SLAMアルゴリズムまたは顔認識アルゴリズムであり、前記第2の追跡アルゴリズムが、領域追跡アルゴリズムである、方法。
【請求項2】
前記第3の追跡データに関連する第3の信頼性スコアを生成することと、
前記第3の信頼性スコアが第3のしきい値を下回ると決定することと、
前記シーンに関連する1つまたは複数の第4のビデオフレームを取得することであって、前記1つまたは複数の第4のビデオフレームが前記1つまたは複数の第3のビデオフレームの後にある、1つまたは複数の第4のビデオフレームを取得することと、
前記コンピューティングデバイスのジャイロスコープからのジャイロスコープデータに基づいて前記拡張現実効果を表示することと
をさらに含む、請求項1に記載の方法。
【請求項3】
前記第1の追跡アルゴリズム、前記第2の追跡アルゴリズム、または第3の追跡アルゴリズムを使用して、前記シーン中の第2のオブジェクトに関連する第4の追跡データを生成すること
、ここで前記第4の追跡データが、前記1つまたは複数の第1のビデオフレームと、前記1つまたは複数の第2のビデオフレームと、前記1つまたは複数の第3のビデオフレームとに基づく
ものであり、および
前記第4の追跡データに基づいて第2の拡張現実効果を表示するこ
と
をさらに含む、請求項1に記載の方法。
【請求項4】
前記第1の追跡データに基づいて表示された前記拡張現実効果のフレームの数に基づいて性能スコアを生成することと、
前記性能スコアが基準を満たすと決定することと
をさらに含む、請求項1に記載の方法。
【請求項5】
前記第2の追跡データを、前記第2の追跡アルゴリズムに適合するフォーマットに変換すること
をさらに含み、
前記第3の追跡データを前記生成することが
、変換された
前記第2の追跡データにさらに基づく、請求項1に記載の方法。
【請求項6】
前記コンピューティングデバイスの1つまたは複数の能力が1つまたは複数の所定の能力標準を下回ると決定することと、
追跡グラニュラリティを低減するように前記第1の追跡アルゴリズムまたは前記第2の追跡アルゴリズムを設定することと
をさらに含む、請求項1に記載の方法。
【請求項7】
前記コンピューティングデバイスの1つまたは複数の能力が1つまたは複数の所定の能力標準を満たすと決定することと、
前記1つまたは複数の能力が前記1つまたは複数の所定の基準を満たす
と決定したことに基づいて、前記第1の追跡アルゴリズムに関連するソフトウェアをダウンロードすることと
をさらに含む、請求項1に記載の方法。
【請求項8】
前記第1のしきい値と前記第2のしきい値とが同じである、請求項1に記載の方法。
【請求項9】
1つまたは複数のプロセッサと、前記プロセッサのうちの1つまたは複数に結合された1つまたは複数のコンピュータ可読非一時的記憶媒体とを備えるシステムであって、前記1つまたは複数のコンピュータ可読非一時的記憶媒体は、前記プロセッサのうちの1つまたは複数によって実行されたとき、前記システムに、
シーンに関連する1つまたは複数の第1のビデオフレームを取得することと、
前記1つまたは複数の第1のビデオフレームに基づいて、第1の追跡アルゴリズムを使用して第1の追跡データを生成することと、
前記第1の追跡データに関連する第1の信頼性スコアを生成することと、
前記第1の追跡データに基づいて拡張現実効果を表示することと、
前記第1の信頼性スコアが第1のしきい値を上回ると決定することと、
前記シーンに関連する1つまたは複数の第2のビデオフレームを取得することであって、前記1つまたは複数の第2のビデオフレームが前記1つまたは複数の第1のビデオフレームの後にある、1つまたは複数の第2のビデオフレームを取得することと、
前記1つまたは複数の第2のビデオフレームに基づいて、前記第1の追跡アルゴリズムを使用して第2の追跡データを生成することと、
前記第2の追跡データに関連する第2の信頼性スコアを生成することと、
前記第2の信頼性スコアが第2のしきい値を下回ると決定することと、
前記シーンに関連する1つまたは複数の第3のビデオフレームを取得することであって、前記1つまたは複数の第3のビデオフレームが前記1つまたは複数の第2のビデオフレームの後にある、1つまたは複数の第3のビデオフレームを取得することと、
前記1つまたは複数の第3のビデオフレームに基づいて、前記第1の追跡アルゴリズムとは異なる第2の追跡アルゴリズムを使用して第3の追跡データを生成することであって、前記第2の追跡アルゴリズムは、前記第2の信頼性スコアが前記第2のしきい値を下回る
と決定したことに応答して選択される、第3の追跡データを生成することと、
前記第3の追跡データに基づいて前記拡張現実効果を表示することと
を含む動作を実施させるように動作可能な命令を備え
、
前記第1の追跡データと、前記第2の追跡データと、前記第3の追跡データとが、前記シーン中の第1のオブジェクトに関連し、
前記第1の追跡アルゴリズムは、前記第2の追跡アルゴリズムよりも計算コストが高く、
前記第1の追跡アルゴリズムが、SLAMアルゴリズムまたは顔認識アルゴリズムであり、前記第2の追跡アルゴリズムが、領域追跡アルゴリズムである、システム。
【請求項10】
前記プロセッサは、前記命令を実行したとき、
前記第3の追跡データに関連する第3の信頼性スコアを生成することと、
前記第3の信頼性スコアが第3のしきい値を下回ると決定することと、
前記シーンに関連する1つまたは複数の第4のビデオフレームを取得することであって、前記1つまたは複数の第4のビデオフレームが前記1つまたは複数の第3のビデオフレームの後にある、1つまたは複数の第4のビデオフレームを取得することと、
コンピューティングデバイスのジャイロスコープからのジャイロスコープデータに基づいて前記拡張現実効果を表示することと
を含む動作を実施するようにさらに動作可能である、請求項
9に記載のシステム。
【請求項11】
前記プロセッサは、前記命令を実行したとき、
前記第1の追跡アルゴリズム、前記第2の追跡アルゴリズム、または第3の追跡アルゴリズムを使用して、前記シーン中の第2のオブジェクトに関連する第4の追跡データを生成することであって、
ここで前記第4の追跡データが、前記1つまたは複数の第1のビデオフレームと、前記1つまたは複数の第2のビデオフレームと、前記1つまたは複数の第3のビデオフレームとに基づく
ものであり、および
前記第4の追跡データに基づいて第2の拡張現実効果を表示するこ
と
を含む動作を実施するようにさらに動作可能である、請求項
9に記載のシステム。
【請求項12】
前記プロセッサが、前記命令を実行したとき、
前記第1の追跡データに基づいて表示された前記拡張現実効果のフレームの数に基づいて性能スコアを生成することと、
前記性能スコアが基準を満たすと決定することと
を含む動作を実施するようにさらに動作可能である、請求項
9に記載のシステム。
【請求項13】
前記プロセッサが、前記命令を実行したとき、
前記第2の追跡データを、前記第2の追跡アルゴリズムに適合するフォーマットに変換すること
を含む動作を実施するようにさらに動作可能であり、
前記第3の追跡データを前記生成することが
、変換された
前記第2の追跡データにさらに基づく、請求項
9に記載のシステム。
【請求項14】
ソフトウェアを具現する1つまたは複数のコンピュータ可読非一時的記憶媒体であって、前記ソフトウェアは、実行されたとき、1つまたは複数のプロセッサに、
シーンに関連する1つまたは複数の第1のビデオフレームを取得することと、
前記1つまたは複数の第1のビデオフレームに基づいて、第1の追跡アルゴリズムを使用して第1の追跡データを生成することと、
前記第1の追跡データに関連する第1の信頼性スコアを生成することと、
前記第1の追跡データに基づいて拡張現実効果を表示することと、
前記第1の信頼性スコアが第1のしきい値を上回ると決定することと、
前記シーンに関連する1つまたは複数の第2のビデオフレームを取得することであって、前記1つまたは複数の第2のビデオフレームが前記1つまたは複数の第1のビデオフレームの後にある、1つまたは複数の第2のビデオフレームを取得することと、
前記1つまたは複数の第2のビデオフレームに基づいて、前記第1の追跡アルゴリズムを使用して第2の追跡データを生成することと、
前記第2の追跡データに関連する第2の信頼性スコアを生成することと、
前記第2の信頼性スコアが第2のしきい値を下回ると決定することと、
前記シーンに関連する1つまたは複数の第3のビデオフレームを取得することであって、前記1つまたは複数の第3のビデオフレームが前記1つまたは複数の第2のビデオフレームの後にある、1つまたは複数の第3のビデオフレームを取得することと、
前記1つまたは複数の第3のビデオフレームに基づいて、前記第1の追跡アルゴリズムとは異なる第2の追跡アルゴリズムを使用して第3の追跡データを生成することであって、前記第2の追跡アルゴリズムは、前記第2の信頼性スコアが前記第2のしきい値を下回る
と決定したことに応答して選択される、第3の追跡データを生成することと、
前記第3の追跡データに基づいて前記拡張現実効果を表示することと
を含む動作を実施させるように動作可能であ
り、
前記第1の追跡データと、前記第2の追跡データと、前記第3の追跡データとが、前記シーン中の第1のオブジェクトに関連し、
前記第1の追跡アルゴリズムは、前記第2の追跡アルゴリズムよりも計算コストが高く、
前記第1の追跡アルゴリズムが、SLAMアルゴリズムまたは顔認識アルゴリズムであり、前記第2の追跡アルゴリズムが、領域追跡アルゴリズムである、1つまたは複数のコンピュータ可読非一時的記憶媒体。
【請求項15】
前記ソフトウェアは、実行されたとき、前記1つまたは複数のプロセッサに、
前記第3の追跡データに関連する第3の信頼性スコアを生成することと、
前記第3の信頼性スコアが第3のしきい値を下回ると決定することと、
前記シーンに関連する1つまたは複数の第4のビデオフレームを取得することであって、前記1つまたは複数の第4のビデオフレームが前記1つまたは複数の第3のビデオフレームの後にある、1つまたは複数の第4のビデオフレームを取得することと、
コンピューティングデバイスのジャイロスコープからのジャイロスコープデータに基づいて前記拡張現実効果を表示することと
を含む動作を実施させるようにさらに動作可能である、請求項
14に記載の媒体。
【請求項16】
前記ソフトウェアは、実行されたとき、前記1つまたは複数のプロセッサに、
前記第1の追跡アルゴリズム、前記第2の追跡アルゴリズム、または第3の追跡アルゴリズムを使用して、前記シーン中の第2のオブジェクトに関連する第4の追跡データを生成すること
、ここで前記第4の追跡データが、前記1つまたは複数の第1のビデオフレームと、前記1つまたは複数の第2のビデオフレームと、前記1つまたは複数の第3のビデオフレームとに基づく
ものであり、および
前記第4の追跡データに基づいて第2の拡張現実効果を表示するこ
と
を含む動作を実施させるようにさらに動作可能である、請求項
14に記載の媒体。
【請求項17】
前記ソフトウェアは、実行されたとき、前記1つまたは複数のプロセッサに、
前記第1の追跡データに基づいて表示された前記拡張現実効果のフレームの数に基づいて性能スコアを生成することと、
前記性能スコアが基準を満たすと決定することと
を含む動作を実施させるようにさらに動作可能である、請求項
14に記載の媒体。
【請求項18】
前記ソフトウェアは、実行されたとき、前記1つまたは複数のプロセッサに、
前記第2の追跡データを、前記第2の追跡アルゴリズムに適合するフォーマットに変換すること
を含む動作を実施させるようにさらに動作可能であり、
前記第3の追跡データを前記生成することが
、変換された
前記第2の追跡データにさらに基づく、請求項
14に記載の媒体。
【請求項19】
コンピューティングデバイスによって、
シーンに関連する1つまたは複数の第1のビデオフレームを取得することと、
前記1つまたは複数の第1のビデオフレームに基づいて、第1の追跡アルゴリズムを使用して第1の追跡データを生成することと、
前記第1の追跡データに関連する第1の信頼性スコアを生成することと、
前記第1の追跡データに基づいて拡張現実効果を表示することと、
前記第1の信頼性スコアが第1のしきい値を上回ると決定することと、
前記シーンに関連する1つまたは複数の第2のビデオフレームを取得することであって、前記1つまたは複数の第2のビデオフレームが前記1つまたは複数の第1のビデオフレームの後にある、1つまたは複数の第2のビデオフレームを取得することと、
前記1つまたは複数の第2のビデオフレームに基づいて、前記第1の追跡アルゴリズムを使用して第2の追跡データを生成することと、
前記第2の追跡データに関連する第2の信頼性スコアを生成することと、
前記第2の信頼性スコアが第2のしきい値を下回ると決定することと、
前記シーンに関連する1つまたは複数の第3のビデオフレームを取得することであって、前記1つまたは複数の第3のビデオフレームが前記1つまたは複数の第2のビデオフレームの後にある、1つまたは複数の第3のビデオフレームを取得することと、
前記1つまたは複数の第3のビデオフレームに基づいて、前記第1の追跡アルゴリズムとは異なる第2の追跡アルゴリズムを使用して第3の追跡データを生成することであって、前記第2の追跡アルゴリズムは、前記第2の信頼性スコアが前記第2のしきい値を下回る
と決定したことに応答して選択される、第3の追跡データを生成することと、
前記第3の追跡データに基づいて前記拡張現実効果を表示することと
を含む、方法
であって、
前記第1の追跡データと、前記第2の追跡データと、前記第3の追跡データとが、前記シーン中の第1のオブジェクトに関連し、
前記第1の追跡アルゴリズムは、前記第2の追跡アルゴリズムよりも計算コストが高く、
前記第1の追跡アルゴリズムが、SLAMアルゴリズムまたは顔認識アルゴリズムであり、前記第2の追跡アルゴリズムが、領域追跡アルゴリズムである、方法。
【請求項20】
前記第3の追跡データに関連する第3の信頼性スコアを生成することと、
前記第3の信頼性スコアが第3のしきい値を下回ると決定することと、
前記シーンに関連する1つまたは複数の第4のビデオフレームを取得することであって、前記1つまたは複数の第4のビデオフレームが前記1つまたは複数の第3のビデオフレームの後にある、1つまたは複数の第4のビデオフレームを取得することと、
前記コンピューティングデバイスのジャイロスコープからのジャイロスコープデータに基づいて前記拡張現実効果を表示することと
をさらに含む、請求項
19に記載の方法。
【請求項21】
前記第1の追跡アルゴリズム、前記第2の追跡アルゴリズム、または第3の追跡アルゴリズムを使用して、前記シーン中の第2のオブジェクトに関連する第4の追跡データを生成すること
、ここで前記第4の追跡データが、前記1つまたは複数の第1のビデオフレームと、前記1つまたは複数の第2のビデオフレームと、前記1つまたは複数の第3のビデオフレームとに基づく
ものであり、および
前記第4の追跡データに基づいて第2の拡張現実効果を表示するこ
と
をさらに含む、請求項
19または
20に記載の方法。
【請求項22】
(i)前記第1の追跡データに基づいて表示された前記拡張現実効果のフレームの数に基づいて性能スコアを生成し、
前記性能スコアが基準を満たすと決定すること、あるいは随意に、前記性能スコアが前記基準を満たさないおよび/または前記第2の信頼性スコアが前記第2のしきい値を下回ると決定すると、前記第2の追跡アルゴリズムを選択すること、ならびに
(ii)前記第2の追跡データを、前記第2の追跡アルゴリズムに適合するフォーマットに変換すること
のうちの少なくとも1つをさらに含み、
前記第3の追跡データを前記生成することが
、変換された
前記第2の追跡データにさらに基づく、請求項
19から
21のいずれか一項に記載の方法。
【請求項23】
(i)前記コンピューティングデバイスの1つまたは複数の能力が1つまたは複数の所定の能力標準を下回ると決定し、
追跡グラニュラリティを低減するように前記第1の追跡アルゴリズムまたは前記第2の追跡アルゴリズムを設定すること、および
(ii)前記コンピューティングデバイスの1つまたは複数の能力が1つまたは複数の所定の能力標準を満たすと決定し、
前記1つまたは複数の能力が前記1つまたは複数の所定の基準を満たす
と決定したことに基づいて、前記第1の追跡アルゴリズムに関連するソフトウェアをダウンロードすること
のうちの少なくとも1つをさらに含む、請求項
19から
22のいずれか一項に記載の方法。
【請求項24】
前記第1のしきい値と前記第2のしきい値とが同じである、請求項
19から
23のいずれか一項に記載の方法。
【請求項25】
1つまたは複数のプロセッサと、前記プロセッサのうちの1つまたは複数に結合された1つまたは複数のコンピュータ可読非一時的記憶媒体とを備えるシステムであって、前記1つまたは複数のコンピュータ可読非一時的記憶媒体は、前記プロセッサのうちの1つまたは複数によって実行されたとき、前記システムに、請求項
19から
24のいずれか一項に記載の方法、および/または
シーンに関連する1つまたは複数の第1のビデオフレームを取得することと、
前記1つまたは複数の第1のビデオフレームに基づいて、第1の追跡アルゴリズムを使用して第1の追跡データを生成することと、
前記第1の追跡データに関連する第1の信頼性スコアを生成することと、
前記第1の追跡データに基づいて拡張現実効果を表示することと、
前記第1の信頼性スコアが第1のしきい値を上回ると決定することと、
前記シーンに関連する1つまたは複数の第2のビデオフレームを取得することであって、前記1つまたは複数の第2のビデオフレームが前記1つまたは複数の第1のビデオフレームの後にある、1つまたは複数の第2のビデオフレームを取得することと、
前記1つまたは複数の第2のビデオフレームに基づいて、前記第1の追跡アルゴリズムを使用して第2の追跡データを生成することと、
前記第2の追跡データに関連する第2の信頼性スコアを生成することと、
前記第2の信頼性スコアが第2のしきい値を下回ると決定することと、
前記シーンに関連する1つまたは複数の第3のビデオフレームを取得することであって、前記1つまたは複数の第3のビデオフレームが前記1つまたは複数の第2のビデオフレームの後にある、1つまたは複数の第3のビデオフレームを取得することと、
前記1つまたは複数の第3のビデオフレームに基づいて、前記第1の追跡アルゴリズムとは異なる第2の追跡アルゴリズムを使用して第3の追跡データを生成することであって、前記第2の追跡アルゴリズムは、前記第2の信頼性スコアが前記第2のしきい値を下回る
と決定したことに応答して選択される、第3の追跡データを生成することと、
前記第3の追跡データに基づいて前記拡張現実効果を表示することと
を含む動作を実施させるように動作可能な命令を備え
、
前記第1の追跡データと、前記第2の追跡データと、前記第3の追跡データとが、前記シーン中の第1のオブジェクトに関連し、
前記第1の追跡アルゴリズムは、前記第2の追跡アルゴリズムよりも計算コストが高く、
前記第1の追跡アルゴリズムが、SLAMアルゴリズムまたは顔認識アルゴリズムであり、前記第2の追跡アルゴリズムが、領域追跡アルゴリズムである、システム。
【請求項26】
前記プロセッサは、前記命令を実行したとき、
前記第3の追跡データに関連する第3の信頼性スコアを生成することと、
前記第3の信頼性スコアが第3のしきい値を下回ると決定することと、
前記シーンに関連する1つまたは複数の第4のビデオフレームを取得することであって、前記1つまたは複数の第4のビデオフレームが前記1つまたは複数の第3のビデオフレームの後にある、1つまたは複数の第4のビデオフレームを取得することと、
コンピューティングデバイスのジャイロスコープからのジャイロスコープデータに基づいて前記拡張現実効果を表示することと
を含む動作を実施するようにさらに動作可能である、請求項
25に記載のシステム。
【請求項27】
前記プロセッサは、前記命令を実行したとき、
前記第1の追跡アルゴリズム、前記第2の追跡アルゴリズム、または第3の追跡アルゴリズムを使用して、前記シーン中の第2のオブジェクトに関連する第4の追跡データを生成すること
、ここで前記第4の追跡データが、前記1つまたは複数の第1のビデオフレームと、前記1つまたは複数の第2のビデオフレームと、前記1つまたは複数の第3のビデオフレームとに基づく
ものであり、および
前記第4の追跡データに基づいて第2の拡張現実効果を表示するこ
と
を含む動作を実施するようにさらに動作可能である、請求項
25または
26に記載のシステム。
【請求項28】
前記プロセッサは、前記命令を実行したとき、
(i)前記第1の追跡データに基づいて表示された前記拡張現実効果のフレームの数に基づいて性能スコアを生成し、
前記性能スコアが基準を満たすと決定すること、および
(ii)前記第2の追跡データを、前記第2の追跡アルゴリズムに適合するフォーマットに変換すること
のうちの少なくとも1つを含む動作を実施するようにさらに動作可能であり、
前記第3の追跡データを前記生成することが
、変換された
前記第2の追跡データにさらに基づく、請求項
25から
27のいずれか一項に記載のシステム。
【請求項29】
命令を備えるコンピュータプログラムであって、前記命令は、前記プログラムがコンピュータによって実行されたとき、前記コンピュータに、請求項
19から
24のいずれか一項に記載の方法、および/または
シーンに関連する1つまたは複数の第1のビデオフレームを取得することと、
前記1つまたは複数の第1のビデオフレームに基づいて、第1の追跡アルゴリズムを使用して第1の追跡データを生成することと、
前記第1の追跡データに関連する第1の信頼性スコアを生成することと、
前記第1の追跡データに基づいて拡張現実効果を表示することと、
前記第1の信頼性スコアが第1のしきい値を上回ると決定することと、
前記シーンに関連する1つまたは複数の第2のビデオフレームを取得することであって、前記1つまたは複数の第2のビデオフレームが前記1つまたは複数の第1のビデオフレームの後にある、1つまたは複数の第2のビデオフレームを取得することと、
前記1つまたは複数の第2のビデオフレームに基づいて、前記第1の追跡アルゴリズムを使用して第2の追跡データを生成することと、
前記第2の追跡データに関連する第2の信頼性スコアを生成することと、
前記第2の信頼性スコアが第2のしきい値を下回ると決定することと、
前記シーンに関連する1つまたは複数の第3のビデオフレームを取得することであって、前記1つまたは複数の第3のビデオフレームが前記1つまたは複数の第2のビデオフレームの後にある、1つまたは複数の第3のビデオフレームを取得することと、
前記1つまたは複数の第3のビデオフレームに基づいて、前記第1の追跡アルゴリズムとは異なる第2の追跡アルゴリズムを使用して第3の追跡データを生成することであって、前記第2の追跡アルゴリズムは、前記第2の信頼性スコアが前記第2のしきい値を下回る
と決定したことに応答して選択される、第3の追跡データを生成することと、
前記第3の追跡データに基づいて前記拡張現実効果を表示することと
を含む動作を実施させ
、
前記第1の追跡データと、前記第2の追跡データと、前記第3の追跡データとが、前記シーン中の第1のオブジェクトに関連し、
前記第1の追跡アルゴリズムは、前記第2の追跡アルゴリズムよりも計算コストが高く、
前記第1の追跡アルゴリズムが、SLAMアルゴリズムまたは顔認識アルゴリズムであり、前記第2の追跡アルゴリズムが、領域追跡アルゴリズムである、コンピュータプログラム。
【請求項30】
前記コンピュータプログラムは、実行されたとき、前記コンピュータに、
前記第3の追跡データに関連する第3の信頼性スコアを生成することと、
前記第3の信頼性スコアが第3のしきい値を下回ると決定することと、
前記シーンに関連する1つまたは複数の第4のビデオフレームを取得することであって、前記1つまたは複数の第4のビデオフレームが前記1つまたは複数の第3のビデオフレームの後にある、1つまたは複数の第4のビデオフレームを取得することと、
コンピューティングデバイスのジャイロスコープからのジャイロスコープデータに基づいて前記拡張現実効果を表示することと
を含む動作を実施させるようにさらに動作可能である、請求項
29に記載のコンピュータプログラム。
【請求項31】
前記コンピュータプログラムは、実行されたとき、前記コンピュータに、
前記第1の追跡アルゴリズム、前記第2の追跡アルゴリズム、または第3の追跡アルゴリズムを使用して、前記シーン中の第2のオブジェクトに関連する第4の追跡データを生成すること
、ここで前記第4の追跡データが、前記1つまたは複数の第1のビデオフレームと、前記1つまたは複数の第2のビデオフレームと、前記1つまたは複数の第3のビデオフレームとに基づく
ものであり、および
前記第4の追跡データに基づいて第2の拡張現実効果を表示するこ
と
を含む動作を実施させるようにさらに動作可能である、請求項
29または
30に記載のコンピュータプログラム。
【請求項32】
前記コンピュータプログラムは、実行されたとき、前記コンピュータに、
(i)前記第1の追跡データに基づいて表示された前記拡張現実効果のフレームの数に基づいて性能スコアを生成し、
前記性能スコアが基準を満たすと決定すること、および
(ii)前記第2の追跡データを、前記第2の追跡アルゴリズムに適合するフォーマットに変換すること
のうちの少なくとも1つを含む動作を実施させるようにさらに動作可能であり、
前記第3の追跡データを前記生成することが
、変換された
前記第2の追跡データにさらに基づく、請求項
29から
31のいずれか一項に記載のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、一般に、拡張現実効果に関し、特に、オブジェクトを追跡するためのシステムおよび方法に関する。
【背景技術】
【0002】
拡張現実(AR)効果は、現実世界のシーンのユーザの視界に重畳されるかまたは組み込まれるコンピュータ生成された視覚効果(たとえば、画像およびアニメーション)である。いくつかのAR効果は、現実世界においてオブジェクトを追跡するように設定され得る。たとえば、コンピュータ生成されたユニコーンが、ビデオにおいてキャプチャされる現実世界のテーブル上に配置され得る。テーブルが(たとえば、カメラが移動することまたはテーブルが運び去られることにより)キャプチャされたビデオにおいて移動するとき、生成されたユニコーンは、テーブルの上に現れ続けるように、テーブルについて行き得る。この効果を達成するために、ARアプリケーションは、追跡アルゴリズムを使用して、現実世界のシーンに現れるオブジェクトの位置および/または配向を追跡し、得られた追跡データを使用して、適切なAR効果を生成し得る。AR効果は、シーンが観測されている間、リアルタイムまたはほぼリアルタイムで現実世界のシーンを拡張し得るので、追跡データは、AR効果が望まれるように現れるように、リアルタイムまたはほぼリアルタイムで生成される必要があり得る。
【0003】
しかしながら、追跡アルゴリズムは、望まれる結果を動的に生成するために著しいハードウェアリソースを必要とし得る。ARアプリケーションは、異なるレベルのリソースおよび能力をもつデバイス上で稼働され得るので、画一的な(one-size-fits-all)手法は、品質の妥協を生じ得る。たとえば、最良であるが(計算要件に関して)最もコストがかかるアルゴリズムを実装するARアプリケーションは、最良ではないデバイス上で著しいラグまたはフレームドロップを伴うAR効果を生成し得る。一方、ARアプリケーションが、代わりに、最適ではない結果をもたらすあまりコストがかからないアルゴリズムを実装する場合、そうすることは、ARアプリケーションが最先端のデバイス上でその潜在能力を十分に発揮して稼働していないことを意味する。ARアプリケーションが稼働するハードウェアに加えて、追跡アルゴリズムが追跡するように求められ得る現実世界のオブジェクトの種類を予測することは、困難であり得る。いくつかの追跡アルゴリズムは、いくつかの特性をもつオブジェクトを追跡するのに他の追跡アルゴリズムよりも好適であり得るので、単一の追跡アルゴリズムを実装するARアプリケーションは、時々、十分に機能しないことがある。たとえば、ARアプリケーションが、極めて正確であるがあまりロバストでない追跡アルゴリズムを実装する場合、ARアプリケーションは、そのアルゴリズムに好適である特定の動作条件に限定され得る。一方、ARアプリケーションがよりロバストであるがあまり正確でない追跡アルゴリズムを実装する場合、ARアプリケーションは、他のより正確な追跡アルゴリズムが利用可能である状況において準最適に機能している。
【発明の概要】
【0004】
本明細書で説明される実施形態は、ARアプリケーションが、基礎をなすデバイスの能力および現在の動作中環境を仮定して最適なAR効果をもたらすために、異なるアルゴリズム間で動的に切り替えることを可能にするためのシステムおよび方法に関する。これらのアルゴリズム間で切り替えるための特定の実施形態は、(たとえば、正確さおよび/または計算コストに関する)漸進的ダウングレーディング(downgrading)手法をとる。これが意味することは、アルゴリズムが、最初に、最も高い計算リソースを必要とする高品質アルゴリズムを使用してオブジェクトを追跡することを試み、性能が満足のいくものになるまで、より少ない計算リソースを必要とする次の段階(tier)のアルゴリズムにダウングレードし(downgrade)得ることである。したがって、本明細書で説明される特定の実施形態は、AR効果が生成される様式がリアルタイムの性能および/またはデバイスリソースに基づいて動的に調整し得るので、ARアプリケーションのロバストネスを改善し得る。さらに、追跡アルゴリズムの正確さおよび性能は現実世界のシーンの特性(たとえば、オブジェクトの形状および移動、照明など)にも依存し得るので、最も適切な追跡アルゴリズムは、現実世界のシーンが変化するときに最適な結果をもたらすように、動的に選択され得る。
【0005】
本明細書で開示される実施形態は例にすぎず、本開示の範囲はそれらに限定されない。特定の実施形態は、上記で開示された実施形態の構成要素、要素、特徴、機能、動作、またはステップのすべてを含むか、いくつかを含むか、またはいずれをも含まないことがある。本発明による実施形態は、特に、方法、記憶媒体、システムおよびコンピュータプログラム製品を対象とする添付の特許請求の範囲で開示され、1つの請求項カテゴリー、たとえば、方法において述べられた任意の特徴は、別の請求項カテゴリー、たとえば、システムにおいても請求され得る。添付の特許請求の範囲における従属関係または参照は、形式上の理由で選定されるにすぎない。ただし、前の請求項への意図的な参照(特に複数の従属関係)から生じる主題も請求され得、その結果、請求項とその特徴との任意の組合せが、開示され、添付の特許請求の範囲で選定された従属関係にかかわらず請求され得る。請求され得る主題は、添付の特許請求の範囲に記載の特徴の組合せだけでなく、特許請求の範囲における特徴の任意の他の組合せをも含み、特許請求の範囲において述べられた各特徴は、特許請求の範囲における任意の他の特徴または他の特徴の組合せと組み合わせられ得る。さらに、本明細書で説明または示される実施形態および特徴のいずれかは、別個の請求項において、ならびに/あるいは、本明細書で説明もしくは示される任意の実施形態もしくは特徴との、または添付の特許請求の範囲の特徴のいずれかとの任意の組合せで請求され得る。
【0006】
本発明による実施形態は、特に、方法、システムおよびコンピュータプログラムを対象とする添付の特許請求の範囲で開示され、1つの請求項カテゴリー、たとえば、方法において述べられた任意の特徴は、別の請求項カテゴリー、たとえば、システムにおいても請求され得る。添付の特許請求の範囲における従属関係または参照は、形式上の理由で選定されるにすぎない。ただし、前の請求項への意図的な参照(特に複数の従属関係)から生じる主題も請求され得、その結果、請求項とその特徴との任意の組合せが、開示され、添付の特許請求の範囲で選定された従属関係にかかわらず請求され得る。請求され得る主題は、添付の特許請求の範囲に記載の特徴の組合せだけでなく、特許請求の範囲における特徴の任意の他の組合せをも含み、特許請求の範囲において述べられた各特徴は、特許請求の範囲における任意の他の特徴または他の特徴の組合せと組み合わせられ得る。さらに、本明細書で説明または示される実施形態および特徴のいずれかは、別個の請求項において、ならびに/あるいは、本明細書で説明もしくは示される任意の実施形態もしくは特徴との、または添付の特許請求の範囲の特徴のいずれかとの任意の組合せで請求され得る。
【0007】
本発明による一実施形態では、方法は、コンピューティングデバイスによって、
シーンに関連する1つまたは複数の第1のビデオフレームを取得することと、
1つまたは複数の第1のビデオフレームに基づいて、第1の追跡アルゴリズムを使用して第1の追跡データを生成することと、
第1の追跡データに関連する第1の信頼性スコアを生成することと、
第1の追跡データに基づいて拡張現実効果を表示することと、
第1の信頼性スコアが第1のしきい値を上回ると決定することと、
シーンに関連する1つまたは複数の第2のビデオフレームを取得することであって、1つまたは複数の第2のビデオフレームが1つまたは複数の第1のビデオフレームの後にある、1つまたは複数の第2のビデオフレームを取得することと、
1つまたは複数の第2のビデオフレームに基づいて、第1の追跡アルゴリズムを使用して第2の追跡データを生成することと、
第2の追跡データに関連する第2の信頼性スコアを生成することと、
第2の信頼性スコアが第2のしきい値を下回ると決定することと、
シーンに関連する1つまたは複数の第3のビデオフレームを取得することであって、1つまたは複数の第3のビデオフレームが1つまたは複数の第2のビデオフレームの後にある、1つまたは複数の第3のビデオフレームを取得することと、
1つまたは複数の第3のビデオフレームに基づいて、第1の追跡アルゴリズムとは異なる第2の追跡アルゴリズムを使用して第3の追跡データを生成することであって、第2の追跡アルゴリズムは、第2の信頼性スコアが第2のしきい値を下回ると決定したことに応答して選択される、第3の追跡データを生成することと、
第3の追跡データに基づいて拡張現実効果を表示することと
を含み得る。
【0008】
本方法は、
第3の追跡データに関連する第3の信頼性スコアを生成することと、
第3の信頼性スコアが第3のしきい値を下回ると決定することと、
シーンに関連する1つまたは複数の第4のビデオフレームを取得することであって、1つまたは複数の第4のビデオフレームが1つまたは複数の第3のビデオフレームの後にある、1つまたは複数の第4のビデオフレームを取得することと、
コンピューティングデバイスのジャイロスコープからのジャイロスコープデータに基づいて拡張現実効果を表示することと
をさらに含み得る。
【0009】
本方法の一実施形態では、第1の追跡データと、第2の追跡データと、第3の追跡データとが、シーン中の第1のオブジェクトに関連し、本方法は、
第1の追跡アルゴリズム、第2の追跡アルゴリズム、または第3の追跡アルゴリズムを使用して、シーン中の第2のオブジェクトに関連する第4の追跡データを生成することであって、第4の追跡データが、1つまたは複数の第1のビデオフレームと、1つまたは複数の第2のビデオフレームと、1つまたは複数の第3のビデオフレームとに基づく、第4の追跡データを生成することと、
第4の追跡データに基づいて第2の拡張現実効果を表示することと
をさらに含み得る。
【0010】
本方法は、
(i)第1の追跡データに基づいて表示された拡張現実効果のフレームの数に基づいて性能スコアを生成し、
性能スコアが基準を満たすと決定すること、あるいは随意に、性能スコアが基準を満たさないおよび/または第2の信頼性スコアが第2のしきい値を下回ると決定すると、第2の追跡アルゴリズムを選択すること、ならびに
(ii)第2の追跡データを、第2の追跡アルゴリズムに適合するフォーマットに変換すること
のうちの少なくとも1つをさらに含み得、
第3の追跡データを生成することが、変換された第2の追跡データにさらに基づく。
【0011】
本方法は、
(i)コンピューティングデバイスの1つまたは複数の能力が1つまたは複数の所定の能力標準を下回ると決定し、
追跡グラニュラリティを低減するように第1の追跡アルゴリズムまたは第2の追跡アルゴリズムを設定すること、および
(ii)コンピューティングデバイスの1つまたは複数の能力が1つまたは複数の所定の能力標準を満たすと決定し、
1つまたは複数の能力が1つまたは複数の所定の基準を満たすと決定したことに基づいて、第1の追跡アルゴリズムに関連するソフトウェアをダウンロードすること
のうちの少なくとも1つをさらに含み得る。
【0012】
第1の追跡アルゴリズムは第2の追跡アルゴリズムよりも計算コストが高くなり得る。
【0013】
本方法の一実施形態では、
第1の追跡アルゴリズムがSLAMアルゴリズムまたは顔認識アルゴリズムであり得、第2の追跡アルゴリズムが領域追跡アルゴリズムであり、および/あるいは
第1のしきい値と第2のしきい値とが同じであり得る。
【0014】
本発明の別の態様によれば、1つまたは複数のプロセッサと、プロセッサのうちの1つまたは複数に結合された1つまたは複数のコンピュータ可読非一時的記憶媒体とを備えるシステムであって、1つまたは複数のコンピュータ可読非一時的記憶媒体は、プロセッサのうちの1つまたは複数によって実行されたとき、システムに、本発明による方法、および/または
シーンに関連する1つまたは複数の第1のビデオフレームを取得することと、
1つまたは複数の第1のビデオフレームに基づいて、第1の追跡アルゴリズムを使用して第1の追跡データを生成することと、
第1の追跡データに関連する第1の信頼性スコアを生成することと、
第1の追跡データに基づいて拡張現実効果を表示することと、
第1の信頼性スコアが第1のしきい値を上回ると決定することと、
シーンに関連する1つまたは複数の第2のビデオフレームを取得することであって、1つまたは複数の第2のビデオフレームが1つまたは複数の第1のビデオフレームの後にある、1つまたは複数の第2のビデオフレームを取得することと、
1つまたは複数の第2のビデオフレームに基づいて、第1の追跡アルゴリズムを使用して第2の追跡データを生成することと、
第2の追跡データに関連する第2の信頼性スコアを生成することと、
第2の信頼性スコアが第2のしきい値を下回ると決定することと、
シーンに関連する1つまたは複数の第3のビデオフレームを取得することであって、1つまたは複数の第3のビデオフレームが1つまたは複数の第2のビデオフレームの後にある、1つまたは複数の第3のビデオフレームを取得することと、
1つまたは複数の第3のビデオフレームに基づいて、第1の追跡アルゴリズムとは異なる第2の追跡アルゴリズムを使用して第3の追跡データを生成することであって、第2の追跡アルゴリズムは、第2の信頼性スコアが第2のしきい値を下回ると決定したことに応答して選択される、第3の追跡データを生成することと、
第3の追跡データに基づいて拡張現実効果を表示することと
を含む動作を実施させるように動作可能な命令を備える、システムが提供される。
【0015】
本システムの一実施形態では、プロセッサは、命令を実行したとき、
第3の追跡データに関連する第3の信頼性スコアを生成することと、
第3の信頼性スコアが第3のしきい値を下回ると決定することと、
シーンに関連する1つまたは複数の第4のビデオフレームを取得することであって、1つまたは複数の第4のビデオフレームが1つまたは複数の第3のビデオフレームの後にある、1つまたは複数の第4のビデオフレームを取得することと、
コンピューティングデバイスのジャイロスコープからのジャイロスコープデータに基づいて拡張現実効果を表示することと
を含む動作を実施するようにさらに動作可能である。
【0016】
本システムの一実施形態では、第1の追跡データと、第2の追跡データと、第3の追跡データとが、シーン中の第1のオブジェクトに関連し、プロセッサは、命令を実行したとき、
第1の追跡アルゴリズム、第2の追跡アルゴリズム、または第3の追跡アルゴリズムを使用して、シーン中の第2のオブジェクトに関連する第4の追跡データを生成することであって、第4の追跡データが、1つまたは複数の第1のビデオフレームと、1つまたは複数の第2のビデオフレームと、1つまたは複数の第3のビデオフレームとに基づく、第4の追跡データを生成することと、
第4の追跡データに基づいて第2の拡張現実効果を表示することと
を含む動作を実施するようにさらに動作可能である。
【0017】
本システムの一実施形態では、プロセッサは、命令を実行したとき、
(i)第1の追跡データに基づいて表示された拡張現実効果のフレームの数に基づいて性能スコアを生成し、
性能スコアが基準を満たすと決定すること、および
(ii)第2の追跡データを、第2の追跡アルゴリズムに適合するフォーマットに変換すること
のうちの少なくとも1つを含む動作を実施するようにさらに動作可能であり、
第3の追跡データを生成することが、変換された第2の追跡データにさらに基づく。
【0018】
本発明の別の態様によれば、命令を備えるコンピュータプログラムまたはコンピュータプログラム製品であって、命令は、プログラムがコンピュータによって実行されたとき、コンピュータに、本発明による方法、および/または
シーンに関連する1つまたは複数の第1のビデオフレームを取得することと、
1つまたは複数の第1のビデオフレームに基づいて、第1の追跡アルゴリズムを使用して第1の追跡データを生成することと、
第1の追跡データに関連する第1の信頼性スコアを生成することと、
第1の追跡データに基づいて拡張現実効果を表示することと、
第1の信頼性スコアが第1のしきい値を上回ると決定することと、
シーンに関連する1つまたは複数の第2のビデオフレームを取得することであって、1つまたは複数の第2のビデオフレームが1つまたは複数の第1のビデオフレームの後にある、1つまたは複数の第2のビデオフレームを取得することと、
1つまたは複数の第2のビデオフレームに基づいて、第1の追跡アルゴリズムを使用して第2の追跡データを生成することと、
第2の追跡データに関連する第2の信頼性スコアを生成することと、
第2の信頼性スコアが第2のしきい値を下回ると決定することと、
シーンに関連する1つまたは複数の第3のビデオフレームを取得することであって、1つまたは複数の第3のビデオフレームが1つまたは複数の第2のビデオフレームの後にある、1つまたは複数の第3のビデオフレームを取得することと、
1つまたは複数の第3のビデオフレームに基づいて、第1の追跡アルゴリズムとは異なる第2の追跡アルゴリズムを使用して第3の追跡データを生成することであって、第2の追跡アルゴリズムは、第2の信頼性スコアが第2のしきい値を下回ると決定したことに応答して選択される、第3の追跡データを生成することと、
第3の追跡データに基づいて拡張現実効果を表示することと
を含む動作を実施させる、コンピュータプログラムまたはコンピュータプログラム製品が提供される。
【0019】
一実施形態では、コンピュータプログラムは、実行されたとき、コンピュータに、
第3の追跡データに関連する第3の信頼性スコアを生成することと、
第3の信頼性スコアが第3のしきい値を下回ると決定することと、
シーンに関連する1つまたは複数の第4のビデオフレームを取得することであって、1つまたは複数の第4のビデオフレームが1つまたは複数の第3のビデオフレームの後にある、1つまたは複数の第4のビデオフレームを取得することと、
コンピューティングデバイスのジャイロスコープからのジャイロスコープデータに基づいて拡張現実効果を表示することと
を含む動作を実施させるようにさらに動作可能である。
【0020】
一実施形態では、
第1の追跡データと、第2の追跡データと、第3の追跡データとが、シーン中の第1のオブジェクトに関連し、
コンピュータプログラムは、実行されたとき、コンピュータに、
第1の追跡アルゴリズム、第2の追跡アルゴリズム、または第3の追跡アルゴリズムを使用して、シーン中の第2のオブジェクトに関連する第4の追跡データを生成することであって、第4の追跡データが、1つまたは複数の第1のビデオフレームと、1つまたは複数の第2のビデオフレームと、1つまたは複数の第3のビデオフレームとに基づく、第4の追跡データを生成することと、
第4の追跡データに基づいて第2の拡張現実効果を表示することと
を含む動作を実施させるようにさらに動作可能である。
【0021】
一実施形態では、コンピュータプログラムは、実行されたとき、コンピュータに、
(i)第1の追跡データに基づいて表示された拡張現実効果のフレームの数に基づいて性能スコアを生成し、
性能スコアが基準を満たすと決定すること、および
(ii)第2の追跡データを、第2の追跡アルゴリズムに適合するフォーマットに変換すること
のうちの少なくとも1つを含む動作を実施させるようにさらに動作可能であり、
第3の追跡データを生成することが、変換された第2の追跡データにさらに基づく。
【図面の簡単な説明】
【0022】
【
図1】画像またはビデオフレーム内にキャプチャされた例示的な現実世界のシーンを示す図である。
【
図2】いくつかの関心オブジェクト(object of interest)に関連する追跡データの視覚表現の一例を示す図である。
【
図3】ARアプリケーションによって使用される追跡アルゴリズムの動的デグラデーションのための例示的な方法を示す図である。
【
図5】例示的なコンピュータシステムを示す図である。
【発明を実施するための形態】
【0023】
本明細書で説明される実施形態は、ARアプリケーションが、基礎をなすデバイスの能力および現在の動作中環境を仮定して最適なAR効果をもたらすために、異なるアルゴリズム間で動的に切り替えることを可能にするためのシステムおよび方法に関する。たとえば、ARアプリケーションは、最初に、特定の追跡アルゴリズム(たとえば、以下でさらに詳細に説明される、SLAM)を使用してオブジェクトを追跡することを試み得、特定の追跡アルゴリズムは、オブジェクトがどのくらいうまく追跡されているかにおける信頼性レベルを表す(たとえば、追跡されたポイントの数に基づく)対応する信頼性スコアを出力し得る。信頼性スコアが十分に低い場合、ARアプリケーションは、計算コストがあまり高くない別の追跡アルゴリズム(たとえば、以下でさらに詳細に説明される、領域ベース追跡)を使用することを試み得る。第2の追跡アルゴリズムに関連する信頼性スコアが満足のいくものである場合、ARアプリケーションは、そのアルゴリズムを使用してオブジェクトを追跡し続け得る。しかしながら、信頼性スコアが許容できないレベルまで低下したことを検出する(たとえば、照明状態が変化する)と、ARアプリケーションは、次いで、デバイスのジャイロスコープを使用することに切り替え得る。これが起こるとき、システムは、概念的に、環境の最後の知られているモデルにジャイロスコープデータを適用し、その中の前に検出されたオブジェクトの相対位置が同じままであると仮定し得る。
【0024】
特定の実施形態では、ARアプリケーションは、モバイルデバイス(たとえば、スマートフォン、タブレット、ラップトップ、AR眼鏡など)および他のタイプのコンピューティングデバイス(たとえば、デスクトップコンピュータ)を含む、任意のコンピューティングデバイス上で動作するように設定され得る。コンピューティングデバイスは、たとえば、CPUおよび/またはGPU、メモリ、キャッシュ、ストレージ、光センサー、ディスプレイ、ならびにARアプリケーションによってもたらされたAR効果の品質に影響を及ぼし得る任意の他のシステムリソースを含む、異なるハードウェアリソースおよび能力を有し得る。特定の実施形態では、ARアプリケーションは、ARアプリケーションが稼働しているデバイスに通信可能に結合されたカメラによってキャプチャされた現実世界のシーンのビデオフレームを取得するように設定され得る。ビデオフレームを処理することによって、ARアプリケーションは、ビデオフレーム内にキャプチャされた現実世界のオブジェクトを追跡し得る。特定の実施形態では、ARアプリケーションは、複数のタイプの追跡アルゴリズムをサポートし得る。
【0025】
図1は、画像またはビデオフレーム105内にキャプチャされた例示的な現実世界のシーン100を示す。示されたシーン100は、猫120が上にいるボックス110を含む。シーン100は、デスクに座っている人をさらに含み、その人の顔130および手140が視認できる。特定の実施形態では、ビデオフレーム105は連続フレームとともに、関心オブジェクトを追跡するために、1つまたは複数の追跡アルゴリズムを使用して、ARアプリケーションによって処理され得る。特定の実施形態では、関心オブジェクトは、ARアプリケーションのユーザがARアプリケーションを通してタップするかまたは対話するオブジェクトを含み得る(たとえば、ユーザは、AR効果を特定のオブジェクトに関連付け得る)。特定の実施形態では、関心オブジェクトは、追加または代替として、追跡アルゴリズムによる識別可能または検出可能なオブジェクトを含み得る。
【0026】
図2は、いくつかの関心オブジェクトに関連する追跡データの視覚表現200の一例を示す。追跡データの視覚表現200は、
図1に示されている現実世界のシーン100に関連し得る。たとえば、
図2中のボックス210が、
図1中の現実世界のボックス110についての追跡データを表し得、
図2中の多角形220が、
図1中の猫120についての追跡データを表し得、
図2中の顔メッシュ230が、
図1中の人の顔130についての追跡データを表し得、
図2中の円240が、
図1中の人の手140についての追跡データを表し得る。特定の実施形態では、シーン中の関心オブジェクトに関連する追跡データは、コンカレントに動作する1つまたは複数の追跡アルゴリズムを使用して生成され得る。たとえば、ボックス210によって表される追跡データは、同時位置特定およびマッピング(SLAM:Simultaneous Localization and Mapping)を使用して生成され得、多角形220によって表される追跡データは、領域追跡アルゴリズムを使用して生成され得、顔メッシュ230によって表される追跡データは、顔追跡アルゴリズムを使用して生成され得、円240によって表される追跡データは、手追跡アルゴリズムを使用して生成され得る。特定の実施形態では、特定のオブジェクトまたは領域を追跡するために使用される追跡アルゴリズムは、シーン中の他のオブジェクトまたは領域を追跡するために使用される任意の他の追跡アルゴリズムとは無関係に切り替えられるかまたは調整され得る。たとえば、人の顔130を追跡するために使用される追跡アルゴリズムは、顔追跡アルゴリズムから領域追跡アルゴリズムに動的に切り替え得、他のオブジェクト(たとえば、ボックス110、猫120、および/または手140)を追跡するために使用される追跡アルゴリズムは、不変のままであり得る。
【0027】
特定の実施形態では、異なるアルゴリズムは異なる程度の計算要件を有し、異なるタイプのシーンに好適であるので、追跡アルゴリズムを動的に切り替えることが望ましいことがある。高い正確さでオブジェクトを追跡する追跡アルゴリズムの一例は、同時位置特定およびマッピング(SLAM)である。高レベルにおいて、SLAMは、知られていない環境の3Dマップをリアルタイムで生成するために使用される技法である。SLAMは、環境の3Dモデルを生成することを試みるので、SLAMは計算集約的であり、したがって、SLAMは、望まれるように機能するためによりハイエンドのデバイスを必要とし得る。SLAM技法は、たとえば、カメラ、LiDAR、レーダー、ジャイロスコープ、および任意の他の好適なタイプのセンサーを含む、様々なセンサーからのセンサーデータを採用し得る。特定の実施形態では、従来のモバイルフォン上に実装されるSLAMは、そのフォンの(1つまたは複数の)カメラ、ジャイロスコープ、および/または加速度計を使用し得る。概念的に、ビデオフレームを仮定すれば、SLAMは、カメラの相対位置および配向と、シーン中の関心特徴(たとえば、しばしば、エッジ、コーナーなど)とを推定し、その推定を、動きと、得られた特徴観測とに基づいて、反復的に更新し得る。移動によるそれらの特徴の位置偏差に基づいて、SLAMは、キャプチャされたシーン中の認識可能なオブジェクトの3Dモデルを生成するために三角測量技法を使用し得る。たとえば、カメラが移動するとき、関心特徴に関連するランドマークポイントが移動し得る。そのランドマーク(および他のランドマーク)の移動は、オブジェクトの3D位置および配向を推定するために使用され得る。
【0028】
SLAMアルゴリズムはランドマーク検出および追跡に基づくので、SLAMは、特に、ランドマークとして使用され得る、明らかなエッジ、コーナー、または他の容易に区別できる特徴をもつ静止したオブジェクトを追跡するために有用である。SLAMによって生成された3Dモデルは、関連する信頼性スコアを有し得る。特定の実施形態では、信頼性スコアは、特定のオブジェクトに関連するランドマークの数に基づき得る。多数の検出可能なランドマークは、SLAMがシーン内のオブジェクトを正確に追跡することが可能であることを示し得る。逆に、オブジェクトについてのランドマークの数が(たとえば、シーンが、ほとんど区別できない特徴あるいはオブジェクトおよび/またはカメラによる過剰な移動によって引き起こされる画像ぶれを有することにより)しきい値を下回る場合、システムは、SLAM推定が信用できないと見なし得る。
【0029】
正確さが高いが計算コストが高いアルゴリズムの別の例は、顔追跡である。特定の実施形態では、顔検出アルゴリズムは、顔特徴(たとえば、眼、鼻、口など)を検出し、それらの特徴にマッピングされたポイントを使用して顔メッシュを生成するために、機械学習モデルを使用し得る。本質的に、顔の3Dモデルは、人の顔(および特徴)の移動および配向を追跡するために生成される。特定の実施形態における顔メッシュは、検出された顔の輪郭を近似する複数の(たとえば、32個、64個など)多角形(たとえば、三角形、正方形など)の集合であり得る。顔メッシュを使用して、追跡アルゴリズムは、顔メッシュを、各ビデオフレーム中で検出された顔とマッチさせることを試み得る。顔メッシュが、ビデオフレーム中にキャプチャされた顔にどのくらい良く合うかは、(たとえば、距離測定値と、特定の多角形に対応する顔特徴が検出可能であるかどうかとに基づく)信頼性スコアとして表され得る。ユーザの顔が(たとえば、別のオブジェクト、または、ユーザの顔を視界から隠すように顔が向きを変えることにより)遮られるとき、信頼性スコアは低下し得る。特定の実施形態では、信頼性スコアは0または1であり得、0は検出不可能な顔を表し、1は検出可能な顔を表す(またはその逆もある)。
【0030】
ARアプリケーションが使用し得る別の追跡アルゴリズムは領域追跡アルゴリズムと呼ばれ、領域追跡アルゴリズムは、特定の実施形態によれば、外観ベーストラッカー(appearance-based tracker)である。特定の実施形態における領域追跡アルゴリズムは、主に、(場合によっては、ビデオフレーム中のオブジェクトのロケーションをモデル化するために平面を生成し、3D空間におけるその平面の配向を決定するためにジャイロスコープデータを使用することの他に)2Dピクセルまたはテクスチャ情報を処理する。したがって、領域追跡アルゴリズムは、SLAMおよび顔追跡ほど計算コストが高くない追跡アルゴリズムの一例であり得る。さらに、領域追跡アルゴリズムは、外観情報に基づいてオブジェクトを追跡し、特定のジオメトリまたは特徴(たとえば、コーナー、エッジ、眼、鼻など)を有するオブジェクトに依拠しないので、領域追跡アルゴリズムは、異なるタイプのオブジェクト(たとえば、ボトル)にわたってより広い適用可能性を有し得、ぶれに対してより耐性があり得る。領域追跡アルゴリズムはSLAMおよび顔追跡アルゴリズムほど正確でないことがあるが、領域追跡アルゴリズムは、より速く(より少ない計算リソースを必要とし)、よりロバストであり、静的オブジェクトと(たとえば、オブジェクトが移動することおよび/またはカメラが移動することに起因し得る)移動しているオブジェクトの両方を追跡するのに好適であり得る。
【0031】
高レベルにおいて、領域追跡アルゴリズムは、オブジェクトに対応するビデオフレーム中の領域を識別しようとし、オブジェクトが次のフレーム中でどのように変わるかを確かめる。特定の実施形態では、領域追跡アルゴリズムは、一連のビデオフレーム中のオブジェクトの連続位置を識別し、追跡し得る。各ビデオフレームのピクセルは、現実世界のオブジェクトに対応し得るセグメントを識別するためにセグメンテーションアルゴリズムを使用して処理され得る。使用される特定のセグメンテーションアルゴリズムは、たとえば、当業者に知られている、動きベースまたは強度ベースであり得る。各識別されたセグメントは、シーン内のそのセグメントの形状およびロケーションを近似するためにラベリングされ、多角形を使用して表され得る。フレーム間の各多角形の動きは、2Dアフィン変換であると仮定され得る。オブジェクトの多角形表現と、対応する動きモデル(たとえば、機械学習分類器)とを使用して、多角形が次のフレーム中でどこにおよびどのように現れるかに関する予測が行われ得る。予測は、そのフレーム中で観測された実際のセグメントと比較され得、オブジェクトの多角形および動きモデルは、それに応じて更新され得る。数回の反復にわたって、アルゴリズムは、それぞれのフレーム中に現れる2つの多角形がおそらく同じオブジェクトであることを、あるレベルの信頼性で検出し、その2つの多角形をそのようなものとしてラベリングすることが可能であり得る。しかしながら、信頼性レベルは、オブジェクトが、十分に遮られ(たとえば、別のオブジェクトによって隠され)、現在のモデルの予測アビリティを越えて変えられ、および/または照明状態が著しく変更されて画像処理を妨害する場合、低下し得る。
【0032】
特定の実施形態では、領域追跡アルゴリズムよりも一層計算コストが低い別の追跡アルゴリズムは、ジャイロスコープデータのみに基づき得る。一般的なモバイルデバイスは内蔵ジャイロスコープを有し、内蔵ジャイロスコープは、関連するモバイルデバイスの配向を記述するジャイロスコープデータを提供する。配向データは純粋にジャイロスコープセンサーに基づき、したがって、画像処理は必要とされない。したがって、リアルタイム配向データは、ローエンドデバイスからでもすぐに利用可能であり得る。特定の実施形態では、ジャイロスコープデータに基づく追跡推定のみが、ベースライン追跡アルゴリズムとして使用され得る。
【0033】
特定の実施形態では、ARアプリケーションは、異なる特性および計算コストをもつ追跡アルゴリズムを使用するように設定され得る。たとえば、ARアプリケーションは、高い計算コストをもつ追跡アルゴリズム(たとえば、SLAMおよび顔追跡アルゴリズム)と、中程度の計算コストをもつ追跡アルゴリズム(たとえば、領域追跡アルゴリズム)と、(たとえば、画像処理なしに、ジャイロスコープデータに基づく)低い計算コストをもつ追跡アルゴリズムとを使用し得る。特定の実施形態では、ARアプリケーションは、追跡アルゴリズムのそれぞれの信頼性スコアに基づいて追跡アルゴリズム間で切り替え得る。たとえば、ARアプリケーションは、最も正確な追跡アルゴリズム(たとえば、SLAMまたは顔追跡アルゴリズム)の信頼性スコアが所定のしきい値よりも高い限り、その追跡アルゴリズムを使用することを選び得る。その信頼性スコアが所定のしきい値よりも低い場合、ARアプリケーションは、相対的にあまり計算コストが高くない、相対的にあまり正確でない追跡アルゴリズム(たとえば、領域追跡アルゴリズム)に切り替え得る。特定の実施形態では、ARアプリケーションは、切替えが起こったことにユーザが決して気づくことなしに、ARセッション中に動的にある追跡アルゴリズムから別の追跡アルゴリズムに切り替え得る。
【0034】
特定の実施形態では、シーン内の異なるオブジェクトまたは領域は、異なるアルゴリズムを使用して追跡され得る。たとえば、ユーザの顔は顔追跡アルゴリズムを使用して追跡され得、テーブルおよび本箱はSLAMを使用して追跡され得、歩き回るペットは領域追跡を使用して追跡され得る。各オブジェクトに関連する信頼性スコアは、異なるアルゴリズムが使用されるべきであるかどうかを決定するために、独立して生成され、評価され得る。たとえば、テーブルのいくつかの特徴が隠される(たとえば、ユーザによって遮断される)場合、テーブルについてのSLAMの信頼性スコアは、領域追跡への切替えを正当化するのに十分に低下し得る。これは、それらのそれぞれのオブジェクトまたは領域のために現在使用されている他の追跡アルゴリズムが同じままであるかまたは何らかの好適な追跡アルゴリズムに変化する間に、起こり得る。
【0035】
図3は、ARアプリケーションによって使用される追跡アルゴリズムの動的デグラデーションのための例示的な方法300を示す。方法はステップ310において始まり得、ARアプリケーションを稼働しているコンピューティングデバイス(たとえばモバイルフォン)が、シーンに関連する1つまたは複数のビデオフレームを取得し得る。ビデオフレームは、リポジトリから、またはデバイスに通信可能に結合されたカメラ(たとえば、モバイルフォンのカメラあるいはラップトップまたはデスクトップコンピュータに取り付けられたウェブカム)から取得され得る。デバイスに通信可能に結合されたカメラの場合、ビデオフレームは、リアルタイムでシーンをキャプチャしていることがある。キャプチャされたシーンは、
図1に示されているオブジェクトなど、1つまたは複数のオブジェクトを含み得る。
【0036】
ステップ320において、コンピューティングデバイスは、(1つまたは複数の)ビデオフレームに基づいて、追跡アルゴリズムを使用して追跡データを生成し得る。特定の実施形態では、このステップが、キャプチャされたシーン内のオブジェクトをARアプリケーションが最初に追跡し始めたときに実施されるシナリオでは、追跡アルゴリズムは、SLAMまたは顔追跡アルゴリズムなど、高い正確さを(ただし高い計算コストをも)提供する追跡アルゴリズムになるようにデフォルト設定され得る。追加または代替として、使用される追跡アルゴリズムは、たとえば、(たとえば、顔検出分類器を使用する)顔の検出、(SLAMを特に好適にし得る)幾何学的形状の検出、移動の検出、または追跡アルゴリズムによって追跡されるのに好適な任意の他の特性など、特定の特性がシーン中に存在するかどうかの決定に基づいて選択され得る。特定の実施形態では、選択されたアルゴリズムは、追加または代替としてデバイス能力に基づき得、デバイス能力は、イミュータブルな(immutable)ハードウェア能力(たとえば、プロセッサ速度、総メモリなど)および現在利用可能なシステムリソース(たとえば、利用可能な処理帯域幅、利用可能なメモリなど)を含み得る。一例として、デバイス能力が、SLAMまたは顔追跡アルゴリズムなど、より高い段階の(higher-tiered)アルゴリズムをサポートし得るとARアプリケーションが決定した場合、そのようなアルゴリズムが選択され得る。他の場合、利用可能なリソースで満足に稼働し得る相対的により低い段階の(lower-tiered)アルゴリズムが、代わりに選択され得る。SLAMを使用して生成された追跡データは、たとえば、シーンの3D表現またはシーン内のオブジェクトであり得る。顔追跡アルゴリズムを使用して生成された追跡データは、たとえば、上記で説明されたように、顔メッシュならびにその空間的位置および配向であり得る。
【0037】
ステップ330において、デバイスは、生成された追跡データに関連する信頼性スコアを生成し得る。特定の実施形態では、ステップ320において使用された追跡アルゴリズムは、追跡データとともに信頼性スコアを出力し得る。代替または追加として、信頼性スコアは、追跡データがビデオフレームにどのくらい良くマッチするかを測定するように設定されたスコアリングエンジンによって生成され得る。信頼性スコアは、たとえば、その生成された追跡データが正確であることの信頼性のレベルを表し得る。
【0038】
ステップ340において、デバイスは、追跡データに基づいて拡張現実効果を表示し得る。たとえば、AR効果が、
図1に示されているボックス110に関連するコンピュータ生成されたアニメーションである場合、そのアニメーションは、
図2に示されているようなボックス210の3Dモデルの位置、寸法、および/または配向に基づく様式でビデオフレーム上に重畳され得る。別の例として、AR効果が、
図1中の人の顔130上に配置されるべきであるマスクである場合、マスクは、
図2に示されているような顔メッシュ230の位置、寸法、および/または配向に基づく様式で表示され得る。AR効果は追跡データに基づいて表示されるので、AR効果が、予想されるまたは望まれるように現れるかどうかは、追跡データの正確さに依存する。
【0039】
ステップ350において、デバイスは、ARアプリケーションに従って、追跡データに関連する信頼性スコアがしきい値を上回るかどうか(たとえば、信頼性スコアが1つまたは複数の基準を満たすかどうか)を決定し得る。概念的に、信頼性スコアに基づくそのような決定は、追跡データが正確であるかまたは信用できるかどうかを表す。特定の実施形態では、しきい値基準は、使用される特定の追跡アルゴリズムに関連し得る。たとえば、SLAMの信頼性スコアのためのしきい値基準は、顔追跡アルゴリズムおよび/または領域追跡アルゴリズムのしきい値基準とは異なり得る。
【0040】
信頼性スコアが(現在の追跡アルゴリズムが十分に良く働いていることを示す)しきい値を上回ると決定されるシナリオでは、次いで、プロセスは、後続のビデオフレームが、ちょうど追跡データおよび対応する信頼性スコアを生成するために使用されたものと同じ追跡アルゴリズムを使用して追跡され続けるように、(たとえば、ステップ310から開始して)繰り返し得る。たとえば、デバイスは、ステップ310において、(1つまたは複数の)前に取得されたビデオフレームの後にある、シーンに関連する(1つまたは複数の)ビデオフレームを取得し得る。次いで、ステップ320において、デバイスは、(1つまたは複数の)現在取得されたビデオフレームに基づいて、以前に使用されたものと同じ追跡アルゴリズムを使用して追跡データを生成し得る。使用された最初のアルゴリズムがSLAMまたは顔追跡アルゴリズムであった早期の例を続けると、同じSLAMまたは顔追跡アルゴリズムは、それぞれ、(1つまたは複数の)現在取得されたビデオフレームを処理し、(ステップ330において)追跡データと、関連する信頼性スコアとを生成するために、再び使用され得る。
【0041】
しかしながら、新たに生成された信頼性スコアは、今や、しきい値を下回ることがある(信頼性スコアが不十分であることを示すためのしきい値は、信頼性スコアが十分であることを示すためのしきい値と同じであるか、またはそのしきい値とは異なり得る)。信頼性スコアの低下は、様々な要因に起因し得る。たとえば、デバイス上で実行している他のアプリケーションが、リソースについて競合していることがある。別の例として、シーンのいくつかの変化が、追跡アルゴリズムの追跡の正確さに影響を及ぼしていることがある。たとえば、追跡アルゴリズムがSLAMである場合、カメラの過剰な移動、オブジェクトの移動が追跡されること、および/または、ランドマーク特徴が遮られることは、ランドマーク特徴を追跡するSLAMのアビリティを損ない得る。顔追跡アルゴリズムの場合、信頼性スコアの低下は、追跡されている顔を別のオブジェクトが遮ること、顔がもはや視認できないシーンにカメラがパンすること、および/または、カメラから離れるほうへ顔が向きを変えることに起因し得る。理由が何であれ、信頼性スコアがしきい値を下回ることは、追跡データがもはや十分に正確でないことがあることを示す。特定の実施形態では、AR効果は、起こり得る不正確さにもかかわらず、追跡データに基づいて表示され得る。特定の実施形態では、AR効果は、十分に正確であると見なされた、前に生成された追跡データに基づいて表示され得る。特定の実施形態では、AR効果は、十分に高い信頼性スコアをもつ次の追跡データに基づいて表示され得る。
【0042】
(ステップ350において)信頼性スコアがしきい値を下回ると決定すると、デバイスは、ステップ360において、後続の追跡を実施するために代替追跡アルゴリズムを選択し得る。前に説明されたように、信頼性スコアが低下する1つの理由は、現在のシーン中の特性が現在の追跡アルゴリズムに好適でないことに起因し得る。別の理由は、十分に迅速に追跡データを生成するための時間制約により、システムリソース(たとえば、メモリ、処理パワーなど)の低下が追跡アルゴリズムの品質または正確さに影響を及ぼし得る(たとえば、追跡予測を生成するための処理反復がより少ない)ことであり得る。上記の例を続けると、現在の追跡アルゴリズムが、極めて正確であるが他のサポートされるアルゴリズムほどロバストでないSLAMである場合、信頼性スコアの低下は、現在のシーン中の特性がSLAMに好適でないことがある(たとえば、明らかに識別可能なランドマークの過剰な動きおよび/または欠如)を示し得る。特定の実施形態では、信頼性スコアがしきい値を下回ることに応答して、デバイスは、領域追跡アルゴリズムがSLAMおよび顔追跡アルゴリズムと比較して(あまり正確でないとしても)よりロバストなアルゴリズムであるので、領域追跡アルゴリズムを選択し得る。よりロバストな領域追跡アルゴリズムを使用することは、SLAMが現在のシーンで経験する問題に対処するのを助け得る。特定の実施形態では、現在の信頼性スコアが比較されるしきい値は、代替追跡アルゴリズムの信頼性スコアであり得る。たとえば、デバイスは、あらゆるフレームにおいてSLAMについての信頼性スコアと領域追跡アルゴリズムについての信頼性スコアの両方を計算し、SLAMの信頼性スコアが領域追跡の信頼性スコアを下回るとき、SLAMから領域追跡に切り替え得る。特定の実施形態では、ARアプリケーションは、ARアプリケーションが実装する追跡アルゴリズムの所定の階層を有し得る。たとえば、SLAMと顔追跡アルゴリズムとが、可能な場合、最も好ましく、その後に領域追跡アルゴリズムが続き、最後に、ベースラインアルゴリズムとしてのジャイロスコープベースアルゴリズムであり得る。
【0043】
ステップ310に目を向けると、デバイスは、ビデオの、前に取得されたフレームの後の、シーンに関連する(1つまたは複数の)追加のビデオフレームを再び取得し得る。ステップ320において、デバイスは、よりコストが高い追跡アルゴリズム(たとえば、SLAMまたは顔追跡アルゴリズム)からの信頼性スコアが不十分であるという決定に応答してステップ360において選択された、あまり計算コストが高くない追跡アルゴリズムを使用して、(1つまたは複数の)現在取得されたビデオフレームに基づいて、追跡データを生成し得る。上記で説明された例を続けると、現在の使用のために選択されたアルゴリズムは領域追跡アルゴリズムであり得、その場合、(たとえば、ステップ330において)追跡データに関連する信頼性スコアが生成され得、(たとえば、ステップ340において)AR効果が追跡データに基づいて表示され得る。別の例として、領域追跡アルゴリズムを使用する代わりに、デバイスは、(1つまたは複数の)現在取得されたビデオフレームを処理しないジャイロスコープベースアルゴリズムを使用し得る。これは、たとえば、ARアプリケーションが、領域追跡アルゴリズムが(たとえば、限られた利用可能なシステムリソース、あるいは、照明の欠如またはテクスチャの細部をぼやけさせる過剰な照明に起因し得る、ビデオフレーム中の不十分な追跡特徴により)満足に機能しないと決定する場合、起こり得る。別の例として、ARアプリケーションは、単に、領域追跡アルゴリズムを実装しないことがある(言い換えれば、ジャイロスコープベースアルゴリズムは、アルゴリズムの階層において、SLAMおよび顔追跡アルゴリズムの後の次位にあり得る)。
【0044】
特定の実施形態では、ARアプリケーションが、ある追跡アルゴリズム(たとえば、SLAM)から別の追跡アルゴリズム(たとえば、領域追跡アルゴリズム)に遷移するとき、最後のアルゴリズムを使用して生成された既存の追跡データは、処理され、置換アルゴリズムに適合するかまたは置換アルゴリズムに理解できる(make sense)フォーマットに変換され得る。たとえば、深度情報は、SLAMによってモデル化および理解されるが、領域追跡アルゴリズムによってモデル化および理解されない。したがって、SLAMから領域追跡アルゴリズムに遷移するとき、デバイスは、SLAM追跡データを、領域追跡アルゴリズムに適合するかまたは領域追跡アルゴリズムによって理解される2D追跡データに変換し得る。特定の実施形態では、この変換プロセスは、概念的に、3D空間における関心ポイントからカメラに光線を投影することによって実施され得、光線が(たとえば、シーンの画像面を表す)平面と交差するポイントが、そのポイントの2D表現であり得る。既存の追跡データの2Dバージョンは、次いで、現在の追跡データを生成するために領域追跡アルゴリズムによって使用され得る。同様のプロセスが、特定の実施形態によれば、顔追跡データを2Dに変換するために実施され得る。
【0045】
使用される追跡アルゴリズムが領域追跡アルゴリズムである例を続けると、デバイスは、次いで、ステップ350において、領域追跡アルゴリズムからの追跡データに関連する信頼性スコアが領域追跡アルゴリズムのためのしきい値を下回るかどうかを決定し得る。信頼性スコアがしきい値基準を満たす場合、ARアプリケーションは、領域追跡アルゴリズムを使用してオブジェクトを追跡し続け得る。一方、信頼性スコアがしきい値基準を満足することができない場合、ARアプリケーションは、ステップ360において、ジャイロスコープベースアルゴリズムなど、あまり計算コストが高くない追跡アルゴリズムを選択し得る。
【0046】
次の反復において、デバイスは、シーンに関連する(1つまたは複数の)現在のビデオフレームを再び取得し得、(1つまたは複数の)現在のビデオフレームは、ビデオ中の前に取得されたフレームの後のフレームである。しかしながら、ARアプリケーションは、現在、ジャイロスコープベースアルゴリズムを使用するように設定されているので、特定の実施形態における(1つまたは複数の)現在取得されたビデオフレームは、オブジェクトを追跡する目的で処理されない。代わりに、ARアプリケーションは、コンピューティングデバイスのジャイロスコープからのジャイロスコープデータのみに基づいてAR効果を表示し得る。特定の実施形態では、コンピューティングデバイスの加速度計からの加速度計データが、代替または追加として使用され得る。ジャイロスコープデータおよび加速度計データは、それぞれ、デバイスの配向および位置の変化を決定するために使用され得る。概念的に、(加速度計データをも利用し得る)ジャイロスコープベースアルゴリズムは、シーン中のオブジェクトが現実世界において静的なままである(言い換えれば、それらのオブジェクトの相対位置および配向が同じままである)と仮定し得る。しかしながら、変化し得るものは、シーンに対するカメラの位置および配向である。したがって、特定の実施形態では、ジャイロスコープベースアルゴリズムは、カメラの配向および/または位置の変化に基づいて、(たとえば、SLAM、顔追跡アルゴリズム、および/または領域追跡アルゴリズムによって生成されたような)前に生成された追跡データを更新し得る。AR効果は、次いで、更新された追跡データに基づいて表示され得る。別の実施形態では、前に表示されたAR効果は、前に生成された追跡データを更新することなしに、配向および/または位置データを使用して直接更新され得る。
【0047】
特定の実施形態では、
図3に関して上記で説明されたプロセスは、シーンに現れる各オブジェクトに独立して適用され得る。たとえば、
図3に関して上記で説明された例は、
図1中のボックス110など、シーン中の第1のオブジェクトに関連し得る。ボックス110を追跡するために使用される追跡アルゴリズムが変化する間、シーン中の別のオブジェクト(たとえば、
図1中の猫120)は、特定のアルゴリズム(またはアルゴリズムの異なる進行)を使用して連続的に追跡され得る。たとえば、ボックス110の場合、ビデオフレームの第1のセットが、SLAMを使用して処理され得、ビデオフレームの第2のセットが、領域追跡アルゴリズムを使用して処理され得、ビデオフレームの第3のセットが、ジャイロスコープベースアルゴリズムを使用して処理され得る。ビデオフレームの第1、第2、および第3のセットは、時間フレームにわたり得る。ボックス110を追跡するために使用されるアルゴリズムとは無関係に、猫120は、同じ時間フレームを通して領域追跡アルゴリズム(または任意の他の好適な追跡アルゴリズム)を使用して追跡され得る。たとえば、領域追跡アルゴリズムは、ボックス110を追跡するために使用されるビデオフレームの同じ第1、第2、および第3のセットを使用して追跡データを生成し得る。猫120に関連する別のAR効果は、その時間フレームを通して領域追跡アルゴリズムによって生成された追跡データに基づいて表示され得る。
【0048】
図3に関して上記で説明されたプロセスは、追跡アルゴリズムをいつ切り替えるべきかを決定するためのメトリックとして信頼性スコアを使用し得るが、メトリックは、代替または追加として、望まれる追跡特性の任意の他の測度に基づき得ることを諒解されたい。たとえば、上述の信頼性スコアは、追跡データの確からしい正確さを表し得る。同じく関連のあり得るものは、追跡アルゴリズムの性能である。特定の実施形態におけるAR効果は、リアルタイムで表示され、拡張されているビデオ中で滑らかなように見える必要があり得るので、追跡アルゴリズムは、十分に迅速にそのタスクを実施する必要がある。特定の実施形態では、性能は、特定の追跡アルゴリズムが使用されている間に生成されたARフレームの数に基づいて測定され得る。測度は、たとえば、フレームレート(たとえば、毎秒15個のフレームなど、毎秒のフレームの数)および/または時間期間ごとのドロップされたフレームの数(たとえば、毎秒の、30個のフレームなど、ターゲットよりも小さいフレームの数)に基づき得る。特定の実施形態では、ARアプリケーションは、信頼性スコアおよび性能スコアの一方または両方が、それらのそれぞれの1つまたは複数のしきい値または基準を下回る場合、より高い段階の追跡アルゴリズムからより低い段階の追跡アルゴリズムに切り替えることを決め得る。現在の性能スコアが不適当である状況では、現在のアルゴリズムを置き換えるための置換アルゴリズムの選択は、それらの相対計算コストに基づき得る。たとえば、SLAMの性能スコアが不十分である場合、領域追跡などのアルゴリズムが、その相対的により低い計算コストにより、選択され得る。特定の実施形態では、上述の信頼性スコアは、アルゴリズムの正確さと性能の両方を反映するように定義され得る。たとえば、信頼性スコアは、性能を反映するフレームカウント(またはフレームドロップ)、ならびに、使用される追跡アルゴリズムによって出力された追跡の正確さに基づいて、算出され得る。
【0049】
特定の実施形態は、適切な場合、
図3の方法の1つまたは複数のステップを繰り返し得る。本開示は、
図3の方法の特定のステップを、特定の順序で行われるものとして説明し、示すが、本開示は、
図3の方法の任意の好適なステップが任意の好適な順序で行われることを企図する。その上、本開示は、
図3の方法の特定のステップを含む、追跡アルゴリズムの動的デグラデーションのための例示的な方法を説明し、示すが、本開示は、適切な場合、
図3の方法のステップのすべてを含むか、いくつかを含むか、またはいずれも含まないことがある、任意の好適なステップを含む、追跡アルゴリズムの動的デグラデーションのための任意の好適な方法を企図する。さらに、本開示は、
図3の方法の特定のステップを行う特定の構成要素、デバイス、またはシステムを説明し、示すが、本開示は、
図3の方法の任意の好適なステップを行う任意の好適な構成要素、デバイス、またはシステムの任意の好適な組合せを企図する。
【0050】
上記で説明されたように、特定の実施形態は、最初に、ダウングレーディングの前により正確な追跡アルゴリズムを試み得る。いくつかの状況では、ARアプリケーションは、特定の追跡アルゴリズムを試みる前でも、その特定の追跡アルゴリズムが、望まれる結果をもたらさないと決定し得る。たとえば、上記で説明された、SLAMの特定の実施形態は、環境の3Dモデルを生成するために、カメラ移動によって引き起こされる特徴ランドマークにおける偏差を使用していることがある。したがって、特定の実施形態では、ARアプリケーションは、開始すると、デバイスのジャイロスコープおよび/または加速度計からのデータに基づいて、カメラが移動しているかどうかを決定し得る。動きが検出されない場合、ARアプリケーションは、SLAMではなく領域追跡アルゴリズムを使用することから開始し得る。一方、動きが検出された場合、ARアプリケーションは、上記で説明されたように、SLAMから開始し得る。
【0051】
特定の実施形態では、デバイスが、SLAMなど、より計算コストが高いアルゴリズムを利用し得るか否かを初めから決定することによって、さらなるAR最適化が得られ得る。ローエンドデバイスの場合、計算リソースが制限され得るだけでなく、記憶域も制限され得る。したがって、特定の実施形態は、対応するソフトウェアモジュールがデバイス上にダウンロードされる前に、そのデバイスが、計算コストが高い追跡アルゴリズムを扱うための最小システム要件を有するかどうかを決定し得る。たとえば、デバイスは、最初に、アプリケーションストアなど、配信元からARアプリケーションをダウンロードし、インストールし得る。ARアプリケーションは、SLAMなど、計算コストが高い追跡アルゴリズムのためのソフトウェアモジュールとバンドルされないことがある。ARアプリケーションが最初に起動するとき、ARアプリケーションは、デバイスの能力が、計算コストが高い追跡アルゴリズムを実行するための最小システム要件(たとえば、処理速度またはクラスのしきい値レベル、メモリのしきい値量など)を満足するかどうかを決定するためにデバイスに照会するように設定され得る。要件が満足される場合、ARアプリケーションは、続いて、追跡アルゴリズムに関連するソフトウェアモジュールをダウンロードし得る。一方、要件が満足されない場合、ARアプリケーションは、ソフトウェアモジュールが使用される可能性が低い(たとえば、ソフトウェアモジュールによって生成された追跡データが、追跡アルゴリズムの継続的使用を保証するのに十分な信頼性スコアまたは性能スコアを有しないことがある)ので、記憶空間を節約するために、ソフトウェアモジュールをダウンロードすることを回避し得る。
【0052】
特定の実施形態では、ARアプリケーションはまた、デバイスの能力に基づいて追跡アルゴリズムの設定またはパラメータを調整し得る。たとえば、ARアプリケーションは、アプリケーションが稼働しているデバイスの能力を確認するように設定され得る。デバイスの能力は、特定の追跡アルゴリズムを稼働するのに十分であり得るが、その能力は、許容できるスペクトルの下端にあり得、したがって、追跡アルゴリズムは、不適当に機能する危険性がより高くなり得る。これに対処するために、(たとえば、プロセッサ速度またはクラス、メモリサイズなどに基づいて)デバイスの1つまたは複数の能力が1つまたは複数の所定の能力標準を下回ると決定すると、ARアプリケーションは、影響を及ぼされる(1つまたは複数の)追跡アルゴリズムを、追跡グラニュラリティを低減するように設定し得る。たとえば、SLAMの場合、追跡オブジェクトのために使用されるランドマークの数が低減され得る。別の例として、顔認識アルゴリズムの場合、顔メッシュにおいて使用される多角形の数が低減され得る。また別の例として、領域追跡アルゴリズムの場合、追跡のために使用される領域またはセグメントの数が低減され得る。
【0053】
特定の実施形態では、ARアプリケーションはまた、特定のオブジェクトを追跡するために使用されるアルゴリズムをアップグレードし得る。たとえば、周期的に、ARアプリケーションは、バックグラウンドで、より高い段階のアルゴリズム(たとえば、SLAMなど、より正確であるがより計算コストが高いアルゴリズム)を使用して、信頼性スコアがそのアルゴリズムへのアップグレーディング(upgrading)を保証するのに十分であるかどうかを確かめることを試み得る。アップグレーディングは、デバイスの能力が不適当であるからではなく、環境または状況要因(たとえば、カメラおよび/またはオブジェクトの突然の移動が、SLAMの信頼性スコアが低下することを引き起こしたか、あるいは、突然の明るい光が、領域追跡アルゴリズムの信頼性スコアが低下することを引き起こした)により、ダウングレードが起こった状況において、意味をなし得る。たとえば、より高い段階のアルゴリズムが特定のデバイス上で過去に長い時間期間の間使用されていた場合、ARアプリケーションは、そのようなアルゴリズムを使用することが可能であることを学習していることがあり、したがって、そのようなアルゴリズムを使用することを試み得る。同様に、より低い段階のアルゴリズムとより高い段階のアルゴリズムの両方が、シーン中の異なるオブジェクトを追跡するためにコンカレントに使用されている場合(デバイスが、より高い段階のアルゴリズムをサポートすることが可能であるという指示)、システムは、より低い段階のアルゴリズムを使用して現在追跡されているオブジェクトを追跡するために、より高い段階の追跡アルゴリズムを使用することが可能であるかどうかを確かめることを周期的に試み得る。より高い段階のアルゴリズムが、実際、満足に機能する場合、ARアプリケーションは、より低い段階のアルゴリズムを使用することからより高い段階のアルゴリズムに切り替え得る。
【0054】
図4は、ソーシャルネットワーキングシステムに関連する例示的なネットワーク環境400を示す。ネットワーク環境400は、ネットワーク410によって互いに接続された、ユーザ401と、クライアントシステム430と、ソーシャルネットワーキングシステム460と、サードパーティシステム470とを含む。
図4は、ユーザ401、クライアントシステム430、ソーシャルネットワーキングシステム460、サードパーティシステム470、およびネットワーク410の特定の構成を示すが、本開示は、ユーザ401、クライアントシステム430、ソーシャルネットワーキングシステム460、サードパーティシステム470、およびネットワーク410の任意の好適な構成を企図する。限定としてではなく一例として、クライアントシステム430、ソーシャルネットワーキングシステム460、およびサードパーティシステム470のうちの2つまたはそれ以上は、ネットワーク410をバイパスして、直接互いに接続され得る。別の例として、クライアントシステム430、ソーシャルネットワーキングシステム460、およびサードパーティシステム470のうちの2つまたはそれ以上は、全体的にまたは部分的に、物理的にまたは論理的に互いとコロケートされ得る。その上、
図4は、特定の数のユーザ401、クライアントシステム430、ソーシャルネットワーキングシステム460、サードパーティシステム470、およびネットワーク410を示すが、本開示は、任意の好適な数のユーザ401、クライアントシステム430、ソーシャルネットワーキングシステム460、サードパーティシステム470、およびネットワーク410を企図する。限定としてではなく一例として、ネットワーク環境400は、複数のユーザ401と、クライアントシステム430と、ソーシャルネットワーキングシステム460と、サードパーティシステム470と、ネットワーク410とを含み得る。
【0055】
特定の実施形態では、ユーザ401は、ソーシャルネットワーキングシステム460と、またはソーシャルネットワーキングシステム460上で、対話または通信する個人(人間ユーザ)、エンティティ(たとえば、企業、ビジネス、またはサードパーティアプリケーション)、または(たとえば、個人またはエンティティの)グループであり得る。特定の実施形態では、ソーシャルネットワーキングシステム460は、オンラインソーシャルネットワークをホストするネットワークアドレス指定可能なコンピューティングシステムであり得る。ソーシャルネットワーキングシステム460は、たとえば、ユーザプロファイルデータ、概念プロファイルデータ、ソーシャルグラフ情報、またはオンラインソーシャルネットワークに関係する他の好適なデータなど、ソーシャルネットワーキングデータを生成し、記憶し、受信し、送り得る。ソーシャルネットワーキングシステム460は、直接的にまたはネットワーク410を介してのいずれかで、ネットワーク環境400の他の構成要素によってアクセスされ得る。特定の実施形態では、ソーシャルネットワーキングシステム460は、ユーザ401が、たとえば、適切なプライバシーセッティングをセットすることによって、そのユーザのアクションがソーシャルネットワーキングシステム460によってロギングされるか、または他のシステム(たとえば、サードパーティシステム470)と共有されることをオプトインまたはオプトアウトすることを可能にする許可サーバ(または(1つまたは複数の)他の好適な構成要素)を含み得る。ユーザのプライバシーセッティングは、ユーザに関連するどの情報がロギングされ得るか、ユーザに関連する情報がどのようにロギングされ得るか、ユーザに関連する情報がいつロギングされ得るか、ユーザに関連する情報を誰がロギングし得るか、ユーザに関連する情報が誰と共有され得るか、およびユーザに関連する情報がどのような目的でロギングまたは共有され得るかを決定し得る。許可サーバは、ブロッキング、データのハッシュ化、匿名化、または適宜に他の好適な技法を通して、ソーシャルネットワーキングシステム460のユーザの1つまたは複数のプライバシーセッティングを施行するために使用され得る。特定の実施形態では、サードパーティシステム470は、ARアプリケーションをホストするかまたは各追跡アルゴリズムに関連するモジュールを分離することができる、ネットワークアドレス指定可能なコンピューティングシステムであり得る。サードパーティシステム470は、直接的にまたはネットワーク410を介してのいずれかで、ネットワーク環境400の他の構成要素によってアクセスされ得る。特定の実施形態では、1つまたは複数のユーザ401は、ソーシャルネットワーキングシステム460またはサードパーティシステム470にアクセスし、そこにデータを送り、そこからデータを受信するために、1つまたは複数のクライアントシステム430を使用し得る。クライアントシステム430は、直接的に、ネットワーク410を介して、またはサードパーティシステムを介して、ソーシャルネットワーキングシステム460またはサードパーティシステム470にアクセスし得る。限定としてではなく一例として、クライアントシステム430は、ソーシャルネットワーキングシステム460を介してサードパーティシステム470にアクセスし得る。クライアントシステム430は、たとえば、パーソナルコンピュータ、ラップトップコンピュータ、セルラー電話、スマートフォン、タブレットコンピュータ、または拡張/仮想現実デバイスなど、任意の好適なコンピューティングデバイスであり得る。
【0056】
本開示は任意の好適なネットワーク410を企図する。限定としてではなく一例として、ネットワーク410の1つまたは複数の部分は、アドホックネットワーク、イントラネット、エクストラネット、仮想プライベートネットワーク(VPN)、ローカルエリアネットワーク(LAN)、ワイヤレスLAN(WLAN)、ワイドエリアネットワーク(WAN)、ワイヤレスWAN(WWAN)、メトロポリタンエリアネットワーク(MAN)、インターネットの一部分、公衆交換電話網(PSTN)の一部分、セルラー電話ネットワーク、またはこれらのうちの2つまたはそれ以上の組合せを含み得る。ネットワーク410は1つまたは複数のネットワーク410を含み得る。
【0057】
リンク450は、クライアントシステム430と、ソーシャルネットワーキングシステム460と、サードパーティシステム470とを、通信ネットワーク410にまたは互いに接続し得る。本開示は任意の好適なリンク450を企図する。特定の実施形態では、1つまたは複数のリンク450は、1つまたは複数の、(たとえば、デジタル加入者回線(DSL)またはデータオーバーケーブルサービスインターフェース仕様(DOCSIS)などの)ワイヤラインリンク、(たとえば、Wi-Fiまたはワールドワイドインターオペラビリティフォーマイクロウェーブアクセス(WiMAX)などの)ワイヤレスリンク、または(たとえば、同期光ネットワーク(SONET)または同期デジタルハイアラーキ(SDH)などの)光リンクを含む。特定の実施形態では、1つまたは複数のリンク450は、各々、アドホックネットワーク、イントラネット、エクストラネット、VPN、LAN、WLAN、WAN、WWAN、MAN、インターネットの一部分、PSTNの一部分、セルラー技術ベースネットワーク、衛星通信技術ベースネットワーク、別のリンク450、または2つまたはそれ以上のそのようなリンク450の組合せを含む。リンク450は、ネットワーク環境400の全体にわたって必ずしも同じである必要はない。1つまたは複数の第1のリンク450は、1つまたは複数の第2のリンク450とは1つまたは複数の点で異なり得る。
【0058】
図5は例示的なコンピュータシステム500を示す。特定の実施形態では、1つまたは複数のコンピュータシステム500は、本明細書で説明または示される1つまたは複数の方法の1つまたは複数のステップを実施する。特定の実施形態では、1つまたは複数のコンピュータシステム500は、本明細書で説明または示される機能性を提供する。特定の実施形態では、1つまたは複数のコンピュータシステム500上で稼働しているソフトウェアは、本明細書で説明または示される1つまたは複数の方法の1つまたは複数のステップを実施するか、あるいは本明細書で説明または示される機能性を提供する。特定の実施形態は、1つまたは複数のコンピュータシステム500の1つまたは複数の部分を含む。本明細書では、コンピュータシステムへの言及は、適切な場合、コンピューティングデバイスを包含し得、その逆も同様である。その上、コンピュータシステムへの言及は、適切な場合、1つまたは複数のコンピュータシステムを包含し得る。
【0059】
本開示は、任意の好適な数のコンピュータシステム500を企図する。本開示は、任意の好適な物理的形態をとるコンピュータシステム500を企図する。限定としてではなく例として、コンピュータシステム500は、組込み型コンピュータシステム、システムオンチップ(SOC)、(たとえば、コンピュータオンモジュール(COM)またはシステムオンモジュール(SOM)などの)シングルボードコンピュータシステム(SBC)、デスクトップコンピュータシステム、ラップトップまたはノートブックコンピュータシステム、対話型キオスク、メインフレーム、コンピュータシステムのメッシュ、携帯電話、携帯情報端末(PDA)、サーバ、タブレットコンピュータシステム、拡張/仮想現実デバイス、あるいはこれらのうちの2つまたはそれ以上の組合せであり得る。適切な場合、コンピュータシステム500は、1つまたは複数のコンピュータシステム500を含むか、単一または分散型であるか、複数のロケーションにわたるか、複数のマシンにわたるか、複数のデータセンターにわたるか、あるいは1つまたは複数のネットワーク中の1つまたは複数のクラウド構成要素を含み得るクラウド中に常駐し得る。適切な場合、1つまたは複数のコンピュータシステム500は、実質的な空間的または時間的制限なしに、本明細書で説明または示される1つまたは複数の方法の1つまたは複数のステップを実施し得る。限定としてではなく一例として、1つまたは複数のコンピュータシステム500は、リアルタイムでまたはバッチモードで、本明細書で説明または示される1つまたは複数の方法の1つまたは複数のステップを実施し得る。1つまたは複数のコンピュータシステム500は、適切な場合、異なる時間においてまたは異なるロケーションにおいて、本明細書で説明または示される1つまたは複数の方法の1つまたは複数のステップを実施し得る。
【0060】
特定の実施形態では、コンピュータシステム500は、プロセッサ502と、メモリ504と、ストレージ506と、入出力(I/O)インターフェース508と、通信インターフェース510と、バス512とを含む。本開示は、特定の構成において特定の数の特定の構成要素を有する特定のコンピュータシステムを説明し、示すが、本開示は、任意の好適な構成において任意の好適な数の任意の好適な構成要素を有する任意の好適なコンピュータシステムを企図する。
【0061】
特定の実施形態では、プロセッサ502は、コンピュータプログラムを作り上げる命令など、命令を実行するためのハードウェアを含む。限定としてではなく一例として、命令を実行するために、プロセッサ502は、内部レジスタ、内部キャッシュ、メモリ504、またはストレージ506から命令を取り出し(またはフェッチし)、それらの命令を復号および実行し、次いで、内部レジスタ、内部キャッシュ、メモリ504、またはストレージ506に1つまたは複数の結果を書き込み得る。特定の実施形態では、プロセッサ502は、データ、命令、またはアドレスのための1つまたは複数の内部キャッシュを含み得る。本開示は、適切な場合、任意の好適な数の任意の好適な内部キャッシュを含むプロセッサ502を企図する。限定としてではなく一例として、プロセッサ502は、1つまたは複数の命令キャッシュと、1つまたは複数のデータキャッシュと、1つまたは複数のトランスレーションルックアサイドバッファ(TLB)とを含み得る。命令キャッシュ中の命令は、メモリ504またはストレージ506中の命令のコピーであり得、命令キャッシュは、プロセッサ502によるそれらの命令の取出しを高速化し得る。データキャッシュ中のデータは、プロセッサ502において実行する命令が動作する対象のメモリ504またはストレージ506中のデータのコピー、プロセッサ502において実行する後続の命令によるアクセスのための、またはメモリ504もしくはストレージ506に書き込むための、プロセッサ502において実行された前の命令の結果、あるいは他の好適なデータであり得る。データキャッシュは、プロセッサ502による読取りまたは書込み動作を高速化し得る。TLBは、プロセッサ502のための仮想アドレストランスレーション(virtual-address translation)を高速化し得る。特定の実施形態では、プロセッサ502は、データ、命令、またはアドレスのための1つまたは複数の内部レジスタを含み得る。本開示は、適切な場合、任意の好適な数の任意の好適な内部レジスタを含むプロセッサ502を企図する。適切な場合、プロセッサ502は、1つまたは複数の算術論理ユニット(ALU)を含むか、マルチコアプロセッサであるか、または1つまたは複数のプロセッサ502を含み得る。本開示は、特定のプロセッサを説明し、示すが、本開示は任意の好適なプロセッサを企図する。
【0062】
特定の実施形態では、メモリ504は、プロセッサ502が実行するための命令、またはプロセッサ502が動作する対象のデータを記憶するためのメインメモリを含む。限定としてではなく一例として、コンピュータシステム500は、ストレージ506または(たとえば、別のコンピュータシステム500などの)別のソースからメモリ504に命令をロードし得る。プロセッサ502は、次いで、メモリ504から内部レジスタまたは内部キャッシュに命令をロードし得る。命令を実行するために、プロセッサ502は、内部レジスタまたは内部キャッシュから命令を取り出し、それらの命令を復号し得る。命令の実行中またはその後に、プロセッサ502は、(中間結果または最終結果であり得る)1つまたは複数の結果を内部レジスタまたは内部キャッシュに書き込み得る。プロセッサ502は、次いで、メモリ504にそれらの結果のうちの1つまたは複数を書き込み得る。特定の実施形態では、プロセッサ502は、1つまたは複数の内部レジスタまたは内部キャッシュ中の、あるいは(ストレージ506または他の場所とは対照的な)メモリ504中の命令のみを実行し、1つまたは複数の内部レジスタまたは内部キャッシュ中の、あるいは(ストレージ506または他の場所とは対照的な)メモリ504中のデータのみに対して動作する。(アドレスバスおよびデータバスを各々含み得る)1つまたは複数のメモリバスが、プロセッサ502をメモリ504に結合し得る。バス512は、以下で説明されるように、1つまたは複数のメモリバスを含み得る。特定の実施形態では、1つまたは複数のメモリ管理ユニット(MMU)が、プロセッサ502とメモリ504との間に常駐し、プロセッサ502によって要求されるメモリ504へのアクセスを可能にする。特定の実施形態では、メモリ504は、ランダムアクセスメモリ(RAM)を含む。このRAMは、適切な場合、揮発性メモリであり得る。適切な場合、このRAMは、ダイナミックRAM(DRAM)またはスタティックRAM(SRAM)であり得る。その上、適切な場合、このRAMは、シングルポートまたはマルチポートRAMであり得る。本開示は任意の好適なRAMを企図する。メモリ504は、適切な場合、1つまたは複数のメモリ504を含み得る。本開示は、特定のメモリを説明し、示すが、本開示は任意の好適なメモリを企図する。
【0063】
特定の実施形態では、ストレージ506は、データまたは命令のための大容量ストレージを含む。限定としてではなく一例として、ストレージ506は、ハードディスクドライブ(HDD)、フロッピーディスクドライブ、フラッシュメモリ、光ディスク、光磁気ディスク、磁気テープ、またはユニバーサルシリアルバス(USB)ドライブ、あるいはこれらのうちの2つまたはそれ以上の組合せを含み得る。ストレージ506は、適切な場合、リムーバブルまたは非リムーバブル(または固定)媒体を含み得る。ストレージ506は、適切な場合、コンピュータシステム500の内部または外部にあり得る。特定の実施形態では、ストレージ506は、不揮発性ソリッドステートメモリである。特定の実施形態では、ストレージ506は、読取り専用メモリ(ROM)を含む。適切な場合、このROMは、マスクプログラムROM、プログラマブルROM(PROM)、消去可能PROM(EPROM)、電気的消去可能PROM(EEPROM)、電気的書き換え可能ROM(EAROM)、またはフラッシュメモリ、あるいはこれらのうちの2つまたはそれ以上の組合せであり得る。本開示は、任意の好適な物理的形態をとる大容量ストレージ506を企図する。ストレージ506は、適切な場合、プロセッサ502とストレージ506との間の通信を可能にする1つまたは複数のストレージ制御ユニットを含み得る。適切な場合、ストレージ506は、1つまたは複数のストレージ506を含み得る。本開示は、特定のストレージを説明し、示すが、本開示は任意の好適なストレージを企図する。
【0064】
特定の実施形態では、I/Oインターフェース508は、コンピュータシステム500と1つまたは複数のI/Oデバイスとの間の通信のための1つまたは複数のインターフェースを提供する、ハードウェア、ソフトウェア、またはその両方を含む。コンピュータシステム500は、適切な場合、これらのI/Oデバイスのうちの1つまたは複数を含み得る。これらのI/Oデバイスのうちの1つまたは複数は、人とコンピュータシステム500との間の通信を可能にし得る。限定としてではなく一例として、I/Oデバイスは、キーボード、キーパッド、マイクロフォン、モニタ、マウス、プリンタ、スキャナ、スピーカー、スチールカメラ、スタイラス、タブレット、タッチスクリーン、トラックボール、ビデオカメラ、別の好適なI/Oデバイス、またはこれらのうちの2つまたはそれ以上の組合せを含み得る。I/Oデバイスは1つまたは複数のセンサーを含み得る。本開示は、任意の好適なI/Oデバイスと、それらのI/Oデバイスのための任意の好適なI/Oインターフェース508とを企図する。適切な場合、I/Oインターフェース508は、プロセッサ502がこれらのI/Oデバイスのうちの1つまたは複数を駆動することを可能にする1つまたは複数のデバイスまたはソフトウェアドライバを含み得る。I/Oインターフェース508は、適切な場合、1つまたは複数のI/Oインターフェース508を含み得る。本開示は、特定のI/Oインターフェースを説明し、示すが、本開示は任意の好適なI/Oインターフェースを企図する。
【0065】
特定の実施形態では、通信インターフェース510は、コンピュータシステム500と、1つまたは複数の他のコンピュータシステム500または1つまたは複数のネットワークとの間の(たとえば、パケットベース通信などの)通信のための1つまたは複数のインターフェースを提供する、ハードウェア、ソフトウェア、またはその両方を含む。限定としてではなく一例として、通信インターフェース510は、イーサネットまたは他のワイヤベースネットワークと通信するためのネットワークインターフェースコントローラ(NIC)またはネットワークアダプタ、あるいはWI-FIネットワークなどのワイヤレスネットワークと通信するためのワイヤレスNIC(WNIC)またはワイヤレスアダプタを含み得る。本開示は、任意の好適なネットワークと、そのネットワークのための任意の好適な通信インターフェース510とを企図する。限定としてではなく一例として、コンピュータシステム500は、アドホックネットワーク、パーソナルエリアネットワーク(PAN)、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、メトロポリタンエリアネットワーク(MAN)、またはインターネットの1つまたは複数の部分、あるいはこれらのうちの2つまたはそれ以上の組合せと通信し得る。これらのネットワークのうちの1つまたは複数の1つまたは複数の部分は、ワイヤードまたはワイヤレスであり得る。一例として、コンピュータシステム500は、(たとえば、BLUETOOTH WPANなどの)ワイヤレスPAN(WPAN)、WI-FIネットワーク、WI-MAXネットワーク、(たとえば、モバイル通信用グローバルシステム(GSM)ネットワークなどの)セルラー電話ネットワーク、または他の好適なワイヤレスネットワーク、あるいはこれらのうちの2つまたはそれ以上の組合せと通信し得る。コンピュータシステム500は、適切な場合、これらのネットワークのいずれかのための任意の好適な通信インターフェース510を含み得る。通信インターフェース510は、適切な場合、1つまたは複数の通信インターフェース510を含み得る。本開示は、特定の通信インターフェースを説明し、示すが、本開示は任意の好適な通信インターフェースを企図する。
【0066】
特定の実施形態では、バス512は、コンピュータシステム500の構成要素を互いに結合する、ハードウェア、ソフトウェア、またはその両方を含む。限定としてではなく一例として、バス512は、アクセラレーテッドグラフィックスポート(AGP)または他のグラフィックスバス、拡張業界標準アーキテクチャ(EISA)バス、フロントサイドバス(FSB)、HYPERTRANSPORT(HT)相互接続、業界標準アーキテクチャ(ISA)バス、INFINIBAND相互接続、ローピンカウント(LPC)バス、メモリバス、マイクロチャネルアーキテクチャ(MCA)バス、周辺構成要素相互接続(PCI)バス、PCI-Express(PCIe)バス、シリアルアドバンストテクノロジーアタッチメント(SATA)バス、ビデオエレクトロニクス規格協会ローカル(VLB)バス、または別の好適なバス、あるいはこれらのうちの2つまたはそれ以上の組合せを含み得る。バス512は、適切な場合、1つまたは複数のバス512を含み得る。本開示は、特定のバスを説明し、示すが、本開示は任意の好適なバスまたは相互接続を企図する。
【0067】
本明細書では、1つまたは複数のコンピュータ可読非一時的記憶媒体は、適切な場合、(たとえば、フィールドプログラマブルゲートアレイ(FPGA)または特定用途向けIC(ASIC)などの)1つまたは複数の半導体ベースまたは他の集積回路(IC)、ハードディスクドライブ(HDD)、ハイブリッドハードドライブ(HHD)、光ディスク、光ディスクドライブ(ODD)、光磁気ディスク、光磁気ドライブ、フロッピーディスケット、フロッピーディスクドライブ(FDD)、磁気テープ、ソリッドステートドライブ(SSD)、RAMドライブ、セキュアデジタルカードまたはドライブ、任意の他の好適なコンピュータ可読非一時的記憶媒体、あるいはこれらのうちの2つまたはそれ以上の任意の好適な組合せを含み得る。コンピュータ可読非一時的記憶媒体は、適切な場合、揮発性、不揮発性、または揮発性と不揮発性との組合せであり得る。
【0068】
本明細書では、「または」は、明確に別段に指示されていない限り、またはコンテキストによって別段に指示されていない限り、包括的であり、排他的ではない。したがって、本明細書では、「AまたはB」は、明確に別段に指示されていない限り、またはコンテキストによって別段に指示されていない限り、「A、B、またはその両方」を意味する。その上、「および」は、明確に別段に指示されていない限り、またはコンテキストによって別段に指示されていない限り、共同と個別の両方である。したがって、本明細書では、「AおよびB」は、明確に別段に指示されていない限り、またはコンテキストによって別段に指示されていない限り、「共同でまたは個別に、AおよびB」を意味する。
【0069】
本開示の範囲は、当業者が理解するであろう、本明細書で説明または示される例示的な実施形態に対するすべての変更、置換、変形、改変、および修正を包含する。本開示の範囲は、本明細書で説明または示される例示的な実施形態に限定されない。その上、本開示は、本明細書のそれぞれの実施形態を、特定の構成要素、要素、特徴、機能、動作、またはステップを含むものとして説明し、示すが、これらの実施形態のいずれも、当業者が理解するであろう、本明細書のどこかに説明または示される構成要素、要素、特徴、機能、動作、またはステップのうちのいずれかの任意の組合せまたは置換を含み得る。さらに、特定の機能を実施するように適応されるか、構成されるか、実施することが可能であるか、実施するように設定されるか、実施することが可能にされるか、実施するように動作可能であるか、または実施するように動作する、装置またはシステムあるいは装置またはシステムの構成要素に対する添付の特許請求の範囲における参照は、その装置、システム、または構成要素が、そのように適応されるか、構成されるか、可能であるか、設定されるか、可能にされるか、動作可能であるか、または動作する限り、その装置、システム、構成要素またはその特定の機能が、アクティブにされるか、オンにされるか、またはアンロックされるか否かにかかわらず、その装置、システム、構成要素を包含する。さらに、本開示は、特定の実施形態を、特定の利点を提供するものとして説明するかまたは示すが、特定の実施形態は、これらの利点のいずれをも提供しないか、いくつかを提供するか、またはすべてを提供し得る。