(58)【調査した分野】(Int.Cl.,DB名)
前記キャプチャされた画像は、180度の視野を有して構成された少なくとも1つのステレオカメラペアで取得されたコンテンツを含む、請求項1または2に記載の方法。
前記周囲境界は、前記キャプチャされた画像と関連付けられているカメラについてビュー平面より上の約30度に対応する球状の一部である、請求項1から5のいずれか1項に記載の方法。
前記周囲境界は、前記キャプチャされた画像と関連付けられているカメラについてビュー平面より下の約30度に対応する球状の一部である、請求項1から6のいずれか1項に記載の方法。
前記周囲境界の外部の画素を除去することは、前記画素をカラーブロック、静止画像、または前記画素のぼやけた表現で置換することを含む、請求項1から7のいずれか1項に記載の方法。
前記スティッチングすることは、前記キャプチャされた画像を取得するために用いられる円形カメラリグの直径に少なくとも部分的に基づいて選択されたスティッチング比を用いて実行される、請求項1〜8のいずれか1項に記載の方法。
前記命令は、さらに、前記1つ以上のプロセッサに、前記画像のセットを調整して、カメラ同士の分離が約30度より大きい複数のカメラを用いてキャプチャされたコンテンツを補償するように構成されている、請求項10または11に記載のシステム。
前記命令は、さらに、前記1つ以上のプロセッサに、前記画像のセットを調整して、カメラポーズエラーによるカメラの位置合わせ不良を補償するように構成されている、請求項10から12のいずれか1項に記載のシステム。
前記1セットの画像をビデオストリームにスティッチングすることは、左方向のカメラキャプチャ角度と関連付けられている前記1セットの画像内の画像を、右方向を向いているカメラキャプチャ角度と関連付けられている前記1セットの画像内の画像と組合せることを含む、請求項15に記載の方法。
前記第1の視点はヘッドマウントディスプレイの左目のビューに対応し、前記第2の視点は前記ヘッドマウントディスプレイの右目のビューに対応する、請求項15または16に記載の方法。
少なくとも1つのプロセッサによって実行されるコンピュータプログラムであって、前記少なくとも1つのプロセッサに請求項1〜9および15〜17のいずれか1項に記載の方法を実現させる、コンピュータプログラム。
【発明を実施するための形態】
【0013】
詳細な説明
パノラマ画像を作成することは一般に、たとえば1つのカメラまたはカメラリグ内の多数のカメラを用いて周囲の三次元(3D)シーンの画像またはビデオをキャプチャすることを含む。いくつかのカメラを収容するカメラリグを用いる場合、各カメラは、特定の時点で画像をキャプチャするように同期化されて構成され得る。たとえば、各カメラによってキャプチャされる第1のフレームは、第2、第3、および第4のカメラが対応する第1のフレームをキャプチャするのとほぼ同時にキャプチャされ得る。この画像キャプチャは、シーンの一部またはすべてがキャプチャされるまで同時に継続し得る。実現例の多くはカメラに関して説明されるが、実現例は代わりに画像センサに関して、または(画像センサを含み得る)カメラハウジングに関しても説明され得る。
【0014】
複数のカメラを収容するカメラリグは、シーンの特定の角度をキャプチャするように構成され得る。たとえば、カメラリグ上に収容されたカメラは特有の角度で方向付けられ得、その角度からキャプチャされたすべての(または少なくとも一部の)コンテンツが処理されて特定のシーンの全パノラマが生成され得る。いくつかの実現例では、カメラの各々は異なる角度に方向付けられてシーンの異なる角度をキャプチャし得る。シーンの一部のみをキャプチャする場合、またはシーンの一部もしくはすべてが歪みを含んでいる場合は、パノラマのうち、いずれかの欠けている、破損している、または歪んでいるコンテンツを補間または構成するために多数のプロセスが実行され得る。以下の開示では、3Dパノラマコンテンツを3Dバーチャルリアリティ(VR)環境でヘッドマウントディスプレイ(HMD)デバイスにおいて表示する目的でそのようなコンテンツをキャプチャ、処理、補正、およびレンダリングする多数の装置および方法を記載する。
【0015】
図1は、3Dバーチャルリアリティ(VR)環境で立体パノラマをキャプチャしてレンダリングするための例示的なシステム100のブロック図である。例示的なシステム100において、カメラリグ102は画像をキャプチャし、(たとえば永久もしくはリムーバブル記憶装置に)ローカルに記憶し、および/またはネットワーク104上で提供し得るか、あるいは、画像を分析および処理のために画像処理システム106に直接提供し得る。システム100のいくつかの実現例では、モバイルデバイス108は、画像をネットワーク104を介して提供するためのカメラリグ102として機能し得る。画像がキャプチャされると、画像処理システム106は画像に対して多数の計算およびプロセスを実行し、たとえば、処理画像をレンダリングのためにネットワーク104上でヘッドマウントディスプレイ(HMD)デバイス110に提供し得る。いくつかの実現例では、画像処理システム106はカメラリグ102および/またはHMDデバイス110に含まれ得る。いくつかの実現例では、画像処理システム106はさらに、処理画像をレンダリング、記憶、またはさらなる処理のためにモバイルデバイス108に、および/またはコンピューティングデバイス112に提供し得る。
【0016】
HMDデバイス110は、バーチャルリアリティコンテンツを表示可能なバーチャルリアリティヘッドセット、眼鏡、アイピース、または他のウェアラブルデバイスを表わし得る。動作時、HMDデバイス110は、受信したおよび/または処理した画像をユーザに対して再生可能なVRアプリケーション(図示せず)を実行し得る。いくつかの実現例では、VRアプリケーションは、
図1に示すデバイス106,108または112の1つ以上によってホストされ得る。一例では、HMDデバイス110は、カメラリグ102がキャプチャしたシーンのビデオ再生を提供し得る。別の例では、HMDデバイス110は、単一のパノラマシーンにスティッチングされる静止画像の再生を提供し得る。
【0017】
カメラリグ102は、VR環境でコンテンツをレンダリングするために画像データを収集するカメラ(キャプチャデバイスとも称され得る)および/または処理デバイスとして用いられるように構成され得る。カメラリグ102は本明細書では特定の機能を有して記載されるブロック図として示されているが、リグ102は
図2〜
図6に示す実現例のいずれかの形態を取ることができ、さらに、本開示全体にわたってカメラリグについて記載される機能を有し得る。たとえば、システム100の機能の記載を簡潔にするために、
図1は画像をキャプチャするカメラがリグの周りに配置されていないカメラリグ102を示す。カメラリグ102の他の実現例は、リグ102などの円形カメラリグの周囲に配置され得る任意の数のカメラを含み得る。
【0018】
図1に示すように、カメラリグ102は多数のカメラ139および通信システム132を含む。カメラ139は単一のスチルカメラまたは単一のビデオカメラを含み得る。いくつかの実現例では、カメラ130は、リグ102の外周(たとえばリング)に沿って並んで配置された(たとえば着座した)複数のスチルカメラまたは複数のビデオカメラを含み得る。カメラ139はビデオカメラ、画像センサ、立体カメラ、赤外線カメラ、および/またはモバイルデバイスであり得る。通信システム132を用いて画像、命令、および/または他のカメラ関連のコンテンツがアップロードおよびダウンロードされ得る。当該通信は有線でも無線でもよく、私設網または公衆網上でインターフェイス可能である。
【0019】
カメラリグ102は、固定リグまたは回転リグとして機能するように構成され得る。リグ上の各カメラはリグの回転中心からオフセットして配置(たとえば設置)される。カメラリグ102は、たとえば、360度回転して、シーンの360度ビューのすべてまたは一部をスイープしてキャプチャするように構成され得る。いくつかの実現例では、リグ102は固定位置で動作するように構成され得、そのような構成では、付加的なカメラをリグに追加してシーンの付加的な外向き角度のビューをキャプチャしてもよい。
【0020】
いくつかの実現例では、カメラリグ102は、複数のデジタルビデオカメラを含む。複数のデジタルビデオカメラは、それらのレンズの各々が径方向外向き方向を指し示して周囲のシーンまたは環境の異なる部分を見るように、左右にまたは背中合わせに配置される(たとえば、カメラ302Bおよび302Fに関して
図3に示される)。いくつかの実現例では、複数のデジタルビデオカメラは、ビュー方向が円形カメラリグ102に接している接線構成で配置される。たとえば、カメラリグ102は、リグのベースに対して接線方向に配列されつつ、自身のレンズの各々が径方向外向き方向を指し示すように配置される複数のデジタルビデオカメラを含み得る。デジタルビデオカメラは、異なる方向のコンテンツをキャプチャして周囲シーンの異なる角度部分を見るように指し示され得る。
【0021】
いくつかの実現例では、カメラからの画像はカメラリグ102上の隣接カメラにおいて処理され得る。そのような構成では、隣接カメラの各セットの各第1のカメラはカメラリグベースの円形路に対して接線方向に配置(たとえば設置)され、左方向に(たとえばカメラレンズが左方向を指し示して)整列される。隣接カメラの各セットの各第2のカメラはカメラリグベースの円形路に対して接線方向に配置(たとえば設置)され、(たとえばカメラレンズが)右方向を指し示して整列される。
【0022】
カメラリグ102上で用いられるカメラについての例示的な設定として、約60フレーム/秒のプログレッシブスキャンモード(すなわち、ほとんどビデオカメラの標準的な記録モードのように1行おきではなく、各ラスタ線をサンプリングしてビデオの各フレームを生成するモード)が挙げられ得る。また、カメラの各々は同一の(または同様の)設定で構成され得る。各カメラを同一の(または同様の)設定に構成することは、キャプチャ後に所望の態様で互いにスティッチングされ得る画像をキャプチャするという利点をもたらし得る。例示的な設定として、カメラの1つ以上を同じズーム、フォーカス、露光、およびシャッタスピードに設定すること、ならびに安定化機能が相互に関連しているかまたはオフにされた状態でカメラをホワイトバランスするように設定することが挙げられ得る。
【0023】
いくつかの実現例では、カメラリグ102は1つ以上の画像またはビデオをキャプチャするために用いられる前に較正され得る。たとえば、カメラリグ102上の各カメラはパノラマビデオを撮るように較正および/または構成され得る。設定は、たとえば、リグを360度スイープで特定の回転速度で、広視野で、時計回りまたは反時計回り方向に動作させるように構成することを含み得る。いくつかの実現例では、リグ102上のカメラは、たとえば、シーンの周りのキャプチャ経路の360度スイープの1度毎に1フレームをキャプチャするように構成され得る。そのような実現例では、リグ102上のカメラは、たとえば、シーンの周りのキャプチャ経路の360度(以下)スイープの1度毎に複数のフレームをキャプチャするように構成され得る。いくつかの実現例では、リグ102上のカメラは、たとえば、1度毎に特に測定されたフレームをキャプチャする必要なしにシーンの周りのキャプチャ経路のスイープで複数のフレームをキャプチャするように構成され得る。
【0024】
いくつかの実現例では、カメラは、同期して機能して、特定の時点でカメラリグ上のカメラからビデオをキャプチャするように構成(たとえばセットアップ)され得る。いくつかの実現例では、カメラは、同期して機能して、ある期間にわたってカメラの1つ以上からビデオの特定の部分をキャプチャするように構成され得る。カメラリグを較正する別の例は、受信画像をどのように記憶するかを構成することを含み得る。たとえば、受信画像は個々のフレームまたはビデオ(たとえば.aviファイル、.mpgファイル)として記憶され得、そのように記憶された画像はインターネット、別のサーバもしくはデバイスにアップロードされ得るか、またはカメラリグ102上の各カメラを用いてローカルに記憶され得る。いくつかの実現例では、受信画像は符号化ビデオとして記憶され得る。
【0025】
画像処理システム106は、補間モジュール114、キャプチャ補正モジュール116、およびスティッチングモジュール118を含む。補間モジュール116は、たとえば、デジタル画像およびビデオの一部をサンプリングし、カメラリグ102からキャプチャされた隣接画像間で起こると考えられる多数の補間された画像を求めるために用いられ得るアルゴリズムを表わす。いくつかの実現例では、補間モジュール114は、隣接画像間の補間された画像フラグメント、画像部分、および/または垂直もしくは水平画像ストリップを求めるように構成され得る。いくつかの実現例では、補間モジュール114は、隣接画像内の関連画素間のフローフィールド(および/またはフローベクトル)を求めるように構成され得る。フローフィールドを用いて、画像が受けた両変換、および変換を受けた処理画像が補償され得る。たとえば、フローフィールドを用いて、取得された画像の特定の画素格子の変換が補償され得る。いくつかの実現例では、補間モジュール114は、周囲画像の補間によって、キャプチャされた画像の一部ではない1つ以上の画像を生成し得、生成された画像をキャプチャされた画像内にインターリーブして、シーンの付加的なバーチャルリアリティコンテンツを生成し得る。
【0026】
キャプチャ補正モジュール116は、非理想的なキャプチャセットアップを補償することによってキャプチャされた画像を補正するように構成され得る。例示的なキャプチャセットアップとして、非限定的な例では、円形カメラ軌道、平行な主(カメラ)軸、カメラ軌道に垂直なビュー方向、カメラ軌道に対して接線方向であるビュー方向、および/または他のキャプチャ条件が挙げられ得る。いくつかの実現例では、キャプチャ補正モジュール116は、画像キャプチャ時の非円形カメラ軌道、および/または画像キャプチャ時の非平行主軸の一方または両方を補償するように構成され得る。
【0027】
キャプチャ補正モジュール116は、特定の1セットの画像を調整して、カメラ同士の分離が約30度より大きい複数のカメラを用いてキャプチャされたコンテンツを補償するように構成され得る。たとえば、カメラ間の距離が40度の場合、キャプチャ補正モジュール116は、付加的なカメラからコンテンツを収集することによって、または欠けているコンテンツを補間することによって、カメラのカバー範囲不足に基づく特定のシーンにおけるいずれかの欠けているコンテンツを説明し得る。
【0028】
いくつかの実現例では、キャプチャ補正モジュール116はさらに、1セットの画像を調整して、カメラポーズエラーなどによるカメラの位置合わせ不良を補償するように構成され得る。たとえば、カメラポーズエラー(たとえばカメラの向きおよび位置によるエラー)が画像キャプチャ時に起こると、モジュール116はいくつかの画像フレームからの2つ以上の画素列同士を混合して、露光不足(もしくは画像フレーム毎の露光変化)によるおよび/または1つ以上のカメラの位置合わせ不良によるアーティファクトを含むアーティファクトを除去し得る。スティッチングモジュール118は、規定された、取得された、および/または補間された画像に基づいて3D立体画像を生成するように構成され得る。スティッチングモジュール118は、複数の画像部分からの画素および/または画像ストリップを混合する/スティッチングするように構成され得る。スティッチングは、たとえば補間モジュール114によって求められたフローフィールドに基づき得る。たとえば、スティッチングモジュール118は、1セットの画像の一部ではない補間された画像フレームを(補間モジュール114から)受信し、画像フレームを1セットの画像内にインターリーブし得る。インターリーブすることは、モジュール118が、補間モジュール114によって生成されたオプティカルフローに少なくとも部分的に基づいて画像フレームと1セットの画像とを互いにスティッチングすることを含み得る。
【0029】
スティッチングされた組合せを用いて、全方位ステレオパノラマがVRヘッドマウントディスプレイにおいて表示するために生成され得る。画像フレームは、特定のリグ上に配置されたカメラの多数の隣接ペアから収集された、キャプチャ済のビデオストリームに基づき得る。そのようなリグは、約12個から約16個のカメラを含み得る。言い換えると、そのようなリグの他の組合せは、たとえば12個〜16個のペアでないまたは個々のカメラを含み得る。いくつかの実現例では、奇数個のカメラがリグに含まれていてもよい。いくつかの実現例では、リグは2セットまたは3セット以上の隣接カメラを含む。いくつかの実現例では、リグは、リグ上に並んで着座し得る同数セットの隣接カメラを含み得る。いくつかの実現例では、スティッチングモジュール118は、少なくとも1つの隣接ペアと関連付けられているポーズ情報を用いて、インターリーブを実行する前に1セットの画像の一部を予めスティッチングし得る。カメラリグ上の隣接ペアは、たとえば
図3に関連して以下により明確に示されて記載される。
【0030】
いくつかの実現例では、オプティカルフロー技術を用いて画像同士を互いにスティッチングすることは、キャプチャされたビデオコンテンツ同士を互いにスティッチングすることを含み得る。そのようなオプティカルフロー技術を用いて、カメラペアおよび/または単一のカメラを用いて以前にキャプチャされた特定のビデオコンテンツ間の中間ビデオコンテンツが生成され得る。この技術は、画像をキャプチャする円形固定カメラリグ上の一連のカメラをシミュレートする方法として用いられ得る。シミュレートされたカメラは、単一のカメラを円を描くようにスイープして360度の画像をキャプチャする方法と同様のコンテンツをキャプチャし得るが、上記の技術では、実際にリグ上に設置されるカメラはより少なく、リグは固定であってもよい。また、一連のカメラをシミュレートする能力は、ビデオ内のフレーム毎にコンテンツ(たとえば1度毎に1画像のキャプチャ間隔で360個の画像)をキャプチャすることができるという利点をもたらす。
【0031】
生成された中間ビデオコンテンツは、高密度の1セットの画像(たとえば1度毎に1画像で360個の画像)を用いることによってオプティカルフローを用いて実際にキャプチャされたビデオコンテンツにスティッチングされ得るが、実際は、カメラリグがキャプチャした画像は360個より少ない。たとえば、円形カメラリグが8ペアのカメラ(すなわち16個のカメラ)またはペアでない16個のカメラを含む場合、キャプチャされた画像のカウントは16個の画像まで低くなり得る。オプティカルフロー技術を用いて16個の画像間のコンテンツがシミュレートされて360度のビデオコンテンツが提供され得る。
【0032】
いくつかの実現例では、オプティカルフロー技術を用いることによって補間効率が向上し得る。たとえば、360個の画像を補間する代わりに、カメラの各連続ペア(たとえば[1−2],[2−3],[3−4])間でオプティカルフローが計算され得る。キャプチャされた16個の画像およびオプティカルフローを仮定して、補間モジュール14および/またはキャプチャ補正モジュール116は、16個の画像のうちのいずれかにおいて画像全体を補間する必要なしに任意の中間ビューにおける任意の画素を計算し得る。
【0033】
画像処理システム106は、投影モジュール120および画像補正モジュール122をさらに含む。投影モジュール120は、画像を透視平面内に投影することによって3D立体画像を生成するように構成され得る。たとえば、投影モジュール120は特定の1セットの画像の投影を取得し得、画像の一部を平面透視投影から球面(すなわち正距円筒図法)透視投影に変換することによって当該1セットの画像の一部の再投影を構成し得る。当該変換は投影モデリング技術を含む。
【0034】
投影モデリングは、投影中心および投影面を規定することを含み得る。本開示に記載の例では、投影中心は、予め規定されたxyz座標系の原点(0,0,0)における光学中心を表わし得る。投影面は投影中心の前に設置され得、カメラはxyz座標系のz軸に沿って画像をキャプチャするように向いている。一般に、投影は、座標(x,y,z)から投影中心までの特定の画像光線の透視平面の交点を用いて計算され得る。投影の変換は、たとえばマトリックス計算を用いて座標系を操作することによって行なわれ得る。
【0035】
立体パノラマための投影モデリングは、単一の投影中心を有さないマルチ透視画像を用いることを含み得る。マルチ透視は典型的に円形状(球状)(
図13B参照)として示される。コンテンツをレンダリングする際、本明細書に記載のシステムは、1つの座標系から別の座標系に変換する際の近似として球面を用い得る。
【0036】
一般に、球面(すなわち正距円筒図法)投影は、球面の中心が投影の中心を等しく囲んでいる球状の平面を提供する。透視投影は、透視平面(たとえば2D表面)上の3Dオブジェクトの画像を提供してユーザの実際の視覚を近似するビューを提供する。一般に、画像は平坦な画像面(たとえばコンピュータモニタ、モバイルデバイスLCDスクリーン)上にレンダリングされ得るので、投影は歪みのないビューを提供するために平面透視で示される。しかし、平面投影では360度の視野が可能でない場合があるので、キャプチャされた画像(たとえばビデオ)は正距円筒図法(たとえば球面)透視で記憶され得、レンダリング時に平面透視に再投影され得る。
【0037】
特定の再投影が完了した後、投影モジュール120はHMDにおいてレンダリングするために再投影された画像の部分を送信し得る。たとえば、投影モジュール120は、再投影の一部をHMD110における左目ディスプレイに、再投影の一部をHMD110における右目ディスプレイに提供し得る。いくつかの実現例では、投影モジュール120は、上記の再投影を実行することによって垂直視差を計算して減らすように構成され得る。
【0038】
画像補正モジュール122は、透視歪みを含むがこれに限定されない歪みを補償することによって3D立体画像を生成するように構成され得る。いくつかの実現例では、画像補正モジュール122は、オプティカルフローが3Dステレオのために維持される特定の距離を求め得、画像をセグメント化して、そのようなフローが維持されるシーンの一部のみを示し得る。たとえば、画像補正モジュール122は、3Dステレオ画像のオプティカルフローが、たとえば、円形カメラリグ102の外向きエッジから約半径1メートルから、カメラリグ102の外向きエッジから約半径5メートルの間に維持されると判断し得る。したがって、画像補正モジュール122は、HMD110のユーザにとって適切な視差を有する適切な3Dステレオ効果を提供しつつ、歪みのない投影においてHMD110内でレンダリングするために1メートルから5メートルの間の部分が選択されることを保証し得る。
【0039】
いくつかの実現例では、画像補正モジュール122は、特定の画像を調整することによってオプティカルフローを推定し得る。当該調整は、たとえば、画像の一部を訂正すること、画像の当該一部と関連付けられている推定されたカメラポーズを求めること、および当該一部における画像間のフローを求めることを含み得る。非限定的な例では、画像補正モジュール122は、フローが計算されている2つの特定の画像間の回転差を補償し得る。この補正は、回転差(すなわち回転フロー)に起因するフロー成分を除去するように機能し得る。そのような補正によって、並進移動に起因するフロー(たとえば視差フロー)がもたらされ、これは、結果として得られる画像を正確かつロバストにしつつ、フロー推定計算の複雑さを減少させることができる。いくつかの実現例では、画像補正に加えて、レンダリング前に画像に対して処理が行なわれ得る。たとえば、レンダリングが実行される前に、スティッチング、混合、または付加的な補正処理が画像に対して行なわれ得る。
【0040】
いくつかの実現例では、画像補正モジュール122は、平面透視投影に基づいていないカメラジオメトリを用いてキャプチャされた画像コンテンツに起因する投影歪みを補正し得る。たとえば、多数の異なるビュー角度からの画像を補間することによって、かつ当該画像と関連付けられているビュー光線を共通の原点から生じていると条件付けることによって、補正が画像に適用され得る。補間された画像はキャプチャされた画像内にインターリーブされて、人間の目にとって無理のないレベルの回転視差を有して人間の目に正確に見えるバーチャルコンテンツが生成され得る。
【0041】
例示的なシステム100では、デバイス106,108および112はラップトップコンピュータ、デスクトップコンピュータ、モバイルコンピューティングデバイス、またはゲーム機であり得る。いくつかの実現例では、デバイス106,108および112は、HMDデバイス110内に配置され(たとえば設置され/位置し)得るモバイルコンピューティングデバイスであり得る。モバイルコンピューティングデバイスは、たとえば、HMDデバイス110のためのスクリーンとして用いられ得る表示装置を含み得る。デバイス106,108および112は、VRアプリケーションを実行するためのハードウェアおよび/またはソフトウェアを含み得る。さらに、デバイス106,108および112は、これらのデバイスがHMDデバイス110の前に設置されるか、またはHMDデバイス110に対してある範囲の位置内に保持される場合に、HMDデバイス110の3D移動を認識、監視、および追跡可能なハードウェアおよび/またはソフトウェアを含み得る。いくつかの実現例では、デバイス106,108および112は、付加的なコンテンツをネットワーク104上でHMDデバイス110に提供し得る。いくつかの実現例では、デバイス102,106,108,110および112は、ペアリングされるかまたはネットワーク104を介して接続されて、1つ以上と互いに接続/インターフェイスされ得る。当該接続は有線でも無線でもよい。ネットワーク104は公衆通信網でも私設通信網でもよい。
【0042】
システム100は電子記憶装置を含み得る。電子記憶装置はデバイスのうちのいずれか(たとえばカメラリグ102、画像処理システム106、HMDデバイス110および/またはその他)に含まれ得る。電子記憶装置は、情報を電子的に記憶する非一時的な記憶媒体を含み得る。電子記憶装置は、キャプチャされた画像、取得された画像、前処理された画像、後処理された画像等を記憶するように構成され得る。開示されるカメラリグのいずれかを用いてキャプチャされた画像は処理されて、ビデオの1つ以上のストリームとして記憶され得るか、または個々のフレームとして記憶され得る。いくつかの実現例では、記憶はキャプチャ時に起こり、レンダリングはキャプチャの一部の直後に起こり、キャプチャおよび処理が同時でなかった場合よりも早くパノラマステレオコンテンツへの高速アクセスを可能とし得る。
【0043】
図2は、立体パノラマを生成する際に用いるシーンの画像をキャプチャするように構成された例示的なカメラリグ200を図示する図である。カメラリグ200は、リング状の支持ベース(図示せず)に取付けられた第1のカメラ202Aおよび第2のカメラ202Bを含む。示されるように、カメラ202Aおよび202Bは、直接外側を(キャプチャすべき画像/シーンに向かって)向いて、かつリグ200の回転軸(A1)の中心と平行に、環状位置に配置されている。
【0044】
図示される例では、カメラ202Aおよび202Bは、ある距離だけ離れて(B1)マウントプレート208上に配置(たとえば設置)される。いくつかの実現例では、カメラリグ200上の各カメラ間の距離(B1)は平均的な人間の瞳孔間距離(IPD)を表わし得る。カメラをIPD距離だけ離して設置することによって、人間の目が(矢印204によって示すように左右に)回転して矢印204によって示されるキャプチャ経路の周りのシーンをスキャンする際にどのように画像を見るかを近似することができる。例示的な平均的な人間のIPD測定値は、約5センチメートルから約6.5センチメートルであり得る。いくつかの実現例では、標準的なIPD距離だけ離れて配置された各カメラは1セットの隣接カメラの一部であり得る。
【0045】
いくつかの実現例では、カメラリグ200は標準的な人間の頭部の直径を近似するように構成され得る。たとえば、カメラリグ200は、約8センチメートルから約10センチメートルの直径206を有して設計され得る。この直径206は、人間の頭部がどのように回転して回転中心A1に対して人間の目でシーン画像を見るかをリグ200が近似するように選択され得る。他の測定も可能であり、リグ200またはシステム100は、たとえばより大きい直径を用いる場合は、キャプチャ技術および結果として得られる画像を調整し得る。
【0046】
非限定的な例では、カメラリグ200は約8センチメートルから約10センチメートルの直径206を有し得、約6センチメートル離れたIPD距離に設置されたカメラを収容し得る。多数のリグ配列を以下に記載する。本開示に記載の各配列は、上述のまたは他の直径およびカメラ間距離を有して構成され得る。
【0047】
図2に示すように、2つのカメラ202A,202Bは広視野を有して構成され得る。たとえば、カメラは約150度から約180度の視野をキャプチャし得る。カメラ202A,202Bは、より幅広いビューをキャプチャする魚眼レンズを有していてもよい。いくつかの実現例では、カメラ202A,202Bはカメラの隣接ペアとして機能する。
【0048】
動作時、リグ200は回転中心A1の周りを360度回転してパノラマシーンをキャプチャし得る。あるいは、リグは固定のままであってもよく、(
図3に示すように)付加的なカメラをカメラリグ200に追加して360度のシーンの付加的な部分をキャプチャしてもよい。
【0049】
図3は、立体パノラマを生成する際に用いるシーンの画像をキャプチャするように構成された別の例示的なカメラリグ300を図示する図である。カメラリグ300は、リング状の支持ベース(図示せず)に取付けられた多数のカメラ302A〜302Hを含む。第1のカメラ302Aは実線で示されており、付加的なカメラ302B〜302Hはそれらがオプションであることを示すために破線で示されている。カメラリグ200内に示される平行に装着されたカメラ(カメラ202Aおよび202B参照)とは対照的に、カメラ302A〜302Hは円形カメラリグ300の外周に対して接線方向に配置される。
図3に示すように、カメラ302Aは隣接カメラ302Bおよび隣接カメラ302Hを有する。
【0050】
図示される例では、カメラ202Aおよび202Bは、リグ200内のカメラと同様に、特定の距離だけ離れて(B1)配置される。この例では、カメラ302Aおよび302Bは、以下に詳細に記載するように、隣接ペアとして機能して、中心カメラレンズからそれぞれ左右方向に外れた角度をキャプチャし得る。
【0051】
一例では、カメラリグ300は、回転可能なまたは固定されたベース(図示せず)およびマウントプレート306(支持部とも称され得る)を含む円形リグであり、カメラの隣接ペアは、マウントプレート306上に設置され、マウントプレート306のエッジに対して接線方向であるビュー方向を指し示すように構成され、左方向を指し示すように配列された第1のカメラ302Aと、第1のカメラと並んでマウントプレート306上に設置され、第1のカメラ302Aから瞳孔間距離(または異なる距離(たとえばIPD距離未満))をおいて設置された第2のカメラ302Bとを含み、第2のカメラ302Bは、マウントプレート306のエッジに対して接線方向であるビュー方向を指し示すように配列され、右方向を指し示すように配列されている。同様に、隣接ペアはカメラ302Cおよび302Dから構成され得、別のペアはカメラ302Eおよび302Fから構成され得、さらに別のペアはカメラ302Gおよび302Hから構成され得る。いくつかの実現例では、各カメラ(たとえば302A)は、リグ上の各カメラがリグ上の別のカメラとペアリングされ得るように、自身に隣接していないが自身の隣接カメラに隣接しているカメラとペアリングされ得る。いくつかの実現例では、各カメラは(いずれかの側の)自身の直接の隣接カメラとペアリングされ得る。
【0052】
いくつかの実現例では、補間モジュール114によって1つ以上のステレオ画像が生成され得る。たとえば、カメラリグ300上に示されるステレオカメラに加えて、付加的なステレオカメラが合成ステレオ画像カメラとして生成され得る。特に、キャプチャされた画像からの光線を分析(たとえばレイトレーシング)することによって、3Dシーンのシミュレートされたフレームが生成され得る。当該分析は、視点から特定の画像または画像フレームを通ってシーン内に逆方向に光線を追跡することを含み得る。特定の光線がシーン内のオブジェクトに当たると、当該光線が通過する各画像画素は当該オブジェクトと一致する色でペイントされ得る。光線がオブジェクトに当たらなければ、画像画素は背景またはシーン内の他の特徴と一致する色でペイントされ得る。視点およびレイトレーシングを用いて、補間モジュール114はシミュレートされたステレオカメラからであるように見える付加的なシーンコンテンツを生成し得る。付加的なコンテンツは、画像効果、欠けている画像コンテンツ、背景コンテンツ、視野外部のコンテンツを含み得る。
【0053】
図3に示すように、カメラ302A〜302Hは、カメラリグ300の外周に対して接線方向に配置(たとえば設置)されるので、シーンの最大で180度のビューをキャプチャし得る。すなわち、カメラは接線的に設置されるので、完全にオクルージョンされていない180度の視野がリグ上の各カメラ内にキャプチャされ得る。
【0054】
いくつかの実現例では、カメラリグ300は隣接カメラを含む。たとえば、リグ300は隣接カメラ302Aおよび302Bを含み得る。カメラ302Aは、マウントプレート304のエッジに対して接線方向であるビュー方向に方向付けられ、かつ左方向を指し示すように配列された関連のレンズを用いて構成され得る。同様に、カメラ302Bはカメラ302Aと並んでマウントプレート304上に配置され、カメラ302Aからほぼ人間の瞳孔間距離をおいて設置され、マウントプレート304のエッジに対して接線方向であるビュー方向を指し示すように配列され、右方向を指し示すように配列され得る。
【0055】
いくつかの実現例では、実際のカメラ302A〜Hを接線方向に配置するのではなく、カメラ302A〜H上の(またはカメラリグ300上の)特定のセンサがカメラ302A〜H(またはリグ300)の外周に対して接線方向に配置されてもよい。このように、カメラ302A〜Hはユーザ選択に従って設置され得、センサは、リグ300の場所、スイープ速度に基づいて、またはカメラ構成および設定に基づいて、どのカメラまたはカメラ302A〜Hが画像をキャプチャ可能であるかを検出し得る。
【0056】
いくつかの実現例では、隣接カメラは、背中合わせにまたは並んで配列されたカメラ302Aおよびカメラ302Eを含み得る。また、この配列を用いて、それぞれのカメラレンズおよびマウントプレート304によって形成される方位角308の左右のビュー角度が集められ得る。いくつかの実現例では、カメラは、それぞれカメラレンズおよびマウントプレート304によって形成される方位角308の左右に傾斜した角度で配列されている。
【0057】
いくつかの実現例では、カメラリグ300上に設置されるカメラは、画像補間時にその他の隣接カメラとペアリングされ、外向き方向において円形リグの周りに単純に整列され得る。いくつかの実現例では、リグ300は単一のカメラ(たとえばカメラ302A)を含む。カメラ302Aのみがリグ300に装着される場合は、カメラリグ300を時計回りに完全に360度回転させることによってステレオパノラマ画像がキャプチャされ得る。
【0058】
図4は、立体パノラマを生成する際に用いるシーンの画像をキャプチャするように構成されたモバイルデバイス402を図示する図である。この例では、ユーザがモバイルデバイス402を操作しており、自身の環境の周りの経路404,406内で景色を記録することによって、当該デバイスを用いてビデオ画像を撮影することができる。たとえば、ユーザは、モバイルデバイス402を外向きにしてデバイス402の下端が地面と平行であるように保持し、時計回りまたは反時計回りに回ってモバイルデバイス402を経路404,406を回ってスイープして、ユーザの体の周囲のビデオを記録することができる。別の例では、ユーザはモバイルデバイス402を頭上に保持し、デバイス402に経路404,406をスイープさせるように回るか、または経路404,406を作るようにデバイス402を回転させて、同様の画像を得ることができる。さらに別の例では、ユーザはモバイルデバイス402をカメラリグまたは三脚に装着し、カメラを部分的なまたは完全な360度の円形路を回ってスピンさせることができる。
【0059】
ユーザが360度ビューをどのようにキャプチャするかにかかわらず、ユーザがナビゲートする経路は、デバイス402がユーザの体に対して約90度に保持されるはっきりと制約された弧が形成される経路404をたどらない可能性がある。代わりに、ユーザをそのガイドとして有するモバイルデバイス402は、横方向および縦方向の両方において衝突および移動が起こり得る、線406によって示す経路を横切る可能性の方が高い。そのような移動は、結果として得られるビデオまたは画像に変化をもたらし、当該ビデオまたは画像に対して後処理が行なわれる場合は問題を引起こし得る。したがって、本開示に記載の方法は、ビデオまたは画像コンテンツ内の不完全にキャプチャされた透視ビューを補正して3D立体パノラマを提供することができる。
【0060】
図5は、立体パノラマを生成する際に用いるシーンの画像をキャプチャするように構成された別の例示的なカメラリグ500を図示する図である。ここで、リグ500は「クアッドコプタ」、すなわちクアッドロータヘリコプタである。カメラリグ500は、4つのロータによって上昇して推進可能なマルチロータヘリコプタである。カメラリグ500は、本開示全体にわたって記載されるように、多数のカメラを用いて構成され得る(たとえば多数のカメラが装備され得る)。当該カメラは、シーンの周りの経路のパノラマをキャプチャするように、またはリグ500の上部もしくは下部の周りに装着されたいくつかのカメラからシーンの経路の周りの単一の画像をキャプチャするように設定され得る。一般に、シーンの周りの経路とは、ユーザもしくはカメラリグの周りの円、ユーザもしくはカメラリグの周りの円の一部、シーンの画像をキャプチャするモバイルデバイスのスイープ動作によって形成される弧、シーンの360度のスイープ、歩くか回ることによって自身の周りのコンテンツをキャプチャしているユーザによって行われる制約されていない経路、またはモバイルデバイスもしくはカメラリグを用いて画像コンテンツをキャプチャするために用いられ得る他の経路を指し得る。
【0061】
図5に示すように、カメラ502およびカメラ504がクアッドコプタ500の底部に配置される。たとえば、クアッドコプタ500が空中で停止して回転しないことになっている場合は、付加的なカメラを追加してパノラマ内の付加的な画像をキャプチャしてもよい。また、1つのカメラを用いるだけで、3Dスイープの360度ステレオパノラマ画像をキャプチャすることができる。上述のリグ構成のうちの1つ以上に装着されるカメラと同様に、当該カメラは、特定の弧に対して接線方向に、または別の方法で傾いて中心付けられて装着されて、360度の円の一部をキャプチャし得る。
【0062】
いくつかの実現例では、ユーザはリモートコントロールまたはコンピュータリモートからクアッドコプタ500を制御可能である。ユーザは、ビデオ、静止フレーム、スイープフレーム、広いビュー、狭いビュー、斜めのビュー等を含むがこれらに限定されない、どのような種類の画像をキャプチャすべきかについての指示をクアッドコプタに与えることができる。いくつかの実現例では、指示または命令は、特定のシーンが確実にキャプチャされるように、クアッドコプタに装着されたGPSユニットに提供され得る。いくつかの実現例では、ユーザは、シーン内の予め定められた要素(たとえばアクター、木、経路、別のクアッドコプタまたはカメラリグ等)を見つける「追跡」モードを提供し得る。この例では、ユーザは、特定の時間にわたって具体的な経路をたどるようにクアッドコプタ500を設定可能である。いくつかの実現例では、ユーザは、経路を横切りつつ、または特定の目的地に到着すると、特定の速度で回転するようにクアッドコプタ500を設定可能である。
【0063】
図6は、立体パノラマを生成する際に用いるシーンの画像をキャプチャするように構成された別の例示的なカメラリグ600を図示する図である。カメラリグ600はマウントプレート602上に装着され得る。マウントプレート602は回転可能なベース604上に着座し得る。カメラリグ600は、カメラリグのマウントプレート602の周囲領域を埋める多数の並んだカメラ(たとえばカメラ606〜610)を含む。カメラはリグ600の周囲を埋めるように設置されてもよく、あるいは、ビュー角度を最大化してリグ自体のキャプチャ部分を最小化するように戦略的に離間していてもよい。
【0064】
非限定的な例では、円形カメラリグ600は、回転可能なベース604と平行なアーク運動で回転することによって、マウントプレート602上に配置された任意の数のカメラを用いて1セットの画像をキャプチャし得る。いくつかの実現例では、カメラリグ600はマウントプレート602上に配置された隣接カメラを含む。隣接カメラは、約160度から約180度の関連付けられた視野をキャプチャするように同期化され、構成され、位置決めされ得る。他の視野も可能である。いくつかの実現例では、カメラリグ600は回転可能なベース上に装着されず、固定された態様で機能する。
【0065】
リグ動作の一例では、カメラリグ(たとえばリグ200,300,400,500または600)は特定のリグを取囲んでいるシーンのキャプチャ時に第1の方向に回転し、続いて当該シーンのキャプチャ時に異なる方向に回転し得る。たとえば、カメラリグ600は、リグ600上のカメラの1つ以上がカメラリグ600のベース604の中心の両側にオフセットしているビュー方向を有して設置された状態で、時計回りに回転し得る。同様に、カメラリグ600は次いで、任意の数のカメラがシーンの付加的なビューをキャプチャするように左または右を向いた状態で、反時計回り方向に回転し得る。リグ600の1つの例示的な向きでは、他のすべてのカメラは一方向に向けられ得(たとえばカメラレンズが左方向または右方向に角度を付けられ)、中間のカメラは反対(たとえば左向きまたは右向き)方向に向けられる。
【0066】
いくつかの実現例では、ベース604は固定され得る。たとえば、リグ600上の各カメラは、スチルモードで機能する任意のスチルカメラまたはビデオカメラであり得る。したがって、カメラは、周囲のシーンの画像フレームを同時にキャプチャするように同期化および/または構成され得る。アスペクト同士が互いにスティッチングされてステレオパノラマビューが形成され得る。
【0067】
いくつかの実現例では、本開示に記載のカメラリグは、円形ハウジング上に装着される任意の数のカメラを含み得る。いくつかの実現例では、カメラは、円形リグの中心から外向きの4方向の各々に一対のカメラがある状態で等距離に装着され得る。この例では、たとえば立体ペアとして構成されるカメラは周囲に沿って外向きに向けられ得、各立体ペアが360度の視野の別個の四分円をキャプチャするように、0度、90度、180度、および270度に配置され得る。一般に、カメラの選択可能な視野は、立体ペアのカメラビューの重なりの量、ならびにカメラ間および隣接する四分円間の任意の盲点のサイズを決定する。一例のカメラリグは、約120度から最大で約180度の視野をキャプチャするように構成された1つ以上の立体カメラペアを採用し得る。
【0068】
いくつかの実現例では、本開示に記載のカメラリグは約5センチメートルから約8センチメートルの直径(たとえば
図2の直径206)を有して構成され、人間の瞳孔間距離を模倣して、たとえば、ユーザが自身の頭または体を4分の1円、半円、全円、または円の他の部分だけ回した場合に当該ユーザが見ることになるものをキャプチャし得る。いくつかの実現例では、直径は、リグを横切るカメラレンズ間の距離を指し得る。いくつかの実現例では、直径は、リグを横切るカメラセンサ間の距離を指し得る。いくつかの実現例では、直径は単に、リング状プレートを横切るエッジ間のマウントプレート(たとえばマウントプレート208)のサイズを指し得る。
【0069】
いくつかの実現例では、カメラリグは、たとえば付加的なカメラ取付具を収容するように、約8センチメートルから約25センチメートルに拡大される。いくつかの実現例では、より小さい直径のリグ上により少ないカメラが用いられ得る。そのような例では、本開示に記載のシステムはリグ上のカメラ間のビューを確認または推測して、そのようなビューを実際のキャプチャされたビューでインターリーブし得る。
【0070】
いくつかの実現例では、本開示に記載のカメラリグを用いて、たとえば回転レンズを有するカメラ、または回転カメラを用いて1回の露光でパノラマ全体をキャプチャすることによってパノラマ画像がキャプチャされ得る。上述のカメラおよびカメラリグは、本開示に記載の方法とともに用いられ得る。特に、1つのカメラリグに関して記載される方法は、本明細書に記載の他のカメラリグのいずれかを用いて実行され得る。いくつかの実現例では、カメラリグおよびその後のキャプチャされたコンテンツは、バーチャルコンテンツ、レンダリングされたコンピュータグラフィックス(CG)コンテンツといった他のコンテンツ、および/または他の得られたもしくは生成された画像と組合され得る。
【0071】
図7は、例示的なVRデバイス(VRヘッドセット)702を示す図である。ユーザは、ゴーグル、サングラス等を被るのと同様にヘッドセット702を自身の目に被せることによってVRヘッドセット702を身に付けることができる。いくつかの実現例では、
図1を参照して、VRヘッドセット702は、1つ以上の高速有線および/または無線通信プロトコル(たとえば、Wi−Fi、ブルートゥース(登録商標)、ブルートゥースLE、USB等)を用いて、またはHDMI(登録商標)インターフェイスを用いることによって、コンピューティングデバイス106,108または112の多数のモニタにインターフェイス/接続し得る。当該接続によって、VRヘッドセット702に含まれているスクリーン(図示せず)上でユーザに表示するためのバーチャルコンテンツがVRヘッドセット702に提供され得る。いくつかの実現例では、VRヘッドセット702はキャスト対応デバイスであり得る。これらの実現例では、ユーザはコンテンツをVRヘッドセット702に提供するか「キャストする」(投影する)かを選択し得る。
【0072】
さらに、VRヘッドセット702は、1つ以上の高速有線および/または無線通信インターフェイスおよびプロトコル(たとえば、Wi−Fi、ブルートゥース、ブルートゥースLE、ユニバーサルシリアルバス(USB)等)を用いてコンピューティングデバイス104にインターフェイス/接続し得る。コンピューティングデバイス(
図1)はVRヘッドセット702へのインターフェイスを認識し得、これに応答して、バーチャルコンテンツを含むコンピュータで生成された3D環境(VR空間)においてユーザおよびコンピューティングデバイスをレンダリングするVRアプリケーションを実行し得る。
【0073】
いくつかの実現例では、VRヘッドセット702はVRアプリケーションを実行可能なリムーバブルコンピューティングデバイスを含み得る。リムーバブルコンピューティングデバイスはコンピューティングデバイス108または112と同様であり得る。リムーバブルコンピューティングデバイスはVRヘッドセット(たとえばVRヘッドセット702)のケーシングまたはフレーム内に組込まれ得、当該VRヘッドセットは次いでVRヘッドセット702のユーザによって身に付けられ得る。これらの実現例では、リムーバブルコンピューティングデバイスは、ユーザがコンピュータで生成された3D環境(VR空間)と対話する際に見るディスプレイまたはスクリーンを提供し得る。上述のように、モバイルコンピューティングデバイス104は有線または無線インターフェイスプロトコルを用いてVRヘッドセット702に接続し得る。モバイルコンピューティングデバイス104はVR空間におけるコントローラであり得、VR空間におけるオブジェクトとして現れ得、VR空間に入力を提供し得、VR空間からフィードバック/出力を受信し得る。
【0074】
いくつかの実現例では、モバイルコンピューティングデバイス108はVRアプリケーションを実行し得、VR空間を形成するためのデータをVRヘッドセット702に提供し得る。いくつかの実現例では、VRヘッドセット702に含まれているスクリーン上でユーザに対して表示されるVR空間のためのコンテンツは、モバイルコンピューティングデバイス108に含まれている表示装置上でも表示され得る。これによって、ユーザがVR空間において対話している可能性があるものを他の誰かも見ることができる。
【0075】
VRヘッドセット702は、モバイルコンピューティングデバイス108の位置および向きを示す情報およびデータを提供し得る。VRアプリケーションは、当該位置および向きのデータをVR空間内のユーザ対話を示すものとして受信して使用し得る。
【0076】
図8は、カメラ(および隣接カメラ)の数をカメラ視野の関数として示す例示的なグラフ800である。グラフ800は、立体パノラマを生成するための予め規定された視野についてカメラリグ上に配置され得るカメラの数を求めるために用いられ得る例示的なグラフを表わす。グラフ800を用いて、特定のステレオパノラマ結果を保証するためのカメラ設定およびカメラ設置が計算され得る。1つの例示的な設定は、特定のカメラリグに取付けるべきカメラの数の選択を含み得る。別の設定は、キャプチャ時、前処理または後処理ステップ時に用いられるアルゴリズムを求めることを含み得る。たとえば、オプティカルフロー補間技術については、完全な360度パノラマをスティッチングすることは、すべての光線方向が少なくとも2つのカメラによって見られるべきであることを要求し得る。これによって、完全な360度をカバーするために用いられるカメラの最小数がカメラ視界の関数テータ[θ]として制約され得る。オプティカルフロー補間技術は、隣接カメラ(もしくはペア)によってまたは個々のカメラによって実行されて構成され得る。
【0077】
図8に示すように、関数802を示すグラフが図示されている。関数802は、カメラの数[n]804をカメラ視野の関数[θ]806として表わしている。この例では、約95度のカメラ視野が線808によって示されている。線808と関数802との交点810は、各々が95度の視野を有する16個のカメラを用いると所望のパノラマ結果が提供されることを示している。そのような例では、カメラリグは、カメラの隣接セット毎に隣接カメラをインターリーブして、隣接カメラをリグ上に設置する際に発生し得る任意の空間を用いることによって構成され得る。
【0078】
隣接カメラをインターリーブすることに加えて、オプティカルフロー要件は、システム100が同じ種類のカメラ間のオプティカルフローを計算することを要求し得る。すなわち、オプティカルフローは、両方を同時に計算するのではなく、第1のカメラについて、次いで第2のカメラについて計算され得る。一般に、画素におけるフローは、向き(たとえば方向および角度)ならびに大きさ(たとえば速度)として計算され得る。
【0079】
図9は、補間された視野[θ
1]902をカメラの視野の関数[θ]904として示す例示的なグラフ900である。グラフ900を用いて、カメラの視野のどの部分がその左右の隣接カメラと共有されているかが求められ得る。ここで、(線906によって示される)約95度のカメラ視野において、補間された視野は、交点908によって示すように、約48度として示されている。
【0080】
2つの連続したカメラは全く同じ視野の画像を典型的にキャプチャしないと仮定して、補間されたカメラの視野は、隣接カメラ同士の視野の交点によって表わされる。補間された視野[θ
1]は次いで、カメラ視野[θ]の関数および隣接カメラ間の角度となり得る。(
図8に示す方法を用いて)所与のカメラ視野について最小数のカメラが選択された場合は、
図9に示すように[θ
1]が[θ]の関数として計算され得る。
【0081】
図10は、カメラリグについての構成の選択を示す例示的なグラフ1000である。特に、グラフ1000は、どれほど大きい特定のカメラリグが設計され得るかを求めるために用いられ得る。グラフ1000は、リグ直径[センチメートルで表わすD]1004の関数としてスティッチング比[d/D]1002のプロットを図示している。快適なバーチャルリアリティパノラマ視聴体験を作り出すために、全方位ステレオスティッチング直径[d]は、本開示の例では、典型的な人間のIPDである約5センチメートルから約6.5センチメートルであるように選択される。いくつかの実現例では、スティッチング直径[d]とほぼ同じキャプチャ直径[D]を用いて全方位ステレオスティッチングが実行され得る。すなわち、約「1」のスティッチング比を維持することによって、たとえば全方位ステレオ画像の後処理におけるスティッチングが容易になり得る。スティッチングに用いられる光線は実際のカメラキャプチャされた光線と同じであるので、この特定の構成によって歪みが最小化され得る。カメラの選択数が大きい(たとえばリグ毎に12〜18個のカメラ)場合、「1」のスティッチング比を得ることは困難であり得る。
【0082】
リグ上のカメラが多すぎるという問題を緩和するために、リグサイズは、付加的なカメラを収容してスティッチング比を同じ(または実質的に同じ)ままに維持できるようにより大きいサイズで設計され得る。スティッチングアルゴリズムが、キャプチャ時にレンズの中心近くで撮影された画像内のコンテンツを確実にサンプリングするように、スティッチング比はリグに対するカメラの角度[α]を求めるように固定され得る。たとえば、
図10は、レンズの中心近くでサンプリングすると画像品質が向上し、幾何学的な歪みが最小化されることを示す。特に、角度[α]が小さいほどリグオクルージョン(たとえば、カメラがリグ自体の部品を撮像すること)を回避するのに役立ち得る。
【0083】
図10の1006に示すように、0.75のスティッチング比[d/D]は約6.5センチメートル(すなわち典型的な人間のIPD)のリグ直径に対応する。スティッチング比[d/D]を約0.45まで減少させるとリグ直径を(1008に示す)約15センチメートルに増加させることができ、これによって付加的なカメラをリグに追加することができる。カメラリグに対するカメラの角度は、選択されたスティッチング比に基づいて調整され得る。たとえば、カメラ角度を約30度に調整することは、リグ直径が約12.5センチメートルまで大きくなり得ることを示す。同様に、カメラ角度を約25度に調整することは、リグ直径が15センチメートルまで大きくなり、たとえば、ユーザに対してレンダリングし返される際に適切な視差および視覚効果を依然として維持することができることを示す。
【0084】
一般に、リグ直径[D]を仮定して、最適なカメラ角度[α]が計算され得る。[α]から、最大視野[Θ
u]が計算され得る。最大視野[Θ
u]は一般に、リグがカメラを部分的にオクルージョンしない視野に対応する。最大視野は、カメラリグがオクルージョンされていないビューを依然として提供しつつどれほど少数のカメラを保持可能であるかを制限し得る。
【0085】
図11は、予め規定されたリグ直径に従ってカメラの最小数を求めるために用いられ得る例示的な関係を示すグラフ1100である。ここで、所与のリグ直径[D]1104についてのカメラの最小数[n
min]1102が示されている。リグ直径[D]1104はオクルージョンされていない最大視野を制限し、これはカメラの最小数を制限するように機能する。グラフの1106に示すように、約10センチメートルのリグ直径について、最小で16個のカメラがカメラリグ内で用いられてオクルージョンされていないビューが提供され得る。リグ直径を修正することによって、リグ上に設置されるカメラの数を増減させることができる。一例では、リグは、約8センチメートルから約25センチメートルのリグサイズ上に約12個から約16個のカメラを収容し得る。
【0086】
視野および画像キャプチャ設定を微調整する他の方法も利用可能であるので、これらの計算をこれら他の方法と組合せてカメラリグ寸法をさらに改良することができる。たとえば、オプティカルフローアルゴリズムを用いて、全方位ステレオパノラマをスティッチングするために典型的に用いられるカメラの数を変更する(たとえば減らす)ことができる。いくつかの実現例では、本開示に図示される、または本開示に記載のシステムおよび方法から生成されるグラフを組合せて用いて、たとえばHMDデバイスにおいてレンダリングするためのバーチャルコンテンツを生成することができる。
【0087】
図12A〜
図12Bは、画像キャプチャ時に起こり得る歪みの線画の例を表わす。特に、ここに示す歪みは、ステレオパノラマをキャプチャする際に起こる影響に対応する。一般に、歪みは、シーンをキャプチャしているカメラに近接して当該シーンがキャプチャされるとより深刻になり得る。
図12Aは、2メートル×2メートルの、カメラ中心から外向きに1メートルおいて配置されたシーン内の平面を表わす。
図12Bは
図12Aと同じ平面であるが、この図の平面はカメラから外向きに25センチメートルおいて配置されている。両図とも6.5センチメートルのキャプチャ直径を用いている。
図12Aは1202において中心近くの若干の伸長を示しており、
図12Bはより膨張した中心1204を示している。この歪みを補正するために多数の技術が採用され得る。以下の段落では、画像コンテンツをキャプチャした近似方法およびシステム(たとえばカメラリグ/キャプチャデバイス)を用いて投影(たとえば球面および平面投影)を分析して歪みを補正することを説明する。
【0088】
図13A〜
図13Bは、パノラマ画像の収集時にキャプチャされた光線の例を図示する。
図13Aは、キャプチャされた1セットの画像を仮定して、透視画像がキャプチャ経路1302上のどこでも左右両目について生成され得ることを示す。ここで、左目についての光線は光線1304aによって示されており、右目についての光線は1306aにおいて示されている。いくつかの実現例では、図示される光線の各々は、カメラセットアップ、動作不良、または単にシーンの不十分なリグセットアップのためにキャプチャされない場合がある。このため、光線1304aおよび1306aの一部が近似され得る。たとえば、シーンが無限に遠く離れている場合は、シーンの1つの測定可能な特徴は、原点から目的地までの光線方向を含む。
【0089】
いくつかの実現例では、光線の原点は収集可能でない場合がある。したがって、本開示のシステムは左目および/または右目を近似して光線の原点位置を求め得る。
図13Bは、右目について近似された光線方向1306bから1306fを示す。この例では、光線が同じ点から生じているのではなく、各光線は円1302上の異なる点から生じている。光線1306bから1306fは円1302をキャプチャするように接線方向に角度を付けて示されており、キャプチャ円1302の周囲の特定の領域に配置されている。また、2つの異なる画像センサ、すなわちカメラリグと関連付けられている画像センサ13−1および画像センサ13−2(カメラと関連付けられているかカメラに含まれている)の位置がカメラリグ円1303上に示されている。
図13Bに示すように、カメラリグ円1303はキャプチャ円1302より大きい。
【0090】
多数の光線(ならびに各光線と関連付けられている画像の色および強度)は、円から外向きの異なる方向を用いてこのように近似され得る。このように、多くの画像を含む360度パノラマビュー全体が左右両目のビューに提供され得る。この技術は範囲中央のオブジェクトの歪みを解決し得るが、場合によっては、近くのオブジェクトを撮像する際に依然として変形を有し得る。簡潔にするために、近似された左目光線方向は図示していない。この例示的な実現例では、いくつかの光線1306bから1306fのみを示している。しかし、何千ものそのような光線(およびそれらの光線と関連付けられている画像)が規定され得る。したがって、光線の各々と関連付けられている多くの新たな画像が規定(たとえば補間)され得る。
【0091】
図13Bに示すように、光線1306bは画像センサ13−1と画像センサ13−2との間に投影される。画像センサ13−1は画像センサ13−2に隣接している。光線は、画像センサ13−1(たとえば画像センサ13−1の投影中心)からの距離G1、および画像センサ13−2(たとえば画像センサ13−2の投影中心)からの距離G2であり得る。距離G1およびG2は、光線1306bがカメラリグ円1303と交差する場所に基づき得る。距離G1は距離G2とは異なっていても(たとえば距離G2より大きくても小さくても)よい。
【0092】
光線1306bと関連付けられている画像(たとえば補間された画像、新たな画像)を規定するために、画像センサ13−1がキャプチャした第1の画像(図示せず)は、画像センサ13−2がキャプチャした第2の画像(図示せず)と組合される(たとえば互いにスティッチングされる)。いくつかの実現例では、オプティカルフロー技術を用いて第1の画像と第2の画像とが組合され得る。たとえば、第2の画像からの画素に対応する第1の画像からの画素が識別され得る。
【0093】
たとえば光線1306bと関連付けられている画像を規定するために、対応する画素が距離G1およびG2に基づいてシフトされる。画像センサ13−1,13−2の解像度、アスペクト比、高度等は、光線1306bについての画像(たとえば新たな画像)を規定する目的で同じであると仮定され得る。いくつかの実現例では、解像度、アスペクト比、高度等は異なっていてもよい。しかし、そのような実現例では、それらの差異に対応するために補間を修正しなければならなくなる。
【0094】
具体例として、第1の画像内のオブジェクトと関連付けられている第1の画素が、第2の画像内のオブジェクトと関連付けられている第2の画素に対応するとして識別され得る。第1の画像は(カメラリグ円1303の周りの第1の場所にある)画像センサ13−1の透視からキャプチャされ、第2の画像は(カメラリグ円1303の周りの第2の場所にある)画像センサ13−2の透視からキャプチャされるので、オブジェクトは、第2の画像内の位置(たとえばX−Y座標位置)と比較して第1の画像内で位置(X−Y座標位置)がシフトされる。同様に、オブジェクトと関連付けられている第1の画素は、これもオブジェクトと関連付けられている第2の画素に対して位置(たとえばX−Y座標位置)がシフトされる。光線1306bと関連付けられている新たな画像を生成するために、第1の画素および第2の画素(ならびにオブジェクト)に対応する新たな画素が距離G1とG2との比に基づいて規定され得る。具体的には、新たな画素は、距離G1に基づく(かつ第1の画素の位置と第2の画素の位置との間の距離に基づく分だけスケール変更される)第1の画素、および距離G2に基づく(かつ第1の画素の位置と第2の画素の位置との間の距離に基づく分だけスケール変更される)第2の画素から位置がシフトされた場所に規定され得る。
【0095】
上述の実現例によると、第1の画像および第2の画像と一致している光線1306bと関連付けられている新たな画像についての視差が規定され得る。具体的には、カメラリグに比較的近いオブジェクトは、カメラリグから比較的遠いオブジェクトより大量にシフトされ得る。この視差は、光線1306bの距離G1およびG2に基づいて(たとえば第1の画素および第2の画素から)画素をシフトする間も維持され得る。
【0096】
このプロセスは、キャプチャ円1302の周りのすべての光線(たとえば光線1306bから1306f)について繰返され得る。キャプチャ円1302の周りの光線の各々と関連付けられている新たな画像は、カメラリグ円1303の周りの光線および画像センサ(たとえば隣接画像センサ、画像センサ13−1,13−2)の各々間の距離に基づいて規定され得る。
【0097】
図13Bに示すように、カメラリグ円1303の直径はキャプチャ円1302の直径より大きい。いくつかの実現例では、カメラリグ円1303の直径は、キャプチャ円1302の直径より1.5倍から8倍大きくてもよい。具体例として、キャプチャ円の直径は6センチメートルであってもよく、カメラリグ円1303(たとえば
図4Aに示すカメラ装着リング412)の直径は30センチメートルであってもよい。
【0098】
図14A〜
図14Bは、
図13A〜
図13Bにおいて記載したような、平面透視投影の近似の使用例を示す。
図14Aは、平面透視光線および投影を近似する前の歪み線を有するパノラマシーンを示す。示されるように、カーテンロッド1402a、窓枠1404a、およびドア1406aは曲線特徴を有するオブジェクトとして図示されているが、実際にはそれらは直線特徴のオブジェクトである。直線特徴のオブジェクトとして、曲面を有さないオブジェクト(たとえば平坦なインデックスカード、四角い箱、矩形の窓枠等)が挙げられる。この例では、オブジェクト1402a,1404aおよび1406aは画像内で歪んでいるために曲線として示されている。
図14Bは、平面透視投影が90度の水平視野で近似された補正画像を示す。ここで、カーテンロッド1402a、窓枠1404a、およびドア1406aは、それぞれ補正された直線オブジェクト1402a,1404bおよび1404cとして示されている。
【0099】
図15A〜
図15Cは、画像の平面に適用される近似された平面透視投影の例を示す。
図15Aは、本開示に記載の技術を用いてパノラマから撮られた平面透視投影を示す。図示される平面ビュー1500は、たとえば
図14Bの画像内に示される平面のオーバーレイを表わし得る。特に、
図15Aは、曲線が直線に投影される補正された
図14Aを表わす。ここで、パノラマの平面1500は1メートルの距離をおいて(90度の水平視野で)示されている。線1502,1504,1506および1508は直線であるが、(
図14Aに対応する)以前は、同じ中心線は湾曲して歪んでいた。
【0100】
選択された投影スキームに基づいて他の歪みも発生し得る。たとえば、
図15Bおよび
図15Cは、本開示の技術を用いてパノラマから撮られた平面透視投影を用いて生成された平面(1510および1520)を表わす。パノラマは25センチメートルの距離をおいて(90度の水平視野)キャプチャされた。
図15Bは左目キャプチャ1510を示し、
図15Cは右目キャプチャ1520を示す。ここで、平面の底部(1512,1522)は直線に投影されておらず、垂直視差が導入されている。この特定の変形は、平面透視投影が用いられると発生し得る。
【0101】
図16A〜
図16Bは、垂直視差を導入する例を示す。
図16Aは、典型的な全方位ステレオパノラマ技術に従ってキャプチャされている直線1602aを図示する。図示される例では、各光線1604a〜1618aは円1622上の異なる点から生じている。
【0102】
図16Bは、透視近似技術を用いて見たときの同じ直線を図示する。示されるように、直線1602aは線1602bとして変形して示されている。光線1604b〜1618bは円1622上の単一点から生じている。この変形は、線1602bの左半分を視聴者に近づけ、当該線の右半分を視聴者から遠ざける効果を有し得る。左目については、反対のことが起こり得、すなわち、線の左半分が遠くに見え、線の右半分が近くに見える。この変形線は、パノラマレンダリング円1622の直径1624に等しい距離だけ離れている2本の漸近線間で湾曲している。この変形はパノラマキャプチャ半径と同じサイズであるとして示されているので、当該変形は近くのオブジェクト上でしか目立たない場合がある。この変形の形態は、画像を見ているユーザにとっての垂直視差につながり得、これによって、歪み画像に対してスティッチング処理が行なわれる際にフュージングが困難になり得る。
【0103】
図17A〜
図17Bは、3Dパノラマにおける点を示すために用いられ得る座標系の例示的な点を図示する。
図17A〜
図17Bは、本開示に記載のパノラマ技術によって撮像された点(0,Y,Z)1702を図示する。左右パノラマ内へのこの点の投影は、式(1)および(2)において以下に示すようにそれぞれ(−θ,φ)および(θ,φ)によって表わされ得る:
【0105】
式中、r1704はパノラマキャプチャの半径である。
図17Aは、点(0,Y,Z)1702のパノラマ撮像のトップダウン図を図示する。
図17Bは、点(0,Y,Z)1702のパノラマ撮像の側面図を図示する。示される点は、左パノラマにおいて(−θ,φ)に投影され、右パノラマにおいて(θ,φ)に投影される。これら特定の図はキャプチャされたままの状態であり、まだ別の平面に投影されていない。
【0106】
図18は、
図17A〜
図17Bに図示した点の投影図を表わす。ここで、点1702の透視ビューは、
図18の1802によって示すように、y軸の周りの回転角度[α]を有して水平方向を見るように向けられている。この透視投影は光線方向のみを考慮しているため、パノラマ投影1802内の点1702を見る光線を透視カメラの基準フレームに変換することによって、点1702が沿って投影される光線を見つけることができる。たとえば、点1702は以下の表1に示す以下の光線に沿って投影される:
【0108】
透視分割を行なって、以下の表2の式によって示すように、点投影が求められ得る:
【0110】
θ=π/2(無限に遠く離れている元の3D点1702に対応する)である場合は、点1702は両透視画像における同一のy座標に全体的に投影されるため、垂直視差はないことが理解され得る。しかし、θがπ/2から離れるにつれて(点がカメラに近づくにつれて)、投影されたy座標は(点1702に向かって見ている透視ビューに対応するα=0である場合を除いて)左右の目で異なるようになる。
【0111】
いくつかの実現例では、画像およびシーンを特定の態様でキャプチャすることによって歪みを回避することができる。たとえば、カメラの近接場(すなわちカメラまで1メートル未満)内でシーンをキャプチャすると、歪み要素が現れ得る。したがって、外向きに1メートルからシーンまたは画像をキャプチャすることは歪みを最小化させる方法である。
【0112】
いくつかの実現例では、歪みは深度情報を用いて補正され得る。たとえば、あるシーンについての正確な深度情報を仮定して、歪みを補正することが可能であり得る。すなわち、歪みは現在のビュー方向に依存し得るため、レンダリング前に単一の歪みをパノラマ画像に適用できない場合がある。代わりに、深度情報をパノラマとともに伝えてレンダリング時に用いることができる。
【0113】
図19は、本開示に記載のパノラマ撮像技術を用いて全方向ステレオ画像内にキャプチャされた光線を示す。この例では、円1900の周りで時計回り方向を指し示している光線1902,1904,1906は左目についての光線に対応する。同様に、円1900の周りで反時計回り方向を指し示している光線1908,1910,1912は右目についての光線に対応する。反時計回りの各光線は、同じ方向を見ている円の反対側に、対応する時計回りの光線を有し得る。これによって、単一の画像内に表わされる光線の方向の各々について左/右ビュー光線が提供され得る。
【0114】
本開示に記載のパノラマについて1セットの光線をキャプチャすることは、カメラ(図示せず)を円1900上で移動させてカメラを円1900に対して接線方向に整列させる(たとえば、カメラレンズをシーンにおいて外側を向いて円1900に対して接線方向を指し示すようにする)ことを含み得る。左目については、カメラは右を指し示し得る(たとえば、光線1904は中心線1914aの右側にキャプチャされる)。同様に、右目については、カメラは左を指し示し得る(たとえば、光線1910は中心線1914aの左側にキャプチャされる)。円1900の他方側および中心線1914bの下にあるカメラについては、中心線1914bを用いて同様の左右領域が規定され得る。全方向ステレオ画像を生成することは、実際のカメラキャプチャに、または以前にレンダリングされたコンピュータグラフィック(CG)コンテンツに効果的である。ビュー補間を、キャプチャされたカメラコンテンツおよびレンダリングされたCGコンテンツの両方とともに用いて、たとえば円1900上の実際のカメラ間の点のキャプチャがシミュレートされ得る。
【0115】
1セットの画像をスティッチングすることは、パノラマ画像を記憶するための球面/正距円筒図法の投影を用いることを含み得る。一般に、この方法では各目に1つずつ、2つの画像が存在する。正距円筒図法を用いた画像内の各画素は球面上の方向に対応する。たとえば、x座標は経度に対応し得、y座標は緯度に対応し得る。単一の全方向画像については、画素についてのビュー光線の原点は同じ点であり得る。しかし、ステレオ画像については、各ビュー光線も円1900上の異なる点から生じ得る。次いで、キャプチャされた画像内の各画素を分析し、投影モデルから理想的なビュー光線を生成し、ビュー光線が理想的な光線と最も一致しているキャプチャされたまたは補間された画像から画素をサンプリングすることによって、キャプチャされた画像からパノラマ画像がスティッチングされ得る。次に、光線値が互いに混合されてパノラマ画素値が生成され得る。
【0116】
いくつかの実現例では、オプティカルフローベースのビュー補間を用いて、円1900上の1度毎に少なくとも1つの画像が生成され得る。いくつかの実現例では、列内の1つの画素が所与の画像からサンプリングされる場合は、その列内の他の画素はその同じ画像からサンプリングされるであろうと判断され得るので、パノラマ画像の列全体が一度に埋められ得る。
【0117】
本開示のキャプチャおよびレンダリング局面で用いられるパノラマフォーマットによって、左右の目が見るオブジェクトの画像座標は水平シフトのみが異なることが保証され得る。この水平シフトは視差として知られている。これは正距円筒図法の投影に当てはまり、この投影では、オブジェクトは非常に歪んでいると見える場合がある。
【0118】
この歪みの大きさは、カメラまでの距離およびビュー方向に依存し得る。歪みは、線が曲がった歪み、異なる左右の目の歪みを含み得、いくつかの実現例では、視差はもはや水平に見えない場合がある。一般に、1〜2度の(画像球面上の)垂直視差は人間のユーザによって無理なく許容され得る。また、歪みは周囲目線のオブジェクトについては無視され得る。これは、中心のビュー方向からずれた約30度と相関している。これらの知見に基づいて、不快な歪みを回避するためにオブジェクトが貫通すべきでないカメラの近くの区域を規定する限界が構築され得る。
【0119】
図20は、3D空間における点に起因する最大垂直視差を示すグラフ2000である。特に、グラフ2000は、3D空間における点に起因する最大垂直視差(度で表わす)を、それらが画像の中心から30度に投影されると仮定して図示している。グラフ2000は、カメラからの水平位置(メートルで表わす)に対するカメラ中心からの垂直位置(メートルで表わす)をプロットしている。この図では、カメラは原点[0,0]における場所である。グラフが原点から離れるにつれて、歪みの程度は軽くなる。たとえば、グラフ上の(垂直方向の)約0から1の2002、および0から−1の2004において、歪みは最悪である。これは、(原点に設置された)カメラの真上および真下の画像に対応する。シーンが外側に移動するにつれて歪みは少なくなり、カメラが点2006および2008においてシーンを撮像する時までには、0.5度の垂直視差しか発生しない。
【0120】
30度を超える周囲の歪みを無視できる場合は、ビュー方向が両極の30度以内にあるすべての画素が除去され得る。周囲閾値が15度に許可される場合は、15度分の画素が除去され得る。除去された画素は、たとえば、カラーブロック(たとえば黒、白、マゼンタ等)または静止画像(たとえばロゴ、公知の境界、テクスチャ加工された層等)に設定され得、除去された画素の新たな表現が除去された画素の代わりにパノラマに挿入され得る。いくつかの実現例では、除去された画素はぼやけている場合があり、除去された画素のぼやけた表現が除去された画素の代わりにパノラマに挿入され得る。
【0121】
図21は、ステレオパノラマ画像を生成するプロセス2100の一実施形態を図示するフローチャートである。
図21に示すように、ブロック2102において、システム100はキャプチャされた画像に基づいて1セットの画像を規定し得る。当該画像は、前処理された画像、後処理された画像、バーチャルコンテンツ、ビデオ、画像フレーム、画像フレームの一部、画素等を含み得る。
【0122】
規定された画像は、たとえば、ヘッドマウントディスプレイ(HMD)を用いてコンテンツ(たとえばVRコンテンツ)にアクセスしているユーザによってアクセスされ得る。システム100はユーザが行なう特定のアクションを判断し得る。たとえば、ある点で、システム100はブロック2104において、VR HMDのユーザと関連付けられているビュー方向を受信し得る。同様に、ユーザが自身のビュー方向を変更した場合、システムはブロック2106において、ユーザのビュー方向の変更の指示を受信し得る。
【0123】
そのようなビュー方向の変更の指示を受信したことに応答して、システム100はブロック2108に示すように、1セットの画像の一部の再投影を構成し得る。再投影は、変更されたビュー方向、およびキャプチャされた画像と関連付けられている視野に少なくとも部分的に基づき得る。視野は1度から180度であり得、シーンのほんのわずかな画像からシーンの全パノラマ画像までを説明し得る。構成された再投影を用いて、1セットの画像の一部が球面透視投影から平面投影に変換され得る。いくつかの実現例では、再投影は、曲線経路の周りに配列された複数の視点からの1セットの画像と関連付けられているビュー光線の一部を球面透視投影から平面透視投影に再キャストすることを含み得る。
【0124】
再投影は、球面シーンの表面の一部を平面シーンにマッピングするいずれかのまたはすべてのステップを含み得る。当該ステップは、歪んだシーンコンテンツをレタッチすること、シームにおけるもしくはシームの近くのシーンコンテンツを混合する(たとえばスティッチングする)こと、トーンマッピング、および/またはスケーリングを含み得る。
【0125】
再投影を完了すると、システム100はブロック2110に示すように、再投影に基づいて更新されたビューをレンダリングし得る。更新されたビューは、歪みを補正してステレオ視差をユーザに提供するように構成され得る。ブロック2112において、システム100は、変更されたビュー方向に対応するステレオパノラマシーンを含む更新されたビューを提供し得る。たとえば、システム100は、更新されたビューを提供して(再投影前の)元のビュー内の歪みを補正し得、VRヘッドマウントディスプレイのディスプレイにおいてステレオ視差効果を提供し得る。
【0126】
図22は、ステレオパノラマ画像をキャプチャするプロセス2200の一実施形態を図示するフローチャートである。ブロック2202において、システム100は、少なくとも1セットの隣接カメラから収集されたキャプチャ済のビデオストリームに基づいて1セットの画像を規定し得る。たとえば、システム100は(
図2および
図5に示すような)隣接カメラ、または(
図3および
図6に示すような)複数セットの隣接カメラを用い得る。いくつかの実現例では、システム100は、約12個から約16個のカメラから収集されたキャプチャ済のビデオストリームを用いて1セットの画像を規定し得る。いくつかの実現例では、システム100は一部のまたはすべてのレンダリングされたコンピュータグラフィックス(CG)コンテンツを用いて1セットの画像を規定し得る。
【0127】
ブロック2204において、システム100は1セットの画像内のオプティカルフローを計算し得る。たとえば、1セットの画像内のオプティカルフローを計算することは、上記に詳述したように、1セットの画像と関連付けられている画素列の一部について画像強度フィールドを分析すること、および画素列の当該一部に対してオプティカルフロー技術を実行することを含み得る。
【0128】
いくつかの実現例では、オプティカルフローを用いて、(ブロック2206によって示す)上記に詳述したように、1セットの画像の一部ではない画像フレームが補間され得る。システム100は次いで、オプティカルフローに少なくとも部分的に基づいて画像フレームと1セットの画像とを互いにスティッチングし得る。ブロック2208において、システム100はインターリーブされたフレームおよび1セットの画像を用いて、VRヘッドマウントディスプレイにおいて表示するために全方位ステレオパノラマを生成し得る。いくつかの実現例では、システム100は少なくとも1セットのステレオ隣接カメラと関連付けられているポーズ情報を用いて画像スティッチングを実行し、たとえば、インターリーブを実行する前に1セットの画像の一部を予めスティッチングし得る。
【0129】
図23は、ヘッドマウントディスプレイにおいてパノラマ画像をレンダリングするプロセス2300の一実施形態を図示するフローチャートである。
図23に示すように、ブロック2302において、システム100は1セットの画像を受信し得る。当該画像は、回転可能なカメラリグからキャプチャされたコンテンツを表わし得る。ブロック2304において、システム100は画像内の画像フレームの部分を選択し得る。画像フレームは、カメラリグでキャプチャされたコンテンツを含み得る。システム100はキャプチャされたコンテンツの任意の部分を用い得る。たとえば、システム100は、カメラリグのベースの外向きエッジから約半径1メートルから、カメラリグのベースの外向きエッジから約半径5メートルの距離からリグによってキャプチャされたコンテンツを含む画像フレームの一部を選択し得る。いくつかの実現例では、この選択は、ユーザがどれほど遠くまで3Dコンテンツを認識し得るかに基づき得る。ここで、カメラから1メートルからカメラから約5メートルの距離は、ユーザが3Dコンテンツを見ることができる「区域」を表わし得る。それより短いと3Dビューは歪むことがあり、それより長いとユーザは3D形状を確認できない場合がある。すなわち、シーンは遠くからでは単に2Dに見える場合がある。
【0130】
ブロック2306において、画像フレームの選択された部分同士が互いにスティッチングされて立体パノラマビューが生成され得る。この例では、スティッチングは、選択された部分を、選択された部分内の少なくとも1つの他の画像フレームに一致させることに少なくとも部分的に基づき得る。ブロック2308において、パノラマビューがHMDデバイスなどのディスプレイにおいて提供され得る。いくつかの実現例では、スティッチングは、カメラリグの直径に少なくとも部分的に基づいて選択されたスティッチング比を用いて実行され得る。いくつかの実現例では、スティッチングは、第1の画像フレーム内の第1の画素列を第2の画像フレーム内の第2の画素列に一致させ、第2の画素列を第3の画像フレーム内の第3の画素列に一致させて、まとまりのあるシーン部分を形成する多数のステップを含む。いくつかの実現例では、多くの画素列がこのように一致させられ組合されてフレームが形成され得、それらのフレームが組合されて画像が形成され得る。さらに、それらの画像が組合されてシーンが形成され得る。
【0131】
いくつかの実現例では、方法2300は、システム100を用いて、画像フレームの当該部分の一部ではない付加的な画像フレームを補間する補間ステップを含み得る。そのような補間は、たとえば、遠く離れたカメラによってキャプチャされた画像間にフローが確実に起こるように実行され得る。付加的な画像コンテンツの補間が実行されると、システム100は付加的な画像フレームを画像フレームの当該部分内にインターリーブしてビューのバーチャルコンテンツを生成し得る。このバーチャルコンテンツは、付加的な画像フレームでインターリーブされた画像フレームの部分として互いにスティッチングされ得る。この結果は、たとえば更新されたビューとしてHMDに提供され得る。この更新されたビューは、画像フレームおよび付加的な画像フレームの当該部分に少なくとも部分的に基づき得る。
【0132】
図24は、画像境界を求めるプロセス2400の一実施形態を図示するフローチャートである。ブロック2402において、システム100は、少なくとも1セットの隣接カメラから収集されたキャプチャ済のビデオストリームに基づいて1セットの画像を規定し得る。たとえば、システム100は(
図2および
図5に示すような)1セットの隣接カメラ、または(
図3および
図6に示すような)複数セットの隣接カメラを用い得る。いくつかの実現例では、システム100は、約12個から約16個のカメラから収集されたキャプチャ済のビデオストリームを用いて1セットの画像を規定し得る。いくつかの実現例では、システム100は一部のまたはすべてのレンダリングされたコンピュータグラフィックス(CG)コンテンツを用いて1セットの画像を規定し得る。いくつかの実現例では、1セットの画像に対応するビデオストリームは符号化ビデオコンテンツを含む。いくつかの実現例では、1セットの画像に対応するビデオストリームは、180度の視野を有して構成された少なくとも1セットの隣接カメラで取得されたコンテンツを含み得る。
【0133】
ブロック2404において、システム100は、1セットの画像の一部と関連付けられているビュー光線を、円形路の一部に配列された複数の視点から1つの視点に再キャストすることによって、1セットの画像の一部を透視画像面から画像球面上に投影し得る。たとえば、1セットの画像は、多数のカメラをホストし得る円形のカメラリグによってキャプチャされ得る。各カメラは視点と関連付けられ得、それらの視点はシーンにおいてカメラリグから外向きに方向付けられている。特に、単一点から生じるのではなく、ビュー光線はリグ上の各カメラから生じている。システム100は、経路上のさまざまな視点から単一の視点に光線を再キャストし得る。たとえば、システム100は、カメラがキャプチャしたシーンの各視点を分析し得、補間された単一の視点からのシーンを表わすシーン(またはシーンのセット)を求めるために類似点および相違点を計算し得る。
【0134】
ブロック2406において、システム100は単一の視点に対応する周囲境界を求め、周囲境界外部の画素を除去することによって更新画像を生成し得る。周囲境界は、歪んだ画像コンテンツから明確で簡潔な画像コンテンツの輪郭を描き得る。たとえば、周囲境界は、歪みのある画素から歪みのない画素の輪郭を描き得る。いくつかの実現例では、周囲境界は、ユーザの典型的な周囲ビュー領域外部のビューに関連し得る。そのような画素を除去することによって、歪んだ画像コンテンツがユーザに不必要に提示されないことが保証され得る。画素を除去することは、上記に詳述したように、画素をカラーブロック、静止画像、または画素のぼやけた表現で置換することを含み得る。いくつかの実現例では、周囲境界は、キャプチャされた画像と関連付けられている1つ以上のカメラについて約150度の視野に規定される。いくつかの実現例では、周囲境界は、キャプチャされた画像と関連付けられている1つ以上のカメラについて約120度の視野に規定される。いくつかの実現例では、周囲境界は、キャプチャされた画像と関連付けられているカメラについてビュー平面より上の約30度に対応する球状の一部であり、画素を除去することは球面シーンの上部を黒く塗り潰すか除去することを含む。いくつかの実現例では、周囲境界は、キャプチャされた画像と関連付けられているカメラについてビュー平面より下の約30度に対応する球状の一部であり、画素を除去することは球面シーンの上部を黒く塗り潰すか除去することを含む。ブロック2408において、システム100は、周囲境界の範囲内の更新画像を表示するために提供し得る。
【0135】
いくつかの実現例では、方法2400はさらに、1セットの画像内の少なくとも2つのフレーム同士を互いにスティッチングすることを含み得る。スティッチングは、フレームから画素列をサンプリングし、少なくとも2つのサンプリングされた画素列間に、フレーム内にキャプチャされていない付加的な画素列を補間するステップを含み得る。さらに、スティッチングは、サンプリングされた列および付加的な列を互いに混合して画素値を生成するステップを含み得る。いくつかの実現例では、混合することは、キャプチャされた画像を取得するために用いられる円形カメラリグの直径に少なくとも部分的に基づいて選択されたスティッチング比を用いて実行され得る。スティッチングはさらに、画素値を左シーンおよび右シーン内に構成することによって三次元立体パノラマを生成するステップを含み得、当該パノラマはたとえばHMDにおいて表示するために提供され得る。
【0136】
図25は、ビデオコンテンツを生成するプロセス2500の一実施形態を図示するフローチャートである。ブロック2502において、システム100は、少なくとも1セットの隣接カメラから収集されたキャプチャ済のビデオストリームに基づいて1セットの画像を規定し得る。たとえば、システム100は(
図2に示すような)ステレオペア、または(たとえば
図3および
図6に示すような)複数セットの隣接カメラを用い得る。いくつかの実現例では、システム100は、約12個から約16個のカメラから収集されたキャプチャ済のビデオストリームを用いて1セットの画像を規定し得る。いくつかの実現例では、システム100は一部のまたはすべてのレンダリングされたコンピュータグラフィックス(CG)コンテンツを用いて1セットの画像を規定し得る。
【0137】
ブロック2504において、システム100は1セットの画像を正距円筒図法のビデオストリームにスティッチングし得る。たとえば、スティッチングは、左方向のカメラキャプチャ角度と関連付けられている画像を、右方向を向いているカメラキャプチャ角度と関連付けられている画像と組合せることを含み得る。
【0138】
ブロック2506において、システムは、第1のビューおよび第2のビューについてビデオストリームを正距円筒図法から透視投影にすることによって、ビデオストリームを再生するためにレンダリングし得る。第1のビューはヘッドマウントディスプレイの左目のビューに対応し得、第2のビューはヘッドマウントディスプレイの右目のビューに対応し得る。
【0139】
ブロック2508において、システムは、歪みが予め規定された閾値より高い境界を求め得る。予め規定された閾値は、特定の1セットの画像内に許容される視差のレベル、不一致のレベル、および/または誤差のレベルを提供し得る。歪みは、たとえば1つの平面またはビューから別の平面またはビューにビデオストリームを投影する際の投影構成に少なくとも部分的に基づき得る。
【0140】
ブロック2510において、システムは、上記に詳述したように、境界以上の1セットの画像内の画像コンテンツを除去することによって、更新されたビデオストリームを生成し得る。ビデオストリームを更新すると、更新されたストリームは、たとえばHMDのユーザに表示するために提供され得る。一般に、本開示全体にわたって記載されるシステムおよび方法は、画像をキャプチャし、キャプチャされた画像から歪みを除去し、画像をレンダリングしてHMDデバイスのユーザに3D立体ビューを提供するように機能し得る。
【0141】
図26は、本明細書に記載の技術とともに用いられ得る汎用コンピュータデバイス2600および汎用モバイルコンピュータデバイス2650の例を示す。コンピューティングデバイス2600は、ラップトップ、デスクトップ、ワークステーション、携帯情報端末、サーバ、ブレードサーバ、メインフレーム、および他の適切なコンピュータといった、さまざまな形態のデジタルコンピュータを表わすことを意図している。コンピューティングデバイス2650は、携帯情報端末、セルラー電話、スマートフォン、および他の同様のコンピューティングデバイスといった、さまざまな形態のモバイルデバイスを表わすことを意図している。ここに示すコンポーネント、それらの接続および関係、ならびにそれらの機能は例示であることが意図されているに過ぎず、本文書に記載のおよび/または請求項に記載の本発明の実現例を限定することを意図していない。
【0142】
コンピューティングデバイス2600は、プロセッサ2602、メモリ2604、記憶装置2606、メモリ2604および高速拡張ポート2610に接続している高速インターフェイス2608、ならびに低速バス2614および記憶装置2606に接続している低速インターフェイス2612を含む。コンポーネント2602,2604,2606,2608,2610および2612の各々はさまざまなバスを用いて相互に接続されており、共通のマザーボード上にまたは他の態様で適宜搭載され得る。プロセッサ2602は、コンピューティングデバイス2600内で実行される命令を処理可能であり、この命令には、GUIのためのグラフィカル情報を高速インターフェイス2608に結合されているディスプレイ2616などの外部入出力デバイス上に表示するためにメモリ2604内または記憶装置2606上に記憶されている命令が含まれる。他の実現例では、複数のプロセッサおよび/または複数のバスが、複数のメモリおよび複数種類のメモリとともに必要に応じて用いられ得る。また、複数のコンピューティングデバイス2600が接続され得、各デバイスは(たとえばサーババンク、ブレードサーバのグループ、またはマルチプロセッサシステムとして)必要な動作の一部を提供する。
【0143】
メモリ2604は情報をコンピューティングデバイス2600内に記憶する。一実現例では、メモリ2604は1つまたは複数の揮発性メモリユニットである。別の実現例では、メモリ2604は1つまたは複数の不揮発性メモリユニットである。また、メモリ2604は、磁気ディスクまたは光ディスクといった別の形態のコンピュータ読取可能媒体であってもよい。
【0144】
記憶装置2606は、コンピューティングデバイス2600に大容量記憶を提供可能である。一実現例では、記憶装置2606は、フロッピー(登録商標)ディスクデバイス、ハードディスクデバイス、光ディスクデバイス、またはテープデバイス、フラッシュメモリもしくは他の同様のソリッドステートメモリデバイス、またはストレージエリアネットワークもしくは他の構成におけるデバイスを含む多数のデバイスといった、コンピュータ読取可能媒体であってもよく、または当該コンピュータ読取可能媒体を含んでいてもよい。コンピュータプログラムプロダクトが情報担体内に有形に具体化され得る。また、コンピュータプログラムプロダクトは、実行されると上述のような1つ以上の方法を実行する命令を含み得る。情報担体は、メモリ2604、記憶装置2606、またはプロセッサ2602上のメモリといった、コンピュータ読取可能媒体または機械読取可能媒体である。
【0145】
高速コントローラ2608はコンピューティングデバイス2600のための帯域幅集約的な動作を管理するのに対して、低速コントローラ2612はより低い帯域幅集約的な動作を管理する。そのような機能の割当ては例示に過ぎない。一実現例では、高速コントローラ2608はメモリ2604、ディスプレイ2616に(たとえばグラフィックスプロセッサまたはアクセラレータを介して)、およびさまざまな拡張カード(図示せず)を受付け得る高速拡張ポート2610に結合される。当該実現例では、低速コントローラ2612は記憶装置2606および低速拡張ポート2614に結合される。さまざまな通信ポート(たとえばUSB、ブルートゥース、イーサネット(登録商標)、無線イーサネット)を含み得る低速拡張ポートは、キーボード、ポインティングデバイス、スキャナ、またはスイッチもしくはルータといったネットワーキングデバイスなどの1つ以上の入出力デバイスに、たとえばネットワークアダプタを介して結合され得る。
【0146】
コンピューティングデバイス2600は、図に示すように多数の異なる形態で実現されてもよい。たとえば、コンピューティングデバイス2600は標準的なサーバ2620として、またはそのようなサーバのグループ内で複数回実現されてもよい。また、コンピューティングデバイス2600はラックサーバシステム2624の一部として実現されてもよい。さらに、コンピューティングデバイス2600はラップトップコンピュータ2622などのパーソナルコンピュータにおいて実現されてもよい。あるいは、コンピューティングデバイス2600からのコンポーネントは、デバイス2650などのモバイルデバイス(図示せず)内の他のコンポーネントと組合されてもよい。そのようなデバイスの各々がコンピューティングデバイス2600,2650の1つ以上を含んでいてもよく、システム全体が、互いに通信する複数のコンピューティングデバイス2600,2650で構成されてもよい。
【0147】
コンピューティングデバイス2650は、数あるコンポーネントの中でも特に、プロセッサ2652、メモリ2664、ディスプレイ2654などの入出力デバイス、通信インターフェイス2666、およびトランシーバ2668を含む。また、デバイス2650には、マイクロドライブまたは他のデバイスなどの記憶装置が提供されて付加的なストレージが提供されてもよい。コンポーネント2650,2652,2664,2654,2666および2668の各々はさまざまなバスを用いて相互に接続されており、当該コンポーネントのいくつかは共通のマザーボード上にまたは他の態様で適宜搭載され得る。
【0148】
プロセッサ2652は、メモリ2664に記憶されている命令を含む、コンピューティングデバイス2650内の命令を実行可能である。プロセッサは、別個の複数のアナログおよびデジタルプロセッサを含むチップのチップセットとして実現されてもよい。プロセッサは、たとえば、ユーザインターフェイス、デバイス2650が実行するアプリケーション、およびデバイス2650による無線通信の制御といった、デバイス2650の他のコンポーネントの協調を提供し得る。
【0149】
プロセッサ2652は、ディスプレイ2654に結合された制御インターフェイス2658およびディスプレイインターフェイス2656を介してユーザと通信し得る。ディスプレイ2654は、たとえば、TFT LCD(薄膜トランジスタ液晶ディスプレイ)もしくはOLED(有機発光ダイオード)ディスプレイ、または他の適切なディスプレイ技術であり得る。ディスプレイインターフェイス2656は、ディスプレイ2654を駆動してグラフィカル情報および他の情報をユーザに提示するための適切な回路を含み得る。制御インターフェイス2658はユーザからコマンドを受信し、当該コマンドをプロセッサ2652に提出するために変換し得る。さらに、外部インターフェイス2662が、デバイス2650と他のデバイスとの隣接通信を可能にするために、プロセッサ2652と通信した状態で提供されてもよい。外部インターフェイス2662は、たとえば、ある実現例では有線通信を提供し、他の実現例では無線通信を提供してもよく、また、複数のインターフェイスが用いられてもよい。
【0150】
メモリ2664は情報をコンピューティングデバイス2650内に記憶する。メモリ2664は、1つもしくは複数のコンピュータ読取可能媒体、1つもしくは複数の揮発性メモリユニット、または1つもしくは複数の不揮発性メモリユニットの1つ以上として実現され得る。さらに、拡張メモリ2674が提供され、たとえばSIMM(Single In Line Memory Module)カードインターフェイスを含み得る拡張インターフェイス2672を介してデバイス2650に接続されてもよい。このような拡張メモリ2674はデバイス2650に余分のストレージスペースを提供し得るか、またはデバイス2650のためのアプリケーションもしくは他の情報をさらに記憶し得る。具体的には、拡張メモリ2674は上述のプロセスを実行または補足するための命令を含み得、さらにセキュア情報を含み得る。ゆえに、たとえば、拡張メモリ2674はデバイス2650のためのセキュリティモジュールとして提供されてもよく、デバイス2650のセキュアな使用を許可する命令でプログラムされてもよい。さらに、ハッキング不可能なようにSIMMカード上に識別情報を置くといったように、セキュアなアプリケーションが付加的な情報とともにSIMMカードを介して提供されてもよい。
【0151】
メモリは、以下に記載のように、たとえばフラッシュメモリおよび/またはNVRAMメモリを含み得る。一実現例では、コンピュータプログラムプロダクトが情報担体内に有形に具体化される。コンピュータプログラムプロダクトは、実行されると上述のような1つ以上の方法を実行する命令を含む。情報担体は、たとえばトランシーバ2668または外部インターフェイス2662上で受信され得る、メモリ2664、拡張メモリ2674、またはプロセッサ2652上のメモリといった、コンピュータ読取可能媒体または機械読取可能媒体である。
【0152】
デバイス2650は、必要に応じてデジタル信号処理回路を含み得る通信インターフェイス2666を介して無線通信し得る。通信インターフェイス2666は、とりわけ、GSM(登録商標)音声通話、SMS、EMS、またはMMSメッセージング、CDMA、TDMA、PDC、WCDMA(登録商標)、CDMA2000、またはGPRSといった、さまざまなモードまたはプロトコル下の通信を提供し得る。そのような通信は、たとえば無線周波数トランシーバ2668を介して起こり得る。さらに、ブルートゥース、Wi−Fi、または他のそのようなトランシーバ(図示せず)を用いるなどして、短距離通信が起こり得る。さらに、GPS(全地球測位システム)レシーバモジュール2670が付加的なナビゲーション関連および位置関連の無線データをデバイス2650に提供し得、当該データはデバイス2650上で実行されるアプリケーションによって適宜用いられ得る。
【0153】
また、デバイス2650は、ユーザから口頭情報を受信して当該情報を使用可能なデジタル情報に変換し得る音声コーデック2660を用いて可聴的に通信し得る。音声コーデック2660も同様に、たとえばデバイス2650のハンドセット内で、スピーカを介すなどしてユーザに可聴音を生成し得る。そのような音は音声通話からの音を含んでいてもよく、録音された音(たとえば音声メッセージ、音楽ファイル等)を含んでいてもよく、さらに、デバイス2650上で実行されるアプリケーションが生成する音を含んでいてもよい。
【0154】
コンピューティングデバイス2650は、図に示すように多数の異なる形態で実現されてもよい。たとえば、コンピューティングデバイス2650はセルラー電話2680として実現されてもよい。また、コンピューティングデバイス2650は、スマートフォン2682、携帯情報端末、または他の同様のモバイルデバイスの一部として実現されてもよい。
【0155】
本明細書に記載のシステムおよび技術のさまざまな実現例は、デジタル電子回路、集積回路、特別に設計されたASIC(特定用途向け集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェア、および/またはそれらの組合せで実現され得る。これらのさまざまな実現例は、少なくとも1つのプログラマブルプロセッサを含むプログラマブルシステム上で実行可能および/または解釈可能な1つ以上のコンピュータプログラムにおける実現例を含んでいてもよく、当該プロセッサは専用であっても汎用であってもよく、ストレージシステム、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスからデータおよび命令を受信するように、かつこれらにデータおよび命令を送信するように結合されている。
【0156】
これらのコンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーションまたはコードとしても公知)はプログラマブルプロセッサのための機械命令を含んでおり、高レベル手続きおよび/もしくはオブジェクト指向プログラミング言語で、ならびに/またはアセンブリ/機械言語で実現され得る。本明細書において使用する「機械読取可能媒体」「コンピュータ読取可能媒体」という用語は、機械命令および/またはデータをプログラマブルプロセッサに提供するために用いられる任意のコンピュータプログラムプロダクト、装置および/またはデバイス(たとえば磁気ディスク、光ディスク、メモリ、プログラマブルロジックデバイス(PLD))を指し、機械命令を機械読取可能信号として受信する機械読取可能媒体を含む。「機械読取可能信号」という用語は、機械命令および/またはデータをプログラマブルプロセッサに提供するために用いられる任意の信号を指す。
【0157】
ユーザとの対話を提供するために、本明細書に記載のシステムおよび技術は、情報をユーザに表示するための表示装置(たとえばCRT(陰極線管)またはLCD(液晶ディスプレイ)モニタ)と、ユーザが入力をコンピュータに提供する際に使用可能なキーボードおよびポインティングデバイス(たとえばマウスまたはトラックボール)とを有するコンピュータ上で実現され得る。他の種類のデバイスを用いてユーザとの対話を提供することもでき、たとえば、ユーザに提供されるフィードバックは任意の形態の感覚フィードバック(たとえば視覚フィードバック、聴覚フィードバック、または触覚フィードバック)であり得、ユーザからの入力は、音響、スピーチ、または触覚入力を含む任意の形態で受信され得る。
【0158】
本明細書に記載のシステムおよび技術は、バックエンドコンポーネントを(たとえばデータサーバとして)含む、またはミドルウェアコンポーネントを(たとえばアプリケーションサーバとして)含む、またはフロントエンドコンポーネント(たとえば、ユーザが本明細書に記載のシステムおよび技術の実現例と対話する際に使用可能なグラフィカルユーザインターフェイスもしくはウェブブラウザを有するクライアントコンピュータ)、またはそのようなバックエンド、ミドルウェア、もしくはフロントエンドコンポーネントの任意の組合せを含むコンピューティングシステムにおいて実現され得る。システムのコンポーネントは、任意の形態または媒体のデジタルデータ通信(たとえば通信ネットワーク)によって相互に接続され得る。通信ネットワークの例として、ローカルエリアネットワーク(「LAN」)、ワイドエリアネットワーク(「WAN」)、およびインターネットが挙げられる。
【0159】
コンピューティングシステムはクライアントおよびサーバを含み得る。クライアントおよびサーバは一般に互いにリモートであり、典型的に通信ネットワークを介して対話する。クライアントとサーバとの関係は、それぞれのコンピュータ上で実行されて互いにクライアント−サーバ関係を有するコンピュータプログラムによって生じる。
【0160】
多数の実施形態を説明した。しかしながら、明細書の精神および範囲から逸脱することなくさまざまな変更がなされ得ることが理解されるであろう。たとえば、以下の各請求項および上記のそのような請求項の例は任意に組合わせられて、付加的な例示的な実施形態が生成され得る。
【0161】
また、図面に示す論理フローは、所望の結果を達成するために、示されている特定の順序、または順番を必要としない。また、記載のフローとは他のステップが提供されてもよく、または当該フローからステップが除去されてもよく、記載のシステムに他のコンポーネントが追加されてもよく、または当該システムからコンポーネントが除去されてもよい。したがって、他の実施形態も以下の請求項の範囲内にある。