IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ グーグル インコーポレイテッドの特許一覧

特許7591662飛翔光をシミュレートするためのシステムおよび方法
<>
  • 特許-飛翔光をシミュレートするためのシステムおよび方法 図1
  • 特許-飛翔光をシミュレートするためのシステムおよび方法 図2
  • 特許-飛翔光をシミュレートするためのシステムおよび方法 図3
  • 特許-飛翔光をシミュレートするためのシステムおよび方法 図4
  • 特許-飛翔光をシミュレートするためのシステムおよび方法 図5
  • 特許-飛翔光をシミュレートするためのシステムおよび方法 図6
  • 特許-飛翔光をシミュレートするためのシステムおよび方法 図7
  • 特許-飛翔光をシミュレートするためのシステムおよび方法 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-20
(45)【発行日】2024-11-28
(54)【発明の名称】飛翔光をシミュレートするためのシステムおよび方法
(51)【国際特許分類】
   G06T 13/60 20110101AFI20241121BHJP
【FI】
G06T13/60
【請求項の数】 22
(21)【出願番号】P 2023542998
(86)(22)【出願日】2021-01-15
(65)【公表番号】
(43)【公表日】2024-01-30
(86)【国際出願番号】 US2021013645
(87)【国際公開番号】W WO2022154803
(87)【国際公開日】2022-07-21
【審査請求日】2024-01-15
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】シン,ドンギク
(72)【発明者】
【氏名】ゴールドバーグ,スティーブン・ベンジャミン
【審査官】益戸 宏
(56)【参考文献】
【文献】特表2002-526843(JP,A)
【文献】江藤剛治 他3名,光の飛翔を捉えた超高速イメージセンサと今後の展開,映像情報メディア学会誌,Vol.74, No.6,2020年,pp.936-941
(58)【調査した分野】(Int.Cl.,DB名)
G06T 13/60
G06T 11/00
(57)【特許請求の範囲】
【請求項1】
光学画像に対応する深度マップに基づいて、シミュレートされた波面のための光散乱効果をシミュレートする光学シミュレーション出力を生成するステップと、
前記光学シミュレーション出力に基づいて、および、規定されたタイムスタンプに対応する時間での前記シミュレートされた波面の位置に基づいて、前記光学画像の画素の部分集合の輝度を調節することによって、飛翔光画像を生成するステップとを含む、方法。
【請求項2】
前記光学シミュレーション出力を生成するステップは、
前記深度マップに基づいて3次元データ構造を生成するステップと、
フィルタリングされた3次元データ構造を生成するために、畳み込み演算子を用いて前記3次元データ構造を畳み込むステップとを含む、請求項1に記載の方法。
【請求項3】
前記3次元データ構造を生成するステップは、
前記深度マップの所与の画素について、前記深度マップにおける前記所与の画素の2次元座標に基づいて、および、前記所与の画素に関連付けられた深度値に基づいて、前記所与の画素を前記3次元データ構造のそれぞれの位置にマッピングするステップを含む、請求項2に記載の方法。
【請求項4】
前記畳み込み演算子は、ガウス球を規定する、請求項2または3に記載の方法。
【請求項5】
前記規定されたタイムスタンプに対応する前記時間での前記シミュレートされた波面の前記位置に対応する波面深度を中心とする、前記フィルタリングされた3次元データ構造のボクセルの部分集合を含むスライスを識別するステップをさらに含む、請求項2~4のいずれか1項に記載の方法。
【請求項6】
前記光学シミュレーション出力に基づいて前記光学画像の画素の前記部分集合の前記輝度を調節することは、
識別された前記スライスを用いて前記光学画像のアフィン変換を行なうことを含む、請求項5に記載の方法。
【請求項7】
光の速度に基づいて、および、前記規定されたタイムスタンプに対応する前記時間に基づいて、前記波面深度を決定するステップをさらに含み、
前記波面深度は、前記規定されたタイムスタンプに対応する前記時間での前記光学画像におけるシミュレートされた波面の前記位置を示す、請求項5または6に記載の方法。
【請求項8】
モバイルデバイスであって、
光学画像を取り込むように構成された光学カメラと、
前記光学画像に対応する深度マップを取り込むように構成された深度カメラと、
少なくとも1つのプロセッサとを含み、前記少なくとも1つのプロセッサは、
前記深度マップに基づいて、シミュレートされた波面のための光散乱効果をシミュレートする光学シミュレーション出力を生成し、
飛翔光画像を生成するために、前記光学シミュレーション出力に基づいて、および、規定されたタイムスタンプに対応する時間での前記シミュレートされた波面の位置に基づいて、前記光学画像の画素の部分集合の輝度を調節するように構成される、モバイルデバイス。
【請求項9】
前記光学シミュレーション出力を生成するために、前記プロセッサはさらに、
前記深度マップに基づいて3次元データ構造を生成し、
フィルタリングされた3次元データ構造を生成するために、畳み込み演算子を用いて前記3次元データ構造を畳み込むように構成され、
前記光学シミュレーション出力は、前記フィルタリングされた3次元データ構造を含む、請求項8に記載のモバイルデバイス。
【請求項10】
前記3次元データ構造を生成するために、前記プロセッサは、
前記深度マップの所与の画素について、前記深度マップにおける前記所与の画素の2次元座標に基づいて、および、前記所与の画素に関連付けられた深度値に基づいて、前記所与の画素を前記3次元データ構造のそれぞれの位置にマッピングするように構成される、請求項9に記載のモバイルデバイス。
【請求項11】
前記畳み込み演算子は、ガウス球を規定する、請求項9または10に記載のモバイルデバイス。
【請求項12】
前記プロセッサは、
前記規定されたタイムスタンプに対応する前記時間での前記シミュレートされた波面の前記位置に対応する波面深度を中心とする、前記フィルタリングされた3次元データ構造のボクセルの部分集合を含むスライスを識別するように構成される、請求項9~11のいずれか1項に記載のモバイルデバイス。
【請求項13】
前記光学シミュレーション出力に基づいて前記光学画像の画素の前記部分集合の前記輝度を調節するために、前記プロセッサは、
前記飛翔光画像を生成するために、識別された前記スライスを用いて前記光学画像をアフィン変換するように構成される、請求項12に記載のモバイルデバイス。
【請求項14】
前記プロセッサはさらに、
光の速度に基づいて、および、前記規定されたタイムスタンプに対応する前記時間に基づいて、前記波面深度を決定するように構成され、
前記波面深度は、前記規定されたタイムスタンプに対応する前記時間での前記光学画像における前記シミュレートされた波面の前記位置を示す、請求項12または13に記載のモバイルデバイス。
【請求項15】
光学画像と、前記光学画像に対応する深度マップと、1つ以上のタイミングパラメータとに基づいて、複数の飛翔光画像フレームを生成するステップと、
前記複数の飛翔光画像フレームを、飛翔光映像になるよう組み立てるステップとを含み、
前記飛翔光映像は、前記光学画像に表わされたシーンを横切る光パルスの波面の伝播をシミュレートする、方法。
【請求項16】
前記複数の飛翔光画像フレームのうちの飛翔光画像フレームを生成するステップは、
前記深度マップに基づいて3次元データ構造を生成するステップと、
フィルタリングされた3次元データ構造を生成するために、畳み込み演算子を用いて前記3次元データ構造を畳み込むステップと、
前記飛翔光画像フレームを生成するために、光学シミュレーション出力に基づいて前記光学画像の画素の部分集合の輝度を調節するステップとを含み、
前記光学シミュレーション出力は、前記フィルタリングされた3次元データ構造を含む、請求項15に記載の方法。
【請求項17】
前記3次元データ構造を生成するステップは、
前記深度マップの所与の画素について、前記深度マップにおける前記所与の画素の2次元座標に基づいて、および、前記所与の画素に関連付けられた深度値に基づいて、前記所与の画素を前記3次元データ構造のそれぞれの位置にマッピングするステップを含む、請求項16に記載の方法。
【請求項18】
前記畳み込み演算子は、ガウス球を規定する、請求項16または17に記載の方法。
【請求項19】
前記複数の飛翔光画像フレームのうちの前記飛翔光画像フレームを生成するステップは、
規定されたタイムスタンプに対応する時間での前記光学画像に表わされた前記シーンにおける前記波面の位置に対応する波面深度を中心とする、前記フィルタリングされた3次元データ構造のボクセルの部分集合を含むスライスを識別するステップをさらに含む、請求項16~18のいずれか1項に記載の方法。
【請求項20】
前記光学シミュレーション出力に基づいて前記光学画像の画素の前記部分集合の前記輝度を調節するステップは、
前記飛翔光画像フレームを生成するために、前記光学シミュレーション出力を用いて、識別された前記スライスをアフィン変換するステップを含む、請求項19に記載の方法。
【請求項21】
前記複数の飛翔光画像フレームのうちの前記飛翔光画像フレームを生成するステップは、
光の速度に基づいて、および、前記規定されたタイムスタンプに対応する時間に基づいて、前記波面深度を決定するステップをさらに含み、
前記波面深度は、前記規定されたタイムスタンプに対応する前記時間での前記光学画像に表わされた前記シーンにおける前記波面の前記位置を示す、請求項19または20に記載の方法。
【請求項22】
命令が格納された、コンピュータプログラムであって、前記命令は、プロセッサによって実行されると、前記プロセッサに、請求項1~7および15~21のいずれか1項に記載の方法のステップを行なわせる、コンピュータプログラム。
【発明の詳細な説明】
【背景技術】
【0001】
背景
従来の手頃なカメラシステムは、シーンの静止光学画像しか取り込むことができない。そのような従来のシステムは、光パケットが空間を通って進み、所与のシーンにおけるオブジェクトに当たって跳ね返る際の複雑な経路を取り込むことができず、したがって、そのようなシーンを横切って動くそのような光パケットを表わす画像または映像を取り込むことができない。光パケットがシーンにおけるオブジェクトを横切って動く際に通る経路の画像を取り込むという概念は、「飛翔光」(light-in-flight)画像化と呼ばれることがある。従来のカメラシステムが飛翔光画像化を行なうには、システムは、比較的高価である高感度の時間タグ付けハードウェアを必要とし、さらに、1兆フレーム/秒で動作する超高感度カメラを必要とするであろう。したがって、飛翔光画像化のために必要とされるハードウェアは、これらのコストおよび機器複雑性に起因して、容易に商品化されることができない。
【発明の概要】
【課題を解決するための手段】
【0002】
概要
一例では、方法は、
光学画像に対応する深度マップに基づいて、シミュレートされた波面のための光散乱効果をシミュレートする光学シミュレーション出力を生成するステップと、
光学シミュレーション出力に基づいて、および、規定されたタイムスタンプに対応する時間でのシミュレートされた波面の位置に基づいて、光学画像の画素の部分集合の輝度を調節することによって、飛翔光画像を生成するステップとを含む。
【0003】
さらなる例によれば、方法は、以下の特徴(またはそれらの任意の組合せ)のうちの1つ以上(たとえばすべて)を含み得る。
【0004】
光学シミュレーション出力を生成するステップは、
深度マップに基づいて3次元データ構造を生成するステップと、
フィルタリングされた3次元データ構造を生成するために、畳み込み演算子を用いて3次元データ構造を畳み込むステップとを含み得る。
【0005】
3次元データ構造を生成するステップは、
深度マップの所与の画素について、深度マップにおける所与の画素の2次元座標に基づいて、および、所与の画素に関連付けられた深度値に基づいて、所与の画素を3次元データ構造のそれぞれの位置にマッピングするステップを含み得る。
【0006】
畳み込み演算子は、ガウス球を規定し得る。
方法はさらに、
規定されたタイムスタンプに対応する時間でのシミュレートされた波面の位置に対応する波面深度を中心とする、フィルタリングされた3次元データ構造のボクセルの部分集合を含むスライスを識別するステップを含み得る。
【0007】
光学シミュレーション出力に基づいて光学画像の画素の部分集合の輝度を調節することは、
識別されたスライスを用いて光学画像のアフィン変換を行なうことを含み得る。
【0008】
方法はさらに、
光の速度に基づいて、および、規定されたタイムスタンプに対応する時間に基づいて、波面深度を決定するステップを含み得る。波面深度は、規定されたタイムスタンプに対応する時間での光学画像におけるシミュレートされた波面の位置を示す。
【0009】
別の例では、モバイルデバイスは、
光学画像を取り込むように構成された光学カメラと、
光学画像に対応する深度マップを取り込むように構成された深度カメラと、
少なくとも1つのプロセッサとを含み、少なくとも1つのプロセッサは、
深度マップに基づいて、シミュレートされた波面のための光散乱効果をシミュレートする光学シミュレーション出力を生成し、
飛翔光画像を生成するために、光学シミュレーション出力に基づいて、および、規定されたタイムスタンプに対応する時間でのシミュレートされた波面の位置に基づいて、光学画像の画素の部分集合の輝度を調節するように構成される。
【0010】
さらなる例によれば、モバイルデバイスは、以下の特徴(またはそれらの任意の組合せ)のうちの1つ以上(たとえばすべて)を含み得る。モバイルデバイス、および/または、モバイルデバイス内に含まれる構成要素は、以下の特徴を行なうように適合され得る。
【0011】
光学シミュレーション出力を生成するために、プロセッサはさらに、
深度マップに基づいて3次元データ構造を生成し、
フィルタリングされた3次元データ構造を生成するために、畳み込み演算子を用いて3次元データ構造を畳み込むように構成され得る。光学シミュレーション出力は、フィルタリングされた3次元データ構造を含む。
【0012】
3次元データ構造を生成するために、プロセッサは、
深度マップの所与の画素について、深度マップにおける所与の画素の2次元座標に基づいて、および、所与の画素に関連付けられた深度値に基づいて、所与の画素を3次元データ構造のそれぞれの位置にマッピングするように構成され得る。
【0013】
畳み込み演算子は、ガウス球を規定し得る。
プロセッサは、
規定されたタイムスタンプに対応する時間でのシミュレートされた波面の位置に対応する波面深度を中心とする、フィルタリングされた3次元データ構造のボクセルの部分集合を含むスライスを識別するように構成され得る。
【0014】
光学シミュレーション出力に基づいて光学画像の画素の部分集合の輝度を調節するために、プロセッサは、
飛翔光画像を生成するために、識別されたスライスを用いて光学画像をアフィン変換するように構成され得る。
【0015】
プロセッサはさらに、
光の速度に基づいて、および、規定されたタイムスタンプに対応する時間に基づいて、波面深度を決定するように構成され得る。波面深度は、規定されたタイムスタンプに対応する時間での光学画像におけるシミュレートされた波面の位置を示す。
【0016】
別の例では、方法は、
光学画像と、光学画像に対応する深度マップと、1つ以上のタイミングパラメータとに基づいて、複数の飛翔光画像フレームを生成するステップと、
複数の飛翔光画像フレームを、飛翔光映像になるよう組み立てるステップとを含み、
飛翔光映像は、光学画像に表わされたシーンを横切る光パルスの波面の伝播をシミュレートする。
【0017】
さらなる例によれば、方法は、以下の特徴(またはそれらの任意の組合せ)のうちの1つ以上(たとえばすべて)を含み得る。
【0018】
複数の飛翔光画像フレームのうちの飛翔光画像フレームを生成するステップは、
深度マップに基づいて3次元データ構造を生成するステップと、
フィルタリングされた3次元データ構造を生成するために、畳み込み演算子を用いて3次元データ構造を畳み込むステップと、
飛翔光画像フレームを生成するために、光学シミュレーション出力に基づいて光学画像の画素の部分集合の輝度を調節するステップとを含み得る。光学シミュレーション出力は、フィルタリングされた3次元データ構造を含む。
【0019】
3次元データ構造を生成するステップは、
深度マップの所与の画素について、深度マップにおける所与の画素の2次元座標に基づいて、および、所与の画素に関連付けられた深度値に基づいて、所与の画素を3次元データ構造のそれぞれの位置にマッピングするステップを含み得る。
【0020】
畳み込み演算子は、ガウス球を規定し得る。
複数の飛翔光画像フレームのうちの飛翔光画像フレームを生成するステップは、
規定されたタイムスタンプに対応する時間での光学画像に表わされたシーンにおける波面の位置に対応する波面深度を中心とする、フィルタリングされた3次元データ構造のボクセルの部分集合を含むスライスを識別するステップをさらに含み得る。
【0021】
光学シミュレーション出力に基づいて光学画像の画素の部分集合の輝度を調節するステップは、
飛翔光画像フレームを生成するために、光学シミュレーション出力を用いて、識別されたスライスをアフィン変換するステップを含み得る。
【0022】
複数の飛翔光画像フレームのうちの飛翔光画像フレームを生成するステップは、
光の速度に基づいて、および、規定されたタイムスタンプに対応する時間に基づいて、波面深度を決定するステップをさらに含み得る。波面深度は、規定されたタイムスタンプに対応する時間での光学画像に表わされたシーンにおける波面の位置を示す。
【0023】
別の例では、コンピュータプログラム製品は、そこに格納された命令を有し得る。命令は、プロセッサによって実行されると、プロセッサに、本明細書に記載されるような方法のステップを行なわせ得る。
【0024】
図面の簡単な説明
添付図面を参照することにより、本開示はよりよく理解され、その多くの特徴および利点が当業者には明らかとなり得る。異なる図面における同じ参照符号の使用は、同様または同一の項目を示す。
【図面の簡単な説明】
【0025】
図1】いくつかの実施形態に従った、飛翔光エンジンを実行するモバイルデバイスのブロック図である。
図2】いくつかの実施形態に従った、深度画像に表わされたシーンを横切って波面が進む際の、異なるタイムスタンプに対応する波面画素の位置を表わす深度画像のシーケンスである。
図3】ビームがレーザーから遠ざかって進む際に生じるビーム拡幅効果を示す、短パルスを介してレーザーによって出力されたビームの図である。
図4図2のビームがオブジェクトに入射する際に形成されるガウススポットを表わす図である。
図5】いくつかの実施形態に従った、2次元深度マップの3次元リフトドメインへの変換を示す図である。
図6】いくつかの実施形態に従った、短パルス散乱、ビーム拡張、および光分散の効果を表現する畳み込み演算子を用いた、リフトドメインにおける2次元深度マップの畳み込みを示す図である。
図7】いくつかの実施形態に従った、飛翔光映像を生成する方法のフロー図である。
図8】いくつかの実施形態に従った、飛翔光画像を生成する方法のフロー図である。
【発明を実施するための形態】
【0026】
詳細な説明
本開示の実施形態は、スマートフォンまたは他のデバイスのカメラシステムを使用して飛翔光画像化がシミュレートされ得るシステムおよび方法を提供する。たとえば、飛翔光効果は、赤緑青(red-green-blue:RGB)画像(本明細書では「光学画像」と呼ばれることがある)と深度画像(本明細書では「深度マップ」と呼ばれることがある)とのペアを入力として採用する飛翔光画像を使用してシミュレートされ得る。それらの画像は、スマートフォン、タブレット、スマート眼鏡などのデバイス、または(以下のカメラを含む)別の適用可能なデバイスのRGBカメラ(本明細書では「光学カメラ」と呼ばれることがある)と深度カメラとを使用してそれぞれ取り込まれ得る。
【0027】
いくつかの実施形態では、デバイスは、デバイスからの、または拡張現実(augmented reality:AR)シーンにおけるオブジェクト(たとえば光源)からの光パルスのシミュレートされた放出に対応する波面の飛翔光画像化をシミュレートし得る。たとえば、取り込まれたRGB画像に基づいて飛翔光画像フレームを生成する場合、飛翔光エンジンは、そのRGB画像に対応する深度マップから導き出された深度情報に基づいて、および、シーンに対する波面の動きのタイミングを規定するタイミングパラメータ(たとえば、波面がシーンを横切って進むべき速度、および/または、波面がシーンを横切って進むべき期間)に基づいて、特定の時間にRGB画像に表わされたシーンにおいて波面がどこに位置するかを計算する。いくつかの実施形態では、波面の知覚可能性を向上させるために、および、波面の光パケットがどのようにシーンのオブジェクトに当たって跳ね返るかをよりよくシミュレートするために、飛翔光エンジンは、畳み込み演算子を対応する深度マップの波面画素に適用することなどによって波面の光学シミュレーションを生成し、次に、飛翔光画像フレームを生成するために光学シミュレーションの出力を用いて元のRGB画像をアフィン変換することにより、RGB画像を変換し得る。光学シミュレーションの出力を用いて元のRGB画像をアフィン変換することは、波面画素だけでなく、3次元空間における波面画素の影響領域内の画素の輝度も修正し、このため、波面画素の知覚可能性を向上させる。
【0028】
いくつかの実施形態では、光学シミュレーションは、飛翔光映像効果を生成するために生成され、複数の連続するタイムスタンプにわたって元のRGB画像に適用され得る。たとえば、波面は時間とともに所与のシーンを横切って動くため、飛翔光エンジンは、複数のタイムスタンプのための飛翔光画像フレームのシーケンスを、当該飛翔光画像フレームのシーケンスが元のRGB画像のシーンを横切る波面の動きを表わすように、生成し得る。飛翔光エンジンは次に、飛翔光画像フレームのシーケンスを組み立てて、たとえば飛翔光映像またはアニメ化されたグラフィックス交換フォーマット(graphics interchange format:GIF)ファイルを生成し得る。それは、飛翔光エンジンを実行する実行するデバイスに含まれるかまたは結合されたストレージデバイス(たとえば、ソリッドステートドライブ、ハードディスクドライブ、フラッシュドライブ、メモリなど)上に格納され得る。
【0029】
このように飛翔光画像化をシミュレートすることは、さまざまなアプリケーションを可能にする。たとえば、飛翔光エンジンは、一意的な写真フィルタを取り込まれた画像に適用するために使用されてもよく、写真家がシミュレートされた新規の照明を取り込まれたシーンに導入することを可能にする。別の例として、飛翔光エンジンはARシーンで、そのようなARシーンにおける選択された光源からの光パケットの動きをシミュレートするために適用されてもよく、それは、その審美的な視覚効果にとって望ましい場合があり、または、それは、光路の力学について学生に教えるために使用され得る。
【0030】
図1は、飛翔光画像化をシミュレートするように構成されたモバイルデバイス100を示すブロック図である。図示されるように、モバイルデバイス100は、1つ以上のRGBカメラ102(本明細書では「光学カメラ102」と呼ばれることがある)と、1つ以上の深度カメラ104と、1つ以上のプロセッサ106と、ディスプレイ108と、1つ以上のストレージデバイス110とを含む。構成要素102、104、106、108、および110の各々は、通信チャネル120を介して(物理的に、通信可能に、および/または動作可能に)結合される。いくつかの例では、通信チャネル120は、システムバス、ネットワーク接続、プロセス間通信データ構造、または、データを通信するための任意の他の方法を含み得る。
【0031】
プロセッサ106は、機能性を実現し、および/または、実行のための命令を処理するように構成され得る。たとえば、プロセッサ106は、ストレージデバイス110上に格納された命令を処理することが可能であり得る。プロセッサ106は、マイクロプロセッサ、コントローラ、デジタル信号プロセッサ(digital signal processor:DSP)、特定用途向け集積回路(application specific integrated circuit:ASIC)、フィールドプログラマブルゲートアレイ(field-programmable gate array:FPGA)、または同等の論理回路のうちのいずれかまたは各々を含み得る。
【0032】
ストレージデバイス110は、動作中にモバイルデバイス100内の情報を格納するように構成され得る。たとえば、いくつかの実施形態では、ストレージデバイス110は、1つ以上のコンピュータ読取可能記憶媒体、コンピュータ読取可能ストレージデバイス、一時的メモリデバイス、および/または揮発性メモリ、たとえばランダムアクセスメモリ(random access memory:RAM)、スタティックランダムアクセスメモリ(static random access memory:SRAM)、ダイナミックランダムアクセスメモリ(dynamic random access memory:DRAM)、または他の適用可能な揮発性メモリを含む。いくつかの例では、ストレージデバイスは、プロセッサ106による実行のためのプログラム命令を格納するために使用される。いくつかの例では、ストレージデバイスはさらに、1つ以上の不揮発性記憶素子、たとえば、磁気ハードディスク、光ディスク、フロッピー(登録商標)ディスク、フラッシュメモリ、もしくは、電気的プログラマブルメモリ(electrically programmable memory:EPROM)または電気的消去可能プログラマブルメモリ(electrically erasable and programmable memory:EEPROM)の形を含み得る。いくつかの実施形態では、ストレージデバイス110は、プログラム実行中に情報を一時的に格納するために、モバイルデバイス100上で実行されるソフトウェアまたはアプリケーション(たとえば飛翔光エンジン112)によって使用される。
【0033】
RGBカメラ102は、人およびオブジェクトのシーンの視覚画像(たとえばカラー画像)を取得する標準的な画像センサを含む1つ以上のカメラを含み得る。RGBカメラ102によって取り込まれた光学画像は、ストレージデバイス110に格納され得る。本明細書では、RGBカメラ102などのRGBカメラによって取り込まれた光学画像は、「RGB画像」と呼ばれることがあり得る。
【0034】
深度カメラ104は、モバイルデバイス100とシーンにおけるオブジェクトのいくつかまたはすべてとの間の距離を規定する、シーンの深度マップを取り込み得る。いくつかの実施形態では、RGBカメラ102によって取り込まれた各RGB画像について、深度カメラ104は、対応する深度マップを取り込み得る。いくつかの実施形態では、深度カメラ104(「範囲カメラ」と呼ばれることがある)は、1つ以上の飛翔時間(Time-of-Flight:ToF)深度カメラを含み得る。それらは、パルス光または連続波振幅変調を使用して、赤外光でシーンを照らし、赤外光のToFを測定する。ToFは、深度カメラの赤外光源から赤外光が放出された時間から、赤外光がシーンにおけるオブジェクトから反射された後で深度カメラの赤外光センサに戻ってくる時間までの期間として特徴付けられ得る。それに加えて、またはそれに代えて、さまざまな実施形態によれば、ステレオ三角測量カメラおよび符号化開口カメラなどの他のタイプの深度カメラが深度カメラ104に含まれ得るということが理解されるべきである。
【0035】
モバイルデバイス100は、雑然さを減らすために図1に図示されない追加の構成要素を含み得る。たとえば、モバイルデバイス100は、モバイルデバイス100の構成要素に電力を提供するためのバッテリを含み得る。
【0036】
図1の例では、ストレージデバイス110は、RGBカメラ102によって取り込まれたRGB画像114と、深度カメラ104によって取り込まれた深度マップ116とを格納し得る。ストレージデバイス110は、1つ以上のプロセッサ106を用いて飛翔光エンジン112を実行するための命令を含み得る。飛翔光エンジン112は、RGB画像114および対応する深度マップ116を受信し、RGB画像114および深度マップ116に基づいて飛翔光画像118を生成する。たとえば、RGB画像114の各々について、飛翔光エンジン112は、そのRGB画像のシーンを横切って動く波面を表わす飛翔光画像118のシーケンスを生成する。本明細書では、「波面」または「シミュレートされた波面」という用語は一般に、短い光パルスのシミュレートされた放出に対応する。いくつかの実施形態では、飛翔光エンジン112は、深度カメラ104またはRGBカメラ102に位置する源からのそのような短い光パルスの放出をシミュレートし得る。いくつかの実施形態では、飛翔光エンジン112は、RGB画像に表わされたシーン内の位置またはシーン外部の位置に配置された源からのそのような短い光パルスの放出をシミュレートし得る。いくつかの実施形態では、飛翔光エンジン112は、ある環境におけるある位置にある源からのそのような短い光パルスの放出をシミュレートし得る。その源は、その環境における物理オブジェクトに対応していてもよく、もしくは、拡張現実シーンまたは仮想現実シーンの一部としてその位置に関連付けられた仮想オブジェクトに対応していてもよい。
【0037】
所与の期間にわたってRGB画像114のうちの1つのシーンを横切って動く光パルスの波面の飛翔光画像化をシミュレートする場合、飛翔光エンジン112は、RGB画像114のどの画素が、および、対応する深度マップ116のどの画素が、対応する光パルスの放出に続く所与の時間での波面の深度に対応するかを、深度マップ116において規定された画素深度情報に基づいて判定することができる。たとえば、RGB画像と同様に、深度マップは、それぞれの画素値を各々有する画素のアレイを含む。しかしながら、深度マップの各画素は、カラー値を表現するのではなく、深度マップを取り込んだ深度カメラと、その画素が対応するシーンの部分(すなわち「オブジェクトパッチ」)との間の距離に対応するそれぞれの深度値を表現する。
【0038】
深度マップの各深度値は、光が深度カメラに到達するためにかかる時間に光の速度を乗算した関数である(たとえばd=ctであり、式中、dは距離、cは光の速度、tは時間である)。これは、波面がシーン内の特定の深度に対応する位置へ進むためにかかるであろう時間の量を、飛翔光エンジンが光の速度に基づいて決定できるということを意味する。したがって、RGB画像のシーンを横切って進む波面をシミュレートする場合、飛翔光エンジン112は、シーンの対応する深度マップを使用して、波面のシミュレートされた放出に続く所与の時間でのシーンにおける波面の位置を決定する。すなわち、波面のシーンのシミュレートされた横断中の所与の時間での波面の位置に対応するRGB画像の画素は、RGB画像114に関連付けられた深度マップ116の対応する画素の深度値に基づいて、飛翔光エンジン112によって識別され得る。
【0039】
いくつかの実施形態では、飛翔光エンジン112は、ストレージデバイス110に格納された規定されたタイミングパラメータに基づいて、所与のRGB画像におけるシーンを横切る波面の横断がシミュレートされるべきである期間を決定し得る。いくつかの実施形態では、飛翔光エンジン112は、決定された期間内に生じる個別の時間に対応するタイムスタンプを生成し、各タイムスタンプについて、またはタイムスタンプの部分集合について、それぞれの飛翔光画像を生成し得る。本明細書では、「タイムスタンプ」とは、シーンを横切る波面の伝播がシミュレートされるかまたはシミュレートされるべきである期間中に生じる個別の時間の記録を指す。いくつかの実施形態では、飛翔光エンジン112は、生成された飛翔光画像のシーケンス(たとえば、時間的に連続する飛翔光画像)を組み立てることによって、飛翔光映像を生成し得る。
【0040】
それに代えて、いくつかの実施形態では、飛翔光エンジン112は、タイミングパラメータにおいて、または、モバイルデバイス100のユーザによって提供されたユーザ入力を介して規定され得る、決定された期間内の単一のタイムスタンプに対応する単一の飛翔光画像を生成し得る。たとえば、いくつかの写真アプリケーションにおける規定されたタイムスタンプでのRGB画像から飛翔光画像を1つだけ生成することが望ましい場合がある。いくつかの実施形態では、RGB画像および対応する深度マップを取り込んだモバイルデバイス以外のコンピューティングデバイスが、RGB画像および深度マップを受信した後で飛翔光エンジン112を実行し得るということが理解されるべきである。したがって、本明細書に記載されている飛翔光エンジンの実施形態は、モバイルデバイス、または、具体的には、飛翔光エンジンによって処理中の画像を取り込んだモバイルデバイスによる実行に限定されない。
【0041】
波面放出に続く所与の時間での波面の位置を視覚化するために、飛翔光エンジン112は、所望の効果に依存して、識別された画素(本明細書では「波面画素」と呼ばれることがある)の各々の輝度を、RGB画像の残りの画素(本明細書では「非波面画素」と呼ばれることがある)に対して増加させてもよく、または、RGB画像の非波面画素の各々の輝度を、波面画素の各々の輝度に対して減少させてもよい。
【0042】
図2は、シーンを横切る波面のシミュレートされた横断の3つの異なるタイムスタンプに対応する3つの異なる深度画像のシーケンス200を表わし、各深度画像は、対応する時間でのシミュレートされた波面の位置(たとえば深度)に対応するシーン内の画素を示す。本例では、飛翔光エンジン112は波面を、それがあたかも、画像および対応する深度マップを取り込んだモバイルデバイスから放出された短パルスであるかのように、シミュレートする。シーケンス200は、第1の時間に対応し、第1の組の波面画素204を含む第1の深度画像202と、第2の時間に対応し、第2の組の波面画素208を含む第2の深度画像206と、第3の時間に対応し、第3の組の波面画素212を含む第3の深度画像210とを含む。第1の時間は第2の時間の前に生じ、第2の時間は第3の時間の前に生じ、第1、第2および第3の時間は各々、深度画像202、206および210、ならびに対応するRGB画像に表わされたシーンを波面が横断するようにシミュレートされる期間中に生じる。いくつかの実施形態では、より低い画素値を有する深度画像202、206および210の画素は、モバイルデバイスにより近いオブジェクトに対応し、一方、より高い画素値を有する画素は、モバイルデバイスからより遠くのオブジェクトに対応する。すなわち、所与の深度マップ202、206、210の各画素の値は、深度マップに表わされたシーン内のその画素の深度と、対応するRGB画像における対応する画素のそれとに対応する。したがって、本明細書では、深度マップの画素の画素値は「深度値」と呼ばれ得る。同じ画素値を有する深度マップの画素は、モバイルデバイスからほぼ同じ距離離れている。波面画素204、208、および212は、それらの可視性を向上させるために暗くされたものであり、したがって、波面画素204、208、および212の深度は、図2の図に示されるそれらの色または輝度によって示されないということが理解されるべきである。
【0043】
深度マップのどの画素が所与の時間での波面画素であるかを識別するために、飛翔光エンジン112は、その時間に対応する深度値を識別し、識別された深度値を有する深度マップにおけるすべての画素を波面画素であるとして識別する。本例では、時間とともに波面がモバイルデバイスからさらに離れることが示されるように、波面画素204は波面画素208よりもモバイルデバイスの近くに配置され、波面画素208は波面画素212よりもモバイルデバイスの近くに配置される。
【0044】
図1の例に戻って、いくつかの実施形態では、飛翔光エンジン112は各飛翔光画像における識別された波面画素のみを明るくし得るが、この明るくすることは、元のRGB画像に表わされたシーンに依存して、知覚することが難しいかもしれない。加えて、識別された波面画素のみを明るくすることは、波面がシーン内のさまざまなオブジェクトに当たる際に生じ得る光散乱、波面がシーンを横切って伝播する際に生じるビーム拡幅、および、波面がシーンを横切って伝播する際に生じる光分散を勘案していない。したがって、いくつかの実施形態では、波面の光パケットがどのようにシーンのオブジェクトから反射または散乱されるか(すなわち、光散乱)をシミュレートし、畳み込み演算子を波面画素に適用することによってビーム拡幅および光分散の効果をシミュレートすることにより、シミュレートされた波面の知覚可能性およびシミュレーションの精度が向上され得る。たとえば、飛翔光エンジン112は、波面の光学シミュレーションを生成し、光学シミュレーションの出力を用いて元のRGB画像をアフィン変換することにより、所与のタイムスタンプでのパルス波面をシミュレートする、RGB画像のための飛翔光画像を生成し得る。光学シミュレーションを生成する場合、飛翔光エンジン112は、シーンを横切る波面の伝播の非理想性を近似するシミュレーション出力を生成するために、畳み込み演算子を深度マップの画素の3次元変換に適用し得る。次に、飛翔光画像フレームを生成するために、所与のタイムスタンプについての波面深度を中心とするシミュレーション出力のスライスが、元のRGB画像を用いてアフィン変換され得る。たとえば、畳み込み演算子は、空間における短い光パルス散乱、ビーム拡幅、および光分散の効果を近似し得る。
【0045】
たとえば、図3は、レーザー302によって出力された光304の短パルスが時間とともにどのように伝播するかを示す。図示されるように、光304の断面積306は、時間とともにx軸およびy軸に沿って外向きに拡張し得る。光304がレーザー302から遠ざかって進むにつれて、それは、散乱、ビーム拡幅、および分散などのさまざまな非理想性を経験し得る。x方向、y方向、およびt方向における光304の振幅に対するそのような非理想性の影響は、それぞれのガウス関数として規定され得る。ここで、x軸およびy軸は、放出光304の伝播のベクトルを横断する平面を規定する。t軸は、横断面に直交し、光304の伝播のベクトルと平行であり、光304が進む時間および距離の双方を表現する。
【0046】
たとえば、時間とともに光304の振幅を規定する、ここでベクトルvとして表わされるパルス関数は、ガウス関数によって近似され得る。なぜなら、それは時間が正確に局所化されないためである。加えて、その横断面に沿った所与の点で、光304はガウススポット308を規定し得る。図4は、横断面におけるガウススポット308のビーム振幅を示すチャート400を表わす。図示されるように、光304の振幅は、x方向およびy方向に沿ってそれぞれのガウス関数によって近似され得る。x方向における光304の振幅は、ここでベクトルvとして表わされ、y方向における光304の振幅は、ここでvとして表わされる。したがって、3次元空間にわたる光304の振幅は、式1~4に従って近似され得る:
【0047】
【数1】
【0048】
式中、G(t)、G(x)、およびG(y)はそれぞれ、t軸、x軸、およびy軸でのガウス関数であり、Hはベクトルv、v、およびvの外積であり、Hが3次元マトリックスを表現するようになっている。図1の例に戻って、飛翔光エンジン112は、光学シミュレーション出力を生成するために、畳み込み演算子としての式4からのHを、元のRGB画像に関連付けられた深度マップの画素に適用することによって、シミュレートされたパルス波面の量子の(たとえば、図3の光304について実証されたような)散乱、ビーム拡幅、および分散などの非理想性をシミュレートし得る。
【0049】
所与のRGB画像のための光学シミュレーション出力を生成する場合、飛翔光エンジン112は、RGB画像の対応する深度マップを、立方体データ構造などの3次元データ構造に変換し得る。それは、本明細書では「リフトドメイン」への変換と呼ばれ、そこでは、画素が、深度マップにおける元の画素の位置と元の画素の深度値とによって疎にポピュレートされた(sparsely populated)立方体に対して規定される空間内の位置を有するボクセルに変換される。図5は、2次元ドメインから3次元リフトドメインへの深度マップの変換の一例を示す。図示されるように、2次元深度マップ512は当初、それぞれの深度値Di、jを各々規定する画素のアレイを含み、式中、iおよびjは、アレイにおける所与の画素の座標を規定する。本例では、飛翔光エンジン112は深度マップ512をリフトドメインに変換し、そこでは、以前は2次元であった深度マップ512が3次元の立方体データ構造520として表現される。立方体データ構造520は、3次元画素(すなわちボクセル)524を用いて疎にポピュレートされる。所与のタイムスタンプでの波面の深度に対応するボクセル524の部分集合は、本明細書では「波面ボクセル」と呼ばれ得る。リフトドメインに変換されると、x軸およびy軸に対する所与のボクセルの位置は維持され、一方、t軸すなわち「時間」軸という新たな第3の軸に沿ったボクセルの位置は、対応する深度マップ画素によって規定された深度値に基づいて決定される。たとえば、光の速度によって除算された所与の画素の深度値は、t軸に沿った対応するボクセルの位置を規定する。なぜなら、上で確立されたように、d=ctであるためである。いくつかの実施形態では、第3の軸は、時間ではなく深度を明示的に規定し得る。
【0050】
深度マップをリフトドメインに変換した後で、飛翔光エンジン112は、畳み込み演算子を、結果として生じる立方体データ構造のボクセルに適用する。図6は、立方体データ構造620のボクセル624への畳み込み演算子610の適用を示す。立方体データ構造620は、RGB画像/深度マップのペアに対応する2次元深度マップのリフトドメイン変換に対応し得る。立方体データ構造620では、各ボクセル624の位置は、たとえば、波面ボクセル624に1の値またはゼロでない別の値を割り当て、立方体データ構造620の他のすべてのボクセルにゼロの値を割り当てることによって規定され得る。畳み込み演算子610は、たとえば式4の畳み込み演算子Hに対応するガウス球612を規定し、したがって、x軸、y軸、およびt軸に沿ってそれぞれのガウス関数によって規定され得る。飛翔光エンジン112は、ボクセル624のそれぞれの位置を各々中心とするガウス球634を含むフィルタリングされた立方体データ構造630を生成するために、立方体データ構造620を用いて畳み込み演算子610を畳み込む。たとえば、立方体データ構造630の各ガウス球634のサイズおよび振幅プロファイルは、同じであり得る。いくつかの実施形態では、x軸、y軸、およびt軸に沿ったガウス球634の寸法は、波面をシミュレートする際に異なる視覚効果を達成するために、ユーザによってカスタマイズ可能である。立方体データ構造620のボクセル624を用いて畳み込み演算子610を畳み込むことにより、各ボクセル624の周囲のボクセルの値は、ガウス球634によって規定された分布に従って増加される。たとえば、所与の非波面ボクセルの振幅が増加される量は、Hによって規定されたガウス球の分布に従って、ボクセル624のうちの1つ以上へのその近接性に依存しており、影響されたボクセルは、それらがボクセル624に近いほど、より大きい振幅を有する。本明細書では、フィルタリングされた立方体データ構造630は、シミュレーション出力と考えられる。
【0051】
飛翔光映像を生成する場合、飛翔光エンジン112は、フィルタリングされた立方体データ構造630を複数のスライスへと論理的に分割し得る。スライスは各々、それぞれのタイムスタンプに関連付けられた異なる波面深度を中心とし(たとえば、各波面深度は、関連付けられたタイムスタンプの波面の位置に対応する)、また、各々、t次元におけるHの直径に対応する(すなわちt軸に沿った)幅を有する。いくつかの実施形態では、スライスはt軸に沿って互いに重複し得るということが理解されるべきである。飛翔光エンジン112は次に、飛翔光画像フレームのシーケンスを生成するために、元のRGB画像を用いて、フィルタリングされた立方体データ構造630の各スライスのアフィン変換を行ない得る。飛翔光エンジン112は次に、飛翔光映像を生成するために飛翔光画像フレームを組み立て得る。
【0052】
たとえば、図1に戻って、光学シミュレーション出力を生成すると、飛翔光エンジン112は、飛翔光画像を生成するために、光学シミュレーション出力のスライスを用いて元のRGB画像のアフィン変換を行ない得る。式5は、飛翔光画像のシーケンスを生成するために飛翔光エンジン112によって行なわれ得るアフィン変換の一例を示す:
【0053】
【数2】
【0054】
式中、S(I)は、元のRGB画像Iについて飛翔光エンジン112によって出力された1組の飛翔光画像であり、Dは元のRGB画像に対応する深度マップであり、Yは光学シミュレーション出力であり、Hは畳み込み演算子であり、Xは深度マップに対応する立方体データ構造であり、F(D)は、立方体データ構造Xを生成するために深度マップをリフトドメインに変換するために使用される関数であり、αは、シミュレーション出力に割り当てられた重み(たとえば、元のRGB画像の影響された画素の輝度が増加される量)を決定する定数であり、kは、飛翔光画像のシーケンスの添え字であり、Nは、シーケンスにおける飛翔光画像の数である。たとえば、飛翔光エンジン112によって行なわれた元のRGB画像の各アフィン変換は、波面からの光は直接入射し(すなわち、波面画素)、波面からの散乱光は所与のタイムスタンプについて入射した(すなわち、光学シミュレーション出力を生成するために使用された畳み込み演算子によって近似された)であろう元のRGB画像における画素の輝度を効果的に調節する。式5は飛翔光画像のシーケンスの生成を示すものの、式5は単一の飛翔光画像を生成するためにも使用され得るということが理解されるべきである。
【0055】
飛翔光エンジン112は、元のRGB画像に表わされたシーンを横切る波面の動きをシミュレートする(たとえば式5に関連して提供されたような)飛翔光フレームのシーケンスを生成することによって、飛翔光映像を生成するように構成され得る。そのような飛翔光映像において波面がシーンを横切って動くように表わされる速度(すなわち「波面速度」)は、予め規定されてもよく、飛翔光画像を実行するデバイス(たとえばモバイルデバイス100)のユーザによって規定されてもよく、または、規定された期間(たとえば、飛翔光映像について予め規定されたかまたはユーザによって規定された期間)に基づいて自動的に規定されてもよい。飛翔光エンジン112は、飛翔光映像の飛翔光画像フレームを生成する際に使用されるべきタイムスタンプのシーケンスを、予め規定されたかまたはユーザによって規定された1つ以上のタイミングパラメータに基づいて決定し得る。タイミングパラメータは、波面速度、所望の飛翔光映像の長さ、および/または、予め規定されたサンプリングレートを含み得る。いくつかの実施形態では、飛翔光エンジン112は、生成されるべき飛翔光フレームの数を、RGB画像に表わされたシーンの深度とタイミングパラメータのうちの1つ以上とに基づいて決定し得る。飛翔光映像に関しては、光の速度でシーンを横切る波面の個別の動きは概して人の目には見えず、または、従来のディスプレイ上で再現可能ではないため、飛翔光エンジン112は、見る人が波面の個別の動きを知覚できるようにするために、実際の光波面が動く速度の何分の1かで、または延長された期間にわたって、シーンを横切る波面の動きをシミュレートするように、飛翔光映像を生成し得るということが理解されるべきである。飛翔光映像の再生のために飛翔光エンジン112が波面の速度を修正するかまたは波面がシーンを横断する期間を延長する量は、予め設定され得るかまたはユーザによって規定され得る1つ以上の規定されたタイミングパラメータ(それらはたとえばストレージデバイス110に格納され得る)に基づいて選択され得る。たとえば、タイミングパラメータは、飛翔光映像において波面が動くべき速度を規定する波面速度、飛翔光映像におけるシーンを波面が横断するべき期間であって、かつ、生成されるべき飛翔光映像の長さとして規定され得る期間を規定する波面期間、または、飛翔光映像の所与の期間にわたって生成されるべき飛翔光画像フレームの数を規定するフレームレート、のうちの1つ以上を含み得る。
【0056】
図7は、飛翔光映像を生成する方法700のためのプロセスフローを示す。たとえば、方法700は、RGBカメラと深度カメラとを有するモバイルデバイスによって行なわれ得る。本例では、方法700は、図1のモバイルデバイス100のコンテキストで説明される。
【0057】
ブロック702で、モバイルデバイス100のRGBカメラ102および深度カメラ104は、RGB画像および対応する深度マップを取り込む。RGB画像および深度マップは、その後の処理のためにモバイルデバイス100のストレージデバイス110に格納され得る。
【0058】
ブロック704で、飛翔光エンジン112は、光学シミュレーション出力(たとえば、フィルタリングされた立方体データ構造)を生成するために、深度マップ画素を3次元ドメイン(たとえば立方体データ構造)に変換し、次に、畳み込み演算子Hを立方体データ構造の非ゼロボクセルに適用することによって、RGB画像および深度マップのための光学シミュレーション出力を生成する。
【0059】
ブロック706で、飛翔光エンジン112は、生成されるべき飛翔光画像フレームの数Nを決定する。いくつかの実施形態では、飛翔光エンジン112は、波面速度、波面期間、フレームレート、および/または別の適用可能なタイミングパラメータのうちの1つ以上を含み得る1つ以上のタイミングパラメータに基づいて、生成されるべき飛翔光画像フレームの数を決定する。
【0060】
ブロック708で、飛翔光エンジン112は、生成されるべき各飛翔光画像フレームについてのそれぞれのタイムスタンプを含むタイムスタンプのシーケンスを決定する。ここで、所与の飛翔光画像フレームについてのタイムスタンプは、所与の飛翔光画像フレームにおいて波面がシミュレートされるべきである位置/深度を決定する。いくつかの実施形態では、シーケンスにおける隣り合うタイムスタンプは、等間隔であってもよい。
【0061】
ブロック710で、飛翔光エンジン112は、変数kを1に等しくなるように設定する。ここで、kは、生成されるべき次の飛翔光画像フレームの、フレームのシーケンスに対する添え字を表現する。
【0062】
ブロック712で、飛翔光エンジン112は、タイムスタンプのシーケンスのk番目のタイムスタンプに対応する、シーケンスのk番目の飛翔光画像フレームを生成する。たとえば、飛翔光エンジン112は、図8の方法800のブロック808および810に従って、各画像フレームを生成し得る。
【0063】
ブロック714で、飛翔光エンジン112は、k=N-1であるかどうかを判定することによって、直近に生成された飛翔光画像フレームが飛翔光画像フレームのシーケンスにおける最後の画像フレームであるかどうかを判定する。飛翔光エンジン112がk=N-1であると判定した場合、方法700はブロック718へ進む。そうではなく、飛翔光エンジン112がk<N-1であると判定した場合、方法700はブロック716へ進む。
【0064】
ブロック716で、飛翔光エンジン112は、kの値を1だけインクリメントする。方法700は次に、ブロック712に戻り、そこで、飛翔光エンジン112は、シーケンスにおける次の飛翔光画像フレームを生成する。
【0065】
ブロック718で、飛翔光エンジン112は、飛翔光画像フレームのシーケンスを、RGB画像のシーンを横切って進むシミュレートされた波面を表わす飛翔光映像になるよう組み立てる。
【0066】
ブロック720で、飛翔光エンジン112は、飛翔光映像をストレージデバイス110上に格納させる。
【0067】
図8は、飛翔光画像を生成する方法800のためのプロセスフローを示す。たとえば、方法800のステップのうちのいくつかまたはすべては、図7のブロック704および712で、光学シミュレーション出力および飛翔光画像のための飛翔光画像フレームを生成する際に行なわれ得る。別の例として、方法800は、単一のスタンドアロンの飛翔光画像を生成するために行なわれ得る。たとえば、方法800は、RGBカメラと深度カメラとを有するモバイルデバイスによって行なわれ得る。本例では、方法800は、図1のモバイルデバイス100のコンテキストで説明される。
【0068】
ステップ802で、飛翔光エンジン112は、RGB画像と、RGB画像に対応する深度マップと、タイムスタンプと、予め規定された、またはユーザに規定された1つ以上のタイミングパラメータとを受信する。タイムスタンプは、飛翔光画像が生成されるべきRGB画像に表わされたシーンを横切る波面の横断中の時間を規定し、その時間での波面の位置は、タイムスタンプから導き出され得る。タイミングパラメータは、波面速度、波面期間、フレームレート、および/または別の適用可能なタイミングパラメータのうちの1つ以上を含み得る。
【0069】
ステップ804で、飛翔光エンジン112は、深度マップを3次元ドメインに変換する。いくつかの実施形態では、飛翔光エンジン112は、本例では立方体データ構造(たとえば、図5の立方体データ構造520)と呼ばれる3次元構造を生成するために、深度マップをリフトドメインに変換する。立方体データ構造における所与のボクセルの座標は、元の深度マップの対応する画素の座標と、対応する画素の深度値とに基づいて選択され得る。
【0070】
ステップ806で、飛翔光エンジン112は、フィルタリングされた立方体データ構造を生成するために、畳み込み演算子(たとえば、式4の畳み込み演算子H)を立方体データ構造に適用する。たとえば、フィルタリングされた立方体データ構造は、立方体データ構造の非ゼロボクセルを各々中心とする1つ以上のガウス球を含み得る。
【0071】
ステップ808で、飛翔光エンジン112は、飛翔光画像フレームが生成中である現在のタイムスタンプに対応する光学シミュレーション出力のフィルタリングされた立方体データ構造のスライスを識別する。たとえば、フィルタリングされた立方体データ構造の識別されたスライスは、フィルタリングされた立方体データ構造の部分集合であるマトリックスであり得る。マトリックスは、現在のタイムスタンプに対応する(すなわち、タイムスタンプによって表現される時間での波面の位置に対応する)深度を中心とする深度範囲(すなわち、t軸に沿った値の範囲)内のフィルタリングされた立方体データ構造のすべてのボクセルから構成され得る。ここで、深度範囲のサイズは、t方向における畳み込み演算子Hの直径に対応する。ステップ812で、飛翔光エンジン112は、飛翔光画像フレームを生成するために、光学シミュレーション出力の識別されたスライスを用いて、元のRGB画像のアフィン変換を行なう。たとえば、アフィン変換は、タイムスタンプの時間に波面が入射するようにシミュレートされた表面に対応するRGB画像における画素の輝度を増加させ、タイムスタンプの時間に波面からの散乱光が入射するようにシミュレートされた表面に対応する画素の輝度を増加させ得る。
【0072】
いくつかの実施形態では、上述の手法のある局面は、ソフトウェアを実行する処理システムの1つ以上のプロセッサによって実現され得る。ソフトウェアは、非一時的コンピュータ読取可能記憶媒体上に格納されたかまたは他の態様で有形に具現化された1組以上の実行可能命令を含む。ソフトウェアは、1つ以上のプロセッサによって実行されると上述の手法の1つ以上の局面を行なうように1つ以上のプロセッサを操作する命令およびあるデータを含み得る。非一時的コンピュータ読取可能記憶媒体は、たとえば、磁気または光学ディスクストレージデバイス、ソリッドステートストレージデバイス、たとえばフラッシュメモリ、キャッシュ、ランダムアクセスメモリ(RAM)、または他の非揮発性メモリデバイス(複数可)などを含み得る。非一時的コンピュータ読取可能記憶媒体上に格納された実行可能命令は、1つ以上のプロセッサによって解釈されるかまたは他の態様で実行可能であるソースコード、アセンブリ言語コード、オブジェクトコード、または他の命令フォーマットであってもよい。
【0073】
コンピュータ読取可能記憶媒体は、使用中に命令および/またはデータをコンピュータシステムに提供するためにコンピュータシステムによってアクセス可能である任意の記憶媒体、または記憶媒体の組合せを含み得る。そのような記憶媒体は、光媒体(たとえば、コンパクトディスク(compact disc:CD)、デジタル多用途ディスク(digital versatile disc:DVD)、ブルーレイディスク)、磁気媒体(たとえば、フロッピー(登録商標)ディスク、磁気テープ、または磁気ハードドライブ)、揮発性メモリ(たとえば、ランダムアクセスメモリ(RAM)、またはキャッシュ)、不揮発性メモリ(たとえば、読出専用メモリ(read-only memory:ROM)、またはフラッシュメモリ)、もしくは、微小電気機械システム(microelectromechanical system:MEMS)ベースの記憶媒体を含み得るものの、それらに限定されない。コンピュータ読取可能記憶媒体は、コンピューティングシステムに埋め込まれてもよく(たとえば、システムRAMまたはROM)、コンピューティングシステムに固定して取り付けられてもよく(たとえば磁気ハードドライブ)、コンピューティングシステムに取り外し可能に取り付けられてもよく(たとえば、光ディスクまたはユニバーサルシリアルバス(Universal Serial Bus:USB)ベースのフラッシュメモリ)、もしくは、有線または無線ネットワークを介してコンピュータシステムに結合されてもよい(たとえば、ネットワークアクセス可能ストレージ(network accessible storage:NAS))。
【0074】
なお、一般的な説明において上述された活動または要素のすべてが必要とされるとは限らないこと、特定の活動またはデバイスの一部は必要とされないかもしれないこと、および、説明されたものに加えて、1つ以上のさらなる活動が行なわれ、または要素が含まれ得ることに留意されたい。さらに、活動が列挙される順序は必ずしも、それらが行なわれる順序ではない。また、特定の実施形態を参照して概念が説明されてきた。しかしながら、当業者であれば、請求項に記載されたような本開示の範囲から逸脱することなく、さまざまな修正および変更を行なうことができるということを理解するであろう。したがって、明細書および図面は、限定的ではなく例示的な意味であるとみなされるべきであり、そのような修正はすべて、本開示の範囲内に含まれるよう意図される。
【0075】
特定の実施形態に関して、利益、他の利点、および問題の解決策が上述されてきた。しかしながら、これらの利益、他の利点、問題の解決策、および、任意の利益、他の利点、または解決策が生じるかまたはより顕著になるようにし得る任意の特徴は、請求項のいずれかまたはすべての重大な、必要とされる、または本質的な特徴として解釈されるべきではない。さらに、上に開示された特定の実施形態は単なる例示である。なぜなら、開示された主題は、本明細書での教示の利益を有する当業者には明らかな、異なるものの同等の態様で、修正され実践され得るためである。請求項での記載以外、本明細書に示された構築または設計の詳細への限定は意図されない。したがって、上に開示された特定の実施形態が変更または修正され得ること、および、そのような変更がすべて、開示された主題の範囲内で考慮されることは明らかである。したがって、本明細書で求められる保護は、請求項で述べられる通りである。
図1
図2
図3
図4
図5
図6
図7
図8