(58)【調査した分野】(Int.Cl.,DB名)
前記光学フローに基づいて前記第1のカメラビューをシフトするステップは、前記合成ビューの位置に対する前記第1のカメラビューの位置の相対距離に基づいて前記第1のカメラビューを比例的にシフトすることを含む、請求項2に記載の方法。
前記合成ビューは、前記合成ビューの各ピクセルを前記第1及び第2のカメラビューにおける1つ又は複数のピクセルの組み合わせとして記述する合成ビューマッピングである、請求項1に記載の方法。
前記光学フローは、前記第1のカメラビューの各領域をシフトさせるための大きさ及び方向を決定するベクトル変位場を含む、請求項11に記載の非一時的なコンピュータ可読記憶媒体。
前記光学フローに基づいて前記第1のカメラビューをシフトすることは、前記合成ビューの位置に対する前記第1のカメラビューの位置の相対距離に基づいて前記第1のカメラビューを比例的にシフトすることを含む、請求項12に記載の非一時的なコンピュータ可読記憶媒体。
前記命令は、前記プロセッサに前記第1のカメラビューおよび前記第2のカメラビューに対する光学フローを計算することを行わせる、請求項14に記載の非一時的なコンピュータ可読記憶媒体。
前記第1および第2のカメラビューは、前記第1および第2のカメラビューを捕捉した画像捕捉システムから受信される、請求項11に記載の非一時的なコンピュータ可読記憶媒体。
前記合成ビューは、前記合成ビューの各ピクセルを前記第1及び第2のカメラビューにおける1つ又は複数のピクセルの組み合わせとして記述する合成ビューマッピングである、請求項11に記載の非一時的なコンピュータ可読記憶媒体。
【発明を実施するための形態】
【0017】
図は、例示のみを目的として本発明の様々な実施形態を示す。以下の考察から、本明細書に示される本発明の原理から逸脱せずに、本明細書に示される構造及び方法の代替の実施形態が利用可能なことを当業者は容易に認識する。
【0018】
システムアーキテクチャ
図1は、本発明の実施形態によるキャンバス生成システムが動作するシステム環境のブロック図である。
図1により示されるシステム環境100は、画像捕捉システム105、キャンバス生成システム110、及びクライアント仮想現実(VR)デバイス115を備える。他の実施形態では、システム環境100は異なる又は追加の構成要素を含むことができる。
【0019】
画像捕捉システム105は、キャンバス生成システム110により処理され、クライアントVRデバイス115を介してユーザに提示することができるシーンの複数のカメラビューを捕捉する。シーンは、画像捕捉システム105がカメラビューを捕捉する物理的な環境を表すことができる。シーンは、仮想構成要素をシーンに追加するように、キャンバス生成システム105により後に拡張し得る。例えば、シーンは、カメラビューを捕捉するために、物理的な画像捕捉システム105が配置された公園とすることができる。カメラビューとは、画像捕捉システム105に配置されたカメラの画像センサから捕捉されるシーンのビューである。
【0020】
幾つかの実施形態では、画像捕捉システム105はカメラの集合を含み、各カメラは、シーンの異なるカメラビューを捕捉するように向けられる。他の実施形態では、画像捕捉システム105は、シーンのカメラビューを捕捉するように構成されたカメラである。画像捕捉システム105のカメラは、静止カメラ又はビデオカメラとすることができ、例えば、アクションカメラ、カムコーダ、携帯電話カメラ、高速カメラ、又は任意の他の適切な画像捕捉デバイスとすることができる。画像捕捉システム105のカメラは、画像を同時に捕捉するように大域的に同期することができ、グローバルシャッタを使用して、高速移動中の物体を捕捉する性能を改善することもできる。幾つかの実施形態では、画像捕捉システム105は、市販の構成要素及びカメラなしで構築されるが、任意の適切なプロプライエタリ又は市販のカメラを画像捕捉システム105に使用することができる。
【0021】
幾つかの構成では、カメラビューは、画像捕捉システム105の特定の原点の視点から又は特定の原点に関連して捕捉される。例えば、画像捕捉システム105は、原点を中心として外側に面し、かつ画像捕捉システム105の原点の周りの角度の完全な360度パノラマをカバーしたカメラビューを捕捉するカメラのリングを含むことができる。画像捕捉システム105の代替の実施形態は、原点の周りの完全な360度の球形を表し、ビューの部分パノラマ又は部分球形を表し、又は原点の周りのビューの任意の他の適切な一部を表すカメラビューを捕捉することができる。同様に、画像捕捉システム105により捕捉されたカメラビューは、同時に、順次、又は任意の他の適切な順序で捕捉することができる。例えば、画像捕捉システム105は、画像捕捉システム105がシーンの複数の高解像度静止画像を捕捉する場合等において、複数のカメラを使用することによりカメラビューを同時に捕捉することができ、代替的には、画像捕捉システム105は、カメラが動画を捕捉する場合等において、1つ又は複数のカメラから画像を順次捕捉することができる。
【0022】
幾つかの実施態様では、画像捕捉システム105は、シーン内の既知の位置から、シーンの動画を同時に捕捉する複数のカメラを備える。他の実施形態では、画像捕捉システム105は、画像捕捉システム105が人物、車両、又は他の可動物体に搭載される実施形態等において、シーン内で固定位置を有さない。捕捉されるカメラビューの位置は、互いに関連して又は画像捕捉システム105若しくはシーンの原点に関連して既知とすることができる。画像捕捉システム150は、キャンバス生成システム110と通信して、例えば、捕捉されたカメラビューをキャンバス生成システム110に送信することができる。キャンバス生成システム110は、ローカルエリアネットワーク又はインターネットなどのネットワーク、又は任意の他の適切な方法により、カメラビュー入力を画像捕捉システム105から直接受信する。
【0023】
幾つかの実施形態によれば、キャンバス生成システム110は、受信したカメラビューを処理して、シーンを表すキャンバスビューを生成する。キャンバスビューは、シーンを仮想現実において再現することができるような、シーンを示す任意の画像、例えば、パノラマ画像、球形パノラマ画像、又は適切な広角画像とすることができる。例えば、キャンバスビューは、「8K」(例えば、8192×8192ピクセル)等の解像度でキューブマップ、正距円筒図、又は円筒形式で出力することができる。したがって、キャンバスビューは、クライアントVRデバイス115により表示し得るシーンのある範囲の角度を表すことができる。ユーザがクライアントVRデバイス115をターン又は回転させると、異なる角度のキャンバスビューをユーザに提示し得る。キャンバス生成システム110は、2つのキャンバスビュー(ユーザのそれぞれの眼に1つずつ)を生成して、立体画像をクライアントVRデバイス115に提供し得る。
【0024】
幾つかの実施形態では、キャンバスビューは、シーンの一組の原カメラビューを結合して、カメラビューのいずれか1つよりもシーンについてより多くの情報を捕捉するキャンバスビューを生成することにより生成される。原カメラビューは、画像捕捉システム105から受信したカメラビューとすることができる。キャンバスビューは、クライアントVRデバイス115に表示されて、シーンの仮想現実表現を作成することができる。幾つかの実施形態では、キャンバスビューは、例えば、シーン内の1つの静的位置(以下、視点)に基づいて生成される。代替的には、キャンバスビューは、例えば、ユーザが仮想現実においてシーンの周りを見るときのユーザの眼の位置を近似する複数の視点の集合又は一組の視点に基づいて生成することができる。より十分に後述するように、キャンバスビューの視点は、キャンバスビューの角度に従って、それぞれの眼のターンする視点を表すように移動し得る。
【0025】
シーンのキャンバスビューは、特定のポイント(以下、視点という)において交わる光情報の複製に使用される部分光情報近似を表し得る。一般に、シーンの光情報の完全な表現は、光情報が計算される空間を通って移動する光線を記述するが、特定の視点に関連付けられた光情報は、そのポイントと交差する光線についての色情報を収集することにより近似することができる。例えば、光線色情報をカメラにより収集することができ、カメラは、カメラの画像センサと交差する光線についての色情報を捕捉する。カメラビュー内の各ピクセルは、カメラの画像センサに衝突する1つ又は複数の光線についての情報を表すことができ、その光線の色情報を捕捉する。次に、収集された色情報は、カメラにより生成されたカメラビュー内のピクセルのピクセル強度情報として表される。幾つかの実施態様では、複数のカメラビューからの情報を結合して、キャンバスビューを形成することができ、キャンバスビューを使用して、1つの視点における光情報を近似することができる。同様に、キャンバスビューを使用して、ユーザが頭部をターンさせるとき、ユーザの眼の可能な位置を表す視点における関連光情報を仮想現実シーンにおいて再現することができる。生成されたキャンバスビューは、ユーザへの表示のためにクライアントVRデバイス115に送信することができ、又はクライアントVRデバイス115により後に使用されるように若しくは他の適切な目的で記憶することができる。
【0026】
クライアントVRデバイス115は、キャンバス生成システム110からキャンバスビューを受信し、クライアントVRデバイス115のユーザにキャンバスビューを表示する。幾つかの実施態様では、クライアントVRデバイス115は、シーン内に位置するユーザのそれぞれの眼に対応する視点におけるシーンの光情報を再現することにより動作する。各部分光情報近似をユーザの対応する眼に対して別個に表示して、3D仮想現実効果を生み出すことができる。幾つかの実施態様では、部分光情報近似は、生成されたキャンバスビューをクライアントVRデバイス115のユーザに表示することにより生成することができる。部分光情報近似は、ゼロ視差距離(zero parallax distance)におけるユーザのビューの近似を作成することができる。
【0027】
幾つかの実施形態では、クライアントVRデバイス115はヘッドマウントVRシステムである。クライアントVRデバイス115は、ユーザのそれぞれの眼に異なるキャンバスビューを表示して、例えば、立体3D効果をクライアントVRデバイスのユーザに提供することが可能である。幾つかの構成では、クライアントVRデバイス115は、ユーザの行動に応答してキャンバスビューを表示する等により、インタラクティブな経験をユーザに提示する。さらに、クライアントVRデバイス115は、ユーザの行動に応答して、特定の時刻に基づいて、又は任意の他の適切な理由等で、キャンバス生成システム110から特定のキャンバスビュー又はキャンバスビューの一部を要求することができる。
【0028】
図2は、本発明の実施形態によるキャンバス生成システムのブロック図である。
図2の実施形態では、キャンバス生成システム110は、カメラビュー記憶装置210、キャンバスビュー記憶装置220、インタフェースモジュール230、新規ビュー生成モジュール240、光学フロー計算モジュール250、及び光情報近似モジュール260を含む。キャンバス生成システム110は、画像捕捉システム105から受信する一組の原カメラビューに基づいてキャンバスビューを生成する。
【0029】
カメラビュー記憶装置210は、カメラビュー、例えば、画像捕捉システム105から受信した一組の原カメラビューを含むことができる。カメラビューは、JPEG、PNG、RAW、又はTIFF等の圧縮又は非圧縮画像データを含む任意の適切な形式で記憶することができる。同様に、カメラビューは、一連のカメラビューの圧縮又は非圧縮画像データを含む、適切なビデオ形式、例えば、MPEG、AVI、又は任意の他の適切な形式で記憶することができる。幾つかの実施態様では、カメラビューは、画像捕捉システム105のカメラのカラーフィルタアレイ(例えば、ベイヤーフィルタ)からの生データを含む。記憶されるカメラビューは、記憶されるカメラビューの各ピクセルの位置情報及びピクセル強度情報を含むことができる。ピクセルのピクセル強度情報は、そのピクセルがいかに表示されるかを制御する輝度情報及び色情報を含むことができ、例えば、ピクセル強度は、ピクセルのグレースケール輝度情報又はRGBチャネル色情報で捕捉することができる。幾つかの実施形態では、カメラビュー記憶装置210に含まれるカメラビューには、カメラビューが捕捉された視点、画像を捕捉したカメラ、カメラの位置、及び画像捕捉システム105におけるカメラの向き等の追加情報を関連付けることができる。カメラビュー記憶装置210内に記憶されるカメラビューには、グループ、例えば、同じ物理的カメラから捕捉された画像の順次グループ又は画像捕捉システム105の多くのカメラから同時に捕捉された画像のグループを関連付けることもできる。同様に、キャンバス生成システム110により処理されたカメラビューは、カメラビュー記憶装置210に記憶することができる。例えば、カメラビューは、生のカラーフィルタアレイデータから、ビネット補正されたラスタRGBピクセルベースの画像に処理することができ、又は鮮鋭度/デコンボリューション、カラーバランス若しくはトーンカーブ、輝度若しくはガンマ、ピクセルモザイク処理、及びレンズ歪み効果を変更、追加、若しくは除去するように処理することができる。幾つかの実施形態では、カメラビューは、グループ内の他のカメラビュー、例えば、グループ内のカメラビュー間の相互色補正に基づいて、キャンバス生成システム110により処理することができる。幾つかの実施形態では、カメラビューは、生のベイヤーフィルタデータをRGB画像に変換することができ、次に、相互色補正、ビネット防止、ガンマ、鮮鋭化、及びデモザイク処理技法を使用して処理されて、最終的な補正済み画像を生成することができる。
【0030】
幾つかの実施形態によれば、キャンバスビュー記憶装置220は、キャンバス生成システム110により生成されたキャンバスビューを含む。キャンバスビューは、任意の適切な画像又は動画形式で記憶することができる。幾つかの実施形態では、キャンバスビューには、キャンバスビュー記憶装置220内に記憶された他のキャンバスビューが関連付けられ、又はキャンバスビューは、キャンバスビュー記憶装置220内に記憶された他のキャンバスビューとグループ化され、例えば、同じシーンの左眼キャンバスビュー及び右眼キャンバスビューは、キャンバスビュー記憶装置220において関連付けることができる。同様に、例えば、幾つかのビデオカメラビューから生成された一連のキャンバスビューは、キャンバスビュー記憶装置220においてグループ化することができる。
【0031】
インタフェースモジュール230は、画像捕捉システム105及びクライアントVRデバイス115と通信する。例えば、インタフェースモジュール230は、原カメラビューを画像捕捉システム105から受信し、生成されたキャンバスビューをクライアントVRデバイス115に送信することができる。幾つかの実施形態では、キャンバス生成システム110は、インタフェースモジュール230を介して、クライアントVRデバイス115から特定のキャンバスビューへの要求を受信することもできる。
【0032】
新規ビュー生成モジュール240は、幾つかの実施形態により、既存のカメラビューに基づいて合成ビューを生成する。合成ビューは、シーン内の特定の位置(以下、合成カメラ位置)に位置する理論上又は仮説上のカメラ(以下、合成カメラ)により捕捉されたであろうカメラビューをシミュレートする。合成ビューは、合成カメラ位置及び合成カメラ位置近傍のカメラからのカメラビューに基づいて生成することができ、幾つかの実施態様では、生成されると、カメラビュー記憶装置210に記憶することができる。幾つかの構成では、新規ビュー生成モジュール240は、カメラビュー間の光学フロー及びカメラビューを捕捉したカメラの位置に基づいて合成ビューを生成する。新規ビュー生成モジュール240について更に詳細に後述する。
【0033】
幾つかの実施形態では、光学フロー計算モジュール250は、2つ以上のカメラビュー内の対応するピクセルを検出し、検出された対応するピクセルに基づいて光学フローを生成する。光学フローは、ベクトル変位場又は第1のカメラビューの各ピクセルの変位ベクトルを通して第1のカメラビュー内のピクセルを第2のカメラビュー内の対応するピクセルに関連付ける他のデータセットとすることができる。幾つかの実施形態によれば、光学フローは、あるカメラビュー内のピクセルを第2のカメラビュー内のピクセルに関連付ける方程式である。幾つかの実施態様では、光学フローは、画像捕捉システム105内のカメラの数及び向きに応じて、カメラビューの多くのグループの光学フローを計算することができる。例えば、カメラリング内の近隣カメラへの各カメラビューの光学フローを計算することができる。カメラ対ごとに、第1のカメラから第2のカメラへの光学フロー及び第2のカメラから第1のカメラへの光学フローを計算し得る。幾つかの実施形態では、3つ以上のカメラビュー間の光学フローが必要であり、例えば、球形パノラマを捕捉するように構成された画像捕捉システム105の場合、水平面における2つのカメラと、上の又は上に面した上部カメラとの間の光学フローが必要であり得る。光学フロー計算モジュール250については更に詳細に後述する。
【0034】
幾つかの実施形態では、光情報近似モジュール260は、複数のカメラビューを1つの画像に結合することによりキャンバスビューを生成する。例えば、キャンバスビューは、画像捕捉システム105により捕捉されたカメラビュー、新規ビュー生成モジュール240により生成された合成ビュー、又は適切なカメラビューの任意の組合せに基づいて生成することができる。光情報近似モジュール260により生成されるキャンバスビューは、例えば、クライアントVRデバイス115のユーザに表示するために光情報を近似することにより、クライアントVRデバイス115での表示に適切となるように生成することができる。光情報近似モジュール260については更に詳細に後述する。
【0035】
図3は、幾つかの実施形態による画像捕捉システム例を示す線図である。
図3の画像捕捉システム105は、原点305、リング303、及びカメラ310〜317を含む。この構成では、画像捕捉システム105は原点305を中心とする。カメラ310〜317は、原点305を中心としたリング303の周りに位置決めされる。幾つかの実施形態では、カメラ310〜317は、リング303又は別の同様の支持構造により物理的に支持され、既知の直径の円内の既知の位置に位置決めすることができる。同様に、各カメラ310〜317は、
図3の実施形態によれば、原点305に対して既知の位置及び向きを有することができる。各カメラ310〜317は、例えば、カメラに取り付けられるレンズに基づいて、画定された視野を有することができる。幾つかの実施形態では、各カメラの視野の中心線が原点305と位置合わせされ、これは、各カメラ310〜317がリング303から外側に直接向けられることを意味する。他の実施形態では、カメラ310〜317は異なるように向けることができる。リング303の周りの特定の向き又は角度は、原点305の周りの角度φに基づいて記述することができる。この実施形態では、カメラ310はφ=0に位置決めされ、残りのカメラ311〜317は、リング303の周りに一定間隔で位置決めされる。
【0036】
合成ビューの生成
例えば、新規ビュー生成モジュール240による合成ビューの生成は、キャンバスビューの生成において、又は一組の原カメラビュー内で画像捕捉システム105から利用可能ではないカメラビューが必要な他の状況で使用することができる。新規ビュー生成モジュール240により生成される合成ビューは、生成される合成ビューと同様の一組の入力カメラビューに基づいて生成することができる。例えば、所望の合成カメラ位置への同様の位置及び向きから捕捉されたカメラビューを使用して、合成ビューを生成することができる。幾つかの実施形態では、合成ビューは、合成ビューの生成に使用されるカメラビューと同様の視野を有する。これらの合成ビューにより、まるで合成カメラ位置に位置決めされた別のカメラが合成ビューを捕捉したかのように、ビューを近似することができる。他の実施形態では、合成ビューは、例えば、カメラビューの視野のある領域のみを示す、入力カメラビューよりも小さな視野を表す部分合成ビューである。他の実施態様では、合成ビュー生成モジュール240は、入力カメラビュー内のピクセルを部分合成ビュー又は完全合成ビュー内の特定のピクセルに関連付けるマッピングを出力する。生成されたマッピングは、合成ビュー内の全てのピクセルの厳密な値を実際に計算することなく、合成ビューの情報を捕捉することができる。
【0037】
図4は、幾つかの実施形態による、キャンバス生成システム例での合成カメラの使用を示す線図である。
図400は、リング303、原点305、左側視点402、右側視点404、物体405、瞳孔間距離410、左側カメラ415、右側カメラ420、合成カメラ425及び430、並びに視線440及び445を含む。
【0038】
幾つかの実施形態では、例えば、キャンバスビューを使用して立体3Dを表示する場合、キャンバス生成システム110は、シーン内の特定の視点対に基づいてキャンバスビューを生成する。例えば、キャンバスビュー対を生成して、立体3D効果を生み出すために、キャンバスビュー生成システムは、ユーザの眼の間の距離(瞳孔間距離)と同様の距離だけ隔てられた視点対から、左側キャンバスビュー及び右側キャンバスビューを生成することができる。瞳孔間距離は、立体3D効果の生成に使用される2つの視点間の、キャンバスビュー生成システム110により設定される任意の距離又は変位とすることができる。例えば、瞳孔間距離410は、クライアントVRデバイス115のユーザの眼の間の距離を近似する左側視点402と右側視点404との間の距離例を表す。幾つかの実施形態では、左側視点402及び右側視点404は、原点305を中心とするが、左側視点402及び右側視点404は、シーン内の任意の適切な位置に配置することができる。同様に、左側視点402及び右側視点404は、幾つかの場合、2つの静的視点を表すことができるが、他の実施形態では、左側視点402及び右側視点404は、瞳孔間距離410によりそれぞれ隔てられた、一組の視点対のうちの2つの視点を表すことができる。キャンバスビューの一部での左側視点及び右側視点の特定の位置は、原点305の周りの角度φの関数であり、ユーザの頭部が原点の周りをターンし得るときの各眼の視点の変化をシミュレートし得る。言い換えれば、各眼の視点は、角度φに従って原点の周りを回転し得る。
【0039】
図4では、視線440及び445は、ユーザの眼(瞳孔間距離410で隔てられる)が合焦物体405に面するように近づくか、又は回転するときの瞳孔間距離410で隔てられた仮説的なユーザの左眼及び右眼の視角を表す。視線440及び445がリング303に交わるポイントに位置するカメラは、例えば、ユーザが物体405を見ているとき、選択されたゼロ視差距離を使用してユーザのビューを近似することができる。
図4の構成では、左側カメラ415及び右側カメラ420は、これらの交点に配置されないため、これらのカメラにより捕捉されるカメラビューは、そのままでは必要な情報を提供することができない。しかしながら、視線440及び445とリング303との交点に位置する合成カメラ425及び430からのビューをキャンバス生成システム110により計算して、左側視点402及び右側視点404から見た場合の物体405についての情報を捕捉することができる。幾つかの実施形態では、ゼロ視差距離は、例えば、物体の距離に応じて、物体ごとに特定される。他の実施態様では、ゼロ視差距離は一定であり、例えば、一定の距離又は無限に設定される。合成カメラ425及び430のそれぞれのビューはそれぞれ、左側カメラ415及び右側カメラ420等の隣接カメラから生成される。
【0040】
図5aは、幾つかの実施形態による、左側カメラビュー及び右側カメラビューに基づく合成ビュー例の生成を示す線図である。同様に、
図5bは、幾つかの実施形態によるカメラビュー例及び合成ビュー例を示す線図である。
図500は、左側カメラ505、右側カメラ510、合成カメラ515、光学フローシフト520及び525、左側カメラビュー530、右側カメラビュー535、並びに合成ビュー540を含む。
【0041】
上述したように、キャンバス生成システム110の幾つかの実施態様では、合成ビューは、合成カメラ位置近傍の位置から捕捉された入力カメラビューを使用して新規ビュー生成モジュール240により計算される。例えば、合成カメラ515の合成ビュー540を計算するために、左側カメラ505及び右側カメラ510からのカメラビュー530及び535を結合することができる。合成ビューの生成は、左側カメラビュー530及び右側カメラビュー535からのピクセルをシフトして、合成ビュー540における位置を近似することにより達成することができる。例えば、ピクセルのシフト量は、左側カメラビュー530内のピクセルを右側カメラビュー535内のピクセルに関連付ける光学フローからの情報を使用して決定することができる。幾つかの実施態様では、光学フローは、変位ベクトルのアレイであり、例えば、光学フローは、左側カメラビュー530内の各ピクセルに1つのベクトルを含むことができる。
図5の実施形態では、光学フローシフト520及び525は、左側カメラビュー530及び右側カメラビュー535から合成ビュー540へのシフトを示す。左側カメラビュー530及び右側カメラビュー535の各ピクセルの光学フローシフト520及び525の量は、左側カメラ505及び右側カメラ510に対する合成カメラ515の位置に依存することができる。
【0042】
左側カメラ505からの例としての左側カメラビュー530は、カメラビューの両端に離れた山及び人物を示す。これとは対照的に、右側カメラ510からの右側カメラビュー535は、カメラビュー内の異なる位置における人物及び山の同じ要素を示す。左側カメラビュー530と右側カメラビュー535との間での人物及び山の位置の不一致は、左側カメラ505及び右側カメラ510の異なる位置から捕捉されたカメラビューでの各シフトに起因する。離れた山は、左側カメラビュー530と右側カメラビュー535との間で比較的同じ位置のままであり、一方、人物は、左側カメラビュー530と右側カメラビュー535との間ではるかに大きな位置シフトを受けている。合成カメラ515は、左側カメラ505及び右側カメラ510と同様の向きで、左側カメラ505と右側カメラ510との間に位置決めされるため、合成ビュー540における物体は、左側カメラビュー530及び右側カメラビュー535に対して中間位置にあるはずである。例えば、合成ビュー540では、人物は、左側カメラビュー530及び右側カメラビュー535の両方に対して中間量、移動している。
【0043】
図6は、幾つかの実施形態による、カメラビュー例からの合成ビュー例の生成の詳細例を示す線図である。
図600は、左側カメラビュー610及び右側カメラビュー615から合成ビュー630を生成する処理の幾つかの段階において新規ビュー生成モジュール240により生成されるカメラビュー例を示す。
図600は、左側カメラビュー610及び右側カメラビュー615、シフトされた左側カメラビュー630及びシフトされた右側カメラビュー625、並びに合成ビュー630を含む。
【0044】
図6における各カメラビューにより捕捉されたシーンは、3つの主な物体:山、人物、及びボールを含む。この実施形態では、山はシーンの背景物体として見なされ、入力カメラビューを捕捉するカメラの位置から離れているが、人物及びボールは前景物体であり、左側カメラビュー610及び右側カメラビュー615を捕捉するカメラにはるかに近い。その結果、前景物体は、背景物体と比較して、左側カメラビュー610と右側カメラビュー615との間でより大きな変位を有する。左側カメラビュー610及び右側カメラビュー615は、合成ビュー630の計算に使用することができる入力カメラビューである。この実施形態において合成ビュー630を生成するために、左側カメラビュー610はまず、光学フローに基づいて、所望の合成ビューの位置にシフトされる。光学フロー内の各ベクトルは、左側カメラビュー610内の対応するピクセルと右側カメラビュー615内の対応するピクセルとの間の変位を示すことができる。光学フローシフトにおいて、左側カメラビュー610のピクセルは、光学フローに基づいて、合成カメラの相対位置に比例してシフトされる。左側カメラビュー610内の各ピクセルは、ピクセルの対応する光学フローベクトルの割合に相対する方向にシフトされて、合成ビューにおけるピクセル位置を決定することができる。例えば、合成カメラが左側カメラと右側カメラとの中間に位置する場合、左側カメラビュー610内の各ピクセルは、光学フロー内のそのピクセルに対応するベクトルの値の半分だけシフトすることができる。同様に、合成カメラが左側カメラから右側カメラへの道程の10%のところに位置する場合、左側カメラビュー内の各ピクセルは、光学フロー内の対応するベクトルの10%だけシフトすることができる。同じシフトプロセスを右側カメラビュー615に適用して、シフトされた右側カメラビュー625を取得することができる。
【0045】
シフトされた左側カメラビュー620及びシフトされた右側カメラビュー625はそれぞれ、光学フローを使用してシフトされた場合の左側カメラビュー610及び右側カメラビュー615の両方からの位置情報を使用した合成ビュー630の近似を表す。ピクセル強度情報は、同じ構成のカメラであっても、異なるカメラビュー及び異なるカメラ間で一貫しないことがあるため、左側カメラビュー610及び右側カメラビュー615の両方からのピクセル強度情報を使用して、合成ビュー630を生成することができる。幾つかの実施形態では、シフトされた左側カメラビュー620及びシフトされた右側カメラビュー625は、原カメラビューの1つからのピクセル強度情報を含む。例えば、シフトされた左側カメラビュー620は、左側カメラビュー610及び右側カメラビュー615の両方からの位置情報(光学フローに基づくシフトの形態で)を組み込む。しかしながら、シフトされた左側カメラビュー620は、左側カメラビュー610からのピクセル強度情報のみを組み込み、その理由は、ピクセルの位置がシフトした場合であっても、シフトされた左側カメラビュー620内の全てのピクセル強度値が左側カメラビュー610内の対応するピクセルから継承されるからである。
【0046】
2つのカメラビュー内の対応するポイント間の異なるピクセル強度情報は、例えば、カメラビューを捕捉するカメラ間の異なる露出又は他の設定により生じ得る。
図6の例では、ボールは、左側カメラビュー610では、右側カメラビュー615とは異なる陰影であり、これらの差は、シフトされた左側カメラビュー620及びシフトされた右側カメラビュー625に残る。
図6の実施形態では、シフトされた左側カメラビュー620及びシフトされた右側カメラビュー625をブレンドして、合成ビュー630を生成する。カメラビューのブレンドは、例えば、シフトされた左側カメラビュー及びシフトされた右側カメラビューのそれぞれの内の2つの対応するピクセルに亘るピクセル強度情報の平均をとることにより、各カメラビュー内の対応するピクセルの平均をとるか、又は他の方法で結合することを含むことができる。シフトされた左側カメラビュー620及びシフトされた右側カメラビュー625は、合成カメラの位置に基づいて比例してブレンドして、合成ビュー630を生成することができる。
図6の例では、合成ビュー630におけるボールは、ボールの各ピクセルが、シフトされた左側カメラビュー620及びシフトされた右側カメラビュー625の対応するピクセルから比例してブレンドされる結果として、中間の陰影である。
【0047】
他の実施形態では、合成ビュー630は、例えば、合成ビューを生成するために合成カメラ位置に最も近くで捕捉されたカメラビューからのピクセル強度情報のみを使用して、1つのみのカメラビューからのピクセル強度情報に基づいて生成することができる。しかしながら、最も近いカメラからのピクセル強度情報のみが使用される場合、他のカメラビューに近い合成ビューと比較して、1つのカメラビューに近い合成ビューの外観の急なシフト又は差が生じ得る。
【0048】
一例では、ピクセル値Pは、シフトされた左側カメラビューピクセル値L及びシフトされた右側カメラビューピクセル値Rを使用して、左側カメラから右側カメラへの合成カメラの比例距離tに基づいて特定され(ここで、t=1は左側カメラの位置を表し、t=0は右側カメラの位置を表す)、各シフトされたカメラピクセル値は、比例距離tを使用した比例光学フロー後のピクセル値を反映する。
【0049】
P=t×L+(1−t)×R 式1
しかしながら、幾つかの場合、シフトされた左側カメラビューピクセル値は、相当量異なり得る。ピクセルの大きさの潜在的な差を考慮するために、左側ピクセル色値を優先するか、それとも右側ピクセル色値を優先するかを判断するのに、追加の項を含め得る。追加の項は、パラメータN(a,b,x,y)を有する正規化関数Nであり得、ここで、a及びbはピクセル色値であり、x及びyは正規化重みである。一例では、正規化関数Nはパラメータを以下のように加重する。
【0050】
【数1】
一実施形態では、正規化関数Nのパラメータは、
・a=シフトされた左側カメラのピクセル値L、
・b=シフトされた右側カメラのピクセル値R、
・x=比例距離t+左側カメラの光学フローの大きさM
l、
・y=(1−比例距離t)+右側カメラの光学フローの大きさM
r
である。
【0051】
正規化関数Nの重みの部分を決定するために、左側カメラピクセル値と右側カメラピクセル値との間のピクセル大きさδの類似性を使用して、Nの適用に対して加重し得、ここで、1に等しいピクセル大きさδは、同一のピクセル値を表し、0に等しいピクセル大きさδは、ピクセル値の完全な不一致を表す。したがって、一例では、比例距離tを使用したピクセル値は、
P=δ(t×L+(1−t)×R)+(1−δ)N 式3
である。
【0052】
上記パラメータを正規化関数に適用すると、ピクセル値は式4により与えられ得る。
【0053】
【数2】
光学フローの大きさを調整することにより、ピクセル値を決定するこの関数は、ピクセル値が同様の場合、ピクセル値の結合を優先し、ピクセル値が異なる場合、カメラビューへの距離の加重を優先する。ピクセル値が異なる場合、正規化項により、カメラビューからの比例距離に加えて、各シフトされたピクセルの光学フローの大きさを使用して左側ピクセル及び右側ピクセルから選択することができる。
【0054】
図7は、実施形態による、入力カメラビューから合成ビューを生成するプロセスを示すフローチャートである。プロセス700は、左側及び右側カメラビュー並びに合成カメラの位置が、例えば、新規ビュー生成モジュール240において受信されるとき、開始される。次に、受信した左側カメラビューと右側カメラビューとの間の光学フローが、光学フロー計算モジュール230等により計算される(710)。この光学フローを使用して、合成カメラの位置に基づいて受信した各カメラビューをシフトすることができる(715)。次に、シフトされた左側及び右側カメラビューをブレンドして(720)、ピクセル強度情報を統合し、入力カメラビューに基づいて最終的な合成ビューを生成する。このブレンドは、例えば、上述した式1又は式4により実行されて、各シフトされたカメラのピクセル強度をブレンドし得る。
【0055】
光学フローの計算
上述した合成ビューの生成に使用される光学フロー等の光学フローは、幾つかの実施形態では、光学フロー計算モジュール250により生成される。上述したように、光学フローは、複数のカメラビューに亘る対応する1つ又は複数のピクセルを関連付ける。2つのカメラビュー間の光学フローは、ベクトル場とすることができ、ここで、各ベクトル(以下、光学フローベクトルという)は、第1のカメラビュー内の1つのピクセルから他のカメラビュー内の対応するピクセルへの変位又は正距円筒図法若しくは方位図法等の他のカメラビューの投影を表す。他の実施形態では、光学フローは、関数又は他のタイプの並進移動であり、点に関連付けられた光学フローベクトルは、光学フロー関数又はマッピングが評価されるとき、点とそれに対応する点との間の変位を表す。光学フローは、対応するピクセルを有する任意の2つのカメラビュー間で計算することができ、幾つかの実施態様では、任意の数のカメラビュー間で計算することができる。例えば、光学フローは、水平面における2つのカメラビュー及び第3のカメラビュー、例えば、上に面して位置決めされる魚眼カメラの間で計算することができる。光学フローは、オフセット(u,v)を与える関数又はマッピングに基づいて、第1の画像内のピクセル(x,y)を第2の画像内のピクセルに関連付けることができる。第2の画像内の対応するピクセルは、例えば、第1の画像内の所与のピクセルから第2の画像内の対応するピクセルへのx軸変位又はy軸変位を表す関数又はマッピングu(x,y)及びv(x,y)に基づいて特定することができる。幾つかの実施態様では、第1の画像内のピクセル(x,y)に対応するピクセルは、第2の画像内のピクセル(x+u(x,y),y+v(x,y))とすることができる。
【0056】
幾つかの実施形態では、光学フローは方向を有し、ピクセルが二次カメビュー内の対応するピクセルにマッピングされる一次カメラビューを有する。例えば、一次カメラビュー内の各ピクセルに、一次カメラビュー内のそのピクセルと二次カメラビュー内の対応するピクセルとの間の変位を記憶する変位ベクトルを割り当てることができる。他の実施態様では、光学フローは対称であり、例えば、両カメラビュー内のピクセルに、他のカメラビュー内の対応するピクセルを指す変位ベクトルを割り当てる。対称光学フローは、2つ以上の指向性光学フローを結合する(例えば、カメラビューのグループの各カメラビューの指向性光学フローを計算する)ことにより作成することもできる。幾つかの場合、1つのカメラビュー内のポイントは、他のカメラビューの1つ又は複数内に対応するポイントを有さない。例えば、物体は、あるカメラビューでは別の物体により遮蔽され得るが、同じシーンの別のカメラビューでは遮蔽されず、完全に見ることができる。幾つかの実施形態では、光学フローベクトルは、他のカメラビュー内に対応するピクセルがない状態でもピクセルに割り当てられる。例えば、他のカメラビューに対応するピクセルがないピクセルに、近隣ピクセルに割り当てられた光学フローベクトルに基づいて、平均若しくはメジアン光学フローベクトルに基づいて、又は任意の他の適切な方法に基づいて、光学フローベクトルを割り当てることができる。
【0057】
図8は、幾つかの実施形態による、カメラビュー例間の光学フローベクトルを示す線図である。
図800は、左側カメラビュー805及び右側カメラビュー810、光学フロー815、左側カメラビュー805内のポイント820〜823、右側カメラビュー810内のポイント830〜833、結合カメラビュー840、並びに光学フローベクトル845を含む。
【0058】
図8の実施形態では、左側カメラビュー805及び右側カメラビュー810は、幾つかの共有物体、この場合、2つの異なる位置から捕捉された山及び人物を示す。左側カメラビュー805及び右側カメラビュー810は共通の物体を共有するため、右側カメラビュー810においても共通の物体を表すピクセルに対応する、左側カメラビュー805において共通の物体を表すピクセルがある。例えば、ポイント820〜823のそれぞれには、対応するポイント830〜833が関連付けられた右側カメラビュー内のピクセルに対応する、左側カメラビュー805におけるピクセルを関連付けることができる。例えば、左側カメラビュー805内のポイント822及び右側カメラビュー810内の対応するポイント832は、人物の頭部の上部を両方とも示す左側カメラビュー805及び右側カメラビュー810内の対応するピクセルを表すことができる。幾つかの実施形態では、光学フロー815等の光学フローは、ポイント822及び832に関連付けられたピクセル間の対応性を捕捉する。
【0059】
結合カメラビュー840は、例示目的のために右側カメラビュー810を左側カメラビュー805に重ねたものを示す。結合カメラビュー840では、左側カメラビュー805と右側カメラビュー810との間の位置シフトが、両カメラビューで共通する全ての物体で一貫するわけではないことが明らかである。例えば、左側カメラビュー805と右側カメラビュー810との間の山の位置変位の大きさは、同じカメラビュー間の人物の位置変位と比較して小さい。物体間のシフト量の差は、遠近効果に起因することができ、例えば、カメラビューの物体間のカメラまでの距離が異なることに起因することができる。
図8の例では、山は人物よりも左側及び右側カメラからはるかに離れており、その結果、左側カメラビュー805と右側カメラビュー810との間での人物の位置変位は、山の位置変位よりもはるかに大きくなる。光学フローベクトル845は、左側カメラビュー805と右側カメラビュー810との間の光学フローに含むことができるベクトルの例である。光学フローベクトル845は、左側カメラビュー805内のポイント822と右側カメラビュー内のポイント832との間の対応性を、これらの間の変位を示すことにより示す。
【0060】
光学フローの計算は、様々な方法により達成することができる。例えば、光学フローの計算は、変分最適化問題を確立して、2つの画像間の光学フローを特定することにより開始することができる。最適化問題は、別の画像における対応するピクセル若しくは勾配と比較したピクセルの強度又はピクセルの勾配の強度を測定するデータ項、例えば、光学フロー場の平滑性を測定する正則化項、又は任意の他の適切な項等の様々な項を含むことができる。例えば、第1の画像内のピクセル(x,y)を第2の画像内のピクセル(x+u(x,y),y+v(x,y))に関連付ける変分最適化式は、以下のように提示することができる。
【0061】
【数3】
上記の変分最適化式(式5)の例は、第1の画像内のピクセルと第2の画像内の対応するピクセルとの間のピクセル強度I又は色の差の絶対値を測定するデータ項│I
1(x,y)−I
2(x+u(x,y),y+v(x,y))│
P+││∇I
1(x,y)−∇I
2(x+u(x,y),y+v(x,y))││
Pを含む。この変分最適化式例のデータ項は、2つの画像の勾配∇I
1の差を測定する勾配一貫性││∇I
1(x,y)−∇I
2(x=u(x,y),y+v(x,y))││
Pを更に含む。最後に、この式は正則化項R(u,v)を含む。変分最適化式の最小化は、光学フローが変分最適化問題の特定のパラメータに対して最適化されることを示す。他の実施形態では、変分最適化問題は、例えば、以下の式6に示されるように、追加の項を含むことができる。
【0062】
【数4】
式中、G及びG
dはガウスカーネルであり、α
0及びα
1はアルファチャネルであり、εは、2つの対応するポイント間のピクセル強度値の誤差であり、Wはシグモイドである。
【0063】
式6は、変分最適化問題の第2の例を示す。式6は、第1の画像内のピクセル及び第2の画像内のピクセルの勾配のブラー版(G
*)を比較するデータ項
【0064】
【数5】
、現在の光学フローを前の光学フローと比較する一時的正則化項
【0066】
【数7】
、メジアンピクセル強度値の絶対値差をとるメジアンフィルタリング項
【0067】
【数8】
、及びピクセル強度値の誤差に基づくブラーピクセル強度値の差を測定する加重拡散項
【0068】
【数9】
を含む。一時的正則化項、メジアンフィルタリング項、及び加重拡散項について更に詳細に後述する。
【0069】
次に、この変分最適化問題を解いて、光学フローを特定することができる。幾つかの実施形態では、変分最適化問題は、データ項及び正則化項を使用して構築された最適化式を最小化することにより近似される。例えば、最適化式はまず、反復オイラー−ラグランジュ法を使用して偏微分式の非線形系に変換することができる。次に、非線形系を線形化し、他の反復法を使用して解くことができる。例えば、ガウスザイデル法、ヤコビ法、又は逐次加速緩和法(SOR:successive over relaxation)法を利用して、変分最適化問題を近似する式の線形化系を解くことができる。幾つかの実施態様では、カメラビュー内の主要点又は主要ピクセルは、ORB、AKAZE、又はBRISK等のキーポイントマッチングアルゴリズムを使用して別個に照合して、主要点に対応するピクセル間の正確な一致を生成することができる。光学フロー計算モジュール250は、計算された主要点一致を使用して、前に計算された主要点一致と同様の主要点の光学フローベクトルを含む解に向けて変分最適化問題に影響をもたらすことができる。例えば、変分最適化問題を解く反復間で、例えば、スプラッティングを使用することにより、主要点一致に向けて光学フローに影響もたらすことができる。
【0070】
代替的には、変分最適化問題は、最適化問題を式の線形化系に変化せずに、反復法を使用することにより解くことができる。光学フロー場を生成する変分最適化問題を解くために、1つ又は複数のカメラビューの各ピクセルの光学フローを表す初期化ベクトル場に反復法を適用することができる。ベクトル場は様々な方法を使用して初期化することができ、例えば、各光学フローはランダムに初期化することができ、ベクトル場全体を均一値に初期化することができ、又は任意の他の適切な方法を使用することができる。一実施形態では、光学フローは、低解像度画像から高解像度画像への画像「ピラミッド」に対して繰り返し実行される。まず、画像の低解像度ダウンサンプリング版の光学フローが計算される。次に、各光学フローベクトルの大きさを比例的に調整することを含め、この結果生成される初期光学フローをスケールアップし、画像の高解像度版の光学フローの初期化に使用することができる。前の各光学フローを使用して、最高解像度光学フローが計算されるまで、画像の漸次的に高い解像度のバージョンの光学フローを初期化することができる。概念的に、これは、画像の漸次的により小さな領域の光学フローを計算することと同様であり、その理由は、画像のダウンサンプリング版における各ピクセルが原画像内の領域を表すことができるためである。
【0071】
反復プロセス中、光学フローはピクセル単位又は領域単位で最適化することができる。光学フローを決定する反復プロセスの一実施態様では、カメラビュー内の各ピクセル又は各領域の光学フローベクトルを個々に分析して、1つ又は複数の他のカメラビュー内のより最適な対応ピクセルを反復的に決定する。しかしながら、小さな領域又は個々のピクセルを個々に分析する実施態様では、カメラビューの1つ又は複数におけるノイズ、ゴミ、又は他の不完全性等の画質変動は、ピクセルをその正確な対応ピクセルに関連付ける反復プロセスの能力を損ない得る。例えば、特定のピクセルに最も適切な対応ピクセルは、ノイズにより遮蔽され得、最適さがより低い対応ピクセルが選択されることに繋がる。この問題に対処するために、幾つかの実施形態では、光学フローを計算する反復法を適用する前、メジアンフィルタリング、ブラーリング、ノイズ除去、又は他の適切な画像処理技法が入力カメラビューに適用される。反復プロセスが完了した後、生成された最適化光学フローを合成ビュー又はキャンバスビューの計算に使用することができる。
【0072】
図9は、幾つかの実施形態による、2つのカメラビュー間の光学フローを計算するプロセス例を示すフローチャートである。プロセス900は、左側カメラビューと右側カメラビューとの間の光学フローを生成する反復方法例を概説する。他の実施形態では、同様の技法を使用して、3つのカメラビュー間の光学フロー又は任意の向きの複数のカメラビュー間、例えば、上部カメラビューと下部カメラビューとの間の光学フロー等のより多く又は異なるカメラビュー間の光学フローを生成することができる。
【0073】
プロセス900は、一組のカメラビューが光学フロー計算モジュール250において受信される(905)ときに開始される。例えば、光学フロー計算モジュール250は、一次カメラビュー及び二次カメラビュー又は左側カメラビュー及び右側カメラビューを受信することができる。幾つかの実施形態では、受信されたカメラビューは、例えば、ノイズ除去、メジアンフィルタリング、又はブラーリングにより処理されて、1つ又は複数のカメラビュー内のノイズ等のカメラビュー間の対応するピクセル間の潜在的な画質の差を軽減する。プロセス900は、一組のカメラビューの光学フローを初期化する(915)ことに続く。例えば、光学フローをランダム光学フロー、大きさゼロの光学フロー、又は任意の他の適切な光学フローに初期化することができる。例えば、ピラミッド型初期化を使用する実施態様では、光学フローは、カメラビューの低解像度版を使用して計算された光学フローのスケールアップ版に初期化することができる。プロセス900において、次に、反復法を使用して、初期化された光学フローを最適化することができる。
【0074】
各反復を開始するために、カメラビューからピクセル、例えば、左側カメラビューの左上ピクセルが選択される(920)。幾つかの実施態様では、ピクセルは反復に基づいてパターンで選択され、各ピクセルに対応する光学フローベクトルは、次のピクセルに移る前に更新される。例えば、最初の反復において、左上角のピクセルで開始し、右下角のピクセルに順次進んでピクセルを選択することができる。幾つかの実施形態では、順次反復は異なる順序でピクセルを選択する。例えば、2回目の反復は、右下角のピクセルで開始し、左上角のピクセルに順次進むことができる。他の実施態様によれば、ピクセルは、中央ピクセルで開始して、又は任意の他の適切なパターンでランダムに選択することができる。以下の表1〜表3は、画像内のピクセルを横切り得る一連のピクセルを選択する幾つかのパターン例を示す。
【0075】
【表1】

