(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-06-19
(45)【発行日】2025-06-27
(54)【発明の名称】実世界画像において拡張現実オブジェクトを組み合わせるための方法および装置
(51)【国際特許分類】
G06T 19/00 20110101AFI20250620BHJP
【FI】
G06T19/00 600
(21)【出願番号】P 2022571306
(86)(22)【出願日】2020-05-22
(86)【国際出願番号】 US2020070069
(87)【国際公開番号】W WO2021236173
(87)【国際公開日】2021-11-25
【審査請求日】2023-05-19
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ターナー,エリック
(72)【発明者】
【氏名】立野 圭祐
(72)【発明者】
【氏名】ツォツォス,コンスタンティン・ニコラス・ジョン
(72)【発明者】
【氏名】コードル,アダルシュ
(72)【発明者】
【氏名】グプタ,バイバブ
(72)【発明者】
【氏名】チャーサー,アンブラス
【審査官】鈴木 肇
(56)【参考文献】
【文献】国際公開第2019/030235(WO,A1)
【文献】特表2016-514384(JP,A)
【文献】特開2019-125345(JP,A)
【文献】特開2014-106543(JP,A)
【文献】特開2012-026895(JP,A)
【文献】特開2015-125621(JP,A)
【文献】国際公開第2019/123729(WO,A1)
【文献】国際公開第2018/223152(WO,A1)
【文献】米国特許出願公開第2017/0116708(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 1/00
G06T 11/60-13/80
G06T 17/05
G06T 19/00-19/20
(57)【特許請求の範囲】
【請求項1】
方法であって、
拡張現実(AR)アプリケーションの第1の時間にカメラによってキャプチャされた第1のフレームに関連付けられる第1の深度画像を受信することを含み、前記第1の深度画像は、実世界空間の少なくとも第1の部分を表し、前記方法はさらに、
前記ARアプリケーションの前記第1の時間の後の第2の時間に前記カメラによってキャプチャされた第2のフレームに関連付けられる第2の深度画像を受信することとを含み、前記第2の深度画像は、前記実世界空間の少なくとも第2の部分を表し、前記方法はさらに、
前記第2の深度画像における欠落した深度情報または無効な深度情報を特定すること、および、
前記欠落した深度情報または無効な深度情報を、前記第1の深度画像からの前記欠落した深度情報または無効な深度情報に対応する深度情報と置換すること、によってブレンド深度画像を生成することと、
前記ブレンド深度画像に基づいて生成された実世界画像と組み合わされたARオブジェクトを表示することとを含む、方法。
【請求項2】
前記第1の深度画像は、前記ARアプリケーションに関連付けられるバッファに記憶される前記ARアプリケーションのフレームを表す複数の深度画像のうちの1つである、請求項1に記載の方法。
【請求項3】
前記第1の深度画像は、前記ARアプリケーションに関連付けられるバッファに記憶される前記ARアプリケーションのフレームを表す複数の深度画像のうちの1つであり、前記方法は、さらに、
前記バッファに記憶される前記複数の深度画像の一部を選択することと、
前記複数の深度画像の前記一部に基づいてデータ構造を生成することとを含み、前記データ構造は前記実世界空間を表し、前記データ構造は、深度情報、位置情報、および方向情報を含み、前記方法は、さらに、
前記生成されたデータ構造を記憶することを含む、請求項1に記載の方法。
【請求項4】
前記第1の深度画像は、前記ARアプリケーションに関連付けられるバッファに記憶される前記ARアプリケーションのフレームを表す複数の深度画像のうちの1つであり、前記方法は、さらに、
前記バッファに記憶される前記複数の深度画像の一部を受信することと、
前記複数の深度画像の前記一部に基づいて複数のサーフェルを生成することとを含み、前記複数のサーフェルは前記実世界空間を表し、前記方法はさらに、
前記生成された複数のサーフェルを記憶することを含む、請求項1に記載の方法。
【請求項5】
さらに、
深度情報、位置情報、および方向情報を含むデータ構造を受信することと、
前記データ構造を第3の深度画像としてレンダリングすることと、
前記第3の深度画像を前記実世界画像とブレンドすることとを含む、請求項1~4のいずれか1項に記載の方法。
【請求項6】
さらに、
前記実世界空間を表す複数のサーフェルを受信することと、
前記複数のサーフェルを第3の深度画像としてレンダリングすることと、
前記第3の深度画像を前記実世界画像とブレンドすることとを含む、請求項1~4のいずれか1項に記載の方法。
【請求項7】
前記実世界画像内において前記ARオブジェクトを組み合わせることは、深度に基づいて、前記実世界画像内のピクセルの一部を前記ARオブジェクト内のピクセルの一部と置換することを含む、請求項1~6のいずれか1項に記載の方法。
【請求項8】
前記実世界画像を生成することは、前記第2の深度画像内のピクセルの一部を、前記第1の深度画像の一部と置換することを含む、請求項1~7のいずれか1項に記載の方法。
【請求項9】
前記欠落した深度情報または無効な深度情報は、少なくとも1つのピクセルに対応し、
前記実世界画像を生成することは、前記少なくとも1つのピクセルを前記第1の深度画像の一部と置換することを含む、請求項1~7のいずれか1項に記載の方法。
【請求項10】
さらに、
前記実世界空間を表す複数のサーフェルを受信することと、
前記複数のサーフェルをレンダリングすることとを含み、
前記第2の深度画像は、少なくとも1つのピクセルを欠いており、
前記実世界画像を生成することは、前記少なくとも1つのピクセルを、前記レンダリングされた複数のサーフェルの一部と置換することを含む、請求項1~9のいずれか1項に記載の方法。
【請求項11】
前
記第1の深度画像は、前記第1の深度画像が前記実世界空間をある位置において表す尤度を示す位置信頼度を含む、請求項1~10のいずれか1項に記載の方法。
【請求項12】
方法であって、
拡張現実(AR)アプリケーションのフレームに関連付けられる深度データを受信することを含み、前記深度データは、実世界空間の少なくとも一部を表し、前記方法はさらに、
前記深度データを、前記ARアプリケーションのフレームを表す複数の深度画像のうちの1つとして、前記ARアプリケーションに関連付けられるバッファに記憶することを含み、前記フレームは単一のカメラによってキャプチャされ、前記方法はさらに、
前記深度データにおける欠落した深度情報または無効な深度情報を特定することと、
前記バッファに記憶される、前記欠落した深度情報または無効な深度情報に対応する前記複数の深度画像の一部を選択することと、
前記欠落した深度情報または無効な深度情報を前記複数の深度画像の前記一部と置換することによりデータ構造を生成することとを含み、前記データ構造は前記実世界空間を表し、前記データ構造は、深度情報、位置情報、および方向情報を含み、前記方法は、さらに、
前記生成されたデータ構造を記憶することを含む、方法。
【請求項13】
前記データ構造は、複数の表面要素(サーフェル)を含む、請求項12に記載の方法。
【請求項14】
前記データ構造は、サーバと関連して記憶される、請求項12または13に記載の方法。
【請求項15】
前記複数の深度画像の前記一部を選択することは、前記ARアプリケーションを実行する複数のデバイス上の複数のバッファから前記複数の深度画像を選択することを含む、請求項12~14のいずれか1項に記載の方法。
【請求項16】
前記記憶された深度データは、前記深度データがある位置において前記実世界空間を表す尤度を示す位置信頼度を含む、請求項12~15のいずれか1項に記載の方法。
【請求項17】
方法であって、
拡張現実(AR)アプリケーションの第1のフレームに関連付けられる第1の深度データを受信することを含み、前記第1の深度データは、実世界空間の少なくとも一部を表し、前記第1のフレームはカメラによってキャプチャされ、前記方法はさらに、
前記ARアプリケーションに関連付けられる前記実世界空間の少なくとも第2の部分を表すデータ構造を受信することを含み、前記データ構造は、前記カメラによってキャプチャされた第2のフレームと関連付けられ、前記データ構造は、深度情報、位置情報、および方向情報を含み、前記方法はさらに、
前記第1の深度データにおける欠落した深度情報または無効な深度情報を特定すること、および、
前記欠落した深度情報または無効な深度情報を、前記データ構造からの前記欠落した深度情報または無効な深度情報に対応する深度情報と置換すること、によってブレンド深度画像を生成することと、
前記ブレンド深度画像に基づいて生成された実世界画像と組み合わされたARオブジェクトを表示することとを含む、方法。
【請求項18】
前記実世界画像内において前記ARオブジェクトを組み合わせることは、深度に基づいて、前記実世界画像内のピクセルの一部を前記ARオブジェクト内のピクセルの一部と置換することを含む、請求項17項に記載の方法。
【請求項19】
前記実世界画像を生成することは、前記第1の深度データ内のピクセルの一部を、前記データ構造の一部と置換することを含む、請求項17または18に記載の方法。
【請求項20】
前記第1の深度データは、少なくとも1つのピクセルを欠いており、
前記実世界画像を生成することは、前記少なくとも1つのピクセルを前記データ構造の一部と置換することを含む、請求項17~19のいずれか1項に記載の方法。
【請求項21】
前記データ構造は、複数の表面要素(サーフェル)を含む、請求項17~20のいずれか1項に記載の方法。
【請求項22】
前記データ構造は、複数のサーフェルを含み、
前記第1の深度データは、少なくとも1つのピクセルを欠いており、本方法はさらに、前記少なくとも1つのピクセルを前記複数のサーフェルの一部と置換することを含む、請求項17~21のいずれか1項に記載の方法。
【請求項23】
前記実世界空間を表す前記データ構造は、前記第1の深度データが前記実世界空間をある位置において表す尤度を示す位置信頼度を含む、請求項17~22のいずれか1項に記載の方法。
【請求項24】
前記データ構造は、サーバから受信される、請求項17~23のいずれか1項に記載の方法。
【請求項25】
請求項1~24のいずれか1項に記載の方法をコンピュータに実行させるための、プログラム。
【請求項26】
1つ以上のプロセッサと、前記1つ以上のプロセッサによって実行される請求項25に記載のプログラムを記憶するメモリとを備える、装置。
【発明の詳細な説明】
【技術分野】
【0001】
分野
実施形態は、拡張現実システムにおけるシーン表現に関する。
【背景技術】
【0002】
背景
拡張現実(AR)は、3次元(3D)グラフィックスを実世界ジオメトリと融合することを含み得る。3Dオブジェクトが実世界ジオメトリにおいて動き回るとき、3Dオブジェクトは、ARディスプレイ上にレンダリングされると、実世界オブジェクトの前または後ろに現れ得る。例えば、人間型オブジェクトは、ARディスプレイ上にレンダリングされると、実世界ジオメトリにおいて家具、半壁、木等の前または後ろに現れ得る。
【0003】
しかしながら、現在のARシステムは、ARディスプレイ上でのレンダリング時に、実世界オブジェクトおよび/または3Dオブジェクトの一部を(例えば、正しい深度および/または位置に)出現させ、および/または出現させない場合がある、不正確なおよび/または不安定な深度データを有し得る。たとえば、人間型が実世界オブジェクト(たとえば、半壁)の背後から出るとき、人間型の一部(たとえば、脚)は、ARディスプレイ上でのレンダリング時、人間型のその部分が現れるべきであるときに、現れないことがある。代替的に、人間型が実世界オブジェクト(たとえば、半壁)の背後の位置に移動するとき、人間型の一部(たとえば、脚)は、ARディスプレイ上でのレンダリング時、人間型のその部分が現れるべきでないときに現れることがある。これは、現在のARシステムにおいて、所望に満たないユーザ経験をもたらし得る。
【発明の概要】
【0004】
概要
一般的な局面では、1つ以上のプロセッサと命令を記憶するメモリとを含む装置、デバイス、システム、(コンピュータシステム上で実行され得るコンピュータ実行可能プログラムコードを記憶した)非一時的コンピュータ可読媒体、および/または方法は、あるプロセスをある方法で実行し得、その方法は、拡張現実(AR)アプリケーションの第1の時間に第1のフレームに関連付けられる第1の深度画像を受信することを含み、第1の深度画像は、実世界空間の少なくとも第1の部分を表し、本方法はさらに、第1の深度画像を記憶することと、ARアプリケーションの第1の時間の後の第2の時間に第2のフレームに関連付けられる第2の深度画像を受信することとを含み、第2の深度画像は、実世界空間の少なくとも第2の部分を表し、本方法はさらに、少なくとも、記憶された第1の深度画像を第2の深度画像とブレンドすることによって、実世界画像を生成することと、レンダリングされたARオブジェクトを受信することと、実世界画像内でARオブジェクトを組み合わせることと、ARオブジェクトと組み合わされた実世界画像を表示することとを含み得る。
【0005】
実施形態は、以下の特徴のうちの1つまたは複数を含み得る。たとえば、第1の深度画像は、ARアプリケーションに関連付けられるバッファに記憶されるARアプリケーションのフレームを表す複数の深度画像のうちの1つであり得る。第1の深度画像は、ARアプリケーションに関連付けられるバッファに記憶されるARアプリケーションのフレームを表す複数の深度画像のうちの1つであり得、本方法は、さらに、バッファに記憶される複数の深度画像の一部を選択することと、複数の深度画像の一部に基づいてデータ構造を生成することとを含み、データ構造は実世界空間を表し、データ構造は、深度情報、位置情報、および方向情報を含み、本方法は、さらに、生成されたデータ構造を記憶することを含み得る。第1の深度画像は、ARアプリケーションに関連付けられるバッファに記憶されるARアプリケーションのフレームを表す複数の深度画像のうちの1つであり得、本方法は、さらに、バッファに記憶される複数の深度画像の一部を受信することと、複数の深度画像の一部に基づいて複数の表面要素(サーフェル)を生成することとを含み、複数のサーフェルは実世界空間を表し、本方法はさらに、生成された複数のサーフェルを記憶することを含み得る。
【0006】
例えば、本方法はさらに、深度情報、位置情報、および方向情報を含むデータ構造を受信することと、データ構造を第3の深度画像としてレンダリングすることと、第3の深度画像を実世界画像とブレンドすることとを含み得る。本方法はさらに、実世界空間を表す複数のサーフェルを受信することと、複数のサーフェルを第3の深度画像としてレンダリングすることと、第3の深度画像を実世界画像とブレンドすることとを含み得る。実世界画像内においてARオブジェクトを組み合わせることは、深度に基づいて、実世界画像内のピクセルの一部をARオブジェクト内のピクセルの一部と置換することを含み得る。
【0007】
記憶された第1の深度画像を第2の深度画像とブレンドすることは、第2の深度画像内のピクセルの一部を、記憶された第1の深度画像の一部と置換することを含み得る。第2の深度画像は、少なくとも1つのピクセルを欠き得、記憶された第1の深度画像を第2の深度画像とブレンドすることは、少なくとも1つのピクセルを、記憶された第1の深度画像の一部と置換することを含み得る。本方法はさらに、実世界空間を表す複数のサーフェルを受信することと、複数のサーフェルをレンダリングすることとを含む。第2の深度画像は、少なくとも1つのピクセルを欠き得、本方法はさらに、少なくとも1つのピクセルを、レンダリングされた複数のサーフェルの一部と置換することを含む。記憶された第1の深度画像は、第1の深度画像が実世界空間をある位置において表す尤度を示す位置信頼度を含み得る。
【0008】
別の一般的な局面では、1つ以上のプロセッサと命令を記憶するメモリとを含む装置、デバイス、システム、(コンピュータシステム上で実行され得るコンピュータ実行可能プログラムコードを記憶した)非一時的コンピュータ可読媒体、および/または方法は、あるプロセスをある方法で実行し得、その方法は、拡張現実(AR)アプリケーションのフレームに関連付けられる深度データを受信することを含み、深度データは、実世界空間の少なくとも一部を表し、本方法はさらに、深度データを、ARアプリケーションのフレームを表す複数の深度画像のうちの1つとして、ARアプリケーションに関連付けられるバッファに記憶することと、バッファに記憶される複数の深度画像の一部を選択することと、複数の深度画像の一部に基づいてデータ構造を生成することとを含み、データ構造は実世界空間を表し、データ構造は、深度情報、位置情報、および方向情報を含み、本方法は、さらに、生成されたデータ構造を記憶することを含む。
【0009】
実施形態は、以下の特徴のうちの1つまたは複数を含み得る。例えば、データ構造は、複数の表面要素(サーフェル)を含み得る。データ構造は、サーバと関連して記憶され得る。複数の深度画像の一部を選択することは、ARアプリケーションを実行する複数のデバイス上の複数のバッファから複数の画像を選択することを含み得る。記憶された深度データは、深度データが実世界空間をある位置において表す尤度を示す位置信頼度を含み得る。
【0010】
さらに別の一般的な局面では、1つ以上のプロセッサと命令を記憶するメモリとを含む装置、デバイス、システム、(コンピュータシステム上で実行され得るコンピュータ実行可能プログラムコードを記憶した)非一時的コンピュータ可読媒体、および/または方法は、あるプロセスをある方法で実行し得、その方法は、拡張現実(AR)アプリケーションのフレームに関連付けられる第1の深度データを受信することを含み、第1の深度データは、実世界空間の少なくとも一部を表し、本方法はさらに、ARアプリケーションに関連付けられる実世界空間の少なくとも第2の部分を表すデータ構造を受信することを含み、データ構造は、深度情報、位置情報、および方向情報を含み、本方法はさらに、少なくとも第1の深度データをデータ構造とブレンドすることによって実世界画像を生成することと、ARオブジェクトを受信することと、実世界画像をARオブジェクトと組み合わせることと、ARオブジェクトと組み合わされた実世界画像を表示することとを含み得る。
【0011】
実施形態は、以下の特徴のうちの1つまたは複数を含み得る。例えば、実世界画像内においてARオブジェクトを組み合わせることは、深度に基づいて、実世界画像内のピクセルの一部をARオブジェクト内のピクセルの一部と置換することを含み得る。記憶された第1の深度データをデータ構造とブレンドすることは、第2の深度画像内のピクセルの一部を、記憶された第1の深度画像の一部と置換することを含み得る。第1の深度データは、少なくとも1つのピクセルを欠き得、第1の深度データをデータ構造とブレンドすることは、少なくとも1つのピクセルをデータ構造の一部と置換することを含み得る。データ構造は、複数の表面要素(サーフェル)を含み得る。データ構造は、複数のサーフェルを含み得、第1の深度データは、少なくとも1つのピクセルを欠き得、本方法はさらに、少なくとも1つのピクセルを複数のサーフェルの一部と置換することを含み得る。実世界空間を表すデータ構造は、深度データが実世界空間をある位置において表す尤度を示す位置信頼度を含み得る。データ構造は、サーバから受信され得る。
【0012】
図面の簡単な説明
例示的な実施形態は、以下に与えられる詳細な説明および添付の図面からより充分に理解されることになり、同様の要素は、同様の参照番号によって示されるが、それらは例示のみのために与えられており、したがって例示的な実施形態を限定するものではない。
【図面の簡単な説明】
【0013】
【
図1D】例示的な実現例による、拡張現実画像を生成するための信号フローのブロック図を示す。
【
図2】例示的な実現例による、ジオメトリを記憶するための信号フローのブロック図である。
【
図3A】パーティション平面に含まれる表面要素(サーフェル)のラスタ化を示すブロック図である。
【
図3B】パーティション平面に含まれる表面要素(サーフェル)のラスタ化を示すブロック図である。
【
図3C】パーティション平面に含まれる表面要素(サーフェル)のラスタ化を示すブロック図である。
【
図3D】パーティション平面に含まれる表面要素(サーフェル)のラスタ化を示すブロック図である。
【
図3E】パーティション平面に含まれる表面要素(サーフェル)のラスタ化を示すブロック図である。
【
図4A】例示的な実現例による、ジオメトリの蓄積を図形で示す。
【
図4B】例示的な実現例による、ジオメトリの蓄積を図形で示す。
【
図4C】例示的な実現例による、ジオメトリの蓄積を図形で示す。
【
図4D】例示的な実現例による、ジオメトリの蓄積を図形で示す。
【
図5】例示的な実現例による、表示のために画像を生成するための信号フローのブロック図である。
【
図6】例示的な実現例による、ジオメトリを記憶するための方法を示す図である。
【
図7】例示的な実現例による、画像を生成するための方法を示す図である。
【
図8】例示的な実現例による、マルチデバイスジオメトリを記憶するための信号フローのブロック図である。
【
図9】例示的な実現例によるマルチデバイス拡張現実システムのための信号フローのブロック図である。
【
図10】少なくとも1つの例示的な実施形態によるコンピュータデバイスおよびモバイルコンピュータデバイスの一例を示す。
【発明を実施するための形態】
【0014】
これらの図は、特定の例示的な実施形態において利用される方法、構造および/または材料の一般的特性を説明し、以下の記述を補足することを意図していることに留意されたい。しかしながら、これらの図面は、縮尺どおりではなく、任意の所与の実施形態の正確な構造または性能特性を精密に反映しない場合があり、例示的実施形態によって包含される値または特性の範囲を規定または限定するものとして解釈されるべきではない。例えば、分子、層、領域、および/または構造要素の相対的な厚みならびに位置決めは、明確にするために低減または誇張される場合がある。様々な図面における類似または同一の参照番号の使用は、類似もしくは同一の要素または特徴の存在を示すことを意図している。
【0015】
詳細な説明
現在の拡張現実(AR)システムに関する少なくとも1つの問題は、3次元(3D)オブジェクトが実世界空間(例えば、ジオメトリ)内で動き回るときの3次元(3D)オブジェクトの深度処理の遅延の可能性である。たとえば、3Dオブジェクトの一部分の不正確なレンダリング(たとえば、深度および/または位置)は、3Dオブジェクトが実世界ジオメトリにおけるオブジェクト(たとえば、実世界オブジェクト)の後ろから移動するときに起こり得る。例示的な実現例は、実世界オブジェクトに関連付けられる深度データを記憶し、3Dオブジェクトを実世界ジオメトリと融合およびレンダリングするときに、記憶された深度データを使用することによって、この問題を解決する。この技術の少なくとも1つの利点は、3Dオブジェクトが実世界ジオメトリにおいて位置を変更するときのオブジェクト深度および/または位置処理がより正確であり得ることである。より高い深度処理精度は、現在のARシステムと比較して、より望ましいユーザ経験をもたらし得る。
【0016】
例示的な実現例では、入力深度フレームがバッファに蓄積され得る。(たとえば、カメラによってキャプチャされる)ARビデオがフレームからフレームに進行するにつれて、(バッファに記憶される)前のフレームデータが現在のフレームに再投影される。言い換えれば、最新の入力値が以前の値とマージされる。このデータ統合プロセスは、入力深度フレームおよび/または累積深度フレームにおける誤差の統計分析に基づき得る。
【0017】
図1Aは、実世界空間100を示し、実世界空間100内のユーザ130を示す。実世界オブジェクトおよびARオブジェクトは、モバイルデバイスを介してユーザ130によって見られるであろうように、この図に共に示される。ARシステムのユーザ130によって見られる(例えば、部屋の)シーンは、破線で示されている。実世界空間100は、少なくとも1つの実世界オブジェクト135を含み得る。モバイルデバイスに関連付けられるARシステムは、実世界空間100内にARオブジェクト140を配置するよう構成され得る。
図1Aは、ARオブジェクト140が、実世界オブジェクト135の背後の深度に配置されるのを示す。しかしながら、ARオブジェクト140の深度および位置と比較して、実世界オブジェクト135の深度および位置に基づいて、ARオブジェクトの一部145のみが、実世界オブジェクト135の背後にある。
【0018】
図1Bは、再び、実世界空間100内のARオブジェクト140を図示する。
図1Bでは、ARオブジェクトは、再位置決めされ、実世界オブジェクト135の前の深度に配置されている。
図1Cは、再び、実世界空間100内のARオブジェクト140を図示する。
図1Cでは、ARオブジェクトは、実世界オブジェクト135の前の深度にある場所にとどまる。しかしながら、実世界オブジェクト135の深度処理(例えば、欠落している深度データおよび/または正確な深度データの欠如)は、(例えば、ARシステムのディスプレイ上における)実世界空間100のレンダリングを遅らせている。深度処理またはデータ取得におけるこの遅延は、ARオブジェクト140のすべてが実世界オブジェクト135の前にレンダリングされるべきであるときに、実世界オブジェクトの一部150がARオブジェクト140の前にあるものとして示される。
【0019】
図1Cは、実世界空間100をレンダリングするときの望ましくない結果を示す。
図1Cによって示される結果は、実世界空間100に関連付けられる(およびさらに具体的には、実世界オブジェクト135に関する)深度情報が不完全である場合に生じ得る。この結果は、ARオブジェクト140が移動された後に深度情報が不完全である場合、および/または仮に、ユーザ130が実世界オブジェクト135から視線をそむけ、次いで、実世界オブジェクト135に視線を戻す場合に、生じ得る。例えば、
図1Aは、ARシステムにおける第1のフレームに対応し得、
図1Bおよび/または
図1Cは、
図1Aに対応するフレームの順次後のフレームに対応し得る。
【0020】
例示的な実現例によれば、
図1Aに対応するフレームに関連付けられる深度情報は、メモリ(たとえば、バッファ)に記憶され得る。深度情報は、実世界空間100および/または実世界空間100の(例えば、深度を含む複数のピクセル)のレンダリングに基づいて生成される(以下でより詳細に説明されるような)ジオメトリとして記憶され得る。
図1Aに対応するフレームの後に順次レンダリングされるフレームは、記憶された深度情報を使用し得る。これは、(実世界オブジェクト135に関連する)完全な深度情報を使用するレンダリングをもたらし得る。したがって、ARオブジェクト140が移動された後のフレームは、(実世界オブジェクト135に関連する)完全な深度情報を含み、
図1Bに示すようにレンダリングされ得る。例示的な実現例は、
図1Cに示されるようなレンダリングを防止または最小限に抑え得る。
【0021】
図1Dは、例示的な実現例による、拡張現実(AR)画像を生成するための信号フローのブロック図である。
図1Dに示されるように、信号フローは、レンダリングされた深度画像105ブロックと、バッファ110ブロックと、レンダリングされた、記憶された画像115ブロックと、ブレンド120ブロックと、表示125ブロックとを含む。
【0022】
例示的な実現例では、(例えば、
図1Aに示すように)モバイルデバイスを介してユーザによって見られる画像に関連付けられる深度データは、レンダリングされた深度画像105に対応し得、バッファ110に記憶され得る。フレームに次ぐフレームが、モバイルデバイスによってキャプチャおよび表示され得る。これらのフレームの各々は、バッファ110に記憶され得る。これらの記憶されたフレームは、実世界空間100内のオブジェクトの深度を表す、より完全な深度データを生成するために、使用され得る。(例えば、
図1Bに示すように)新たなフレームがレンダリングされるにつれて、記憶された深度データを用いて、実世界空間100の現在のレンダリングに関連付けられる深度データを補足し得る(か、または、ブレンド120ブロックによって表されるように、前者が後者とブレンドされ得る)。したがって、ARオブジェクト(たとえば、ARオブジェクト140)が再位置決めされる(か、または新たなARオブジェクトが位置決めされる)と、そのARオブジェクトは、実世界オブジェクトに対して正しい深度でレンダリングされ得る。
【0023】
レンダリングされた深度画像105ブロックは、ARアプリケーションを実行するデバイス(例えば、携帯電話、タブレット、ヘッドセット等)のカメラによってキャプチャされた画像(またはビデオのフレーム)のレンダリングであり得る。レンダリングされた深度画像105(または関連付けられる深度データ)は、バッファ110に記憶され得る。例示的な実現例では、複数のレンダリングされた深度画像が、バッファ110内に記憶または蓄積され得る。レンダリングされた深度画像の蓄積されたフレームは、複数のレンダリングされた深度画像105がバッファ105に記憶されるのを表し得る。代替として、または加えて、蓄積されたフレームは、ブレンドされた深度画像が(破線によって表されるように)バッファ105内に記憶されるのを表し得る。ブレンドされた深度画像の蓄積の結果、欠落した深度データまたは無効深度データが経時的に有効な深度データによって置換され得る。言い換えると、ARシステムが画像をキャプチャするにつれて、キャプチャされた画像からの有効深度データは、経時的に蓄積(および記憶され)得る。複数のレンダリングされた深度画像(または深度画像)は、ARアプリケーションのフレームを表す。
【0024】
レンダリングされた深度画像105ブロックは、深度情報および/または色情報を有する画像を含み得る。深度情報は、画像内のピクセルごとの深度値を有する深度マップを含み得る。深度情報は、層順序を示す数(例えば、インデックスまたはzインデックス)を各々が有する深度層を含み得る。深度情報は、画像中のピクセルごとに複数の順序付けられた深度を有する階層化された深度画像(LDI)であり得る。色情報は、画像内の各ピクセルについての色(例えば、RGB、YUVなど)であり得る。深度画像は、各ピクセルがカメラ位置からの距離を表す画像であり得る。場合によっては、入力深度画像は、疎な画像であり得、ピクセルの一部(例えば、いくつかまたは大部分)は、空白であるかまたは無効として印され得る。
【0025】
レンダリングされた、記憶された深度画像115ブロックは、ARアプリケーションを実行するデバイス(例えば、携帯電話、タブレット、ヘッドセット等)のストレージ(たとえば、メモリ)および/またはARアプリケーションを実行するデバイスを使用してアクセス可能なメモリを有するサーバから取り出された画像のレンダリングであり得る。示されるように、レンダリングされた、記憶された深度画像115ブロックは、バッファ110から読み出され得る。レンダリングされた、記憶された深度画像115ブロックは、深度情報および/または色情報を有する画像を含み得る。深度情報は、画像内のピクセルごとの深度値を有する深度マップを含み得る。深度情報は、層順序を示す数(例えば、インデックスまたはzインデックス)を各々が有する深度層を含み得る。深度情報は、画像中のピクセルごとに複数の順序付けられた深度を有する階層化された深度画像(LDI)であり得る。色情報は、画像内の各ピクセルについての色(例えば、RGB、YUVなど)であり得る。
【0026】
ブレンド120ブロックは、レンダリングされた深度画像105をレンダリングされた、記憶された深度画像115とブレンドするよう構成され、表示125ブロックは、結果として生じるブレンドされた画像を表示するよう構成される。例示的な実現例では、ブレンドされた画像(または関連付けられる深度データ)は、バッファ110に記憶され得る。例示的な実現例では、複数のブレンドされた画像が、バッファ110内に記憶または蓄積され得る。
【0027】
2つ以上の深度画像をブレンドすることは、各画像の一部を組み合わせることを含み得る。例えば、レンダリングされた深度画像105ブロックから欠落しているデータ(例えば、深度データ、色データ、ピクセル等)は、レンダリングされた、記憶された深度画像115ブロックからのデータを使用して埋められ得る。例えば、同じ位置ならびに/または同じ位置および同じ深度を有するピクセルを組み合わせ得る。位置は、基準点(またはホーム位置)からの距離および方向に基づき得る。位置は、座標系(例えば、x、yグリッド)に基づき得る。
【0028】
前述のように、深度画像内のピクセルの一部は、空白であるかまたは無効として印され得る。したがって、例示的な実現例では、レンダリングされた深度画像105内で欠落しているかまたは無効として印されるピクセルは、欠落または無効ピクセルと同じ位置および層を有する、レンダリングされた、記憶された深度画像115からのピクセルで埋められ得る。ある例示的な実現例では、レンダリングされた深度画像105、およびレンダリングされた、記憶された深度画像115からのピクセルは、同じ位置を有し、同じインデックス値を有する層にある。2つの画像をブレンドすることは、レンダリングされた、記憶された深度画像115からピクセルを選択することと、レンダリングされた深度画像105からピクセルを破棄することとを含み得る。代替として、2つの画像をブレンドすることは、レンダリングされた深度画像105からピクセルを選択することと、レンダリングされた、記憶された深度画像115からピクセルを破棄することとを含み得る。代替として、2つの画像をブレンドすることは、色を平均することと、平均された色を当該の位置および当該の層に割り当てることとを含み得る。2つの画像をブレンドするための他の技術は、本開示の範囲内である。
【0029】
図2は、例示的な実現例による、ジオメトリを記憶するための信号フローのブロック図である。
図2に示すように、信号フローは、位置205ブロックと、画像210ブロックと、深度215ブロックと、記憶されたジオメトリ220ブロックと、ジオメトリ構築225ブロックと、位置信頼度230ブロックとを含む。画像210ブロックは、ARシステムのカメラによってキャプチャされた画像に関連付けられるデータであり得る。深度215ブロックは、ARシステムに関連付けられる深度センサによってキャプチャされる、および/または画像データに基づいて計算される、深度データであり得る。
【0030】
ARシステム(例えば、ARシステムのカメラ)によってキャプチャされる各画像は、(画像210ブロックによって表される)色データおよび(深度215ブロックによって表される)深度データを含み得る。画像をキャプチャするカメラは、実世界空間(例えば、実世界空間100)内のある位置にあり得、実世界空間内のある方向に向けられ得る。その位置および方向は、位置205ブロックによって表し得る。位置205、画像210、および深度215は、(ジオメトリ構築225ブロックによって表される)実世界空間に関連付けられるジオメトリデータを生成するために使用され得る。生成されたジオメトリは、以前に生成されたジオメトリに追加され、記憶され得る。ジオメトリを追加することは、置換および/またはデータを置換することも含み得る。ジオメトリは、実世界空間内のオブジェクトを表すデータを含み得る。あるオブジェクトを表す特定のデータが、ある位置におけるあるオブジェクトにどのように対応するかが判断および保存され得る(位置信頼度230ブロックによって表される)。
【0031】
位置205ブロックは、ARシステムに関連付けられる位置情報であり得る。位置情報は、基準点(例えば、実世界ジオメトリにおける開始(基準もしくはホーム)位置)および/または(たとえば、全地球測位センサ(グローバルポジションセンサ)からの)全地球(グローバルポジション)基準点に関連付けられ得る。位置205は、基準点(またはホーム位置)からの距離および方向であり得る。位置205は、座標系(例えば、x、yグリッド)および方向に基づき得る。
【0032】
ジオメトリ構築225ブロックは、ARシステムに関連付けられる実世界ジオメトリを表すデータ構造(例えば、nタプル、ツリー等)を生成するよう構成され得る。ジオメトリ構築225ブロックは、位置についてデータ構造を生成し得る。いくつかの実現例では、位置205、画像210、および深度215は、バッファ110から読み出され得る。ジオメトリ構築225ブロックは、画像210、深度215、および位置205を使用してデータ構造を生成し得る。すなわち、データ構造は、色情報、テクスチャ情報、深度情報、位置情報および方向情報を含み得る。深度情報は、層順序を示す数(例えば、インデックスまたはzインデックス)を各々が有する深度層を含み得る。深度情報は、画像中のピクセルごとに複数の順序付けられた深度を有する階層化された深度画像(LDI)であり得る。深度情報は深度マップを含み得る。テクスチャ情報、深度情報、位置情報、および方向情報は、接続性を有する幾何学的オブジェクト(例えば、多角形のメッシュ)の要素であり得る。テクスチャ情報、深度情報、位置情報、および方向情報は、接続性のない幾何学的オブジェクトの要素(たとえば、表面要素またはサーフェル)であり得る。さらに、深度データは、3D空間におけるサンプリングにおいて符号付き距離関数(SDF)を記憶し得る、ボクセルまたはオクタイル等のグリッドベースのデータ構造に記憶され得る。ジオメトリ構築225ブロックは、記憶されたジオメトリ220にデータ構造を追加し得る。
【0033】
ジオメトリ構築225ブロックはまた、生成されたばかりのデータ構造と(例えば、以前に生成された)記憶されたデータ構造との比較に基づいて信頼度値を生成し得る。生成されたばかりのデータ構造が記憶されたデータ構造に類似しているほど、位置信頼度は高くなる。言い換えれば、ある位置について、2つのデータ構造間に、近い整合がある場合、画像をレンダリングするために、記憶されたデータ構造を使用することは、現在の実世界のシーンについて正確な画像をもたらすであろう、という、いくらか高い確率(例えば、高い信頼度)がある。位置信頼度は、データ、データ構造、データ構造の一部、深度データなどが、実世界空間をある位置において表す尤度を示し得る。
【0034】
階層化された深度画像(LDI)は、3次元(3D)シーンの画像ベース表現であり得る。LDIは、階層化された深度ピクセルの2次元(2D)アレイまたはグループを含み得る。各階層化された深度ピクセルは、単一のカメラ位置または視点から見た際に1つの視線に沿ってソートされたLDIサンプルのセットを含み得る。カメラは、LDIカメラとも称され得る。LDIサンプルを参照する他の方法は、限定はしないが、点、深度ピクセル、または階層化された深度ピクセルサンプルを含み得る。各LDIサンプルについて、ソースカメラと呼ばれるカメラは、LDIサンプルに関連付けられるデータを提供する。LDIピクセルの表現は、色情報、アルファチャネル情報、深度情報(ピクセルとカメラとの間の距離)、LDIサンプルのソースカメラの識別子(例えば、番号、ポインタまたはカメラへの参照)、および3次元(3D)空間におけるLDIのレンダリングをサポートし得る他の属性を含み得る。たとえば、アルファチャネル情報は、ピクセルの不透明度レベルを判断するために使用され得る。
【0035】
そのパーティション平面内のLDIサンプルは、ソースカメラウィンドウ空間内の点に投影され得る。ソースカメラウィンドウ空間は、複数のピクセルを含み得る。点は、ソースカメラの像平面に含まれる少なくとも1つのピクセルに投影され得る。次いで、点をソースカメラウィンドウ空間からパーティション平面に投影し戻し得る。投影は、パーティション平面内の点のある位置に表面要素(サーフェル)をもたらし得る。サーフェルのサイズは、ソースフィルタとも称され得る、ソースカメラウィンドウ空間内で定義される画像フィルタによって決定され得る。サーフェルは、点がソースカメラの像平面内に投影されたピクセルの色に基づいて、関連付けられる色を有し得る。
【0036】
ターゲットカメラウィンドウ空間を含むターゲットカメラが選択され得る。パーティション平面内のサーフェルは、ターゲットカメラウィンドウ空間内でサーフェルフットプリントに投影され得る。サーフェルフットプリントは、ターゲットカメラウィンドウ空間の像平面に含まれる1つ以上のピクセルを覆うか、そのようなピクセルと重なるか、またはそのようなピクセルを含み得る。1つ以上のピクセルは、サーフェルに関連付けられる色および/または深度で埋められ得る。1つ以上のピクセルの各々は、複数のピクセルサンプルまたは点を含み得る。複数のピクセルサンプルの各々は、ターゲットカメラウィンドウ空間からパーティション平面に投影され得る。複数のピクセルサンプルの各々は、パーティション平面からソースカメラウィンドウ空間内に投影され、ソースカメラウィンドウ空間内において各ピクセルサンプルについて現在位置を識別し得る。ソースカメラウィンドウ空間における各ピクセルサンプルの識別された現在位置に基づいて、色重みを各ピクセルサンプルに適用し得る。パーティション平面およびテクスチャマップは、AR空間において3Dでリアルタイムでレンダリングするためのシーンのモデルを形成するために組み合わされ得る。
【0037】
図3は、パーティション平面に含まれる表面要素(サーフェル)のラスタ化を示すブロック図である。コンピューティングシステムにおいて実行されるアプリケーションは、ARアプリケーションを実行するデバイス(例えば、携帯電話、タブレット、ヘッドセット等)の視野内の様々な位置からシーンの画像を生成し得る。各シーン画像は、関連付けられる色情報、深度情報、および表面法線についての値を含む、複数のピクセルサンプルまたは点を含み得る。点は、ボリューム、サイズ、および範囲のない、3D空間内の位置であり得る。点は、ソースカメラの中心からピクセルの中心を通して見られるピクセルの位置を表し得る。画像のビュー内のピクセル数は、画像の解像度に基づいて判断される。
【0038】
例えば、ピクセルは、表面の表現に投影されるとき、サーフェルと見なされ得る。サーフェルは、3D空間内にリアルタイムで(対話型フレームレートで)複雑な幾何学的オブジェクトを効率的にレンダリングするために使用され得る。サーフェルは、生のLDIに含まれる1つ以上のサンプル(点)を含み得る。サーフェルは、任意の特定の接続性を欠くポイントプリミティブであり得る。したがって、隣接情報などのトポロジ情報を計算する必要がないので、サーフェルを使用して動的ジオメトリをモデル化し得る。サーフェルの属性は、深度、テクスチャ色、ならびに正規化されたベクトルおよび位置を含み得るが、それらに限定されない。
【0039】
各シーン画像は、ARアプリケーションによってAR空間において3Dでリアルタイムでレンダリング(描画)するためにシーンの簡略化されたバージョンの表現において使用され得るデータ構造(たとえば、LDI)にアセンブルされ得る。たとえば、複数のピクセルサンプルまたは点は、複数のパーティションにグループ化され得る。パーティションは、シーン画像を表す複数のピクセルサンプルもしくは点のサブセットを含む平面または多角形であり得る。パーティション平面(例えば、パーティション平面304)は、点のサブセットが3D空間内に位置する3D画像空間内のある位置にあり得る。いくつかの実現例では、四角形化アルゴリズムは、パーティション平面を作成するために使用され得る多角形近似を作成し得る。いくつかの実現例では、反復パーティショニングアルゴリズムは、パーティション平面を作成するために使用され得る多角形近似を作成し得る。
【0040】
各パーティション平面に対してテクスチャマップが作成(生成)され得る。各パーティション平面およびその関連付けられるテクスチャマップは、ARアプリケーションによってAR空間において3Dでリアルタイムでレンダリング(描画)するためにシーンのモデル(簡略化された表現)を形成するよう組み合わせられ得る。シーンのモデルをレンダリングするときにARアプリケーションによって実行されるアルゴリズムは、パーティション平面の各々を作成するために使用されるアルゴリズムに基づき得る。
【0041】
図3Aを参照すると、パーティション平面に含まれる点は、パーティション平面のためにテクスチャマップを作成(生成)するためにラスタ化される。点302は、パーティション平面304に含まれる多くの点のうちの1つであり得る。テクスチャマップには、パーティション平面に含まれる各点の色が組み込まれる。テクスチャラスタ化アルゴリズムは、RGBAテクスチャを含む所与のパーティション平面のためにテクスチャマップを作成(生成)し得る。
【0042】
例えば、
図3A~
図3Eを参照すると、テクスチャラスタライザは、ソースカメラの像平面であり得るソースカメラウィンドウ空間306を含むソースカメラを選択し得る。テクスチャラスタライザは、ターゲットカメラの像平面であり得るターゲットカメラウィンドウ空間336を含むターゲットカメラを選択し得る。テクスチャラスタライザは、所与のパーティション平面についてソースカメラおよびターゲットカメラを選択し得、パーティション平面は、生のLDIからのサンプル(点)を含む。いくつかの実現例では、ターゲットカメラの選択は、パーティション平面の最良のビューを有するカメラに基づく。いくつかの実現例では、ソースカメラは、生のLDIに含まれるサンプルを提供(生成)したカメラである。いくつかの実現例では、ターゲットカメラは仮想カメラであり得る。
【0043】
パーティション平面に含まれる各点は、ソースカメラウィンドウ空間に投影され得る。
図3Aを参照すると、ソースカメラウィンドウ空間306は、複数のピクセル(たとえば、ピクセル360a~360l)を含み得る。投影されると、点(例えば、点302)は、ソースカメラの像平面(ソースカメラウィンドウ空間306)に含まれる少なくとも1つのピクセル(例えば、ピクセル360f)に投影され、投影された点308をもたらす。特定のサイズおよび形状(例えば、
図3A~3Bの例に示されるような特定の半径を有する円)のフィルタ310が、ソースカメラウィンドウ空間306に含まれる。フィルタ310は、投影された点308をフィルタ310の中心に配置する(フィルタ310は投影された点308の周囲に配置される)。フィルタ310は、ソースカメラウィンドウ空間306に含まれるピクセルに完全にまたは部分的に重なり得る形状を画定し得る。
図3Aに示す例では、フィルタ310は、投影された点308を含むピクセル360fを含む陰影付きピクセル(例えば、ピクセル360b~c、ピクセル360e~f、およびピクセル360h~l)と完全にまたは部分的に重なる。フィルタ310の形状はまた、ソースカメラウィンドウ空間306内で投影された点302のサイズを画定し得る。
【0044】
図3A~
図3Bを参照すると、投影された点308は、パーティション平面304内に投影し戻されると、パーティション平面304内の点302の位置にサーフェル322をもたらす。例えば、複数の光線(例えば、光線310a~310d)は、フィルタ310に含まれる(フィルタ310が重なる)ピクセルの角からパーティション平面304に引かれ得る。光線とパーティション平面304との交差は、サーフェル322のためのサーフェルフットプリント320を画定し得る。加えて、サーフェルは、円の数学的関数として描かれ得る。サーフェルは、多角形によって近似され、ラスタ化され得る。サーフェルは、前向きの矩形に単純化され、均一な深度として描かれ得る。円形フィルタ(例えば、フィルタ310)は、ソースカメラの像平面(例えば、ソースカメラウィンドウ空間306)内の点302のサイズを画定し得る。フィルタ310(例えば、
図3A~3Bの例に示されるような特定の半径を有する円)は、投影された点308と共に、パーティション平面304に投影し戻され得る。投影された点308は、パーティション平面304内に投影し戻されると、
図3A~
図3Cに示される例に関して、パーティション平面304内の点302を画定する四角形サーフェルフットプリント(例えば、サーフェルフットプリント320)をもたらす。加えて、サーフェルフットプリント320は、パーティション平面304内の点302のサイズを提供(定義)する。サーフェルフットプリント320は、サーフェル322に対する3D形状である。
【0045】
フィルタ310によって画定され、投影された点308を含むソースカメラウィンドウ空間306内のピクセル360fは、パーティション平面304内に投影し戻され、サーフェル322をもたらす。テクスチャラスタライザが、パーティション平面304から、点302を、ソースカメラウィンドウ空間306内においてフィルタによって定義されるように、ピクセル(例えば、ピクセル360f)に投影することを実行し、次いで、そのピクセル(例えば、ピクセル360f)をパーティション平面304内に投影し戻した結果、点302は、そのピクセルの色に基づく関連付けられる色で、サーフェル322に変えられる。フィルタ310に関連付けられるサイズは、サーフェルフットプリントのサイズを決定し得る。いくつかの実現例では、サーフェルフットプリントのサイズは、各サーフェルフットプリントについてほぼ同じであり得る。加えて、または代替として、パーティション平面に対するソースカメラの位置も、サーフェルフットプリントのサイズの決定に寄与し得る。
【0046】
第1のソースカメラからの、パーティション平面内に投影されるピクセルは、第1のソースカメラの位置が第2のソースカメラの位置よりもパーティション平面に近いとき、第2のソースカメラからパーティション平面内に投影されるピクセルから生じるサーフェルフットプリントよりも大きいサーフェルフットプリントをもたらすことになる。各サーフェルについて、最良のソースカメラが選択され得る。したがって、各サーフェルは、異なるソースカメラに関連付けられてもよい。
【0047】
記載されるように、パーティション平面304は、シーン画像を表す複数のピクセルサンプルまたは点のサブセットを含み得る。パーティション平面304に含まれる複数の点をソースカメラウィンドウ空間306に投影し、次いでパーティション平面304に投影し戻す結果、パーティション平面304は、様々なサーフェルフットプリントを有する複数のサーフェルを含み得る。
【0048】
パーティション平面に含まれる各サーフェルは、関連付けられる色を有する。サーフェルに関連付けられる色は、ソースカメラからの投影されたピクセルの色であり得る。例えば、サーフェル322に関連付けられる色は、ピクセル360fの色であり得る。パーティション平面に含まれるサーフェルについてテクスチャマップを作成することは、AR空間における3Dでのリアルタイムでのシーンにおけるパーティション平面のレンダリング(描画)に必要な色を提供する。
【0049】
一般に、パーティション平面は、テクスチャラスタライザに入力され得る。テクスチャラスタライザは、パーティション平面についてテクスチャマップおよび行列を生成して出力し得る。出力テクスチャマップは、RGBAテクスチャを含み得る。行列は、点の座標を、世界またはカメラ空間から、ビュー行列を使用して、眼空間(ビュー空間)に変換し得る。眼空間は、各座標がカメラまたは観察者の視点から見られることを可能にする。パーティション平面は、LDI眼空間におけるサーフェルの平面およびベクトルを含み得る。
【0050】
テクスチャラスタライザは、ターゲットカメラを定義し得る。いくつかの実現例では、ターゲットカメラはソースカメラと同じであり得る。場合によっては、ターゲットカメラは、ソースカメラとは異なるカメラであり得る。
図3Cを参照すると、パーティション平面に含まれるサーフェル(例えば、パーティション平面304に含まれるサーフェル322)をターゲットカメラウィンドウ空間(例えば、ターゲットカメラウィンドウ空間336)に投影し得る。サーフェル322の投影は、点302をピクセル340eに投影すること(投影された点318)と、サーフェルフットプリント320を投影すること(投影されたサーフェルフットプリント330)とを含む。
【0051】
テクスチャラスタライザは、テクスチャマップ(テクスチャの画像)をターゲットカメラウィンドウ空間336内のピクセルとして定義し得る。パーティション平面304をターゲットカメラウィンドウ空間336内に投影することは、サーフェル322について、ピクセルサンプルまたは点312a~312eを含むサーフェルフットプリント330をもたらす。サーフェルフットプリント330に含まれる点312a~312eはパーティション平面304についてテクスチャを定義するので、テクスチャラスタライザは、点312a~312eを使用して、サーフェルの色値を判断し得る。
【0052】
ターゲットカメラウィンドウ空間は、像平面であり得る。像平面は、ピクセル340a~340lを含み得る。ターゲットカメラの像平面は、含まれるピクセルの数に基づく、関連付けられる解像度を有する。例えば、
図3A~
図3Cに示すように、ターゲットカメラの像平面(ターゲットカメラウィンドウ空間336)の解像度は、ソースカメラの像平面(ソースカメラウィンドウ空間306)の解像度と同じである。いくつかの実現例では、ターゲットカメラの像平面の解像度は、ソースカメラの像平面の解像度とは異なり得る。
【0053】
ターゲットカメラウィンドウ空間336は、複数のピクセル340a~340lを含み得る。投影されたサーフェルフットプリント330は、ターゲットカメラウィンドウ空間336に含まれるピクセル340a~340iを含み得る(覆い得る)。
図3Cを参照すると、サーフェルフットプリント330に含まれる(覆われた)ピクセル340a~340iは、陰影付けされて示されている。投影されたサーフェルフットプリント330によって覆われる(それと重なる)ピクセル340a~340iは、サーフェル322に関連付けられる色で埋められ(色付けされ)得る。ピクセル340a~340iは、サーフェル322についてテクスチャ(テクスチャマップ)を定義し得る。
【0054】
投影されたサーフェルフットプリント330は、投影されたサーフェル332の色で埋められ得る。いくつかの実現例では、投影されたサーフェルフットプリント330に部分的に含まれる(投影されたサーフェルフットプリント330が重なる)1つ以上のピクセルは、投影されたサーフェル332に関連付けられる色で埋められ得る。例えば、ピクセル340a~340dおよびピクセル340f~340iは、投影されたサーフェルフットプリント330によって部分的に覆われる。
【0055】
9つのピクセル(例えば、ピクセル340a~340i)が、投影されたサーフェルフットプリント330に含まれる(投影されたサーフェルフットプリント330が重なる)ように示されている。いくつかの実現例では、9個未満のピクセルが、投影されたサーフェルフットプリント330に含まれてもよい(9個未満のピクセルに、投影されたサーフェルフットプリント330が重なってもよい)。いくつかの実現例では、9個を超えるピクセルが、投影されたサーフェルフットプリント330に含まれてもよい(9個を超えるピクセルに、投影されたサーフェルフットプリント330が重なってもよい)。例えば、投影されたサーフェルフットプリント330に含まれてもよい(投影されたサーフェルフットプリント330が重なってもよい)ピクセルの数は、1~9個のピクセルのオーダーであり得る。しかしながら、投影されたサーフェルフットプリント330は、画像全体と同じ大きさであり得る。
【0056】
図3C~
図3Dを参照すると、ピクセルは、複数のピクセルサンプルまたは点を含み得る。説明の目的で、
図3C~
図3Dは、投影されたサーフェルフットプリント330によって覆われる各それぞれのピクセル340a~340iに対するピクセルサンプルまたは点を示す点312a~312iを示す。各ピクセル340a~340lは、複数のピクセルサンプルを含み得る。投影されたサーフェルフットプリント330によって覆われる点(例えば、点312a~312i)は、パーティション平面304内に投影し戻され得、投影された点(例えば、それぞれ、投影された点342a~342i)を含む投影されたサーフェルフットプリント340をもたらし得る。投影は、点318を投影することを含み、投影されたサーフェル332内に投影される点344をもたらす。
【0057】
図3Dに示す投影されたサーフェルフットプリント340は、
図3Cに示すサーフェルフットプリント320と同じサイズ、同じ形状であり、同じ3D空間内の同じ位置にある。投影されたサーフェル332の色に関連付けられる色は、サーフェル322に関連付けられる色である。
【0058】
図3C~
図3Eを参照すると、パーティション平面内に含まれる投影されたサーフェルフットプリント内に含まれる各ピクセルサンプルまたは点は、ソースカメラウィンドウ空間内に投影し戻され得る。投影は、ソースカメラウィンドウ空間内のピクセルサンプルまたは点について現在位置を識別し得る。例えば、点342a~342iは、ソースカメラウィンドウ空間306内に、投影された点362a~362iとして、投影し戻され得る。例えば、投影された点362aは、ターゲットカメラウィンドウ空間336からの点312aの投影である投影された点342aについてソースカメラウィンドウ空間306内における位置を識別する。例えば、点312aは、ターゲットカメラウィンドウ空間336において、ピクセル340aに含まれる点として生成され得る。
【0059】
フィルタ310は、フィルタ310に含まれる(フィルタ310が重なる)各ピクセルサンプルまたは点に、点の色に対する重みを与える、関連付けられる関数を有し得る。点の色重みは、その点の、フィルタ310の中心に位置する点(例えば、投影された点354)からの距離に基づき得る。点354およびサーフェル332は、ソースカメラウィンドウ空間306内に投影し戻されると、中心が点354であるサーフェル352をもたらし得る。
【0060】
図3A~
図3Eを参照すると、パーティション平面304は、複数のサーフェルおよび関連付けられるサーフェルフットプリントを含んでもよい。各サーフェルおよびその関連付けられるフットプリントは、ソースカメラウィンドウ空間306内に投影し戻され得、フィルタ310を適用し得る。場合によっては、1つのサーフェルフットプリントが、隣接するサーフェルフットプリントに重なってもよい。フィルタ310の関数をベルカーブとすることにより、隣接するサーフェル間の滑らかなブレンドが保証される。隣接するサーフェルの色のブレンドが改善される。
【0061】
パーティション平面は、複数のサーフェル(例えば、2つ以上のサーフェル)を含み得る。いくつかの実現例では、各サーフェルは、異なるソースカメラに関連付けられてもよい。いくつかの実現例では、各サーフェルは、同じソースカメラに関連付けられてもよい。いくつかの実現例では、いくつかのサーフェルは第1のソースカメラに関連付けられてもよく、他のサーフェルは第2のソースカメラに関連付けられてもよい。例えば、最良のソースカメラは、ある特定のサーフェルについて選ばれ得る。
【0062】
ソースカメラウィンドウ空間(例えば、ソースカメラウィンドウ空間306)内に投影し戻されるサーフェルフットプリント(例えば、サーフェルフットプリント340)に含まれ、フィルタ(例えば、フィルタ310)に含まれる点またはピクセルサンプルに対する色は、フィルタの中心に含まれるサーフェルに対する色値(例えば、サーフェル352の色であるサーフェル332の色)に基づいて判断(計算)され得る。ピクセルサンプルまたは点の色(色(p1))を判断するための例示的な計算は、式1によって示され、
【0063】
【0064】
ここで、p1はピクセルサンプルまたは点であり、サーフェル色値はピクセルサンプルまたは点p1と同じフィルタに含まれるサーフェルの色値であり、重み値(p1)はピクセルサンプルまたは点p1に対する重み値であり、
【0065】
【0066】
は、すべての重みの和であり、n=重みの総数である。
深度マップのためのサーフェルベースの融合は、入力として深度画像のシーケンスをとり得る。深度画像は、ピクセルがカメラ位置からの距離を表す画像であり得る。この入力画像は、疎な画像であり得る。例えば、入力ピクセルの一部(いくつか/大部分)は、空白であり得、および/または無効として印され得る。各深度ピクセルは、関連付けられる信頼度値(例えば、0~1の範囲)を有し得る。さらに、深度画像は、同じシーンおよびカメラ要素(例えば、ピクセル数、画像長および幅など)を表す対応する輝度画像を有し得る。例示的な実現例では、(たとえば、バッファ110に記憶された)累積された深度フレームを、3Dサーフェル生成への入力として使用し得る。
【0067】
いくつかの実現例では、本明細書で説明する技術は、アプリケーションプログラミングインターフェイス(API)において実現され得る。APIにおける包含は、これらの技術に追加のデータへのアクセスを与え得る。例えば、世界座標に対する各カメラフレームの推定される姿勢は、APIによって提供される追跡に基づいて判断され得る。追跡はまた、位置判断、環境光推定、背景および平坦面判断などにおいて使用され得る。言い換えれば、APIデータへのアクセスは、本明細書で説明する技術のうちのいくつかを実行するのを助け得る。
【0068】
いくつかの実現例では、深度フレームの一部(例えば、1つおき、3つのうちの1つ、4つのうちの1つ、すべて未満など)。言い換えれば、(例えば、ARセッション中に深度215および/または画像210としてキャプチャされるフレームと比較して)より低いフレームレートが3Dサーフェル生成に使用され得る。いくつかの実現例では、3Dサーフェル生成のためのフレームは、第2の(図示されない)バッファおよび/またはバッファ110の一部に記憶され得る。)。いくつかの実現例では、入力フレームは、第2のバッファに記憶され得、より低いフレームレートでサーフェル生成への入力のために使用され得る。その結果、複数のフレームからのデータを使用し得るが、複数のフレームの実際の処理は、より低いフレームレートで実行され得る。
【0069】
図4A、
図4B、
図4C、および
図4Dは、例示的な実現例による、ジオメトリの蓄積を図形で示す。ジオメトリは、(上記で論議されるように)データ構造として記憶され得る。例えば、データ構造はnタプルであり得る。サーフェルなど)。例示的な実現例では、サーフェルは、まず、入力内の各ピクセルに関連付けられる法線配向を推定することによって、入力深度から生成され得る。各ピクセルに関連付けられる深度値および法線ベクトルが存在すると、サーフェルは、これらのピクセルをクラスタ化し、世界座標で表される(前述のような)ディスクを生成することによって、生成され得る。これらのディスクのサイズは、同じ深度および向き(ならびに場合によっては色)を共有する、ある数の隣接するピクセルに基づき得る。これらのサーフェルは、ARセッションのフレームにわたって記憶され得、各新たな深度フレームが統合されると、サーフェルは、この新たな情報に基づいて更新および/またはマージされ得る。新たな深度情報が以前のサーフェルデータと一致しない場合(例えば、何かがシーン内で動く場合)、元のサーフェルはペナルティを課され(例えば、信頼度の低下)、削除され、および/または新たなジオメトリと置換され得る。
【0070】
図4Aに示されるように、グリッド405は、ARディスプレイ上に表示され得る実世界ジオメトリ(またはパーティション平面)の一部を表し得る。グリッド405上には、第1のオブジェクト410がある。円415は、第1のオブジェクト410を含むグリッド405の一部分に関する情報を含み得るデータ構造(例えば、サーフェルフットプリント)の図形的表現である。例示的な実現例では、データ構造(またはデータ構造、サーフェルなど)は、記憶されたジオメトリ220として記憶され得る。さらに、データ構造は、信頼度230として記憶され得る信頼度を含み得る。)
図4Bに示すように、円415の数が増加しており、第2のオブジェクト420がグリッド405に追加されている。円425は、第2のオブジェクト420を含むグリッド405の一部分に関する情報を含み得るデータ構造(例えば、サーフェルフットプリント)の図形的表現である。
図4Bは、グリッド405が、
図4Aとは異なる時間(例えば、後の時間)にキャプチャされる現実世界の部分を表すのを表し得る。
【0071】
図4Cに示すように、円415の数は増加しており、第2のオブジェクト420はグリッド405上を移動している。円425は、グリッド405上の異なる位置で第2のオブジェクト420に各々関連付けられる円425-1および425-2として示される2つの部分にある。円425-1は、420が
図4Bにおける位置にないときに、その位置に留まっていることを示すので、円425-1はペナルティを課され得る(例えば、信頼度の低下)。
図4Cは、グリッド405が、
図4Bとは異なる時間(例えば、後の時間)にキャプチャされる現実世界の部分を表すのを表し得る。
【0072】
図4Dに示すように、円415は数が増加し、円425-1は除去されており、円425-2は数が増加している(円425-2はオブジェクト420を表し得る)。
図4Dにおいて、オブジェクト410およびオブジェクト420は(例えば、データ構造またはサーフェルとして)完全に表され得る。
図4Dは、グリッド405が、
図4Cとは異なる時間(例えば、後の時間)にキャプチャされる現実世界の部分を表すのを表し得る。
【0073】
図5は、例示的な実現例による、表示のために画像を生成するための信号フローのブロック図である。
図5に示すように、信号フローは、レンダリングされた画像505ブロックと、記憶されたジオメトリ220ブロックと、レンダリング510ブロックと、ブレンド515ブロックと、ARオブジェクト520ブロックと、後処理525ブロックと、表示530ブロックとを含む。例示的な実現例では、(たとえば、経時的にキャプチャされ記憶される実世界空間を表す)記憶されたジオメトリを使用して、実世界空間内でオブジェクトの深度を表す、より完全な深度データを生成し得る。新たなフレームがレンダリングされると、記憶されたジオメトリは、実世界空間の現在のレンダリングに関連付けられる深度データを補足するよう用いられ得る(か、またはブレンド515ブロックによって表されるようにそれとブレンドされ得る)。ARオブジェクトは、ブレンドされたレンダリングと組み合わせられて、ARシステムのディスプレイ上に表示するための画像を生成し得る。
【0074】
レンダリングされた画像505ブロックは、(たとえば深度215に基づく)レンダリングされた深度画像および/または(たとえば画像210に基づく)レンダリングされたカラー画像であり得る。言い換えれば、レンダリングされた画像505は、色情報、深度情報、方向情報、層情報、オブジェクト情報などを含み得る。いくつかの実現例では、深度情報は、空白(たとえば、不完全なピクセルまたは欠落したピクセル)であり得、および/または無効と印され得る。
【0075】
レンダリング510ブロックは、記憶されたジオメトリ220ブロックから取り出される画像のレンダリングであり得る。記憶されたジオメトリ220ブロックは、ARアプリケーションを実行するデバイス(例えば、携帯電話、タブレット、ヘッドセット等)のストレージ(たとえば、メモリ)および/またはARアプリケーションを実行するデバイスを使用してアクセス可能なメモリを有するサーバを表し得る。示されるように、レンダリング510ブロックは、記憶されたジオメトリ220ブロックから読み出され得る。レンダリング510ブロックは、深度情報および/または色情報を有する画像を含み得る。深度情報は、画像内のピクセルごとの深度値を有する深度マップを含み得る。深度情報は、層順序を示す数(例えば、インデックスまたはzインデックス)を各々が有する深度層を含み得る。深度情報は、画像中のピクセルごとに複数の順序付けられた深度を有する階層化された深度画像(LDI)であり得る。色情報は、画像内の各ピクセルについての色(例えば、RGB、YUVなど)であり得る。
【0076】
例示的な実現例では、記憶されたジオメトリ220ブロックは、サーフェルを含むデータ構造を含み得る。したがって、レンダリング510ブロックは、投影技術を使用し得る。投影技術は、点に基づくレンダリングまたはスプラッティングを含み得る。点に基づくレンダリングまたはスプラッティングは、ピクセル空間内でピクセルに変数を割り当てることを含み得る。変数は、色、テクスチャ、深度、方向などを含み得る。変数は、少なくとも1つのサーフェルから(例えば、サーフェルおよびピクセルの位置に基づいて)読み出され得る。
【0077】
ブレンドブロック515は、レンダリングされた画像505を記憶されたジオメトリ220のレンダリング510とブレンドするよう構成される。レンダリングされた画像505を記憶されたジオメトリ220のレンダリング510とブレンドすることにより、実世界の表現または実世界画像を生成し得る。2つ以上の画像をブレンドすることは、各画像の一部を組み合わせることを含み得る。例えば、レンダリングされた画像505ブロックから欠落しているデータ(例えば、深度データ、色データ、ピクセル等)は、記憶されたジオメトリ220のレンダリング510からのデータを使用して埋められ得る。例えば、同じ位置ならびに/または同じ位置および同じ深度を有するピクセルを組み合わせ得る。位置は、基準点(またはホーム位置)からの距離および方向に基づき得る。位置は、座標系(例えば、x、yグリッド)に基づき得る。
【0078】
前述のように、深度画像内のピクセルの一部は、空白であるかまたは無効として印され得る。したがって、例示的な実現例では、レンダリングされた画像505内において(例えば深度を有する)欠落しているかまたは無効として印されるピクセル(例えば欠落した深度情報または無効な深度情報)は、欠落または無効ピクセルと同じ位置および層を有する記憶されたジオメトリ220のレンダリング510からのピクセル(例えば深度情報)で埋められ得る。ある例示的な実現例では、レンダリングされた画像505および記憶されたジオメトリ220のレンダリング510からのピクセルは、同じ位置を有し、同じインデックス値を有する層にある。2つの画像をブレンドすることは、記憶されたジオメトリ220のレンダリング510からピクセルを選択することと、レンダリングされた画像105からピクセルを破棄することとを含み得る。
【0079】
代替として、2つの画像をブレンドすることは、レンダリングされた画像105からピクセルを選択することと、記憶されたジオメトリ220のレンダリング510からピクセルを破棄することとを含み得る。代替として、2つの画像をブレンドすることは、色を平均することと、平均された色を当該の位置および当該の層に割り当てることとを含み得る。2つの画像をブレンドするための他の技術は、本開示の範囲内である。
【0080】
さらに、ブレンドの前に、画像を互いに投影し得る。たとえば、モバイルデバイスが移動している間に画像がキャプチャされ得る。(例えば、バッファに記憶され、および/またはレンダリング(510)ブロックで生成される)前のフレームは、現在のフレーム(たとえば、レンダリングされた画像505)に再投影され得る。この実現例は、オブジェクトおよび/または観測された特徴をフレームにわたって整列させることを可能にし得る(か、または可能にするのに役立ち得る)。
【0081】
ブレンドブロック515はまた、ARオブジェクト520を実世界画像に組み合わせ得る。ARオブジェクトは、(ARアプリケーションによる)実世界空間の中への配置のためにARアプリケーションによって生成される画像であり得る。上述のように、2つ以上の画像をブレンドおよび/または組み合わせることは、各画像の一部を組み合わせることを含み得る。例示的な実現例では、ARオブジェクト520を実世界画像に組み合わせることは、深度に基づくオクルージョンを含み得る。例えば、ARオブジェクト520の一部が、実世界オブジェクトの一部の前にある深度(例えば、層)にある場合、実世界オブジェクトの一部は、組み合わせられた画像から除去され得る。さらに、ARオブジェクト520の一部が、実世界オブジェクトの一部の背後にある深度(たとえば、層)にある場合、ARオブジェクト520の一部は、組み合わせられた画像から除去され得る。記憶されたジオメトリ220を使用することの利点は、実世界画像がARオブジェクト520の一部の位置で空白または無効として印される深度情報を含む場合、記憶されたジオメトリ220の深度情報が、空白または無効な深度情報の代わりに使用され得ることである。したがって、深度に基づくオクルージョンは、記憶されたジオメトリ220を使用して、より正確であり得る。
【0082】
後処理525ブロックは、結果として生じる画像またはフレームの品質を改善し得る。表示530ブロックは、結果として生じる後処理されたブレンドおよび/または組み合わせられた画像を表示するよう構成される。例えば、結果として生じる画像またはフレームは、色間の遷移を平滑化するかまたは色間の遷移を鮮鋭化するようにフィルタリングされ得る。結果として生じる画像またはフレームは、アーチファクト(例えば、画像に属さない可能性が高い色または深度を含む誤差)を除去するようにフィルタリングされ得る。結果として生じる画像またはフレームは、ARおよび実世界の不連続性(実世界の要素によってブロックされるべきAR要素など)を除去するようにフィルタリングされ得る。
【0083】
例示的な実現例では、記憶されたジオメトリ220は、レンダリングされた画像505なしで使用され得る。言い換えれば、実世界空間は、記憶された実世界空間であり得る。したがって、記憶されたジオメトリ220は、実世界空間の完全な(または非常に完成した)表現であり得る。この実現例では、ARオブジェクト520は、レンダリングされた、記憶された現実世界と組み合わせられる。
【0084】
いくつかの実現例では、本明細書で説明する技術は、アプリケーションプログラミングインターフェイス(API)において実現され得る。APIは、開発者ツールキットの要素であり得る。開発者によってアクセス可能なAPIにこれらの技術を含めることは、多くのユースケースを可能にし得る。例えば、実世界空間は、生活空間(例えば、リビングルーム、ダイニングルームなど)を表し得る。ARオブジェクト520は、家具オブジェクト(例えば、ソファー、椅子、テーブルなど)であり得る。ARアプリケーションのユーザは、必要に応じて家具オブジェクトを生活空間に配置し得る。さらなる実現例では、ARアプリケーションは、実世界空間においてオブジェクトを除去するよう構成され得る。例えば、既存の家具を取り除き、別の家具のAR画像に置き換え得る。上述のように、記憶されたジオメトリ220はサーフェルを含み得る。この実施形態では、サーフェルの一部を除去し得る(たとえば、記憶されたジオメトリ220から削除されるか、またはレンダリング510ブロックによるレンダリングを妨げられる)。
【0085】
図6および
図7は、例示的な実施形態による方法のフローチャートである。
図6および
図7に関して説明した方法は、装置に関連付けられるメモリ(例えば、非一時的なコンピュータ可読記憶媒体)に記憶され、装置に関連付けられる少なくとも1つのプロセッサによって実行されるソフトウェアコードの実行に起因して実行されてもよい。
【0086】
しかしながら、専用プロセッサとして具現化されるシステム等の代替実施形態が検討される。専用プロセッサは、グラフィックス処理ユニット(GPU)であり得る。GPUは、グラフィックスカードの構成要素であり得る。グラフィックスカードはまた、ビデオメモリ、ランダムアクセスメモリデジタルアナログ変換器(RAMDAC)、およびドライバソフトウェアを含み得る。ビデオメモリは、画像、ビデオのフレーム、画像のオブジェクト、またはフレームのシーンを表すデジタルデータを記憶するフレームバッファであり得る。RAMDACは、ビデオメモリの内容を読み出し、その内容をアナログRGB信号に変換し、アナログ信号をディスプレイまたはモニタに送信するよう構成され得る。ドライバソフトウェアは、上述のメモリに記憶されるソフトウェアコードであり得る。ソフトウェアコードは、本明細書で説明される方法を実現するよう構成され得る。
【0087】
以下で説明する方法は、プロセッサおよび/または専用プロセッサによって実行されるものとして説明するが、方法は必ずしも同じプロセッサによって実行されるとは限らない。言い換えれば、少なくとも1つのプロセッサおよび/または少なくとも1つの専用プロセッサが、
図6および
図7に関して以下で説明する方法を実行してもよい。
【0088】
図6は、例示的な実現例による、ジオメトリを記憶するための方法を示す図である。ステップS605に示すように、色データを受信する。例えば、ARアプリケーションが動作し得る。ARアプリケーションは、カメラを含むコンピューティングデバイス(例えば、携帯電話、タブレット、ヘッドセット等)上で動作し得る。色データは、カメラによってキャプチャされ、通信され得る。ステップS605は、二段階技術の第1の段階を開始する。
【0089】
ステップS610において、深度データが受信される。例えば、カメラは、深度データをキャプチャする機能を含み得る。言い換えると、カメラは、色データ(例えば、RGB)および深度(D)データをキャプチャし得る。カメラは、RGBDカメラであり得る。代替として、または加えて、ARアプリケーションは、色データから深度データを生成するよう構成されてもよい。上述のように、深度データは、空白であるピクセル(例えば、不完全もしくは欠落ピクセル)および/または無効と印されたピクセルを含み得る。
【0090】
ステップS615において、位置が受信される。例えば、ARアプリケーションは、実世界空間内のコンピューティングデバイスの位置を判断するよう構成され得る。位置は、基準点(またはホーム位置)からの距離および方向に基づき得る。位置は、座標系(例えば、x、yグリッド)に基づき得る。位置はまた、深度(たとえば、オブジェクトからの距離)を含み得る。ARアプリケーションは、ARアプリケーションの初期化中に基準を生成するよう構成され得る。基準は、実世界空間における位置および/または(たとえば、全地球測位センサ(グローバルポジションセンサ)からの)全地球(グローバルポジション)基準点であり得る。
【0091】
ステップS620では、画像データを記憶する。例えば、色データおよび深度データに基づく画像データが記憶される。画像データは、ピクセル、点(または点群)データ、多角形(例えば、三角形)データ、メッシュデータ、サーフェルなどであり得る。上述のように、深度データは、空白であるピクセル(例えば、不完全または欠落ピクセル)および/または無効と印されたピクセルを含み得る。したがって、画像データは、欠落または無効な深度情報を有し得る。上述のように、画像データは、バッファ(例えば、バッファ110)に記憶され得る。この第1の段階において、この画像データは、再投影(例えば、レンダリング)され、現在のデータ(例えば、カメラによってキャプチャされるような)とブレンドされ、ARアプリケーションによる表示のためにARオブジェクトと結合され得る。
【0092】
ステップS625では、記憶された画像データを読み出す。例えば、予め記憶された画像データを読み出し得る。記憶された画像データは、バッファ(例えば、バッファ110)から読み出され得る。例示的な実現例では、記憶された画像データは、ARアプリケーションを実行するデバイスのカメラによってキャプチャされる複数のフレームを含む。さらに、複数のフレームの一部を読み出し得る(例えば、1つおきのフレーム、3つのフレームのうちの1つ、4つのフレームのうちの1つ、すべて未満など)。ステップS625は、二段階技術の第2の段階を開始する。
【0093】
ステップS630において、現在のジオメトリが構築される。例えば、ARアプリケーションまたはシステムに関連付けられる実世界ジオメトリ(例えば、実世界空間のジオメトリ)を表すデータ構造(例えば、nタプル、ツリー等)を構築し得る。データ構造は、ある位置について、(例えば、ある位置におけるあるオブジェクトについて、)あるジオメトリを含み得る。データ構造は、色情報、テクスチャ情報、深度情報、位置情報、および方向情報を含み得る。深度情報は、層順序を示す数(例えば、インデックスまたはzインデックス)を各々が有する深度層を含み得る。深度情報は、画像中のピクセルごとに複数の順序付けられた深度を有する階層化された深度画像(LDI)であり得る。深度情報は深度マップを含み得る。テクスチャ情報、深度情報、位置情報、および方向情報は、接続性を有する幾何学的オブジェクト(例えば、多角形のメッシュ)の要素であり得る。テクスチャ情報、深度情報、位置情報、および方向情報は、接続性のない幾何学的オブジェクトの要素(たとえば、表面要素またはサーフェル)であり得る。
【0094】
ステップS635において、記憶された幾何学的データが更新される。例えば、ジオメトリを、既存のデータ構造(例えば、記憶されたジオメトリ220)に追加し得る。記憶されたデータを更新することは、記憶された幾何学的データに追加すること、記憶された幾何学的データを修正すること、記憶された幾何学的データの一部を置換すること、および/または記憶された幾何学的データの一部を削除することを含み得る。上述のように、幾何学的データはサーフェルであり得る。したがって、記憶された幾何学的データを更新することは、サーフェルを追加すること、サーフェルを修正すること、サーフェルを置換すること、および/またはサーフェルを削除することを含み得る。経時的に(例えば、データ構造が実世界空間の完全な表現になるにつれて、)、記憶されたジオメトリは、記憶された画像データの代わりに、ARアプリケーション内で画像(例えば、フレーム)を生成するために使用され得る。言い換えると、記憶された幾何学的データ(またはその一部)は、レンダリングされ、(例えば、カメラによってキャプチャされる)現在のデータとブレンドされ、ARアプリケーションによる表示のためにARオブジェクトと組み合わせられ得る。いくつかの実現例では、記憶された幾何学的データ(またはその一部)は、レンダリングされ、ARアプリケーションによる表示のために(現在のデータなしで)ARオブジェクトと組み合わせられ得る。
【0095】
ステップS640において、位置信頼度が更新される。例えば、信頼度は、ある範囲(例えば、0~1)の数値であり得る。より大きい(またはより小さい)数値は、高い信頼度を示し得、より小さい(またはより大きい)数値は、低い信頼度を示し得る。例えば、信頼度1は高い信頼度であり得、信頼度0は低い信頼度であり得る。信頼度は、データ構造(またはデータ構造の一部)が実世界空間をどのように表しそうかを示し得る。
【0096】
たとえば、実世界空間中のあるオブジェクトがある位置および深度で繰り返し現れる場合、実世界空間中のそのオブジェクトを表すデータ構造は、関連付けられる高い信頼度(たとえば、1に近づく数値)を有してもよい。例示的な実現例では、オブジェクトを表すサーフェルは、関連付けられる高い信頼度(たとえば、1に近づく数値)を有してもよい。実世界空間内のオブジェクトが第1のフレーム内で第1の位置および深度に、ならびに第2のフレーム内で第2の位置および深度に現れる場合、実世界空間内でそのオブジェクトを表すデータ構造は、関連付けられる低い信頼度(たとえば、0に近づく数値)を有してもよい。例示的な実現例では、オブジェクトを表すサーフェルは、関連付けられる低い信頼度(たとえば、0に近づく数値)を有してもよい。上述したように、実世界空間内で移動したオブジェクトを表すデータ構造は、データ構造内のその位置および深度において最終的に削除されてもよい。上述したように、実世界空間は、複数のデータ構造(例えば、サーフェル)によって表されてもよい。
【0097】
これらのサーフェルには、オブジェクト走査、部屋再構成、物理衝突、自由空間検出、経路計画などを含むいくつかのユースケースがある。さらに、我々のコアユースケースの1つは、サーフェルデータを最終出力深度マップにフィードバックすることである。
【0098】
図7は、例示的な実現例による、画像を生成するための方法を示す図である。ステップS705に示すように、レンダリングされた画像が受信される。例えば、ARアプリケーションが動作し得る。ARアプリケーションは、カメラを含むコンピューティングデバイス(例えば、携帯電話、タブレット、ヘッドセット等)上で動作し得る。画像(またはビデオのフレーム)は、カメラから受信され得る。受信された画像(またはビデオのフレーム)は、レンダリングされ得る。
【0099】
ステップS710において、拡張現実(AR)オブジェクトが受信される。例えば、ARオブジェクトは、(ARアプリケーションによる)実世界空間の中への配置のためにARアプリケーションによって生成されるオブジェクトであり得る。したがって、ARオブジェクトは、ARオブジェクトを生成するよう構成されるARアプリケーションの要素から受信され得る。ARオブジェクトは、色情報、深度情報、方向情報、位置情報などを含み得る。
【0100】
ステップS715において、記憶された幾何学的データが受信される。例えば、幾何学的データは、コンピューティングデバイス上に記憶され得る。例えば、幾何学的データは、サーバ上に記憶され得る。例えば、幾何学的データは、クラウド(または遠隔)メモリデバイス上に記憶され得る。したがって、幾何学的データは、コンピューティングデバイス、サーバ、および/またはクラウドメモリから受信され得る。幾何学的データは、有線または無線通信を介して受信され得る。
【0101】
ステップS720において、記憶された幾何学的データはレンダリングされる。例えば、幾何学的データは、画像としてレンダリングされる。幾何学的データをレンダリングすることは、実世界空間を表す画像の少なくとも一部を生成し得る。レンダリングは、投影技術を使用し得る。投影技術は、点に基づくレンダリングまたはスプラッティングを含み得る。点に基づくレンダリングまたはスプラッティングは、ピクセル空間内でピクセルに変数を割り当てることを含み得る。変数は、色、テクスチャ、深度、方向などを含み得る。変数は、少なくとも1つのサーフェルから(例えば、サーフェルおよびピクセルの位置に基づいて)読み出され得る。
【0102】
ステップS725において、レンダリングされた画像およびレンダリングされた幾何学的データは、ブレンドされ、ARオブジェクトと組み合わせられる。例えば、レンダリングされた画像とレンダリングされた幾何学的データとはブレンドされ得る。次いで、ARオブジェクトは、結果として生じた画像と組み合わせられ得る。レンダリングされた画像を記憶されたジオメトリのレンダリングとブレンドすることにより、現実世界の表現または実世界画像を生成し得る。2つ以上の画像をブレンドすることは、各画像の一部を組み合わせることを含み得る(上記でより詳細に説明される)。
【0103】
前述のように、深度画像内のピクセルの一部は、空白であるかまたは無効として印され得る。したがって、例示的な実現例では、レンダリングされた画像内において(例えば深度を有する)欠落しているかまたは無効として印されるピクセル(例えば欠落した深度情報または無効な深度情報)は、欠落または無効ピクセルと同じ位置および層を有する記憶された幾何学的データのレンダリングからのピクセル(例えば深度情報)で埋められ得る。
【0104】
例示的な実現例では、ARオブジェクトを実世界画像に組み合わせることは、深度に基づくオクルージョンを含み得る。例えば、ARオブジェクトの一部が、実世界オブジェクトの一部の前にある深度(例えば、層)にある場合、実世界オブジェクトの一部は、組み合わせられた画像から除去され得る。さらに、ARオブジェクトの一部が、実世界オブジェクトの一部の背後にある深度(たとえば、層)にある場合、ARオブジェクトの一部は、組み合わせられた画像から除去され得る。記憶された幾何学的データを使用することの利点は、実世界画像がARオブジェクトの一部の位置で空白または無効として印される深度情報を含む場合、記憶された幾何学的データの深度情報が、空白または無効な深度情報の代わりに使用され得ることである。したがって、深度に基づくオクルージョンは、記憶された幾何学的データを使用して、より正確であり得る。
【0105】
ステップS730では、ブレンド後処理が実行される。例えば、ブレンド後処理は、結果として得られる画像またはフレームの品質を改善し得る。結果として生じる画像またはフレームは、色間の遷移を平滑化するかまたは色間の遷移を鮮鋭化するようフィルタリングされ得る。結果として生じる画像またはフレームは、アーチファクト(例えば、画像に属さない可能性が高い色または深度を含む誤差)を除去するようにフィルタリングされ得る。結果として生じる画像またはフレームは、ARおよび実世界の不連続性(実世界の要素によってブロックされるべきAR要素など)を除去するようにフィルタリングされ得る。ステップS735では、画像を表示する。例えば、結果として得られる後処理されたブレンドされた画像を表示し得る。
【0106】
図8は、例示的な実現例による、マルチデバイスジオメトリを記憶するためのシステムのブロック図である。
図8に示すように、システムは、デバイス1 805と、デバイス2 810と、デバイスn 815と、サーバ820と、メモリ825とを含む。デバイス1 805は、位置205ブロックと、画像210ブロックと、深度215ブロックとを含む。デバイス2 810は、位置205ブロックと、画像210ブロックと、深度215ブロックとを含む。デバイスn 825は、位置205ブロックと、画像210ブロックと、深度215ブロックとを含む。サーバ820は、ジオメトリ構築225ブロックを含む。メモリ825は、記憶されたジオメトリ220ブロックおよび位置信頼度230ブロックを含む。
【0107】
図8の例示的な実現例では、複数のデバイス(例えば、デバイス1 805、デバイス2 810、…、デバイスn)がAR環境において共に動作する。サーバは、複数のデバイスの各々から画像、深度、および位置データを受信する。ジオメトリ構築225ブロックは、複数のデバイスの各々からの画像、深度、および位置データを使用して、幾何学的データを生成し得る。サーバ820は、メモリ825の記憶されたジオメトリ220ブロックおよび位置信頼度230ブロックに、幾何学的データおよび信頼度を記憶し得る。メモリ825はサーバ820とは別個に示されているが、メモリ825はサーバ820に含まれ得る。
【0108】
複数のデバイスは、バッファ110を含み、バッファ110に記憶されるフレームの一部をサーバ820に通信し得る。サーバ820は、記憶されたジオメトリを(例えばサーフェルとして)複数のデバイスに通信し得る。したがって、複数のデバイスの各々は、個々のデバイスにより生成される実世界空間と比較して、ARアプリケーションにおいて、より完全な実世界空間を利用し得る。言い換えれば、複数のデバイスの各々は、個々のデバイスによっては見られなかった実世界空間の部分を利用し得る。
図8の実施形態では、複数のデバイスの各々は、画像を投影(たとえば、レンダリング)およびブレンドするよう構成される。
【0109】
図9は、例示的な実現例による、マルチデバイス拡張現実システムのためのシステムのブロック図を図示する。
図9に示すように、システムは、デバイス1 805と、デバイス2 810と、デバイスn 815と、サーバ820と、メモリ825とを含む。デバイス1 805は、位置205ブロックと、画像210ブロックと、表示920ブロックとを含む。デバイス2 810は、位置205ブロックと、画像210ブロックと、表示920ブロックとを含む。デバイスn 815は、位置205ブロックと、画像210ブロックと、表示920ブロックとを含む。メモリ825は、記憶されたジオメトリ220ブロックおよび位置信頼度230ブロックを含む。
【0110】
図9の実施形態では、複数のデバイスは、サーバ920から投影(たとえばレンダリング)およびブレンドされた画像を受信するよう構成される。レンダリングおよびブレンドされた画像は、実世界空間(例えば、実世界空間100)を表す。したがって、サーバ820は、ポストブレンダ915ブロックと、画像ブレンダ910ブロックと、画像レンダラ905ブロックとを含む。しかしながら、複数のデバイスの各々は、ARオブジェクトを実世界空間のレンダリングと組み合わせるよう構成される。
【0111】
図10は、ここに説明される手法を用いて使用され得るコンピュータデバイス1000およびモバイルコンピュータデバイス1050の一例を示す。コンピューティングデバイス1000は、ラップトップ、デスクトップ、ワークステーション、携帯情報端末、サーバ、ブレードサーバ、メインフレーム、および他の適切なコンピュータといった、さまざまな形態のデジタルコンピュータを表わすよう意図されている。コンピューティングデバイス1050は、携帯情報端末、携帯電話、スマートフォン、および他の同様のコンピューティングデバイスといった、さまざまな形態のモバイルデバイスを表わすよう意図されている。ここに示すコンポーネント、それらの接続および関係、ならびにそれらの機能は単なる例示であることが意図されており、本文書に記載のおよび/または請求項に記載の本発明の実現化例を限定するよう意図されてはいない。
【0112】
コンピューティングデバイス1000は、プロセッサ1002と、メモリ1004と、記憶装置1006と、メモリ1004および高速拡張ポート1010に接続している高速インターフェイス1008と、低速バス1014および記憶装置1006に接続している低速インターフェイス1012とを含む。コンポーネント1002、1004、1006、1008、1010、および1012の各々は、さまざまなバスを使用して相互接続されており、共通のマザーボード上にまたは他の態様で適宜搭載され得る。プロセッサ1002は、コンピューティングデバイス1000内で実行される命令を処理可能であり、これらの命令は、GUIのためのグラフィック情報を、高速インターフェイス1008に結合されたディスプレイ1016などの外部入力/出力デバイス上に表示するために、メモリ1004内または記憶装置1006上に格納された命令を含む。他の実現化例では、複数のプロセッサおよび/または複数のバスが、複数のメモリおよび複数のタイプのメモリとともに適宜使用され得る。また、複数のコンピューティングデバイス1000が接続されてもよく、各デバイスは(たとえば、サーババンク、ブレードサーバのグループ、またはマルチプロセッサシステムとして)必要な動作の部分を提供する。
【0113】
メモリ1004は、情報をコンピューティングデバイス1000内に格納する。一実現化例では、メモリ1004は1つまたは複数の揮発性メモリユニットである。別の実現化例では、メモリ1004は1つまたは複数の不揮発性メモリユニットである。メモリ1004はまた、磁気ディスクまたは光ディスクといった別の形態のコンピュータ読取可能媒体であってもよい。
【0114】
記憶装置1006は、コンピューティングデバイス1000のためのマスストレージを提供可能である。一実現化例では、記憶装置1006は、フロッピー(登録商標)ディスクデバイス、ハードディスクデバイス、光ディスクデバイス、もしくはテープデバイス、フラッシュメモリまたは他の同様のソリッドステートメモリデバイス、もしくは、ストレージエリアネットワークまたは他の構成におけるデバイスを含むデバイスのアレイといった、コンピュータ読取可能媒体であってもよく、または当該コンピュータ読取可能媒体を含んでいてもよい。コンピュータプログラム製品が情報担体において有形に具現化され得る。コンピュータプログラム製品はまた、実行されると上述のような1つ以上の方法を行なう命令を含み得る。情報担体は、メモリ1004、記憶装置1006、またはプロセッサ1002上のメモリといった、コンピュータ読取可能媒体または機械読取可能媒体である。
【0115】
高速コントローラ1008はコンピューティングデバイス1000のための帯域幅集約的な動作を管理し、一方、低速コントローラ1012はより低い帯域幅集約的な動作を管理する。機能のそのような割当ては例示に過ぎない。一実現化例では、高速コントローラ1008は、メモリ1004、ディスプレイ1016に(たとえば、グラフィックスプロセッサまたはアクセラレータを介して)、および、さまざまな拡張カード(図示せず)を受付け得る高速拡張ポート1010に結合される。この実現化例では、低速コントローラ1012は、記憶装置1006および低速拡張ポート1014に結合される。さまざまな通信ポート(たとえば、USB、ブルートゥース(登録商標)、イーサネット(登録商標)、無線イーサネット)を含み得る低速拡張ポートは、キーボード、ポインティングデバイス、スキャナなどの1つ以上の入力/出力デバイスに、もしくは、スイッチまたはルータなどのネットワーキングデバイスに、たとえばネットワークアダプタを介して結合され得る。
【0116】
コンピューティングデバイス1000は、図に示すように多くの異なる形態で実現され得る。たとえばそれは、標準サーバ1020として、またはそのようなサーバのグループで複数回実現され得る。それはまた、ラックサーバシステム1024の一部として実現され得る。加えて、それは、ラップトップコンピュータ1022などのパーソナルコンピュータにおいて実現され得る。これに代えて、コンピューティングデバイス1000からのコンポーネントは、デバイス1050などのモバイルデバイス(図示せず)における他のコンポーネントと組合され得る。そのようなデバイスの各々は、コンピューティングデバイス1000、1050のうちの1つ以上を含んでいてもよく、システム全体が、互いに通信する複数のコンピューティングデバイス1000、1050で構成されてもよい。
【0117】
コンピューティングデバイス1050は、他のコンポーネントの中でもとりわけ、プロセッサ1052と、メモリ1064と、ディスプレイ1054などの入力/出力デバイスと、通信インターフェイス1066と、トランシーバ1068とを含む。デバイス1050にはまた、追加のストレージを提供するために、マイクロドライブまたは他のデバイスなどの記憶装置が設けられてもよい。コンポーネント1050、1052、1064、1054、1066、および1068の各々は、さまざまなバスを使用して相互接続されており、当該コンポーネントのうちのいくつかは、共通のマザーボード上にまたは他の態様で適宜搭載され得る。
【0118】
プロセッサ1052は、メモリ1064に格納された命令を含む、コンピューティングデバイス1050内の命令を実行可能である。プロセッサは、別個の複数のアナログおよびデジタルプロセッサを含むチップのチップセットとして実現され得る。プロセッサは、たとえば、ユーザインターフェイス、デバイス1050が実行するアプリケーション、およびデバイス1050による無線通信の制御といった、デバイス1050の他のコンポーネント同士の連携を提供し得る。
【0119】
プロセッサ1052は、ディスプレイ1054に結合された制御インターフェイス1058およびディスプレイインターフェイス1056を介してユーザと通信し得る。ディスプレイ1054は、たとえば、TFT LCD(Thin-Film-Transistor Liquid Crystal Display:薄膜トランジスタ液晶ディスプレイ)、またはOLED(Organic Light Emitting Diode:有機発光ダイオード)ディスプレイ、または他の適切なディスプレイ技術であり得る。ディスプレイインターフェイス1056は、ディスプレイ1054を駆動してグラフィカル情報および他の情報をユーザに提示するための適切な回路を含み得る。制御インターフェイス1058は、ユーザからコマンドを受信し、それらをプロセッサ1052に送出するために変換し得る。加えて、デバイス1050と他のデバイスとの近接エリア通信を可能にするように、外部インターフェイス1062がプロセッサ1052と通信した状態で設けられ得る。外部インターフェイス1062は、たとえば、ある実現化例では有線通信を提供し、他の実現化例では無線通信を提供してもよく、複数のインターフェイスも使用されてもよい。
【0120】
メモリ1064は、情報をコンピューティングデバイス1050内に格納する。メモリ1064は、1つまたは複数のコンピュータ読取可能媒体、1つまたは複数の揮発性メモリユニット、もしくは、1つまたは複数の不揮発性メモリユニットのうちの1つ以上として実現され得る。拡張メモリ1074も設けられ、拡張インターフェイス1072を介してデバイス1050に接続され得る。拡張インターフェイス1072は、たとえばSIMM(Single In Line Memory Module)カードインターフェイスを含み得る。そのような拡張メモリ1074は、デバイス1050に余分の格納スペースを提供してもよく、もしくは、デバイス1050のためのアプリケーションまたは他の情報も格納してもよい。具体的には、拡張メモリ1074は、上述のプロセスを実行または補足するための命令を含んでいてもよく、安全な情報も含んでいてもよい。このため、たとえば、拡張メモリ1074はデバイス1050のためのセキュリティモジュールとして設けられてもよく、デバイス1050の安全な使用を許可する命令でプログラミングされてもよい。加えて、ハッキング不可能な態様でSIMMカード上に識別情報を載せるといったように、安全なアプリケーションが追加情報とともにSIMMカードを介して提供されてもよい。
【0121】
メモリはたとえば、以下に説明されるようなフラッシュメモリおよび/またはNVRAMメモリを含み得る。一実現化例では、コンピュータプログラム製品が情報担体において有形に具現化される。コンピュータプログラム製品は、実行されると上述のような1つ以上の方法を行なう命令を含む。情報担体は、メモリ1064、拡張メモリ1074、またはプロセッサ1052上のメモリといった、コンピュータ読取可能媒体または機械読取可能媒体であり、たとえばトランシーバ1068または外部インターフェイス1062を通して受信され得る。
【0122】
デバイス1050は、必要に応じてデジタル信号処理回路を含み得る通信インターフェイス1066を介して無線通信し得る。通信インターフェイス1066は、とりわけ、GSM(登録商標)音声通話、SMS、EMS、またはMMSメッセージング、CDMA、TDMA、PDC、WCDMA(登録商標)、CDMA2000、またはGPRSといった、さまざまなモードまたはプロトコル下での通信を提供し得る。そのような通信は、たとえば無線周波数トランシーバ1068を介して生じ得る。加えて、ブルートゥース、Wi-Fi、または他のそのようなトランシーバ(図示せず)などを使用して、短距離通信が生じ得る。加えて、GPS(Global Positioning System:全地球測位システム)レシーバモジュール1070が、追加のナビゲーション関連および位置関連無線データをデバイス1050に提供してもよく、当該データは、デバイス1050上で実行されるアプリケーションによって適宜使用されてもよい。
【0123】
デバイス1050はまた、ユーザから口頭情報を受信してそれを使用可能なデジタル情報に変換し得る音声コーデック1060を使用して、音声通信してもよい。音声コーデック1060はまた、たとえばデバイス1050のハンドセットにおいて、スピーカを介するなどして、ユーザに聞こえる音を生成してもよい。そのような音は、音声電話からの音を含んでいてもよく、録音された音(たとえば、音声メッセージ、音楽ファイルなど)を含んでいてもよく、デバイス1050上で動作するアプリケーションが生成する音も含んでいてもよい。
【0124】
コンピューティングデバイス1050は、図に示すように多くの異なる形態で実現され得る。たとえばそれは、携帯電話1080として実現され得る。それはまた、スマートフォン1082、携帯情報端末、または他の同様のモバイルデバイスの一部として実現され得る。
【0125】
一般的な局面では、1つ以上のプロセッサと命令を記憶するメモリとを含む装置、デバイス、システム、(コンピュータシステム上で実行され得るコンピュータ実行可能プログラムコードを記憶した)非一時的コンピュータ可読媒体、および/または方法は、あるプロセスをある方法で実行し得、その方法は、拡張現実(AR)アプリケーションの第1の時間に第1のフレームに関連付けられる第1の深度画像を受信することを含み、第1の深度画像は、実世界空間の少なくとも第1の部分を表し、本方法はさらに、第1の深度画像を記憶することと、ARアプリケーションの第1の時間の後の第2の時間に第2のフレームに関連付けられる第2の深度画像を受信することとを含み、第2の深度画像は、実世界空間の少なくとも第2の部分を表し、本方法はさらに、少なくとも、記憶された第1の深度画像を第2の深度画像とブレンドすることによって、実世界画像を生成することと、レンダリングされたARオブジェクトを受信することと、実世界画像内でARオブジェクトを組み合わせることと、ARオブジェクトと組み合わされた実世界画像を表示することとを含み得る。
【0126】
実施形態は、以下の特徴のうちの1つまたは複数を含み得る。たとえば、第1の深度画像は、ARアプリケーションに関連付けられるバッファに記憶されるARアプリケーションのフレームを表す複数の深度画像のうちの1つであり得る。第1の深度画像は、ARアプリケーションに関連付けられるバッファに記憶されるARアプリケーションのフレームを表す複数の深度画像のうちの1つであり得、本方法は、さらに、バッファに記憶される複数の深度画像の一部を選択することと、複数の深度画像の一部に基づいてデータ構造を生成することとを含み、データ構造は実世界空間を表し、データ構造は、深度情報、位置情報、および方向情報を含み、本方法は、さらに、生成されたデータ構造を記憶することを含み得る。第1の深度画像は、ARアプリケーションに関連付けられるバッファに記憶されるARアプリケーションのフレームを表す複数の深度画像のうちの1つであり得、本方法は、さらに、バッファに記憶される複数の深度画像の一部を受信することと、複数の深度画像の一部に基づいて複数の表面要素(サーフェル)を生成することとを含み、複数のサーフェルは実世界空間を表し、本方法はさらに、生成された複数のサーフェルを記憶することを含み得る。
【0127】
例えば、本方法はさらに、深度情報、位置情報、および方向情報を含むデータ構造を受信することと、データ構造を第3の深度画像としてレンダリングすることと、第3の深度画像を実世界画像とブレンドすることとを含み得る。本方法はさらに、実世界空間を表す複数のサーフェルを受信することと、複数のサーフェルを第3の深度画像としてレンダリングすることと、第3の深度画像を実世界画像とブレンドすることとを含み得る。実世界画像内においてARオブジェクトを組み合わせることは、深度に基づいて、実世界画像内のピクセルの一部をARオブジェクト内のピクセルの一部と置換することを含み得る。
【0128】
記憶された第1の深度画像を第2の深度画像とブレンドすることは、第2の深度画像内のピクセルの一部を、記憶された第1の深度画像の一部と置換することを含み得る。第2の深度画像は、少なくとも1つのピクセルを欠き得、記憶された第1の深度画像を第2の深度画像とブレンドすることは、少なくとも1つのピクセルを、記憶された第1の深度画像の一部と置換することを含み得る。本方法はさらに、実世界空間を表す複数のサーフェルを受信することと、複数のサーフェルをレンダリングすることとを含む。第2の深度画像は、少なくとも1つのピクセルを欠き得、本方法はさらに、少なくとも1つのピクセルを、レンダリングされた複数のサーフェルの一部と置換することを含む。記憶された第1の深度画像は、第1の深度画像が実世界空間をある位置において表す尤度を示す位置信頼度を含み得る。
【0129】
別の一般的な局面では、1つ以上のプロセッサと命令を記憶するメモリとを含む装置、デバイス、システム、(コンピュータシステム上で実行され得るコンピュータ実行可能プログラムコードを記憶した)非一時的コンピュータ可読媒体、および/または方法は、あるプロセスをある方法で実行し得、その方法は、拡張現実(AR)アプリケーションのフレームに関連付けられる深度データを受信することを含み、深度データは、実世界空間の少なくとも一部を表し、本方法はさらに、深度データを、ARアプリケーションのフレームを表す複数の深度画像のうちの1つとして、ARアプリケーションに関連付けられるバッファに記憶することと、バッファに記憶される複数の深度画像の一部を選択することと、複数の深度画像の一部に基づいてデータ構造を生成することとを含み、データ構造は実世界空間を表し、データ構造は、深度情報、位置情報、および方向情報を含み、本方法は、さらに、生成されたデータ構造を記憶することを含み得る。
【0130】
実施形態は、以下の特徴のうちの1つまたは複数を含み得る。例えば、データ構造は、複数の表面要素(サーフェル)を含み得る。データ構造は、サーバと関連して記憶され得る。複数の深度画像の一部を選択することは、ARアプリケーションを実行する複数のデバイス上の複数のバッファから複数の画像を選択することを含み得る。記憶された深度データは、深度データが実世界空間をある位置において表す尤度を示す位置信頼度を含み得る。
【0131】
さらに別の一般的な局面では、1つ以上のプロセッサと命令を記憶するメモリとを含む装置、デバイス、システム、(コンピュータシステム上で実行され得るコンピュータ実行可能プログラムコードを記憶した)非一時的コンピュータ可読媒体、および/または方法は、あるプロセスをある方法で実行し得、その方法は、拡張現実(AR)アプリケーションのフレームに関連付けられる第1の深度データを受信することを含み、第1の深度データは、実世界空間の少なくとも一部を表し、本方法はさらに、ARアプリケーションに関連付けられる実世界空間の少なくとも第2の部分を表すデータ構造を受信することを含み、データ構造は、深度情報、位置情報、および方向情報を含み、本方法はさらに、少なくとも第1の深度データをデータ構造とブレンドすることによって実世界画像を生成することと、ARオブジェクトを受信することと、実世界画像をARオブジェクトと組み合わせることと、ARオブジェクトと組み合わされた実世界画像を表示することとを含み得る。
【0132】
実施形態は、以下の特徴のうちの1つまたは複数を含み得る。例えば、実世界画像内においてARオブジェクトを組み合わせることは、深度に基づいて、実世界画像内のピクセルの一部をARオブジェクト内のピクセルの一部と置換することを含み得る。記憶された第1の深度データをデータ構造とブレンドすることは、第2の深度画像内のピクセルの一部を、記憶された第1の深度画像の一部と置換することを含み得る。第1の深度データは、少なくとも1つのピクセルを欠き得、第1の深度データをデータ構造とブレンドすることは、少なくとも1つのピクセルをデータ構造の一部と置換することを含み得る。データ構造は、複数の表面要素(サーフェル)を含み得る。データ構造は、複数のサーフェルを含み得、第1の深度データは、少なくとも1つのピクセルを欠き得、本方法はさらに、少なくとも1つのピクセルを複数のサーフェルの一部と置換することを含み得る。実世界空間を表すデータ構造は、深度データが実世界空間をある位置において表す尤度を示す位置信頼度を含み得る。データ構造は、サーバから受信され得る。
【0133】
例示的な実施形態はさまざまな修正および代替的形態を含み得るが、それらの実施形態は例として図面に示されており、上に詳細に説明される。しかしながら、例示的な実施形態を開示された特定の形態に限定する意図はなく、それどころか、例示的な実施形態は請求の範囲内に該当するすべての修正、均等物、および代替物を網羅することが理解されるべきである。同じ番号は、図の説明全体にわたって同じ要素を指す。
【0134】
ここに説明されるシステムおよび手法のさまざまな実現化例は、デジタル電子回路、集積回路、特別に設計されたASIC(application specific integrated circuit:特定用途向け集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェア、および/またはそれらの組合せで実現され得る。これらのさまざまな実現化例は、少なくとも1つのプログラマブルプロセッサを含むプログラマブルシステム上で実行可能および/または解釈可能である1つ以上のコンピュータプログラムにおける実現化例を含んでいてもよく、当該プロセッサは専用であっても汎用であってもよく、ストレージシステム、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスとの間でデータおよび命令を送受信するように結合されてもよい。ここに説明されるシステムおよび手法のさまざまな実現化例は、ソフトウェア局面とハードウェア局面とを組合せることができる回路、モジュール、ブロック、またはシステムとして実現可能であり、および/または、ここに概してそう呼ばれ得る。たとえば、モジュールは、プロセッサ(たとえば、シリコン基板、GaAs基板などの上に形成されたプロセッサ)または何らかの他のプログラマブルデータ処理装置上で実行される機能/行為/コンピュータプログラム命令を含み得る。
【0135】
上述の例示的な実施形態のうちのいくつかは、フローチャートとして示されるプロセスまたは方法として説明される。これらのフローチャートは動作を逐次プロセスとして説明しているが、動作の多くは、並列、同時または一斉に行なわれてもよい。加えて、動作の順序は並び替えられてもよい。それらの動作が完了されるとプロセスは終了され得るが、図に含まれていない追加のステップも有していてもよい。これらのプロセスは、方法、機能、手順、サブルーチン、サブプログラムなどに対応していてもよい。
【0136】
それらのうちのいくつかがフローチャートによって示されている、上述された方法は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはそれらの任意の組合せによって実現され得る。ソフトウェア、ファームウェア、ミドルウェア、またはマイクロコードにおいて実現される場合、必要なタスクを行なうプログラムコードまたはコードセグメントは、記憶媒体などの機械読取可能媒体またはコンピュータ読取可能媒体に格納され得る。プロセッサが必要なタスクを行ない得る。
【0137】
ここに開示された具体的な構造詳細および機能詳細は、例示的な実施形態を説明するための代表的なものに過ぎない。しかしながら、例示的な実施形態は、多くの代替的な形態で具現化され、ここに述べられた実施形態のみに限定されると解釈されるべきでない。
【0138】
第1、第2などといった用語は、さまざまな要素を説明するためにここに使用され得るが、これらの要素はこれらの用語によって限定されるべきでない、ということが理解されるであろう。これらの用語は、1つの要素を別の要素と区別するために使用されているに過ぎない。たとえば、例示的な実施形態の範囲から逸脱することなく、第1の要素を第2の要素と称してもよく、同様に、第2の要素を第1の要素と称してもよい。ここに使用されるように、「および/または」という用語は、関連付けられる列挙された項目の1つ以上のいずれかおよびすべての組合せを含む。
【0139】
ある要素が別の要素に接続または結合されると称される場合、ある要素は別の要素に直接接続または結合され得るか、もしくは介在要素が存在し得る、ということが理解されるであろう。対照的に、ある要素が別の要素に直接接続または直接結合されると称される場合、介在要素は存在しない。要素間の関係を説明するために使用される他の文言は、類似の態様(たとえば、「間に」と「間に直接」、「隣接」と「直接隣接」など)で解釈されるべきである。
【0140】
ここに使用される用語は特定の実施形態を説明するためのものに過ぎず、例示的な実施形態の限定であるよう意図されてはいない。ここに使用されるように、単数形は、文脈が別の態様を明らかに示していない限り、複数形も含むよう意図される。「備える(comprises, comprising)」および/または「含む(includes, including)」という用語は、ここに使用される場合、言及された特徴、整数、ステップ、動作、要素および/またはコンポーネントの存在を特定するが、1つ以上の他の特徴、整数、ステップ、動作、要素、コンポーネントおよび/またはそれらのグループの存在または追加を排除しない、ということがさらに理解されるであろう。
【0141】
また、いくつかの代替的な実現化例では、言及された機能/行為が、図に示された順序とは異なって生じてもよい。たとえば、連続して示される2つの図は実際には、関与する機能性/行為に依存して、同時に実行されてもよく、または、時には逆の順序で実行されてもよい。
【0142】
別の態様で定義されていない限り、ここに使用されるすべての用語(技術用語および科学用語を含む)は、例示的な実施形態が属する技術の当業者によって一般に理解されているのと同じ意味を有する。さらに、たとえば一般に使用されている辞書で定義されているような用語は、関連技術の文脈におけるそれらの意味と一致する意味を有すると解釈されるべきであり、ここに明らかにそう定義されていない限り、理想化されたまたは過度に形式的な意味で解釈されない、ということが理解されるであろう。
【0143】
ソフトウェア、または、コンピュータメモリ内でのデータビットに対する動作のアルゴリズムおよび記号的表現に関して、上述の例示的な実施形態および対応する詳細な説明の部分が提示される。これらの説明および表現は、当業者が自分の研究の内容を他の当業者に効果的に伝えるものである。アルゴリズムとは、その用語がここに使用される場合、および一般的に使用される場合、所望の結果に至るステップの首尾一貫したシーケンスであると考えられる。これらのステップは、物理量の物理的操作を必要とするものである。必ずではないものの、通常は、これらの量は、格納、転送、組合せ、比較、および別の態様での操作が可能である光学信号、電気信号、または磁気信号の形態を取る。これらの信号をビット、値、要素、記号、文字、項、または数字などと称することは、主に一般的な使用の理由により、時に便利であることが証明されている。
【0144】
上述の例示的な実施形態において、プログラムモジュールまたは機能的プロセスとして実現され得る(たとえばフローチャートの形態での)行為および動作の記号的表現への参照は、特定のタスクを行ない、または特定の抽象データタイプを実現するとともに、既存の構造要素で既存のハードウェアを使用して記述および/または実現され得る、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。そのような既存のハードウェアは、1つ以上の中央処理装置(Central Processing Unit:CPU)、デジタル信号プロセッサ(digital signal processor:DSP)、特定用途向け集積回路、または、フィールドプログラマブルゲートアレイ(field programmable gate array:FPGA)コンピュータなどを含み得る。
【0145】
しかしながら、これらおよび同様の用語はすべて、適切な物理量に関連付けられるべきであり、これらの量に適用された便利なラベルに過ぎない、ということが念頭に置かれるべきである。特に別記されない限り、あるいは説明から明らかであるように、表示の処理、コンピューティング、計算、または判断といった用語は、コンピュータシステムのレジスタおよびメモリ内で物理的な電子量として表わされるデータを操作し、当該データを、コンピュータシステムメモリ、レジスタ、もしくは他のそのような情報記憶、送信または表示装置内の物理量として同様に表わされる他のデータに変換する、コンピュータシステムまたは同様の電子コンピューティングデバイスのアクションおよびプロセスを指す。
【0146】
また、例示的な実施形態のソフトウェアによって実現される局面は典型的には、何らかの形態の非一時的プログラム記憶媒体上で符号化されるか、または、何らかのタイプの伝送媒体上で実現される。プログラム記憶媒体は、磁気的(たとえば、フロッピーディスクまたはハードドライブ)であるか、または光学的(たとえば、コンパクトディスク読み取り専用メモリ、すなわちCD ROM)であってもよく、読み取り専用またはランダムアクセスであってもよい。同様に、伝送媒体は、当該技術について公知であるツイストペア線、同軸ケーブル、光ファイバ、または何らかの他の好適な伝送媒体であってもよい。例示的な実施形態は、所与の実現化例のこれらの局面によって限定されない。
【0147】
最後に、添付の請求の範囲は、ここに説明された特徴の特定の組合せを述べているが、本開示の範囲は、請求されるその特定の組合せに限定されず、代わりに、その特定の組合せが現時点で添付の請求の範囲において具体的に列挙されているか否かに関わらず、ここに開示された特徴または実施形態の任意の組合せを包含するよう広がる。