(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-05-10
(54)【発明の名称】深度情報を使用して実世界の物体をレンダリングするシステムおよび方法
(51)【国際特許分類】
H04N 13/239 20180101AFI20220427BHJP
G06T 19/00 20110101ALI20220427BHJP
【FI】
H04N13/239
G06T19/00 600
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2021533511
(86)(22)【出願日】2020-03-09
(85)【翻訳文提出日】2021-08-10
(86)【国際出願番号】 US2020021663
(87)【国際公開番号】W WO2020190553
(87)【国際公開日】2020-09-24
(32)【優先日】2020-01-28
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2019-03-18
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】515046968
【氏名又は名称】フェイスブック・テクノロジーズ・リミテッド・ライアビリティ・カンパニー
【氏名又は名称原語表記】FACEBOOK TECHNOLOGIES, LLC
(74)【代理人】
【識別番号】110002974
【氏名又は名称】特許業務法人World IP
(72)【発明者】
【氏名】アクソイ, ヴォルガ
(72)【発明者】
【氏名】ビーラー, ディーン
【テーマコード(参考)】
5B050
5C061
【Fターム(参考)】
5B050AA10
5B050BA09
5B050BA11
5B050CA08
5B050DA04
5B050EA09
5B050EA19
5B050EA27
5B050FA02
5C061AB04
5C061AB08
5C061AB12
5C061AB18
(57)【要約】
システムは、デバイスおよびグラフィックス処理装置(GPU)を含むことができる。デバイスは、第1のビューに対応する1つまたは複数のカメラから第1の画像を受信し、第2のビューに対応する1つまたは複数のカメラから第2の画像を受信するように構成することができる。GPUは、動き推定器を含み、第1の画像および第2の画像を受信するように構成することができる。動き推定器は、第1の画像のための第1の視差オフセット、および第2の画像のための第2の視差オフセットを決定するように構成することができる。デバイスは、第1の画像および第2の画像を使用して3D画像をレンダリングするために、第1の視差オフセットから導出された第1の画像のための第1の深度バッファ、および第2の視差オフセットから導出された第2の画像のための第2の深度バッファを生成するように構成することができる。
【選択図】
図1
【特許請求の範囲】
【請求項1】
デバイスにより、第1のビューに対応する1つまたは複数のカメラから第1の画像を受信し、第2のビューに対応する前記1つまたは複数のカメラから第2の画像を受信することと、
前記デバイスにより、前記第1の画像および前記第2の画像を動き推定器に提供することであって、前記動き推定器が、前記第1の画像のための第1の視差オフセット、および前記第2の画像のための第2の視差オフセットを決定する、前記第1の画像および前記第2の画像を動き推定器に提供することと、
前記デバイスにより、前記第1の画像および前記第2の画像を使用して3次元(3D)画像をレンダリングするために、前記第1の視差オフセットから導出された前記第1の画像のための第1の深度バッファ、および前記第2の視差オフセットから導出された前記第2の画像のための第2の深度バッファを生成することと
を含む、方法。
【請求項2】
前記デバイスにより、1つまたは複数のディスプレイに1つまたは複数の3D画像を表示するために、3Dレンダラへの画像入力として、前記第1の深度バッファ、前記第1の画像、前記第2の深度バッファ、および前記第2の画像を提供することをさらに含む、請求項1に記載の方法。
【請求項3】
前記3Dレンダラにより、第1のディスプレイによる提示のために前記第1の深度バッファを使用して前記第1の画像に対応する第1の表示画像を再投影し、第2のディスプレイによる提示のために前記第2の深度バッファを使用して前記第2の画像に対応する第2の表示画像を再投影することをさらに含む、請求項2に記載の方法。
【請求項4】
前記デバイスにより、少なくとも前記第1の画像の第1のタイムスタンプまたは前記第2の画像の第2のタイムスタンプに基づいて、前記第1の画像および前記第2の画像に対応するシーンの1つまたは複数の要素の1つまたは複数のポーズ履歴を決定することと、前記1つまたは複数の3D画像を生成するために前記3Dレンダラに前記1つまたは複数のポーズ履歴を提供することとをさらに含む、請求項2に記載の方法。
【請求項5】
前記デバイスにより、前記第1の画像または前記第2の画像のうちの1つを補正することをさらに含む、請求項1に記載の方法。
【請求項6】
前記第1の視差オフセットまたは前記第2の視差オフセットのうちの1つまたは複数をフィルタリングすることまたはスムージングすることのうちの1つをさらに含む、請求項1に記載の方法。
【請求項7】
前記デバイスにより、1つまたは複数のアーティファクトを取り除くために、前記動き推定器から出力された前記第1の視差オフセットまたは前記第2の視差オフセットのうちの1つを処理することをさらに含む、請求項1に記載の方法。
【請求項8】
前記動き推定器により、前記第1の画像を前記第2の画像と比較することによって前記第1の視差オフセットを決定し、前記第2の画像を前記第1の画像と比較することによって前記第2の視差オフセットを決定することをさらに含む、請求項1に記載の方法。
【請求項9】
第1のビューに対応する1つまたは複数のカメラから第1の画像を受信し、第2のビューに対応する前記1つまたは複数のカメラから第2の画像を受信するように構成されたデバイスと、
動き推定器を備え、前記第1の画像および前記第2の画像を受信するように構成されたグラフィックス処理装置と
を備える、システムであって、
前記動き推定器が、前記第1の画像のための第1の視差オフセット、および前記第2の画像のための第2の視差オフセットを決定するように構成され、
前記デバイスが、前記第1の画像および前記第2の画像を使用して3次元(3D)画像をレンダリングするために、前記第1の視差オフセットから導出された前記第1の画像のための第1の深度バッファ、および前記第2の視差オフセットから導出された前記第2の画像のための第2の深度バッファを生成するように構成される、
システム。
【請求項10】
前記3Dレンダラが、第1の表示画像および第2の表示画像を生成するために、前記第1の深度バッファを使用して前記第1の画像を再投影し、前記第2の深度バッファを使用して前記第2の画像を再投影するように構成される、請求項9に記載のシステム。
【請求項11】
前記グラフィックス処理装置が、少なくとも前記第1の画像の第1のタイムスタンプまたは前記第2の画像の第2のタイムスタンプに基づいて、前記第1の画像および前記第2の画像に対応するシーンの1つまたは複数の要素の1つまたは複数のポーズ履歴を決定し、第1の表示画像および第2の表示画像を生成するために前記3Dレンダラに前記1つまたは複数のポーズ履歴を提供するようにさらに構成される、請求項9に記載のシステム。
【請求項12】
前記グラフィックス処理装置が、前記第1の画像または前記第2の画像のうちの少なくとも1つを補正するようにさらに構成される、請求項9に記載のシステム。
【請求項13】
前記グラフィックス処理装置が、前記第1の視差オフセットまたは前記第2の視差オフセットのうちの少なくとも1つからアーティファクトを取り除くようにさらに構成される、請求項9に記載のシステム。
【請求項14】
前記動き推定器が、前記第1の画像を前記第2の画像と比較することによって前記第1の視差オフセットを決定し、前記第2の画像を前記第1の画像と比較することによって前記第2の視差オフセットを決定するようにさらに構成される、請求項9に記載のシステム。
【請求項15】
1つまたは複数のプロセッサによって実行されると、請求項1から8のいずれか一項に記載の方法を前記1つまたは複数のプロセッサに実行させるプロセッサ実行可能命令を備える、コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、それらの内容がすべての目的のために全体として参照により本明細書に組み込まれる、2019年3月18日に出願された米国特許出願第62/820,052号、および2020年1月28日に出願された米国特許出願第16/774,885号の優先権を主張する。
【背景技術】
【0002】
本開示は、一般に、拡張現実(AR)システムに関する。ARシステムは、3次元(3D)画像を含む様々な画像をユーザに提示するために使用することができる。たとえば、ARヘッドセットは、実世界環境のビューにオーバーレイされる方式でユーザに画像を提示するために使用することができる。説得力がある生きているようなAR画像をレンダリングするために、ARシステムは、画像の中の適切な深度において物体または特徴を提供することができる。
【発明の概要】
【0003】
本発明は、添付特許請求の範囲によるプロセッサ実行可能命令を含む、方法、システム、およびコンピュータ可読媒体を対象とする。本発明の一実施形態は方法に関する。方法は、デバイスにより、第1のビューに対応する1つまたは複数のカメラから第1の画像を受信し、第2のビューに対応する1つまたは複数のカメラから第2の画像を受信することを含むことができる。方法は、デバイスにより、第1の画像および第2の画像を動き推定器に提供することを含むことができ、動き推定器は、第1の画像のための第1の視差オフセット、および第2の画像のための第2の視差オフセットを決定する。方法は、デバイスにより、第1の画像および第2の画像を使用して3次元(3D)画像をレンダリングするために、第1の視差オフセットから導出された第1の画像のための第1の深度バッファ、および第2の視差オフセットから導出された第2の画像のための第2の深度バッファを生成することを含むことができる。
【0004】
本発明の別の態様では、方法は、3Dレンダラにより、第1のディスプレイによる提示のために第1の深度バッファを使用して第1の画像に対応する第1の表示画像を再投影し、第2のディスプレイによる提示のために第2の深度バッファを使用して第2の画像に対応する第2の表示画像を再投影することをさらに含む場合がある。
【0005】
本発明のさらに別の実施形態では、方法は、デバイスにより、第1の画像または第2の画像のうちの1つを補正することをさらに含む場合がある。
【0006】
本発明のさらなる実施形態では、方法は、デバイスにより、1つまたは複数のディスプレイに1つまたは複数の3D画像を表示するために、3Dレンダラへの画像入力として、第1の深度バッファ、第1の画像、第2の深度バッファ、および第2の画像を提供することをさらに含む場合がある。方法は、3Dレンダラにより、第1のディスプレイによる提示のために第1の深度バッファを使用して第1の画像に対応する第1の表示画像を再投影し、第2のディスプレイによる提示のために第2の深度バッファを使用して第2の画像に対応する第2の表示画像を再投影することをさらに含む場合がある。
【0007】
本発明のさらなる実施形態では、方法は、デバイスにより、1つまたは複数のディスプレイに1つまたは複数の3D画像を表示するために、3Dレンダラへの画像入力として、第1の深度バッファ、第1の画像、第2の深度バッファ、および第2の画像を提供することをさらに含む場合がある。方法は、デバイスにより、少なくとも第1の画像の第1のタイムスタンプまたは第2の画像の第2のタイムスタンプに基づいて、第1の画像および第2の画像に対応するシーンの1つまたは複数の要素の1つまたは複数のポーズ履歴を決定することと、1つまたは複数の3D画像を生成するために3Dレンダラに1つまたは複数のポーズ履歴を提供することとをさらに含む場合がある。
【0008】
本発明の別の実施形態では、方法は、デバイスにより、第1の画像または第2の画像のうちの1つを補正することをさらに含む場合がある。
【0009】
本発明のさらに別の実施形態では、方法は、デバイスにより、第1の画像または第2の画像のうちの1つを補正することをさらに含む場合がある。
【0010】
本発明のさらに別の実施形態では、方法は、第1の視差オフセットまたは第2の視差オフセットのうちの1つまたは複数をフィルタリングすることまたはスムージングすることのうちの1つをさらに含む場合がある。
【0011】
本発明のさらに別の実施形態では、方法は、デバイスにより、1つまたは複数のアーティファクトを取り除くために、動き推定器から出力された第1の視差オフセットまたは第2の視差オフセットのうちの1つを処理することをさらに含む場合がある。
【0012】
本発明のさらに別の実施形態では、方法は、動き推定器により、第1の画像を第2の画像と比較することによって第1の視差オフセットを決定し、第2の画像を第1の画像と比較することによって第2の視差オフセットを決定することをさらに含む場合がある。
【0013】
本発明の別の態様はシステムに関する。本発明の一実施形態では、システムは、デバイスおよびグラフィックス処理装置(GPU)を含むことができる。デバイスは、第1のビューに対応する1つまたは複数のカメラから第1の画像を受信し、第2のビューに対応する1つまたは複数のカメラから第2の画像を受信するように構成することができる。GPUは、動き推定器を含み、第1の画像および第2の画像を受信するように構成することができる。動き推定器は、第1の画像のための第1の視差オフセット、および第2の画像のための第2の視差オフセットを決定するように構成することができる。デバイスは、第1の画像および第2の画像を使用して3D画像をレンダリングするために、第1の視差オフセットから導出された第1の画像のための第1の深度バッファ、および第2の視差オフセットから導出された第2の画像のための第2の深度バッファを生成するように構成することができる。
【0014】
本発明の別の実施形態では、3Dレンダラは、第1の表示画像および第2の表示画像を生成するために、第1の深度バッファを使用して第1の画像を再投影し、第2の深度バッファを使用して第2の画像を再投影するように構成される場合がある。
【0015】
本発明のさらに別の実施形態では、グラフィックス処理装置は、少なくとも第1の画像の第1のタイムスタンプまたは第2の画像の第2のタイムスタンプに基づいて、第1の画像および第2の画像に対応するシーンの1つまたは複数の要素の1つまたは複数のポーズ履歴を決定し、第1の表示画像および第2の表示画像を生成するために3Dレンダラに1つまたは複数のポーズ履歴を提供するようにさらに構成される場合がある。
【0016】
本発明のさらに別の実施形態では、グラフィックス処理装置は、第1の画像または第2の画像のうちの少なくとも1つを補正するようにさらに構成される場合がある。
【0017】
本発明のさらに別の実施形態では、グラフィックス処理装置は、第1の視差オフセットまたは第2の視差オフセットのうちの少なくとも1つからアーティファクトを取り除くようにさらに構成される場合がある。
【0018】
本発明のさらなる実施形態では、動き推定器は、第1の画像を第2の画像と比較することによって第1の視差オフセットを決定し、第2の画像を第1の画像と比較することによって第2の視差オフセットを決定するようにさらに構成される場合がある。
【0019】
本発明の別の態様はコンピュータ可読媒体に関する。本発明の一実施形態では、コンピュータ可読媒体は、1つまたは複数のプロセッサによって実行されると、第1のビューに対応する1つまたは複数のカメラから第1の画像を受信し、第2のビューに対応する1つまたは複数のカメラから第2の画像を受信することと、第1の画像および第2の画像を動き推定器に提供することであって、動き推定器が、第1の画像のための第1の視差オフセット、および第2の画像のための第2の視差オフセットを決定する、第1の画像および第2の画像を動き推定器に提供することと、第1の画像および第2の画像を使用して3D画像をレンダリングするために、第1の視差オフセットから導出された第1の画像のための第1の深度バッファ、および第2の視差オフセットから導出された第2の画像のための第2の深度バッファを生成することとを、1つまたは複数のプロセッサに行わせるプロセッサ実行可能命令を含む。
【0020】
本発明の別の実施形態では、コンピュータ可読媒体は、第1のディスプレイによる提示のために第1の深度バッファを使用して第1の画像に対応する第1の表示画像を再投影し、第2のディスプレイによる提示のために第2の深度バッファを使用して第2の表示画像を再投影することを1つまたは複数のプロセッサに行わせる命令をさらに含む場合がある。
【0021】
本発明のさらに別の実施形態では、コンピュータ可読媒体は、第1の画像または第2の画像のうちの1つを補正することを1つまたは複数のプロセッサに行わせる命令をさらに含む場合がある。
【0022】
本発明のさらなる実施形態では、コンピュータ可読媒体は、動き推定器から出力された第1の視差オフセットまたは第2の視差オフセットから1つまたは複数のアーティファクトを取り除くことを1つまたは複数のプロセッサに行わせる命令をさらに含む場合がある。
【0023】
本発明の別の実施形態では、コンピュータ可読媒体は、少なくとも第1の画像の第1のタイムスタンプまたは第2の画像の第2のタイムスタンプに基づいて、第1の画像および第2の画像に対応するシーンの1つまたは複数の要素の1つまたは複数のポーズ履歴を決定することと、第1の表示画像および第2の表示画像を生成するために3Dレンダラに1つまたは複数のポーズ履歴を提供することとを1つまたは複数のプロセッサに行わせる命令をさらに含む場合がある。
【0024】
本発明の別の実施形態では、コンピュータ可読媒体は、第1の視差オフセットまたは第2の視差オフセットのうちの1つまたは複数をフィルタリングまたはスムージングすることを1つまたは複数のプロセッサに行わせる命令をさらに含む場合がある。
【0025】
本発明の別の態様は方法に関する。方法は、第1のカメラおよび第2のカメラから第1の画像を受信することを含む。第1のカメラは,第2のカメラとは異なる場所に配置される。方法はまた、第1の画像と第2の画像の比較から第1の視差オフセットを決定することと、第1の視差オフセットおよび第1の画像を使用して第1の深度バッファを提供することと、第2の画像と第1の画像の比較から第2の視差オフセットを決定することと、第2の視差オフセットおよび第2の画像を使用して第2の深度バッファを提供することとを含む。方法はまた、位置タイムワープ動作を提供するように構成された合成器内で、第1の画像および第1の深度バッファから第1の表示画像を生成し、第2の画像および第2の深度バッファから第2の表示画像を生成することを含む。
【0026】
これらおよび他の態様、実施形態、および実装形態は、以下で詳細に説明される。上記の情報および以下の発明を実施するための形態は、様々な態様および実装形態の説明のための例を含み、特許請求される態様および実装形態の本質および特性を理解するための概要またはフレームワークを提供する。図面は、様々な態様および実装形態の説明およびさらなる理解を提供し、本明細書の一部に組み込まれ、一部を構成する。
【0027】
添付の図面は縮尺通りに描かれているものではない。様々な図面における同様の参照番号および記号は同様の要素を示す。理解しやすいように、すべての図面においてすべての構成要素をラベル付けすることはできない。
【図面の簡単な説明】
【0028】
【
図1】本開示の一実装形態による、表示システムのブロック図である。
【
図2】本開示の一実装形態による、ヘッドマウントディスプレイ(HMD)システムの概略図である。
【
図3】本開示の一実装形態による、動き推定器を使用して画像から深度バッファを生成する方法のフロー図である。
【
図4】本開示の一実装形態による、コンピューティング環境のブロック図である。
【発明を実施するための形態】
【0029】
特定の実施形態を詳細に示す図に取り掛かる前に、本開示は、説明に記載されるか、または図に示された詳細または方法に限定されないことが理解されるべきである。本明細書で使用される用語は、説明目的のためだけであり、限定するものと見なされるべきでないことも理解されるべきである。
【0030】
ARシステムは、(頭部装着型ディスプレイ(HWD)と呼ばれる場合もある)HMDを使用して適切な深度においてユーザに画像を提示することができる。HMDは、シーン内の物体または特徴についての深度情報を決定し、決定された深度において(たとえば、深度情報に少なくとも部分的に応答して)それらの物体および特徴をレンダリングする。たとえば、HMDは、左目の画像および右目の画像を順次または同時に提示すること、ユーザが3D環境を知覚することを可能にすることなどにより、立体的に視ることができる画像を提示するために使用することができる。HMDまたはARシステムは、左目の画像および右目の画像などの、複数の視点からの画像を取り込む1つまたは複数のカメラを含むことができる。いくつかの実施形態では、HMDは、有利なことに、所望のベンチマークを下回る待ち時間とともに、サイズ、重み、および電力(SWAP)も維持しながら、十分な忠実度で取り込まれた画像を使用して実世界の物体に関する深度情報を生成する。いくつかの実施形態では、HMDは、有利なことに、グラフィックスプロセッサのビデオエンコーダを利用して、追加のハードウェアを必要とせずに深度情報またはステレオ対応を抽出する。
【0031】
本解決策の特定の態様によるシステムおよび方法は、ARシステムなどのためのHMDを装着しながら視られる実世界の物体についての奥行き感が改善された画像を生成するために使用することができる。たとえば、システムは、1つまたは複数のカメラによって取り込まれた第1のビューの第1の画像および第2のビューの第2の画像を、ビデオエンコーダ(たとえば、グラフィックス処理装置(GPU)のビデオエンコーダ)の動き推定器に提供することができる。動き推定器は、あたかも動き推定器が連続する画像間の動きベクトルを計算しているように、第1の画像と第2の画像との間の第1の視差オフセットおよび第2の視差オフセットを計算することができる。視差オフセットは、アーティファクトを取り除くために、処理、フィルタリング、およびスムージングすることができる。システムは、それぞれ、第1の視差オフセットおよび第2の視差オフセットに対応する第1の深度バッファおよび第2の深度バッファを生成し、次いで、それぞれの第1の深度バッファおよび第2の深度バッファを使用して第1の画像および第2の画像を再投影して、ユーザが3D画像を知覚することを可能にするためにユーザに提示することができる表示画像を生成することができる。システムは、画像のタイムスタンプを使用してポーズ履歴(たとえば、6自由度の変換)を計算することができる。システムは、(たとえば、補正およびトリミングの後の)カメラからの画像、生成された深度バッファ、ならびにポーズ履歴を含むレイヤを3Dレンダラまたは合成器に提供することができ、3Dレンダラまたは合成器は、レイヤ上で位置タイムワープを実行して、提供された深度バッファを使用して画像を再投影することができる。
【0032】
システムは、HMDを装着しながら視られる実世界の物体についてのより良い奥行き感を計算するために使用することができる。たとえば、システムは、HMD上の前向きカメラペアによって提供された画像を分析し、いくつかの実施形態におけるユーザの瞳孔間距離(IPD)を一致させるためにより正確な視差オフセットを有するように画像コンテンツを再投影することができる。システムは、少なくとも30Hzのフレームレートを維持することなどの、処理パイプライン全体を通して所望の性能特性を維持することができる。システムは、カメラの視野から、魚眼レンズの歪みなどの歪みに対処しながら、カメラから受信された画像を補正およびトリミングすることができる。
【0033】
次に
図1を参照すると、システム100は、複数の画像キャプチャデバイス104a…n、処理回路116、および1つまたは複数のディスプレイ148を含むことができる。システム100は、
図2を参照して記載されるHMDシステム200を使用して実装することができる。システム100は、
図4を参照して記載されるコンピューティング環境を使用して実装することができる。システム100は、仮想現実(VR)システムの特徴を取り込むことができ、特徴を実装するために使用することができる。処理回路116のうちの少なくともいくつかは、グラフィックス処理装置(GPU)を使用して実装することができる。処理回路116の機能は、複数の処理ユニットを使用して分散方式で実行することができる。
【0034】
処理回路116は、1つまたは複数の回路、プロセッサ、および/またはハードウェア構成要素を含む場合がある。処理回路116は、任意のロジック、機能、または命令を実施して、本明細書に記載された動作のいずれかを実行する場合がある。処理回路116は、回路、プロセッサ、またはハードウェア構成要素のいずれかによって実行可能な任意のタイプおよび形式の実行可能命令を含むことができる。実行可能命令は、アプリケーション、プログラム、サービス、タスク、スクリプト、ライブラリ、プロセス、および/またはファームウェアを含む任意のタイプの命令であり得る。プリプロセッサ120、ビデオエンコーダ124、動き推定器128、深度バッファ生成器132、画像レンダラ136、およびポーズ計算器140のいずれかは、それらそれぞれの機能および動作を実行する回路および実行可能命令の任意の組合せまたは構成であり得る。
【0035】
画像キャプチャデバイス104a…nは、ビデオカメラを含むカメラであり得る。画像キャプチャデバイス104a…nは、システム100のSWAPを削減するのに役立つことができる、比較的低い品質(たとえば、比較的低い鮮鋭度、解像度、またはダイナミックレンジ)の画像を生成するカメラであり得る。たとえば、画像キャプチャデバイス104a…nは、数百ピクセル×数百ピクセルの程度の解像度を有する画像を生成することができる。同時に、本明細書に記載されたシステム100によって実行されるプロセスは、深度特性を含む所望の品質特性を有する、ユーザに提示するための表示画像を生成するために使用することができる。
【0036】
(本明細書では画像キャプチャデバイス104と総称される)画像キャプチャデバイス104a…nは、任意のタイプの1つまたは複数のカメラを含むことができる。カメラは、可視光カメラ(たとえば、カラーもしくは白黒)、赤外線カメラ、またはそれらの組合せであり得る。画像キャプチャデバイス104a…nは、各々、1つまたは複数のカメラ104の(本明細書ではレンズ108と総称される)1つまたは複数のレンズ108a…jを含むことができる。いくつかの実施形態では、画像キャプチャデバイス104は、レンズ108ごとにカメラを含むことができる。いくつかの実施形態では、画像キャプチャデバイス104は、複数のレンズ108a…jを有する単一のカメラを含む。いくつかの実施形態では、画像キャプチャデバイス104は、各々が複数のレンズ108を有する複数のカメラを含むことができる。画像キャプチャデバイス104の1つまたは複数のカメラは、所定の解像度であるように、かつ/または所定の視野を有するように選択または設計することができる。いくつかの実施形態では、1つまたは複数のカメラは、拡張現実のためのHMDの視野などにおいて物体を追跡するための解像度および視野を有するように選択および/または設計される。1つまたは複数のカメラは、画像キャプチャデバイスによって取り込まれたシーンまたは環境内の物体を追跡すること、および本明細書に記載された深度バッファ生成技法を実行することなどの、複数の目的に使用される場合がある。これらのケースのいくつかでは、画像キャプチャデバイスの解像度および設計は、目標の追跡に適しており、深度バッファ生成にあまり適していないかまたはそうでない場合選択されない可能性があり、本解決策の深度バッファ生成技法は、物体の追跡に使用される低品質カメラを改善および克服する。いくつかの実施形態では、画像キャプチャデバイス10a…nは、頭部追跡動作のための画像を提供するように構成されたインサイドアウト型追跡カメラである。いくつかの実施形態では、頭部追跡動作のための画像は、深度バッファ生成にも使用される。
【0037】
画像キャプチャデバイス104およびレンズ108の1つまたは複数のカメラは、HMDのユーザまたは装着者の左目ビューおよびユーザまたは装着者の右目ビューに対応するように、HMD上に取り付けられか、統合されるか、組み込まれるか、または配置される場合がある。たとえば、HMDは、装着者の左目に対応するかまたは近いHMDの左側に前向きに取り付けられた第1のレンズを有する第1のカメラ、および装着者の右目に対応するかまたは近いHMDの右側に前向きに取り付けられた第2のレンズを有する第2のカメラを含む場合がある。左カメラおよび右カメラは、立体画像の取込みを提供するカメラの前向きペアを形成する場合がある。いくつかの実施形態では、HMDは、第1のカメラと第2のカメラの間で、HMDの上部を向き、第1のカメラ、第2のカメラ、および第3のカメラの間で三角形を形成する第3のカメラなどの、1つまたは複数の追加のカメラを有する場合がある。この第3のカメラは、本解決策の深度バッファ生成技法を実行する際の三角測量技法、ならびに物体追跡に使用される場合がある。
【0038】
システム100は、第1のレンズ108aを含む第1の画像キャプチャデバイス104a、第1のビューの第1の画像112aを取り込むように配置された第1の画像キャプチャデバイス104a、および第2のレンズ108bを含む第2の画像キャプチャデバイス104b、第2のビューの第2の画像112bを取り込むように配置された第2の画像キャプチャデバイス104bを含むことができる。第1のビューおよび第2のビューは、第1の画像112aおよび第2の画像112bから深度情報が抽出されることを可能にする、異なる視点に対応することができる。たとえば、第1のビューは左目ビューに対応する場合があり、第2のビューは右目ビューに対応する場合がある。システム100は、第3のレンズ108cを含む第3の画像キャプチャデバイス104c、第3のビューの第3の画像112cを取り込むように配置された第3の画像キャプチャデバイス104cを含むことができる。
図2を参照して記載されるように、第3のビューは、第1のレンズ108aと第2のレンズ108bとの間の軸から間隔を空けた上部ビューに対応することができ、第1のレンズ108aと第2のレンズ108bとの間の軸に実質的に平行なエッジ(たとえば、テーブルのエッジ)などの、第1の画像キャプチャデバイス104aおよび第2の画像キャプチャデバイス104bでは対処することが困難な場合がある深度情報をシステム100がより効果的に扱うことを可能にすることができる。
【0039】
画像キャプチャデバイス104a…nによって取り込まれるべき画像の光は、1つまたは複数のレンズ108a…jを介して受信することができる。画像キャプチャデバイス104a…nは、電荷結合素子(CCD)または相補型金属酸化膜半導体(CMOS)回路を含むが、それらに限定されないセンサ回路を含むことができ、それらは、1つまたは複数のレンズ108a…jを介して受信した光を検出し、受信した光に基づいて画像112a…kを生成することができる。たとえば、画像キャプチャデバイス104a…nは、センサ回路を使用して、第1のビューに対応する第1の画像112aおよび第2のビューに対応する第2の画像112bを生成することができる。1つまたは複数の画像キャプチャデバイス104a…nは、処理回路116に画像112a…kを提供することができる。1つまたは複数の画像キャプチャデバイス104a…nは、対応するタイムスタンプを有する画像112a…kを提供することができ、タイムスタンプは、深度情報を計算するために互いに比較されるべき、同じタイムスタンプを有する第1のビューおよび第2のビューを表す特定の第1の画像112aおよび第2の画像112bを識別するなどのために、画像112a…kに対して画像処理が実行されるときに画像112a…kの同期を容易にすることができる。
【0040】
処理回路116はプリプロセッサ120を含むことができる。プリプロセッサ120は、第1の画像112aおよび第2の画像112bを含む画像112a…kから視差オフセットが計算される前などの、さらなる画像処理が実行される前に、画像112a…kを修正することができる。プリプロセッサ120は、魚眼レンズの歪みなどの画像112a…kの中の歪みを取り除くために使用することができる。いくつかの実施形態では、処理回路116はグラフィックス処理装置(GPU)であり、GPUを使用してプリプロセッサ120を実行することができる。
【0041】
プリプロセッサ120は、1つまたは複数の画像キャプチャデバイス104a…nから受信された画像112a…kを補正することができる。たとえば、プリプロセッサ120は、平面補正、円筒補正、または極補正を実行することなどにより、各画像112a…kを共通像面に変換することができる。画像112a…kを補正することにより、プリプロセッサ120は、画像112a…k内の対応するポイントが同一の垂直座標を有するように、画像112a…kを変換することができる。プリプロセッサ120は、処理回路116のメモリ内に保持された各画像キャプチャデバイス104a…nの所定の位置および方位を検索し、所定の位置および方位に基づいて画像112a…kを補正することができる。画像112a…kを補正することにより、プリプロセッサ120は、(たとえば、動き推定器128の動作を参照して以下に記載されるように)画像112a…k間の視差オフセットの計算を容易にすることができる。
【0042】
プリプロセッサ120は画像112a…kをトリミングすることができる。たとえば、プリプロセッサ120は、トリミングする各画像112の部分を識別し、識別された部分を含まないトリミングされた画像112を出力する。プリプロセッサ120は、画像112a…kをトリミングして、魚眼レンズの歪みなどの歪みがより広まっている部分などの、画像112a…kの外側部分を取り除くことができる。プリプロセッサ120は、トリミングする画像112a…kのピクセル(たとえば、画像112a…kの周辺部分に対応するピクセル)を識別する所定のトリミング方式などの、処理回路116のメモリ内に保持されている所定のトリミング方式に基づいて、トリミングする各画像112の部分を識別することができる。所定のトリミング方式は、画像112a…kを生成するために使用された特定の画像キャプチャデバイス104a…nの動作から生じる、画像112a…kの予想される歪みに基づく場合がある。画像112a…kをトリミングすることにより、プリプロセッサ120は、深度情報が画像112a…kの残りの部分と比較して比較的大きい歪みを有する可能性がある画像112a…kの部分を取り除くことができる。
【0043】
処理回路116はビデオエンコーダ124を含むことができる。ビデオエンコーダ124は、プリプロセッサ120による前処理に応答して第1の画像112aおよび第2の画像112bを受信することになどにより、第1の画像112aおよび第2の画像112bを受信することができる。ビデオエンコーダ124は、受信した画像112a…kを符号化して、受け取った画像112a…kを所定のフォーマットに変換などすることができる。
【0044】
ビデオエンコーダ124は、受信した画像112を、解像度、フレームレート、およびコーデックなどの所望のフォーマットまたは仕様に変換することができる。ビデオエンコーダ124は、第1の画像112aまたは第2の画像112bのうちの1つに遅延を適用することなどにより、画像112に関連付けられたタイムスタンプを使用して、時間内に対応する第1の画像112aおよび第2の画像112bを同期させることができる。ビデオエンコーダ124は動き推定器128を含むことができる。動き推定器128は、受信した画像に基づいて動きベクトルを計算することができる。たとえば、動き推定器128は、拡張現実(AR)システムおよび仮想現実(VR)システムなどにおいて、画像フレーム間の動きベクトルを計算するために使用される動き推定器に基づいて実装することができる。動き推定器128はビデオエンコーダの一部として示されているが、動き推定器128は、動き推定器ハードウェアユニット、またはCPUもしくはGPUなどの処理回路上で実行される実行可能命令などの、別個の構成要素として実装することができる。
【0045】
動き推定器128は、視差オフセットとして動きベクトルを使用することができる。たとえば、動き推定器128は、第1の画像112aを比較するベースラインとして第2の画像112bを使用することなどにより、第1の画像112aを第2の画像112bと比較することによって第1の視差オフセットを計算することができる。動き推定器128は、第2の画像112bを比較するベースラインとして第1の画像112aを使用することなどにより、第2の画像112bを第1の画像112aと比較することによって第2の視差オフセットを計算することができる。動き推定器128は、第1の画像112aおよび第2の画像112bが同一のタイムスタンプを有すること(または、画像112a…kが画像キャプチャデバイス104a…nから提供されるフレームレートの程度のしきい値差などの、互いのしきい値時間差内のタイムスタンプを有すること)に基づく比較のために、第1の画像112aおよび第2の画像112bを選択することができる。いくつかの実施形態では、第1の画像は画像キャプチャデバイス104a…nの第1のカメラからであり、第2の画像は画像キャプチャデバイス104a…nの第2のカメラからである。第1の画像112aおよび第2の画像112bは、同時に、またはほぼ同時に取り込むことができ、いくつかの実施形態では、第1のカメラ104aは第1のビューポイントまたは場所を有し、第2のカメラ104bは第2のビューポイントまたは場所を有する。場所またはビューポイントにおける差は、いくつかの実施形態では既知の値である。
【0046】
第1および第2の視差オフセットは、深度情報を提供するために使用することができる、第1の画像に対応する第1のビューと第2の画像に対応する第2のビューとの間の視点における差を示すなどのために、ステレオ視差オフセットであり得る。たとえば、第1および第2の視差オフセットは、ユーザによって知覚されるべき3D画像のステレオビューまたは立体ビューに対応する第1および第2のビューに対応することができる。
【0047】
動き推定器128は、第1の画像112aおよび第2の画像112bの対応する要素を比較することにより、第1の視差オフセットおよび第2の視差オフセットを計算することができる。画像112a…kの要素は、個別のピクセル、ピクセルのグループ、または物体などのピクセルのグループによって表される特徴を含むことができる。たとえば、動き推定器128は、特徴認識アルゴリズム(たとえば、物体認識アルゴリズム、エッジ検出、コーナー検出など)を実行して、1つまたは複数のピクセルによって表される特徴を識別し、第1の画像112a内で特徴を表す1つまたは複数の第1のピクセルを、第2の画像112b内で特徴を表す1つまたは複数の第2のピクセルと比較することにより、第1の視差オフセットを計算することができる。ピクセルは、シーン内で実世界の物体、構造、身体部分、コンピュータ機器などを表すことができる。画像の各々の中の対応する特徴は、いくつかの実施形態において類似するサイズ、形状、グレースケール強度、および色に基づいて決定することができる。動き推定器128は、視差オフセットが計算されたピクセルに視差オフセットを割り当てることができる。
【0048】
動き推定器128は、第1の視差オフセットを生成して、第1の画像112aおよび第2の画像112bのピクセルの配置において表される1つまたは複数の次元におけるピクセルの差を示すことができる。たとえば、第1の画像112aおよび第2の画像112bがx-y座標系に配置され、第1の画像112aの第1のピクセルが[3,6]の第1の座標を有し、第1のピクセルに対応する第2の画像112bの第2のピクセルが[4,7]の第2の座標を有する場合、動き推定器128は、第1の座標から第2の座標を減算することなどにより、ベクトル[-1,-1]として第1の視差オフセットを生成することができる。動き推定器128は、第2の座標から第1の座標を減算することなどにより、ベクトル[1,1]として第2の視差オフセットを生成することができる。視差オフセットは、絶対値(たとえば、要素、位置、および/またはピクセル間の絶対差)として決定することができる。動き推定器128は、第1の視差オフセットを生成して第1のピクセルから対応する第2のピクセルまでの角度および距離を示すことができ、第2の視差オフセットを生成して第2のピクセルから対応する第1のピクセルまでの角度および距離を示すことができる。
【0049】
画像112a、112bの要素が第1の画像112aの複数の第1のピクセルおよび第2の画像112bの複数の第2のピクセルを含む場合、動き推定器128は、各第1のピクセルを各対応する第2のピクセルと比較すること、または1つもしくは複数の代表する第1のピクセルを1つもしくは複数の代表する第2のピクセルと比較することに対応する1つまたは複数のベクトル(または角度および距離の値)を含むように、第1の視差オフセットを生成することができる。動き推定器128は、ピクセルの重心を計算すること、コーナーピクセルを識別すること、またはエッジピクセルを識別することを含むがそれらに限定されない、様々な機能を実行することにより、代表する第1のピクセルおよび代表する第2のピクセルを識別することができる。
【0050】
ビデオエンコーダ124は、視差オフセットからアーティファクトを取り除くことができる。たとえば、ビデオエンコーダ124は、空間フィルタなどの様々なフィルタ、またはスムージングアルゴリズムを実行して、望ましくないアーティファクトを取り除くことができる。
【0051】
処理回路116は深度バッファ生成器132を含むことができる。深度バッファ生成器132は、ビデオエンコーダ124から視差オフセットを受信し、視差オフセットに基づいて画像ごとに深度バッファ(たとえば、深度マップ)を生成することができる。たとえば、深度バッファ生成器132は、第1の画像112aのための第1の視差オフセットに基づいて第1の深度バッファを生成し、第2の画像112bのための第2の視差オフセットに基づいて第2の深度バッファを生成することができる。深度バッファ生成器132は、比較的少ない数のピクセル(たとえば、数百ピクセル×数百ピクセルの程度であり得る画像112a…kの画像サイズに対して80ピクセル×60ピクセル)を有するように深度バッファを生成することができる。
【0052】
深度バッファ生成器132は、画像112a…kを取り込むために使用される画像キャプチャデバイス104a…nに関する情報および視差オフセットに基づいて、深度バッファを生成することができる。たとえば、深度バッファ生成器132は、第1の視差オフセット、第1の画像112aが取り込まれた第1のレンズ108aと第2の画像112bが取り込まれた第2のレンズ108bとの間のベースライン距離、および第1のレンズ108aの焦点距離に基づいて深度値を計算することにより、第1の深度バッファを生成することができる。深度バッファ生成器132は、第1の画像112aの少なくとも1つの対応するピクセルに深度値を割り当てることによって第1の深度バッファを生成し、第2の画像112bの少なくとも1つの対応するピクセルに深度値を割り当てることによって第2の深度バッファを生成することができる。たとえば、深度バッファ生成器132は、第1の画像112aのピクセルに対応するピクセルの行列として第1の深度バッファを生成することができ、各第1の深度バッファピクセルは割り当てられた深度値を有する。深度バッファ生成器132は、画像112a…kよりも小さい解像度を有するように深度バッファを生成することができる。
【0053】
処理回路116はポーズ計算器140を含むことができる。ポーズ計算器140は、処理回路116を介して処理、管理、または貯蔵されたポーズの履歴から、1つまたは複数のポーズを識別、決定、または計算することができる。ポーズは、画像キャプチャデバイス104によって取り込まれたシーンまたはビューを電子的に表す任意のタイプおよび形式のデータであり得る。ポーズは、少なくとも装着者のHMDの空間内の位置または方位に基づいて、HMDの1つまたは複数のカメラを介して視ることができる物体、シーン、または環境のビューを識別する場合がある。ポーズのためのデータは、時間の現在のインスタンスにおけるHMDからのビューの6自由度(6Dof)視点を含むか、それから識別することができる。ポーズのためのデータは、少なくともHMD装着者の視点、位置、方位、および時間に基づいて、シーン、ビュー、または環境内の任意の1つまたは複数の物体をレンダリングするための画像データを含む場合がある。ポーズは、HMDの位置および方位に基づいて、時間のインスタンスにおけるシーン、ビュー、または環境の1つまたは複数の物体の移動および方位を表す6Dof変換を含む場合がある。処理回路116は、たとえばメモリまたはストレージ内のタイムスタンプを使用して、時間に基づくポーズの履歴を貯蔵することができる。
【0054】
ポーズの履歴からの画像データは、画像キャプチャデバイス104によって取り込まれた画像112に基づいて表示画像をレンダリングするための画像レンダラ136によって使用することができる。ポーズ計算器140は、1つもしくは複数の物体、シーン、または環境に対するHMDの位置および方位に基づいて、6Dof視点から画像データを提供することなどにより、画像キャプチャデバイス104によって取り込まれ、処理回路116に取得、受信、または提供された任意の画像のタイムスタンプを使用して、3Dレンダリングプロセスに有用な任意の1つまたは複数のポーズ履歴を識別することができる。ポーズ計算器140は、取り込まれた画像および/またはポーズのタイムスタンプ、ビューまたはシーンの中のポーズおよび/または物体に対するHMDの位置および方位、ならびに任意の関連付けられた画像データの品質および/または解像度のうちの1つまたは複数に基づいて、1つまたは複数のポーズを選択する場合がある。ポーズ計算器140は、ディスプレイ148を介して画像レンダラ136による表示のために画像キャプチャデバイス104によって取り込まれた画像に関係する任意の画像データなどの、データの部分または6Dof表現へのデータの変換を含む、以前取り込まれた任意の画像データから任意の1つまたは複数のポーズを算出、生成、または計算する場合がある。
【0055】
処理回路116は画像レンダラ136を含むことができる。画像レンダラ136は3D画像レンダラであり得る。画像レンダラ136は、画像関連入力データを使用して、HMDなどを介して1つまたは複数の表示デバイスに表示または提示するために、表示画像または提示画像を処理、生成、およびレンダリングする場合がある。画像レンダラ136は、ディスプレイ148への表示用に、または3D方式でシーンもしくはビューを表すために、シーンまたはビューの2D画像を生成または作成することができる。レンダリングされるべき表示データまたは提示データは、シーンまたはビュー内の3D物体の幾何モデルを含むことができる。画像レンダラ136は、画像キャプチャデバイス104によって取り込まれた画像112のための3D表示データなどの、所望または所定の3D画像を提供するためにレンダリングされるべき表示データまたは画像データのピクセル値を決定、算出、または計算する場合がある。画像レンダラ136は、画像(たとえば、プリプロセッサ120からの前処理された画像)および深度バッファ生成器132からの深度バッファを受信し、画像および深度バッファを使用して表示画像を生成することができる。画像レンダラ136は、画像および深度バッファならびにポーズ計算器140から算出されたポーズを使用して、ディスプレイ148を介して提示または表示されるべき表示画像を生成することができる。
【0056】
画像レンダラ136は、時間パラメータおよび/または空間パラメータに基づいて、1つまたは複数のディスプレイに表示データのフレームをレンダリングすることができる。画像レンダラ136は、画像キャプチャデバイス104によって画像が取り込まれた時間などに対応する時間内に順次画像データのフレームをレンダリングすることができる。画像レンダラ136は、HMDの位置および方位などの、画像キャプチャデバイス104に対する位置および/または方位の変化に基づいて、表示データのフレームをレンダリングすることができる。画像レンダラ136は、左目ビューに続いて右目ビューを表示すること、またはその逆などの、左目ビューおよび右目ビューに基づいて、画像データのフレームをレンダリングすることができる。
【0057】
画像レンダラ136は、再投影技法またはフレームレートスムージング技法を使用して、画像処理パイプラインから生成された場合に所望の品質または品質に対応する表示データを生成する間の計算(CPU/GPU)処理の時間または要件を削減することができる。再投影は、ディスプレイ148に送る前にレンダリングされるべき表示データを修正して、画像データが取り込まれた後に発生した頭部またはHMDの移動を訂正または調整することができる技法である。表示データのこの修正は、ワーピングと呼ばれる場合がある。再投影は、非同期タイムワープと呼ばれる、HMDまたはHMDの装着者のビューの中の位置移動を訂正または調整することができる。再投影は、位置タイムワープ(PSW)と呼ばれる、HMDまたはHMDの装着者のビューの中の位置移動および回転移動を訂正または調整することができる。再投影において、画像レンダラ136は、前処理された画像データ、深度バッファ、およびポーズなどの入力のいずれかから推定して、画像データを取り込むインスタンスまたは時間の後、かつディスプレイ148に表示データをレンダリングする前に、HMD内で発生する位置移動および/または回転移動を把握する場合がある。
【0058】
画像レンダラ136は、画像112a…k(たとえば、プリプロセッサ120からの前処理された画像112a…k)および深度バッファ生成器132からの深度バッファを受け取ることができる。たとえば、画像レンダラ136は、画像112a…k、対応する深度バッファ、および対応するポーズ履歴を入力レイヤとして受け取ることができる。画像レンダラ136は、画像および深度バッファ(およびポーズ履歴)を使用して表示画像を生成することができる。たとえば、画像レンダラ136は、第1の画像112aおよび第1の深度バッファを使用して第1の表示画像を生成し、第2の画像112bおよび第2の深度バッファを使用して第2の表示画像を生成することができる。画像レンダラ136は、画像合成器を使用して実装することができる。
【0059】
画像レンダラ136は、対応する深度バッファを使用して画像112a…kを再投影することにより、表示画像を生成することができる。たとえば、画像レンダラ136は、正しい画像空間または表示画像が表示されるときにHMDのユーザが知覚することが予想される画像空間の中に画像112a…kを位置付けるように、画像112a…kを再投影することができる。画像レンダラ136は、(たとえば、画像112a…kおよび深度バッファを使用して)3次元空間からの情報を2次元空間(たとえば、表示画像)にマッピングする、1つまたは複数の画像キャプチャデバイス104に対応するカメラ行列を使用して、画像112a…kを再投影することができる。画像レンダラ136は、焦点距離などの、1つまたは複数の画像キャプチャデバイス104の特性に基づいて、カメラ行列を決定することができる。いくつかの実施形態では、画像レンダラ136は、HMDに関する動きデータを使用して、画像112a…kの視点と比較して表示画像の対応する視点を識別することを含む、3次元空間から2次元空間に深度バッファとともに画像112a…kを投影することにより、画像112a…kを再投影する。画像レンダラ136は、非同期再投影アルゴリズムなどの様々なアルゴリズムを使用して画像112a…kを再投影することができ、非同期再投影アルゴリズムは、頭部の回転追跡、カメラ移動、および頭部移動などの情報を使用して、表示画像をどのように再投影するかを決定することができる。
【0060】
画像レンダラ136は、位置タイムワープ(PTW)アルゴリズムを実行することにより、画像112a…kを再投影することができる。たとえば、画像レンダラ136は、第1の画像112aの第1のピクセルを識別し、第1の深度バッファの対応する第1の深度値を識別し、第1の表示画像内で第1の画像112aの第1のピクセルの情報を提示するために使用される第1の表示ピクセルを調整することができる。たとえば、画像レンダラ136は、第1の深度値に基づいて、第1のピクセルとは異なる場所(たとえば、異なるピクセル座標)に第1の表示ピクセルを配置することができる。画像レンダラ136は、画像112a…k、対応する深度バッファ、および対応するポーズ履歴を含むレイヤに対してPTWアルゴリズムを実行することができる。
【0061】
画像レンダラ136は、画像112a…kを取り込んだ画像キャプチャデバイス104a…nの移動に関する動きデータを使用して、表示画像を生成することができる。たとえば、画像キャプチャデバイス104a…nは、(たとえば、
図2のHMDシステム200を参照して記載されるように)画像キャプチャデバイス104a…nを含むHMDを装着するユーザの頭部の移動に起因して、位置または方位のうちの少なくとも1つで変化する場合がある。処理回路116は、位置センサ(たとえば、
図2を参照して記載される位置センサ220)から動きデータを受信することができる。画像レンダラ136は、動きデータを使用して、画像112a…kが取り込まれた第1の時点と表示画像が表示される第2の時点との間の位置または方位のうちの少なくとも1つの変化を計算し、計算された変化を使用して表示画像を生成することができる。画像レンダラ136は、動きデータを使用して、画像112a…kに対して表示画像を内挿および/または外挿することができる。
【0062】
画像レンダラは処理回路116の一部として示されているが、画像レンダラは、たとえば、HMD内の表示デバイスなどの、別個のデバイスまたは構成要素の他の処理回路の一部として形成される場合がある。
【0063】
プリプロセッサ120、ビデオエンコーダ124、または画像レンダラ136のいずれかは、画像キャプチャからのデータ、前処理された画像、および/またはポーズを利用して、深度バッファ、前処理された画像、またはレンダリングされるべき表示データを、画像の改善された詳細、品質、または解像度に、訂正、調整、または修正することができる。たとえば、画像キャプチャデバイス104および処理回路116は、時間とともに異なる解像度および品質の画像を取得および処理し、そのような画像からのデータを使用して現在処理されている画像について詳細を埋めることができる。たとえば、解像度および品質は、利用可能な処理能力または100万命令/秒(MIPS)の量に従って調整することができる。
【0064】
ビデオエンコーダ124、動き推定器128、深度バッファ生成器132、および画像レンダラ136などの処理回路116の構成要素は、第1の画像112aおよび第2の画像112bを別々に処理することができる。たとえば、動き推定器128に続いて、第1の画像112aの第1の視差オフセットを計算するためのベースラインとして第2の画像112bを使用し、第2の画像112bの第2の視差オフセットを計算するためのベースラインとして第1の画像112aを使用した後に、処理回路116は、第1および第2の深度バッファならびに第1および第2の表示画像などの、ダウンストリームパラメータおよびデータオブジェクトを別個に生成することができる。これにより、処理回路116が深度バッファおよび他のパラメータを関連付けるかまたは癒合することを回避することができるので、ディスオクルージョンまたは他の要因に起因して、動きベクトルおよび深度バッファが対称でない(たとえば、第1の視差オフセットが、対応する要素間の距離に起因して第2の視差オフセットがシフトした第2の視差オフセットのバージョンと等価でなく、視差オフセットが計算された反対方向に起因して逆の符号を有する)状況を処理回路116が扱うことを可能にすることができる。第1の画像112aおよび第2の画像112bを別々に処理することにより、情報は第1のビュー(たとえば、第1の目)の画像空間から第2のビュー(たとえば、第2の目)の画像空間に、またはその逆に再投影または再ワープされる必要がない場合があるので、処理回路116は処理サイクルを削減することができる。
【0065】
システム100は1つまたは複数のディスプレイ148を含むことができる。1つまたは複数のディスプレイ148は、任意のタイプおよび形態の電子ビジュアルディスプレイであり得る。ディスプレイは、所定の解像度およびリフレッシュレートおよびサイズを有することができるか、またはそれらで選択される場合がある。1つまたは複数のディスプレイは、LCD、LED、ELED、またはOLEDベースのディスプレイなどの任意のタイプの技術のディスプレイであり得る。1つまたは複数のディスプレイのフォームファクタは、ディスプレイが眼鏡またはゴーグルのフレーム内のレンズである眼鏡またはゴーグルとして、HMD内で適合するようなフォームファクタであり得る。ディスプレイ148は、処理回路116または画像レンダラ136または画像キャプチャデバイス104a…nのリフレッシュレートまたはフレームレートと同じか、または異なるリフレッシュレートを有する場合がある。
【0066】
次に
図2を参照すると、HMDシステム200は、HMD本体202、左画像キャプチャデバイス104a、右画像キャプチャデバイス104b、およびディスプレイ148を含むことができる。HMD本体202は、眼鏡またはヘッドセットなどの様々なフォームファクタを有することができる。画像キャプチャデバイス104a、104bは、HMD本体202に取り付けるか、またはその中に統合することができる。左画像キャプチャデバイス104aは、第1のビュー(たとえば、左目ビュー)に対応する第1の画像を取り込むことができ、右画像キャプチャデバイス104bは、第2のビュー(たとえば、右目ビュー)に対応する画像を取り込むことができる。
【0067】
HMDシステム200は上部画像キャプチャデバイス104cを含むことができる。上部画像キャプチャデバイス104cは、第1のビューまたは第2のビューとは異なる第3のビューに対応する画像を取り込むことができる。たとえば、上部画像キャプチャデバイス104cは、左画像キャプチャデバイス104aと右画像キャプチャデバイス104bとの間で、左画像キャプチャデバイス104aと右画像キャプチャデバイス104bとの間のベースラインの上に位置付けることができる。これにより、上部画像キャプチャデバイス104cが、左および右の画像キャプチャデバイス104a、104bによって取り込まれた画像から抽出されるようにはすぐに利用できない可能性がある深度情報を有する画像を取り込むことを可能にすることができる。たとえば、エッジ(たとえば、テーブルのエッジ)が左画像キャプチャデバイス104aと右画像キャプチャデバイス104bとの間のベースラインに平行である、左および右の画像キャプチャデバイス104a、104bによって取り込まれた画像から深度情報が効果的に抽出されることが困難な場合がある。ベースラインから間隔を空けられた上部画像キャプチャデバイス104cは、左および右の画像キャプチャデバイス104a、104bとは異なる視点を有する第3の画像を取り込み、したがって異なる深度情報が第3の画像から抽出されることを可能にすることができる。
【0068】
HMDシステム200は処理回路116を含むことができ、処理回路116は、画像キャプチャデバイス104a、104b、および104cから画像を受信することと、受信された画像を使用して3D画像をレンダリングするための深度バッファを生成するために受信された画像を処理することとを含む、
図1を参照して記載された機能の少なくともいくつかを実行することができる。
【0069】
HMDシステム200は通信回路204を含むことができる。通信回路204は、クライアントデバイス208またはサーバ212のうちの少なくとも1つに電子通信信号を送信し、それらから電子通信信号を受信するために使用することができる。通信回路204は、様々なシステム、デバイス、またはネットワークとのデータ通信を行うための有線または無線のインターフェース(たとえば、ジャック、アンテナ、送信機、受信機、トランシーバ、ワイヤ端子)を含むことができる。たとえば、通信回路204は、イーサネットベースの通信ネットワークを介してデータを送受信するためのイーサネットカードおよびポートを含むことができる。通信回路204は、ローカルエリアネットワーク(たとえば、建物LAN)、ワイドエリアネットワーク(たとえば、インターネット、セルラーネットワーク)を介して通信し、かつ/または直接通信(たとえば、NFC、Bluetooth)を行うことができる。通信回路204は、有線通信および/または無線通信を行うことができる。たとえば、通信回路204は、1つまたは複数の無線トランシーバ(たとえば、Wi-Fiトランシーバ、Bluetoothトランシーバ、NFCトランシーバ、セルラートランシーバ)を含むことができる。たとえば、通信回路204は、クライアントデバイス208またはサーバ212のうちの少なくとも1つと有線接続または無線接続を確立することができる。通信回路204は、クライアントデバイス208とUSB接続を確立することができる。
【0070】
HMDシステム200は、様々なアーキテクチャを使用して展開することができる。いくつかの実施形態では、HMD(たとえば、HMD本体202およびHMD本体202に取り付けられた構成要素)は、処理回路116を備え、自己完結型ポータブルユニットである。いくつかの実施形態では、HMDは、ステージングデバイス、携帯電話、またはウェアラブルコンピューティングデバイスの形態などの、処理回路またはその部分を有する任意のタイプのポータブルもしくはモバイルコンピューティングデバイスまたはコンパニオンデバイスと協調または連携して動作する処理回路116の部分を有する。いくつかの実施形態では、HMDは、デスクトップコンピューティングデバイスの処理回路またはその部分と協調または連携して動作する処理回路116の部分を有する。いくつかの実施形態では、HMDは、データセンタまたはクラウドコンピューティング環境内で離れて展開される場合がある、サーバコンピューティングデバイスの処理回路またはその部分と協調または連携して動作する処理回路の部分を有する。上記の実施形態のいずれでも、HMDまたはHMDと連携して動作する任意のコンピューティングデバイスは、本明細書に記載された機能および動作のいずれかを実行する際に1つまたは複数のサーバと通信する場合がある。
【0071】
クライアントデバイス208は、モバイルもしくはポータブルデバイス(電話、タブブレット、ラップトップなど)またはデスクトップもしくはパーソナルコンピューティング(PC)デバイスなどの任意のフォームファクタの、任意のタイプおよび形態の汎用または専のためのコンピューティングデバイスであり得る。いくつかの実施形態では、クライアントデバイスは、処理回路またはその部分を有することができるステージングデバイスの形態などの専用デバイスであり得る。専用デバイスは、任意のタイプおよび形態のアクセサリ取付け具を介して衣服または身体にクライアントデバイス208を取り付けることなどにより、HMDを装着している間にユーザによって携行されるように設計される場合がある。クライアントデバイス208は、
図1および
図3とともに記載された画像およびレンダリング処理パイプラインの任意の部分を実行するために使用される場合がある。HMDは、画像キャプチャおよびディスプレイ148へのレンダリングなどの画像およびレンダリング処理パイプラインのいくつかまたは他の部分を実行する場合がある。HMDは、クライアントデバイス108とデータを送受信して、HMDの計算能力およびリソースよりも高い仕様を有する場合があるクライアントデバイス108の計算能力およびリソースを活用することができる。
【0072】
サーバ212は、1つまたは複数のクライアントデバイス208またはクライアントとして作動する他のデバイスに、アプリケーション、機能、またはサービスを提供する任意のタイプおよび形態のコンピューティングデバイスであり得る。いくつかの実施形態では、サーバ212はクライアントデバイス208であり得る。サーバ212は、1つまたは複数のネットワークを介してアクセス可能なデータセンタまたはクラウドコンピューティング環境内に展開することができる。HMDおよび/またはクライアントデバイス208は、サーバ212の計算能力およびリソースを使用および活用することができる。HMDおよび/またはクライアントデバイス208は、
図1および
図3とともに記載された画像およびレンダリング処理パイプラインの任意の部分を実装することができる。サーバ212は、
図1および
図3とともに記載された画像およびレンダリング処理パイプラインの任意の部分を実装し、場合によっては、クライアントデバイス208またはHMDによって実行されない画像およびレンダリング処理パイプラインの任意の部分を実装することができる。サーバ212は、HMDおよび/またはクライアントデバイス208上のアプリケーション、ソフトウェア、実行可能命令、および/またはデータに対する任意の更新で、HMDおよび/またはクライアントデバイス208を更新するために使用される場合がある。
【0073】
システム200は位置センサ220を含むことができる。位置センサ220は、本体202の位置または方位のうちの少なくとも1つを出力することができる。画像キャプチャデバイス104a、104b、104cは、本体202に(たとえば、位置センサ220に対して所定の場所に)固定することができるので、位置センサ220は、各画像キャプチャデバイス104a、104b、104cの位置または方位のうちの少なくとも1つを出力することができる。位置センサ220は、慣性測定装置(IMU)、加速度計、ジャイロスコープ、または磁力計(たとえば、磁気コンパス)のうちの少なくとも1つを含むことができる。
【0074】
次に
図3を参照すると、方法300は、以下のステップのうちの1つまたは複数を含むことができる。方法300は、1つまたは複数の画像キャプチャデバイスによって画像を取り込むこと(305)を含むことができる。方法は、画像を前処理すること(310)を含むことができる。方法300は、画像のための視差オフセットを決定すること(315)を含むことができる。方法300は、画像からアーティファクトを取り除くこと(320)を含むことができる。方法は、画像ごとに深度バッファを生成すること(325)を含むことができる。方法は、ポーズ履歴を計算すること(330)を含むことができる。方法は、表示画像をレンダリングすること(335)を含むことができる。方法300は、システム100、処理回路116、およびシステム200を含む、本明細書に記載された様々なデバイスおよびシステムを使用して実行することができる。方法300は、画像ごとに視差オフセット(たとえば、動きベクトル)および深度バッファなどのパラメータを別々または別個に決定するために実行することができ、それにより、ディスオクルージョンからもたらされる画像エラーを回避することができ、処理要件を削減することができる。
【0075】
305において、1つまたは複数の画像キャプチャデバイスによって画像が取り込まれる。画像は、センサにおいてレンズを介して光を受信すること、および、ピクセルのデータ構造としてレンズの視野を介して受信した光を表す画像を生成することなどにより、センサを使用して受信した光に基づいて画像を生成することによって取り込むことができる。画像は連続して取り込むことができる。画像は所定のフレームレートで取り込むことができる。第1の画像は第1のフレームレートで取り込むことができ、第2の画像は、第1のフレームレートとは異なる場合がある第2のフレームレートで取り込むことができる。1つまたは複数のカメラは、第1のビューに対応することができる第1の画像、および第2のビューに対応する場合がある第2の画像を取り込むことができる。画像はビデオ画像であり得る。画像は様々なフレームレートで取り込むことができる。1つまたは複数のカメラは、画像センサなどを使用して画像を生成するためにそれを通して光が受信されるレンズを含むことができる。1つまたは複数のカメラは、HMDのユーザまたは装着者の左目ビューおよびユーザまたは装着者の右目ビューに対応するように、HMD上に取り付けられるか、統合されるか、組み込まれるか、または配置される場合がある。たとえば、HMDは、装着者の左目に対応するかまたは近いHMDの左側に前向きに取り付けられた第1のレンズを有する第1のカメラ、および装着者の右目に対応するかまたは近いHMDの右側に前向きに取り付けられた第2のレンズを有する第2のカメラを含む場合がある。左カメラおよび右カメラは、立体画像の取込みを実現するカメラの前向きペアを形成する場合がある。いくつかの実施形態では、HMDは、第1のカメラと第2のカメラの間で、HMDの上部を向き、第1のカメラ、第2のカメラ、および第3のカメラの間で三角形を形成する第3のカメラなどの、1つまたは複数の追加のカメラを有する場合がある。この第3のカメラは、本解決策の深度バッファ生成技法を実行する際の三角測量技法、ならびに物体追跡に使用される場合がある。カメラは、対応するタイムスタンプを有する画像を提供することができ、タイムスタンプは、深度情報を計算するために互いに比較されるべき、同じタイムスタンプを有する第1のビューおよび第2のビューを表す特定の第1の画像および第2の画像を識別などするために、画像に対して画像処理が実行されるときに画像の同期を容易にすることができる。
【0076】
310において、様々な処理アルゴリズムに対して画像を準備するために画像が前処理される場合がある。魚眼レンズの歪みなどの画像内の歪みは取り除くことができる。たとえば、第1の画像および第2の画像は、第1の画像および第2の画像を共通像面に変換することなどによって補正することができる。
【0077】
第1の画像および第2の画像はトリミングすることができる。トリミングする各画像の部分を識別することができ、識別された部分を含まないトリミングされた画像を出力することができる。画像は、魚眼レンズの歪みなどの歪みがより広まっている部分などの、画像の外側部分を取り除くためにトリミングすることができる。トリミングする各画像の部分は、トリミングする画像のピクセル(たとえば、画像の周辺部分に対応するピクセル)を識別する所定のトリミング方式に基づいて識別することができる。所定のトリミング方式は、画像を生成するために使用された特定の画像キャプチャデバイスの動作から生じる画像の予想される歪みに基づく場合がある。
【0078】
315において、画像のために視差オフセットを決定することができる。視差オフセットは、GPUを使用して実行される場合があるビデオエンコーダの動き推定器を使用して決定することができる。たとえば、第1の視差オフセットは第1の画像のために決定することができ、第2の視差オフセットは第2の画像のために決定することができる。第1の視差オフセットは、ベースラインとして第2の画像を使用して、第1の画像を第2の画像と比較することによって計算することができる。第2の視差オフセットは、ベースラインとして第1の画像を使用して、第2の画像を第1の画像と比較することによって計算することができる。第1および第2の視差オフセットは、深度情報を提供するために使用することができる第1の画像に対応する第1のビューと第2の画像に対応する第2のビューとの間の視点における差を示すなどのために、ステレオ視差オフセットであり得る。たとえば、第1および第2の視差オフセットは、ユーザによって知覚されるべき3D画像のステレオビューまたは立体ビューに対応する第1および第2のビューに対応することができる。第1の視差オフセットおよび第2の視差オフセットは、第1の画像および第2の画像の対応する要素を比較することによって計算することができる。画像の要素は、個別のピクセル、ピクセルのグループ、または物体などのピクセルのグループによって表される特徴を含むことができる。たとえば、特徴認識アルゴリズム(たとえば、物体認識アルゴリズム、エッジ検出、コーナー検出など)は、1つまたは複数のピクセルによって表される特徴を識別するために実行することができ、第1の視差オフセットは、第1の画像内で特徴を表す1つまたは複数の第1のピクセルを、第2の画像内で特徴を表す1つまたは複数の第2のピクセルと比較することによって計算することができる。視差オフセットは、視差オフセットが計算されたピクセルに割り当てることができる。視差オフセットは、画像のピクセルの配置で表される1つまたは複数の次元内のピクセルの差を示すために生成することができる。たとえば、視差オフセットは、画像に対応する座標方式(たとえば、x-y座標)におけるベクトルとして表すことができる。視差オフセットは、角度または距離の値として表すことができる。視差オフセットは、絶対値(たとえば、要素、位置、および/またはピクセル間の絶対差)として提供することができる。画像の要素が第1の画像の複数の第1のピクセルおよび第2の画像の複数の第2のピクセルを含む場合、第1の視差オフセットは、各第1のピクセルを各対応する第2のピクセルと比較すること、または1つもしくは複数の代表する第1のピクセルを1つもしくは複数の代表する第2のピクセルと比較することに対応する1つまたは複数のベクトル(または角度および距離の値)を含むように生成することができる。
【0079】
320において、視差オフセットからアーティファクトが取り除かれる場合がある。たとえば、望ましくないアーティファクトを取り除くために、空間フィルタなどの様々なフィルタまたはスムージングアルゴリズムを実行することができる。
【0080】
325において、画像ごとに深度バッファ(たとえば、深度マップ)を生成することができる。深度バッファは、視差オフセットに基づいて生成することができる。たとえば、第1の深度バッファは、第1の画像のための第1の視差オフセットに基づいて生成することができ、第2の深度バッファは第2の画像のための第2の視差オフセットに基づいて生成することができる。深度バッファは、画像を取り込むために使用される画像キャプチャデバイスに関する情報および視差オフセットに基づく。たとえば、第1の深度バッファは、第1の視差オフセット、第1の画像が取り込まれた第1のレンズと第2の画像が取り込まれた第2のレンズとの間のベースライン距離、および第1のレンズの焦点距離に基づいて深度値を計算することによって決定することができる。深度バッファは、深度バッファが生成された画像の少なくとも1つのピクセルに対応する深度値を各々が有する、ピクセルの行列として生成することができる。
【0081】
330において、ポーズ履歴を計算することができる。ポーズは、画像キャプチャデバイスによって取り込まれたシーンまたはビューを電子的に表す任意のタイプおよび形式のデータであり得る。ポーズは、少なくとも装着者のHMDの空間内の位置または方位に基づいて、HMDの1つまたは複数のカメラを介して視ることができる物体、シーン、または環境のビューを識別する場合がある。ポーズのためのデータは、時間の現在のインスタンスにおけるHMDからのビューの6自由度(6Dof)視点を含むか、それから識別する場合がある。ポーズのためのデータは、少なくともHMD装着者の視点、位置、方位、および時間に基づいて、シーン、ビュー、または環境内の任意の1つまたは複数の物体をレンダリングするための画像データを含む場合がある。
【0082】
335において、画像、深度バッファ、およびポーズ履歴を使用して表示画像をレンダリングすることができる。表示画像は、3Dレンダラまたは合成器などの画像レンダラを使用してレンダリングすることができる。表示データのフレームは、時間パラメータおよび/または空間パラメータに基づいて、1つまたは複数のディスプレイにレンダリングおよび提供することができる。表示データのフレームは、左目ビューに続いて右目ビューを表示すること、もしくはその逆、または左目ビューおよび右目ビューを同時に表示することなどの、左目ビューおよび右目ビューに基づいてレンダリングすることができる。表示画像は、正しい画像空間に表示画像を位置付けるなどのために、再投影を使用してレンダリングすることができる。表示画像は、PTWアルゴリズムを実行することによって再投影することができる。たとえば、第1の画像の第1のピクセルを識別することができ、第1の深度バッファの対応する第1の深度値を識別することができ、第1の表示画像内で第1の画像の第1のピクセルの情報を提示するために使用される第1の表示ピクセルを調整することができる。PTWアルゴリズムは、画像、対応する深度バッファ、および対応するポーズ履歴を含むレイヤに対して実行することができる。表示画像は、画像キャプチャデバイスの移動に関する動きデータを使用してレンダリングすることができる。たとえば、位置センサから受信された動きデータは、頭部の移動からもたらされるHMDの位置または方位のうちの少なくとも1つの変化を把握するために使用することができる。表示画像は、1つまたは複数のカメラから画像が受信されるレートとは異なる場合がある様々なレートでレンダリングすることができる。表示画像は、移動レートが増大するにつれて表示画像レンダリングのレートを増大させるなどのために、1つまたは複数のカメラの移動レートに対応するレートでレンダリングすることができ、それにより、(たとえば、1つまたは複数のカメラから受信された画像に対応するフレーム間により多くのフレームを内挿することにより)モーションブラーの削減を容易にすることができる。いくつかの実施形態では、表示画像は、1つまたは複数のカメラから受信された画像に対して内挿または外挿するようにレンダリングされる。たとえば、第1の再投影は、(第1の画像に対応する)第1の表示画像および(第2の画像に対応する)第2の表示画像を生成するために実行することができる。第1の表示画像および第2の表示画像を生成することに応答して、新しい画像が受信される(かつ視差オフセットを生成するために処理される)と予想されるまでの時間は、時間しきい値と比較することができ、時間が時間しきい値を満たすかまたは超えることに応答して、第2の再投影は、(第1の表示画像に対応する)第3の表示画像および(第2の表示画像に対応する)第4の表示画像を生成するために実行することができ、さらなる実世界の画像が受信および処理される間にさらなるフレームが表示されることが可能になる。レンダリングされた表示画像は、HMDなどの様々なディスプレイを使用して提示することができる。
【0083】
本明細書に記載された様々な動作は、コンピュータシステム上で実装することができる。
図4は、本開示を実装するために使用可能な代表的なサーバシステム400およびクライアントコンピュータシステム414のブロック図を示す。サーバシステム400または同様のシステムは、本明細書に記載されたサービスもしくはサーバまたはそれらの部分を実装することができる。クライアントコンピュータシステム414または同様のシステムは、本明細書に記載されたクライアントを実装することができる。システム100、200の各々および本明細書に記載された他のシステムは、システム400、414の特徴を組み込むことができる。
【0084】
サーバシステム400は、いくつかのモジュール402(たとえば、ブレードサーバ内のブレード)を組み込むモジュラ設計を有することができ、2つのモジュール402が示されているが、任意の数を提供することができる。各モジュール402は、処理ユニット404およびローカルストレージ406を含むことができる。
【0085】
処理ユニット404は、1つもしくは複数のコアを有することができる単一のプロセッサ、または複数のプロセッサを含むことができる。処理ユニット404は、汎用プライマリプロセッサ、ならびにグラフィックスプロセッサ、デジタル信号プロセッサなどの1つまたは複数の専用コプロセッサを含むことができる。いくつかまたはすべての処理ユニット404は、特定用途向け集積回路(ASIC)またはフィールドプログラマブルゲートアレイ(FPGA)などの、カスタマイズされた回路を使用して実装することができる。そのような集積回路は、回路自体に記憶された命令を実行する。処理ユニット404は、ローカルストレージ406に記憶された命令を実行することができる。任意の組合せの任意のタイプのプロセッサを処理ユニット404に含めることができる。
【0086】
ローカルストレージ406は、揮発性記憶媒体(たとえば、従来のDRAM、SRAM,SDRAMなど)および/または不揮発性記憶媒体(たとえば、磁気ディスクもしくは光ディスク、フラッシュメモリなど)を含むことができる。ローカルストレージ406に組み込まれる記憶媒体は、所望により固定、取外し可能、または更新可能であり得る。ローカルストレージ406は、システムメモリ、読取り専用メモリ(ROM)、および永久ストレージデバイスなどの様々なサブユニットに、物理的または論理的に分割することができる。システムメモリは、ダイナミックランダムアクセスメモリなどの、リードライトメモリデバイスまたは揮発性リードライトメモリであり得る。システムメモリは、実行時に処理ユニット404が必要とする命令およびデータのうちのいくつかまたはすべてを記憶することができる。ROMは、処理ユニット404によって必要とされる静的なデータおよび命令を記憶することができる。永久ストレージデバイスは、モジュール402が電源オフされたときでも命令およびデータを記憶することができる不揮発性リードライトメモリデバイスであり得る。本明細書で使用される「記憶媒体」という用語は、(上書き、電気妨害、停電などを被る)無制限にデータを記憶することができ、無線で、または有線接続を介して伝搬する搬送波および一時的な電子信号を含まない任意の媒体を含む。
【0087】
ローカルストレージ406は、オペレーティングシステムおよび/またはシステム100、または本明細書に記載された任意の他のシステム、またはシステム100に関連付けられた任意の他のサーバ、または本明細書に記載された任意の他のシステムの機能などの様々なサーバ機能を実装するプログラムなどの、処理ユニット404によって実行されるべき1つまたは複数のソフトウェアプログラムを記憶することができる。
【0088】
「ソフトウェア」は、一般に、処理ユニット404によって実行されると、サーバシステム400(またはその部分)に様々な動作を実行させ、したがって、ソフトウェアプログラムの動作を実行および実施する1つまたは複数の特定の機械実装形態を定義する命令のシーケンスを指す。命令は、読取り専用メモリに存在するファームウェア、および/または処理ユニット404による実行のために揮発性作業メモリの中に読むことができる、不揮発性記憶媒体に記憶されたプログラムコードとして記憶することができる。ソフトウェアは、単一のプログラムまたは所望により相互作用する個別のプログラムもしくはプログラムモジュールの集合として実装することができる。ローカルストレージ406(または以下に記載される非ローカルストレージ)から、処理ユニット404は、上述された様々な動作を実行するために、実行するプログラム命令および処理するデータを検索することができる。
【0089】
いくつかのサーバシステム400では、複数のモジュール402は、モジュール402とサーバシステム400の他の構成要素との間の通信をサポートするローカルエリアネットワークを形成するバスまたは他の相互接続408を介して、相互接続することができる。相互接続408は、サーバラック、ハブ、ルータなどを含む様々な技術を使用して実装することができる。
【0090】
ワイドエリアネットワーク(WAN)インターフェース410は、ローカルエリアネットワーク(相互接続408)とインターネットなどのより大きいネットワークとの間のデータ通信能力を提供することができる。有線(たとえば、イーサネット、IEEE802.3規格)および/または無線技術(たとえば、Wi-Fi、IEEE802.11規格)を含む、従来または他のアクティビティ技術を使用することができる。
【0091】
ローカルストレージ406は、相互接続408上のトラフィックを削減しながら処理されるべきプログラムおよび/またはデータへの高速アクセスを提供する、処理ユニット404のための作業メモリを提供することができる。相互接続408に接続することができる1つまたは複数のマスストレージサブシステム412により、ローカルエリアネットワーク上に大量のデータのためのストレージを提供することができる。マスストレージサブシステム412は、磁気、光、半導体、または他のデータ記憶媒体に基づくことができる。直接接続型ストレージ、ストレージエリアネットワーク、ネットワーク接続型ストレージなどを使用することができる。サービスまたはサーバによって生成、消費、または保持されるものとして本明細書に記載された任意のデータストアまたは他のデータ集合は、マスストレージサブシステム412に記憶することができる。(潜在的に待ち時間が増加する)WANインターフェース410を介して、さらなるデータストレージリソースがアクセス可能であり得る。
【0092】
サーバシステム400は、WANインターフェース410を介して受信された要求に応答して動作することができる。たとえば、モジュール402のうちの1つは、監督機能を実装し、受信された要求に応答して他のモジュール402に個別の仕事を割り当てることができる。従来の作業割当て技法を使用することができる。要求が処理されるにつれて、WANインターフェース410を介して要求側に結果を返すことができる。そのような動作は通常自動化することができる。WANインターフェース410は、複数のサーバシステム400を互いに接続することができ、大量のアクティビティを管理することが可能なスケーラブルシステムを提供する。動的なリソース割当てまたは再割当てを含む、サーバシステムおよびサーバファーム(協働するサーバシステムの集合)を管理するための従来または他の技法を使用することができる。
【0093】
サーバシステム400は、インターネットなどのワイドエリアネットワークを介して様々なユーザ所有デバイスまたはユーザ操作デバイスと対話することができる。ユーザ操作デバイスの例は、クライアントコンピューティングシステム414として
図4に示されている。クライアントコンピューティングシステム414は、たとえば、スマートフォン、他の携帯電話、タブレットコンピュータ、ウェアラブルコンピューティングデバイス(たとえば、スマートウォッチ、眼鏡)、デスクトップコンピュータ、ラップトップコンピュータなどの消費者向けデバイスとして実装することができる。
【0094】
たとえば、クライアントコンピューティングシステム414は、WANインターフェース410を介して通信することができる。クライアントコンピューティングシステム414は、処理ユニット416、ストレージデバイス418、ネットワークインターフェース420、ユーザ入力デバイス422、およびユーザ出力デバイス424などの従来のコンピュータ構成要素を含むことができる。クライアントコンピューティングシステム414は、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、スマートフォン、他のモバイルコンピューティングデバイス、ウェアラブルコンピューティングデバイスなどの、様々なフォームファクタで実装されたコンピューティングデバイスであり得る。
【0095】
プロセッサ416およびストレージデバイス418は、上述された処理ユニット404およびローカルストレージ406と同様であり得る。クライアントコンピューティングシステム414に対して出される要求に基づいて適切なデバイスを選択することができ、たとえば、クライアントコンピューティングシステム414は、処理能力が制限された「シン」クライアント、または高性能コンピューティングデバイスとして実装することができる。クライアントコンピューティングシステム414は、メッセージにアクセスすること、メッセージに対してアクションを実行すること、および上述された他の相互作用などのメッセージ管理サービスのサーバシステム400との様々な相互作用を可能にするために、処理ユニット416によって実行可能なプログラムコードを供給され得る。いくつかのクライアントコンピューティングシステム414は、メッセージ管理サービスから独立したメッセージングサービスと対話することもできる。
【0096】
ネットワークインターフェース420は、サーバシステム400のWANインターフェース410も接続されるワイドエリアネットワーク(たとえば、インターネット)への接続を提供することができる。ネットワークインターフェース420は、有線インターフェース(たとえば、イーサネット)および/またはWi-Fi、Bluetooth、もしくはセルラーデータネットワーク規格など(たとえば、3G、4G、LTEなど)の様々なRFデータ通信規格を実装する無線インターフェースを含むことができる。
【0097】
ユーザ入力デバイス422は、それを介してユーザがクライアントコンピューティングシステム414に信号を提供することができる任意のデバイス(または複数のデバイス)を含むことができ、クライアントコンピューティングシステム414は、特定のユーザ要求または情報を示すものとして信号を解釈することができる。ユーザ入力デバイス422は、キーボード、タッチパッド、タッチスクリーン、マウスまたは他のポインティングデバイス、スクロールホイール、クリックホイール、ダイアル、ボタン、スイッチ、キーパッド、マイクロフォンなどのうちのいずれかまたはすべてを含むことができる。
【0098】
ユーザ出力デバイス424は、それを介してクライアントコンピューティングシステム414がユーザに情報を提供することができる、任意のデバイスを含むことができる。たとえば、ユーザ出力デバイス424は、クライアントコンピューティングシステム414によって生成されるか、またはクライアントコンピューティングシステム414に配信された画像を表示するディスプレイを含むことができる。ディスプレイは、サポートする電子装置(たとえば、デジタルアナログコンバータもしくはアナログデジタルコンバータ、信号プロセッサなど)と一緒に、様々な画像生成技術、たとえば、液晶ディスプレイ(LCD)、有機発光ダイオード(OLED)を含む発光ダイオード(LED)、投影システム、陰極線管(CRT)などを組み込むことができる。入力と出力の両方のデバイスとして機能するタッチスクリーンなどのデバイスを使用することができる。出力デバイス424は、ディスプレイに加えて、またはその代わりに提供することができる。例には、表示灯、スピーカ、触覚「表示」デバイス、プリンタなどが含まれる。
【0099】
いくつかの実装形態は、マイクロプロセッサ、コンピュータ可読記憶媒体にコンピュータプログラム命令を記憶するストレージおよびメモリなどの電子構成要素を含む。本明細書に記載された特徴の多くは、コンピュータ可読記憶媒体上に符号化されたプログラム命令のセットとして指定されるプロセスとして実装することができる。これらのプログラム命令が1つまたは複数の処理ユニットによって実行されると、それらはプログラム命令内で示された様々な動作を処理ユニットに実行させる。プログラム命令またはコンピュータコードの例には、コンパイラによって生成されたものなどの機械コード、および、インタープリタを使用するコンピュータ、電子構成要素、またはマイクロプロセッサによって実行されるより高いレベルのコードを含むファイルが含まれる。適切なプログラミングを介して、処理ユニット404および416は、サーバもしくはクライアントによって実行されるものとして本明細書に記載された機能、またはメッセージ管理サービスに関連付けられた他の機能のいずれかを含む様々な機能を、サーバシステム400およびクライアントコンピューティングシステム414に提供することができる。
【0100】
サーバシステム400およびクライアントコンピューティングシステム414が例示的であり、変形形態および修正形態が可能であることが諒解されよう。本開示とともに使用されるコンピュータシステムは、本明細書に具体的に記載されていない他の能力を有することができる。さらに、サーバシステム400およびクライアントコンピューティングシステム414は特定のブロックを参照して記載されているが、これらのブロックは説明の便宜上定義され、構成要素部分の特定の物理的な配置を意味するものではないことが理解されるべきである。たとえば、同じ設備、同じサーバラック、または同じマザーボードに異なるブロックを配置することができるが、配置される必要はない。さらに、ブロックは物理的に別個の構成要素に対応する必要はない。ブロックは、たとえば、プロセッサをプログラミングすること、または適切な制御回路を提供することにより、様々な動作を実行するように構成することができ、様々なブロックは、初期構成がどのように取得されたかに応じて再構成可能であってもなくてもよい。本開示の実装形態は、回路およびソフトウェアの任意の組合せを使用して実装された電子デバイスを含む、様々な装置において実現することができる。
【0101】
さて、いくつかの例示的な実装形態を記載したが、上記は例示的であり限定的ではなく、例として提示されていることは明らかである。詳細には、本明細書に提示された例の多くは、方法の行為またはシステム要素の特定の組合せを伴い、それらの行為およびそれらの要素は、同じ目標を達成するために他の方法で組み合わせることができる。一実装形態とともに説明された行為、要素、および特徴は、他の実装形態における同様の役割から排除されるものではない。
【0102】
本明細書に開示された実施形態とともに記載された様々なプロセス、動作、例示的なロジック、論理ブロック、モジュール、および回路を実装するために使用されるハードウェアおよびデータ処理構成要素は、本明細書に記載された機能を実行するように設計された、汎用シングルチップもしくはマルチチッププロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタ論理、個別ハードウェア構成要素、またはそれらの任意の組合せで実装または実行される場合がある。汎用プロセッサは、マイクロプロセッサ、または任意の従来のプロセッサ、コントローラ、マイクロコントローラ、もしくは状態機械であり得る。プロセッサはまた、DSPとマイクロプロセッサの組合せ、複数のマイクロプロセッサ、DSPコアと連携する1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成などの、コンピューティングデバイスの組合せとして実装される場合がある。いくつかの実施形態では、特定のプロセスおよび方法は、所与の機能に固有の回路によって実行される場合がある。メモリ(たとえば、メモリ、メモリユニット、ストレージデバイスなど)は、本開示に記載された様々なプロセス、レイヤ、およびモジュールを完了または容易にするためのデータおよび/またはコンピュータコードを記憶するための1つまたは複数のデバイス(たとえば、RAM、ROM、フラッシュメモリ、ハードディスクストレージなど)を含む場合がある。メモリは、揮発性メモリもしくは不揮発性メモリであり得るか、または揮発性メモリもしくは不揮発性メモリを含む場合があり、本開示に記載された様々なアクティビティおよび情報構造をサポートするためのデータベース構成要素、オブジェクトコード構成要素、スクリプト構成要素、または任意の他のタイプの情報構造を含む場合がある。例示的な実施形態によれば、メモリは、処理回路を介してプロセッサに通信可能に接続され、本明細書に記載された1つまたは複数のプロセスを(たとえば、処理回路および/またはプロセッサによって)実行するためのコンピュータコードを含む。
【0103】
本開示は、様々な動作を遂行するための任意の機械可読媒体上の方法、システム、およびプログラム製品を考察する。本開示の実施形態は、既存のコンピュータプロセッサを使用して、またはこの目的もしくは別の目的で組み込まれた適切なシステム向けの専用コンピュータプロセッサにより、またはハードワイヤードシステムによって実装される場合がある。本開示の範囲内の実施形態は、そこに貯蔵された機械実行可能命令またはデータ構造を運ぶかまたは有するための機械可読媒体を備えるプログラム製品を含む。そのような機械可読媒体は、汎用もしくは専のためのコンピュータ、またはプロセッサを有する他の機械によってアクセスすることができる任意の利用可能な媒体であり得る。例として、そのような機械可読媒体は、RAM、ROM、EPROM、もしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、あるいは、機械実行可能命令もしくはデータ構造の形態で所望のプログラムコードを運ぶかもしくは記憶するために使用することができ、汎用もしくは専のためのコンピュータ、またはプロセッサを有する他の機械によってアクセスすることができる任意の他の媒体を備えることができる。上記の組合せも機械可読媒体の範囲内に含まれる。機械実行可能命令は、たとえば、汎用コンピュータ、専用コンピュータ、または専用処理機械に、ある特定の機能または機能のグループを実行させる命令およびデータを含む。
【0104】
本明細書で使用される述語および用語は、説明目的のためであり、限定するものと見なされるべきでない。本明細書における「含む」、「備える」、「有する」、「収容する」、「伴う」、「を特徴とする」、「ことを特徴とする」、およびそれらの変形形態の使用は、その後に列挙された項目、それらの均等物、および追加項目、ならびにその後に排他的に列挙された項目から構成される代替の実装形態を包含することが意図されている。一実装形態では、本明細書に記載されたシステムおよび方法は、記載された要素、行為、または構成要素のうちの1つ、2つ以上の各組合せ、またはすべてから構成される。
【0105】
単数形で呼ばれる本明細書のシステムおよび方法の実装形態または要素または行為に対する任意の参照は、複数のこれらの要素を含む実装形態も包含することができ、本明細書の任意の実装形態または要素または行為に対する複数形での任意の参照は、単一の要素のみを含む実装形態も包含することができる。単数形または複数形での参照は、本開示のシステムもしくは方法、それらの構成要素、行為、または要素を単数または複数の構成に限定するものではない。任意の情報、行為、または要素に基づく任意の行為または要素への参照は、その行為または要素が任意の情報、行為、または要素に少なくとも部分的に基づく実装形態を含むことができる。
【0106】
本明細書に開示された任意の実装形態は、任意の他の実装形態または実施形態と組み合わせることができ、「実装形態」、「いくつかの実装形態」、「一実装形態」などへの参照は、必ずしも相互に排他的であるとは限らず、その実装形態とともに記載された特定の特徴、構造、または特性が少なくとも1つの実装形態または実施形態に含めることができることを示すものである。本明細書で使用されるそのような用語は、必ずしもすべてが同じ実装形態を参照するとは限らない。任意の実装形態は、本明細書に開示された態様および実装形態と一致する任意の方式で、包含的または排他的に、任意の他の実装形態と組み合わせることができる。
【0107】
図面、発明を実施するための形態、または任意の請求項における技術的特徴の後に参照符号が続く場合、参照符号は、図面、発明を実施するための形態、および特許請求の範囲の明瞭度を増やすために含まれている。したがって、参照符号もそれらの不在も、任意の請求要素の範囲に対していかなる限定的な効果ももたない。
【0108】
本明細書に記載されたシステムおよび方法は、その特性から逸脱することなく、他の特定の形態で具現化される場合がある。さらなる相対的な平行、直交、垂直、または他の測位もしくは方位の記述は、純粋に垂直、平行、または直交の測位の+/-10%または+/-10度以内のばらつきを含む。「おおよそ」、「約」、「実質的な」、または程度の他の用語に対する参照は、明示的に別段の指示がない限り、所与の測定値、単位、または範囲からの+/-10%のばらつきを含む。結合された要素は、直接互いに、または介在要素で電気的、機械的、または物理的に結合することができる。本明細書に記載されたシステムおよび方法の範囲は、前述の説明ではなく、添付特許請求の範囲によってこのように示され、特許請求の範囲の均等性の意味および範囲内に来る変更は、それらに包含される。
【0109】
「結合」という用語およびその変形形態は、2つのメンバを互いに直接的または間接的に結び付けることを含む。そのような結び付きは、定置型(たとえば、永久もしくは固定)または移動型(たとえば、取外し可能もしくは解除可能)であり得る。そのような結び付きは、直接互いともしくは互いに結合された2つのメンバ、個別の介在メンバおよび互いと結合された任意のさらなる介在メンバを使用して互いと結合された2つのメンバ、または2つのメンバのうちの1つと単一の本体として一体形成された介在メンバを使用して互いと結合された2つのメンバで達成される場合がある。「結合」またはその変形形態がさらなる用語によって修飾された(たとえば、直接結合された)場合、上記で提供された「結合」の一般的な定義は、さらなる用語の分かりやすい言葉の意味によって修飾され(たとえば、「直接結合された」はいかなる個別の介在メンバもない2つのメンバの結び付きを意味する)、上記で提供された「結合」の一般的な定義よりも狭い定義がもたらされる。そのような結合は、機械的、電気的、または流体的であり得る。
【0110】
「または」への参照は、「または」を使用して記載された任意の用語が記載された用語のうちの1つ、2つ以上、およびすべてを示すことができるように、包括的と解釈することができる。『「A」および「B」のうちの少なくとも1つ』への参照は、「A」のみ、「B」のみ、ならびに「A」と「B」の両方を含むことができる。「備える」または他のオープン用語と連携して使用されるそのような参照は、さらなる項目を含むことができる。
【0111】
様々な要素のサイズ、次元、構造、形状、および割合、パラメータの値、取付け構成、材料の使用、色、方位における変形形態などの、記載された要素および行為の修正形態は、本明細書に開示された主題の教示および利点から実質的に逸脱することなく、思い付くことができる。たとえば、一体形成されたように示された要素は、複数の部品または要素から構築することができ、要素の位置は、反転するか、またはそうでない場合変更することができ、個別の要素または位置の本質または数は、改変または変更することができる。本開示の範囲から逸脱することなく、開示された要素および動作の設計、動作条件、および配置において、他の置換、修正、変更、および省略も行うことができる。
【0112】
要素の位置に対する本明細書における参照(たとえば、「上部」、「下部」、「上方」、「下方」)は、単に図の中の様々な要素の方位を記載するために使用される。様々な要素の方位は、他の例示的な実施形態に応じて異なる場合があり、そのような変形形態は本開示によって包含されるものである。
【国際調査報告】