次に、選択されたピクセルについて、1つ又は複数のフローベクトル提案が生成される(925)。フローベクトル提案は、そのピクセルに関連付けられた代替の光学フローベクトルであり、任意の数の適切な技法により生成することができる。例えば、フローベクトル提案は、ランダムに又は変分最適化問題の項の一部に関して計算された勾配降下に基づいて生成することができる。フローベクトル提案は、現在のフローベクトルのランダム摂動により生成することもでき、又は隣接ピクセル若しくは近傍ピクセルに対応するフローベクトルからコピーすることもできる。一実施形態では、選択されたピクセルに対して4つのフローベクトル提案:ランダムフローベクトル、勾配降下により生成されたフローベクトル、選択されたピクセルの上の近隣ピクセルに割り当てられたフローベクトルのコピー、及び選択されたピクセルの左の近隣ピクセルに割り当てられたフローベクトルのコピーが生成される。次に、各フローベクトル提案を分析して(930)、そのベクトル提案が、その他の提案及び現在の光学フローベクトルと比較した場合、光学フローの最適化を改善するか否かを判断する。改善は、例えば、変分最適化問題の出力を比較し、それが低減されたか否か、ひいては最小により近づいたか否かを判断することにより判断することができる。幾つかの実施形態では、各画像の強度勾配は、変分最適化問題に入力される際、ブラーリングすることができる。次に、最適化を改善する提案が受け入れられ、選択されたピクセルに関連付けられる新しい光学フローベクトルになる。次に、プロセス900は、シーケンス内の次のピクセルに進み、光学フロー内の全てのフローベクトルが更新された(935)場合、メジアンフィルタ又は拡散フィルタ、例えば、ガウスブラーフィルタを更新された光学フローに適用して(937)、光学フロー場における異常値の影響を下げることができる。メジアンフィルタリング及び拡散フィルタリングは、近傍ピクセルの光学フローベクトルと位置合わせされない光学フロー場内の異常値を除去することにより、光学フロー場の一貫性又は平滑性を改善することができる。幾つかの実施態様では、拡散フィルタは、そのピクセルと対応ピクセルとの間のピクセル強度値の誤差に基づいて、ガウスブラー又は他のタイプのブラー等の加重拡散を各ピクセルの各光学フローベクトルに適用することができる。例えば、完全ブラー光学フローは、ピクセル強度値の誤差に基づいてブラー前光学フローとブレンドすることができる。ピクセル強度値の誤差が大きい光学フローベクトルは、対応するピクセルのピクセル強度値の誤差が小さいピクセルよりも重くブラー光学フローを加重することができる。幾つかの実施形態、例えば、式6の変分最適化式を使用する実施形態では、変分最適化問題における項として、メジアンフィルタリング及び加重拡散を組み込むことができる。次に、プロセス900は、反復プロセスの次の完全反復に移る。この時点で、全ての反復が完了した(940)後かつ光学フローが最高解像度光学フローではない(942)場合、例えば、光学フローのピラミッド型初期化が使用される場合、プロセスは光学フロー初期化915に戻り、現在の光学フローを使用して初期化された光学フローを有するより高解像度のカメラビューに基づいて反復を続ける。その他の場合、全ての反復が完了した(940)後、最適化された光学フローが出力される(945)。
【0076】
光学フロー計算の一変形において、ピクセルの強度値をブラー化して、画像間のハードエッジを軟化し得る。加えて、反復中、画像強度勾配自体をブラー化することもできる。このブラーを実行することにより、光学フロー分析は、異なる画像に亘り異なって見え得るノイズ及び鮮鋭なエッジに対してよりロバストとなり得る。
【0077】
別の変形では、光学フローはまず、カメラの前のフレームの光学フローを別のカメラに組み込む。例えば、幾つかの場合、カメラは、複数のカメラに亘り同期された一連のフレームを含む動画を捕捉中であり得る。前のフレームの光学フローは、現在のフレームの光学フローに使用し得る。現在のフレームは、最初の反復の初期解として前のフレームの光学フローを使用し得、又は現在のフレームの解を見つけ得、現在のフレームの解を前のフレームの光学フローと結合して、現在のフレームの光学フローを決定する。これにより、2つ以上の画像に亘る光学フローの時間的正則化が可能である。幾つかの実施態様では、時間的正則化項を変分最適化式に含めることができる。
【0078】
キャンバスビューの生成
幾つかの実施形態によれば、光情報近似モジュール260は、新規ビュー生成モジュール240により生成される合成ビュー及び光学フロー計算モジュール250により生成される光学フローに基づいて、キャンバスビューを生成する。例えば、光情報近似モジュール260は、特に生成された合成ビューから取得された領域からキャンバスビューを組み立てることができる。幾つかの実施形態では、光情報近似モジュール260は、新規ビュー生成モジュール240から、キャンバスビューの生成に必要な合成ビューを要求する。同様に、光情報近似モジュール260は、光学フロー計算モジュール250から、必要ないかなる光学フローも要求することができる。代替的には、光学フローは、合成ビューの生成中、新規ビュー生成モジュール240により自動的に計算又は要求することができる。
【0079】
上述したように、キャンバスビューを生成して、特定の視点又は一組の視点における光情報を近似することができる。キャンバスビューの生成は、キャンバスビューが計算される一組の領域又はピクセルにキャンバスビューを分割することにより開始することができる。幾つかの実施形態では、光情報近似はピクセル単位で実行され、その場合、光情報近似においてキャンバスビューの各ピクセルに光線が割り当てられる。同様に、キャンバスビューの各領域に、例えば、キャンバスビューのその領域に関連する光情報の特定に使用される視点を関連付けることができる。例えば、各ピクセルは、そのピクセルの固有の合成カメラ位置からの合成ビューに基づいて計算することができる。他の実施形態では、視点における光情報を近似するキャンバスビューの計算は、1つのピクセルよりも大きなキャンバスビューの領域に基づく。例えば、外側を向いたカメラの1つのリングの場合等のカメラの単一平面を使用する構成では、光情報近似は、キャンバスビュー内のピクセルの1ピクセル幅の列に基づくことができる。キャンバスビュー領域及びキャンバスビューの生成に使用された関連する光情報のそれぞれについて、合成ビューを計算することができる。幾つかの実施態様では、1つのピクセル又はピクセル列よりも大きな領域を使用して、キャンバスビュー生成システム110への計算負荷を低減する。例えば、使用する領域が少ない場合、各領域がその領域に一意の合成ビューの計算を必要とし得るため、計算する必要がある合成ビューの数を低減することができる。例えば、キャンバスビューの領域は、正方形領域、1ピクセルよりも広い列領域、又はキャンバスビュー内のピクセルの任意の他の適切な一部とすることができる。必要な全ての合成ビューが計算されると、各合成ビューの特定の領域を抽出し結合して、視点における光情報を近似するキャンバスビューを形成することができる。
【0080】
図10は、幾つかの実施形態による、複数の物体及び画像捕捉システム例を示す線図である。
図1000は、原点305、左側視点402、右側視点404、瞳孔間距離410、カメラ310〜317、合成カメラ425及び430、視線440及び445、角度1020が関連付けられた物体1005、並びに角度1025が関連付けられた別の物体1010を含む。幾つかの実施形態では、物体1005及び1025は、シーン内に位置する物理的な物体であるが、物体1005及び1025は、シーン内のゼロ視差距離又はシーン内の任意の他のポイントにあることもできる。
【0081】
図1000は、画像捕捉システム105が、複数の物体1005及び1025を含むシーンを捕捉するシーン例を表す。クライアントVRデバイス115でこのシーンを再現するために、キャンバスビュー生成システム110は、ユーザの左眼及び右眼に表示されることを意図されるキャンバスビューを生成することができる。各キャンバスビューは、クライアントVRデバイス115のユーザの左眼及び右眼に対応する2組の視点における光情報を近似することができる。左側視点402及び右側視点404は、キャンバスビューが計算される左側の組の視点及び右側の組の視点の視点例を表すことができる。この実施形態では、左側視点402及び右側視点404は、瞳孔間距離410により隔てられる。左側視点402又は右側視点404等の視点における光情報を近似するために、光情報近似モジュール260は、その視点における関連する光情報を捕捉するカメラビュー及び合成ビュー内の特定の領域から、キャンバスビューを組み立てることができる。
【0082】
図10の実施形態では、各カメラ310〜317は画定された視野を有し、カメラのいずれも、シーンの光情報の全てを完全に捕捉するように構成されず、例えば、カメラ310〜317は、物体1005及び物体1010の両方からの光情報を捕捉することができない。合成カメラ425及び430からの合成ビュー等の合成ビューを生成して、カメラ310〜317により直接捕捉されない特定の光情報を捕捉することができる。しかしながら、この目的で生成される個々の合成ビューは、視点における光情報を近似するキャンバスビューの生成に必要な光情報の全てを捕捉するわけではない。
【0083】
幾つかの実施形態では、各カメラ310〜317又は合成カメラ425及び430は、適切なキャンバスビューの生成に必要な光情報の一部を捕捉することができる。例えば、物体1005に光情報の特定のポイントを関連付けることができる。この実施形態では、合成カメラ425は、光情報、例えば、合成カメラ425及び左側視点402の両方に交わる物体1005からの視線440で示される物体1005から左側視点402に移動する光線についての情報を含む合成ビューを生成する。物体1005から右側視点404に移動する光線についての情報も同様に、視線445と交わるため、合成カメラ430により捕捉することができる。関連する光線についての光情報を含む合成ビュー内の厳密なピクセル又は領域の位置は、例えば、三角法を使用して計算することができる。幾つかの実施形態では、物体1005と左側視点402との間の光線についての情報を捕捉する合成カメラ425の合成ビュー内のピクセルは、視野及び合成ビューの解像度、合成カメラ425及び左側視点402に対する視線440の角度、並びに合成カメラ425及び左側視点402の相対位置に基づいて計算される。
【0084】
図11は、幾つかの実施形態によるキャンバスビュー例を示す線図である。例えば、
図11のキャンバスビュー1100は、
図10に示されるカメラ310〜317により捕捉される一組の原カメラビューに基づいて生成されたキャンバスビュー例を表すことができる。キャンバスビュー1100は、視点における光情報を近似するキャンバスビュー例であり、特に、キャンバスビュー1100は、それぞれ角度1020及び1025が関連付けられた2つの物体1005及び1010を含む。
【0085】
例えば、キャンバスビュー1100においてφ1020及びφ1025が関連付けられた領域は、
図10のシーンにおける物体1005及び1010についての光情報を近似することができる。キャンバスビュー1100の関連付けられた領域のそれぞれは、適切な合成カメラの合成ビューからの光情報に基づいて生成することができる。例えば、φ1020が関連付けられた領域は、合成カメラ425の特定の領域から生成することができる。
【0086】
図12は、実施形態による、物体のビューに対する瞳孔間距離を変更する効果を示す線図である。
図1200は、原点305、第1の視点1202、第2の視点1204、第1及び第2の瞳孔間距離1205及び1210、物体1215、第1の合成カメラ1220、第2の合成カメラ1225、第1の合成ビュー1230、第2の合成ビュー1235、合成ビュー内の第1の選択領域1240、並びに合成ビュー内の第2の選択領域1245を含む。
【0087】
幾つかの実施形態では、瞳孔間距離は、キャンバスビューが生成される視点の位置を決定する。例えば、第1の瞳孔間距離1205及び第2の瞳孔間距離1210は、キャンバスビュー生成の視点の位置を通知するのに使用される2つの瞳孔間距離とすることができる。第1の視点1202には第1の瞳孔間距離1205を関連付けることができ、同様に、第2の視点1204には第2の瞳孔間距離1210を関連付けることができる。同様に、異なる視点は、視点における光情報を近似するために異なる光情報を必要とすることができ、したがって、異なる合成ビューを計算する必要があることができる。
【0088】
第1の合成カメラ1220及び第2の合成カメラ1225の位置等の合成カメラ位置は、幾つかの要因に基づいて計算することができる。例えば、第1の合成カメラ1220は、第1の合成カメラが物体1215から第1の視点1202に移動する光線と交わるように位置決めされ、関連する光情報を捕捉するように向けられた場合、第1の視点1202から見た物体1215についての光情報を捕捉することができる。同様に、第2の合成カメラ1225は、第2の視点1204からの物体1215についての光情報を捕捉するように位置決めされる。第1の視点1202及び第2の視点1204の異なる位置に起因して、例えば、異なる瞳孔間距離の選択に基づいて、第1の合成カメラ1220及び第2の合成カメラ1225は両方とも、物体1215についての光情報を捕捉するが、視点位置に応じて異なる位置から捕捉する。
【0089】
さらに、キャンバスビューの特定の視点についての関連する光情報を捕捉する多くの可能な合成カメラの位置及び向き、例えば、捕捉される1つ又は複数の光線に沿った各合成カメラ位置がある。第1の合成カメラ1220の位置及び向きはさらに、合成ビューの計算のし易さ、画像捕捉システム105の他の合成カメラ位置若しくはカメラ位置との一貫性等の要因に基づいて又は任意の他の適切な理由に基づいて選ぶことができる。例えば、各合成カメラは、画像捕捉システム105に搭載された実際のカメラと一貫して維持するように外側に直接向けられたリング303上の選択された位置を有することができる。同様に、合成カメラ位置は、計算のし易さに基づいて選ぶことができ、例えば、近傍の既存のカメラビューに最も近い合成カメラ位置を選ぶことができる。
【0090】
合成カメラ位置が決定されると、合成ビュー内のどのピクセル又は領域が関連する光情報を含むかの計算は、様々な要因に基づくことができる。合成ビューに対する所望の光情報の角度、カメラビューの視野及びレンズ歪み、並びにカメラビューを捕捉するカメラの位置は全て、合成ビュー内のどの領域が現在の視点での関連する光情報を含むかに影響することができる。例えば、物体1215の位置、第1の視点1202、及び第1の合成カメラ1220の向きは、所望の光情報を含む第1の合成カメラビュー1230の第1の選択領域1240を生成することができる。この例では、第1の合成領域1240の位置は、所望の光情報の角度が第1の合成カメラビュー1220の視野の右縁部に近いため、第1の合成カメラビュー1230の右縁部に近い。同様に、第2の視点1204に対する物体1215の位置及び第2の合成カメラ1225の向きも、第2の合成カメラビュー1235のどの領域が所望の光情報を含むかを決定する。
図1200の例では、第2の合成カメラビュー1235内の第2の選択領域1245は、所望の光情報を含む。
【0091】
幾つかの実施形態では、三角法計算を適用して、合成ビュー内の特定の領域の位置を特定する。
図13は、一実施形態による、カメラビューに基づいてキャンバスビューを計算するプロセス例を示す線図である。
図1300は、原カメラビュー1305、合成ビュー1310、キャンバスビュー1315、キャンバスビューの領域1316、合成ビューマッピング1320、及びキャンバスビュー計算1325を含む。
【0092】
図13の実施形態では、原カメラビュー1305は、キャンバスビュー生成システム110がキャンバスビューの計算に使用する、画像捕捉システム105により捕捉された一組のカメラビューとすることができる。例えば、原カメラビュー1305は、重複する視野を有するカメラビューを含むことができ、一組の原カメラビュー1305をブレンドしてキャンバスビューにすることができる。キャンバスビュー1316の領域を計算するために、キャンバスビュー1316の領域についての光情報を捕捉する対応する合成ビュー1310は、合成ビュー計算1320を使用して原カメラビュー1305から計算することができる。幾つかの実施形態では、合成ビュー計算1310は、原カメラビュー1305及び光学フローに基づいて新規ビュー生成モジュール240により実行される。必要とされる合成カメラの合成ビュー1310が計算されると、キャンバスビュー計算1325を使用して、キャンバスビューの領域1316を計算することができる。上述したように、キャンバスビュー1316の領域についての光情報を含む合成ビュー1310内の領域の位置は、合成カメラの相対位置及びキャンバスビュー1315の関連付けられた視点に基づいて、三角法により計算することができる。
【0093】
幾つかの実施形態では、
図13のプロセスは、全ての領域が計算されるまで、キャンバスビュー1315の各領域に対して順次繰り返される。しかしながら、他の実施態様では、他の計算プロセスを使用して、キャンバスビューを生成することができ、例えば、一定の組の合成ビューを計算することができ、又は必要な合成ビューは、キャンバスビュー1315が組み立てられる前、一度に特定され計算される。実用的には、
図13のプロセスは、まず、ピクセルを原ビュー1305から一組の合成ビュー1310にマッピングし、次に、ピクセルを一組の合成ビュー1310からキャンバスビュー1315にマッピングする、原カメラビュー1405のピクセル強度情報を変更する2つのステップ又はマッピングを含む。マッピングは、別のビュー内の特定のピクセルに基づいて、あるビュー内のピクセルを生成するピクセルレベルの処理とすることができる。
図13のプロセスは効果的であるが、キャンバスビュー1315において使用されない合成ビュー1310の多くの余分な領域の計算、例えば、最終的なキャンバスビューに組み込まれない合成ビュー内のピクセルの計算に繋がり得る。合成ビュー内のどの領域が関連する光情報を含むかを計算する前に、完全な合成ビュー1310が生成されるため、この方法は、追加の処理オーバーヘッドをキャンバスビュー1315の計算に導入し得る。
【0094】
図14は、一実施形態による、カメラビューに基づいてキャンバスビューを計算する第2のプロセス例を示す線図である。
図1400は、原カメラビュー1405、選択されたピクセル1406、合成ビュー1410、キャンバスビュー1415、合成ビューの領域1411、キャンバスビューの領域1416、合成ビューマッピング1425、キャンバスビューマッピング1430、リマッピングプロセス1435、及び結合マッピング1440を含む。
図14のプロセスは、カメラビュー内のピクセルに対して実行される計算ステップの数を低減するとともに、最終的にキャンバスビュー1410に組み込まれない不必要なピクセルの計算を低減することにより、
図13のプロセスと比較してキャンバスビュー1410の計算に必要な処理力を低減することができる。
【0095】
図14の実施態様では、キャンバスビュー1415の領域を計算するために、結合マッピング1440を原カメラビュー1405に適用して、原カメラビュー1405の関連するピクセルからキャンバスビュー1315の領域を直接生成する。幾つかの実施形態では、結合マッピング1440は、キャンバスビュー1415内の各ピクセル又は領域を、例えば、選択されたピクセル1406により表される原カメラビュー1405内の1つ又は複数のピクセル又は領域にマッピングするベクトル場である。幾つかの実施態様では、原カメラビュー1405内の複数のピクセルをキャンバスビュー内の1つのピクセルにマッピングすることができ、例えば、キャンバスビュー1415内のピクセルに、原カメラビュー1405の第1のカメラビュー内のピクセルの75%と、原カメラビューの第2のカメラビュー内の別のピクセルの25%とのブレンドを関連付けることができる。結合マッピング1440により、1つのマッピング動作で、原カメラビュー1405内の選択されたピクセル1406のピクセル強度値から、キャンバスビュー1415のピクセル強度値を計算することができる。
【0096】
幾つかの実施態様では、結合マッピング1440は、キャンバスビューマッピング1430及び合成ビューマッピング1425に基づいて生成される。キャンバスビューマッピング1430は、キャンバスビューの領域1416を合成ビューの対応する領域1411を関連付けるマッピングとすることができ、合成ビューマッピング1425は、原カメラビュー1405内のピクセルを合成ビューの領域1411に関連付けるマッピングとすることができる。合成ビューマッピング1425及びキャンバスビューマッピング1430は、
図12の合成ビュー計算1320及びキャンバスビュー計算1325と同様の技法により生成することができる。幾つかの実施形態では、合成ビューの領域は、ピクセルの垂直列であるが、合成ビューの領域は、ピクセルの高さの関数であることもでき、シフトされたピクセル列を生成できる。
【0097】
上述したように、合成ビュー1410は、原カメラビュー1405及び原カメラビュー間で計算された光学フローに基づいて計算することができる。同様の技法を使用して、合成ビューマッピング1425を生成することができる。上述したように、合成ビュー1410又は合成ビューの領域1411の合成ビューマッピング1425は、新規ビュー生成モジュール240により生成することができる。幾つかの実施態様では、合成ビューマッピング1425は、合成ビュー1410のいかなるピクセル強度値も計算せずに行われる。同様に、キャンバスビューマッピング1430も、合成ビューの位置及び三角法を使用して生成され、キャンバスビューの領域に関連付けられた合成ビュー1411の正確な領域を特定することができる。
【0098】
キャンバスビューの領域1416のキャンバスビューマッピング1430及び合成ビューマッピング1425の計算後、リマッピングプロセス1430を使用して、キャンバスビューの領域1416の結合マッピング1440を生成することができる。次に、リマッピングプロセス1435をキャンバスビュー1415内の他の各領域に繰り返して、キャンバスビュー1415の各領域のマッピング情報を含む結合マッピング1440を生成することができる。幾つかの実施形態では、合成ビューマッピング1425及びキャンバスビューマッピング1430は、キャンバスビュー1415又は合成ビュー1410のいかなるピクセル強度値の計算も含まず、その理由は、各マッピングが、ピクセル位置を関連付けるが、それらの位置のピクセル強度値を変換又は計算しないベクトル場であるためである。
【0099】
リマッピングプロセス後、次に、結合マッピング1440を原カメラビュー1405に適用して、原カメラビュー1405内の選択されたピクセル1406に基づいてキャンバスビュー1415のピクセル強度情報を生成することができる。幾つかの実施形態では、キャンバスビュー1415のピクセル強度値は、合成ビュー1410のピクセル強度値の中間計算なしで、原カメラビュー1405内の選択されたピクセル1406のピクセル強度値から直接計算される。
【0100】
図15は、一実施形態による、カメラビューに基づいてキャンバスビューを計算するプロセスを示すフローチャートである。プロセス1500は、光情報近似システム260が、キャンバスビューを生成するカメラ画像を受信する(1505)とき、開始される。次に、光学フロー計算モジュール250は、受信した一組のカメラビュー内の隣接するカメラビュー間の光学フローを計算する(1515)。例えば、光学フロー計算モジュール250は、
図9に関連して説明したプロセス900等の反復プロセスに基づいて光学フローを計算することができる。次に、光情報近似モジュール260は、キャンバスビューを生成するためにどの合成ビューが必要であるかを判断し(1515)、次に、必要とされる合成ビュー内のどの特定のピクセル又は領域が、関連する光情報を捕捉するかを更に計算する(1520)。次に、例えば、新規ビュー生成モジュール260により、必要とされるピクセルと受信したカメラビューとの間のマッピングを計算する(1525)。次に、前に計算されたマッピングに基づいて、光情報近似モジュール260は、受信したカメラビューとキャンバスビューとの間の結合マッピングを生成する(1530)。最後に、光情報近似モジュール260によりキャンバスビューを生成する(1535)。
【0101】
結び
本発明の実施形態の上記説明は、例示を目的として提示され、網羅的である、すなわち、開示された厳密な形態に本発明を限定する意図はない。上記開示に鑑みて多くの変更及び変形が可能なことを当業者は理解することができる。
【0102】
この説明の幾つかの一部分は、情報に対する動作のアルゴリズム及び象徴的表現に関して本発明の実施形態を説明している。これらのアルゴリズム的な説明及び表現は、他の当業者に仕事の要旨を効率的に伝えるためにデータ処理分野の当業者により一般に使用されている。これらの動作は、機能的、計算的、又は論理的に説明されるが、コンピュータプログラム又は同等の電気回路、マイクロコード等により実施されることが理解される。さらに、時により、一般性を失わずに、これらの動作構成をモジュールと呼ぶことが好都合であることも証明されている。説明された動作及び動作に関連付けられたモジュールは、ソフトウェア、ファームウェア、ハードウェア、又はそれらの任意の組合せで実施し得る。
【0103】
本明細書に記載されるステップ、動作、又はプロセスはいずれも、単独で又は他のデバイスと組み合わせて、1つ又は複数のハードウェア又はソフトウェアモジュールを用いて実行又は実施し得る。一実施形態では、ソフトウェアモジュールは、コンピュータプログラムコードを含むコンピュータ可読媒体を含むコンピュータプログラム製品を用いて実施され、コンピュータプログラムコードは、コンピュータプロセッサにより実行されて、記載されるステップ、動作、又はプロセスのいずれか又は全てを実行することができる。
【0104】
本発明の実施形態は、本明細書における動作を実行する装置に関連することもできる。この装置は、求められる目的に向けて特に構築されてもよく、及び/又はコンピュータに記憶されるコンピュータプログラムにより選択的にアクティブ化又は再構成される汎用計算デバイスを含んでもよい。そのようなコンピュータプログラムは、コンピュータシステムバスに結合し得る非一時的な有形のコンピュータ可読記憶媒体又は電子命令の記憶に適切な任意のタイプの媒体に記憶し得る。さらに、本明細書において参照される任意の計算システムは、1つのプロセッサを含んでもよく、又は計算能力を上げるように複数のプロセッサ設計を利用したアーキテクチャであってもよい。
【0105】
本発明の実施形態は、本明細書に記載される計算プロセスにより製造される製品に関することもできる。そのような製品は、計算プロセスから生じる情報を含み得、情報は、非一時的な有形のコンピュータ可読記憶媒体に記憶され、コンピュータプログラム製品の任意の実施形態又は本明細書に記載される他のデータ組合せを含み得る。
【0106】
最後に、本明細書において使用される言語は主に読みやすさ及び指示を目的として選択されており、本発明の趣旨を線引き又は制限するために選択されていない。したがって、本発明の範囲は、この詳細な説明により限定されず、正確に言えば、本明細書に基づく出願で発行される任意の請求項により限定されることが意図される。したがって、本発明の実施形態の開示は、本発明の範囲の限定ではなく例示であることが意図され、本発明の範囲は以下の特許請求の範囲に記載される。