(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-02-16
(45)【発行日】2022-02-25
(54)【発明の名称】ヘッドマウントディスプレイ追跡システム
(51)【国際特許分類】
H04N 5/235 20060101AFI20220217BHJP
G02B 27/02 20060101ALI20220217BHJP
G06F 3/01 20060101ALI20220217BHJP
H04N 5/232 20060101ALI20220217BHJP
H04N 5/247 20060101ALI20220217BHJP
H04N 5/64 20060101ALI20220217BHJP
【FI】
H04N5/235 300
G02B27/02 Z
G06F3/01 510
H04N5/232 290
H04N5/232 380
H04N5/247
H04N5/64 511A
(21)【出願番号】P 2020518428
(86)(22)【出願日】2017-10-11
(86)【国際出願番号】 US2017056183
(87)【国際公開番号】W WO2019074503
(87)【国際公開日】2019-04-18
【審査請求日】2020-07-13
(32)【優先日】2017-10-09
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】515046968
【氏名又は名称】フェイスブック・テクノロジーズ・リミテッド・ライアビリティ・カンパニー
【氏名又は名称原語表記】FACEBOOK TECHNOLOGIES, LLC
(74)【代理人】
【識別番号】110002974
【氏名又は名称】特許業務法人World IP
(72)【発明者】
【氏名】リンデ, オスカー
(72)【発明者】
【氏名】メリン, アンドリュー
【審査官】中嶋 樹理
(56)【参考文献】
【文献】特開2017-174125(JP,A)
【文献】特開2016-099598(JP,A)
【文献】特開2002-344800(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04N 5/235
G02B 27/02
G06F 3/01
H04N 5/232
H04N 5/247
H04N 5/64
(57)【特許請求の範囲】
【請求項1】
ヘッドマウントディスプレイ(HMD)
上の異なるロケーションに位置決めされ、前記HMDを取り巻く局所エリアの異なる部分のイメージをキャプチャするように向きを定められた複数のカメラを含む撮像アセンブリであって、前記複数のカメラがそれぞれ、隣接するカメラとの重畳視野を有し、前記撮像アセンブリが、
前記複数のカメラのそれぞれに関して露出設定を生成すること、および
撮像命令に従って前記局所エリアのイメージをキャプチャすること
を行うように構成された、撮像アセンブリと、
前記露出設定を使用して撮像命令を生成することであって、前記撮像命令が、前記複数のカメラのそれぞれに関する露出時間のそれぞれの中点を
、キャプチャされた
前記イメージのそれぞれに関して同じ時間値で生じさせる、前記露出設定を使用して撮像命令を生成すること、
前記撮像命令を前記撮像アセンブリに提供すること、および
キャプチャされた
前記イメージを使用して前記局所エリア内でのHMDのロケーションを決定すること
を行うように構成されたコントローラと、
を備える、ヘッドマウントディスプレイ(HMD)
であって、
前記撮像命令が、前記複数のカメラのそれぞれに関するプログラムされた時間遅延を含み、前記時間遅延が、基準時点と前記カメラに関する露出の開始との間の期間であり、前記基準時点が、前記HMDによって検出される同期パルスによって制御される、ヘッドマウントディスプレイ(HMD)。
【請求項2】
前記撮像アセンブリが4つのカメラを備え、各カメラが120~180度の範囲内の視野を有する、請求項1に記載のHMD。
【請求項3】
第1のカメラと第2のカメラと
が平行な向きを有し、前記第1のカメラおよび前記第2のカメラの前記視野が、前記局所エリアの一部分の立体視撮像を提供する、請求項2に記載のHMD。
【請求項4】
前記第1のカメラと前記第2のカメラとが前記HMDの底部に位置され、前記第1のカメラと前記第2のカメラとの前記視野が、静止して前記HMDを着用しているユーザをキャプチャする、請求項3に記載のHMD。
【請求項5】
第3のカメラ
と第4のカメラとが異なる向きを有し、前記第3のカメラと前記第4のカメラとの前記視野の一部分のみが重畳する、請求項3に記載のHMD。
【請求項6】
前記同期パルスが、周辺デバイスによって放出される光のパルスである、請求項
1に記載のHMD。
【請求項7】
前記局所エリア内での前記HMDのロケーションが変化するときに、前記複数のカメラのそれぞれに関する前記露出設定が変わり、前記コントローラが
、変更された
前記露出設定に基づいて、更新された撮像命令を生成する、請求項1に記載のHMD。
【請求項8】
前記コントローラが、前記複数のカメラのそれぞれの前記露出設定と
、キャプチャされた
前記イメージからの深度情報とを使用してモデルを更新し、前記モデルが、前記局所エリアのマッピング関数を表す、請求項1に記載のHMD。
【請求項9】
前記モデルと、前記HMD内の慣性測定ユニットからの情報とを使用して、前記コントローラが、
前記慣性測定ユニットからの情報を使用して、前記局所エリア内での前記HMDの将来のロケーションを予測すること、および
予測された
前記将来のロケーションと前記モデルとに基づいて、前記複数のカメラのそれぞれに関する露出設定を決定すること
を行うようにさらに構成された、請求項
8に記載のHMD。
【請求項10】
前記コントローラが、
前記複数のカメラのうちの1つのカメラの視野内にどちらもある、前記局所エリア内の高優先度の領域と前記局所エリア内の低優先度の領域とを識別することであって
、高優先度エリアが、第1の露出値に関連付けられ
、低優先度エリアが、異なる露出値に関連付けられる、前記局所エリア内の高優先度の領域と前記局所エリア内の低優先度の領域とを識別すること、および
前記露出設定が前記第1の露出値に関する露出を行うように、前記高優先度エリアのための前記カメラに関する露出設定を決定すること
を行うように構成された、請求項1に記載のHMD。
【請求項11】
前記コントローラが、
前記複数のカメラのそれぞれの露出長さの中点を決定すること、
各カメラに関す
る決定された
前記中点を同じ時点に合わせること、および
各カメラに関する時間遅延を決定することを行うようにさらに構成され、前記時間遅延が、基準時点と前記カメラの前記露出長さの開始との間の期間であり、各カメラに、各カメラの前記露出長さの中点が同じ時点で生じるようにイメージキャプチャを開始させる、
請求項1に記載のHMD。
【請求項12】
ヘッドマウントディスプレイ(HMD)
上の撮像アセンブリの複数のカメラに関するイメージ情報を生成することであって、前記複数のカメラのそれぞれが、前記HMD
上の異なるロケーションに位置決めされ、前記HMDを取り巻く局所エリアの異なる部分のイメージをキャプチャするように向きを定められ、前記複数のカメラがそれぞれ、隣接するカメラとの重畳視野を有する、ヘッドマウントディスプレイ(HMD)
上の撮像アセンブリの複数のカメラに関するイメージ情報を生成すること、
前記複数のカメラのそれぞれに関する前記イメージ情報に基づいてモデルを更新することであって、前記モデルが、前記局所エリア内での前記HMDのロケーションに基づく前記局所エリアのマッピング関数を表す、前記複数のカメラのそれぞれに関する前記イメージ情報に基づいてモデルを更新すること、
前記撮像アセンブリによってキャプチャされたイメージを使用して、前記局所エリア内の前記HMDのロケーションを決定すること、
前記HMD
の決定された
前記ロケーションを前記モデルに入力することによって、前記複数のカメラのそれぞれに関する露出設定を決定すること、
決定された
前記露出設定に基づいて、前記複数のカメラのそれぞれに関する撮像命令を生成すること、
前記撮像アセンブリに前記撮像命令を提供すること、
前記撮像命令に従って前記局所エリアの複数のイメージをキャプチャすること、および
キャプチャされた
前記複数のイメージを使用して前記HMDの前記ロケーションを更新すること、
を含む方法
であって、前記撮像命令が、前記複数のカメラのそれぞれに関するプログラムされた時間遅延を含み、前記時間遅延が、基準時点と前記カメラに関する露出の開始との間の期間であり、前記基準時点が、前記HMDによって検出される同期パルスによって制御される、方法。
【請求項13】
前記複数のカメラのそれぞれに関する撮像命令を生成することが、
前記複数のカメラのそれぞれの露出長さの中点を決定すること、
各カメラに関す
る決定された
前記中点を同じ時点に
合わせること、および
各カメラに関する時間遅延を決定することをさらに含み、前記時間遅延が、基準時点と前記カメラの前記露出長さの開始との間の期間であり、各カメラに、各カメラの前記露出長さの中点が同じ時点で生じるようにイメージキャプチャを開始させる、
請求項
12に記載の方法。
【請求項14】
前記基準時点が、前記HMDによって検出される同期パルスによって制御される、請求項
13に記載の方法。
【請求項15】
前記HMDの動きに応答して慣性測定ユニット(IMU)を使用して測定信号を生成すること
をさらに含む、請求項
12に記載の方法。
【請求項16】
前記IMUおよび前記モデルからの情報を使用して、前記局所エリア内での前記HMDの将来のロケーションを予測すること
をさらに含む、請求項
15に記載の方法。
【請求項17】
予測された
前記将来のロケーションに基づいて、前記複数のカメラのうちの1つのカメラに関する露出設定を決定すること
をさらに含む、請求項
16に記載の方法。
【請求項18】
前記複数のカメラのうちの1つのカメラの視野内にどちらもある、前記局所エリア内の高優先度の領域と前記局所エリア内の低優先度の領域とを識別することであって
、高優先度エリアが、第1の露出値に関連付けられ
、低優先度エリアが、異なる露出値に関連付けられる、前記局所エリア内の高優先度の領域と前記局所エリア内の低優先度の領域とを識別すること、および
前記露出設定が前記第1の露出値に関する露出を行うように、前記高優先度エリアのための前記カメラに関する露出設定を決定すること
をさらに含む、請求項
12に記載の方法。
【請求項19】
1つまたは複数のプロセッサによって実行されるときに、1つまたは複数のプロセッサに、
ヘッドマウントディスプレイ(HMD)
上の撮像アセンブリの複数のカメラに関するイメージ情報を生成することであって、前記複数のカメラのそれぞれが、前記HMD
上の異なるロケーションに位置決めされ、前記HMDを取り巻く局所エリアの異なる部分のイメージをキャプチャするように向きを定められ、前記複数のカメラがそれぞれ、隣接するカメラとの重畳視野を有する、HMD
上の撮像アセンブリの複数のカメラに関するイメージ情報を生成すること、
前記複数のカメラのそれぞれに関する前記イメージ情報に基づいてモデルを更新することであって、前記モデルが、前記局所エリア内での前記HMDのロケーションに基づく前記局所エリアのマッピング関数を表す、前記複数のカメラのそれぞれに関する前記イメージ情報に基づいてモデルを更新すること、
前記撮像アセンブリによってキャプチャされたイメージを使用して、前記局所エリア内の前記HMDのロケーションを決定すること、
前記HMD
の決定された
前記ロケーションを前記モデルに入力することによって、前記複数のカメラのそれぞれに関する露出設定を決定すること、
決定された
前記露出設定に基づいて、前記複数のカメラのそれぞれに関する撮像命令を生成すること、
前記撮像アセンブリに前記撮像命令を提供すること、
前記撮像命令に従って前記局所エリアの複数のイメージをキャプチャすること、および
キャプチャされた
前記複数のイメージを使用して前記HMDの前記ロケーションを更新すること
を含む動作を実施させる命令を格納する非一時的なコンピュータ可読記憶媒体
であって、前記撮像命令が、前記複数のカメラのそれぞれに関するプログラムされた時間遅延を含み、前記時間遅延が、基準時点と前記カメラに関する露出の開始との間の期間であり、前記基準時点が、前記HMDによって検出される同期パルスによって制御される、非一時的なコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
背景
本開示は、一般にヘッドマウントディスプレイに関し、詳細には、ヘッドマウントディスプレイ追跡システムに関する。
【背景技術】
【0002】
仮想現実(VR)システムは、ユーザが着用しているヘッドセットのポジションおよび移動を決定するための外部デバイスを含むことが多い。それに従って、そのようなシステムに関する動作は、外部デバイスを含む特定の領域(例えば、部屋)に制限される。さらに、そのような外部デバイスは、一般に、何らかの種類のアクティブな照明源(例えば、構造化された光)を使用してユーザのポジションを決定し、これは、システムに関する複雑さおよび電力要件を高める。
【発明の概要】
【0003】
概要
ヘッドマウントディスプレイ(HMD)は、少なくとも一部がステレオでの局所エリアのイメージおよび/またはビデオをキャプチャするように構成される。HMDは、撮像アセンブリと、コントローラとを含む。
【0004】
撮像アセンブリは、HMDでの異なるロケーションに位置決めされ、HMDを取り巻く局所エリアの異なる部分のイメージをキャプチャするように向きを定められた複数のカメラを含む。複数のカメラはそれぞれ、隣接するカメラとの重畳視野を有する。複数のカメラでの各カメラは、各カメラに関する撮像命令を生成するためにコントローラによって使用される露出設定を生成する。各カメラは、撮像命令に従って局所エリアのイメージをキャプチャする。
【0005】
コントローラは、対応する露出設定を使用して各カメラに関する撮像命令を生成するように構成される。撮像命令は、複数のカメラのそれぞれに関する露出時間のそれぞれの中点を、キャプチャされたイメージのそれぞれに関して同じ時間値で生じさせる。コントローラは、カメラが局所エリアのイメージをキャプチャすることができるように、撮像命令を撮像アセンブリに提供する。コントローラは、キャプチャされたイメージを使用して、局所エリア内でのHMDのロケーションを決定する。
【図面の簡単な説明】
【0006】
【
図1】一実施形態による、ヘッドマウントディスプレイ(HMD)を示す図である。
【
図2A】一実施形態による、HMDの正面図である。
【
図2B】一実施形態による、HMDの側面図である。
【
図3】一実施形態による、HMDシステムの実施形態を示すブロック図である。
【
図4】一実施形態による、HMDでの複数のカメラに関する視野を示す図である。
【
図5】一実施形態による、HMDでの複数のカメラのイメージキャプチャを同期させるための方法を示す図である。
【
図6】一実施形態による、局所エリア内でのHMDのロケーションを決定するプロセスを示す流れ図である。
【発明を実施するための形態】
【0007】
図は、例証のためだけに本開示の実施形態を描写する。本明細書において示される構造および方法の代替実施形態は、本明細書において説明される本開示の原理またはうたわれる利益から逸脱することなく用いられることが可能であるということを当業者は以下の説明から容易に認識するであろう。
詳細な説明
【0008】
本発明の実施形態は、人工現実システムを含むことがあり、または人工現実システムと併せて実装されることがある。人工現実は、ユーザに提示する前に何らかの様式で調節されている一形態の現実であり、例えば、仮想現実(VR)、拡張現実(AR)、複合現実(MR)、ハイブリッド現実、またはそれらの何らかの組合せおよび/もしくは導出形態を含むことがある。人工現実コンテンツは、完全に生成されたコンテンツ、または生成されたコンテンツとキャプチャされた(例えば実世界の)コンテンツとの組合せを含むことがある。人工現実コンテンツは、ビデオ、オーディオ、触覚フィードバック、またはそれらの何らかの組合せを含むことがあり、それらの任意のものが、単一のチャネルまたは複数のチャネル(観察者に対して3次元効果を生み出すステレオビデオなど)で提示されることがある。追加として、いくつかの実施形態では、人工現実は、例えば人工現実でのコンテンツを作成するために使用される、および/または他の形で人工現実において使用される(例えば人工現実において活動を実施する)アプリケーション、製品、アクセサリ、サービス、またはそれらの何らかの組合せにも関連付けられることがある。人工現実コンテンツを提供する人工現実システムは、様々なプラットフォームに実装されることがあり、ホストコンピュータシステムに接続されたヘッドマウントディスプレイ(HMD)、スタンドアローンHMD、モバイルデバイスもしくはコンピューティングシステム、または1人もしくは複数人の観察者に人工現実コンテンツを提供することが可能な任意の他のハードウェアプラットフォームを含む。
【0009】
図1は、一実施形態によるヘッドマウントディスプレイ(HMD)100を示す。HMD100は、例えば人工現実システムの一部であり得る。HMD100は、前部剛体105、バンド110、およびHMDコントローラ(図示せず)を含む。
図1の実施形態では、HMD100は撮像アセンブリを含み、撮像アセンブリは、カメラ115、カメラ120、カメラ125、およびカメラ130を含み、これらのカメラは前部剛体105に位置決めされる。
【0010】
前部剛体105は、1つまたは複数の電子ディスプレイ要素(
図1には図示せず)と、1つまたは複数の一体型視標追跡システム(
図1には図示せず)と、慣性測定ユニット(IMU)135と、1つまたは複数のポジションセンサ140とを含む。
図1によって示されている実施形態では、ポジションセンサ140は、IMU135内に位置され、IMU135もポジションセンサ140もHMD100のユーザには見えない。IMU135は、ポジションセンサ140のうちの1つまたは複数から受信された測定信号に基づいて高速較正データを生成する電子デバイスである。ポジションセンサ140は、HMD100の動きに応答して1つまたは複数の測定信号を生成する。ポジションセンサ140の例としては、1つもしくは複数の加速度計、1つもしくは複数のジャイロスコープ、1つもしくは複数の磁力計、動きを検出する別の適切なタイプのセンサ、IMU135の誤差修正に使用されるタイプのセンサ、またはそれらの何らかの組合せが挙げられる。ポジションセンサ140は、IMU135の外部に、IMU135の内部に、またはそれらの何らかの組合せで位置されることがある。
【0011】
バンド110は、HMD100をユーザの頭に固定し、前部剛体105をユーザの顔に位置決めする。
図1の実施形態では、バンド110は、ユーザの頭の後部に巻き付くことによってHMD100をユーザの頭に固定する。バンド110は、ナイロン、ポリエステル、プロピレン、何らかの他の同様の材料、またはそれらの何らかの組合せなど、耐久性のある布地から形成することができる。いくつかの実施形態では、バンド110は、バンド110がユーザの頭に合わせて伸張または適応できるようにする弾性(例えば、弾性ナイロン)を有することがある。バンド110は、HMD100を着用するユーザにさらなる快適性または安定性を提供することができる様々な構成を有することがある。いくつかの実施形態では、冷却ファンおよび/または電源が、バンド110に沿って取り付けられることがある。
【0012】
撮像アセンブリは、HMD100を取り巻く局所エリアからキャプチャされたイメージおよび/またはオーディオ情報を使用してイメージ情報を生成する。局所エリアは、HMD100を取り巻く環境である。例えば、局所エリアは、HMD100を着用したユーザが中にいる部屋であり得る。または、ユーザが屋外にいることがあり、局所エリアは、HMD100に見える屋外エリアである。イメージアセンブリは、局所エリアの一部分をキャプチャするように位置決めされたカメラ115、120、125、130を備える。イメージ情報は、例えば、1つまたは複数のイメージ、オーディオ情報(例えば、1つまたは複数のマイクロフォンによってキャプチャされた音)、ビデオ情報、メタデータ、またはそれらの何らかの組合せを含むことがある。イメージ情報は、局所エリア内の1つまたは複数のオブジェクトの深度情報、および/またはカメラ115、120、125、130によって検出された光の量を含むことがある。
図1の実施形態では、撮像アセンブリは、カメラ115、120、125、130を含む。
【0013】
カメラ115、120、125、130は、局所エリアの異なる部分のイメージおよび/またはビデオをキャプチャするように構成されている。各カメラ115、120、125、130は、センサ(図示せず)、レンズ、およびカメラコントローラ(図示せず)を含む。センサは、感光性ピクセルのアレイ(例えば、相補型金属酸化物、電荷結合素子)を使用して光を取り込む電気デバイスであり、各ピクセルが光を電子信号に変換する。センサは、解像度、ピクセルサイズおよび感度、光感度、シャッタのタイプ、信号処理のタイプなど、様々な特徴を有することができる。レンズは、センサへの光の合焦を容易にするカメラの1つまたは複数の光学素子である。レンズは、固定または可変(焦点や絞りなど)であり得る機能を有し、様々な焦点距離を有することがあり、光学コーティングで覆われていることがある。いくつかの実施形態では、カメラ115、120、125、130のうちの1つまたは複数は、オーディオ情報をキャプチャするためのマイクロフォンを有することがある。マイクロフォンはカメラ内に位置させることができ、またはカメラの外部に位置させてもよい。
【0014】
各カメラ115、120、125、130は、カメラによって観察可能な局所エリア内の領域を表す視野を有する。
図1の実施形態では、各カメラ115、120、125、130の視野は、50~180度の範囲内であり得る。約50~120度の範囲内の視野は、一般に広視野と呼ばれ、120度よりも大きい視野は、一般に魚眼視野と呼ばれる。
図1の実施形態では、各カメラ115、120、125、130のレンズは、同程度の視野を有することも、異なる程度の視野を有することもある。例えば、カメラ115、120、125、130は、120~180度の範囲内の視野を有することがある。
図1の実施形態では、カメラ115、120、125、130はそれぞれ、150度の視野を有する。例えば180度の視野ではなく150度の視野を有することにより、各カメラが、前部剛体105の表面と面一に位置し、または前部剛体105に嵌まり込み、これは、カメラ115、120、125、130を損傷から保護する助けとなり得る。様々な視野が、カメラ115、120、125、130の間の異なるタイプのカバレッジ(例えば、単眼領域、重畳領域、立体視領域など)を提供することがある。
【0015】
各カメラの視野に加えて、各カメラ115、120、125、130のポジションおよび向きにより、カメラ間のカバレッジのタイプを制御できるようになる。カバレッジの所望のタイプは、キャプチャされたイメージから収集される所望の情報のタイプに基づくことがある。
図1の実施形態では、カメラ115、120は、前部剛体105の上隅に位置決めされ、前部剛体105の側部および上部に向かって外向きおよび上向きになるように向きを定められる。この構成では、カメラ115、120は別個の視野を有し、カバレッジの単眼領域を提供する。カメラ125、130は、前部剛体105の底縁部に沿って位置決めされ、下向きに、互いに平行(またはほぼ平行)に向きを定められる。この構成では、カメラ125、130は、重畳視野を有し、カバレッジの立体視領域を提供する。カメラ115、120、125、130は、カメラの視野間でカバレッジの重畳領域を有することがあり、これにより、各視野からの詳細を引き渡すことが可能になり、カメラ115、120、125、130からのフレームを繋ぎ合わせることができるようになる。カメラ115、120、125、130の構成を、
図4に関してより詳細に論じる。他の実施形態では、カメラ115、120、125、130の視野、ポジション、および向きは異なっていてよく、異なるタイプのカバレッジを提供する。
第1のカメラと第2のカメラとの視野が、静止してHMDを着用しているユーザをキャプチャするように、第1のカメラと第2のカメラがHMDの底部に位置されてよい。
【0016】
各カメラ115、120、125、130のカメラコントローラは、カメラに関する露出設定を決定する。カメラの露出設定は、カメラによって取り込まれた光がセンサによってどのように収集されるかを決定する。各カメラ115、120、125、130が、センサに入射する光の量を検出し、検出された光に基づいて、カメラコントローラが、適切な露出設定を決定する。露出設定は、例えば、絞りサイズ、シャッタスピード、ゲイン、またはそれらの何らかの組合せを含むことがある。絞りサイズは、センサに到達する光の量を制御する。シャッタスピードは、センサが光に露出される時間の長さ(すなわち露出長さ)である。ゲインは、光に対するセンサの感度である。
図1の実施形態では、絞りは固定サイズであり、ゲインおよび露出は可変である。検出された光の量を使用して、各カメラ用のカメラコントローラは、各カメラに関する絞りサイズ、シャッタスピード、およびゲインの設定を決定する。
【0017】
図1の実施形態では、各カメラコントローラは独立して機能し、それにより、各コントローラは、対応するカメラ115、120、125、130について、他のカメラとは異なる露出設定を決定することができる。例えば、センサをより多くの光またはより少ない光に露出するように、各カメラに関するシャッタスピードを変えることができる。この構成により、第1のカメラが第2のカメラよりもはるかに長い露出を有することが可能になり、これにより、撮像アセンブリが、局所エリア内の様々な範囲の光をキャプチャし、局所エリアの様々な部分を露出して、局所エリアから所望の情報を収集することが可能になる。一例として、部屋の局所エリアは、よく照らされている部屋の第1の側(例えば、大量の光を部屋に通す窓)を有することがあり、部屋の第2の側は、影で覆われている。グローバル露出設定を有する撮像アセンブリは、部屋の第1の側または第2の側には適切であるが、部屋の他方の側では撮像アセンブリが露出過剰または露出不足になり得る露出設定を決定することがあり、それにより、撮像アセンブリが局所エリア全体の所望の情報を有するイメージをキャプチャするのを妨げる。それぞれのカメラによって観察される局所エリアの領域に関して適切に決定される異なる露出設定を有するカメラ115、120、125、130を備えることによって、撮像アセンブリは、望まれる局所エリア内のオブジェクトをキャプチャする。いくつかの実施形態では、HMD100は、各カメラ115、120、135、130に関する個別の露出設定を決定することが可能な単一のカメラコントローラを含むことがある。
【0018】
さらに、各カメラコントローラは、そのそれぞれのカメラ115、120、125、130の視野内の局所エリアの特定の部分を選択的に露出するように構成されることがある。カメラコントローラは、部屋の様々な部分を高優先度または低優先度として識別し、部屋の様々な部分をその優先度に従って選択的に露出する。局所エリアの高優先度エリアは、HMD100の近傍にある(例えば、HMDから10フィート以内の)局所エリアの一部分として決定されることがあり、局所エリアの残りの部分は低優先度エリアであり得る。いくつかの実施形態では、局所エリアの一部分の優先度は、局所エリア内の光レベル間の定義されたシフトによって決定されることがある。窓のある部屋の例を続けると、カメラは、部屋の第1の側および窓をその視野に含むことがあり、部屋の中と窓の外とで異なるレベルの光を検出する。検出された光のレベルに基づいて、カメラコントローラは、部屋の各部分を高優先度または低優先度として識別する。例えば、カメラコントローラは、部屋内のオブジェクトを高優先度エリアとして識別し、窓の外のオブジェクトを低優先度エリアとして識別して、低優先度エリアではなく高優先度エリアから所望の情報を収集することができる。カメラコントローラは、第1の露出値を高優先エリアに関連付け、別の露出値を低優先領域に関連付けることができる。露出値は、カメラのシャッタスピードとF値との組合せ(すなわち、焦点距離と絞りサイズとの比)を表し、同じ露出を生成する全ての組合せが同じ露出値を有するようにする。カメラコントローラは、高優先度エリアのためのカメラに関する露出設定を決定して、それらの露出設定が第1の露出値に関する露出を行うようにする。カメラ115、120、125、130のうちの1つまたは複数は、露出値に基づく露出設定を有することができる。
【0019】
HMD100のコントローラは、各カメラから受信された露出設定に基づいて、各カメラ115、120、125、130に関する撮像命令を生成する。撮像命令は、各カメラ115、120、125、130に関する露出設定(例えば、露出長さ、ゲイン、絞りなど)を含むことがある。さらに、撮像命令は、各カメラ115、120、125、130に関する同期情報を含むことがある。HMDコントローラは、カメラ115、120、125、130の露出設定を同期させる同期情報を生成し、各カメラ115、120、125、130がその個別の露出設定を維持できるようにする。この構成により、カメラ115、120、125、130が同じフレームのイメージをキャプチャし、キャプチャされた各イメージが、局所エリア内の情報を多く含むオブジェクトを含むことを保証することができるようになる。
図1の実施形態では、同期情報は、HMDコントローラによって決定された中心時点と、各カメラ115、120、125、130に関する時間遅延とを含む。
【0020】
HMDコントローラは、各カメラ115、120、125、130の露出長さの中心を中心時点に合わせることによって、各カメラ115、120、125、130の露出設定を同期させる。言い換えると、各露出長さの中点が同じ時点に位置合わせされる。この構成は、カメラ115、120、125、130の様々な露出長さに対応し、各カメラによって同じフレームがキャプチャされることを保証する。露出の中心を同じ時点に合わせるために、HMDコントローラ100は、各カメラが基準時点に対して特定の期間後にイメージキャプチャを開始できるようにする各カメラ115、120、125、130に関する時間遅延を計算する。HMDコントローラ100は、カメラの露出長さに従って、各カメラ115、120、125、130に関して適切な時間遅延を決定する。
図1の実施形態では、時間遅延に関する基準点は、HMD100によって検出される同期パルスであり得る。同期パルスは、ユーザによって保持されるコントローラなどの外部デバイス、またはHMDシステムのコンソールによって送信されることがある。HMDコントローラは、露出設定および同期情報を含むことがある撮像命令を、イメージキャプチャのために撮像アセンブリに送信する。カメラ115、120、125、130の露出設定の同期は、
図5に関してさらに詳細に論じる。いくつかの実施形態では、カメラコントローラの機能は、HMDコントローラによって統合および実施されることがある。
【0021】
HMDコントローラは、撮像アセンブリからの1つまたは複数のキャプチャされたイメージに基づいて、局所エリア内の1つまたは複数のオブジェクトに関する深度情報を決定するように構成されている。深度情報は、オブジェクトのポジションに関する受信された情報を使用してオブジェクトまでの距離を測定することによって決定されることがある。
図1の実施形態では、HMDコントローラは、カメラ115、120、125、130からのカバレッジの立体視領域を使用してオブジェクトの深度情報を決定する。視野の重畳領域内のオブジェクトは複数のカメラによって観察され、これにより各オブジェクトの複数の視点が提供される。異なる視点間のオブジェクトのポジションの相対的な差を計算することによって、HMDコントローラは、撮像アセンブリに対するオブジェクトの距離を決定する。いくつかの実施形態では、深度情報は、信号(例えば、構造化された光、無線信号、超音波など)をオブジェクトに送信することによってオブジェクトまでの距離を測定することによって決定されることがある。
【0022】
HMDコントローラは、HMD100の局所エリアモデルを更新するようにさらに構成されている。局所エリアモデルは、HMD100を取り巻く環境の深度情報、露出設定、またはそれらの何らかの組合せを含む。
図1の実施形態では、局所エリアモデルは、環境内のHMD100のロケーションに基づく、HMD100の環境の深度情報および露出設定のマッピング関数を表す。環境内のHMD100のロケーションは、撮像アセンブリのキャプチャされたイメージから収集される深度情報から決定される。局所エリアモデルは、環境内のカメラの様々なポジションについて、各カメラ115、120、125、130に関する露出設定を提供し、環境内でHMD100のロケーションおよび向きが変化するときに露出設定を調節できるようにする。局所エリアモデル、およびIMU135からのポジション情報(例えば、速度ベクトル、加速度ベクトルなど)を使用して、HMDコントローラは、HMD100の将来のロケーションおよび向きを予測する。その後、局所エリアモデルを使用して、HMDコントローラは、HMD100の予測される将来のロケーションおよび向きに関する適切な露出設定を決定する。次いで、予測されたロケーションおよび向き、ならびに決定された露出設定に基づいて、HMDコントローラは、各カメラ115、120、125、130に関する撮像命令を生成する。撮像命令は、各カメラ115、120、125、130がイメージをキャプチャする時点および露出設定を指定する。この構成では、HMD100は、各カメラの露出設定およびHMD100のロケーションを決定するために、各カメラ115、120、125、130から継続的に情報を取得する必要はない。環境内でHMD100のロケーションおよび向きが変化するとき、HMDコントローラは、撮像アセンブリからの深度情報および露出設定を使用して局所エリアモデルを更新することができる。いくつかの実施形態では、HMDコントローラは、深度モデルおよび別個の露出モデルを更新することがある。追加として、いくつかの実施形態では、
図1に示される構成要素のうちの1つまたは複数に関連して述べた機能を、
図1に関連して述べたのとは異なる手法で、構成要素間で分散させることができる。例えば、HMDコントローラによって実施される機能は、カメラコントローラによって実施されてもよく、または逆も同様である。
【0023】
図2Aは、一実施形態によるHMD100の正面図を示す。
図2Aに示されるように、HMD100は、HMD100の前面の縁部に沿って位置されたカメラ115、120、125、130を含む。各カメラ115、120、125、130は、それぞれのポケット内に埋め込まれており、これは、カメラへの損傷を防ぐ助けとなり得る。前述したように、カメラ115、120は、前部剛体105の上隅に位置決めされ、前部剛体105の側部および上部に向けて外向きおよび上向きであり、カメラ125、130は、前部剛体105の下縁部に沿って位置決めされ、下向きに、互いに平行(またはほぼ平行)に向きを定められている。この構成では、カメラ115、120、125、130は、HMD100を取り巻く局所環境の大部分のイメージをキャプチャする。他の実施形態では、カメラの数、ポジション、および向きは異なっていてよく、異なるタイプのカバレッジを提供する。
【0024】
図2Bは、一実施形態によるHMD100の側面図を示す。
図2Bに示されるように、バンド110は、HMD100の側部に取り付けられ、ユーザの頭に巻き付いて、HMD100をユーザの顔の前に固定するように構成されている。いくつかの実施形態では、HMD100は、ユーザが着用している間、HMD100のポジションをさらに安定させるためにユーザの頭の上に配置されるように構成されたストラップを含むことがある。さらに、
図2Bは、それぞれの座標系205、210に対するカメラ120、125の向きを示す。
図2Bに示されるように、カメラ120、125は、それらのそれぞれの視野が重畳しているだけでなく、局所エリアの大きい領域をカバーするように位置決めされている。
【0025】
図3は、一実施形態による、HMDシステム300の実施形態を示すブロック図である。HMDシステム300は、人工現実システム環境で動作することができる。
図3に示されているHMDシステム300は、周辺デバイス310に関連するHMD305を備える。
図3は、1つのHMD305を含む例示的なHMDシステム300を示すが、いくつかの実施形態では、任意の数のこれらの構成要素をHMDシステム300に含めることができる。例えば、それぞれの周辺デバイス310とそれぞれ通信する複数のHMD305が存在し得る。代替構成では、異なるおよび/または追加の構成要素がHMDシステム300に含まれることがある。追加として、いくつかの実施形態では、
図3に示される構成要素のうちの1つまたは複数に関連して述べた機能を、
図3に関連して述べたのとは異なる手法で、構成要素間で分散させることができる。
【0026】
HMD305は、コンピュータで生成された要素(例えば、2次元(2D)または3次元(3D)イメージ、2Dまたは3Dビデオ、サウンドなど)を含む物理的な現実世界環境の仮想および/または拡張視野を含むコンテンツをユーザに提示するヘッドマウントディスプレイである。いくつかの実施形態では、提示されるコンテンツは、HMD305からオーディオ情報を受信し、そのオーディオ情報に基づいてオーディオデータを提示する外部デバイス(例えば、スピーカおよび/またはヘッドフォン)を介して提示されるオーディオを含む。HMD305は、1つまたは複数の剛体を備えることがあり、これらの剛体は、堅固に、または非堅固に互いに連結することができる。剛体間の堅固な連結は、連結された剛体を単一の剛体エンティティとして機能させる。対照的に、剛体間の非堅固な連結は、剛体が互いに対して移動できるようにする。HMD305の一実施形態は、
図1に関連して上述したHMD100である。
【0027】
周辺デバイス310は、ユーザがHMD305にアクションリクエストを送信し、HMD305からの応答を受信するために使用するデバイスである。アクションリクエストは、特定のアクションを実施するためのリクエストである。例えば、アクションリクエストは、イメージもしくはビデオデータのキャプチャを開始もしくは終了するための命令、またはアプリケーションにおける特定のアクションを実施するための命令であり得る。周辺デバイス310は、1つまたは複数の入力デバイスを含むことがある。例示的な入力デバイスは、マウス、ゲームコントローラ、またはアクションリクエストを受信し、アクションリクエストをHMDコントローラ350に通信するための任意の他の適切なデバイスを含む。周辺デバイス310によって受信されたアクションリクエストは、HMDコントローラ350に通信され、HMDコントローラ350は、アクションリクエストに対応するアクションを実施する。いくつかの実施形態では、周辺デバイス310は、周辺デバイス310の初期ポジションに対する周辺デバイス310の推定ポジションを示す較正データをキャプチャするIMUを含む。いくつかの実施形態では、周辺デバイス310は、HMDコントローラ350から受信された命令に従って、触覚フィードバックをユーザに提供することができる。例えば、触覚フィードバックは、アクションリクエストが受信されたときに提供され、またはHMDコントローラ350は、HMDコントローラ350がアクションを実施するときに周辺デバイス310に触覚フィードバックを生成させる命令を、周辺デバイス310に通信する。
【0028】
いくつかの実施形態では、周辺デバイス310は、HMD305の撮像アセンブリの露出設定を同期させるプロセスを容易にする。
図1に関して述べたように、撮像アセンブリは、それぞれが個別の露出設定を有する複数のカメラ、例えばカメラ115、120、125、130を含むことがある。各カメラの露出設定は、HMDコントローラによって同期されて、同じ時点に中心を合わされたイメージをキャプチャする。周辺デバイス310は、各カメラに関する時間遅延の測定に関する基準時点として働く同期パルスをHMD305に送信するように構成される。
図3の実施形態では、同期パルスは、撮像アセンブリ、例えば撮像アセンブリ315によって検出される1つまたは複数のフラッシュでよい。フラッシュは、可視光範囲内(例えば、400~700ナノメートル)、赤外線(例えば、700~1000000ナノメートル)、撮像アセンブリ315によって検出可能な任意の他の光、またはそれらの何らかの組合せであり得る。フラッシュは、発光ダイオード(LED)によって放出されることがある。いくつかの実施形態では、周辺デバイス310は、撮像アセンブリ315による各イメージキャプチャの前に、同期パルスをHMD305に送信する。周辺デバイス310は、周辺デバイス310が適切な時点でHMD305に同期パルスを送信できるようにする独自のタイムベースを有するマイクロコントローラを含むことがある。いくつかの実施形態では、同期パルスは、指定された時間間隔で送信される。代替として、周辺デバイス310は、同期プロトコルを指定するHMD305から命令を受信することができる。同期プロトコルは、HMD305と周辺デバイス310とを同じタイムベースで同期させる。代替実施形態では、周辺デバイス310は、初期同期パルスをHMD305に送信し、カメラの露出が同期されると、撮像アセンブリは、指定された時間間隔でイメージをキャプチャする。
【0029】
いくつかの実施形態では、周辺デバイス310は、HMD305の撮像アセンブリ315によって追跡される。周辺デバイス310は、撮像アセンブリ315によって検出することができる追跡パルスを放出するように構成されることがある。追跡パルスは、可視光範囲内、赤外線、または撮像アセンブリ315によって検出可能な任意の他の光のフラッシュであり得る。追跡パルスは、同期パルスと区別可能である。追跡パルスは、周辺デバイス310が撮像アセンブリ315の視野内で動くときに、周辺デバイス310の動きを追跡できるようにする。
【0030】
HMD305は、撮像アセンブリ315、電子ディスプレイ320、光学アセンブリ325、1つまたは複数のポジションセンサ330、IMU335、任意選択の視標追跡システム340、任意選択の可変焦点モジュール345、およびHMDコントローラ350を含む。HMD305のいくつかの実施形態は、
図3に関連して述べたものとは異なる構成要素を有する。追加として、
図3に関連して述べた様々な構成要素によって提供される機能は、他の実施形態では、異なる手法でHMD305の構成要素間で分散されてもよい。
【0031】
撮像アセンブリ315は、HMD305の一部または全てを取り巻く局所エリアの深度情報を表すデータをキャプチャする。撮像アセンブリ315は、イメージおよび/またはビデオ情報および/またはオーディオ情報をキャプチャするHMD305に位置された1つまたは複数のカメラを含む。いくつかの実施形態では、撮像アセンブリ315は、(例えば、局所エリア内のオブジェクトの立体視ビューを有するキャプチャされたイメージに基づいて)データを使用して深度情報を計算することができる。さらに、撮像アセンブリ315は、撮像アセンブリ315での各カメラによって検出される光の量を決定する。撮像アセンブリ315は、深度情報および検出された光の量を、さらなる処理のためにHMDコントローラ350に送信することができる。撮像アセンブリ315は、
図1での撮像アセンブリの一実施形態である。
【0032】
電子ディスプレイ320は、撮像アセンブリコントローラから受信されたデータに従って、2Dまたは3Dイメージをユーザに表示する。様々な実施形態において、電子ディスプレイ320は、単一の電子ディスプレイまたは複数の電子ディスプレイ(例えば、ユーザの各眼のためのディスプレイ)を含む。電子ディスプレイ320の例としては、液晶ディスプレイ(LCD)、有機発光ダイオード(OLED)ディスプレイ、無機発光ダイオード(ILED)ディスプレイ、アクティブマトリクス有機発光ダイオード(AMOLED)ディスプレイ、透明有機発光ダイオード(TOLED)ディスプレイ、何らかの他のディスプレイ、またはそれらの何らかの組合せが挙げられる。
【0033】
光学アセンブリ325は、電子ディスプレイ320から受け取ったイメージ光を拡大し、イメージ光に関連する光学的誤差を補正し、補正されたイメージ光をHMD305のユーザに提示する。光学アセンブリ325は、複数の光学素子を含む。光学アセンブリ325に含まれる例示的な光学素子としては、絞り、フレネルレンズ、凸レンズ、凹レンズ、フィルタ、反射面、またはイメージ光に影響を与える任意の他の適切な光学素子が挙げられる。さらに、光学アセンブリ325は、異なる光学素子の組合せを含むことがある。いくつかの実施形態では、光学アセンブリ325での光学素子のうちの1つまたは複数は、部分反射または反射防止コーティングなどの1つまたは複数のコーティングを有することがある。
【0034】
光学アセンブリ325によるイメージ光の拡大および集束により、より大きなディスプレイに比べて電子ディスプレイ320を物理的に小さく、軽量に、低電力消費にすることができる。追加として、拡大は、電子ディスプレイ320によって提示されるコンテンツの視野を増大させることができる。例えば、表示されるコンテンツの視野は、表示されるコンテンツが、ユーザの視野のほぼ全て(例えば、斜めに約110度)、場合によっては全てを使用して提示されるようなものである。追加として、いくつかの実施形態では、拡大の量は、光学素子を追加または除去することによって調節することができる。
【0035】
いくつかの実施形態では、光学アセンブリ325は、1つまたは複数のタイプの光学的誤差を修正するように設計されることがある。光学的誤差の例としては、樽形または糸巻形の歪み、長手方向の色収差、または横方向の色収差が挙げられる。他のタイプの光学的誤差としては、球面収差、色収差、もしくはレンズ視野湾曲による誤差、非点収差、または任意の他のタイプの光学的誤差をさらに挙げることができる。いくつかの実施形態では、表示のために電子ディスプレイ320に提供されるコンテンツが事前に歪められ、光学アセンブリ325は、そのコンテンツに基づいて生成された電子ディスプレイ320からのイメージ光を受け取るときに、歪みを補正する。
【0036】
IMU335は、ポジションセンサ330のうちの1つまたは複数から受信された測定信号と、撮像アセンブリ315から受信された深度情報とに基づいて、HMD305のポジションを示すデータを生成する電子デバイスである。ポジションセンサ330は、HMD305の動きに応答して1つまたは複数の測定信号を生成する。ポジションセンサ330の例としては、1つもしくは複数の加速度計、1つもしくは複数のジャイロスコープ、1つもしくは複数の磁力計、動きを検出する別の適切なタイプのセンサ、IMU335の誤差修正に使用されるタイプのセンサ、またはそれらの何らかの組合せが挙げられる。ポジションセンサ330は、IMU335の外部に、IMU335の内部に、またはそれらの何らかの組合せで位置されることがある。
【0037】
1つまたは複数のポジションセンサ330からの1つまたは複数の測定信号に基づいて、IMU335は、HMD305の初期ポジションに対するHMD305の推定現在ポジションを示すデータを生成する。例えば、ポジションセンサ330は、並進運動(前/後、上/下、左/右)を測定するための複数の加速度計と、回転運動(例えば、ピッチ、ヨー、ロール)を測定するための複数のジャイロスコープを含む。いくつかの実施形態では、IMU335は、測定信号を迅速にサンプリングし、サンプリングされたデータからHMD305の推定現在ポジションを計算する。例えば、IMU335は、加速度計から受信された測定信号を時間積分して速度ベクトルを推定し、速度ベクトルを時間積分して、HMD305での基準点の推定現在ポジションを決定する。基準点は、HMD305のポジションを表すために使用され得る点である。基準点は、一般に、HMD305の向きおよびポジションに関係する空間内の一点またはポジションとして定義することができる。
【0038】
IMU335は、HMDコントローラ350から1つまたは複数のパラメータを受信する。1つまたは複数のパラメータは、HMD305の追跡を維持するために使用される。受信されたパラメータに基づいて、IMU335は、1つまたは複数のIMUパラメータ(例えば、サンプルレート)を調節することができる。いくつかの実施形態では、特定のパラメータにより、IMU335は、基準点の初期ポジションを更新し、それにより基準点の次のポジションに対応する。基準点の初期ポジションを、基準点の較正された次のポジションとして更新することは、IMU335で推定される現在ポジションに関連する累積誤差を減少する助けとなる。累積された誤差(ドリフト誤差とも呼ばれる)は、時間が経つにつれて、基準点の推定ポジションを、基準点の実際のポジションから「ドリフト」させる。HMD305のいくつかの実施形態では、IMU335は、専用ハードウェア構成要素であり得る。他の実施形態では、IMU335は、1つまたは複数のプロセッサに実装されたソフトウェア構成要素であり得る。
【0039】
いくつかの実施形態では、視標追跡システム340は、HMD305に統合される。視標追跡システム340は、HMD305を着用しているユーザの眼に関連する視標追跡情報を決定する。視標追跡システム340によって決定された視標追跡情報は、ユーザの眼の向きに関する情報、すなわち視線の角度に関する情報を含むことがある。いくつかの実施形態では、視標追跡システム340は、光学アセンブリ325に統合される。視標追跡システム340の一実施形態は、照明源および撮像デバイス(カメラ)を備えることがある。
【0040】
いくつかの実施形態では、可変焦点モジュール345は、HMD305にさらに統合される。可変焦点モジュール345は、視標追跡システム340によって決定された視標追跡情報を取得するために、視標追跡システム340に連結されることが可能である。可変焦点モジュール345は、視標追跡システム340から取得された決定された視標追跡情報に基づいて、電子ディスプレイ320上に表示された1つまたは複数のイメージの焦点を調節するように構成されることが可能である。このようにして、可変焦点モジュール345は、イメージ光に関する両眼連動調節の不一致を緩和することができる。可変焦点モジュール345は、電子ディスプレイ320、および光学アセンブリ325の少なくとも1つの光学素子のうちの少なくとも1つと(例えば、機械的または電気的に)インターフェースされることが可能である。次に、可変焦点モジュール345は、視標追跡システム340から取得された決定された視標追跡情報に基づいて、電子ディスプレイ320、および光学アセンブリ325の少なくとも1つ光学素子のうちの少なくとも1つのポジションを調節することによって、電子ディスプレイ320上に表示された1つまたは複数のイメージの焦点を調節するように構成されることが可能である。ポジションを調節することによって、可変焦点モジュール345は、ユーザの眼に向けて電子ディスプレイ320から出力されたイメージ光の焦点を変化させる。可変焦点モジュール345は、視標追跡システム340から取得された決定された視標追跡情報に少なくとも部分的に基づいて、表示されたイメージの中心窩適応レンダリングを行うことによって、電子ディスプレイ320上に表示されたイメージの解像度を調節するように構成されることも可能である。この場合、可変焦点モジュール345は、妥当なイメージ信号を電子ディスプレイ320に提供する。可変焦点モジュール345は、ユーザの視線の中心窩領域においてのみ、電子ディスプレイ320に関する最大ピクセル密度のイメージ信号を提供し、電子ディスプレイ320の他の領域では、より低いピクセル密度のイメージ信号を提供する。1つの実施形態において、可変焦点モジュール345は、撮像アセンブリ315によって取得された深度情報を利用して、例えば、電子ディスプレイ320上で提示するためのコンテンツを生成することができる。
【0041】
HMDコントローラ350は、撮像アセンブリ315から受信された情報に基づいて、HMD305に関するコンテンツを処理する。
図3に示される例において、HMDコントローラ350は、アプリケーションストア355、追跡モジュール360、およびエンジン365を含む。HMDコントローラ350のいくつかの実施形態は、
図3に関連して述べたものとは異なるモジュールまたは構成要素を有する。同様に、以下でさらに述べる機能は、
図3に関連して述べたものとは異なる手法で、HMDコントローラ350の構成要素間で分散させることができる。
【0042】
アプリケーションストア355は、HMDコントローラ350によって実行するための1つまたは複数のアプリケーションを格納する。アプリケーションは、命令の群であり、プロセッサによって実行されるとき、ユーザに提示するためのコンテンツを生成する。アプリケーションによって生成されるコンテンツは、HMD305または周辺デバイス310の移動を介してユーザから受信された入力に応答するものであることが可能である。アプリケーションの例としては、ゲームアプリケーション、会議アプリケーション、ビデオ再生アプリケーション、または他の適切なアプリケーションが挙げられる。
【0043】
追跡モジュール360は、1つまたは複数の較正パラメータを使用してHMDシステム300を較正し、1つまたは複数の較正パラメータを調節して、HMD305のポジションまたは周辺デバイス310のポジションの決定の際の誤差を低減することができる。例えば、追跡モジュール360は、撮像アセンブリ315の焦点を調節して、撮像アセンブリ315によってキャプチャされたオブジェクトのポジションをより正確に決定するために、較正パラメータを撮像アセンブリ315に通信する。追跡モジュール360によって行われる較正は、HMD305におけるIMU335、および/または周辺デバイス310に含まれるIMU335から受信された情報も考慮に入れる。追加として、周辺デバイス310の追跡が失われた(例えば、撮像アセンブリ315が、周辺デバイス310の少なくとも一部の照準線を見失う)場合、追跡モジュール360は、HMDシステム300のいくつかまたは全てを再較正することができる。
【0044】
追跡モジュール360は、撮像アセンブリ315、1つもしくは複数のポジションセンサ330、IMU335、またはそれらの何らかの組合せからの情報を使用して、HMD305の移動または周辺デバイス310の移動を追跡する。例えば、追跡モジュール345は、撮像アセンブリ315からの情報に基づいて、局所エリアのマッピングにおいてHMD305の基準点のポジションを決定する。追跡モジュール360は、IMU335からのHMD305のポジションを示すデータを使用すること、または周辺デバイス310に含まれるIMU335からの周辺デバイス310のポジションを示すデータを使用すること、をそれぞれ行って、HMD305の基準点または周辺デバイス310の基準点のポジションを決定することもできる。追加として、いくつかの実施形態において、追跡モジュール360は、IMU335からのポジションまたはHMD305を示すデータ、ならびに撮像アセンブリ315からの局所エリアの表現、の一部を使用して、HMD305の将来のロケーションを予測することができる。追跡モジュール360は、HMD305または周辺デバイス310の推定または予測された将来のポジションをエンジン355に提供する。
【0045】
エンジン365は、撮像アセンブリ315から受信された情報(例えば、深度および/または露出)を処理する。受信された情報を使用して、エンジン365は、撮像アセンブリ315のカメラに関する露出設定を同期させる。
図1に関して述べたように、撮像アセンブリ315での各カメラの露出設定の中心は中心時点に合わされ、それにより、撮像アセンブリ315によってキャプチャされたイメージは、情報を多く含み、同じフレームのものであるようにする。撮像アセンブリ315でのカメラの露出長さの中心を合わせるために、エンジン365は、各カメラの露出長さの中点を決定し、中点を中心時点に位置合わせする。追加として、エンジン365は、カメラの露出長さに従って、撮像アセンブリ315での各カメラのイメージキャプチャに関する適切な時間遅延を決定する。決定された露出設定および同期情報に基づいて、エンジン365は、撮像命令を生成して、撮像アセンブリ315および/または周辺デバイス310に送信する。
図3の実施形態では、エンジン365は、独自のタイムベースを有し、そのタイムベースによって、中心時点を決定し、各カメラに関する対応する時間遅延を計算する。HMDコントローラ350は、周辺デバイス310と通信して、エンジン365のユニットおよび周辺デバイス310のマイクロコントローラを同じタイムベースで同期させることができる。ユニットを同期させることにより、周辺デバイス310が、HMD305の撮像命令に従って同期パルスを送信できるようになる。
【0046】
また、エンジン365は、撮像アセンブリ315および追跡モジュール360からの情報を使用して、局所エリアモデルを更新する。局所エリアモデルは、局所エリア内のHMD305のロケーションに基づいて、HMD305の一部または全てを取り巻くエリア(すなわち「局所エリア」)のマッピング関数を表すことができる。局所エリアモデルは、HMD305の様々なポジションおよび向きについて、撮像アセンブリ315の各カメラに関する露出設定を提供し、環境内でHMD305のロケーションおよび向きが変化するときに露出設定を調節できるようにする。エンジン365は、撮像アセンブリ315によってキャプチャされた立体視イメージから深度を計算する際に、1つまたは複数の技法を使用して環境内のオブジェクトの深度を計算することができる。マッピングされたオブジェクトから、HMDコントローラは、環境内のHMD305のロケーションを決定し、環境の局所エリアモデルを更新する。また、追跡モジュール360は、HMD305が環境内でロケーションおよび向きを変えるときに、HMD305のポジション情報で局所エリアモデルを更新することも可能である。エンジン365は、局所エリアモデルを使用して、HMD305の新たなロケーションおよび向きに基づいて、撮像アセンブリ315での各カメラに関して適切な露出設定を決定する。撮像アセンブリ315での各カメラに関して適切な露出設定が決定されると、エンジン365は、露出設定を同期させ、撮像アセンブリ315のための撮像命令を生成する。さらに、エンジン365は、局所エリアモデルを、HMD305の新しいロケーションおよび向きで更新する。いくつかの実施形態では、エンジン365は、第1のフレームまたは第1のフレームセットから撮像アセンブリ315によって検出された深度情報および光の量を使用して局所エリアモデルを生成して、HMD305を取り巻く環境内のオブジェクトをマッピングする。他の実施形態では、局所エリアモデルは、エンジン365によってプリロードまたはダウンロードされる。
【0047】
エンジン365は、局所エリアモデルと併せて、追跡モジュール360からの情報をさらに使用することができる。追跡モジュール360からの情報を使用して、エンジン365は、HMD305の将来のロケーションおよび向きを予測することができる。その後、局所エリアモデルを使用して、エンジン365は、HMD305の予測される将来のロケーションおよび向きについて、撮像アセンブリ315での各カメラに関して適切な露出設定を決定する。局所エリアモデルは、エンジン365が撮像アセンブリ315でのカメラの露出設定を効率的に調節できるようにし、エンジン365は、HMD305の各新たなロケーションおよび/または向きで撮像アセンブリ315によって検出される深度情報および光の量を分析する必要がない。HMD305のロケーションおよび向きが環境内で変化するとき、エンジン365は、撮像アセンブリ315から検出された深度情報および光の量を使用して局所エリアモデルを更新することができる。追加として、撮像アセンブリ315は、検出された深度情報および光の量を特定の時間間隔でエンジン365に送信して、環境内で発生し得る光のレベルの変化を考慮に入れ、それに従って局所エリアモデルが更新されることを保証するように構成されることがある。
【0048】
また、エンジン365は、HMDシステム300内でアプリケーションを実行し、追跡モジュール360からHMD305のポジション情報、加速度情報、速度情報、予測される将来のポジション、またはそれらの何らかの組合せを受信する。受信された情報に基づいて、エンジン365は、ユーザに提示するために電子ディスプレイ320に提供するコンテンツを決定する。例えば、受信された情報が、ユーザが左を見ていることを示す場合、エンジン365は、仮想環境における、または追加のコンテンツで局所エリアを増強した環境におけるユーザの移動を反映する電子ディスプレイ320用のコンテンツを生成する。追加として、エンジン365は、周辺デバイス310から受信されたアクションリクエストに応答してHMDコントローラ350上で実行されているアプリケーションにおけるアクションを実施し、アクションが実施されたというフィードバックをユーザに提供する。提供されるフィードバックは、HMD305を介した視覚的もしくは聴覚的フィードバック、または周辺デバイス310を介した触覚フィードバックであり得る。
【0049】
いくつかの実施形態では、視標追跡システム340から受信された視標追跡情報(例えば、ユーザの眼の向き)に基づいて、エンジン365は、ユーザに提示するために電子ディスプレイ320に提供されるコンテンツの解像度を決定する。エンジン365は、ユーザの視線の中心窩領域において、電子ディスプレイ320での最大ピクセル解像度を有するコンテンツを提供し、電子ディスプレイ320の他の領域では、より低いピクセル解像度を提供し、それにより、ユーザの視覚体験を損なうことなく、HMD305でより少ない電力消費を実現し、HMDコントローラ350の計算サイクルを削減する。いくつかの実施形態では、エンジン365は、視標追跡情報をさらに使用して、オブジェクトが電子ディスプレイ320に表示される場所を調節して、両眼連動調節の不一致を防止することができる。
【0050】
図4は、一実施形態によるHMD100の追跡領域400を示す。追跡領域400は、HMD100での撮像アセンブリによって観察可能なHMD100を取り巻く局所エリアの一部分である。追跡領域400内のオブジェクトは、オブジェクトのイメージ情報をキャプチャするカメラ115、120、125、130によって検出される。
図4に示されるように、追跡領域400は、いくつかのより小さい領域から構成され、各領域は、HMD100でのカメラ115、120、125、130の視野によって提供されるカバレッジのタイプに対応する。
図4の実施形態では、追跡ボリューム400は、第1の領域405、第2の領域410、第3の領域415、および3つの重畳領域420を含む。
【0051】
第1の領域405は、カバレッジの単眼領域を表す。
図4の実施形態では、第1の領域405は、カメラ120の視野によって提供される。
図1に関して述べたように、カメラ120は、HMD100の前部剛体105の左上隅に位置決めされ、前部剛体105の側部および上部に向けて外向きおよび上向きになるように向きを定められ、カメラ120は、120~180度の範囲内の視野を有する。したがって、第1の領域405は、ユーザの左上の視野に位置された局所エリアのオブジェクトを含む。HMD100を着用しているユーザにとって、関心のあるオブジェクトは、ユーザの眼の高さ以下に位置している可能性が高い。その結果、ユーザの視野の左上隅にあるオブジェクトに関する深度情報の決定は望ましいものでないことがある。その結果、局所エリアの第1の領域405内のオブジェクトに関しては、単一のカメラが十分な視点を提供する。いくつかの実施形態では、この領域に異なるタイプのカバレッジを有することが望ましいことがある。例えば、HMD100は、関心のあるオブジェクト(例えば、凧、飛行機など)がユーザの眼の高さよりも上に位置している屋外環境内にあり得る。HMD100でのカメラのポジションおよび向きは、HMD100の環境により良く適合するように調節することができる。
【0052】
第2の領域410は、カバレッジの単眼領域を表す。
図4の実施形態では、第2の領域410は、カメラ115の視野によって提供される。
図1に関して述べたように、カメラ115は、HMD100の前部剛体105の左上隅に位置決めされ、前部剛体105の側部および上部に向けて外向きおよび上向きになるように向きを定められ、カメラ115は、120~180度の範囲内の視野を有する。したがって、第2の領域410は、ユーザの右上の視野に位置された局所エリアのオブジェクトを含む。第1の領域405と同様に、関心のあるオブジェクトはユーザの眼の高さ以下に位置している可能性が高いので、ユーザの視野の右上隅にあるオブジェクトに関する深度情報の決定は望ましいものでないことがある。その結果、局所エリアの第2の領域410内のオブジェクトに関しては、単一のカメラが十分な視点を提供する。いくつかの実施形態では、この領域に異なるタイプのカバレッジを有することが望ましいことがある。HMD100でのカメラのポジションおよび向きは、HMD100の環境により良く適合するように調節することができる。
【0053】
第3の領域415は、カバレッジの立体視領域を表す。
図4の実施形態では、第3の領域415は、カメラ125、130の視野によって提供される。
図1に関して述べたように、カメラ125、130は、前部剛体105の底縁部に沿って位置決めされ、下向きに、互いに平行(またはほぼ平行)に向きを定められ、カメラ125、130は、120~180度の範囲内の視野を有する。カメラ125、130は、実質的に同じ向きを有し、カメラ125とカメラ130との視野が完全に(またはほぼ完全に)重なり合い、第3の領域415内のオブジェクトに関する立体視カバレッジを提供する。第3の領域415は、ユーザの眼の高さ以下に位置している局所エリアのオブジェクトを含む。前述したように、この領域内のオブジェクトは、ユーザにとってより高い関心があり得る。その結果、この領域の立体視カバレッジは、複数の視点によりHMD100が第3の領域415内のオブジェクトに関して十分な深度情報を決定することが可能になるので、望ましい。
【0054】
いくつかの実施形態では、ユーザが、周辺デバイス、例えば周辺デバイス310を自分の手に保持することがある。
図3に関して述べたように、ユーザは、周辺デバイスを使用して、HMDからのリクエストを送受信する。追加として、周辺デバイスは、撮像アセンブリによって検出された同期パルスを送信することによって、撮像アセンブリの露出設定を同期させるプロセスを容易にする。したがって、周辺デバイスは、高い関心のあるオブジェクトであり、周辺デバイスの十分なイメージ情報をキャプチャすることが望ましい。典型的には、ユーザは周辺デバイスを中立ポジションに保持し、この中立ポジションは、ユーザの腕が両脇に下がっていることによって特徴付けられる。
図4の実施形態では、カメラ125、130は、ユーザが頭を動かしている場合でも周辺デバイスが第3の領域415内に入る可能性が高いように、ユーザの身体の大部分を観察するように下向きに傾斜するように位置決めされている。HMD100は周辺デバイスを観察するための2つの異なる地点を有するので、第3の領域415の立体視カバレッジは、周辺デバイスの部分的な妨害を軽減する助けとなる。また、第3の領域415に関するカメラ構成は、ユーザが手を動かす場合に周辺デバイスを追跡する精度を改善し、第3の領域415内の他のオブジェクトに関してキャプチャされる深度情報も改善する。
【0055】
重畳領域420はそれぞれ、カバレッジの立体視領域を表す。
図4の実施形態では、重畳領域420は、隣接するカメラ(例えば、カメラ115と120、カメラ115と130、およびカメラ120と125)間の重畳視野によって提供される。隣接するカメラ間の重畳領域420により、第1の視野からの詳細を第2の視野に引き渡すことが可能になり、異なるカメラからのフレームを繋ぎ合わせることができるようになる。また、重畳領域420内にあるオブジェクトを使用して、HMD100のカメラを較正し、使用中のHMD構成要素の熱膨張により生じ得る問題をさらに修正することもできる。
【0056】
図5は、一実施形態による、HMD100でのカメラ115、120、125、130のイメージキャプチャを同期させるための方法を示す。
図1に関して述べたように、カメラ115、120、125、130は、撮像アセンブリに適用されるグローバル露出設定ではなく、個別の露出設定を有するように構成されている。この構成により、第1のカメラが第2のカメラよりもはるかに長い露出を有することが可能になり、これにより、撮像アセンブリが、HMD100を取り巻く局所エリア内の異なる光範囲をキャプチャすることが可能になる。HMD100は、局所エリアから所望の情報を収集するために露出を駆動するように局所エリアの異なる部分を選択する。
図5に示されているように、各カメラ115、120、125、130は、それぞれ異なる長さの露出フレーム505、510、515、520を有する。カメラ115、120、125、130のイメージキャプチャを同期させるために、HMDコントローラ(例えば、HMDコントローラ350)は、露出フレーム505、510、515、520の中心時点525、および各カメラ115、120、125、130に関する対応する時間遅延530を決定する。時間遅延530は、カメラ115、120、125、130のうちの1つまたは複数によって検出された同期(「sync」)パルス535に対して測定される。
【0057】
中心時点525は、各露出フレーム505、510、515、520の中心が合わせられる時点である。HMDコントローラは、各露出フレーム505、510、515、520の長さを評価し、各露出フレームの中点を決定する。次いで、HMDコントローラは、各露出フレームの中点を中心時点525に位置合わせする。この構成は、カメラ115、120、125、130が個々の露出設定を維持しながら同じフレームをキャプチャすることを保証する。
【0058】
時間遅延530は、基準時点とカメラに関する露出フレームの開始との間に経過する指定された時間量である。それぞれの時間遅延530を有するように各カメラ115、120、125、130をプログラムすると、それぞれの露出フレーム505、510、515、520の中心が中心時点525に合わされるように、各カメラ115、120、125、130が適切な時間にイメージキャプチャを開始することが保証される。各露出フレーム505、510、515、520が異なる長さを有することがあるので、各カメラ115、120、125、130に関する時間遅延はそれに応じて異なる。例えば、カメラ115の露出フレーム505がカメラ120の露出フレーム510よりも長いので、カメラ115は、カメラ120よりも短い時間遅延を有する。したがって、カメラ115は、露出フレーム505、510の中点が中心時点525に沿って揃うように、カメラ120よりも前にイメージキャプチャを開始する。
図5の実施形態では、時間遅延530は、基準時点としての同期(「sync」)パルス535に対して測定される。
【0059】
同期パルス535は、各カメラ115、120、125、130に関する時間遅延530の開始をトリガする。同期パルス535は、撮像アセンブリの1つまたは複数のカメラによって検出される、周辺デバイスなどの外部デバイスまたはシステムのコンソールによって放出される信号であり得る。いくつかの実施形態では、同期パルス535は、可視光範囲内、赤外線、またはカメラ115、120、125、130によって検出可能な任意の他の光範囲内の1つまたは複数の同時のフラッシュであり得る。いくつかの実施形態では、同期パルス535は、
図5に示されているように、各カメラ115、120、125、130によって検出されることがある。いくつかの実施形態では、同期パルス535は、少なくとも1つのカメラによって検出されることがあり、HMDコントローラは、その後、イベント情報を各カメラ115、120、125、130に中継し、それによって、各カメラ115、120、125、130に関する時間遅延530の開始をトリガすることができる。
図5の実施形態では、HMDコントローラは、それぞれの露出フレーム505、510、515、520に基づいて、中心時点525、および各カメラ115、120、125、130に関する適切な時間遅延530を決定すると、各カメラに撮像命令を送信する。この構成は、カメラ115、120、125、130の異なる露出長さに対応し、各カメラによって同じフレームがキャプチャされることを保証する。HMD100が、HMD100の環境内でロケーションおよび向きを変えるとき、各カメラの露出設定を調節することができ、したがって、それに応じて同期情報が調節される。
【0060】
いくつかの実施形態では、HMD100は、ユーザによって保持される周辺デバイスのポジションおよび移動を追跡する。
図1に関して述べたように、周辺デバイスは、ユーザがHMD100にアクションリクエストを送信し、HMD100から応答を受信することを可能にするデバイスである。
図5の実施形態では、周辺デバイスは、カメラ115、120、125、130のうちの1つまたは複数によって検出することができる追跡パルス540を放出するように構成されている。追跡パルス540は、可視光範囲内、赤外線、またはカメラ115、120、125、130によって検出可能な任意の他の光の1つまたは複数のフラッシュであり得る。カメラ115、120、125、130はそれぞれ異なる露出長さを有するので、周辺デバイスは、各カメラ115、120、125、130の露出フレーム中に追跡パルス540を検出することができるように、特定の時点で追跡パルス540を放出する。
図5の実施形態では、周辺デバイスは、中心時点525で追跡パルス540を放出する。周辺デバイスは、HMD100と同期されたタイムベースを有するマイクロコントローラを有することがあり、周辺デバイスが正確な時点で追跡パルス540を放出することを可能にする。
【0061】
図6は、一実施形態による、
図1に示されているHMD100で実施され得る、局所エリア内でのHMDのロケーションを決定するプロセス600を示す流れ図である。
図6のプロセス600は、HMD100の構成要素(例えば、撮像アセンブリ315、HMDコントローラ350、追跡モジュール360、エンジン365)、周辺デバイス310、またはそれらの何らかの組合せによって実施することができる。他の実施形態では、他のエンティティ(例えば、HMDシステムのコンソール)が、プロセスのステップの一部または全てを実施することがある。同様に、いくつかの実施形態は、異なるおよび/または追加のステップを含むことがあり、またはステップを異なる順序で実施することがある。
【0062】
HMD100は、HMD100での複数のカメラに関するイメージ情報を(例えば撮像アセンブリを介して)収集する(605)。イメージ情報は、局所エリア内の1つもしくは複数のオブジェクトの深度情報、および/またはカメラのセンサに入射する光の量を含むことがある。いくつかの実施形態では、イメージ情報は、局所エリア内でのHMD100のロケーションに基づいて局所エリアモデルから収集される。いくつかの実施形態では、イメージ情報は、撮像アセンブリから収集される。
【0063】
撮像アセンブリの各カメラについて、HMD100は、イメージ情報を使用して露出設定を決定する(610)。露出設定は、例えば、絞りサイズ、シャッタスピード、ゲイン、またはそれらの何らかの組合せを含むことがある。いくつかの実施形態では、HMD100での各カメラは、個別の露出設定を有するように構成され、これにより、撮像アセンブリが、局所エリア内の異なる光範囲を取り込み、局所エリアの様々な部分を露出して所望の情報を収集できるようにする。これらの実施形態では、HMD100は、各カメラに関する同期情報を生成して、カメラの露出設定を同期させ、これは、各カメラによって同じフレームがキャプチャされることを保証する。同期情報は、各カメラの露出長さの中心が合わされる中心時点と、同期パルスに対して測定される各カメラに関する時間遅延とを含む。
図1に関して述べたように、同期パルスは、外部デバイス(例えば、周辺デバイスまたはシステムのコンソール)からHMD100に送信されることがある。露出設定および同期情報に基づいて、HMD100は、各カメラに関する撮像命令を生成する。
【0064】
HMD100は、複数のカメラを使用して局所エリアのイメージをキャプチャする(615)。HMD100によって生成された撮像命令に従って、イメージがキャプチャされる(615)。いくつかの実施形態では、HMD100は、ビデオおよび/またはオーディオ情報もキャプチャすることがある。キャプチャされたイメージは、局所エリアの1つまたは複数のオブジェクトを含む。
図1および4に関して述べたように、撮像アセンブリのカメラのポジションおよび向きは、カメラが局所エリアの異なる部分の情報をキャプチャすることを可能にする。例えば、HMD100でのカメラ115、120は、ユーザの視野内の局所エリアの右上および左上の部分をキャプチャし、カメラ125、130は、ユーザの眼の高さ以下にある局所エリアの部分をキャプチャする。撮像命令は、撮像アセンブリのカメラに、同じフレームの局所エリアの異なる部分の情報を提供するイメージをキャプチャさせる。
【0065】
HMD100は、局所エリア内の1つまたは複数のオブジェクトの深度情報を決定する(620)。深度情報は、HMD100によってキャプチャされたイメージから決定される。
図1および4に関して述べたように、カメラのポジションおよび向きは、HMD100でのカメラによって提供されるカバレッジのタイプを決定する。HMD100は、カメラの視野の重畳領域を有するカメラを含む。これらの重畳領域内のオブジェクトは、複数のカメラによって観察され、これは、各オブジェクトの複数の視点を提供する。異なる視点間のオブジェクトのポジションの相対的な差を計算することによって、HMD100は、撮像アセンブリに対するオブジェクトの距離を決定する。
【0066】
HMD100は、決定された深度情報を使用して、局所エリアの局所エリアモデルを更新する(625)。
図3に関して述べたように、いくつかの実施形態では、HMD100は、環境内でのHMD100のロケーションに基づいて、HMD100の環境のマッピング関数を表す局所エリアモデルを生成する。他の実施形態では、局所エリアモデルは、HMD100にプリロードまたはダウンロードされる。
【0067】
HMD100は、更新されたモデルを使用して、局所エリア内でのそのロケーションを決定する(630)。いくつかの実施形態では、局所エリアモデルは、HMD100でのカメラに関する露出設定をさらに含む。これらの実施形態では、局所エリアモデルは、環境内でのHMD100のロケーションおよび向きに基づいて各カメラに関する露出設定を提供し、それにより、HMD100は、HMD100の決定されたロケーションに関する適切な露出設定を決定する。この構成により、環境内でHMD100のロケーションおよび向きが変化するときに露出設定を調節できるようにする。いくつかの実施形態では、HMD100は、追跡モジュールからの情報に基づいて、局所エリアモデルを使用して、HMD100の将来のロケーションをさらに予測する。局所エリアモデルが露出情報を含む実施形態では、HMD100は、HMD100の予測される将来のロケーションに関する適切な露出設定を決定する。
追加の構成情報
【0068】
本開示の実施形態の前述の説明は、例証のために提示されてきたが、網羅的であること、または、開示された厳密な形式に本開示を限定すること、を意図するものではない。上記の開示の観点から多くの修正および変形が可能であるということを当業者は正しく認識するであろう。
【0069】
本説明のいくつかの部分は、情報の操作に関するアルゴリズムおよび象徴的な表現の観点から本開示の実施形態を説明している。これらのアルゴリズム的説明および表現は、一般に、これらの作業の実体を効果的に他の当業者に伝えるために、データ処理の当業者によって使用される。これらの動作は、機能的、計算的、または論理的に説明されるが、コンピュータプログラムもしくは同等の電気回路、マイクロコード、または同様のものによって実行されるものと理解される。さらに、一般性を損なうことなく、動作のこれらの配列をモジュールと呼ぶことが便利であると時々証明してきた。説明された動作およびこれらの関連付けられたモジュールは、ソフトウェア、ファームウェア、ハードウェア、またはこれらのいずれかの組合せに含まれることも可能である。
【0070】
本明細書において説明されるステップ、動作、または処理のいずれかは、単独で、または他のデバイスと組み合わせて、1つまたは複数のハードウェアモジュールまたはソフトウェアモジュールによって、行われることまたは実行されることが可能である。1つの実施形態において、ソフトウェアモジュールは、説明されたステップ、動作、または処理のいずれかまたは全てを行うためにコンピュータプロセッサによって実行されることが可能な、コンピュータプログラムコードを収めるコンピュータ可読媒体を含むコンピュータプログラム製品によって実行される。
【0071】
本開示の実施形態は、本明細書における動作を行うための装置に関するものであることも可能である。この装置は、必要な目的のために具体的に構築されることが可能であり、および/またはこの装置は、コンピュータに格納されたコンピュータプログラムによって選択的にアクティブにされるか、もしくは再構成された汎用コンピューティングデバイスを備えることができる。このようなコンピュータプログラムは、コンピュータシステムバスに連結されることが可能な、非一時的な有形のコンピュータ可読ストレージ媒体、または電子命令を格納するのに適した任意のタイプの媒体に格納されることが可能である。さらに、明細書において参照されるいずれかのコンピューティングシステムは単一のプロセッサを含むことができ、または向上した計算能力のために複数のプロセッサ設計を用いるアーキテクチャであることも可能である。
【0072】
本開示の実施形態は、本明細書において説明される計算処理によって生み出される製品に関するものであることも可能である。このような製品は、計算処理から生じる情報を含むことができ、ここで、情報は、非一時的な有形のコンピュータ可読ストレージ媒体に格納され、本明細書において説明されるコンピュータプログラム製品または他のデータの組合せのいずれかの実施形態を含むことができる。
【0073】
最後に、明細書において使用される言語は、可読性および教授目的のために主に選択されてきたが、発明の主題を詳しく説明すること、または制限することを行うように選択されなかった可能性がある。したがって、本開示の範囲は、本詳細な説明によってではなく、むしろ本明細書に基づく出願に関して発行するいずれかの請求項によって限定されるということを意図するものである。したがって、本実施形態の開示は、以下の特許請求の範囲において示される本開示の範囲の例証であることを意図するものであるが、限定を意図するものではない。