添付の図面のうちの任意の1つまたは複数において、同じ参照番号を有するステップおよび/または特徴を参照する場合、これらのステップおよび/または特徴は本説明の目的のために、反対の意図が現れない限り、同じ機能または操作を有する。
本明細書で説明される構成は、ライブキャプチャおよびブロードキャストのために関心領域(ROI)110の周りにセットアップされた、図1に示されるようなカメラ120A〜120Xのネットワーク120とともに使用され得る。カメラ120A〜120Xのネットワークは、図1の例ではカメラ120のリングとして構成される。カメラ120A〜120Xは自由視点ビデオを生成するために使用可能な画像をキャプチャするのに適し、キャプチャされたビデオを処理部205に提供することができる任意の画像キャプチャ装置とすることができる。
図1は上方から示されており、この場合、マークされた関心領域(ROI)は、カメラネットワーク120によってキャプチャされ、仮想視点からの合成画像に含まれ得るようにオブジェクトまたはプレーヤが配置され得る、地表面上のエリアである。実際には、オブジェクトおよびプレーヤが関心ボリューム(VOI)と呼ぶことができる地上のボリューム内に配置される。スポーツ、劇場、ダンス、音楽、オペラ、または他のパフォーマンスなどの典型的なアクティビティの画像をキャプチャするために、関心ボリュームは、典型的には地面から2メートル以上上に広がる。VOIは固定された関心領域に対応してもよいし、移動する関心領域に対応してもよい。例えば、関心ボリュームは、スポーツプレーヤのような人、経時的に追跡され得るスポーツ用具(例えば、ボール)のようなオブジェクトに対応し得る。
以下で説明するように、カメラ120A〜120Xは、自由視点ビデオ(FVV)を生成するために使用される大型コンピュータビジョンシステムの一部とすることができる。FVVシステムはリアルタイムでビデオを処理し、低遅延での放送に適したシーンの仮想ビデオ映像を生成するために使用されてもよい。
図1のカメラ120A〜120Xは、単一のカメラリングでROI110を取り囲む。しかしながら、別の構成では、カメラが異なる高さにある複数のリングでROIを囲むことができる。
図1に見られるように、カメラ120A〜120Xは、ROIの周りに均等に広がっている。別の構成では、特定の位置により大きな密度のカメラが存在してもよいし、カメラの位置がランダムに広がっていてもよい。カメラの位置は例えば、ROIの物理的な環境のために制限され得る。
図1の構成例では、カメラ120A〜120Xが取り付けられ、固定されている。しかしながら、別の構成では、カメラ120A〜120Xがパン、チルト、およびズーム(PTZ)が可能であってもよく、ハンドヘルドであってもモバイルであってもよい。FVVを生成するために、キャプチャされたビデオから安定化されたフレームが必要とされ得る。あるいは、各フレームに関連する正確な較正データが必要とされ得る。較正データはカメラ120A〜120Xが(例えば、オペレータまたは何らかの種類の自動制御システムによって)制御されていることに起因する、またはカメラ120A〜120Xの機械的または光学的な不安定性に起因する、画像キャプチャの任意の時間的変動の影響を含むことができる。不安定性は振動、ハンドシェイク、または環境変化(例えば、温度、エア圧、風、群衆の動き(crowd motion)など)に起因するような遅いドリフトを含み得る。いくつかの構成では、センサ読み出しはFVVおよびフレーム安定化のための効率的な画像キャプチャを達成するために、拡張デジタルPTZを介してカスタマイズされてもよい。
一つの構成では、ROI110がスポーツ会場、アリーナ、またはスタジアムであってもよく、固定されたパン、チルト、ズーム(PTZ)を備えた多数のカメラ(例えば、数十または数百のカメラ)がプレイエリアに向けられている。そのようなプレイエリアは典型的には長方形、円形、又は楕円形であり、プレイエリアがカメラの1つ以上のリングによって囲まれることを可能にし、その結果、プレイエリア上の全てのポイントが、多数の視点から同時にキャプチャされる。いくつかの構成では、カメラの完全なリングは使用されず、むしろカメラ120A〜120Xのいくつかのサブセットが使用される。カメラ120A〜120Xのサブセットが使用される構成は、ある視点、例えば、アクションまたは関心対象を含む可能性が低い視点が、前もって不必要であることが知られている場合に有利であり得る。
一つの構成では、カメラ120A〜120Xを同期させて、同じ瞬間にフレームを取得することができる。
一つの構成において、カメラ120A〜120Xは異なる高さ(例えば、異なる高さで3リング内に)に大まかに設定されてもよく、ROI110内の遊技場の特定の予め選択された領域に焦点を当てるようにしてもよい。安定化のために使用される画像特徴は、線状フィールドマーキングであってもよい。
あるいは、ROIが演奏会場におけるステージであってもよい。ステージの場合、一組のカメラ(例えば、数十台のカメラ)を、演奏の前方の様々な方向からステージに向けることができる。ステージ構成では、課題がステージ上の風景または機器を変更することを含み得る。このようなステージ構成で使用される画像処理の特徴は、スポーツ会場よりも多く変化し得る。
カメラ120A〜120Xは、従来のライブ放送タイプのカメラ、デジタルビデオカメラ、監視カメラ、または携帯電話、タブレット、ウェブカメラ付きコンピュータなどの画像キャプチャ機能を有する他のデバイスとすることができる。説明した構成では、カメラ120A〜120Xが高精細度(HD)ビデオフレームをキャプチャする。しかしながら、記載された方法の全ては、SD、4K又は8Kのような他のフレームフォーマットに適合されてもよい。
図1の例では、ROI110は、カメラ120のリングによって囲まれた楕円形の競技場を有するアリーナ110である。図1の例では、アリーナ110が第1のチームのプレーヤ(例えば、150)、第2のチームのプレーヤ(例えば、160)およびボール140などのオブジェクトを含む。図1の例では、プレーヤ150は第1のオブジェクトによって表され、プレーヤ160は第2のオブジェクトによって表され、ボール140は第3のオブジェクトによって表される。
カメラ120Aなどのカメラによってキャプチャされたビデオフレームはネットワーク接続230を介して、ビデオ処理を実行するように構成された処理部205に利用可能にされる前に、カメラ120Aの近くで処理および一時記憶される。図2Aに見られるように、処理部205は、コンピュータモジュール201内に構成される。しかし、代替の構成では、別個のビデオ処理ユニットを使用して、説明した構成を実施することができる。
処理部205は、コントローラ180から受け取った制御入力に応じて、複数の異なる動作を実行することができる。例えば、コントローラ180は、・カメラネットワーク120によってカバーされるROIを変更するための、更新されたカメラPTZを設定すること、・カメラからの画像および/または他のデータの設定に基づいてカメラネットワーク120の較正パラメータを推定すること、・アリーナ110を取り囲むカメラ120A〜120Xからの、処理部205で利用可能なビデオストリームに基づいてシーン内の大気条件のモデルを生成または更新すること、・アリーナ110を取り囲むカメラ120A〜120Xからの、処理部205で利用可能なビデオストリームに基づいて、位置、向き、焦点距離などのようなカメラ較正パラメータに関して定義された特定のカメラ視点(または視点)190を有する仮想カメラからの画像を生成すること、を要求することができる。
画像データ、カメラネットワーク120の較正データ、大気状態のモデル等のデータは、例えばネットワーク接続221を介して、コントローラ180と処理部205との間で送信されてもよい。
仮想カメラ位置の入力は人間の仮想カメラオペレータによって生成することができ、ジョイスティック、マウス203(図2A参照)、または複数の入力構成要素を備える専用コントローラを含む同様のコントローラなどのユーザインターフェースデバイスからの入力に基づくことができる。あるいは、カメラ位置がゲームプレイの分析に基づいて完全に自動的に生成されてもよい。ハイブリッド制御構成も可能であり、それによって、カメラ位置決めのいくつかの態様では、人間のオペレータによって指示され、他の態様は自動化されたアルゴリズムによって指示される。例えば、粗位置決めが人間のオペレータによって実行され、安定化および経路平滑化を含む精密位置決めが自動アルゴリズムによって実行されるようにしてもよい。
処理部205は、FVV生成の任意の適切な方法を使用してフレーム合成を達成するように構成され得る。FVV生成の方法はシーンの完全な3Dジオメトリを再構成するモデルベースの方法と、深度推定を使用し、次いで画像および深度データからFVVを生成する深度ベースの方法と、FVVを直接形成するために画像データのある種の補間を使用する画像ベースの方法とを含む。また、処理部205は、カメラ位置制御信号を生成する装置が処理部205の実用的な限界を認識できるように、要求された視点に対するフレーム品質またはカメラカバレッジの完全性という形でフィードバックを提供するように構成されてもよい。処理部205によって生成されたビデオストリーム190は、その後、プロダクションデスク(図示せず)に提供されてもよい。プロダクションデスクにおいて、ビデオストリーム190は放送ビデオを形成するために一緒に編集され得る。あるいは、ビデオストリームは、編集されずにブロードキャストされてもよいし、または後のコンパイルのために記憶されてもよい。
一つの構成では、画像安定化が、カメラ120Aなどのカメラに直接接続された専用処理ユニット上で実行される。しかしながら、他の構成では、サーバ又は上述のビデオ処理部205のような他の非ローカル処理部上で解析が実行されてもよい。カメラ120Aまたはその近傍での解析の利点は、待ち時間が短縮される可能性があることである。カメラ較正パラメータの検出された変化は、複数の画像を含むビデオシーケンスの処理において、例えば、基準フレームに一致するようにビデオシーケンスフレームを変換するために、またはコンピュータビジョンシステムで使用されるカメラ較正パラメータを更新するために使用され得る。
図2Aおよび図2Bは、説明した様々な構成を実施することができる汎用コンピュータシステム200を示している。しかしながら、コンピュータシステム200は説明された方法を実施するために、図3および図8〜図10を参照して説明されるように、特定の技術的方法で構成されることが必要とされる。コンピュータシステム200は、アプリケーション233を介して、自由視点ビデオを合成し、シーンに対する仮想カメラの位置に基づいて大気条件を補償して、以前の解決策よりも現実的な仮想ビューを提供するように構成される。
図2Aに見られるように、コンピュータシステム200は、コンピュータモジュール201と、キーボード202、マウスポインタデバイス203、スキャナ226、カメラ227、およびマイクロフォン280などの入力デバイスと、プリンタ215、ディスプレイ・デバイス214、およびラウドスピーカ217を含む出力デバイスと、を含む。外部変復調器(モデム)トランシーバデバイス216は、接続221を介して通信ネットワーク220との間で通信するためにコンピュータモジュール201によって使用され得る。通信ネットワーク220は、インターネット、セルラ電気通信ネットワーク、またはプライベートWANなどの広域ネットワーク(WAN)とすることができる。接続221が電話回線である場合、モデム216は、従来の「ダイヤルアップ」モデムとすることができる。あるいは接続221が大容量(例えば、ケーブル)接続である場合、モデム216はブロードバンドモデムであってもよい。無線モデムはまた、通信ネットワーク220への無線接続のために使用されてもよい。カメラのネットワーク120は、ネットワーク220を介してモジュール201と通信することができる。あるいは、モジュール201がサーバ290などのリモートデバイスからネットワーク120によってキャプチャされたビデオフレームを受信することができる。
コンピュータモジュール201は、典型的には少なくとも1つのプロセッサユニット205と、メモリユニット206とを含む。例えば、メモリユニット206は、半導体のRAM(random access memory)及び半導体のROM(read only memory)を有することができる。また、コンピュータモジュール201は、ビデオディスプレイ214、スピーカ217、およびマイクロフォン280に結合するオーディオビデオインターフェース207、キーボード202、マウス203、スキャナ226、カメラ227、およびオプションとしてジョイスティックまたは他のヒューマンインターフェースデバイス(図示せず)に結合するI/Oインターフェース213、ならびに外部のモデム216およびプリンタ215のためのインターフェース208を含む、いくつかの入出力(I/O)インターフェースを含む。いくつかの実装形態では、モデム216がコンピュータモジュール201内に、例えばインターフェース208内に組み込まれてもよい。コンピュータモジュール201は、ローカルエリアネットワーク(LAN)として知られるローカルエリア通信ネットワーク222への接続223を介したコンピュータシステム200の結合を可能にするローカルネットワークインターフェース211も有する。図2Aに示すように、ローカル通信ネットワーク222は、通常、いわゆる「ファイアウォール」装置または同様の機能の装置を含む接続224を介して広域ネットワーク220に結合することもできる。ローカルネットワークインターフェース211はイーサネット(登録商標)サーキットカード、ブルートゥース(登録商標)無線構成、またはIEEE802.11無線構成を含むことができるが、インターフェース211については他の多くのタイプのインターフェースを実施することができる。
I/Oインターフェース208および213はシリアル接続およびパラレル接続のいずれかまたは両方を提供することができ、前者は、典型的にはユニバーサルシリアルバス(USB)規格に従って実装され、対応するUSBコネクタ(図示せず)を有する。記憶装置209が設けられており、記憶装209は典型的にはハードディスクドライブ(HDD)210を含む。フロッピー(登録商標)ディスクドライブ及び磁気テープドライブ(図示せず)のような他の記憶装置を使用することもできる。光ディスクドライブ212は、典型的にはデータの不揮発性ソースとして機能するように設けられる。光ディスク(例えば、CD−ROM、DVD、ブルーレイディスク(登録商標))、USB−RAM、ポータブルな外部ハードドライブ、およびフロッピーディスクなどのポータブルメモリデバイスを、システム200への適切なデータソースとして使用することができる。
コンピュータモジュール201のコンポーネント205〜213は、典型的には相互接続されたバス204を介して、当業者に知られているコンピュータシステム200の従来の動作モードをもたらす方法で通信する。例えば、プロセッサ205は、接続218を使用してシステムバス204に結合される。同様に、メモリ206および光ディスクドライブ212は、接続219によってシステムバス204に結合される。説明された構成を実行することができるコンピュータの例には、IBM−PCおよび互換機、Sun Sparcstations、Apple Mac(登録商標)、または同様のコンピュータシステムが含まれる。
シーンの仮想ビューを生成する方法はコンピュータシステム200を使用して実施することができ、ここで、説明する図3および図8〜図10のプロセスは、コンピュータシステム200内で実行可能な1つまたは複数のソフトウェアアプリケーションプログラム233として実施することができる。具体的には、本明細書で説明する方法のステップが、コンピュータシステム200内で実行されるソフトウェア233内の命令231(図2B参照)によって実施される。ソフトウェア命令231は、それぞれが1つまたは複数の特定のタスクを実行するための1つまたは複数のコードモジュールとして形成することができる。ソフトウェアはまた、2つの別個の部分に分割されてもよく、第1の部分および対応するコードモジュールは説明された方法を実行し、第2の部分および対応するコードモジュールは、第1の部分とユーザとの間のユーザインターフェースを管理する。
ソフトウェアは例えば、以下に記載される記憶装置を含むコンピュータ可読媒体に記憶されてもよい。ソフトウェアは、コンピュータ可読媒体からコンピュータシステム200にロードされ、次いで、コンピュータシステム200によって実行される。コンピュータ可読媒体に記録されたそのようなソフトウェアまたはコンピュータプログラムを有するコンピュータ可読媒体は、コンピュータプログラム製品である。コンピュータシステム200におけるコンピュータプログラム製品の使用は、好ましくは記載された方法を実施するための有利な装置をもたらす。
ソフトウェア233は、典型的にはHDD210またはメモリ206に格納される。ソフトウェアは、コンピュータ可読媒体からコンピュータシステム200にロードされ、コンピュータシステム200によって実行される。したがって、例えば、ソフトウェア233は光ディスクドライブ212によって読み取られる光学的に読み取り可能なディスク記憶媒体(例えば、CD−ROM)225に記憶されてもよい。そのようなソフトウェアまたはコンピュータプログラムが記録されたコンピュータ可読媒体は、コンピュータプログラム製品である。コンピュータシステム200におけるコンピュータプログラム製品の使用は、好ましくは記載された方法を実施するための装置をもたらす。
場合によってはアプリケーションプログラム233が1つまたは複数のCD−ROM225上で符号化されてユーザに供給され、対応するドライブ212を介して読み取られてもよいし、あるいはネットワーク220または222からユーザによって読み取られてもよい。さらに、ソフトウェアは、他のコンピュータ可読媒体からコンピュータシステム200にロードすることもできる。コンピュータ可読記憶媒体とは、実行および/または処理のために、記録された命令および/またはデータをコンピュータシステム200に提供する任意の一時的でない有形の記憶媒体を指す。そのような記憶媒体の例には、フロッピーディスク、磁気テープ、CD−ROM、DVD、ブルーレイ(登録商標)ディスク、ハードディスクドライブ、ROMまたは集積回路、USBメモリ、光磁気ディスク、またはPCMCIAカードなどのコンピュータ可読カードが含まれ、そのような機器がコンピュータモジュール201の内蔵または外付けであるかどうかにかかわらない。コンピュータモジュール201へのソフトウェア、アプリケーションプログラム、命令、および/またはデータの提供にも関与し得る一時的または非有形のコンピュータ可読伝送媒体の例には、無線または赤外線伝送チャネル、ならびに別のコンピュータまたはネットワーク化されたデバイスへのネットワーク接続、ならびに電子メール伝送およびウェブサイトなどに記録された情報を含むインターネットまたはイントラネットが含まれる。
アプリケーションプログラム233の第2の部分および上述の対応するコードモジュールは、ディスプレイ214上にレンダリングまたは表現される1つまたは複数のグラフィカルユーザインターフェース(GUI)を実装するために実行することができる。典型的にはキーボード202およびマウス203の操作を通じて、コンピュータシステム200およびアプリケーションのユーザは、機能的に適応可能な方法でインターフェースを操作して、GUIに関連付けられたアプリケーションに制御コマンドおよび/または入力を提供することができる。スピーカ217を介して出力される音声プロンプトおよびマイクロフォン280を介して入力されるユーザ音声コマンドを利用するオーディオインターフェースなど、他の形態の機能的に適応可能なユーザインターフェースを実装することもできる。
図2Bは、プロセッサ205および「メモリ」234の詳細な概略ブロック図である。メモリ234は、図2Aのコンピュータ部201がアクセス可能な全てのメモリ部(HDD209及び半導体メモリ206を含む)の論理集合体を表す。
コンピュータモジュール201が最初に電源投入されると、パワーオン自己テスト(POST)プログラム250が実行される。POSTプログラム250は、典型的には図2Aの半導体メモリ206のROM249に記憶されている。ソフトウェアを格納するROM249などのハードウェアデバイスは、ファームウェアと呼ばれることがある。POSTプログラム250はコンピュータモジュール201内のハードウェアを検査して、適切な機能を保証し、典型的には、正しい動作のために、プロセッサ205、メモリ234(209、206)、および、典型的にはROM249に記憶されている基本入出力システムソフトウェア(BIOS)モジュール251を検査する。POSTプログラム250が正常に実行されると、BIOS251は、図2Aのハードディスクドライブ210を起動する。ハードディスクドライブ210の起動により、ハードディスクドライブ210に常駐するブートストラップローダプログラム252がプロセッサ205を介して実行される。これにより、オペレーティングシステム253がRAMメモリ206にロードされ、オペレーティングシステム253が動作を開始する。オペレーティングシステム253は、プロセッサ管理、メモリ管理、デバイス管理、ストレージ管理、ソフトウェアアプリケーションインターフェース、および汎用ユーザインターフェースを含む様々な高レベル機能を実行するために、プロセッサ205によって実行可能なシステムレベルアプリケーションである。
オペレーティングシステム253は、メモリ234(209、206)を管理して、コンピュータモジュール201上で実行される各プロセスまたはアプリケーションが別のプロセスに割り当てられたメモリと衝突することなく実行するのに十分なメモリを有することを保証する。さらに、図2Aのシステム200で利用可能な異なるタイプのメモリは各プロセスが効果的に実行できるように、適切に使用されなければならない。したがって、集約されたメモリ234は、メモリの特定のセグメントがどのように割り振られるかを示すことを意図するものではなく(特に断らない限り)、むしろ、コンピュータシステム200によってアクセス可能なメモリの一般的なビューおよびそのようなものがどのように使用されるかを提供することを意図するものである。
図2Bに示すように、プロセッサ205は、制御ユニット239と、算術論理ユニット(ALU)240と、キャッシュメモリと呼ばれることもあるローカルまたは内部メモリ248とを含むいくつかの機能モジュールを含む。キャッシュメモリ248は、典型的にはレジスタセクション内にいくつかの記憶レジスタ244〜246を含む。1つ以上の内部バス241は、これらの機能モジュールを機能的に相互接続する。プロセッサ205は、通常、接続218を使用してシステムバス204を介して外部装置と通信するための1つまたは複数のインターフェース242も有する。メモリ234は、接続219を使用してバス204に結合される。
アプリケーションプログラム233は、条件付き分岐およびループ命令を含むことができる一連の命令231を含む。プログラム233は、プログラム233の実行に使用されるデータ232を含むこともできる。命令231およびデータ232は、それぞれメモリロケーション228、229、230および235、236、237に記憶される。命令231とメモリロケーション228〜230の相対的なサイズに応じて、メモリロケーション230に示される命令によって示されるように、特定の命令を単一のメモリロケーションに記憶することができる。あるいは、命令がメモリロケーション228および229に示される命令セグメントによって示されるように、各々が別個のメモリロケーションに記憶されるいくつかの部分にセグメント化されてもよい。
一般に、プロセッサ205には、その中で実行される命令のセットが与えられる。プロセッサ205は次の入力を待ち、プロセッサ205は、別の命令セットを実行することによって、この入力に反応する。各入力は、入力装置202、203のうちの1つまたは複数によって生成されたデータ、ネットワーク220、202のうちの1つを介して外部ソースから受信されたデータ、記憶装置206、209のうちの1つから取り出されたデータ、または対応する読取装置212に挿入された記憶媒体225から取り出されたデータを含む、いくつかのソースのうちの1つまたは複数から提供することができ、これらすべてが図2Aに示されている。命令のセットの実行は、場合によってはデータの出力をもたらし得る。実行は、データまたは変数をメモリ234に記憶することも含むことができる。
説明した構成は、メモリ234内の対応するメモリロケーション255、256、257に記憶される入力変数254を使用する。上述の構成は出力変数261を生成し、これは、メモリ234の対応するメモリロケーション262、263、264に記憶される。中間変数258は、メモリロケーション259、260、266、267に記憶することができる。
図2Bのプロセッサ205を参照すると、レジスタ244、245、246、算術論理ユニット(ALU)240、および制御ユニット239は、プログラム233を構成する命令セット内のすべての命令に対して「フェッチ、デコード、および実行」サイクルを実行するのに必要なマイクロオペレーションのシーケンスを実行するために協働する。各フェッチ、デコード、および実行サイクルは以下の動作を含む。すなわち、
メモリロケーション228、229、230から命令231をフェッチまたは読み出すフェッチ動作、
制御ユニット239がどの命令がフェッチされたかを決定するデコード動作、および、
制御ユニット239および/またはALU240が命令を実行する実行動作、を含む。
その後、次の命令のためのさらなるフェッチ、デコード、および実行サイクルが実行され得る。同様に、制御ユニット239がメモリロケーション232に値を保存または書き込む保存サイクルを実行することができる。
図3および図8〜図10のプロセスにおける各ステップまたはサブプロセスは、プログラム233の1つまたは複数のセグメントに関連付けられ、プロセッサ205内のレジスタセクション244、245、247、ALU240、および制御ユニット239が協働して、プログラム233の注目されたセグメントに対する命令セット内のすべての命令についてフェッチ、デコード、および実行サイクルを実行することによって実行される。
説明した方法は代替的に、図3および図8〜図10の機能またはサブ機能を実行する1つまたは複数の集積回路などの専用ハードウェアで実施することができる。そのような専用ハードウェアは、グラフィックプロセッサ、デジタル信号プロセッサ、または1つまたは複数のマイクロプロセッサおよび関連するメモリを含むことができる。
FVVは、空間内で動かされ、異なる姿勢および位置にて一連の画像をキャプチャする単一のカメラを使用して、建物または固定オブジェクトなどの非活動的な(コンスタントな)シーンについて生成され得る。一方、スポーツのような動的な(アクティブな)シーンのためのFVVは一般に、カメラのネットワークを使用して行われる。
動的な場合には、カメラの較正されたネットワーク、すなわち、重要なパラメータが推定されたカメラのセットを使用することが一般的である。較正パラメータは外因性パラメータ(例えば、向きおよび姿勢)および内因性パラメータ(例えば、焦点距離、主点オフセットおよび軸スキュー)からなってもよい。カメラネットワーク較正のための技術は当技術分野で周知であり、市販のソリューションが利用可能である。これらの技法は、カスタムマーカがシーン内に配置されて較正中に撮像されるかどうかに応じて、マーカベースの技法とマーカレスの技法とに大別することができる。
カメラの較正パラメータは例えば、システム内の機械的、熱的、または光学的不安定性のために、経時的にドリフトすることがある。しかしながら、ネットワーク較正は、較正プロセスを間隔をおいて繰り返すことによって、またはカメラからの画像内容を安定化することによって維持され得る。例えば、単一のカメラに対する較正パラメータおよび/または画像内容のリアルタイム補正は、パッチベースの位置合わせ技法を使用して達成することができる。分析はリアルタイム性能を保証するために、カメラの背面にあるカスタムハードウェア上で実行されてもよい。これらの技法は、カメラネットワーク内の1組のカメラで使用されて、必要とされる較正精度がイベントのブロードキャストのための適切な時間フレームにわたって維持されることを保証することができる。
生成される仮想ビデオ画像の解像度は、カメラネットワーク120から取り込まれたビデオの解像度によって制限される。イベントが広いエリアで行われる場合、カメラはより高い解像度のFVVが生成されることを可能にするために、関心のある特定の領域に光学的にズームされてもよい。例えば、サッカーゲームではカメラ120A〜120Xがフィールドの終了のゴールの周りのペナルティエリアにズームされてもよく、野球ではカメラ120A〜120Xがベースのうちの1つにズームされてもよく、またはクリケットではそれらはウィケットの周りの領域をターゲットとしてもよい。FVVのために高解像度で複数のエリアをカバーするために、それぞれが特定の関心領域をカバーする複数のカメラネットワークを使用すること、またはイベントの関心のあるアクティビティを追跡するために時間にわたって領域を移動させることが必要であり得る。関心領域の移動は例えば関心のあるプレーヤを追跡する連続的なものであってもよいし、又は離散的なものであってもよく、例えばプレー中断中の関心領域の変化であってもよい。
カメラ120のネットワークは、FVVの目的のためにある体積の空間のカバレージを与える画像をキャプチャすると考えることができる。カバレージは所望の範囲の合成視点からオブジェクトを正確にレンダリングすることができる空間内のボリュームであり、関心ボリューム(VOI)またはVOIの集合よりも大きくなければならない。カメラの設定によって与えられるカバレージは、所望の合成視点の設定およびオブジェクトのジオメトリの複雑な関数であってもよい。この依存性の理由は、任意の仮想カメラ構成から見えるカバレージ領域内のオブジェクトの全ての部分が、仮想ビューが合成されることを可能にするのに十分な数のカメラによって撮像されなければならないことである。VOI内のオブジェクトのいくつかの部分はオブジェクトが仮想カメラから見えるにもかかわらず、オクルージョン(occlusion)のために、例えば凹部のために、合成するのが難しい場合がある。
次に、カメラ120A〜Xの較正されたネットワークの大気条件によって影響されるイベントの没入型で現実的な自由視点ビデオを生成する方法300について、図3のプロセス300を参照して説明する。本開示の文脈では、大気条件とは、フォグ、ヘイズ、ミスト、雲、雨、スモッグ(smog)、ハール(haar)、またはスモークなど、シーン内のオブジェクトの視認性に影響を及ぼす条件に関する。本開示に記載される例は、ヘイズに言及する。しかしながら、本明細書に記載された技術は、ミスト、フォグ、スモーク、及びシーンの可視性に影響を及ぼす他の大気条件にも等しく適用される。方法300は、3次元(3D)ジオメトリの再構成に基づくFVV生成に適している。しかしながら、方法300は例えば、深度マップからシーンの3Dジオメトリ記述に変換することによって、深度ベースのレンダリングに適合させることができる。
方法300は、典型的にはメモリ206に記憶され、プロセッサ205の実行下で制御される、アプリケーション233の1つまたは複数のモジュールとして実装される。
方法300は、図4Aおよび4Bを参照して説明される。図4Aおよび4Bは、それぞれ、カメラのネットワーク(ネットワーク120など)および仮想カメラによってキャプチャされた例示的なシーンを示す。図4Aは、物理的カメラ(401、402、および403)のネットワークの構成によってキャプチャされるシーン400を上からみた図を示す。シーン400はシーン110に対応し、カメラ401〜403はネットワーク120のカメラに対応する。シーン400は、2つのマークされたプレーヤ410および411と、前景および背景オブジェクトを含むことができるいくつかの他のオブジェクト412とを含む。3つの仮想視点または仮想カメラ(421、422、および423)も示されており、それらについてFVVのフレームを生成することができる。図4Aに示すように、仮想カメラは、カメラ401〜403のネットワークよりもシーン400の近くに(仮想カメラ421)、または、シーン400から遠くに(仮想カメラ423)、またはシーン400から同様の距離に(仮想カメラ422)存在し得る。他の構成では個々のネットワークカメラがシーン400から異なる距離に設定されてもよいが、図4Aの例ではカメラ401〜403が同様の距離に示されている。カメラ401〜403からプレーヤ410および411へのいくつかの光線が図4Aに示されており、これらの光線は、以下の方法300の態様を示すために使用される。
図4Bは、図4Aと同じセット、すなわちカメラ401〜403、プレーヤ410および411、オブジェクト412、シーン400b、ならびに仮想カメラ421、422、および423を有する構成450を示す。但し、図4Bは、キャプチャジオメトリの3次元的性質を示すために斜めから見たものである。典型的には、ネットワークカメラ401〜403は、少なくともFVVが行われているイベントの特定の部分の持続時間の間、固定されたままである。
方法300は、キャプチャステップ305で始まる。ステップ305では、画像データのセットがシーンのためにキャプチャされる。画像データは、カメラ120A〜120Xのうちの1つによって、カメラ120A〜120Xのサブセットによって、またはカメラ120A〜120Xのネットワーク全体によって、キャプチャされ得る。どのカメラから画像をキャプチャするかの決定は、ユーザ入力に基づいて行われても、または自動的に行われてもよく、決定はコントローラからカメラネットワークに送信され得る。好ましくは、完全なカメラ画像がキャプチャされる。完全な画像は、カメラから処理部205へ画像データを送信する際のネットワークトラフィックを低減するために、カメラネットワークの全解像度に対して圧縮またはダウンサンプリングされてもよい。いくつかの実施形態では、画像データが各カメラによってカバーされる完全な画像のキャプチャの一部から構成されてもよい。
方法300は、ステップ305から生成ステップ310に続く。ステップ310では、キャプチャされた画像を使用して、シーン内の大気条件のモデルを決定する。このモデルは、シーン内のオブジェクトの可視性に関する情報を提供する。ステップ310において、コントローラは、ヘイズの初期モデルが、キャプチャされた画像データに基づいて形成されることを要求する。ヘイズの初期モデルは、場合によっては幾何学的モデルと呼ばれる。適切なモデルはシーン放射輝度J(ヘイズがない場合の画素値)、大気光A、および透過マップtに基づいて、シーンIにおける測定画素値(すなわち、輝度、またはR、G、B、U、またはVなどの他の色チャネル値)を推定することによって、キャプチャされた画像に対するヘイズの影響を記述する。測定された画素値は、輝度または別の色チャネル値に関連する。画素値は、以下の式(1)を用いて求めることができる。
I=Jt+A(1−t) ...(1)
ヘイズが均一である場合、透過マップは、以下の式(2)を用いて表すことができる。
t=e−ρd ...(2)
式(2)において、ρは均一なヘイズの強度を定義する媒質消光係数(medium extinction coefficient)であり、dは、画素位置におけるシーンのオブジェクトからカメラまでの経路長である。ヘイズが不均一である場合、tは、シーン内のオブジェクトから画像を取り込むカメラまでの経路に沿った局所的な媒質の消光係数の積分など、より複雑な形態をとることができる。式(1)のモデルに基づいて、ヘイズモデルは大気全体の光A、および媒質の消光係数ρ(定数項であってもよいし、シーン内の3D位置の関数として定義されてもよい)によって定義される。記載された構成では一定のヘイズモデルが形成されるが、本明細書に記載された技法は3次元位置によって変化するモデルの場合に適用可能である。ステップ350を参照して以下に説明するように、ヘイズモデルは、カメラ(仮想カメラを含む)と、画素毎にカメラによって取り込まれた3次元オブジェクトとの間のヘイズ量を推定するために使用される。したがって、すべての画素におけるヘイズの推定値を提供することができる任意のヘイズモデルを、説明した方法の実施形態で使用することができる。
ヘイズモデル(すなわち、パラメータAおよびρ)を推定するための様々な技法が知られている。既知の技法は、単一画像ベースの技法、およびシーンの基準モデルに基づく技法を含む。例えば、単一の画像ベースの技法は複数の位置で、既知の外観(例えば、実質的に均一な緑の芝生)である既知のシーンジオメトリ(例えば、平坦なスポーツフィールド)を利用する。単一画像ベースの技法は、画像内のすべての関連する位置で既知の均一な外観に一致するシーン放射輝度(J)を生成するヘイズモデルパラメータ(Aおよびρ)を探索する。
ステレオペアのような大気条件をモデル化するために複数のカメラ画像を使用する他の技術が知られている。カメラ120A〜Xの較正されたネットワークおよびおおよその既知のシーンジオメトリ(例えば、平坦なスポーツフィールド)について、画像キャプチャの設定と一致するヘイズの正確なモデルを生成することができる。例えば、シーンジオメトリ内の様々な位置のセット(例えば、スポーツフィールド上の位置)を、複数のカメラ120A〜120Xの画像キャプチャ内の対応する位置にマッピングすることができる。次いで、最適化ルーチンを使用して、画像キャプチャ内の対応する位置で同じシーン放射輝度(J)を生成するヘイズモデルパラメータを見つけることができる。
方法300は、ステップ310から開始生成ステップ315に続く。ステップ315〜355において、カメラネットワーク120によって特定の時間にキャプチャされた複数のフレームに対してFVVが生成される。カメラは各フレームが各カメラによって同時に又はほぼ同時にサンプリングされるように、時間的に同期されると仮定される。画像キャプチャの同期は、ゲンロック(genlock)または他の何らかの同期技法を使用して達成することができる。いくつかの構成では、コントローラからの要求に応答して(例えば、ユーザがコントローラ180を操作することによって)FVVが生成されてもよい。
方法300は、ステップ315からキャプチャステップ320に続く。ステップ320では、画像をキャプチャするために使用されるカメラの集合によってキャプチャされた画像データが読み出され、ネットワークを介してモジュール101に送信される。いくつかの実施形態では、読み出される画像データが特定のカメラのセンサの画素群の一部分に対するものであってもよい。他の実施形態では、読み出しはプレーヤ又はスポーツ用具のような前景領域を含むと予想される選択された領域に対して行われ、一方、いくつかの背景領域はより低い率で読み出され、前のフレームから変更されないと仮定されてもよい。FVV生成に有用であり得る他のデータ(例えば、前景領域を規定するセグメンテーションデータ)もまた、ステップ320において送信され得る。
図5Aは、図4Aの401、402、または403などのカメラによって取り込まれたグレースケール例示画像500を示す。画像500は、線ハッチングで描画されている。画像500の場面は多数のプレーヤ及びボールを含み、ヘイズが存在しないスポーツイベントである。カメラがシーンから離れてセットアップされ、(図4Aおよび4Bのカメラ402と同様に)下方に傾けられるとき、プレーヤはシーンにおいて比較的小さい。図5Aの画像から切り取られた領域の拡大図が示されている(510)。拡大表示510は、シーンの特定のFVVレンダリングに関心のある複数のプレーヤを含む。しかしながら、実際のシーンでは、ヘイズが存在し、取り込まれた画像の品質に影響を及ぼすことがある。図5Bは、ヘイズの影響を受けた図5Aの同じグレースケール画像を、画像550として示す。視野内の特徴の視認性は距離と共に低下し、その結果、競技場の遠い側にいる競技者は特に見にくくなる。図5Bの画像から切り取られた領域の拡大図が示され(520)ている。図5Bでは、キャプチャされた画像に対するヘイズの影響がさらに示されている。
方法300は、ステップ320から形成ステップ330に続く。ステップ330において、シーンの3次元モデルまたは3次元シーンジオメトリが、現在のフレームにおけるシーンに対して生成される。シーンの3次元モデルは、典型的にはカメラ120A〜120Xによってキャプチャされた画像を使用して生成される。3次元モデルを生成するために使用される技術には、動きからの構造、シルエットからの形状、視体積交差法(visual hull)再構成、焦点または焦点外れからの形状、ステレオからの構造、および深度/視差推定のアルゴリズムが含まれる。シーンの3Dモデルは、深度キャプチャを有するカメラの場合に推定またはサンプリングされ得る1つまたは複数のカメラからのシーンの深度推定から生成され得る。いくつかの構成では、シーンの現在のヘイズモデルと、シーンジオメトリおよびカメラ較正データに関する情報とを使用して、3Dモデルを形成する前に画像からヘイズの影響を除去することができる。現在のヘイズモデルを使用することは、3Dモデルの生成がヘイズの存在下ではあまり正確でない可能性があるという点で有利であり得る。ヘイズは、ステップ310で推定されたヘイズモデルおよびヘイズモデルパラメータ(Aおよびρ)を使用して除去することができる。説明された構成はシーン放射輝度Jを決定することに関連しており、シーン放射輝度Jは、ヘイズが除去されたシーンの外観である。ヘイズモデルの式(1)を変形することによって、Jは、以下の式を使用して決定することができる。
J=(I−A+At)/t ...(3)
式(3)において、式(2)に示すようにtを決定するために使用される深さdは、前のフレームからの深度マップ(depth map)、または接地面などの既知のまたは仮定されたジオメトリに基づく深度マップを使用して推定され得る。深度マップは、キャプチャされたカメラ画像毎に生成されてもよい。深度マップは、キャプチャされた画像の各画素についての深度推定値を含む。深度推定値は、カメラ位置と、現在のフレーム内のその画素でキャプチャされたシーンの3Dジオメトリの点の位置とを比較することによって決定され得る。図6Aは、図5Aおよび5Bの図示されたキャプチャされた画像500および550に対応する例示的な深度マップ600を示す。画像500の場面の深さは、図6Aの例では50メートルから200メートルの範囲である。近くのゴールポスト以外では、詳細な3Dジオメトリが深度マップ600ではほとんど見えない。画像の底部からより遠い画素についてシーンまでの距離が増加する一般的な傾向が注目され、この増加する距離は、図5Aと比較して図5Bにおいて増加したヘイズの理由である。いくつかの構成では、例えば、制限されたアクションが発生する場合、またはシーンの注目領域内のオブジェクトが比較的静止している場合に、ステップ315とステップ360との間のループのいくつかの反復においてステップ330が省略されてもよい。いくつかの構成では、既存のモデル、例えば、ループの開始時に生成されたモデル、またはループのいくつかの反復ごとに生成されたモデルを再使用することができる。
方法300は、ステップ330から設定ステップ335に続く。ステップ335において、シーンに対して仮想カメラが定義される。これにより、現フレームの仮想カメラの仮想視点が設定される。この視点は、コントローラ180から受信され、上述したように手動で又は自動的に選択されてもよい。視点は、仮想カメラの外部パラメータ(位置および向き)および固有パラメータ(焦点距離、センサのジオメトリ、主点など)を定義する仮想カメラの較正データの設定からなる。
方法300は、ステップ335から生成ステップ340に続く。ステップ340において、仮想深度マップが生成される。仮想深度マップは、現在のフレームにおける仮想視点に基づくシーンの仮想画像の画素に対応する。仮想深度マップは、仮想カメラ位置と、現在のフレーム内のその画素で撮像されたシーンの3Dジオメトリの点の位置とを比較することによって決定される、画像の各画素についての深度推定を含む。ステップ340は、以下で図8に関して詳細に説明する方法800に従って実行することができる。不均一なヘイズが仮定される場合、決定された仮想深度マップは、単に深度ではなく、仮想カメラと3Dジオメトリとの間の経路にわたって統合された媒質消光係数をさらに含むことができる。例えば、ヘイズモデルはボクセルの3次元グリッドを含むことができ、各ボクセルは、ヘイズの量または同等の媒質消光係数に関連付けられる。ヘイズモデルは、仮想カメラ内の各画素について、仮想カメラと3Dジオメトリとの間の各ボクセルのヘイズまたは媒質消光を合計することによって、仮想カメラと3Dジオメトリとの間の経路にわたって統合することができる。統合された媒質消光係数を生成することは、計算的により高価であるが、方法300がシーン内の不均一なヘイズを処理することを可能にする。
図6Bは、図5Bのシーンの一部の仮想深度マップ620を示す。図6Bの例では、仮想カメラがフィールドの遠端にあるゴールエリアのエッジ付近のプレーヤに近い。ほとんどのプレーヤまでの距離は40メートル未満である。ヘイズ又はフォグの視覚効果がカメラからの距離と共に変化するので、図6Aに示されるキャプチャ深度マップ600において見えるよりも多くの特徴が仮想深度マップ620において見える。
方法300は、ステップ340から生成ステップ345に続く。ステップ345で、1つまたは複数のキャプチャ深度マップが生成される。各キャプチャ深度マップは、現在のフレームにおける仮想視点に基づいたシーンの仮想画像の画素と、カメラネットワークの物理カメラ(120A〜120Xまたは401〜403)のうちの1つによってキャプチャされた画素に対応する。所与の物理的カメラについてのキャプチャ深度マップは、仮想画像の各画素についての深度推定値を含む。シーンの仮想画像の所与の画素に対応する深度推定値は、実際のカメラ位置と、仮想カメラ内のその画素で撮像されたシーンの3Dジオメトリの点の位置とを比較することによって計算することができる。ステップ345は、以下の図8に関して詳細に説明する方法800に従って、各カメラのキャプチャについて実行することができる。ステップ340と同様に、不均一なヘイズが仮定される場合、決定されたキャプチャ深度マップは、単に深度ではなく、仮想カメラと3Dジオメトリとの間の経路にわたる統合された媒質消光係数を含むことができる。したがって、一様でないヘイズを考慮することは計算的により高価であるが、方法300がシーン内の一様でないヘイズを処理することを可能にし、潜在的に、より正確なまたは現実的な仮想カメラ画像につながる。
図6Cは、図5Aのシーンのためのキャプチャ深度マップ640を示す。図6Cの例では、現実のカメラが遠くに離れている一方で、仮想カメラは視野の遠端のゴールエリアのエッジ近くのプレーヤに近い。したがって、キャプチャされた深度マップ640の視野は、図6Aに示す深度マップ600とは全く異なる。シーン内の全てのコンテンツまでの距離は100mよりも大きく、特に、プレーヤは、図6Bの仮想深度マップ620よりも非常に長い距離に存在する。
方法300は、ステップ345から作成ステップ350に続く。ステップ350において、仮想カメラからの仮想画像又はFVV画像は、1つ以上のキャプチャされた画像の画像データからの画素を3Dモデル上にレンダリングすることによって、ヘイズを伴って生成される。画像データからの画素は、ヘイズモデル、仮想深度マップ、1つ以上のキャプチャ深度マップ、およびカメラ較正データを考慮してレンダリングされる。ステップ350の動作はキャプチャされた画像と仮想画像との間のヘイズを介した距離の差を補償しながら、キャプチャされた画像からの画素を3Dモデル上に効果的にレンダリングすることを含む。したがって、ステップ350は、仮想カメラの視点に対応するキャプチャされた画像の画素を調整することによって、仮想カメラの視点からシーンをレンダリングするように動作する。調整は、ステップ330のシーンの3次元モデル、シーンに対する複数のカメラの位置(ステップ340および345の深度マップ)、仮想カメラの視点、およびステップ310からの大気条件の幾何学的モデルに基づいて行われる。さらに、調整は、レンダリングのためのヘイズモデルを考慮する度合いを示すユーザ命令に基づいて行われる。ステップ350は、図9の方法900を参照して以下でさらに詳細に説明される。
ステップ315〜350は、一組のキャプチャされたカメラ画像を用いて精度および効率を改善するように意図された方法で、FVV画像を生成するように動作する。生成された画像の精度は、仮想カメラのポーズおよび他のカメラパラメータに従ってシーン内に配置された実カメラによって生成された画像に対する生成された仮想カメラ画像の類似性の観点で定義することができる。ヘイズの差を補償することによって、物理的カメラを使用して同じ視点から取り込まれた画像に視覚的に類似する仮想カメラ画像を生成することができる。
図7A〜7Cに、図4、図5及び図6に関して説明した例に対応する生成されたFVV画像を図に示す。図7Aは、シーン400にヘイズがないときに図4Aの仮想カメラ421に対して生成されたグレースケール画像700を示す。この場合、FVVは、図5Aに示される画像500のようなキャプチャされた画像から生成される。
一方、ヘイズが存在する場合、キャプチャされた画像は、図5Bに示す画像550のように見える。ステップ350でヘイズモデルが考慮されない場合、生成されたFVV画像は図7Cの例示的な画像740に示されるように、実際のシーンよりもヘイズの影響をより強く受けるように見える。シャツ上に白いストライプを有する3人のプレーヤのように、カメラからかなり異なる距離にあるオブジェクトが同様のレベルのヘイズを有するように見えることがあり、これは非現実的に見える。カメラに近いオブジェクトは7番のシャツ(図7Aおよび7Bでは見えるが、図7Cでは見えない)を有する右側のプレーヤのように、ある距離にあるオブジェクトよりもヘイズの影響をより受けやすいように見えることがある。さらに、仮想カメラがシーン内を移動するとき、ヘイズレベルはシーン内のオブジェクト上で一定に見えてしまい、生成された画像のリアリズムをさらに低減し、仮想ビデオ映像を見ている視聴者の体験を没入感のないものにする。
図7Bは、図5Bに示すようなヘイズのあるシーンの画像に対してステップ315〜350を実行することによって生成される画像720を示す。画像720は、近くのオブジェクトが遠くのオブジェクトよりもヘイズの影響をはるかに受けにくく、ヘイズがシーン内の現在のグローバルなヘイズモデルと一致するという点で、図7Cよりもはるかに高いレベルの視覚現実感を有する。また、ステップ315〜350によって実行される出力は、仮想カメラがシーン内を通って移動するときに一貫性があると予想され、FVVの視聴者にとってより没入感のある現実的な体験となる。
方法300は、ステップ350から更新ステップ355に続く。ステップ355において、上記で形成されたヘイズモデルは、ステップ315でキャプチャされた最近のフレーム画像データに基づいて更新される。更新は、別個のプロセッサ、例えば補助プロセッサまたはサーバプロセッサ(図2Aには図示せず)上で実行されてもよく、完了するのに複数のフレームを要してもよい。ステップ355は、更新されたキャプチャされた画像を用いて新しいモデルを形成するために、ステップ310に関して上述した技法を使用することができる。新しいモデルは現在のモデルを置き換えるために使用されてもよく、または更新されたモデルからのパラメータとブレンドされて、経時的により安定したモデルを形成してもよい。いくつかの実装形態ではステップ355が省略されてもよく、または例えば、ある回数の反復の後、所与の時間隔で、またはパラメータの変化のレベルに基づいて、断続的に実装されてもよい。例えば、ヘイズモデルは、毎秒、または霧のタイプ、気象条件(風速など)などに依存する他の何らかの更新速度で更新されてもよい。
方法300は、ステップ355からチェックステップ360に続く。ステップ360は、自由視点ビデオを生成するために処理すべきキャプチャされたビデオのフレームがさらにあるかどうかをチェックする。さらにフレームがある場合(ステップ360で「Yes」)、方法300はステップ315に戻る。そうでない場合、ステップ360は「いいえ」を返す。生成されたフレームは補償されたフォグを含むユーザのための自由視点ビデオ映像を(例えば、ディスプレイ214を介して)再生するために使用される。ユーザの視聴のために仮想ビデオフレームを再生すると、方法300は終了する。
したがって、方法300の動作は仮想視点、例えば、ネットワーク化されたカメラ120A〜120Xの視点と比較してズームインされた視点からキャプチャされた画像を生成するように動作する。画像は、ネットワーク120の1つまたは複数のカメラによって取り込まれた画像と、ステップ310の大気条件を反映する決定された情報とを使用して生成される。
方法300は、モジュール101によって実行されるグラフィカルユーザインターフェースと共に使用することができる。例えば、仮想インターフェースを用いて仮想カメラを選択するユーザは画像データをキャプチャし、その結果得られる画像をステップ315〜360のループに入力させることができる。
次に、図8を参照して、(ステップ330で形成された)指定された視点および3Dシーンジオメトリに基づいて、シーンの仮想画像の画素に対応する深度マップを生成する方法800について説明する。方法800は、典型的にはメモリ206に記憶され、プロセッサ205の実行下で制御される、アプリケーション233の1つまたは複数のモジュールとして実装される。方法800は、ステップ340において、現在のフレームにおける仮想視点に基づいて仮想深度マップを生成するために使用される。また、方法800は、ステップ345において、キャプチャカメラの視点に基づいてキャプチャ深度マップを生成するために使用される。方法は、ステップ810において開始する。ステップ810は、仮想カメラの深度マップの初期化を実行する。深度マップは、各画素が深度値を保存する、仮想カメラキャプチャと同じ寸法を有する画像として表すことができる。深度値は、特定のメモリおよび処理要件に応じて、固定小数点または浮動小数点に格納され得る。好ましい実施形態では、浮動小数点記憶装置が使用される。画像の各画素の深度は、指定されたカメラ視点位置と、その画素で撮像されたシーンの3Dジオメトリの点の位置とを比較することによって決定することができる。
深度マップが初期化された後、方法800は選択ステップ820に進む。深度マップの画素は、ステップ820で始まるループ動作において順に設定される。ステップ820は、設定する次の画素を選択する。方法800は、ステップ820から判定ステップ830に続く。ステップ830は、現在の画素に対応する仮想カメラからの光線と3Dシーンジオメトリとの第1の交点を決定する。
方法800は、ステップ830から判定ステップ840に続く。ステップ840において、第1の交点から、特定された視点(例えば、仮想カメラ位置又はネットワークカメラ位置)までの距離が決定される。方法800は、ステップ840から記憶ステップ850に続く。ステップ840で決定された距離は、ステップ850で深度マップの画素に記憶される。
深度マップが現在の画素について更新されると、方法800はチェックステップ860に進む。ステップ860が実行されて、処理すべき画素が画像内にさらに存在するかどうかがチェックされる。さらなる画素がある場合(ステップ860で「Yes」)、方法800はステップ820に戻る。さらなる画素がなければ、深度マップは完了し、ステップ860は「いいえ」を返し、方法800は終了する。
図6A〜Cは、上記のステップ340および345を参照して説明されるように、方法800を使用して生成され得るいくつかの例示的な深度マップを示す。深度マップを生成する方法800は一例である。深度マップを決定する別の方法も知られている。
次に、図9を参照して、ヘイズについて調整された仮想カメラ視点から仮想画像またはFVV画像を生成する、上記のステップ350で使用され得る方法900について説明する。方法900は、典型的にはメモリ206に記憶され、プロセッサ205の実行下で制御される、アプリケーション233の1つまたは複数のモジュールとして実装される。
方法900は、ヘイズモデル、仮想深度マップ、1つまたは複数のキャプチャ深度マップ、およびカメラ較正データに基づいて、1つまたは複数の実カメラキャプチャ画像の画像データから画素をレンダリングする。方法900はキャプチャされた画像と仮想画像との間のヘイズを介した距離の差を補償しながら、キャプチャされた画像からの画素を3Dモデル上に効果的にレンダリングすることを含む。
方法900は、ステップ910で始まる。ステップ910は、仮想カメラ画像を初期化するために実行される。画素寸法は、仮想カメラの固有パラメータによって定義され、キャプチャカメラの画素寸法と同じであっても異なっていてもよい。各画素に記憶されたデータは固定精度の整数または浮動小数点であってもよく、複数のチャネル(例えば、RGB、YUV)を有する可能性がある。
方法900は、ステップ910から選択ステップ920に続く。ステップ920から開始して、仮想画像内の各画素の画素値がループ構造において順番に設定される。ステップ920は、仮想画像内の次の画素位置を選択する。方法900は、ステップ920からステップ930に続く。ステップ930の実行は、画素をレンダリングする1つまたは複数のカメラを選択する。ステップ930における1つまたは複数のカメラの選択は、いくつかの異なる基準に基づくことができる。例えば、カメラは、以下に基づいて選択され得る。
・キャプチャ距離マップが最小であるカメラ(すなわち、仮想カメラの対応する画素でキャプチャされるシーン内の3次元点に最も近い距離を有するカメラ)。
・カメラからレンダリングされた3Dシーン点への方向ベクトル(キャプチャ方向ベクトル)が、仮想カメラからレンダリングされた3Dシーン点への方向ベクトル(仮想方向ベクトル)に最も近いカメラ。例えば、正規化されたキャプチャされた画像方向ベクトルと仮想画像方向ベクトルとの最大ドット積に従って選択される。
・現在の画素で3Dシーンジオメトリに投影されたときに最も高い解像度を有するカメラ。
・上記の要因、または、キャプチャされた画像および仮想画像における画素の視覚的特徴に関連する他の要因の組み合わせ。
仮想カメラ画素に対応する所与のカメラからの画素値は、構成およびジオメトリに応じて補間することができる。適切な補間方法には、キュービック補間、線形補間、sinc補間、フーリエ補間および最近隣補間が含まれる。いくつかの構成では複数のカメラを選択することが有利であり、対応する画素値はレンダリングのための改善された画素値を形成するために一緒にブレンドされ得る。しかしながら、複数のカメラを選択する場合、異なるカメラからの画素値は、典型的には後述するステップ950において画素値がヘイズを補償されるまで混合されるべきではない。ステップ930が完了すると、仮想カメラ画像内の現在の画素をレンダリングするための画素値が分かる。
方法900は、ステップ930から読み取りステップ940に続く。ステップ940の実行で、仮想深度マップおよびキャプチャ深度マップが、現在の画素において読み取られる。いくつかの実装形態では、キャプチャ深度マップからの値がステップ930で既に読み取られていてもよく、その場合、深度マップに2回目のインデックス付けは不要である。
方法900は、ステップ940からステップ950に続く。ステップ950において、ステップ930からの画素値は、仮想深度マップに従って仮想カメラ画像に影響を及ぼすと予想されるヘイズと比較して、キャプチャされた画素に影響を及ぼすヘイズの差を補償するように修正される。補償は2つのサブステップで行われてもよいし、単一のステップで行われてもよい。2つのステップで補償を実施することは、最初に、キャプチャ深度マップデータに従って全てのヘイズを除去し、続いて、仮想深度マップデータに従ってシミュレートされたヘイズを追加することに関する。これにより、撮像画像の深度マップに応じて大気条件が除去され、大気条件のモデルを用いて仮想カメラで撮像された画像の深度マップに応じて大気条件が加算される。単一のステップで補償を実施することは、仮想カメラ視点のそれぞれがより少ないまたはより多いヘイズを含むかに基づいて、過剰な量のヘイズのみを除去すること、または欠落した量のヘイズのみを追加することに関連する。
補償後、方法900は設定ステップ960に進む。補償された画素値は、ステップ960で仮想カメラ画像画素を設定するために使用される。
方法900は、ステップ960からチェックステップ970に続く。ステップ970の実行は、処理すべき画素がまだあるかどうかをチェックする。方法900は、さらなる画素がある場合(ステップ970で「Yes」)、ステップ920に戻る。そうでない場合、ステップ970は「いいえ」を返し、方法900は終了する。画素についてループすることによって仮想画像を生成する上述の方法は、各画素を決定する方法の一例を提供する。
上述したように、方法900は、大気条件のモデルに基づいて、キャプチャされた画像と比較して、仮想カメラ視点におけるオブジェクトの視認性を増加又は減少させることに関する。視認性は、シーンのモデルおよびステップ310のモデルに基づいてヘイズ(または他の大気条件)の量を調整することによって影響を受ける。例えば、物理的なカメラと比較してズームインされた仮想カメラ視点は典型的にはヘイズの影響を受けにくく、仮想視点内のオブジェクトは視認性を高めることができる。従って、結果として得られる可視性も、ステップ330のシーンの3次元モデルに基づいて決定される。逆に、物理的なカメラと比較してズームアウトされた仮想カメラ視点は通常、ヘイズの影響をより受けやすく、仮想視点内のオブジェクトは視認性を低下させる可能性がある。
次に、カメラ120A〜Xの較正されたネットワークについて、フォグ、ヘイズ、ミスト、またはスモークなどの大気条件によって影響を受けるイベントの自由視点ビデオを生成する代替の方法1000を、図10を参照して説明する。方法1000は、典型的にはメモリ206に記憶され、プロセッサ205の実行下で制御される、アプリケーション233の1つまたは複数のモジュールとして実装される。
方法1000は、上述した図4〜図7の例によって示されている。方法300は3Dジオメトリの再構成に基づくFVV生成に適しており、深度に基づくレンダリングに適合させることができるものであったのに対して、方法1000は画像ベースの方法に基づく。特に、方法1000は平面掃引方法(plane sweep method)に適用されるが、記載される技術は他の画像ベースの方法に適応させることができる。
方法1000は、ステップ1005で始まる。ステップ1005では、シーン、例えば領域110のための1組の画像データがキャプチャされる。画像データは、1つのカメラによって、カメラのサブセットによって、またはカメラ120A〜Xのネットワーク全体によって取り込むことができる。どのカメラから画像をキャプチャするかの決定は、ユーザ入力に基づいて行われて、自動的に行われてもよく、コントローラからカメラネットワークに送信され得る。好ましくは、完全なカメラ画像がキャプチャされる。カメラから処理部205に画像データを送信する際のネットワークトラフィックを低減するために、カメラネットワークの全解像度に対して全画像を圧縮またはダウンサンプリングすることができる。いくつかの実施形態では、画像データが各カメラによってカバーされる完全な画像キャプチャの一部から構成されてもよい。
方法1000は、ステップ1005から形成ステップ1010に続く。ステップ1010において、コントローラ(ユーザ)は方法300のステップ310に関して説明したように、キャプチャされた画像データに基づいて形成されるヘイズの初期モデルを要求する。ヘイズモデルを形成すると、方法1000は、選択ステップ1015に続く。ステップ1015以降で、FVVが、ループ構造を使用してカメラネットワークによってキャプチャされた複数のフレームについて生成される。説明される構成は各フレームが各カメラによって同時またはほぼ同時にサンプリングされるように、カメラ120A〜120Xが時間的に同期されるという仮定に基づいている。これは、ゲンロック(genlock)または他の同期技術を使用して達成され得る。ステップ1015は、画像データのフレームを選択するように動作する。
方法1000は、ステップ1015からキャプチャステップ1020に続く。ステップ1020では、1組のカメラの画像データが読み出され、方法300のステップ320に従ってネットワーク120を介して処理部205に送信される。方法1000は、ステップ1020から設定ステップ1030に続く。ステップ1030において、現在のフレームの仮想視点が、方法300のステップ335と同じ方法に従って設定される。
方法1000は、ステップ1030からレンダリングステップ1040に続く。ステップ1040では、少なくとも2つのキャプチャされた画像の設定が選択され、ステップ1030で選択されたシーンの仮想視点に基づいて決定される複数の3次元ジオメトリ平面上にレンダリングされる。ジオメトリ平面は、シーンのモデルを効果的に提供する。キャプチャされた画像は、物理的カメラの光軸に関して仮想カメラに最も近い画像として選択されてもよいし、または、ジオメトリ、画質などに関連する他の基準に基づいて選択されてもよい。
レンダリングされた平面は既存の平面掃引FVV生成方法のために生成された平面に類似しているが、シーン内のヘイズを処理する利点を与える差異を有する。既存の平面掃引方法はキャプチャされた画像を平面に直接レンダリングし、シーンのモデルを効果的に形成する。対照的に、説明した構成は、所与の平面において画像コンテンツをキャプチャする仮想カメラに影響を及ぼす予想ヘイズの、同じ平面上の同じ点に対応する画素をキャプチャする実際のカメラにおける予想ヘイズと比較による差を補償するように、キャプチャされた各画像の画素を修正する。各平面内の各点は、典型的には固有の方法で補償される必要がある。
各画像平面および各カメラについて、ステップ1040は3Dモデルを平面ジオメトリに設定し、平面3Dモデルの仮想深度マップおよびキャプチャ深度マップを生成することによって実行することができる。ステップ1040は、3D平面モデルについてステップ340および345を参照して説明したのと同じ方法に従って実行され、ステップ350に従って現実的なヘイズを有する平面モデルについて仮想画像を生成することができる。ステップ1040の実行の結果は各平面における複数のキャプチャされた画像レンダリングのセットであり、各レンダリングは、3D平面モデル及びヘイズモデルに従ってヘイズが補償されている。
方法1000は、ステップ1040から生成ステップ1050に続く。ステップ1050では、仮想カメラからの仮想画像又はFVV画像が、各平面及び各取り込まれた画像について平面画像の設定を処理することによって、ヘイズを伴って生成される。ステップ1050は例えば、マッチスコアに基づいて、各平面について投射画像の一貫性をテストし、各画素において適切な平面を選択するなど、多くの比較的単純なヒューリスティックに基づいて実行されてもよい。あるいは、ステップ1050がより複雑なヒューリスティックまたは機械学習技術(例えば、ディープラーニングまたは畳み込みニューラルネットワーク(CNN))を使用してもよい。ステップ1050には、多くの適切な方法が知られている。ステップ1050は、視点に対応するキャプチャされた画像の画素を調整することによって、仮想カメラの視点からシーンを効果的にレンダリングする。調整は、シーン(平面)の3次元モデル、シーンに対する複数のカメラの位置、仮想カメラの視点、およびステップ1010の大気条件の幾何学的モデルに基づいて行われる。
方法1000は、多くの点で方法300とは異なる。特に、方法1000は、シーンの3次元モデルの使用に関して異なる。上述のように、方法300はシーンの3次元モデル(例えば、ループ315〜360の操作中に生成される)を使用するように動作する。対照的に、方法1000は上述の平面掃引ステップを使用し、シーンのいくつかのモデルを効果的に使用し、ヘイズまたは他の大気条件を補償するように動作する。
方法1000は、ステップ1050から更新ステップ1055に続く。ステップ1055において、ステップ1010で形成されたヘイズモデルは、現在の又は最近のフレーム画像データに基づいて更新され得る。この更新は別個のプロセッサ上で実行されてもよいし、完了するのに複数のフレームを要してもよい。更新は新しいモデルを形成するために、更新されたキャプチャされた画像を用いて、ステップ1010について上述した技法を使用することができる。新しいモデルは現在のモデルを置き換えるために使用されてもよいし、または、経時的により安定したモデルを形成するように更新されたモデルからのパラメータとブレンドされてもよい。いくつかの実装形態ではステップ1055が省略されてもよく、または例えば、ある回数の反復の後、所与の時間隔で、またはパラメータの変化のレベルに基づいて、断続的に実装されてもよい。例えば、ヘイズモデルは、毎秒、またはフォグのタイプ、気象条件(風速など)などに依存する他の何らかの更新速度で更新することができる。
方法1000は、ステップ1055からチェックステップ1060に続く。ステップ1060は、処理すべきフレームがまだあるかどうかをチェックする。さらにフレームがある場合(ステップ1060で「Yes」)、方法1000はステップ1015に戻る。そうでなければ、ステップ1060は「いいえ」を返し、生成されたフレームは、視聴者のためのビデオ映像を再生するために使用され、方法1000は終了する。