競技場(スタジアム)やコンサートホールなどの施設に複数のカメラ及びマイクを設置し撮影及び集音を行うシステムについて、図1のシステム構成図を用いて説明する。画像処理システム100は、センサシステム110a―センサシステム110z、画像コンピューティングサーバ200、コントローラ300、スイッチングハブ180、及びエンドユーザ端末190を有する。
コントローラ300は制御ステーション310と仮想カメラ操作UI330を有する。制御ステーション310は画像処理システム100を構成するそれぞれのブロックに対してネットワーク310a―310c、180a、180b、及び170a―170yを通じて動作状態の管理及びパラメータ設定制御などを行う。ここで、ネットワークはEthernet(登録商標、以下省略)であるIEEE標準準拠のGbE(ギガビットイーサーネット)や10GbEでもよいし、インターコネクトInfiniband、産業用イーサーネット等を組合せて構成されてもよい。また、これらに限定されず、他の種別のネットワークであってもよい。
最初に、センサシステム110a―センサシステム110zの26セットの画像及び音声をセンサシステム110zから画像コンピューティングサーバ200へ送信する動作を説明する。本実施形態の画像処理システム100は、センサシステム110a―センサシステム110zがデイジーチェーンにより接続される。
本実施形態において、特別な説明がない場合は、センサシステム110aからセンサシステム110zまでの26セットのシステムを区別せずセンサシステム110と記載する。各センサシステム110内の装置についても同様に、特別な説明がない場合は区別せず、マイク111、カメラ112、雲台113、外部センサ114、及びカメラアダプタ120と記載する。なお、センサシステムの台数として26セットと記載しているが、あくまでも一例であり、台数をこれに限定するものではない。また、複数のセンサシステム110は同一の構成でなくてもよく、例えばそれぞれが異なる機種の装置で構成されていてもよい。なお、本実施形態では、特に断りがない限り、画像という文言が、動画と静止画の概念を含むものとして説明する。すなわち、本実施形態の画像処理システム100は、静止画及び動画の何れについても処理可能である。また、本実施形態では、画像処理システム100により提供される仮想視点コンテンツには、仮想視点画像と仮想視点音声が含まれる例を中心に説明するが、これに限らない。例えば、仮想視点コンテンツに音声が含まれていなくても良い。また例えば、仮想視点コンテンツに含まれる音声が、仮想視点に最も近いマイクにより集音された音声であっても良い。また、本実施形態では、説明の簡略化のため、部分的に音声についての記載を省略しているが、基本的に画像と音声は共に処理されるものとする。
センサシステム110a―センサシステム110zは、それぞれ1台ずつのカメラ112a―カメラ112zを有する。即ち、画像処理システム100は、被写体を複数の方向から撮影するための複数のカメラ112を有する。なお、複数のカメラ112は同一符号を用いて説明するが、性能や機種が異なっていてもよい。複数のセンサシステム110同士はデイジーチェーンにより接続される。この接続形態により、撮影画像の4Kや8Kなどへの高解像度化及び高フレームレート化に伴う画像データの大容量化において、接続ケーブル数の削減や配線作業の省力化ができる効果があることをここに明記しておく。
なおこれに限らず、接続形態として、各センサシステム110a-110zがスイッチングハブ180に接続されて、スイッチングハブ180を経由してセンサシステム110間のデータ送受信を行うスター型のネットワーク構成としてもよい。
また、図1では、デイジーチェーンとなるようセンサシステム110a-110zの全てがカスケード接続されている構成を示したがこれに限定するものではない。例えば、複数のセンサシステム110をいくつかのグループに分割して、分割したグループ単位でセンサシステム110間をデイジーチェーン接続してもよい。そして、分割単位の終端となるカメラアダプタ120がスイッチングハブに接続されて画像コンピューティングサーバ200へ画像の入力を行うようにしてもよい。このような構成は、スタジアムにおいてとくに有効である。例えば、スタジアムが複数階で構成され、フロア毎にセンサシステム110を配備する場合が考えられる。この場合に、フロア毎、あるいはスタジアムの半周毎に画像コンピューティングサーバ200への入力を行うことができ、全センサシステム110を1つのデイジーチェーンで接続する配線が困難な場所でも設置の簡便化及びシステムの柔軟化を図ることができる。
また、デイジーチェーン接続されて画像コンピューティングサーバ200へ画像入力を行うカメラアダプタ120が1つであるか2つ以上であるかに応じて、画像コンピューティングサーバ200での画像処理の制御が切り替えられる。すなわち、センサシステム110が複数のグループに分割されているかどうかに応じて制御が切り替えられる。画像入力を行うカメラアダプタ120が1つの場合は、デイジーチェーン接続で画像伝送を行いながら競技場全周画像が生成されるため、画像コンピューティングサーバ200において全周の画像データが揃うタイミングは同期がとられている。すなわち、センサシステム110がグループに分割されていなければ、同期はとれる。
しかし、画像入力を行うカメラアダプタ120が複数になる場合は、画像が撮影されてから画像コンピューティングサーバ200に入力されるまでの遅延がデイジーチェーンのレーン(経路)ごとに異なる場合が考えられる。すなわち、センサシステム110がグループに分割される場合は、画像コンピューティングサーバ200に全周の画像データが入力されるタイミングは同期がとられないことがある。そのため、画像コンピューティングサーバ200において、全周の画像データが揃うまで待って同期をとる同期制御によって、画像データの集結をチェックしながら後段の画像処理を行う必要があることを明記しておく。
本実施形態では、センサシステム110aはマイク111a、カメラ112a、雲台113a、外部センサ114a、及びカメラアダプタ120aを有する。なお、この構成に限定するものではなく、少なくとも1台のカメラアダプタ120aと、1台のカメラ112aまたは1台のマイク111aを有していれば良い。また例えば、センサシステム110aは1台のカメラアダプタ120aと、複数のカメラ112aで構成されてもよいし、1台のカメラ112aと複数のカメラアダプタ120aで構成されてもよい。即ち、画像処理システム100内の複数のカメラ112と複数のカメラアダプタ120はN対M(NとMは共に1以上の整数)で対応する。また、センサシステム110は、マイク111a、カメラ112a、雲台113a、及びカメラアダプタ120a以外の装置を含んでいてもよい。また、カメラ112とカメラアダプタ120が一体となって構成されていてもよい。さらに、カメラアダプタ120の機能の少なくとも一部をフロントエンドサーバ230が有していてもよい。本実施形態では、センサシステム110b―110zについては、センサシステム110aと同様の構成なので省略する。なお、センサシステム110aと同じ構成に限定されるものではなく、其々のセンサシステム110が異なる構成でもよい。
マイク111aにて集音された音声と、カメラ112aにて撮影された画像は、カメラアダプタ120aにおいて後述の画像処理が施された後、デイジーチェーン170aを通してセンサシステム110bのカメラアダプタ120bに伝送される。同様にセンサシステム110bは、集音された音声と撮影された画像を、センサシステム110aから取得した画像及び音声と合わせてセンサシステム110cに伝送する。
前述した動作を続けることにより、センサシステム110a―センサシステム110zが取得した画像及び音声は、センサシステム110zから180bを用いてスイッチングハブ180に伝わり、その後、画像コンピューティングサーバ200へ伝送される。
なお、本実施形態では、カメラ112a-112zとカメラアダプタ120a-120zが分離された構成にしているが、同一筺体で一体化されていてもよい。その場合、マイク111a-111zは一体化されたカメラ112に内蔵されてもよいし、カメラ112の外部に接続されていてもよい。
次に、画像コンピューティングサーバ200の構成及び動作について説明する。本実施形態の画像コンピューティングサーバ200は、センサシステム110zから取得したデータの処理を行う。画像コンピューティングサーバ200はフロントエンドサーバ230、データベース250(以下、DBとも記載する。)、バックエンドサーバ270、タイムサーバ290を有する。
タイムサーバ290は時刻及び同期信号を配信する機能を有し、スイッチングハブ180を介してセンサシステム110a―センサシステム110zに時刻及び同期信号を配信する。時刻と同期信号を受信したカメラアダプタ120a―120zは、カメラ112a―112zを時刻と同期信号をもとにGenlockさせ画像フレーム同期を行う。即ち、タイムサーバ290は、複数のカメラ112の撮影タイミングを同期させる。これにより、画像処理システム100は同じタイミングで撮影された複数の撮影画像に基づいて仮想視点画像を生成できるため、撮影タイミングのずれによる仮想視点画像の品質低下を抑制できる。なお、本実施形態ではタイムサーバ290が複数のカメラ112の時刻同期を管理するものとするが、これに限らず、時刻同期のための処理を各カメラ112又は各カメラアダプタ120が独立して行ってもよい。
フロントエンドサーバ230は、センサシステム110zから取得した画像及び音声から、セグメント化された伝送パケットを再構成してデータ形式を変換した後に、カメラの識別子やデータ種別、フレーム番号に応じてデータベース250に書き込む。
次に、バックエンドサーバ270では、仮想カメラ操作UI330から視点の指定を受け付け、受け付けられた視点に基づいて、データベース250から対応する画像及び音声データを読み出し、レンダリング処理を行って仮想視点画像を生成する。
なお、画像コンピューティングサーバ200の構成はこれに限らない。例えば、フロントエンドサーバ230、データベース250、及びバックエンドサーバ270のうち少なくとも2つが一体となって構成されていてもよい。また、フロントエンドサーバ230、データベース250、及びバックエンドサーバ270の少なくとも何れかが複数含まれていてもよい。また、画像コンピューティングサーバ200内の任意の位置に上記の装置以外の装置が含まれていてもよい。さらに、画像コンピューティングサーバ200の機能の少なくとも一部をエンドユーザ端末190や仮想カメラ操作UI330が有していてもよい。
レンダリング処理された画像は、バックエンドサーバ270からエンドユーザ端末190に送信され、エンドユーザ端末190を操作するユーザは視点の指定に応じた画像閲覧及び音声視聴が出来る。すなわち、バックエンドサーバ270は、複数のカメラ112により撮影された撮影画像(複数視点画像)と視点情報とに基づく仮想視点コンテンツを生成する。より具体的には、バックエンドサーバ270は、例えば複数のカメラアダプタ120により複数のカメラ112による撮影画像から抽出された所定領域の画像データと、ユーザ操作により指定された視点に基づいて、仮想視点コンテンツを生成する。そしてバックエンドサーバ270は、生成した仮想視点コンテンツをエンドユーザ端末190に提供する。カメラアダプタ120による所定領域の抽出の詳細については後述する。なお、本実施形態において仮想視点コンテンツは画像コンピューティングサーバ200により生成されるものであり、特にバックエンドサーバ270により生成される場合を中心に説明する。ただしこれに限らず、仮想視点コンテンツは、画像コンピューティングサーバ200に含まれるバックエンドサーバ270以外の装置により生成されてもよいし、コントローラ300やエンドユーザ端末190により生成されてもよい。
本実施形態における仮想視点コンテンツは、仮想的な視点から被写体を撮影した場合に得られる画像としての仮想視点画像を含むコンテンツである。言い換えると、仮想視点画像は、指定された視点における見えを表す画像であるとも言える。仮想的な視点(仮想視点)は、ユーザにより指定されても良いし、画像解析の結果等に基づいて自動的に指定されても良い。すなわち仮想視点画像には、ユーザが任意に指定した視点に対応する任意視点画像(自由視点画像)が含まれる。また、複数の候補からユーザが指定した視点に対応する画像や、装置が自動で指定した視点に対応する画像も、仮想視点画像に含まれる。なお、本実施形態では、仮想視点コンテンツに音声データ(オーディオデータ)が含まれる場合の例を中心に説明するが、必ずしも音声データが含まれていなくても良い。また、バックエンドサーバ270は、仮想視点画像を例えばH.264やHEVCなどの符号化方式に従って圧縮符号化したうえで、MPEG-DASHプロトコルを使ってエンドユーザ端末190へ送信してもよい。また、仮想視点画像は、非圧縮でエンドユーザ端末190へ送信されてもよい。とくに圧縮符号化を行う前者はエンドユーザ端末190としてスマートフォンやタブレットを想定しており、後者は非圧縮画像を表示可能なディスプレイを想定している。すなわち、エンドユーザ端末190の種別に応じて画像フォーマットが切り替え可能であることを明記しておく。また、画像の送信プロトコルはMPEG-DASHに限らず、例えば、HLS(HTTP Live Streaming)やその他の送信方法を用いても良い。
この様に、画像処理システム100は、映像収集ドメイン、データ保存ドメイン、及び映像生成ドメインという3つの機能ドメインを有する。映像収集ドメインはセンサシステム110-110zを含み、データ保存ドメインはデータベース250、フロントエンドサーバ230及びバックエンドサーバ270を含み、映像生成ドメインは仮想カメラ操作UI330及びエンドユーザ端末190を含む。なお本構成に限らず、例えば、仮想カメラ操作UI330が直接センサシステム110a-110zから画像を取得する事も可能である。しかしながら、本実施形態では、センサシステム110a-110zから直接画像を取得する方法ではなくデータ保存機能を中間に配置する方法をとる。具体的には、フロントエンドサーバ230がセンサシステム110a-110zが生成した画像データや音声データ及びそれらのデータのメタ情報をデータベース250の共通スキーマ及びデータ型に変換している。これにより、センサシステム110a-110zのカメラ112が他機種のカメラに変化しても、変化した差分をフロントエンドサーバ230が吸収し、データベース250に登録することができる。このことによって、カメラ112が他機種カメラに変わった場合に、仮想カメラ操作UI330が適切に動作しない虞を低減できる。
また、仮想カメラ操作UI330は、直接データベース250にアクセスせずにバックエンドサーバ270を介してアクセスする構成である。バックエンドサーバ270で画像生成処理に係わる共通処理を行い、操作UIに係わるアプリケーションの差分部分を仮想カメラ操作UI330で行っている。このことにより、仮想カメラ操作UI330の開発において、UI操作デバイスや、生成したい仮想視点画像を操作するUIの機能要求に対する開発に注力する事ができる。また、バックエンドサーバ270は、仮想カメラ操作UI330の要求に応じて画像生成処理に係わる共通処理を追加又は削除する事も可能である。このことによって仮想カメラ操作UI330の要求に柔軟に対応する事ができる。
このように、画像処理システム100においては、被写体を複数の方向から撮影するための複数のカメラ112による撮影に基づく画像データに基づいて、バックエンドサーバ270により仮想視点画像が生成される。なお、本実施形態における画像処理システム100は、上記で説明した物理的な構成に限定される訳ではなく、論理的に構成されていてもよい。また、本実施形態ではカメラ112による撮影画像に基づいて仮想視点画像を生成する技術について説明するが、例えば撮影画像を用いずコンピュータグラフィックスなどにより生成された画像に基づいて仮想視点画像を生成する場合にも本実施形態を適用できる。
次に図1に記載のシステムにおける各ノード(カメラアダプタ120、フロントエンドサーバ230、データベース250、バックエンドサーバ270、仮想カメラ操作UI330、エンドユーザ端末190)の機能ブロック図を説明する。
本実施形態におけるカメラアダプタ120の機能ブロックについて図2を利用して説明する。なお、カメラアダプタ120の機能ブロック間でのデータの流れの詳細は図29を用いて後述する。
カメラアダプタ120は、ネットワークアダプタ06110、伝送部06120、画像処理部06130及び、外部機器制御部06140から構成されている。ネットワークアダプタ06110は、データ送受信部06111及び時刻制御部06112から構成されている。
データ送受信部06111は、デイジーチェーン170、ネットワーク291、及びネットワーク310aを介し他のカメラアダプタ120、フロントエンドサーバ230、タイムサーバ290、及び制御ステーション310とデータ通信を行う。例えばデータ送受信部06111は、カメラ112による撮影画像から前景背景分離部06131により分離された前景画像と背景画像とを、別のカメラアダプタ120に対して出力する。出力先のカメラアダプタ120は、画像処理システム100内のカメラアダプタ120のうち、データルーティング処理部06122の処理に応じて予め定められた順序において次のカメラアダプタ120である。各カメラアダプタ120が前景画像と背景画像とを出力することで、複数の視点から撮影された前景画像と背景画像に基づいて仮想視点画像が生成される。なお、撮影画像から分離した前景画像を出力して背景画像は出力しないカメラアダプタ120が存在してもよい。
時刻制御部06112は、例えばIEEE1588規格のOrdinay Clockに準拠し、タイムサーバ290との間で送受信したデータのタイムスタンプを保存する機能と、タイムサーバ290と時刻同期を行う。なお、IEEE1588に限定する訳ではなく、他のEtherAVB規格や、独自プロトコルによってタイムサーバとの時刻同期を実現してもよい。本実施形態では、ネットワークアダプタ06110としてNIC(Network Interface Card)を利用するが、NICに限定するものではなく、同様の他のInterfaceを利用してもよい。また、IEEE1588はIEEE1588-2002、IEEE1588-2008のように標準規格として更新されており、後者については、PTPv2(Precision Time Protocol Version2)とも呼ばれる。
伝送部06120は、ネットワークアダプタ06110を介してスイッチングハブ180等に対するデータの伝送を制御する機能を有し、以下の機能部から構成されている。
データ圧縮・伸張部06121は、データ送受信部06111を介して送受信されるデータに対して所定の圧縮方式、圧縮率、及びフレームレートを適用した圧縮を行う機能と、圧縮されたデータを伸張する機能を有している。
データルーティング処理部06122は、後述するデータルーティング情報保持部06125が保持するデータを利用し、データ送受信部06111が受信したデータ及び画像処理部06130で処理されたデータのルーティング先を決定する。さらに、決定したルーティング先へデータを送信する機能を有している。ルーティング先としては、同一の注視点にフォーカスされたカメラ112に対応するカメラアダプタ120とするのが、それぞれのカメラ112同士の画像フレーム相関が高いため画像処理を行う上で好適である。複数のカメラアダプタ120それぞれのデータルーティング処理部06122による決定に応じて、画像処理システム100内において前景画像や背景画像をリレー形式で出力するカメラアダプタ120の順序が定まる。
時刻同期制御部06123は、IEEE1588規格のPTP(Precision Time Protocol)に準拠し、タイムサーバ290と時刻同期に係わる処理を行う機能を有している。なお、PTPに限定するのではなく他の同様のプロトコルを利用して時刻同期してもよい。
画像・音声伝送処理部06124は、画像データ又は音声データを、データ送受信部06111を介して他のカメラアダプタ120またはフロントエンドサーバ230へ転送するためのメッセージを作成する機能を有している。メッセージには画像データ又は音声データ、及び各データのメタ情報が含まる。本実施形態のメタ情報には画像の撮影または音声のサンプリングをした時のタイムコードまたはシーケンス番号、データ種別、及びカメラ112やマイク111の個体を示す識別子などが含まれる。なお送信する画像データまたは音声データはデータ圧縮・伸張部06121でデータ圧縮されていてもよい。また、画像・音声伝送処理部06124は、他のカメラアダプタ120からデータ送受信部06111を介してメッセージを受取る。そして、メッセージに含まれるデータ種別に応じて、伝送プロトコル規定のパケットサイズにフラグメントされたデータ情報を画像データまたは音声データに復元する。なお、データを復元した際にデータが圧縮されている場合は、データ圧縮・伸張部06121が伸張処理を行う。
データルーティング情報保持部06125は、データ送受信部06111で送受信されるデータの送信先を決定するためのアドレス情報を保持する機能を有する。ルーティング方法については後述する。
画像処理部06130は、カメラ制御部06141の制御によりカメラ112が撮影した画像データ及び他のカメラアダプタ120から受取った画像データに対して処理を行う機能を有し、以下の機能部から構成されている。
前景背景分離部06131は、カメラ112が撮影した画像データを前景画像と背景画像に分離する機能を有している。すなわち、複数のカメラアダプタ120のそれぞれは、複数のカメラ112のうち対応するカメラ112による撮影画像から所定領域を抽出する画像処理装置として動作する。所定領域は例えば撮影画像に対するオブジェクト検出の結果得られる前景画像であり、この抽出により前景背景分離部06131は、撮影画像を前景画像と背景画像に分離する。なお、オブジェクトとは、例えば人物である。ただし、オブジェクトが特定人物(選手、監督、及び/又は審判など)であっても良いし、ボールやゴールなど、画像パターンが予め定められている物体であっても良い。また、オブジェクトとして、動体が検出されるようにしても良い。人物等の重要なオブジェクトを含む前景画像とそのようなオブジェクトを含まない背景領域を分離して処理することで、画像処理システム100において生成される仮想視点画像の上記のオブジェクトに該当する部分の画像の品質を向上できる。また、前景と背景の分離を複数のカメラアダプタ120それぞれが行うことで、複数のカメラ112を備えた画像処理システム100における負荷を分散させることができる。なお、所定領域は前景画像に限らず、例えば背景画像であってもよい。
三次元モデル情報生成部06132は、前景背景分離部06131で分離された前景画像及び他のカメラアダプタ120から受取った前景画像を利用し、例えばステレオカメラの原理を用いて三次元モデルに係わる画像情報を生成する機能を有している。
キャリブレーション制御部06133は、キャリブレーションに必要な画像データを、カメラ制御部06141を介してカメラ112から取得し、キャリブレーションに係わる演算処理を行うフロントエンドサーバ230に送信する機能を有している。本実施形態におけるキャリブレーションは、複数のカメラ112それぞれに関するパラメータを対応付けて整合をとる処理である。キャリブレーションとして例えば、設置された各カメラ112が保持する世界座標系が一致するように調整する処理や、カメラ112ごとの色のばらつきを抑えるための色補正処理などが行われる。なお、キャリブレーションの具体的な処理内容はこれに限定されない。また本実施形態ではキャリブレーションに係わる演算処理をフロントエンドサーバ230で行っているが、演算処理を行うノードはフロントエンドサーバ230に限定されない。例えば、制御ステーション310やカメラアダプタ120(他のカメラアダプタ120を含む)など他のノードで演算処理が行われてもよい。またキャリブレーション制御部06133は、カメラ制御部06141を介してカメラ112から取得した画像データに対して、予め設定されたパラメータに応じて撮影中のキャリブレーション(動的キャリブレーション)を行う機能を有している。
外部機器制御部06140は、カメラアダプタ120に接続する機器を制御する機能を有し、下記機能ブロックから構成されている。
カメラ制御部06141は、カメラ112と接続し、カメラ112の制御、撮影画像取得、同期信号提供、及び時刻設定などを行う機能を有している。カメラ112の制御には、例えば撮影パラメータ(画素数、色深度、フレームレート、及びホワイトバランスの設定など)の設定及び参照、カメラ112の状態(撮影中、停止中、同期中、及びエラーなど)の取得、撮影の開始及び停止や、ピント調整などがある。なお、本実施形態ではカメラ112を介してピント調整を行っているが、取り外し可能なレンズがカメラ112に装着されている場合は、カメラアダプタ120がレンズに接続し、直接レンズの調整を行ってもよい。また、カメラアダプタ120がカメラ112を介してズーム等のレンズ調整を行ってもよい。同期信号提供は、時刻同期制御部06123がタイムサーバ290と同期した時刻を利用し、撮影タイミング(制御クロック)をカメラ112に提供することで行われる。時刻設定は、時刻同期制御部06123がタイムサーバ290と同期した時刻を例えばSMPTE12Mのフォーマットに準拠したタイムコードで提供することで行われる。これにより、カメラ112から受取る画像データに提供したタイムコードが付与されることになる。なおタイムコードのフォーマットはSMPTE12Mに限定されるわけではなく、他のフォーマットであってもよい。また、カメラ制御部06141は、カメラ112に対するタイムコードの提供はせず、カメラ112から受取った画像データに自身がタイムコードを付与してもよい。
マイク制御部06142は、マイク111と接続し、マイク111の制御、収音の開始及び停止や収音された音声データの取得などを行う機能を有している。マイク111の制御は例えば、ゲイン調整や、状態取得などである。またカメラ制御部06141と同様にマイク111に対して音声サンプリングするタイミングとタイムコードを提供する。音声サンプリングのタイミングとなるクロック情報としては、タイムサーバ290からの時刻情報が例えば48KHzのワードクロックに変換されてマイク111に供給される。
雲台制御部06143は雲台113と接続し、雲台113の制御を行う機能を有している。雲台113の制御は例えば、パン・チルト制御や、状態取得などがある。
センサ制御部06144は、外部センサ114と接続し、外部センサ114がセンシングしたセンサ情報を取得する機能を有する。例えば、外部センサ114としてジャイロセンサが利用される場合は、振動を表す情報を取得することができる。そして、センサ制御部06144が取得した振動情報を用いて、画像処理部06130は、前景背景分離部06131での処理に先立って、カメラ112の振動による影響を低減させた画像を生成することができる。振動情報は例えば、8Kカメラの画像データを、振動情報を考慮して、元の8Kサイズよりも小さいサイズで切り出して、隣接設置されたカメラ112の画像との位置合わせを行う場合に利用される。これにより、建造物の躯体振動が各カメラに異なる周波数で伝搬しても、カメラアダプタ120に配備された本機能で位置合わせを行う。その結果、振動の影響が画像処理により低減された(電子的に防振された)画像データを生成でき、画像コンピューティングサーバ200におけるカメラ112の台数分の位置合わせの処理負荷を軽減する効果が得られる。なお、センサシステム110のセンサは外部センサ114に限定するわけではなく、カメラアダプタ120に内蔵されたセンサであっても同様の効果が得られる。
図3は、カメラアダプタ120内部の画像処理部06130の機能ブロック図である。キャリブレーション制御部06133は、入力された画像に対して、カメラ毎の色のばらつきを抑えるための色補正処理や、カメラの振動に起因する画像のブレを低減させて画像を安定させるためのブレ補正処理(電子防振処理)などを行う。
前景背景分離部06131の機能ブロックについて説明する。前景分離部05001は、カメラ112の画像に関して位置合わせが行われた画像データに対して、背景画像05002との比較により前景画像の分離処理を行う。
背景更新部05003は、背景画像05002とカメラ112の位置合わせが行われた画像を用いて新しい背景画像を生成し、背景画像05002を新しい背景画像に更新する。
背景切出部05004は、背景画像05002の一部を切り出す制御を行う。
ここで、三次元モデル情報生成部06132の機能について説明する。
三次元モデル処理部05005は、前景分離部05001で分離された前景画像と、伝送部06120を介して受信した他のカメラ112の前景画像を用いて、例えばステレオカメラの原理等から三次元モデルに関わる画像情報を逐次生成する。
他カメラ前景受信部05006は、他のカメラアダプタ120で前景背景分離された前景画像を受信する。
カメラパラメータ受信部05007は、カメラ固有の内部パラメータ(焦点距離、画像中心、及びレンズ歪みパラメータ等)と、カメラの位置姿勢を表す外部パラメータ(回転行列及び位置ベクトル等)を受信する。これらのパラメータは、後述のキャリブレーション処理で得られる情報であり、制御ステーション310から対象となるカメラアダプタ120に対して送信及び設定される。つぎに、三次元モデル処理部05005は、カメラパラメータ受信部05007と他カメラ前景受信部05006によって三次元モデル情報を生成する。
図4はフロントエンドサーバ230の機能ブロックを示した図である。制御部02110はCPUやDRAM、プログラムデータや各種データを記憶したHDDやNANDメモリなどの記憶媒体、Ethernet等のハードウェアで構成される。そして、フロントエンドサーバ230の各機能ブロック及びフロントエンドサーバ230のシステム全体の制御を行う。また、モード制御を行って、キャリブレーション動作や撮影前の準備動作、及び撮影中動作などの動作モードを切り替える。また、Ethernetを通じて制御ステーション310からの制御指示を受信し、各モードの切り替えやデータの入出力などを行う。また、同じくネットワークを通じて制御ステーション310からスタジアムCADデータ(スタジアム形状データ)を取得し、スタジアムCADデータをCADデータ記憶部02135と撮影データファイル生成部02180に送信する。なお、本実施形態におけるスタジアムCADデータ(スタジアム形状データ)はスタジアムの形状を示す三次元データであり、メッシュモデルやその他の三次元形状を表すデータであればよく、CAD形式に限定されない。
データ入力制御部02120は、Ethernet等の通信路とスイッチングハブ180を介して、カメラアダプタ120とネットワーク接続されている。そしてデータ入力制御部02120は、ネットワークを通してカメラアダプタ120から前景画像、背景画像、被写体の三次元モデル、音声データ、及びカメラキャリブレーション撮影画像データを取得する。ここで、前景画像は仮想視点画像の生成のための撮影画像の前景領域に基づく画像データであり、背景画像は当該撮影画像の背景領域に基づく画像データである。カメラアダプタ120は、カメラ112による撮影画像に対する所定のオブジェクトの検出処理の結果に応じて、前景領域及び背景領域を特定し、前景画像及び背景画像を生成する。所定のオブジェクトとは、例えば人物である。なお、所定のオブジェクトは特定の人物(選手、監督、及び/又は審判など)であっても良い。また、所定のオブジェクトには、ボールやゴールなど、画像パターンが予め定められている物体が含まれていてもよい。また、所定のオブジェクトとして、動体が検出されるようにしても良い。
また、データ入力制御部02120は、取得した前景画像及び背景画像をデータ同期部02130に送信し、カメラキャリブレーション撮影画像データをキャリブレーション部02140に送信する。また、データ入力制御部02120は受信したデータの圧縮伸張やデータルーティング処理等を行う機能を有する。また、制御部02110とデータ入力制御部02120は共にEthernet等のネットワークによる通信機能を有しているが、通信機能はこれらで共有されていてもよい。その場合は、制御ステーション310からの制御コマンドによる指示やスタジアムCADデータをデータ入力制御部02120で受けて、制御部02110に対して送る方法を用いてもよい。
データ同期部02130は、カメラアダプタ120から取得したデータをDRAM上に一次的に記憶し、前景画像、背景画像、音声データ及び三次元モデルデータが揃うまでバッファする。なお、前景画像、背景画像、音声データ及び三次元モデルデータをまとめて、以降では撮影データと称する。撮影データにはルーティング情報やタイムコード情報(時間情報)、カメラ識別子等のメタ情報が付与されており、データ同期部02130はこのメタ情報を元にデータの属性を確認する。これによりデータ同期部02130は、同一時刻のデータであることなどを判断してデータがそろったことを確認する。これは、ネットワークによって各カメラアダプタ120から転送されたデータについて、ネットワークパケットの受信順序は保証されず、ファイル生成に必要なデータが揃うまでバッファする必要があるためである。データがそろったら、データ同期部02130は、前景画像及び背景画像を画像処理部02150に、三次元モデルデータを三次元モデル結合部02160に、音声データを撮影データファイル生成部02180にそれぞれ送信する。なお、ここで揃えるデータは、後述される撮影データファイル生成部02180に於いてファイル生成を行うために必要なデータである。また、背景画像は前景画像とは異なるフレームレートで撮影されてもよい。例えば、背景画像のフレームレートが1fpsである場合、1秒毎に1つの背景画像が取得されるため、背景画像が取得されない時間については、背景画像が無い状態で全てのデータがそろったとしてよい。また、データ同期部02130は、所定時間を経過しデータが揃っていない場合には、データが揃わないことを示す情報をデータベース250に通知する。そして、後段のデータベース250が、データを格納する際に、カメラ番号やフレーム番号とともにデータの欠落を示す情報を格納する。これにより、データベース250に集められたカメラ112の撮影画像から所望の画像が形成できるか否かを、仮想カメラ操作UI330からバックエンドサーバ270への視点指示に応じてレンダリング前に自動通知することが可能となる。その結果、仮想カメラ操作UI330のオペレータの目視負荷を軽減できる。
CADデータ記憶部02135は制御部02110から受け取ったスタジアム形状を示す三次元データをDRAMまたはHDDやNANDメモリ等の記憶媒体に保存する。そして、画像結合部02170に対して、スタジアム形状データの要求を受け取った際に保存されたスタジアム形状データを送信する。
キャリブレーション部02140はカメラのキャリブレーション動作を行い、キャリブレーションによって得られたカメラパラメータを後述する非撮影データファイル生成部02185に送る。また同時に、自身の記憶領域にもカメラパラメータを保持し、後述する三次元モデル結合部02160にカメラパラメータ情報を提供する。
画像処理部02150は前景画像や背景画像に対して、カメラ間の色や輝度値の合わせこみ、RAW画像データが入力される場合には現像処理、及びカメラのレンズ歪みの補正等の処理を行う。そして、画像処理を行った前景画像は撮影データファイル生成部02180に、背景画像は02170にそれぞれ送信する。
三次元モデル結合部02160は、カメラアダプタ120から取得した同一時刻の三次元モデルデータをキャリブレーション部02140が生成したカメラパラメータを用いて結合する。そして、VisualHullと呼ばれる方法を用いて、スタジアム全体における前景画像の三次元モデルデータを生成する。生成した三次元モデルは撮影データファイル生成部02180に送信される。
画像結合部02170は画像処理部02150から背景画像を取得し、CADデータ記憶部02135からスタジアムの三次元形状データ(スタジアム形状データ)を取得し、取得したスタジアムの三次元形状データの座標に対する背景画像の位置を特定する。背景画像の各々についてスタジアムの三次元形状データの座標に対する位置が特定できると、背景画像を結合して1つの背景画像とする。なお、本背景画像の三次元形状データの作成については、バックエンドサーバ270が実施してもよい。
撮影データファイル生成部02180はデータ同期部02130から音声データを、画像処理部02150から前景画像を、三次元モデル結合部02160から三次元モデルデータを、画像結合部02170から三次元形状に結合された背景画像を取得する。そして、取得したこれらのデータをDBアクセス制御部02190に対して出力する。ここで、撮影データファイル生成部02180は、これらのデータをそれぞれの時間情報に基づいて対応付けて出力する。ただし、これらのデータの一部を対応付けて出力してもよい。例えば、撮影データファイル生成部02180は、前景画像と背景画像とを、前景画像の時間情報及び背景画像の時間情報に基づいて対応付けて出力する。また例えば、撮影データファイル生成部02180は、前景画像、背景画像、及び三次元モデルデータを、前景画像の時間情報、背景画像の時間情報、及び三次元モデルデータの時間情報に基づいて対応付けて出力する。なお、撮影データファイル生成部02180は、対応付けられたデータをデータの種類別にファイル化して出力してもよいし、複数種類のデータを時間情報が示す時刻ごとにまとめてファイル化して出力してもよい。このように対応付けられた撮影データが、対応付けを行う情報処理装置としてのフロントエンドサーバ230からデータベース250に出力されることで、バックエンドサーバ270は時間情報が対応する前景画像と背景画像とから仮想視点画像を生成できる。
なお、データ入力制御部02120により取得される前景画像と背景画像のフレームレートが異なる場合、撮影データファイル生成部02180は、常に同時刻の前景画像と背景画像を対応付けて出力することは難しい。そこで、撮影データファイル生成部02180は、前景画像の時間情報と所定の規則に基づく関係にある時間情報を有する背景画像とを対応付けて出力する。ここで、前景画像の時間情報と所定の規則に基づく関係にある時間情報を有する背景画像は、例えば、撮影データファイル生成部02180が取得した背景画像のうち前景画像の時間情報に最も近い時間情報を有する背景画像である。このように、所定の規則に基づいて前景画像と背景画像を対応付けることにより、前景画像と背景画像のフレームレートが異なる場合でも、近い時刻に撮影された前景画像と背景画像とから仮想視点画像を生成することができる。なお、前景画像と背景画像の対応付けの方法は上記のものに限らない。例えば、前景画像の時間情報と所定の規則に基づく関係にある時間情報を有する背景画像は、取得された背景画像であって前景画像より前の時刻に対応する時間情報を有する背景画像のうち、前景画像の時間情報に最も近い時間情報を有する背景画像であってよい。この方法によれば、前景画像よりフレームレートの低い背景画像の取得を待つことなく、対応付けられた前景画像と背景画像とを低遅延で出力することができる。また、前景画像の時間情報と所定の規則に基づく関係にある時間情報を有する背景画像は、取得された背景画像であって前景画像より後の時刻に対応する時間情報を有する背景画像のうち、前景画像の時間情報に最も近い時間情報を有する背景画像でもよい。
非撮影データファイル生成部02185は、キャリブレーション部02140からカメラパラメータ、制御部02110からスタジアムの三次元形状データを取得し、ファイル形式に応じて成形した後にDBアクセス制御部02190に送信する。なお、非撮影データファイル生成部02185に入力されるデータであるカメラパラメータまたはスタジアム形状データは、個別にファイル形式に応じて成形される。すなわち、非撮影データファイル生成部02185は、どちらか一方のデータを受信した場合、それらを個別にDBアクセス制御部02190に送信する。
DBアクセス制御部02190は、InfiniBandなどにより高速な通信が可能となるようにデータベース250と接続される。そして、撮影データファイル生成部02180及び非撮影データファイル生成部02185から受信したファイルをデータベース250に対して送信する。本実施形態では、撮影データファイル生成部02180が時間情報に基づいて対応付けた撮影データは、フロントエンドサーバ230とネットワークを介して接続される記憶装置であるデータベース250へDBアクセス制御部02190を介して出力される。ただし、対応付けられた撮影データの出力先はこれに限らない。例えば、フロントエンドサーバ230は、時間情報に基づいて対応付けられた撮影データを、フロントエンドサーバ230とネットワークを介して接続され仮想視点画像を生成する画像生成装置であるバックエンドサーバ270に出力してもよい。また、データベース250とバックエンドサーバ270の両方に出力してもよい。
また、本実施形態ではフロントエンドサーバ230が前景画像と背景画像の対応付けを行うものとするが、これに限らず、データベース250が対応付けを行ってもよい。例えば、データベース250はフロントエンドサーバ230から時間情報を有する前景画像及び背景画像を取得する。そしてデータベース250は、前景画像と背景画像とを前景画像の時間情報及び背景画像の時間情報に基づいて対応付けて、データベース250が備える記憶部に出力してもよい。
フロントエンドサーバ230のデータ入力制御部02120の機能ブロック図について図5を利用して説明する。
データ入力制御部02120は、サーバネットワークアダプタ06210、サーバ伝送部06220、及びサーバ画像処理部06230を有する。
サーバネットワークアダプタ06210は、サーバデータ受信部06211を有し、カメラアダプタ120から送信されるデータを受信する機能を有する。
サーバ伝送部06220は、サーバデータ受信部06211から受取ったデータに対する処理を行う機能を有しており、以下の機能部から構成されている。
サーバデータ伸張部06221は、圧縮されたデータを伸張する機能を有している。
サーバデータルーティング処理部06222は、後述するサーバデータルーティング情報保持部06224が保持するアドレス等のルーティング情報に基づきデータの転送先を決定し、サーバデータ受信部06211から受取ったデータを転送する。
サーバ画像伝送処理部06223は、カメラアダプタ120からサーバデータ受信部06211を介してメッセージを受取り、メッセージに含まれるデータ種別に応じて、フラグメント化されたデータを画像データまたは音声データに復元する。なお、復元後の画像データや音声データが圧縮されている場合は、サーバデータ伸張部06221で伸張処理が行われる。
サーバデータルーティング情報保持部06224は、サーバデータ受信部06211が受信したデータの送信先を決定するためのアドレス情報を保持する機能を有する。なお、ルーティング方法については後述する。
サーバ画像処理部06230は、カメラアダプタ120から受信した画像データまたは音声データに係わる処理を行う機能を有している。処理内容は、例えば、画像データのデータ実体(前景画像、背景画像、及び三次元モデル情報)に応じた、カメラ番号や画像フレームの撮影時刻、画像サイズ、画像フォーマット、及び画像の座標の属性情報などが付与されたフォーマットへの整形処理などである。
図6はデータベース250の機能ブロックを示した図である。制御部02410はCPUやDRAM、プログラムデータや各種データを記憶したHDDやNANDメモリなどの記憶媒体、及びEthernet等のハードウェアで構成される。そして、データベース250の各機能ブロック及びデータベース250のシステム全体の制御を行う。
データ入力部02420はInfiniBand等の高速な通信によって、フロントエンドサーバ230から撮影データや非撮影データのファイルを受信する。受信したファイルはキャッシュ02440に送られる。また、受信した撮影データのメタ情報を読み出し、メタ情報に記録されたタイムコード情報やルーティング情報、カメラ識別子等の情報を元に、取得したデータへのアクセスが可能になるようにデータベーステーブルを作成する。
データ出力部02430は、バックエンドサーバ270から要求されたデータが後述するキャッシュ02440、一次ストレージ02450、二次ストレージ02460のいずれに保存されているか判断する。そして、InfiniBand等の高速な通信によって、保存された先からデータを読み出してバックエンドサーバ270に送信する。
キャッシュ02440は高速な入出力スループットを実現可能なDRAM等の記憶装置を有しており、データ入力部02420から取得した撮影データや非撮影データを記憶装置に格納する。格納されたデータは一定量保持され、それを超えるデータが入力される場合に、古いデータから随時一次ストレージ02450へと書き出され、書き出し済みのデータは新たなデータによって上書きされる。ここでキャッシュ02440に一定量保存されるデータは少なくとも1フレーム分の撮影データである。それによって、バックエンドサーバ270に於いて画像のレンダリング処理を行う際に、データベース250内でのスループットを最小限に抑え、最新の画像フレームを低遅延かつ連続的にレンダリングすることが可能となる。ここで、前述の目的を達成するためにはキャッシュされているデータの中に背景画像が含まれている必要がある。そのため、背景画像を有さないフレームの撮影データがキャッシュされる場合、キャッシュ上の背景画像は更新されず、そのままキャッシュ上に保持される。キャッシュ可能なDRAMの容量は、予めシステムに設定されたキャッシュフレームサイズ、または制御ステーションからの指示によって決められる。なお、非撮影データについては、入出力の頻度が少なく、また、試合前などにおいては高速なスループットを要求されないため、すぐに一次ストレージへとコピーされる。キャッシュされたデータはデータ出力部02430によって読み出される。
一次ストレージ02450はSSD等のストレージメディアを並列につなぐなどして構成されデータ入力部02420からの大量のデータの書き込み及びデータ出力部02430からのデータ読み出しが同時に実現できるなど高速化される。そして、一次ストレージ02450には、キャッシュ02440上に格納されたデータの古いものから順に書き出される。
二次ストレージ02460はHDDやテープメディア等で構成され、高速性よりも大容量が重視され、一次ストレージと比較して安価で長期間の保存に適するメディアであることが求められる。二次ストレージ02460には、撮影が完了した後、データのバックアップとして一次ストレージ02450に格納されたデータが書き出される。
図7は、本実施形態にかかるバックエンドサーバ270の構成を示している。バックエンドサーバ270は、データ受信部03001、背景テクスチャ貼り付け部03002、前景テクスチャ決定部03003、テクスチャ境界色合わせ部03004、仮想視点前景画像生成部03005、及びレンダリング部03006を有する。さらに、仮想視点音声生成部03007、合成部03008、画像出力部03009、前景オブジェクト決定部03010、要求リスト生成部03011、要求データ出力部03012、及びレンダリングモード管理部03014を有する。
データ受信部03001は、データベース250およびコントローラ300から送信されるデータを受信する。またデータベース250からは、スタジアムの形状を示す三次元データ(スタジアム形状データ)、前景画像、背景画像、前景画像の三次元モデル(以降、前景三次元モデルと称する)、及び音声を受信する。
また、データ受信部03001は、仮想視点画像の生成に係る視点を指定する指定装置としてのコントローラ300から出力される仮想カメラパラメータを受信する。仮想カメラパラメータとは、仮想視点の位置や姿勢などを表すデータであり、例えば、外部パラメータの行列と内部パラメータの行列が用いられる。
なお、データ受信部03001がコントローラ300から取得するデータは仮想カメラパラメータに限らない。例えばコントローラ300から出力される情報は、視点の指定方法、コントローラが動作させているアプリケーションを特定する情報、コントローラ300の識別情報、及びコントローラ300を使用するユーザの識別情報の少なくとも何れかを含んでいてよい。また、データ受信部03001は、コントローラ300から出力される上記の情報と同様の情報を、エンドユーザ端末190から取得してもよい。さらに、データ受信部03001は、データベース250やコントローラ300などの外部の装置から、複数のカメラ112に関する情報を取得してもよい。複数のカメラ112に関する情報は、例えば、複数のカメラ112の数に関する情報や複数のカメラ112の動作状態に関する情報などである。カメラ112の動作状態には、例えば、カメラ112の正常状態、故障状態、待機状態、起動状態、及び再起動状態の少なくとも何れかが含まれる。
背景テクスチャ貼り付け部03002は、背景メッシュモデル管理部03013から取得する背景メッシュモデル(スタジアム形状データ)で示される三次元空間形状に対して背景画像をテクスチャとして貼り付ける。これにより背景テクスチャ貼り付け部03002は、テクスチャ付き背景メッシュモデルを生成する。メッシュモデルとは、例えばCADデータなど三次元の空間形状を面の集合で表現したデータのことである。テクスチャとは、物体の表面の質感を表現するために貼り付ける画像のことである。
前景テクスチャ決定部03003は、前景画像及び前景三次元モデル群より前景三次元モデルのテクスチャ情報を決定する。
前景テクスチャ境界色合わせ部03004は、各前景三次元モデルのテクスチャ情報と各三次元モデル群からテクスチャの境界の色合わせを行い、前景オブジェクト毎に色付き前景三次元モデル群を生成する。
仮想視点前景画像生成部03005は、仮想カメラパラメータに基づいて、前景画像群を仮想視点からの見た目となるように透視変換する。レンダリング部03006は、レンダリングモード管理部03014で決定された、仮想視点画像の生成に用いられる生成方式に基づいて、背景画像と前景画像をレンダリングして全景の仮想視点画像を生成する。
本実施形態では仮想視点画像の生成方式として、モデルベースレンダリング(Model-Based Rendering:MBR)とイメージベース(Image-Based Rendering:IBR)の2つのレンダリングモードが用いられる。
MBRとは、被写体を複数の方向から撮影した複数の撮影画像に基づいて生成される三次元モデルを用いて仮想視点画像を生成する方式である。具体的には、視体積交差法、Multi-View-Stereo(MVS)などの三次元形状復元手法により得られた対象シーンの三次元形状(モデル)を利用し,仮想視点からのシーンの見えを画像として生成する技術である。
IBRとは、対象のシーンを複数視点から撮影した入力画像群を変形、合成することによって仮想視点からの見えを再現した仮想視点画像を生成する技術である。本実施形態では、IBRを用いる場合、MBRを用いて三次元モデルを生成するための複数の撮影画像より少ない1又は複数の撮影画像に基づいて仮想視点画像が生成される。
レンダリングモードがMBRの場合、背景メッシュモデルと前景テクスチャ境界色合わせ部03004で生成した前景三次元モデル群を合成することで全景モデルが生成され、その全景モデルから仮想視点画像が生成される。
レンダリングモードがIBRの場合、背景テクスチャモデルに基づいて仮想視点から見た背景画像が生成され、そこに仮想視点前景画像生成部03005で生成された前景画像を合成することで仮想視点画像が生成される。
なお、レンダリング部03006はMBRとIBR以外のレンダリング手法を用いてもよい。また、レンダリングモード管理部03014が決定する仮想視点画像の生成方式はレンダリングの方式に限らず、レンダリングモード管理部03014は仮想視点画像を生成するためのレンダリング以外の処理の方式を決定してもよい。レンダリングモード管理部03014は、仮想視点画像の生成に用いられる生成方式としてのレンダリングモードを決定し、決定結果を保持する。
本実施形態では、レンダリングモード管理部03014は、複数のレンダリングモードから使用するレンダリングモードを決定する。この決定は、データ受信部03001が取得した情報に基づいて行われる。例えば、レンダリングモード管理部03014は、取得された情報から特定されるカメラの数が閾値以下である場合に、仮想視点画像の生成に用いられる生成方式をIBRに決定する。一方、カメラ数が閾値より多い場合は生成方式をMBRに決定する。これにより、カメラ数が多い場合にはMBRを用いて仮想視点画像を生成することで視点の指定可能範囲が広くなる。また、カメラ数が少ない場合には、IBRを用いることで、MBRを用いた場合の三次元モデルの精度の低下による仮想視点画像の画質低下を回避することができる。また例えば、撮影から画像出力までの許容される処理遅延時間の長短に基づいて生成方式を決めてもよい。遅延時間が長くても視点の自由度を優先する場合はMBR、遅延時間が短いことを要求する場合はIBRを用いる。また例えば、コントローラ300やエンドユーザ端末190が視点の高さを指定可能であることを示す情報をデータ受信部03001が取得した場合には、仮想視点画像の生成に用いられる生成方式をMBRに決定する。これにより、生成方式がIBRであることによってユーザによる視点の高さの変更要求が受け入れられなくなることを防ぐことができる。このように、状況に応じて仮想視点画像の生成方式を決定することで、適切に決定された生成方式で仮想視点画像を生成できる。また、複数のレンダリングモードを要求に応じて切り替え可能な構成にすることで、柔軟にシステムを構成することが可能になり、本実施形態をスタジアム以外の被写体にも適用可能となることを明記しておく。
なお、レンダリングモード管理部03014が保持するレンダリングモードは、システムに予め設定された方式であってもよい。また、仮想カメラ操作UI330やエンドユーザ端末190を操作するユーザがレンダリングモードを任意に設定できてもよい。
仮想視点音声生成部03007は、仮想カメラパラメータに基づいて、仮想視点において聞こえる音声(音声群)を生成する。合成部03008は、レンダリング部03006で生成された画像群と仮想視点音声生成部03007で生成された音声を合成して仮想視点コンテンツを生成する。
画像出力部03009は、コントローラ300とエンドユーザ端末190へEthernetを用いて仮想視点コンテンツを出力する。ただし、外部への伝送手段はEthernetに限定されるものではなく、SDI、DisplayPort、及びHDMI(登録商標)などの信号伝送手段を用いてもよい。なお、バックエンドサーバ270は、レンダリング部03006で生成された、音声を含まない仮想視点画像を出力してもよい。
前景オブジェクト決定部03010は、仮想カメラパラメータと前景三次元モデルに含まれる前景オブジェクトの空間上の位置を示す前景オブジェクトの位置情報から、表示される前景オブジェクト群を決定して、前景オブジェクトリストを出力する。つまり、前景オブジェクト決定部03010は、仮想視点の画像情報を物理的なカメラ112にマッピングする処理を実施する。本仮想視点は、レンダリングモード管理部03014で決定されるレンダリングモードに応じてマッピング結果が異なる。そのため、複数の前景オブジェクトを決定する制御部が前景オブジェクト決定部03010に配備されレンダリングモードと連動して制御を行うことを明記しておく。
要求リスト生成部03011は、指定時間の前景オブジェクトリストに対応する前景画像群と前景三次元モデル群、及び背景画像と音声データをデータベース250に要求するための、要求リストを生成する。前景オブジェクトについては仮想視点を考慮して選択されたデータがデータベース250に要求されるが、背景画像と音声データについてはそのフレームに関する全てのデータが要求される。バックエンドサーバ270の起動後、背景メッシュモデルが取得されるまで背景メッシュモデルの要求リストが生成される。
要求データ出力部03012は、入力された要求リストを元にデータベース250に対してデータ要求のコマンドを出力する。背景メッシュモデル管理部03013は、データベース250から受信した背景メッシュモデルを記憶する。
なお、本実施形態ではバックエンドサーバ270が仮想視点画像の生成方式の決定と仮想視点画像の生成の両方を行う場合を中心に説明するが、これに限らない。即ち、生成方式を決定した情報処理装置がその決定結果に応じたデータを出力すればよい。例えば、フロントエンドサーバ230が、複数のカメラ112に関する情報や仮想視点画像の生成に係る視点を指定する装置から出力される情報などに基づいて、仮想視点画像の生成に用いられる生成方式を決定してもよい。そしてフロントエンドサーバ230は、カメラ112による撮影に基づく画像データと決定された生成方式を示す情報とを、データベース250などの記憶装置及びバックエンドサーバ270などの画像生成装置の少なくとも何れかに出力してもよい。この場合には、例えばフロントエンドサーバ230が出力した生成方式を示す情報に基づいてバックエンドサーバ270が仮想視点画像を生成する。フロントエンドサーバ230が生成方式を決定することで、決定された方式とは別の方式での画像生成のためのデータをデータベース250やバックエンドサーバ270が処理することによる処理負荷を低減できる。一方、本実施形態のようにバックエンドサーバ270が生成方式を決定する場合、データベース250は複数の生成方式に対応可能なデータを保持するため、複数の生成方式それぞれに対応する複数の仮想視点画像の生成が可能となる。
図8は、仮想カメラ操作UI330の機能構成を説明するブロック図である。仮想カメラ08001について図37(a)を用いて説明する。仮想カメラ08001は、設置されたどのカメラ112とも異なる視点において撮影を行うことができる仮想的なカメラである。即ち、画像処理システム100において生成される仮想視点画像が、仮想カメラ08001による撮影画像である。図37(a)において、円周上に配置された複数のセンサシステム110それぞれがカメラ112を有している。例えば、仮想視点画像を生成することにより、あたかもサッカーゴールの近くの仮想カメラ08001で撮影されたかのような画像を生成することができる。仮想カメラ08001の撮影画像である仮想視点画像は、設置された複数のカメラ112の画像を画像処理することで生成される。オペレータ(ユーザ)は仮想カメラ08001の位置等操作することで、自由な視点からの撮影画像を得ることができる。
仮想カメラ操作UI330は、仮想カメラ管理部08130および操作UI部08120を有する。これらは同一機器上に実装されてもよいし、それぞれサーバとなる装置とクライアントとなる装置に別々に実装されてもよい。例えば、放送局が使用する仮想カメラ操作UI330においては、中継車内のワークステーションに仮想カメラ管理部08130と操作UI部08120が実装されてもよい。また例えば、仮想カメラ管理部08130をwebサーバに実装し、エンドユーザ端末190に操作UI部08120を実装することで、同様の機能を実現してもよい。
仮想カメラ操作部08101は、オペレータの仮想カメラ08001に対する操作、すなわち仮想視点画像の生成に係る視点を指定するためのユーザによる指示を受け付けて処理する。オペレータの操作内容は、例えば、位置の変更(移動)、姿勢の変更(回転)、及びズーム倍率の変更などである。オペレータは、仮想カメラ08001を操作するために、例えば、ジョイスティック、ジョグダイヤル、タッチパネル、キーボード、及びマウスなどの入力装置を使う。各入力装置による入力と仮想カメラ08001の操作との対応は予め決められる。例えば、キーボードの「W」キーを、仮想カメラ08001を前方へ1メートル移動する操作に対応付ける。また、オペレータは軌跡を指定して仮想カメラ08001を操作することができる。例えばオペレータは、ゴールポストを中心とする円周上を仮想カメラ08001が回るという軌跡を、タッチパッド上に円を描くように触れることで指定する。仮想カメラ08001は、指定された軌跡に沿ってゴールポストの回りを移動する。このとき、仮想カメラ08001が常にゴールポストの方を向くように自動で姿勢を変更してもよい。仮想カメラ操作部08101は、ライブ画像およびリプレイ画像の生成に利用することができる。リプレイ画像を生成する際は、カメラの位置及び姿勢の他に時間を指定する操作が行われる。リプレイ画像では、例えば、時間を止めて仮想カメラ08001を移動させることも可能である。
仮想カメラパラメータ導出部08102は、仮想カメラ08001の位置や姿勢などを表す仮想カメラパラメータを導出する。仮想パラメータは、演算によって導出されてもよいし、ルックアップテーブルの参照などによって導出されてもよい。仮想カメラパラメータとして、例えば、外部パラメータを表す行列と内部パラメータを表す行列が用いられる。ここで、仮想カメラ08001の位置と姿勢は外部パラメータに含まれ、ズーム値は内部パラメータに含まれる。
仮想カメラ制約管理部08103は、仮想カメラ操作部08101により受け付けられる指示に基づく視点の指定が制限される制限領域を特定するための情報を取得し管理する。この情報は例えば、仮想カメラ08001の位置や姿勢、ズーム値などに関する制約である。仮想カメラ08001は、カメラ112と異なり、自由に視点を移動して撮影を行うことができるが、常にあらゆる視点からの画像を生成できるとは限らない。例えば、どのカメラ112にも映っていない対象物が映る向きに仮想カメラ08001を向けても、その撮影画像を取得することはできない。また、仮想カメラ08001のズーム倍率を上げると、解像度の制約により画質が劣化する。そこで、一定基準の画質を保つ範囲のズーム倍率などを仮想カメラ制約としてよい。仮想カメラ制約は、例えば、カメラの配置などから事前に導出しておいてもよい。また、伝送部06120がネットワークの負荷に応じて伝送データ量の削減を図ることがある。このデータ量削減により、撮影画像に関するパラメータが変化し、画像を生成できる範囲や画質を保つことができる範囲が動的に変わる。仮想カメラ制約管理部08103は、伝送部06120から出力データのデータ量の削減に用いた方法を示す情報を受け取り、その情報に応じて仮想カメラ制約を動的に更新する構成であってもよい。これにより、伝送部06120によりデータ量削減が図られても、仮想視点画像の画質を一定基準に保つことが可能となる。
また、仮想カメラに関する制約は上記の物に限定されない。本実施形態では、視点の指定が制限される制限領域(仮想カメラ制約を満たさない領域)は、画像処理システム100に含まれる装置の動作状態及び仮想視点画像を生成するための画像データに関するパラメータの少なくとも何れかに応じて変化する。例えば、制限領域は、画像処理システム100において伝送される画像データのデータ量が所定範囲内となるように制御されるパラメータに応じて変化する。当該パラメータは、画像データのフレームレート、解像度、量子化ステップ、及び撮影範囲などのうち少なくとも何れかを含む。例えば、伝送データ量削減のために画像データの解像度が低減されると、所定の画質を維持可能なズーム倍率の範囲が変化する。このような場合に、仮想カメラ制約管理部08103がパラメータに応じて変化する制限領域を特定する情報を取得することで、仮想カメラ操作UI330はパラメータの変化に応じた範囲でユーザによる視点の指定がなされるよう制御できる。なお、パラメータの内容は上記のものに限定されない。また、本実施形態において上記のデータ量が制御される画像データは複数のカメラ112による複数の撮影画像の差分に基づいて生成されるデータであるものとするが、これに限らず、例えば撮影画像そのものでもよい。
また例えば、制限領域は、画像処理システム100に含まれる装置の動作状態に応じて変化する。ここで画像処理システム100に含まれる装置には、例えばカメラ112及びカメラ112による撮影画像に対する画像処理を行って画像データを生成するカメラアダプタ120の少なくとも何れかが含まれる。そして装置の動作状態には、例えば当該装置の正常状態、故障状態、起動準備状態、及び再起動状態の少なくとも何れかが含まれる。例えば、何れかのカメラ112が故障状態や再起動状態にある場合、そのカメラの周辺位置に視点を指定することができなくなる場合が考えられる。このような場合に、仮想カメラ制約管理部08103が装置の動作状態に応じて変化する制限領域を特定する情報を取得することで、仮想カメラ操作UI330は装置の動作状態の変化に応じた範囲でユーザによる視点の指定がなされるよう制御できる。なお、制限領域の変化に関係する装置及びその動作状態は上記のものに限定されない。
衝突判定部08104は、仮想カメラパラメータ導出部08102で導出された仮想カメラパラメータが仮想カメラ制約を満たしているかを判定する。制約を満たしていない場合は、例えば、オペレータによる操作入力をキャンセルし、制約を満たす位置から仮想カメラ08001が動かないよう制御したり、制約を満たす位置に仮想カメラ08001を戻したりする。
フィードバック出力部08105は、衝突判定部08104の判定結果をオペレータにフィードバックする。例えば、オペレータの操作により、仮想カメラ制約が満たされなくなる場合に、そのことをオペレータに通知する。例えば、オペレータが仮想カメラ08001を上方に移動しようと操作したが、移動先が仮想カメラ制約を満たさないとする。その場合、オペレータに、これ以上上方に仮想カメラ08001を移動できないことを通知する。通知方法としては、音、メッセージ出力、画面の色変化、及び仮想カメラ操作部08101をロックする等の方法がある。さらには、制約を満たす位置まで仮想カメラの位置を自動で戻してもよく、これによりオペレータの操作簡便性につながる効果がある。フィードバックが画像表示により行われる場合、フィードバック出力部08105は、仮想カメラ制約管理部08103が取得した情報に基づいて、制限領域に応じた表示制御に基づく画像を表示部に表示させる。例えば、フィードバック出力部08105は、仮想カメラ操作部08101により受け付けられた指示に応じて、当該指示に対応する視点が制限領域内であることを表す画像を表示部に表示させる。これにより、オペレータは指定している視点が制限領域内であって所望の仮想視点画像を生成できない虞があることを認識でき、制限領域外の位置(制約を満たす位置)に視点を指定し直すことができる。即ち、仮想視点画像の生成において、状況に応じて変化する範囲内で視点を指定できるようになる。なお、制限領域に応じた表示制御を行う制御装置として仮想カメラ操作UI330が表示部に表示させる内容はこれに限定されない。例えば、視点の指定の対象となる領域(スタジアムの内部など)のうち制限領域に当たる部分を所定の色で塗りつぶした画像が表示されてもよい。本実施形態では表示部が仮想カメラ操作UI330と接続される外部のディスプレイであるものとするが、これに限らず、表示部が仮想カメラ操作UI330の内部に存在してもよい。
仮想カメラパス管理部08106は、オペレータの操作に応じた仮想カメラ08001のパス(仮想カメラパス08002)を管理する。仮想カメラパス08002とは、仮想カメラ08001の1フレームごと位置や姿勢を表す情報の列である。図37(b)を参照して説明する。例えば、仮想カメラ08001の位置や姿勢を表す情報として仮想カメラパラメータが用いられる。例えば、60フレーム/秒のフレームレートの設定における1秒分の情報は、60個の仮想カメラパラメータの列となる。仮想カメラパス管理部08106は、衝突判定部08104で判定済みの仮想カメラパラメータを、バックエンドサーバ270に送信する。バックエンドサーバ270は、受信した仮想カメラパラメータを用いて、仮想視点画像及び仮想視点音声を生成する。また、仮想カメラパス管理部08106は、仮想カメラパラメータを仮想カメラパス08002に付加して保持する機能も有する。例えば、仮想カメラ操作UI330を用いて、1時間分の仮想視点画像及び仮想視点音声を生成した場合、1時間分の仮想カメラパラメータが仮想カメラパス08002として保存される。本仮想カメラパスを保存しておくことによって、データベースの二次ストレージ02460に蓄積された画像情報と仮想カメラパスを後から参照することで、仮想視点画像及び仮想視点音声を再度生成することが可能になる。つまり、高度な仮想カメラ操作を行うオペレータが生成した仮想カメラパスと二次ストレージ02460に蓄積された画像情報を他のユーザが再利用できる。なお、複数の仮想カメラパスに対応する複数のシーンを選択可能となるように仮想カメラ管理部08130に蓄積することもできる。複数の仮想カメラパスを仮想カメラ管理部08130に蓄積する際には、各仮想カメラパスに対応するシーンのスクリプトや試合の経過時間、シーンの前後指定時間、及びプレーヤ情報等のメタ情報もあわせて入力及び蓄積することができる。仮想カメラ操作UI330は、これらの仮想カメラパスを仮想カメラパラメータとして、バックエンドサーバ270に通知する。
エンドユーザ端末190は、バックエンドサーバ270に仮想カメラパスを選択するための選択情報を要求することで、シーン名やプレーヤ、及び試合経過時間などから、仮想カメラパスを選択できる。バックエンドサーバ270はエンドユーザ端末190に選択可能な仮想カメラパスの候補を通知し、エンドユーザはエンドユーザ端末190を操作して、複数の候補の中から希望の仮想カメラパスを選択する。そして、エンドユーザ端末190は選択された仮想カメラパスに応じた画像生成をバックエンドサーバ270に要求することで、画像配信サービスをインタラクティブに享受することができる。
オーサリング部08107は、オペレータがリプレイ画像を生成する際の編集機能を提供する。オーサリング部08107は、ユーザ操作に応じて、リプレイ画像用の仮想カメラパス08002の初期値として、仮想カメラパス管理部08106が保持する仮想カメラパス08002の一部を取り出す。前述したように、仮想カメラパス管理部08106には、仮想カメラパス08002と対応付けてシーン名、プレーヤ、経過時間、及びシーンの前後指定時間などのメタ情報が保持されている。例えば、シーン名がゴールシーン、シーンの前後指定時間が前後合わせて10秒分である仮想カメラパス08002が取り出される。また、オーサリング部08107は、編集したカメラパスに再生速度を設定する。例えば、ボールがゴールに飛んで行く間の仮想カメラパス08002にスロー再生を設定する。なお、異なる視点からの画像に変更する場合、つまり仮想カメラパス08002を変更する場合は、ユーザは仮想カメラ操作部08101を用いて再度、仮想カメラ08001を操作する。
仮想カメラ画像・音声出力部08108は、バックエンドサーバ270から受け取った仮想カメラ画像・音声を出力する。オペレータは出力された画像及び音声を確認しながら仮想カメラ08001を操作する。なお、フィードバック出力部08105によるフィードバックの内容によっては、仮想カメラ画像・音声出力部08108は、制限領域に応じた表示制御に基づく画像を表示部に表示させる。例えば、仮想カメラ画像・音声出力部08108は、オペレータが指定した視点の位置が制限領域に含まれる場合に、指定された位置の近辺であり且つ制限領域外である位置を視点とした仮想視点画像を表示させてもよい。これにより、オペレータが制限領域外に視点を指定し直す手間が削減される。
次に、視聴者(ユーザ)が使用するエンドユーザ端末190について、説明する。図9は、エンドユーザ端末190の構成図である。
サービスアプリケーションが動作するエンドユーザ端末190は、例えばPC(Personal Computer)である。なお、エンドユーザ端末190は、PCに限らず、スマートフォンやタブレット端末、高精細な大型ディスプレイでもよいものとする。
エンドユーザ端末190は、インターネット回線9001を介して、画像を配信するバックエンドサーバ270と接続されている。例えば、エンドユーザ端末190(PC)は、LAN(Local Area Network)ケーブルや、無線LANを介してルータおよびインターネット回線9001に接続されている。
また、エンドユーザ端末190には、視聴者がスポーツ放送画像等の仮想視点画像を視聴するためのディスプレイ9003と、視聴者による視点変更などの操作を受け付けるユーザ入力機器9002とが、接続されている。例えば、ディスプレイ9003は液晶ディスプレイであり、PCとDisplay Portケーブルを介して接続されている。
ユーザ入力機器9002はマウスやキーボードであり、PCとUSB(Universal Serial Bus)ケーブルを介して接続されている。
エンドユーザ端末190の内部機能について説明する。図10はエンドユーザ端末190の機能ブロック図である。
アプリケーション管理部10001は、後述する基本ソフト部10002から入力されたユーザ入力情報を、バックエンドサーバ270のバックエンドサーバコマンドに変換して、基本ソフト部10002へ出力する。また、アプリケーション管理部10001は、基本ソフト部10002から入力された画像を、所定の表示領域に描画するための画像描画指示を、基本ソフト部10002へ出力する。
基本ソフト部10002は、例えばOS(Operating System)であり、後述するユーザ入力部10004から入力されたユーザ入力情報を、アプリケーション管理部10001へ出力する。また、後述するネットワーク通信部10003から入力された画像や音声をアプリケーション管理部10001へ出力したり、アプリケーション管理部10001から入力されたバックエンドサーバコマンドをネットワーク通信部10003へ出力したりする。さらに、アプリケーション管理部10001から入力された画像描画指示を、画像出力部10005へ出力する。
ネットワーク通信部10003は、基本ソフト部10002から入力されたバックエンドサーバコマンドを、LANケーブル上で通信可能なLAN通信信号に変換して、バックエンドサーバ270へ出力する。そして、バックエンドサーバ270から受信した画像や音声データが加工可能となるように、基本ソフト部10002へデータを渡す。
ユーザ入力部10004は、キーボード入力(物理キーボード又はソフトキーボード)やボタン入力に基づくユーザ入力情報や、ユーザ入力機器からUSBケーブルを介して入力されたユーザ入力情報を取得し、基本ソフト部10002へ出力する。
画像出力部10005は、基本ソフト部10002から出力された画像表示指示に基づく画像を画像信号に変換して、外部ディスプレイや一体型のディスプレイなどに出力する。
音声出力部10006は、基本ソフト部10002から出力された音声出力指示に基づく音声データを外部スピーカあるいは一体型スピーカに出力する。
端末属性管理部10007は、端末の表示解像度、画像符号化コーデック種別、及び端末種別(スマートフォンなのか、大型ディスプレイなのかなど)を管理する。
サービス属性管理部10008は、エンドユーザ端末190に提供するサービス種別に関する情報を管理する。例えば、エンドユーザ端末190に搭載されるアプリケーションの種別や利用可能な画像配信サービスなどが管理される。
課金管理部10009では、ユーザの画像配信サービスへの登録決済状況や課金金額に応じた、受信可能な画像配信シーン数の管理などが行われる。
次に本実施の形態におけるワークフローについて説明する。競技場やコンサートホールなどの施設に複数のカメラ112やマイク111を設置し撮影を行う場合のワークフローについて説明する。
図11はワークフローの全体像を記したフローチャートである。なお、以下で説明するワークフローの処理は、特に明示の記述がない場合、コントローラ300の制御により実現される。すなわち、コントローラ300が、画像処理システム100内の他の装置(例えばバックエンドサーバ270やデータベース250等)を制御することにより、ワークフローの制御が実現される。
図11の処理開始前において、画像処理システム100の設置や操作を行う操作者(ユーザ)は設置前に必要な情報(事前情報)を収集し計画の立案を行う。また、操作者は、図11の処理開始前において、対象となる施設に機材を設置しているものとする。
S1100において、コントローラ300の制御ステーション310は、ユーザから事前情報に基づく設定を受け付ける。S1100の詳細は図12を用いて後述する。つぎに、ステップS1101において画像処理システム100の各装置は、ユーザからの操作に基づいてコントローラ300から発行されたコマンドに従って、システムの動作確認のための処理を実行する。ステップS1101の詳細は図13を用いて後述する。
つぎに、ステップS1102において、仮想カメラ操作UI330は、競技等のための撮影開始前に画像や音声を出力する。これにより、ユーザは、競技等の前に、マイク111により集音された音声やカメラ112により撮影された画像を確認できる。ステップS1102の詳細は図14を用いて後述する。
そして、S1103において、コントローラ300の制御ステーション310は、各マイク111に集音を実施させ、各カメラ112に撮影を実施させる。本ステップにおける撮影はマイク111を用いた集音を含むものとするがこれに限らず、画像の撮影だけであってもよい。S1103の詳細は図15及び図16を用いて後述する。そして、ステップS1101で行った設定を変更する場合、または撮影を終了する場合はステップS1104に進む。つぎに、S1104において、S1101で行われた設定を変更して撮影を継続する場合はS1105に進み、撮影を完了する場合はS1106に進む。S1104における判定は、典型的には、ユーザからコントローラ300への入力に基づいて行われる。ただしこの例に限らない。S1105において、コントローラ300は、S1101で行われた設定を変更する。変更内容は、典型的には、S1104にて取得されたユーザ入力に基づいて決定される。本ステップにおける設定の変更において撮影を停止する必要がある場合は、一度撮影を停止し、設定を変更した後に撮影を再開する。また、撮影を停止する必要がない場合は、撮影と並行して設定の変更を実施する。
S1106において、コントローラ300は、複数のカメラ112により撮影された画像及び複数のマイク111により集音された音声の編集を実施する。当該編集は、典型的には、仮想カメラ操作UI330を介して入力されたユーザ操作に基づいて行われる。
なお、S1106とS1103の処理は並行して行われるようにしても良い。例えば、スポーツ競技やコンサートなどがリアルタイムに配信される(例えば競技中に競技の画像が配信される)場合は、S1103の撮影とS1106の編集が同時に実施される。また、スポーツ競技におけるハイライト画像が競技後に配信される場合は、S1104において撮影を終了した後に編集が実施される。
次に、前述したS1100(設置前処理)の詳細を、図12を用いて説明する。まず、S1200において制御ステーション310は撮影の対象となる施設に関する情報(スタジアム情報)に関するユーザからの入力を受け付ける。
本ステップにおけるスタジアム情報とは、スタジアムの形状、音響、照明、電源、伝送環境、及びスタジアムの三次元モデルデータなどを指す。つまりスタジアム情報には、上述のスタジアム形状データが含まれる。なお本実施形態では撮影対象となる施設がスタジアムである場合に関して記述している。これは、競技場で開催されるスポーツ競技の画像生成を想定したものである。ただし、室内で開催されるスポーツ競技もあるため、撮影対象の施設はスタジアムに限定されるものではない。また、コンサートホールにおけるコンサートの仮想視点画像を生成する場合もあるし、スタジアムでの野外コンサートの画像を生成する場合もあるため、撮影対象のイベントは競技に限定されるものではないことを明記しておく。
つぎに、ステップS1201において制御ステーション310は、機器情報に関するユーザからの入力を受け付ける。本ステップにおける機器情報とは、カメラ、雲台、レンズ、及びマイク等の撮影機材、LAN、PC、サーバ、及びケーブル等の情報機器、及び中継車に関する情報を指す。ただし必ずしもこれらすべての情報を入力しなければならないわけではない。
つぎに、S1202において制御ステーション310は、S1201で機器情報が入力された撮影機材のうち、カメラ、雲台、及びマイクの配置情報に関する入力を受けつける。配置情報は、先述のスタジアムの三次元モデルデータを利用して入力することができる。
つぎに、S1203において制御ステーション310は、画像処理システム100の運用情報に関するユーザ入力を受け付ける。本ステップにおける運用情報とは、撮影対象、撮影時間、カメラワーク、及び注視点などを指す。例えば、撮影対象が、撮影画像において選手等の前景画像が試合と比較して圧倒的に多い開会式などである場合には、画像生成の手法をその状況に適した手法に変更しうる。また、陸上競技であるかフィールドを使うサッカー競技等であるかなどの競技種別に応じて、注視点の変更と、カメラワークの制約条件変更が行われうる。これらの運用情報の組み合わせで構成される設定情報のテーブルが制御ステーション310で管理、変更、及び指示される。本制御については後述する。前述したS1200からS1203により、システム設置前のワークフローを完了する。
次に、前述したS1101(設置時処理)の詳細を、図13を用いて説明する。まず、S1300において、制御ステーション310は、設置機材の過不足の有無に関するユーザ入力を受け付ける。ユーザは、S1201で入力された機器情報と設置する機材を比較し過不足の有無を確認することで、設置機材の過不足の有無を判定できる。つぎに、S1301において制御ステーション310は、S1300で不足すると判定された機材の設置確認処理を実行する。つまり、ユーザは、S1300とS1301との間に、不足機材を設置することができ、制御ステーション310は、ユーザにより不足機材が設置されたことを確認する。
つぎに、S1302において、制御ステーション310は、S1301で設置された機材を起動し正常に動作するかの調整前システム動作確認を行う。なお、S1302の処理は、ユーザがシステム動作確認を実施し、その確認結果を制御ステーション310に対してユーザが入力するようにしても良い。
ここで、機材の過不足や動作にエラーが発生した場合には、制御ステーション310に対して、エラー通知が行われる(S1303)。制御ステーション310は、エラーが解除されるまで次のステップには進まないロック状態となる。エラー状態が解除された場合には、制御ステーション310に正常通知が行われ(S1304)、次のステップに進む。これにより、初期段階でエラーを検知することができる。確認の後、カメラ112に関する処理についてはS1305へ、マイク111に関する処理についてはS1308に進む。
最初に、カメラ112について述べる。S1305において、制御ステーション310は、設置されたカメラ112の調整を実施する。本ステップのカメラ112の調整とは、画角合わせと色合わせを指し、設置されたカメラ112全てについて実施される。S1305の調整は、ユーザ操作に基づいて行われるようにしても良いし、自動調整機能により実現されても良い。
また、画角合わせでは、ズーム、パン、チルト、及びフォーカスの調整が並行して実施され、それらの調整結果が制御ステーション310に保存される。そして、色合わせでは、IRIS、ISO/ゲイン、ホワイトバランス、シャープネス、及びシャッタースピードの調整が同時に実施され、それらの調整結果が制御ステーション310に保存される。
つぎに、S1306において、制御ステーション310は、設置されたカメラ全てが同期する様に調整する。S1306における同期の調整は、ユーザ操作に基づいて行われるようにしても良いし、自動調整機能により実現されても良い。さらに、S1307において、制御ステーション310は、カメラ設置時キャリブレーションを行う。より具体的には、制御ステーション310は、設置されたカメラ全ての座標が世界座標に一致する様に調整を行う。詳細なキャリブレーションについては図17において説明する。なお、カメラ112の制御コマンドやタイムサーバとの同期に関するネットワーク経路の疎通確認もあわせて実施される。そして、マイク調整が進むまで調整後システム動作正常確認処理で待つ(S1311)。
次に、マイク111に関する処理について述べる。まず、S1308において、制御ステーション310は、設置されたマイク111の調整を実施する。本ステップのマイク111の調整とは、ゲイン調整を指し、設置したマイク全てについて実施される。S1308におけるマイク111の調整は、ユーザ操作に基づいて行われても良いし、自動調整機能により実現されても良い。
つぎに、S1309において、制御ステーション310は、設置されたマイク全てが同期する様に調整する。具体的には、同期クロックの確認を実施する。S1309における同期の調整は、ユーザ操作に基づいて行われるようにしても良いし、自動調整機能により実現されても良い。
つぎに、S1310において、制御ステーション310は、設置されたマイク111のうち、フィールドに設置されたマイク111について位置の調整を実施する。S1310におけるマイク111の位置の調整は、ユーザ操作に基づいて行われても良いし、自動調整機能により実現されても良い。なお、マイク111の制御コマンドやタイムサーバとの同期に関するネットワーク経路の疎通確認もあわせて実施される。
つぎに、S1311において、制御ステーション310は、カメラ112a-112z、およびマイク111a-111zが正しく調整できたかを確認することを目的として調整後システム動作確認を実施する。S1311の処理は、ユーザ指示に基づいて実行されうる。カメラ112、マイク111ともに調整後システム動作正常確認がとれた場合には、S1313において、制御ステーション310へ正常通知が行われる。一方、エラーが発生した場合には、カメラ112あるいはマイク111の種別及び個体番号と共に制御ステーション310へエラー通知が行われる(S1312)。制御ステーション310は、エラーが発生した機器の種別と個体番号をもとに再調整の指示を出す。
次に、前述したS1102(撮影前処理)の詳細を、図14を用いて説明する。S1400において、仮想カメラ操作UI330は、バックエンドサーバ270が処理を施した画像を表示する。コントローラ300の操作者(ユーザ)は、仮想カメラ操作UI330の画面を確認することで、バックエンドサーバ270による処理結果を確認できる。
また、S1400と並行してS1401の動作が行われる。S1401において、仮想カメラ操作UI330は、バックエンドサーバ270が処理を施した音声を出力する。コントローラ300の操作者(ユーザ)は、仮想カメラ操作UI330による音声出力を確認することで、バックエンドサーバ270による処理結果を確認できる。
つぎに、S1402において、仮想カメラ操作UI330は、バックエンドサーバ270が処理を施した画像及び音声が結合され、配信信号に変換された結果を出力する。コントローラ300の操作者(ユーザ)は、仮想カメラ操作UI330による配信信号の出力を確認することで、バックエンドサーバ270による処理済みの画像及び音声を確認できる。
つぎに、前述したS1103(撮影時処理)の詳細を図15及び図16を用いて説明する。
S1103では、制御ステーション310においてシステムの制御及び確認動作が行われ、且つ、仮想カメラ操作UI330において画像及び音声を生成する動作が行われる。
図15ではシステムの制御及び確認動作を説明し、図16では画像及び音声を生成する動作を説明する。最初に図15を用いて説明する。前述した制御ステーション310で行われるシステムの制御及び確認動作では、画像と音声の制御及び確認動作が独立且つ同時に実施される。
先ず、画像に関する動作を説明する。S1500において、仮想カメラ操作UI330は、バックエンドサーバ270が生成した仮想視点画像を表示する。つぎに、S1501において、仮想カメラ操作UI330は、S1500で表示された画像のユーザによる確認結果に関する入力を受け付ける。そして、S1502において、撮影を終了すると判定された場合はS1508に進み、撮影を継続すると判定された場合はS1500に戻る。つまり、撮影を続ける間、S1500とS1501が繰り返される。なお、撮影を終了するか継続するかについては、例えばユーザ入力に応じて制御ステーション310が判定できる。
次に、音声に関する動作を説明する。S1503において、仮想カメラ操作UI330は、マイク111の選択結果に関するユーザ操作を受け付ける。なお、マイク111が所定の順序で1つずつ選択される場合には、ユーザ操作は必ずしも必要ない。S1504において、仮想カメラ操作UI330は、S1503で選択されたマイク111の音声を再生する。S1505において、仮想カメラ操作UI330は、S1504で再生された音声のノイズ有無を確認する。S1505におけるノイズ有無の判定は、コントローラ300の操作者(ユーザ)が行っても良いし、音声解析処理によって自動で判定されるようにしても良いし、その両方が実行されるようにしても良い。ユーザがノイズ有無を判定する場合は、S1505において、仮想カメラ操作UI330は、ユーザによるノイズ判定結果に関する入力を受け付ける。S1505でノイズが確認された場合には、S1506において、仮想カメラ操作UI330は、マイクゲインの調整を実施する。S1506におけるマイクゲインの調整は、ユーザ操作に基づいて行われるようにしても良いし、自動調整が行われるようにしても良い。なお、ユーザ操作に基づいてマイクゲインの調整が行われる場合には、S1506において、仮想カメラ操作UI330は、マイクゲインの調整に関するユーザ入力を受け付け、当該ユーザ入力に基づいてマイクゲインの調整を実施する。なお、ノイズの状態に依っては選択したマイク111の停止を行っても良い。S1507において、集音を終了すると判定された場合はS1508に進み、集音を継続すると判定された場合はS1503に戻る。つまり、集音を続ける間、S1503、S1504、S1505、及びS1506の動作が繰り返される。集音を終了するか継続するかについては、例えば、ユーザ入力に応じて制御ステーション310が判定できる。なお、集音を終了するか継続するかについては、例えば、ユーザ入力に応じて制御ステーション310が判定できる。
S1508において、システムを終了すると判定された場合はS1509に進み、システムを継続すると判定された場合はS1500及びS1503に進む。S1508の判定は、ユーザ操作に基づいて行われ得る。S1509において、画像処理システム100で取得されたログが制御ステーション310へ集められる。
次に図16を用いて画像及び音声を生成する動作を説明する。前述した仮想カメラ操作UI330で行われる画像及び音声を生成する動作では、画像と音声が独立且つ並行して生成される。
先ず、画像に関する動作を説明する。S1600において、仮想カメラ操作UI330は、バックエンドサーバ270に対して仮想視点画像の生成のための指示を発行する。そしてS1600において、バックエンドサーバ270は、仮想カメラ操作UI330からの指示に従って仮想視点画像を生成する。S1601において、画像生成を終了すると判定された場合はS1604に進み、画像生成を継続すると判定された場合はS1600に戻る。S1601の判定は、ユーザ操作に応じて実行されうる。
次に、音声に関する動作を説明する。S1602において、仮想カメラ操作UI330は、バックエンドサーバ270に対して仮想視点音声の生成のための指示を発行する。そしてS1602において、バックエンドサーバ270は、仮想カメラ操作UI330からの指示に従って仮想視点音声を生成する。S1603において、音声生成を終了すると判定された場合はS1604に進み、音声生成を継続すると判定された場合はS1602に戻る。なお、S1603の判定は、S1601の判定と連動して行われるようにしても良い。
次に設置時及び撮影前ワークフローについて説明する。画像処理システム100は、設置時キャリブレーションを行う状態と通常の撮影を行う状態を動作モード変更により切替制御できる。なお、撮影中にある特定カメラのキャリブレーションが必要になるケースもあり、この場合には撮影とキャリブレーションという二種類の動作が両立する。
設置時キャリブレーション処理について、図17に示すフローチャートを用いて説明する。図17においては、装置間で行われる指示に対するデータの受信完了や処理完了の通知についての記載は省略するが、指示に対して何らかのレスポンスが返却されるものとする。
まず、カメラ112の設置が完了すると、ユーザは制御ステーション310に対して、設置時キャリブレーションの実行を指示する。すると、制御ステーション310は、フロントエンドサーバ230およびカメラアダプタ120に対して、キャリブレーション開始を指示する(S04100)。
フロントエンドサーバ230は、キャリブレーション開始指示を受けると、それ以降に受信した画像データをキャリブレーション用データと判定し、キャリブレーション部02140が処理できるように制御モードを変更する(S04102a)。また、カメラアダプタ120は、キャリブレーション開始指示を受けると、前景背景分離等の画像処理を行わず非圧縮のフレーム画像を扱う制御モードに移行する(S04102b)。さらに、カメラアダプタ120は、カメラ112に対してカメラモード変更を指示する(S04101)。これを受けたカメラ112は、例えば、フレームレートを1fpsに設定する。あるいは、カメラ112が動画でなく静止画を伝送するモードに設定してもよい(S04102c)。また、カメラアダプタ120によってフレームレートが制御されてキャリブレーション画像が伝送されるモードに設定してもよい。
制御ステーション310は、カメラアダプタ120に対して、カメラのズーム値とフォーカス値の取得を指示し(S04103)、カメラアダプタ120は、制御ステーション310に、カメラ112のズーム値とフォーカス値を送信する(S04104)。
なお図17においては、カメラアダプタ120及びカメラ112はそれぞれ1つしか記載しないが、カメラアダプタ120及びカメラ112に関する制御は、画像処理システム100内の全カメラアダプタ120及び全カメラ112に対してそれぞれ実行される。そのため、S04103及びS04104はカメラ台数分実行され、全カメラ112に対するS04103及びS04104の処理が完了した時点で、制御ステーション310は、全カメラ分のズーム値とフォーカス値を受信できている状態となる。
制御ステーション310は、フロントエンドサーバ230に、S04104で受信した全カメラ分のズーム値とフォーカス値を送信する(S04105)。
次いで、制御ステーション310は、フロントエンドサーバ230に、設置時キャリブレーション用撮影の撮影パターンを通知する(S04106)。
ここで撮影パターンには、画像特徴点となるマーカ等をグラウンド内で動かして複数回撮影する場合の、別タイミングで撮影された画像を区別するためのパターン名(例えばパターン1―10)の属性が付加される。つまり、フロントエンドサーバ230は、S04106以降に受信したキャリブレーション用の画像データを、S04106で受信した撮影パターンにおける撮影画像であると判定する。そして、制御ステーション310は、カメラアダプタ120に対して同期静止画撮影を指示し(S04107)、カメラアダプタ120は、全カメラで同期した静止画撮影をカメラ112に指示する(S04108)。そして、カメラ112は撮影画像をカメラアダプタ120に送信する(S04109)。
なお、注視点のグループが複数ある場合には、注視点グループ毎にS04106からS04111のキャリブレーション用画像撮影を行っても良い。
そして、制御ステーション310は、カメラアダプタ120に対して、S04107で撮影指示した画像をフロントエンドサーバ230に伝送するように指示する(S04110)。さらに、カメラアダプタ120は、伝送先として指定されたフロントエンドサーバ230にS04109で受信した画像を伝送する(S04111)。
S04111で伝送するキャリブレーション用画像については、前景背景分離等の画像処理が行われず、撮影された画像が圧縮せずにそのまま伝送されるものとする。そのため、全カメラが高解像度で撮影を行う場合や、カメラ台数が多くなった場合、伝送帯域の制約上、全ての非圧縮画像を同時に送信することができなくなることが発生する虞がある。その結果、ワークフローの中でキャリブレーションに要する時間が長くなる虞がある。その場合、S04110の画像伝送指示において、カメラアダプタ120の1台ずつに対して、キャリブレーションのパターン属性に応じた非圧縮画像の伝送指示が順番に行われる。さらにこのような場合、マーカのパターン属性に応じたより多くの特徴点を撮影する必要があるため、複数マーカを用いたキャリブレーション用の画像撮影が行われる。この場合、負荷分散の観点から、画像撮影と非圧縮画像伝送を非同期に行ってもよい。また、キャリブレーション用の画像撮影で取得した非圧縮画像を、カメラアダプタ120にパターン属性ごとに逐次蓄積し、並行して非圧縮画像の伝送をS04110の画像伝送指示に応じて行う。これにより、ワークフローの処理時間やヒューマンエラーの削減を図ることができる効果がある。
全カメラ112においてS04111の処理が完了した時点で、フロントエンドサーバ230は、全カメラ分の撮影画像を受信できている状態となる。
前述したように、撮影パターンが複数ある場合には、S04106からS04111の処理をパターン数分繰り返す。
次いで、全てのキャリブレーション用撮影が完了すると、制御ステーション310は、フロントエンドサーバ230に対して、カメラパラメータ推定処理を指示する(S04112)。
フロントエンドサーバ230は、カメラパラメータ推定処理指示を受けると、S04105で受信した全カメラ分のズーム値とフォーカス値、及びS04111で受信した全カメラ分の撮影画像を用いて、カメラパラメータ推定処理を行う(S04113)。S04113におけるカメラパラメータ推定処理の詳細については後述する。なお、注視点が複数ある場合には、注視点グループ毎にS04113のカメラパラメータ推定処理を行うものとする。
そして、フロントエンドサーバ230は、S04113のカメラパラメータ推定処理の結果として導出された全カメラ分のカメラパラメータをデータベース250に送信して保存する(S04114)。
また、フロントエンドサーバ230は、制御ステーション310に対しても同様に全カメラ分のカメラパラメータを送信(S04115)する。制御ステーション310は、カメラアダプタ120に対して、各カメラ112に対応するカメラパラメータを送信し(S04116)、カメラアダプタ120は、受信した自カメラ112のカメラパラメータを保存する(S04117)。
そして、制御ステーション310は、キャリブレーション結果を確認する(S04118)。確認方法としては、導出されたカメラパラメータの数値を確認しても良いし、S04114のカメラパラメータ推定処理の演算過程を確認しても良いし、カメラパラメータを用いて画像生成を行い、生成された画像を確認するようにしても良い。そして、制御ステーション310は、フロントエンドサーバ230に対して、キャリブレーション終了を指示する(S04119)。
フロントエンドサーバ230はキャリブレーション終了指示を受けると、S04101で実行したキャリブレーション開始処理とは逆に、それ以降に受信した画像データをキャリブレーション用データでないと判定するよう制御モードを変更する(S04120)。
以上の処理により、設置時キャリブレーション処理として、全カメラ分のカメラパラメータを導出し、導出されたカメラパラメータをカメラアダプタ120及びデータベース250に保存することができる。
また、上述した設置時キャリブレーション処理は、カメラ設置後及び撮影前に実施され、カメラが動かされなければ再度処理する必要はないが、カメラを動かす場合(例えば、試合の前半と後半とで注視点を変更するなど)には、再度同様の処理が行われる。
また、撮影中にボールがぶつかる等のアクシデントにより所定の閾値以上にカメラ112が動いてしまった場合に、当該カメラ112を撮影状態からキャリブレーション開始状態に遷移させ上述の設置時キャリブレーションを行っても良い。その場合、システムとしては通常の撮影状態を維持し、当該カメラ112のみがキャリブレーション用画像を伝送している旨をフロントエンドサーバ230に通知することで、システム全体をキャリブレーションモードにする必要はなく撮影の継続性を図れる。さらには、本システムのデイジーチェーンでの伝送においては、通常の撮影における画像データの伝送帯域にキャリブレーション用の非圧縮画像を送ると、伝送帯域制限を超過する場合が考えられる。この場合、非圧縮画像の伝送優先度を下げたり、非圧縮画像を分割して送信したりすることで対応する。さらには、カメラアダプタ120間の接続が10GbEなどの場合は、全二重の特徴を使うことで、通常の撮影の画像データ伝送とは逆向きに非圧縮画像を伝送することで帯域確保が図れるという効果がある。
また、複数の注視点のうちの1つの注視点を変更したい場合など、1つの注視点グループのカメラ112のみ、上述した設置時キャリブレーション処理を再度行うようにしても良い。その場合、キャリブレーション処理中は、対象の注視点グループのカメラ112については、通常の画像撮影及び仮想視点画像生成を行うことができない。そのため、キャリブレーション処理中であることが制御ステーション310に通知され、制御ステーション310が仮想カメラ操作UI330に対して視点操作の制限をかけるなどの処理を要求する。フロントエンドサーバ230では、仮想視点画像生成の処理に影響が出ないよう制御してカメラパラメータ推定処理を行うものとする。
図18のフローチャートに従って、設置前ワークフローのS1200及び設置時ワークフローS1305におけるフロントエンドサーバ230の動作について説明する。
設置前ワークフローのS1200に於いて、フロントエンドサーバ230の制御部02110は制御ステーション310からCADデータの入力モードに切り替える指示を受信し、CADデータ入力モードに切り替えを行う(S02210)。
データ入力制御部02120は制御ステーション310からスタジアムCADデータ(スタジアム形状データ)を受信する(S02220)。データ入力制御部02120は受信したデータを非撮影データファイル生成部02185とCADデータ記憶部02135に送信する。CADデータ記憶部02135はデータ入力制御部02120から受信したスタジアム形状データを記憶媒体に保存する(S02230)。
設置時ワークフローのS1305に於いて、制御部02110は制御ステーション310からキャリブレーションモードに切り替える指示を受信し、キャリブレーションモードに切り替えを行う(S02240)。
データ入力制御部02120はカメラアダプタ120からキャリブレーション撮影画像を受信し、キャリブレーション部02140にキャリブレーション撮影画像を送信する(S02250)。
キャリブレーション部02140はキャリブレーションを行い、カメラパラメータを導出する(S02260)。キャリブレーション部02140は導出されたカメラパラメータを記憶領域へ保存し、非撮影データファイル生成部02185及びDBアクセス制御部02190を介してデータベース250にカメラパラメータを送信する(S02270)。
図19のフローチャートに従って、設置前ワークフローのS1200におけるデータベース250の動作について説明する。データベース250は、コントローラ300からの指示に基づいて以下に説明する図19及び図20の処理を実行する。
設置前ワークフローのS1200に於いて、データ入力部02420はフロントエンドサーバ230からスタジアムCADデータ(スタジアム形状データ)を受信し、キャッシュ02440上にデータを保存する(S02510)。キャッシュ02440は保存されたスタジアムCADデータを一次ストレージ02450に移動して格納する(S02520)。
図20のフローチャートに従って、設置時ワークフローのS1305におけるデータベース250の動作について説明する。
設置時ワークフローのS1305に於いて、データ入力部02420はフロントエンドサーバ230からカメラパラメータを受信し、キャッシュ02440上にデータを保存する(S02530)。
キャッシュ02440は保存されたカメラパラメータを一次ストレージ02450に移動して格納する(S02540)。制御ステーション310からの指示、またはキャッシュ02440の容量に応じて、制御部02410はキャッシュするフレーム数Nを設定する(S02550)。
続いて、フロントエンドサーバ230のキャリブレーション部02140における、カメラパラメータ推定処理について、図21に示すフローチャートを用いて説明する。なお、キャリブレーション部02140は、制御ステーション310からの指示に基づいて、カメラパラメータ推定処理を実行する。本シーケンスを開始する時点で、内部パラメータマップ、スタジアムデータ、全カメラ分のズーム値とフォーカス値、及び全カメラ分のキャリブレーション用撮影画像は、キャリブレーション部02140が既に保持しているものとする。
まずキャリブレーション部02140は、カメラ112を特定し(S04201)、対応するズーム値とフォーカス値を特定し、特定したズーム値とフォーカス値より、内部パラメータマップを用いて内部パラメータ初期値を導出する(S04202)。S04202における内部パラメータ初期値の導出が全カメラ分完了するまで、S04201とS04202の処理が繰り返される(S04203)。
次いでキャリブレーション部02140は、再度カメラ112を特定し、対応するキャリブレーション用撮影画像を特定し(S04204)、画像内の特徴点(画像特徴点)を検出する(S04205)。
画像特徴点としては、例えば、キャリブレーション用に用意したマーカや、予めスタジアムの地面に描かれているピッチラインや、予め置かれている物(例えば、サッカーゴールや選手控えベンチなど)のエッジ部分などが挙げられる。
S04205における画像特徴点検出が全カメラ分完了するまで、S04205とS04205の処理が繰り返される(S04206)。
次いでキャリブレーション部02140は、S04205で検出した各カメラ112におけるキャリブレーション用撮影画像の画像特徴点のマッチングを行う(S04207)。そして、カメラ112間でマッチングされた使用特徴点数が閾値以下であるかを判定する(S04208)。S04208で用いる使用特徴点数の閾値については予め設定しておいても良いし、カメラ台数や画角などの撮影条件によって自動で導出するようにしても良く、外部パラメータ推定を行うために最低限必要である値が用いられる。
S04208でキャリブレーション部02140は、使用特徴点数が閾値以下でない場合、各カメラ112の外部パラメータ推定処理を行う(S04209)。そして、S04209の外部パラメータ推定処理の結果、再投影誤差が閾値以下であるかを判定する(S04210)。S04210で用いる再投影誤差の閾値については予め設定しておいても良いし、カメラ台数などの撮影条件によって自動で導出するようにしても良く、生成する仮想視点画像の精度に応じた値が用いられる。
S04210の判定において、再投影誤差が閾値以下でない場合、キャリブレーション部02140は誤差が大きいと判断し、S04205における画像特徴点の誤検出、及びS04207における画像特徴点の誤マッチングの削除処理を行う(S04211)。
S04211の誤検出及び誤マッチングの判定方法としては、例えばキャリブレーション部02140が再投影誤差の大きい特徴点を自動で削除するようにしても良いし、ユーザが再投影誤差及び画像を見ながら手作業で削除するようにしても良い。
そしてキャリブレーション部02140は、S04202で導出した内部パラメータ初期値に対して、内部パラメータの補正を行う(S04212)。
そして、S04208において使用特徴点数が閾値以下にならない範囲で、S04210において再投影誤差が閾値以下になるまで、S04208からS04212の処理を繰り返す。
S04208の判定においてキャリブレーション部02140は、使用特徴点数が閾値以下であればキャリブレーション失敗と判断する(S04213)。キャリブレーション失敗の場合、キャリブレーション用撮影からやり直すなどの対応が行われる。成功又は失敗の判断結果は、逐次制御ステーション310に対して通知され、失敗時点以降のキャリブレーション処理を実施するなどの対応が、一元的に制御ステーション310で管理される。
S04210の判定において、再投影誤差が閾値以下であれば、キャリブレーション部02140は、スタジアムデータを用いて、S04209で推定された外部パラメータ座標について、カメラ座標系から世界座標系へ剛体変換を行う(S04214)。
ここで用いるスタジアムデータとしては、X/Y/Z軸それぞれの原点(例えばピッチ上のセンターサークルの中心点など)、及びスタジアム内の複数の特徴点(例えばピッチラインの交差点など)の座標値など、剛体変換を行うための座標値が定義される。
ただし、スタジアムデータが存在しない、もしくはデータの精度が低い場合などは、剛体変換を行うための世界座標の入力を手動で行うようにしても良いし、世界座標を示すためのデータがキャリブレーション部02140に別途与えられるようにしても良い。
また、S04214の処理を行うことでキャリブレーション用撮影画像内の世界座標が導出されるため、導出結果を用いて、予めスタジアムデータに記録されているスタジアム内の特徴点の座標をより精度が高くなるよう更新しても良い。
以上の処理により、カメラパラメータ推定処理フローとして、全カメラ分のカメラパラメータが導出され、導出されたカメラパラメータをカメラアダプタ120及びデータベース250に保存することができる。
なお、複数カメラの撮影画像を用いて仮想視点画像生成を行うシステムにおいては、カメラ112設置時に各カメラ112の位置姿勢推定を行うキャリブレーション処理(設置時キャリブレーション)が必要である。
設置時キャリブレーションでは、各カメラのカメラパラメータを求める処理が行われる。カメラパラメータとは、カメラ固有の内部パラメータ(焦点距離、画像中心、及びレンズ歪みパラメータ等)と、カメラの位置姿勢を表す外部パラメータ(回転行列及び位置ベクトル等)から成る。設置時キャリブレーション処理が完了すると、各カメラのカメラパラメータが導出された状態となる。
カメラパラメータのうち、内部パラメータは、カメラ112及びレンズが定まっている場合、ズーム値とフォーカス値に応じて変わるパラメータである。そのため、本システムにおいては、カメラ112をスタジアムに設置する以前に、同カメラ112及びレンズを用いて、内部パラメータ導出に必要な撮影を行うことで内部パラメータの導出を行っておく。そして、カメラ112をスタジアムに設置した際にズーム値とフォーカス値が決まると、自動的に内部パラメータを導出することができるようにしておく。これを本明細書では内部パラメータをマップ化すると表現し、マップ化の結果を内部パラメータマップと記載する。
内部パラメータマップの形式としては、ズーム値とフォーカス値に応じた内部パラメータを複数パターン記録しておく形式としても良いし、内部パラメータ値を算出できる演算式の形式としても良い。即ち、内部パラメータマップは、ズーム値とフォーカス値に応じて一意に内部パラメータが求まるものであればよい。
また、内部パラメータマップによって求められたパラメータ値は、内部パラメータの初期値として用いられるものとする。そして、カメラパラメータ推定処理結果としての内部パラメータは、カメラ112をスタジアムに設置した後にキャリブレーション用として撮影した画像を用いたカメラパラメータ推定処理の過程で補正された値となる。
また、本実施形態では、設置されるカメラ112及びレンズは何れも同機種であり、同ズーム値及び同フォーカス値であれば内部パラメータも同じであるものとする。ただしこれに限らず、複数機種のカメラ112及びレンズを用いる場合など、同ズーム値及び同フォーカス値であっても内部パラメータに個体差がある場合は、機種毎及びカメラ112毎に内部パラメータマップを保持するようにしても良い。
次に、カメラ112による撮影、マイク111による収音、及び、撮影又は収音されたデータをカメラアダプタ120及びフロントエンドサーバ230を介してデータベース250へ蓄積する処理について説明する。
図22a及び図22bを使用して、カメラ112の撮影開始処理シーケンスについて説明する。図22a及び図22bはそれぞれ内容が異なる処理シーケンスを示しているが、何れのシーケンスに従っても同様の結果を得ることができる。カメラアダプタ120は、図22aに示した処理を行うか図22bに示した処理を行うかを、カメラ112の仕様に応じて選択する。
まず図22aについて説明する。タイムサーバ290は例えばGPS2201などと時刻同期を行い、タイムサーバ内で管理される時刻の設定を行う(06801)。なおGPS2201を用いた方法に限定されるものではなく、NTP(Network Time Protocol)など他の方法で時刻を設定してもよい。
次にカメラアダプタ120はタイムサーバ290との間でPTP(Precision Time Protocol)を使用した通信を行い、カメラアダプタ120内で管理される時刻を補正しタイムサーバ290と時刻同期を行う(06802)。
カメラアダプタ120はカメラ112に対して、Genlock信号や3値同期信号等の同期撮影信号及びタイムコード信号を、撮影フレームに同期して提供し始める(06803)。なお提供される情報はタイムコードに限定されるものではなく、撮影フレームを識別できる識別子であれば他の情報でもよい。
次に、カメラアダプタ120はカメラ112に対して撮影開始指示を行う(06804)。
カメラ112は撮影開始指示を受けると、Genlock信号に同期して撮影を行う(06805)。
次に、カメラ112は撮影した画像にタイムコード信号を含めてカメラアダプタ120へ送信する(06806)。カメラ112が撮影を停止するまでGenlock信号に同期した撮影が行われる。
カメラアダプタ120は撮影途中にタイムサーバ290との間でのPTP時刻補正処理を行い、Genlock信号の発生タイミングを補正する(06807)。必要な補正量が大きくなる場合は、予め設定された変更量に応じた補正を適用してもよい。
以上により、システム内の複数のカメラアダプタ120に接続する複数のカメラ112の同期撮影を実現する事ができる。
次に図22bについて説明する。まず図22aの場合と同様に、カメラアダプタ120、タイムサーバ290及びGPS2201の間で時刻同期処理が行われる(06801、06802)。次に、カメラアダプタ120は撮影開始指示を行う(06853)。撮影開始指示の中には撮影期間やフレーム数を指定する情報が含まれる。カメラ112は撮影開始指示に従い撮影を行う(06854)。
次にカメラ112は撮影した画像データをカメラアダプタ120へ送信する(06855)。
画像データを受取ったカメラアダプタ120は画像データのメタ情報にタイムコードを付与する(06856)。
カメラアダプタ120は撮影途中にタイムサーバ290との間でのPTP時刻補正処理を行い、カメラ112に対して撮影タイミングの補正を行う。必要な補正量が大きくなる場合は、予め設定された変更量に応じた補正を適用してもよい。例えば、1フレーム毎など短いタイミングで撮影開始指示が繰返し行われる。
なお、図22a及び図22bではカメラ112の撮影開始処理シーケンスについて説明したが、マイク111もカメラ112の同期撮影と同様の処理を行い、同期集音を行う。一方、カメラ画像の高解像度化にともない、各カメラ112の画像フレームを伝送した際にデータ伝送量がネットワーク伝送帯域制限を超過する虞がある。この虞を低減する方法について、以下の実施形態で説明する。
まず、本実施形態における複数のカメラアダプタ120(120a、120b、120c、及び120d)が連動して三次元モデル情報を生成する処理シーケンスについて図23を用いて説明する。なお、処理の順番は図に示したものに限定される訳ではない。
なお、本実施形態の画像処理システム100には26台のカメラ112とカメラアダプタ120が含まれるが、ここでは2台のカメラ112bと112c、及び、4台のカメラアダプタ120a、120b、120c、及び120dに注目して説明する。カメラ112bとカメラアダプタ120b、及びカメラ112cとカメラアダプタ120cは、其々接続されている。なおカメラアダプタ120aおよびカメラアダプタ120dに接続するカメラ112や、各カメラアダプタ120に接続するマイク111、雲台113、及び外部センサ114については省略する。
また、カメラアダプタ120a―120dはタイムサーバ290と時刻同期が完了し、撮影状態となっているものとする。
カメラ112bおよびカメラ112cは其々カメラアダプタ120b及び120cに対して撮影画像(1)及び撮影画像(2)を送信する(F06301、F06302)。
カメラアダプタ120b及び120cは、受信した撮影画像(1)または撮影画像(2)に対して、キャリブレーション制御部06133においてキャリブレーション処理を行う(F06303、F06304)。キャリブレーション処理は例えば色補正やブレ補正等である。なお、本実施形態ではキャリブレーション処理が実施されているが、必ずしも実施しなくてもよい。
次に、キャリブレーション処理済の撮影画像(1)または撮影画像(2)に対して、前景背景分離部06131によって前景背景分離処理が行われる(F06305、F06306)。
次に、分離された前景画像及び背景画像其々に対してデータ圧縮・伸張部06121において圧縮が行われる(F06307、F06308)。なお分離した前景画像及び背景画像の其々の重要度に応じて圧縮率が変更されてもよい。また、場合によっては圧縮を行わなくてもよい。例えば、カメラアダプタ120は、背景画像よりも前景画像の圧縮率が低くなるように、前景画像と背景画像とのうち少なくとも背景画像を圧縮して次のカメラアダプタ120に対して出力する。前景画像も背景画像も圧縮する場合、重要な撮影対象を含む前景画像はロスレス圧縮を行い、撮影対象を含まない背景画像に対してはロスあり圧縮を行う。これにより、この後に次のカメラアダプタ120cまたはカメラアダプタ120dに伝送されるデータ量を効率的に削減する事ができる。例えばサッカー、ラグビー及び野球等が開催されるスタジアムのフィールドを撮影した場合には、画像の大半が背景画像で構成され、プレーヤ等の前景画像の領域が小さいという特徴があるため、伝送データ量を大きく削減できることをここに明記しておく。
さらには、カメラアダプタ120b又はカメラアダプタ120cは、重要度に応じて、次のカメラアダプタ120cまたはカメラアダプタ120dに対して出力する画像のフレームレートを変更してもよい。例えば、前景画像よりも背景画像の出力フレームレートが低くなるように、重要な撮影対象を含む前景画像は高フレームレートで出力し、撮影対象を含まない背景画像は低フレームレートで出力してもよい。この事によって更に次のカメラアダプタ120cまたはカメラアダプタ120dに伝送されるデータ量を削減する事ができる。またカメラ112の設置場所、撮影場所、及び/又はカメラ112の性能などに応じて、カメラアダプタ120毎に圧縮率や伝送フレームレートを変更してもよい。また、スタジアムの観客席等の三次元構造は図面を用いて事前に確認することができるため、カメラアダプタ120は背景画像から観客席の部分を除いた画像を伝送してもよい。これにより、後述のレンダリングの時点で、事前に生成したスタジアム三次元構造を利用することで試合中のプレーヤに重点化した画像レンダリングを実施し、システム全体で伝送及び記憶されるデータ量の削減ができるという効果が生まれる。
次にカメラアダプタ120は、圧縮した前景画像及び背景画像を隣接するカメラアダプタ120に転送する(F06310、F06311、F06312)。なお、本実施形態では前景画像及び背景画像は同時に転送されているが、其々が個別に転送されてもよい。
次に、カメラアダプタ120bは、カメラアダプタ120aから受信した前景画像と前景背景分離処理F06305で分離した前景画像とを使用して三次元モデル情報を作成する(F06313)。同様にカメラアダプタ120cも三次元モデル情報を作成する(F06314)。
次に、カメラアダプタ120bはカメラアダプタ120aから受信した前景画像及び背景画像をカメラアダプタ120cへ転送する(F06315)。カメラアダプタ120cも同様にカメラアダプタ120dへ前景画像及び背景画像を転送する。なお、本実施形態では前景画像及び背景画像は同時に転送されているが、其々が個別に転送されてもよい。
さらに、カメラアダプタ120cは、カメラアダプタ120aが作成し、カメラアダプタ120bから受信した前景画像及び背景画像をカメラアダプタ120dへ転送する(F06317)。
次に、各カメラアダプタ120a―120cは、作成した三次元モデル情報を其々次のカメラアダプタ120b―120dへ転送する(F06318、F06319、F06320)。
さらに、カメラアダプタ120b及び120cは、逐次受信した三次元モデル情報を次のカメラアダプタ120c及び120dへ転送する(F06321、F06322)。さらに、カメラアダプタ120cは、カメラアダプタ120aが作成し、カメラアダプタ120bから受信した三次元モデル情報をカメラアダプタ120dへ転送する(F06323)。
最終的に、カメラアダプタ120a―120dが作成した前景画像、背景画像、及び三次元モデル情報は、ネットワーク接続されたカメラアダプタ120間を逐次伝送され、フロントエンドサーバ230に伝送される。
なお、本シーケンス図ではカメラアダプタ120a及びカメラアダプタ120dのキャリブレーション処理、前景背景分離処理、圧縮処理、及び三次元モデル情報作成処理については記載を省略している。しかし実際には、カメラアダプタ120a及びカメラアダプタ120dも、カメラアダプタ120bやカメラアダプタ120cと同様の処理を行い、前景画像、背景画像及び三次元モデル情報を作成している。また、ここでは4台のカメラアダプタ120間のデータ転送シーケンスについて説明したが、カメラアダプタ120の数が増えても同様の処理が行われる。
ここまで説明したように、複数のカメラアダプタ120のうち、予め定められた順序において最後のカメラアダプタ120以外のカメラアダプタ120は、対応するカメラ112による撮影画像から所定領域を抽出する。そしてその抽出結果に基づく画像データを、上記の予め定められた順序において次のカメラアダプタ120へ出力する。一方、上記の予め定められた順序において最後のカメラアダプタ120は、抽出結果に基づく画像データを画像コンピューティングサーバ200へ出力する。すなわち、複数のカメラアダプタ120はデイジーチェーンで接続され、各カメラアダプタ120が撮影画像から所定領域を抽出した結果に基づく画像データは、予め定められたカメラアダプタ120によって画像コンピューティングサーバ200へ入力される。このようなデータの伝送方式を用いることで、画像処理システム100内におけるセンサシステム110の数が変動した場合の、画像コンピューティングサーバ200における処理負荷やネットワークの伝送負荷の変動を抑制することができる。また、カメラアダプタ120が出力する画像データは、上記の抽出結果に基づく画像データと、予め定められた順序において前のカメラアダプタ120による所定領域の抽出結果に基づく画像データとを用いて生成されるデータであってもよい。例えば、各カメラアダプタ120が自身による抽出結果と前のカメラアダプタ120による抽出結果の差分に基づく画像データを出力することで、システム内の伝送データ量を低減することができる。上記の順序において最後のカメラアダプタ120は、他のカメラ112による撮影画像から他のカメラアダプタ120により抽出された所定領域の画像データに基づく抽出画像データを上記の他のカメラアダプタ120から取得する。そして、自身が抽出した所定領域の抽出結果と、他のカメラアダプタ120から取得した抽出画像データとに応じた画像データを、仮想視点画像を生成するための画像コンピューティングサーバ200に対して出力する。
また、カメラアダプタ120は、カメラ112が撮影した画像を前景部分と背景部分に分け、例えばそれぞれの重要度に応じて圧縮率や伝送するフレームレートを変える。このことにより、カメラ112が撮影したデータの全てをフロントエンドサーバ230に伝送する場合よりも伝送量を低減する事ができる。また、三次元モデル生成に必要な三次元モデル情報を各カメラアダプタ120が逐次作成する。この事により、全てのデータをフロントエンドサーバ230に集結させ、サーバで全ての三次元モデル生成処理を行う場合と比較し、サーバの処理負荷を低減させる事ができ、よりリアルタイムに三次元モデル生成を可能とする事ができる。
次に、カメラアダプタ120における逐次三次元モデル情報生成における、前景画像及び背景画像を生成し次のカメラアダプタ120へ転送する処理のフローついて図24を使用して説明する。
カメラアダプタ120は、自身に接続されているカメラ112から撮影画像を取得する(06501)。
次に、取得した撮影画像を前景画像及び背景画像に分離する処理を実施する(06502)。なお、本実施形態における前景画像は、カメラ112から取得した撮影画像に対する所定オブジェクトの検出結果に基づいて決定される画像である。所定オブジェクトとは、例えば人物である。ただし、オブジェクトが特定人物(選手、監督、及び/又は審判など)であっても良いし、ボールやゴールなど、画像パターンが予め定められている物体であっても良い。また、オブジェクトとして、動体が検出されるようにしても良い。
次に、分離した前景画像及び背景画像の圧縮処理を行う。前景画像に対してはロスレス圧縮が行われ、前景画像は高画質を維持する。背景画像に対してはロスあり圧縮が行われ、伝送データ量が削減される(06503)。
次にカメラアダプタ120は、圧縮した前景画像と背景画像を次のカメラアダプタ120へ転送する(06504)。なお背景画像に関しては毎フレーム転送するのではなく転送フレームを間引いて転送してもよい。例えば、撮影画像が60fpsである場合に、前景画像は毎フレーム伝送されるが、背景画像は1秒間の60フレーム中1フレームのみが伝送される。これにより伝送データ量の削減を行う事ができる特有の効果がある。
またカメラアダプタ120は、次のカメラアダプタ120へ前景画像及び背景画像を転送する際に、メタ情報を付与してもよい。例えば、カメラアダプタ120またはカメラ112の識別子や、フレーム内の前景画像の位置(xy座標)や、データサイズ、フレーム番号、及び撮影時刻などがメタ情報として付与される。また注視点を識別するための注視点グループ情報や、前景画像及び背景画像を識別するデータ種別情報などが付与されてもよい。但し付与されるデータの内容はこれらに限定される訳ではなく、他のデータが付与してもよい。
なお、カメラアダプタ120がデイジーチェーンを通じてデータを伝送する際に、自身に接続されたカメラ112と相関の高いカメラ112の撮影画像のみを選択的に処理することで、カメラアダプタ120における伝送処理負荷を軽減することができる。また、デイジーチェーン伝送において、何れかのカメラアダプタ120において故障が発生してもカメラアダプタ120間のデータ伝送が停止しないようにシステムを構成することで、ロバスト性を確保できる。
次に、カメラアダプタ120における三次元モデル情報生成処理フローにおける、隣のカメラアダプタ120からデータを受信した時の処理のフローについて図25を使用して説明する。
まずカメラアダプタ120は隣接するカメラアダプタ120からデータを受信する(S06601)。カメラアダプタ120は自身の転送モードがバイパス制御モードか否かを判断する(S06602)。なおバイパス制御については図28で説明する。
バイパス制御モードの場合は、カメラアダプタ120は、次のカメラアダプタ120へデータを転送する(S06611)。バイパス制御モードでない場合は、受信したデータのパケットを解析する(S06603)。
カメラアダプタ120は、パケットを解析した結果、バイパス伝送制御対象のパケットであると判断した場合は(S06604のYes)、次のカメラアダプタ120へデータを転送する(S06610)。バイパス伝送制御対象のパケットは、例えば三次元モデル情報生成に利用しない画像データまたは後述する制御メッセージや時刻補正に係わるメッセージである。なおバイパス伝送制御については図27で説明する。
カメラアダプタ120は、バイパス伝送制御対象ではないと判断した場合は、データ種別を判別し(S06605)、データの種別に応じた処理を行う。
データの種別が、制御ステーション310から自身のカメラアダプタ120宛ての制御メッセージパケットである場合、制御メッセージを解析し、解析結果に基づき処理を行う(S06606)。制御メッセージの送信元が制御ステーション310でなく他のノードである場合も同様である。また、パケットが自身のカメラアダプタ120宛ての場合だけではなく、カメラアダプタ120が属する注視点グループ宛てである場合も同様である。また、カメラアダプタ120が行う処理の例としては、カメラアダプタ120に接続されるマイク111、カメラ112及び雲台113の制御や、カメラアダプタ120自身の制御がある。カメラアダプタ120は、制御メッセージの内容に応じて制御結果を送信元もしくは指示されたノードに対して返送する。またパケットがグループ宛ての制御メッセージの場合は次のカメラアダプタ120へ制御メッセージを転送する。
次にカメラアダプタ120は、データ種別が時刻補正に係わる場合は時刻補正処理を行う(S06607)。例えばタイムサーバ290との間でのPTP処理に基づき自身の時刻補正を行う。そして補正した時刻に基づきマイク111及びカメラ112へ供給するワードクロックの補正を行う。なお時刻の補正量が大きい場合にワードクロックのタイミングを一度に変更すると音声や画像品質に影響が出るため、予め設定された変更量に基づき徐々に時刻を補正する処理を行ってもよい。またカメラアダプタ120は、作成した三次元モデル情報及び三次元モデル情報作成に使用した前景画像などを、フロントエンドサーバ230に送信するために次のカメラアダプタ120へ転送する。
次にカメラアダプタ120は、データ種別が前景画像または背景画像の場合に三次元モデル情報作成処理を行う(S06608)。
次に、注視点グループに応じた制御について説明する。図26は、注視点グループを説明する図である。各カメラ112は光軸が特定の注視点06302を向くように設置される。同じ注視点グループ06301に分類されるカメラ112は、同じ注視点06302を向くように設置される。
図26は、注視点A(06302A)と注視点B(06302B)の2つの注視点06302が設定され、9台のカメラ(112a―112i)が設置された場合の例である。4台のカメラ(112a、112c、112e及び112g)は、同じ注視点A(06302A)を向いており、注視点グループA(06301A)に属する。また、残りの5台のカメラ(112b、112d、112f、112h及び112i)は、同じ注視点B(06302B)を向いており、注視点グループB(06301B)に属する。
ここでは、同じ注視点グループ06301に属するカメラ112の中で最も近い(接続ホップ数が小さい)カメラ112の組を論理的に隣接していると表現する。例えば、カメラ112aとカメラ112bは、物理的には隣接しているが、異なる注視点グループ06301に属するため論理的には隣接していない。カメラ112aと論理的に隣接しているのは、カメラ112cである。一方、カメラ112hとカメラ112iは、物理的に隣接しているだけでなく、論理的にも隣接している。
物理的に隣接するカメラ112が論理的にも隣接しているか否かにより、カメラアダプタ120で異なる処理が行われる。以下で具体的な処理について説明する。
バイパス伝送制御について図27を使用して説明する。バイパス伝送制御は、各カメラアダプタ120が属する注視点グループに応じて伝送データがバイパスされる機能である。外部機器制御部06140、各画像処理部06130、伝送部06120、及びネットワークアダプタ06110を構成する機能部の記載は省略している。
画像処理システム100において、カメラアダプタ120の台数や、どのカメラアダプタ120がどの注視点グループに属するかの設定は変更可能である。図27では、注視点グループAにカメラアダプタ120g、カメラアダプタ120h及びカメラアダプタ120nが属し、注視点グループBにカメラアダプタ120iが属していることとする。
ルート06450はカメラアダプタ120gが作成した前景画像の伝送ルートを示しており、前景画像は最終的にフロントエンドサーバ230へ伝送される。本図では、背景画像、三次元モデル情報、及び制御メッセージや、カメラアダプタ120h、カメラアダプタ120i及びカメラアダプタ120nが作成した前景画像の記載は省略している。
カメラアダプタ120hは、カメラアダプタ120gが作成した前景画像を、ネットワークアダプタ06110hを介して受信し、伝送部06120hによってルーティング先を決定する。伝送部06120hは、受信した前景画像の作成元のカメラアダプタ120gが同じ注視点グループ(ここではグループA)に属していると判断すると、受信した前景画像を画像処理部06130hへ転送する。画像処理部06130hにおいて、カメラアダプタ120gが作成し送信した前景画像に基づいて三次元モデル情報を生成されると、カメラアダプタ120gの前景画像は次のカメラアダプタ120iに転送される。
次にカメラアダプタ120iは、カメラアダプタ120hからカメラアダプタ120gが作成した前景画像を受信する。カメラアダプタ120iの伝送部06120iはカメラアダプタ120gと自身が属する注視点グループが異なる事を判断すると、画像処理部06130iには転送せず次のカメラアダプタ120に転送する。
次にカメラアダプタ120nは、カメラアダプタ120gが作成した前景画像を、ネットワークアダプタ06110nを介して受信し、伝送部06120nによってルーティング先を決定する。伝送部06120nは、カメラアダプタ120nがカメラアダプタ120gと同じ注視点グループであると判断する。しかし、画像処理部06130nによりカメラアダプタ120gの前景画像が三次元モデル情報生成に必要な前景画像ではないと判断されると、前景画像はそのまま次のカメラアダプタ120にデイジーチェーンのネットワークを介して転送される。
このように各カメラアダプタ120の伝送部06120は、受信したデータが画像処理部06130における画像処理による三次元モデル情報の作成に必要なデータか否かを判断する。画像処理に必要なデータではない、つまり自身のカメラアダプタ120との相関が低いデータであると判断すると、画像処理部06130へデータを転送することなく、次のカメラアダプタ120に伝送する。つまり、デイジーチェーン170を介したデータの伝送において、各カメラアダプタ120で必要なデータが選択されて逐次三次元モデル情報を生成する処理が実施される。これによりカメラアダプタ120内でデータ受信してから転送するまでのデータ転送に係わる処理負荷及び処理時間を短縮する事ができる。
次にカメラアダプタ120bのバイパス制御について図28を使用してさらに詳しく説明する。なお外部機器制御部06140、各画像処理部06130、伝送部06120、及びネットワークアダプタ06110を構成する機能部の記載は省略している。
バイパス制御とは、カメラアダプタ120bが、カメラアダプタ120cから受信したデータを、伝送部06120のデータルーティング処理部06122によるルーティング制御を行わずに次のカメラアダプタ120aへ転送する機能である。
例えばカメラアダプタ120bは、カメラ112bの状態が撮影停止中やキャリブレーション中、又はエラー処理中である場合に、ネットワークアダプタ06110に対してバイパス制御を起動させる。また例えば、伝送部06120または画像処理部06130などの動作不良などが発生した場合にも、バイパス制御を起動させる。また、ネットワークアダプタ06110が伝送部06120の状態を検知し、能動的にバイパス制御モードに遷移してもよい。なお、伝送部06120又は画像処理部06130がエラー状態や停止状態にあることを検知するサブCPUをカメラアダプタ120bに配備し、サブCPUがエラー検知を行った場合にネットワークアダプタ06110をバイパス制御にする処理を加えてもよい。これにより、各機能ブロックのフォールト状態とバイパス制御を独立して制御できる効果がある。
また、カメラアダプタ120は、カメラ112の状態がキャリブレーション状態から撮影状態に遷移した場合や、伝送部06120などが動作不良から復旧した場合に、バイパス制御モードから通常の通信モードに遷移してもよい。
このバイパス制御機能により、カメラアダプタ120はデータ転送を高速に行う事ができ、また不慮の故障などが発生しデータルーティングに係わる判断ができない場合でも次のカメラアダプタ120aへデータを転送する事ができる。
本システムにおいては、前景画像、背景画像、および三次元モデル情報が、デイジーチェーンで接続された複数のカメラアダプタ120間を伝送されてフロントエンドサーバ230へ入力される。ここで、撮影画像内で前景領域が極端に多くなるイベント、例えば全選手が集う開会式などが撮影される場合には、伝送される前景画像のデータ量が通常の競技を撮影する場合よりも膨大になる。そこで、デイジーチェーンで伝送されるデータ量が伝送帯域を超過しないように制御するための方法を以下に示す。
図29および図30を使用して、カメラアダプタ120において伝送部06120がデータを出力する処理のフローについて説明する。図29はカメラアダプタ120a、120b及び120c間のデータの流れを表している。カメラアダプタ120aとカメラアダプタ120b、及びカメラアダプタ120bとカメラアダプタ120cが其々接続されている。また、カメラアダプタ120bにはカメラ112bが接続されており、カメラアダプタ120cはフロントエンドサーバ230と接続されている。カメラアダプタ120bの伝送部06120のデータ出力処理フローについて説明する。
カメラアダプタ120bの伝送部06120には、カメラ112bから撮影データ06720が入力され、カメラアダプタ120aから画像処理された入力データ06721及び06722が入力される。また伝送部06120は、入力されたデータに対して、画像処理部06130への出力、圧縮、フレームレートの設定、およびパケット化等の処理を行って、そのデータをネットワークアダプタ06110に出力している。
次に図30を使用して伝送部06120による出力処理フローについて説明する。伝送部06120は、画像処理部06130からの入力データ06721及び06720の各々について画像処理結果のデータ量を取得するステップ(S06701)を実行する。
次に、カメラアダプタ120aからの入力データ06722のデータ量を取得するステップ(S06702)を実行する。次に、カメラアダプタ120cへの出力データ量導出について、入力データのデータ種別に応じて導出するステップ(S06703)を実行する。
次に伝送部06120は、出力データ量と所定の伝送帯域制約量を比較し、伝送可能性を確認する。具体的には、ネットワークアダプタ06110へ出力するデータ量が予め指定された出力データ量の閾値を超えるか否かを判断する(S06704)。なお閾値はデータ種別(ここでは、前景画像、背景画像、全景フレームデータ、及び三次元モデル情報等があげられる)ごとに設けられてもよい。また出力するデータ量については、伝送部06120でデータを圧縮する場合は圧縮結果に基づいて導出される。なお出力データ量の閾値はパケット化する際のヘッダ情報やエラー訂正情報等のオーバヘッドを考慮して設定されることが望ましい。
伝送部06120が、出力データ量が閾値を超えないと判断した場合は、入力データをネットワークアダプタ06110へ出力する通常転送を行う(S06712)。出力データ量が閾値を超えたと判断された場合(S6704のYes)、伝送部06120に入力されたデータが画像データの場合は出力データ量オーバ時のポリシーを取得する(S06705)。そして、取得したポリシーに基づいて、以下で説明する複数の処理(S06707-S06711)の少なくとも何れかを選択して(S06706)実行する。なお伝送部06120は、画像データ以外の時刻補正に係わるデータや制御メッセージ係わるデータについては通常転送を行ってもよい。また、メッセージの種別や優先度に応じてメッセージをドロップしてもよい。出力データのデータ量を減らすことによってデータ転送のオーバーフローを抑止することができる。
伝送部06120が実行する処理の1つとして、画像データのフレームレートを落としてネットワークアダプタ06110へ出力する(S06707)。フレームを間引いて伝送することによりデータ量が削減される。ただし、動きの速いオブジェクトを追従する際には高フレームレートで出力する場合と比較し画質面で劣る虞があるため、対象となる撮影シーンに応じて本手法の適用可否が判断される。
また別の処理として、伝送部06120は、画像データの解像度を落としてネットワークアダプタ06110へ出力する(S06708)。この処理は出力画像の画質に影響するため、エンドユーザ端末の種別に応じてポリシー設定がされる。例えば、スマートフォンへ出力する場合は解像度を大きく落としてデータ量削減を行い、高解像度ディスプレイ等へ出力する場合は解像度を小さく落とす等の適応的な解像度変換に関するポリシー設定がされる。
また別の処理として、伝送部06120は、画像データの圧縮率を上げてネットワークアダプタ06110へ出力する(S06709)。ここでは、入力画像データに対して、ロスレス圧縮、あるいはロッシー圧縮等の復元性能要求、つまり、画像品質の要求に応じてデータ量削減が図られる。
また別の処理として、伝送部06120は、画像処理部06130からの撮影データ06720の出力を停止する(S06710)。ここでは、画像処理を施した画像データの出力を停止してデータ量削減を図る。十分な台数のカメラ112が配備されている場合は、仮想視点画像の生成において、同一注視点グループのカメラ112がすべて必須ではない場合がある。例えばスタジアムのフィールド全体を撮影する上でカメラ112を削減しても死角が発生しないことを事前に把握できている場合に本制御が適用される。つまり、後工程での画像の破綻が起きないことを条件とし、画像データの送信を行わないカメラを選定することで伝送帯域を確保することができる。
また別の処理として、伝送部06120は、画像処理部06130からの入力データ06721の出力を停止するかまたはそのうちの一部のカメラアダプタ120の画像の出力のみ停止する(S06711)。上記に加えて、他のカメラアダプタ120からの入力画像を利用して三次元モデル情報を生成できた場合は、他のカメラアダプタ120からの前景画像や背景画像の出力を停止して、三次元モデル情報のみを出力制御することでデータ量削減を図ってもよい。
出力データのデータ量を減らすのに使用された方法は後段のフロントエンドサーバ230を介してバックエンドサーバ270、仮想カメラ操作UI330、制御ステーション310へ通知される(S06713)。本実施形態では、ポリシーに応じてフレームレート、解像度、圧縮率、及びデータ停止等の制御処理の何れかが行われるようにフローが分岐しているがこれに限定されるものではない。これらの制御のうち複数を組み合わせで実行することでさらなるデータ量削減効果が得られることを明記しておく。また、S06713において本制御処理の通知が行われる。この通知により、仮想カメラ操作UI330において、例えば、圧縮率を上げた結果、画像品質面で十分な解像度が得られない場合はズーム操作に制約を設けることができる。さらに、伝送帯域制約量オーバ処理後も、逐次出力データ量の超過をチェックし、データ量が安定したら伝送処理のポリシーを元の設定値に戻すことができることをここに示す。
このように、デイジーチェーンの伝送帯域を超過するという課題に対して、状態に応じた伝送制御処理を行うことで、伝送帯域制約を満たす伝送を実現できるという効果がある。
次に図31のフローチャートに従って、撮影時ワークフローのS1500及びS1600におけるフロントエンドサーバ230の動作について説明する。
制御部02110は、制御ステーション310から撮影モードに切り替える指示を受信し、撮影モードに切り替える(S02300)。撮影が開始されると、データ入力制御部02120はカメラアダプタ120からの撮影データの受信を開始する(S02310)。
撮影データは、データ同期部02130によってファイル作成に必要な撮影データが全て揃うまでバッファされる(S02320)。フローチャート上は明記していないが、ここでは撮影データに付与されている時間情報が一致するかどうかや、所定台数のカメラが充足しているかどうかが判定される。またカメラ112の状態によっては、キャリブレーション中やエラー処理中であることによって画像データが送られない場合がある。この場合は、所定のカメラ番号の画像が抜けていることが後段のデータベース250転送(S2370)の中で通知される。ここで、所定カメラ台数の充足を判定するために、撮影データの到着を所定時間待つ方法がある。しかし本実施形他では、システム一連の処理の遅延を抑制するために、各カメラアダプタ120がデイジーチェーンによってデータを伝送する際に、各カメラ番号に対応する画像データの有無を示す情報を付与する。これにより、フロントエンドサーバ230の制御部02110において即時判断が可能となる。これによって、撮影データの到着待ち時間を設定する必要がなくなる効果が得られることをここに明記しておく。
データ同期部02130によってファイル作成に必要なデータがバッファリングされた後、RAW画像データの現像処理やレンズ歪み補正、前景画像及び背景画像の各カメラで撮影された画像間の色や輝度値を合わせるなどの各種変換処理が行われる(S02330)。
データ同期部02130によってバッファリングされたデータが背景画像を含む場合は背景画像の結合処理(S02340)が行われ、背景画像を含まない場合は三次元モデルの結合処理(S02350)が行われる(S02335)。
S02330に於いて画像処理部02150が処理した背景画像を画像結合部02170が取得する。そして、S02230でCADデータ記憶部02135が保存したスタジアム形状データの座標に合わせて背景画像をつなぎ合わせて、結合した背景画像を撮影データファイル生成部に送る(S02340)。
データ同期部02130から三次元モデルを取得した三次元モデル結合部02160は三次元モデルデータとカメラパラメータを使って前景画像の三次元モデルを生成する(S02350)。
S02350までの処理によって作成された撮影データを受け取った撮影データファイル生成部02180は、撮影データをファイル形式に応じて成形してからパッキングする。その後、DBアクセス制御部02190に作成したファイルを送る(S02360)。DBアクセス制御部02190は、S02360で撮影データファイル生成部02180から受け取った撮影データファイルを、データベース250に送信する(S02370)。
次に、撮影時ワークフローのS1500及びS1600の仮想視点画像生成におけるデータベース250の動作に関して、図32のフローチャートに従って特にデータの書き込みの動作について説明する。
フロントエンドサーバ230から撮影データがデータベース250のデータ入力部02420に入力される。データ入力部02420は入力された撮影データにメタ情報として紐づいている時刻情報あるいはタイムコード情報を抽出し、入力された撮影データが時刻t1の撮影データであることを検出する(S2810)。
データ入力部02420は入力された時刻t1の撮影データをキャッシュ02440に送り、キャッシュ02440は時刻t1の撮影データをキャッシュする(S02820)。
データ入力部02420は時刻t1のNフレーム前の撮影データ、すなわち時刻t1-Nの撮影データがキャッシュされているか否かを判断し、キャッシュ済みであればS02830、キャッシュされていなければ処理を終了する(S02825)。なお、Nはフレームレートによって可変となる。ここで記載されるt1-Nは、t1からフレーム単位時間のN倍だけ前の時間であってもよいし、時刻t1のフレームよりNフレームだけ前のタイムコードであってもよい。
キャッシュ02440は時刻t1の撮影データをキャッシュすると、キャッシュ済みの時刻t1-Nの撮影データを一次ストレージ上に転送し、一次ストレージ02450はキャッシュ02440から送られた時刻t1-Nの撮影データを記録する(S02830)。これにより、高速アクセス可能なキャッシュの容量制限に応じて、所定時刻よりも前のフレームが一次ストレージに逐次保管されていく。これは例えば、キャッシュ02440をリングバッファ構造にすることで実現することができる。
続いて、撮影時ワークフローのS1500及びS1600の仮想視点画像生成におけるデータベース250の動作に関して、図33のフローチャートに従って特にデータの読み出しの動作について説明する。
バックエンドサーバ270はデータ出力部02430に対して、タイムコードが時刻tに対応するデータを要求する(S02810)。データ出力部02430は時刻tのデータをキャッシュ02440が保持しているか一次ストレージ02450が保持しているか判断し、どちらからデータを読み出すかを決定する(S02820)。例えば、先に説明した図32と同じく、時刻t1がデータ入力部02420に撮影データが入力された時刻であった場合、時刻tが時刻t1-Nより前の時刻であれば一次ストレージからデータが読み出される(S02830)。時刻tが時刻t1-Nとt1の間の時刻であればキャッシュ上から読み出される(S02840)。時刻tが時刻t1より後の時刻である場合はデータ出力部02430はバックエンドサーバ270に対してエラー通知を行う(S02850)。
つぎに、カメラアダプタ120の画像処理部06130の処理フローについて、図35(a)、図35(b)、図35(c)、図35(d)、及び図35(e)の各フローチャートを用いて説明する。
図35(a)の処理に先だち、キャリブレーション制御部06133は入力された画像に対して、カメラ毎の色のばらつきを抑えるための色補正処理やカメラの振動に起因する画像のブレを低減させて画像を安定させるブレ補正処理(電子防振処理)などを行う。色補正処理では、フロントエンドサーバ230から受信したパラメータに基づいて、入力画像の画素値にオフセット値を加算するなどの処理が行われる。またブレ補正処理では、カメラに内蔵された加速度センサあるいはジャイロセンサなどのセンサからの出力データに基づき画像のブレ量が推定される。そして推定されたブレ量に基づいて入力画像に対する画像位置のシフトや画像の回転処理が行われることで、フレーム画像間のブレが抑制される。なおブレ補正の手法としてはその他の方法を用いてもよい。例えば、時間的に連続した複数のフレーム画像を比較することで画像の移動量を推定し補正するような画像処理による方法や、レンズシフト方式及びセンサシフト方式などのカメラの内部で実現する方法等でもよい。
背景更新部05003は、入力画像と、メモリに保存されている背景画像とを用いて、背景画像05002を更新する処理を行う。背景画像の一例を図34(a)に示す。更新処理は各画素に対して行われる。その処理フローを図35(a)に示す。
まず背景更新部05003は、S05001で、入力画像の各画素に対して、背景画像内の対応する位置にある画素との差分を導出する。つぎに、S05002で、差分が定められた閾値Kより小さいかどうか判定する。差分がKより小さい場合にはその画素は背景であるという判断がされる(S5002のYES)。つぎに背景更新部05003は、S05003で、入力画像の画素値と背景画像の画素値とを一定の比率で混合した値を導出する。そしてS05004で、背景画像内の画素値を導出した値で更新する。
一方、背景画像である図34(a)に対して人物が映っている例を図34(b)に示す。このような場合には、人物が位置している画素に着目すると、背景に対して画素値の差分が大きくなり、S05002において差分がK以上となる。その場合には画素値の変化が大きいので背景以外の何らかのオブジェクトが映っているという判断がされて、背景画像05002の更新は行われない(S05002のNO)。なお背景更新処理については他にも様々な手法が考えられる。
次に背景切出部05004は、背景画像05002からその一部を読み出し、伝送部06120へ送信する。スタジアム等でサッカーなどの競技を撮影する際に、フィールド全体を死角なく撮影できるようカメラ112を複数配置した場合、カメラ112間で背景情報の大部分が重複するという特徴がある。背景情報は膨大なため、伝送帯域制約の面から重複した部分は削除して伝送することで伝送量を削減することができる。その処理の流れを図35(d)に示す。S05010で、背景切出部05004は、例えば図34(c)に示した点線で囲まれた部分領域3401のように、背景画像の中央部分を設定する。つまり、本部分領域3401は自カメラ112が伝送を担当する背景領域であり、それ以外の背景領域は、他のカメラ112によって伝送を担当される。S05011で背景切出部05004は、設定された背景画像の部分領域3401を読み出す。そしてS05012で伝送部06120へ出力する。出力された背景画像は画像コンピューティングサーバ200に集められ、背景モデルのテクスチャとして利用される。各カメラアダプタ120において背景画像05002を切出す位置は、背景モデルに対するテクスチャ情報が不足しないように、予め決められたパラメータ値に応じて設定されている。通常は伝送データ量をより少なくするため、切出す領域は必要最小限となるように設定される。これにより、膨大な背景情報の伝送量を削減できるという効果があり、高解像度化にも対応できるシステムにすることができる。
次に前景分離部05001では、前景領域(人物などのオブジェクト)を検出する処理が行われる。画素毎に実行される前景領域検出処理の流れを図35(b)に示す。前景の検出については、背景差分情報を用いる方法が用いられる。まずS05005で、前景分離部05001は、新たに入力された画像の各画素と、背景画像05002内の対応する位置にある画素との差分を導出する。そしてS05006で差分が閾値Lより大きいかどうか判定する。ここで、図34(a)に示した背景画像05002に対して、新たに入力された画像が例えば図34(b)のようになっているものとすると、人物が映っている領域の各画素においては差分が大きくなる。差分が閾値Lより大きい場合にはS05007で、その画素が前景として設定される。なお背景差分情報を用いる前景の検出方法においては、前景をより高精度に検出するための様々な工夫が考えられている。また前景検出についてはその他にも、特徴量や機械学習を用いる手法などさまざまな手法がある。
前景分離部05001は、以上図35(b)で説明した処理を入力された画像の画素毎に実行した後、前景領域をブロックとして決定して出力する処理を行う。処理の流れを図35(c)に示す。S05008においては、前景領域を検出した画像に対して、複数の画素が連結した前景領域を1つの前景画像として設定する。画素が連結した領域を検出する処理としては例えば領域成長法を用いる。領域成長法は公知のアルゴリズムであるため詳細な説明は省く。S05008で前景領域がそれぞれ前景画像としてまとめられた後、S05009で順次各前景画像が読み出されて伝送部06120へ出力される。
次に三次元モデル情報生成部06132では、前景画像を用いて三次元モデル情報の生成を行う。カメラアダプタが隣のカメラからの前景画像を受信すると、伝送部06120を介して他カメラ前景受信部05006にその前景画像が入力される。前景画像が入力されたときに三次元モデル処理部05005が実行する処理の流れを図35(e)に示す。ここで、画像コンピューティングサーバ200がカメラ112の撮影画像データが集め、画像処理を開始し仮想視点画像を生成する場合に、計算量が多く画像生成に係る時間が長くなる場合が考えられる。とくに三次元モデル生成における計算量が顕著に大きくなる虞がある。そこで図35(e)では、画像コンピューティングサーバ200における処理量を低減するために、カメラアダプタ120間をデイジーチェーンつないでデータを伝送する中で逐次三次元モデル情報を生成する方法について説明する。
まずS05013で三次元モデル情報生成部06132は、他のカメラ112により撮影された前景画像を受信する。つぎに三次元モデル情報生成部06132は、05014では、受信した前景画像を撮影したカメラ112が自カメラ112と同一注視点のグループに属し、且つ、隣接カメラであるかどうかを確認する。S05014がYESの場合はS05015に進む。NOの場合は、当該他カメラ112の前景画像との相関がないと判断し、処理を行わず終了する。また、S05014において、隣接カメラであるかどうかの確認が行われているが、カメラ112間の相関の判断方法はこれに限らない。例えば、三次元モデル情報生成部06132が事前に相関のあるカメラ112のカメラ番号を入手及び設定し、そのカメラ112の画像データが伝送された場合のみ画像データを取り込んで処理する方法でも、同様の効果が得られる。
次にS05015では、三次元モデル情報生成部06132は、前景画像のデプス情報の導出を行う。具体的には、まず前景分離部05001から受信した前景画像と他のカメラ112の前景画像との対応付けを行い、次に対応付けされた各画素の座標値とカメラパラメータに基づいて、各前景画像上の各画素のデプス情報を導出する。ここで画像の対応付けの手法としては例えばブロックマッチング法が用いられる。ブロックマッチング法は良く知られた方法であるので詳細な説明は省く。また対応付けの方法としてはその他にも、特徴点検出、特徴量算出、及びマッチング処理などを組み合わせて性能を向上させるようなさまざまな手法があり、どの手法を用いてもよい。
次にS05016で、三次元モデル情報生成部06132は、前景画像の三次元モデル情報を導出する。具体的には、前景画像の各画素について、S05015で導出したデプス情報とカメラパラメータ受信部05007に格納されたカメラパラメータに基づいて画素の世界座標値を導出する。そして世界座標値と画素値をセットとして、点群として構成される三次元モデルの1つの点データを設定する。以上の処理により、前景分離部05001から受信した前景画像から得られた三次元モデルの一部の点群情報と、他のカメラ112の前景画像から得られた三次元モデルの一部の点群情報とが得られる。そしてS05017で、三次元モデル情報生成部06132は、得られた三次元モデル情報にカメラ番号およびフレーム番号をメタ情報として付加し(メタ情報は例えば、タイムコードや絶対時刻でもよい。)伝送部06120へ出力する。
これにより、カメラアダプタ120間がデイジーチェーンで接続され且つ複数の注視点が設定される場合でも、デイジーチェーンによってデータを伝送しながら、カメラ112間の相関に応じて画像処理を行い、三次元モデル情報を逐次生成することができる。その結果、処理が高速化される効果がある。
なお本実施形態では、以上に説明した各処理はカメラアダプタ120に実装されたFPGAまたはASICなどのハードウェアによって実行されるが、例えばCPU、GPU、DSPなどを用いてソフトウェア処理によって実行してもよい。また本実施形態ではカメラアダプタ120内で三次元モデル情報生成を実行したが、各カメラ112からの全ての前景画像が集められる画像コンピューティングサーバ200が三次元モデル情報の生成を行ってもよい。
次に、データベース250に蓄積されたデータに基づいてバックエンドサーバ270が、ライブ画像生成及びリプレイ画像生成を行い、生成された画像をエンドユーザ端末190に表示させる処理について説明する。なお、本実施形態のバックエンドサーバ270は、ライブ画像及びリプレイ画像として、仮想視点コンテンツを生成する。本実施形態において、仮想視点コンテンツとは、複数のカメラ112による撮影画像を複数視点画像として用いて生成されるコンテンツである。すなわち、バックエンドサーバ270は、例えば、ユーザ操作に基づいて指定された視点情報に基づいて、仮想視点コンテンツを生成する。また、本実施形態では仮想視点コンテンツに音声データ(オーディオデータ)が含まれる場合の例を中心に説明しているが、必ずしも音声データが含まれていなくても良い。
ユーザが仮想カメラ操作UI330を操作して視点を指定した場合に、指定された視点位置(仮想カメラの位置)に対応する画像を生成するためのカメラ112による撮影画像がない、あるいは解像度が十分でない、あるいは画質が低い場合が考えられる。その際に、ユーザへの画像提供の条件を満たせないことが画像生成の段階まで判定できないと、オペレータの操作性が損なわれる虞がある。以下ではこの虞を低減する方法について説明する。
図36は、オペレータ(ユーザ)による入力装置への操作が行われてから仮想視点画像が表示されるまでの仮想カメラ操作UI330、バックエンドサーバ270及びデータベース250の処理フローを示す。
まず、オペレータが仮想カメラを操作するために入力装置を操作する(S03300)。
入力装置として例えば、ジョイスティック、ジョグダイヤル、タッチパネル、キーボード、及びマウスなどが用いられる。
仮想カメラ操作UI330において、入力された仮想カメラの位置や姿勢を表す仮想カメラパラメータが導出される(S03301)。
仮想カメラパラメータには、仮想カメラの位置と姿勢などを示す外部パラメータ、および仮想カメラのズーム倍率などを示す内部パラメータが含まれる。
仮想カメラ操作UI330は、導出した仮想カメラパラメータをバックエンドサーバ270に送信する。
バックエンドサーバ270は、仮想カメラパラメータを受信するとデータベース250に対して前景三次元モデル群を要求する(S03303)。データベース250は、要求に応じて前景オブジェクトの位置情報を含む前景三次元モデル群をバックエンドサーバ270に送信する(S03304)。
バックエンドサーバ270は、仮想カメラパラメータと前景三次元モデルに含まれる前景オブジェクトの位置情報に基づいて仮想カメラの視野に入る前景オブジェクト群を幾何学的に導出する(S03305)。
バックエンドサーバ270は、導出した前景オブジェクト群の前景画像、前景三次元モデル、背景画像及び音声データ群をデータベース250に要求する(S03306)。
データベース250は、要求に応じてデータをバックエンドサーバ270に送信する(S03307)。
バックエンドサーバ270は、受信した前景画像、前景三次元モデル及び背景画像から仮想視点の前景画像及び背景画像を生成し、それらを合成して仮想視点の全景画像を生成する。
また、音声データ群に基づいて仮想カメラの位置に応じた音声データの合成を行い、仮想視点の全景画像と統合して仮想視点の画像及び音声を生成する(S03308)。
バックエンドサーバ270は、生成した仮想視点の画像及び音声を仮想カメラ操作UI330に送信する(S03309)。仮想カメラ操作UI330は受信した画像を表示することで仮想カメラの撮影画像の表示を実現する。
図38(a)は、仮想カメラ操作UI330がライブ画像を生成する際の処理手順を説明するフローチャートである。
S08201で、オペレータが仮想カメラ08001を操作するために入力装置に対して入力された操作情報を取得する。S08202で、仮想カメラ操作部08101が、オペレータの操作が仮想カメラ08001の移動や回転であるか否かを判定する。ここでの移動や回転は1フレームごとに行われる。移動や回転であると判定された場合はS08203へ進む。そうでないと判定された場合はS08205へ進む。ここで、移動操作及び回転操作と軌跡選択操作とで処理が分岐する。これにより、時間を停止させて視点位置を回転させる画像表現と連続的な動きを表現する画像表現とを簡便な操作で切り替えることが可能になるという効果がある。
S08203で、図38(b)で説明する1フレーム分の処理を行う。S08204で、仮想カメラ操作UI330はオペレータが終了操作を入力したか否かを判定する。終了操作が入力された場合は処理を終了する。終了しなかった場合はS08201へ戻る。
つぎにS08205で、仮想カメラ操作部08101は、オペレータによって軌跡(仮想カメラパス)の選択操作が入力されたか否かを判定する。例えば、軌跡は複数フレーム分の仮想カメラ08001の操作情報の列で表すことができる。軌跡の選択操作が入力されたと判定された場合はS08206へ進む。そうでないと判定された場合はS08201へ戻る。
S08206で、仮想カメラ操作UI330は、選択された軌跡から次のフレームの操作を取得する。S08207で、図38(b)で説明する1フレーム分の処理を行う。S08208で、選択された軌跡のすべてのフレームに対する処理が終了したか否かを判定する。終了した場合はS08204へ進む。終了していない場合はS08206へ戻る。
図38(b)は、S08203およびS08206における1フレーム分の処理を説明するフローチャートである。
S08209で、仮想カメラパラメータ導出部08102が、位置や姿勢が変更された後の、仮想カメラパラメータを導出する。S08210で、衝突判定部08104が、衝突判定を行う。衝突した、つまり、仮想カメラ制約が満たされていない場合はS08214へ進む。衝突していない、つまり、仮想カメラ制約が満たされている場合はS08211へ進む。
このように、仮想カメラ操作UI330において、衝突判定が行われる。そして判定結果に応じて、例えば操作部をロックする、あるいは色が異なるメッセージ表示をして警告する等の処理が行われることで、オペレータに対するフィードバックの即時性を高めることができる。これにより、結果的にオペレータの操作性向上につながるという効果があることを明記しておく。
S08211で、仮想カメラパス管理部08106が、仮想カメラパラメータをバックエンドサーバ270へ送信する。S08212で、仮想カメラ画像・音声出力部08108が、バックエンドサーバ270から受信した画像を出力する。
S08214で、仮想カメラ制約を満たすように仮想カメラ08001の位置や姿勢が修正される。例えば、ユーザによる最新の操作入力がキャンセルされ、仮想カメラパラメータが1フレーム前の状態に戻される。これによりオペレータは、例えば軌跡入力が行われて衝突が発生した場合などに、最初から操作入力をやり直さずに、衝突が発生したところからインタラクティブに操作入力を補正することが可能となり、操作性が向上される効果がある。
S08215で、フィードバック出力部08105が、仮想カメラ制約を満たさないことを、オペレータに通知する。通知は音、メッセージ、及び仮想カメラ操作UI330をロックさせる等の方法により行う。また、通知方法はこれに限定するものではない。
図39は、仮想カメラ操作UI330がリプレイ画像を生成する際の処理手順を説明するフローチャートである。
S08301で、仮想カメラパス管理部08106が、ライブ画像の仮想カメラパス08002を取得する。S08302で、仮想カメラパス管理部08106は、ライブ画像の仮想カメラパス08002から、開始点と終了点を選択するためのオペレータの操作を受け付ける。例えば、ゴールシーン前後の10秒分の仮想カメラパス08002が選択されうる。ライブ画像が60フレーム/秒の場合は、10秒分の仮想カメラパス08002に、600個の仮想カメラパラメータが含まれる。このようにフレーム毎に仮想カメラパラメータ情報が紐づけられて管理される。
S08303で、選択された10秒分の仮想カメラパス08002が、リプレイ画像の仮想カメラパス08002の初期値として保存される。また、S08307からS08309の処理により、仮想カメラパス08002が編集された場合は、編集した結果が上書き保存される。
S08304で、仮想カメラ操作UI330は、オペレータにより入力された操作が再生操作であるか否かを判定する。再生操作の場合はS08305へ進む。再生操作でない場合はS08307へ進む。
S08305で、再生する範囲の選択に関するオペレータ入力を受け付ける。S08306で、オペレータにより選択された範囲の画像及び音声が再生される。具体的には、仮想カメラパス管理部08106が、選択された範囲の仮想カメラパス08002をバックエンドサーバ270へ送信する。すなわち、仮想カメラパス08002に含まれる仮想カメラパラメータを順に送信する。そして仮想カメラ画像・音声出力部08108が、バックエンドサーバ270から受信した仮想視点画像及び仮想視点音声を出力する。
S08307で、仮想カメラ操作UI330は、オペレータにより入力された操作が編集操作であるか否かを判定する。編集の場合はS08308へ進む。編集でない場合はS08310へ進む。
S08308で、仮想カメラ操作UI330は、編集範囲としてオペレータにより選択された範囲を特定する。S08309で、S08306と同様の処理により、選択された編集範囲の画像及び音声が再生される。ただし、その際に仮想カメラ操作部08101を用いて仮想カメラ08001が操作された場合、その結果を反映する。つまり、ライブ画像とは異なる視点の画像となるように、リプレイ画像を編集することが可能である。また、スロー再生や停止を行うようにリプレイ画像を編集してもよい。例えば、時間を停止し、視点を動かすという編集も可能である。
S08310で、仮想カメラ操作UI330は、オペレータにより入力された操作が終了操作であるか否かを判定する。終了の場合はS08311へ進む。終了でない場合はS08304へ進む。
S08311で、編集が終わった仮想カメラパス08002がバックエンドサーバ270へ送信される。
図40は、仮想カメラ操作UI330を用いて生成された複数の仮想カメラ画像の中から所望の仮想カメラ画像をユーザが選択して鑑賞するための処理手順を説明するフローチャートである。例えば、ユーザはエンドユーザ端末190を用いて、仮想カメラ画像を鑑賞する。なお、仮想カメラパス08002は画像コンピューティングサーバ200に蓄積されていてもよいし、それとは異なるWebサーバ(不図示)に蓄積されていてもよい。
S08401で、エンドユーザ端末190は、仮想カメラパス08002のリストを取得する。各仮想カメラパス08002には、サムネイルやユーザの評価などが付加されていてもよい。また、S08401において、エンドユーザ端末190には、仮想カメラパス08002のリストが表示される。
S08402で、エンドユーザ端末190は、ユーザによりリストの中から選択された仮想カメラパス08002に関する指定情報を取得する。
S08403で、エンドユーザ端末190は、ユーザにより選択された仮想カメラパス08002をバックエンドサーバ270に送信する。バックエンドサーバ270は受信した仮想カメラパス08002から仮想視点画像及び仮想視点音声を生成し、エンドユーザ端末190へ送信する。
S08404で、エンドユーザ端末190は、バックエンドサーバ270から受信した仮想視点画像及び仮想視点音声を出力する。
このように、仮想カメラパスのリストを蓄積し、後から仮想カメラパスを使って画像を再現可能にすることによって、仮想視点画像を常に蓄積し続ける必要がなくなり、蓄積装置コストを削減することが可能になる。さらに、優先度の高い仮想カメラパスの画像生成を要求された場合に、優先度の低い仮想カメラパス画像生成の順序を後にして対応することもできる。また、仮想カメラパスをWebサーバで公開する場合には、Webに接続されるエンドユーザに対して、仮想視点画像を提供したり、共有させたりすることが可能になり、ユーザに対するサービス性を向上させる効果があることをここに明記しておく。
エンドユーザ端末190で表示される画面について説明する。図41は、エンドユーザ端末190が表示する表示画面41001の一例である。
エンドユーザ端末190が、画像が表示される領域41002に、バックエンドサーバ270から入力された画像を順次表示することで、視聴者(ユーザ)は、サッカーの試合などの仮想視点画像を視聴可能となる。視聴者は、この表示画像に応じてユーザ入力機器を操作することにより、画像の視点の切り替えを行う。例えば、ユーザがマウスを左方向に移動させると、表示される画像における左の方向に視点が向いた画像が表示される。マウスを上方向に移動させると、表示される画像における上の方向を見上げた画像が表示される。
画像表示の領域41002とは別の領域には、手動操縦と自動操縦を切り換えることが可能なGUI(Graphic User Interface)のボタン41003及びボタン41004が設けられる。これに対する操作を行うことで、視聴者自身が視点の変更を行い視聴するか、予め設定された視点で視聴するかを視聴者が選択できる。
例えば、あるエンドユーザ端末190がユーザの手動操縦による視点の切り替え結果を表す視点操作情報を画像コンピューティングサーバ200やWebサーバ(不図示)に逐次アップロードする。そして、別のエンドユーザ端末190を操作するユーザがその視点操作情報を入手して、それに応じた仮想視点画像を視聴することも可能である。また、アップロードされる視点操作情報に対するレーティングを可能とすることで、ユーザは例えば人気の高い視点操作情報に応じた画像を選択して視聴することができ、操作に不慣れなユーザでも本サービスを簡便に利用できるという特有の効果がある。
次に、視聴者が手動操縦を選択し、手動操縦しているときの、アプリケーション管理部10001の動作について説明する。図42は、アプリケーション管理部10001の手動操縦処理を表すフローチャートである。
アプリケーション管理部10001は、ユーザによる入力があるかを判定する(S10010)。
ユーザによる入力がある場合(S10010のYes)、アプリケーション管理部10001は、ユーザ入力情報をバックエンドサーバ270が認識可能なバックエンドサーバコマンドに変換する(S10011)。
一方、ユーザによる入力がない場合(S10010のNo)、S10013へ進む。
次に、アプリケーション管理部10001は、バックエンドサーバコマンドを、基本ソフト部10002及びネットワーク通信部10003を介して送信する(S10012)。
バックエンドサーバ270がユーザ入力情報に基づいて視点変更した画像を生成した後、アプリケーション管理部10001は、ネットワーク通信部10003及び基本ソフト部10002を介してバックエンドサーバ270から画像を受信する(S10013)。そして、アプリケーション管理部10001は、受信した画像を所定の画像表示領域41002に表示する(S10014)。以上の処理を行うことで、手動操縦により、画像の視点が変更される。
続いて、視聴者(ユーザ)が自動操縦を選択したときの、アプリケーション管理部10001の動作について説明する。図43は、アプリケーション管理部10001の自動操縦処理を表すフローチャートである。
アプリケーション管理部10001は、自動操縦用入力情報がある場合(S10020)、自動操縦用入力情報を読み出す(S10021)。
アプリケーション管理部10001は、読みだした自動操縦用入力情報を、バックエンドサーバ270が認識可能なバックエンドサーバコマンドに変換する(S10022)。
次に、バックエンドサーバコマンドを、基本ソフト部10002及びネットワーク通信部10003を介して送信する(S10023)。
バックエンドサーバ270がユーザ入力情報に基づいて視点変更した画像を生成した後、アプリケーション管理部10001は、ネットワーク通信部10003及び基本ソフト部10002を介してバックエンドサーバ270から画像を受信する(S10024)。最後に、アプリケーション管理部10001は、受信した画像を所定の画像表示領域に表示する(S10025)。以上の処理を、自動操縦用入力情報がある限り繰り返し行うことで、自動操縦により、画像の視点が変更される。
図44は、バックエンドサーバ270において1フレームの仮想視点画像を生成する処理フローを示す。
まず、データ受信部03001は、コントローラ300から仮想カメラパラメータを受信する(S03100)。前述の通り、仮想カメラパラメータは、仮想視点の位置や姿勢などを表すデータのことである。
前景オブジェクト決定部03010は、受信した仮想カメラパラメータと前景オブジェクトの位置を元に仮想視点画像の生成で必要となる前景オブジェクトを決定する(S03101)。仮想視点から見た場合に視野に入る前景オブジェクトを三次元幾何学的に求める。要求リスト生成部03011は、決定した前景オブジェクトの前景画像、前景三次元モデル群、背景画像及び音声データ群の要求リストを生成し、要求データ出力部03012からデータベース250に要求を行う(S03102)。要求リストとはデータベース250に対してリクエストするデータの内容である。
データ受信部03001は、要求した情報をデータベース250から受信する(S03103)。データ受信部03001は、データベース250から受信した情報にエラーを示す情報が含まれるか判定する(S03104)。
ここで、エラーを示す情報としては例えば画像転送量オーバーフロー、画像撮影失敗及び画像のデータベース保存失敗などが挙げられる。このエラー情報はデータベース250に格納されているものである。
S03104においてエラーを示す情報が含まれる場合、データ受信部03001は、仮想視点画像の生成は不可であると判断し、データを出力せず処理を終了する。
S03104においてエラーを示す情報が含まれない場合、バックエンドサーバ270、仮想視点における背景画像の生成、前景画像の生成、及び視点に応じた音声の生成を行う。背景テクスチャ貼り付け部03002は、システムの起動後に取得され背景メッシュモデル管理部03013で保持されている背景メッシュモデルとデータベース250から取得した背景画像から、テクスチャ付き背景メッシュモデルを生成する(S03105)。
またバックエンドサーバ270は、レンダリングモードに応じて前景画像を生成する(S03106)。またバックエンドサーバ270は、仮想視点での音の聞こえ方を模擬するように音声データ群を合成して音声を生成する(S03107)。音声データ群の合成においては、仮想視点と音声データの取得位置を元に合成する各音声データの大きさが調整される。
レンダリング部03006は、S3105で生成したテクスチャ付き背景メッシュモデルを仮想視点から見た視野にトリミングし、そこに前景画像を合成することで仮想視点の全景画像を生成する(S03108)。
合成部03008は、仮想視点音声生成(S03107)で生成された仮想音声とレンダリングされた仮想視点の全景画像を統合し(S03109)、1フレームの仮想視点コンテンツを生成する。
画像出力部03009は、生成された1フレームの仮想視点コンテンツを外部のコントローラ300およびエンドユーザ端末190へ出力する(S03110)。
つぎに、本システムを適用可能なユースケースを増大するために、さまざまな仮想視点画像生成の要求に対応できる柔軟な制御判定を行うことについて説明する。
図45に前景画像生成のフローを示す。ここでは、仮想視点画像生成において、画像の出力先に応じた要求に対応するため、複数のレンダリングアルゴリズムから何れかを選択する選択指針の一例について説明する。
まず、バックエンドサーバ270のレンダリングモード管理部03014は、レンダリング手法の決定を行う。レンダリング手法を決定するための要求事項は、制御ステーション310からバックエンドサーバ270に対して設定される。レンダリングモード管理部03014は、要求事項に従ってレンダリング手法を決定する。レンダリングモード管理部03014は、カメラ112による撮影に基づくバックエンドサーバ270での仮想視点画像生成において高速性を優先する要求が行われたか確認する(S03200)。高速性を優先する要求とは、低遅延の画像生成の要求と等価である。S03200でYESの場合、レンダリングとしてIBRを有効にする(S03201)。つぎに、仮想視点画像生成に係る視点の指定の自由度を優先する要求が行われたかどうか確認する(S03202)。S03202でYESの場合、レンダリングとしてMBRを有効にする(S03203)。つぎに、仮想視点画像生成において計算処理軽量化を優先する要求が行われたかどうか確認する(S03204)。計算処理軽量化を優先する要求は、例えば、コンピュータ資源をあまり使わずに低コストでシステムを構成する場合などに行われる。S03204でYESの場合、レンダリングとしてIBRを有効にする(S03205)。つぎに、レンダリングモード管理部03014は、仮想視点画像生成のために使用されるカメラ112の台数が閾値以上であるかどうか確認する(S03206)。S03206でYESの場合、レンダリングとしてMBRを有効にする(S03207)。
バックエンドサーバ270は、レンダリングモード管理部03014で管理されているモード情報から、レンダリング方式がMBRあるいはIBRのどちらであるか判定する(S03208)。なお、S03201、S03203、S03205、及びS03207の何れの処理も行われていない場合には、システム稼働時に予め決められているデフォルトのレンダリング方式が用いられるものとする。
S03208において、レンダリング方式がモデルベース(MBR)であると判定された場合、前景テクスチャ決定部03003は、前景三次元モデルと前景画像群を元に前景のテクスチャを決定する(S03209)。そして、前景テクスチャ境界色合わせ部03004は、決定した前景のテクスチャの境界の色合わせを行う(S03210)。前景三次元モデルのテクスチャは複数の前景画像群から抽出されるため、各前景画像の撮影状態の違いによるテクスチャの色が異なることへの対応として、この色合わせが行われる。
S03208において、レンダリング方式がIBRと判定された場合、仮想視点前景画像生成部03005は、仮想カメラパラメータと前景画像群に基づいて透視変換など幾何変換を各前景画像に行い、仮想視点からの前景画像を生成する(S03211)。
なお、ユーザがシステム稼働中に任意にレンダリング方式を変更したり、仮想視点の状態に応じてシステムがレンダリング方式を変更したりしてもよい。また、候補となるレンダリング方式をシステム稼働中に変更してもよい。
これにより、仮想視点画像の生成に係るレンダリングアルゴリズムを、起動時に設定するだけでなく、状況に応じて変更できるため、さまざまな要求にこたえることができる。つまり、画像出力先が異なる要件(例えば各パラメータの優先度)を要求しても、柔軟に対応できるという効果がある。なお、本実施形態ではレンダリング方式としてIBRとMBRの何れかを用いることを前提としたが、これに限らず双方の方式を用いたハイブリッド方式などを用いてもよい。ハイブリッド方式を用いる場合、レンダリングモード管理部03014は、データ受信部03001が取得した情報に基づいて、仮想視点画像を分割した複数の分割領域それぞれの生成に用いられる複数の生成方式を決定する。即ち、1フレームの仮想視点画像の一部の領域はMBRに基づいて生成され、他の一部の領域はIBRに基づいて生成されてもよい。例えば、光沢がある、テクスチャがない、非凸面などのオブジェクトはIBRを用いることで三次元モデルの精度の低下を回避したり、仮想視点に近いオブジェクトはMBRを用いることで画像が平面的になってしまうことを回避したりするなどの方法がある。また例えば、画面の中心付近のオブジェクトは綺麗に表示したいのでMBRで画像を生成し、端のほうのオブジェクトはIBRで画像を生成することで処理負荷を下げることもできる。これにより、仮想視点画像の生成に係る処理負荷と仮想視点画像の画質をより詳細に制御することができる。
また、競技に応じて、注視点、カメラワーク、及び伝送制御等のシステムの適切な設定が異なる場合があるが、競技が開催されるたびにシステムの設定を操作者が手動で行うと操作者の手間が大きくなる虞があるため、設定の簡単化が求められる。そこで、画像処理システム100は、設定変更の対象となる機器の設定を自動で更新することで、仮想視点画像を生成するためのシステムの設定を行う操作者の手間を低減する仕組みを提供する。この仕組みについて、以下で説明する。
図46は前述の設置後ワークフローにおいて生成され、撮影前ワークフローにおいてシステムを構成する装置に設定される運用に関する情報リストである。制御ステーション310は、複数のカメラ112による撮影の対象となる競技に関する競技情報をユーザによる入力操作に基づいて取得する。なお、競技情報の取得方法はこれに限らず、例えば制御ステーション310は競技情報を他の装置から取得してもよい。そして制御ステーション310は、取得した競技情報と画像処理システム100の設定情報とを対応付けて上記の情報リストとして保持する。以下運用に関する情報リストを設定リストと言う。制御ステーション310が、保持している設定リストに基づいてシステムの設定処理を行う制御装置として動作することで、システムの設定を行う操作者の手間が低減される。
制御ステーション310が取得する競技情報は、例えば撮影の対象となる競技の種別及び開始時刻の少なくとも何れかを含む。ただし競技情報はこれに限らず、競技に関するその他の情報であってもよい。
撮影番号46101は撮影される各競技に対応するシーンを表し、予定時間46103は各競技の開始予定時刻および終了予定時刻である。各シーンの開始時刻前には、制御ステーション310から各機器に対して設定リストに応じた変更要求が行われる。
競技名称46102は競技種別の名称である。注視点(座標指定)46104は、カメラ112a-112zの注視点の数、各注視点の座標位置、および各注視点に対応するカメラ番号から構成される。注視点の位置に応じて、各カメラ112の撮影方向が定まる。
カメラワーク46105は、仮想カメラ操作UI330およびバックエンドサーバ270によって仮想視点が操作され画像が生成される際のカメラパスの範囲を表す。カメラワーク46105に基づいて、仮想視点画像の生成に係る視点の指定可能範囲が定まる。
キャリブレーションファイル46106は、図17で説明した設置時キャリブレーションにおいて導出された、仮想視点画像の生成に係る複数のカメラ112の位置合わせに関するカメラパラメータの値を格納したファイルであり、注視点毎に生成される。
画像生成アルゴリズム46107は、撮影画像に基づく仮想視点画像の生成に係るレンダリング方式としてIBR、MBR、及び両者を使うハイブリッド方式の何れが用いられるかの設定を示す。レンダリング方式は制御ステーション310からバックエンドサーバ270に対して設定される。例えば、撮影番号=3の砲丸投げや走り高跳びのように閾値以下の数の選手に対応する競技の種別を示す競技情報と、撮影画像に基づいて生成される三次元モデルを用いて仮想視点画像を生成するMBR方式を示す設定情報とが対応付けられる。これにより、参加選手が少ない競技の仮想視点画像における視点の指定の自由度が高くなる。一方で、撮影番号=1の開会式のように参加選手の数が多い競技では、MBR方式で仮想視点画像を生成しようとすると処理負荷が大きくなるため、より小さい処理負荷で仮想視点画像を生成できるIBR方式が対応付けられる。
前景背景伝送46108は、撮影画像から分離される前景画像(FGと表す)及び背景画像(BGと表す)それぞれに対する圧縮割合とフレームレート(単位はfps)の設定を表す。なお、前景画像は仮想視点画像の生成のために撮影画像から抽出される前景領域に基づいて生成され画像処理システム100内で伝送される前景画像であり、背景画像は同様に撮影画像から抽出される背景領域に基づいて生成及び伝送される背景画像である。
図47は制御ステーション310による撮影前ワークフローにおいてシステムを構成する装置に設定リストの撮影番号=2に関する情報が設定される場合の動作シーケンスである。
制御ステーション310は、システム動作開始後、保持している設定リストから特定される撮影の対象となる競技の開始予定時刻を確認する(F47101)。そして制御ステーション310は、開始予定時刻の所定時間前になっている場合に、撮影番号=2に対応する設定処理を開始する(F47102)。上記の所定時間は例えば設定処理に要する時間である。このように、競技開始の所定時間前に自動で設定処理を開始することで、操作者が設定開始の指示を行わなくても競技の開始時に設定を完了することができる。なお、ユーザにより設定開始の指示が行われた場合には、制御ステーション310は競技の開始時刻に関わらず設定処理を開始してもよい。
制御ステーション310による設定処理は、例えば仮想視点画像を生成する装置の画像処理に関するパラメータを設定する処理や、複数のカメラ112の撮影に関するパラメータを設定する処理などを含む。ただし、設定処理の内容はこれらに限らず、例えば画像処理システム100に含まれる装置を起動させる処理などであってもよい。
まず制御ステーション310は、注視点設定を行う(F47103)。そして、カメラアダプタ120に対して、カメラ毎の注視点座標設定の要求を行う(F47104)。ここで、カメラ112は注視点に応じてグループ化され、各注視点グループ内のカメラ112には同一座標の注視点が設定される。カメラ毎の注視点座標設定の要求を受けたカメラアダプタ120は、雲台113に対するパン・チルト(PTと表す)の設定指示と、カメラ112およびレンズに対するレンズ煽り等の設定指示とを含む、雲台PT指示要求を送信する(F47105)。F47104とF47105の処理はセンサシステム110の台数分繰り返し実行される。さらに、制御ステーション310は、フロントエンドサーバ230およびデータベース250に対してカメラ毎の注視点グループ情報の設定を行う(F47106)。
つぎに、制御ステーション310は、キャリブレーションで取得した値の設定を行う(F47107)。すなわち、キャリブレーションファイルの情報をセンサシステム110の全数分設定する。そして制御ステーション310は、各カメラアダプタ120に対してキャリブレーション設定要求を送信する(F47108)。これを受信したカメラアダプタ120は、カメラ112レンズ、及び雲台113に対して、撮影パラメータやピント及びズームの設定を行う(F47109)。また制御ステーション310は、キャリブレーション設定要求をフロントエンドサーバ230に対しても実施する(F47110)。
つぎに制御ステーション310は、カメラワークの設定を行う(F47111)。そして制御ステーション310は、注視点に応じてグループ化されるカメラグループ、各カメラ112の撮影範囲、及び仮想カメラパスの範囲等の設定要求をバックエンドサーバ270に対して実施する(F47112)。バックエンドサーバ270では、仮想カメラ操作UI330からの仮想カメラ08001の視点パスを物理的なカメラ112にマッピングして画像をレンダリングするためにカメラワークに関連する情報が必要になる。バックエンドサーバ270は、仮想カメラの移動可能範囲を確認するために、仮想カメラ操作UI330に対して、仮想カメラの試行要求を行う(F47113)。そしてバックエンドサーバ270は、仮想カメラ操作UI330から仮想カメラ操作通知を受信する(F47114)。ここで、バックエンドサーバ270は、受信した仮想カメラ操作通知に応じた視点位置に対応する有効な画像がないことを判断する(F47115)。そしてバックエンドサーバ270は仮想カメラ操作UI330に対してエラー通知を行う(F47116)。仮想カメラ操作UI330はエラー通知に応じてこれ以上の視点移動ができないことを判断し、あらためて別の視点への仮想カメラ操作を行い、バックエンドサーバ270に通知を行う(F47117)。バックエンドサーバ270は、通知に応じた視点に対応する有効画像があることを確認し(F47118)、対応する画像応答を仮想カメラ操作UI330に対して送信する(F47119)。
つぎに、制御ステーション310は、画像生成アルゴリズムの設定を行う(F47120)。そしてIBR、MBR及びハイブリッドのいずれのアルゴリズム方式を使うかをバックエンドサーバに指示する(F47121)。
つぎに制御ステーション310は、前景画像及び背景画像の伝送方法について設定を行う(F47112)。そして制御ステーション310は、設定リストに基づいて、前景画像(FG)及び背景画像(BG)の圧縮割合、ならびにフレームレート(1秒あたりのフレーム数:fps)の設定をカメラアダプタ120に対して行う。本図では、FGの圧縮割合を1/3圧縮とし、FGのフレームレートを60fpsとし、BGを送信しないことがカメラアダプタ120に対して指示されている(F47123)。この場合、カメラアダプタ120から背景画像が送られないことから、バックエンドサーバ270はレンダリング時に背景のテクスチャを得られない。そのため制御ステーション310は、バックエンドサーバ270に対して、背景三次元モデルの利用指示、つまりスタジアム形状のワイヤフレームに基づいた背景画像生成の指示を行う(F47124)。
以上の処理が行われた状態で、競技の終了時刻まで撮影が行われる。なお、競技時間の延長も考えられるので、オペレータが撮影停止の最終的な決定をしてもよい。
撮影の終了後、あらためて、制御ステーション310は、次のシーンの開始予定時刻に先立ちシステムの開始処理を行う。即ち、制御ステーション310は、撮影番号=3のシーンの開始予定時刻を確認し(F47125)、撮影番号=3に関する設定を、システムを構成する各装置に対して実施する(F47126)。以降、設定リストにしたがって上記述べた処理が繰り返し実施される。
このように制御ステーション310が自動で各装置の設定を行うことで、オペレータはシステムの開始操作や確認操作などを行うだけでよく、複雑な撮影制御に関するオペレータの作業を簡単化することができるという効果がある。
図48は、フロントエンドサーバ230がデイジーチェーンのレーンを介してカメラアダプタ120から受信するカメラ同期画像フレームmの受信制御を表すフローである。デイジーチェーンがスタジアムの半周ごとに構成される場合や、複数フロアにまたがるなどの場合には、フロントエンドサーバ230が全カメラ112の画像データの受信を終えるまで待機すると、低遅延な仮想視点画像生成の実現が難しくなる虞がある。以下ではこの虞を低減するための制御について説明する。
まずフロントエンドサーバ230は、デイジーチェーンのカメラレーン毎に画像データパケットを受信する(S48100)。そして、カメラ同期画像フレームmの逐次蓄積を行う(S48101)。つぎに、注視点グループが1つかどうか確認する(S48102)。S48102でNO、つまり注視点グループが複数の場合、複数の注視点グループにカメラの画像フレームを分類する(S48103)。つぎにフロントエンドサーバ230は、注視点毎のカメラ群112のうち画像フレームmの受信が完了した注視点グループがあるかどうか調べる(S48104)。受信が完了した注視点グループがある場合は、その注視点グループ毎に画像処理部02150、三次元モデル結合部02160、画像結合部2170および撮影データファイル生成部02180における画像処理が行われる(S48105)。つぎにフロントエンドサーバ230は、全注視点グループに関して画像処理が完了したか判定し、完了していなければ(S48106のNO)、画像フレーム待ちのタイムアウトが発生したかどうか調べる(S48107)。タイムアウトの閾値は1フレームあたりの単位時間に応じて定まってもよい。S48107でYESの場合、フロントエンドサーバ230は、ロストした画像フレームを検知し、ロストが発生したカメラ112の対象フレームにロストを示す情報をマーキングして(S48108)データベース250へ画像データを書き込む。これにより、バックエンドサーバ270は画像フレームのロストがわかるため、レンダリング処理を行う上で有効である。つまり、仮想カメラ操作UI330から指定された仮想カメラと実カメラ112のマッピングをバックエンドサーバ270で行う場合に、バックエンドサーバ270はロストが発生したカメラ112の画像をすぐに判断できる。そのため、生成される仮想視点画像が破綻する虞がある場合などに、オペレータの目視に頼ることなく、画像出力に対して自動で補正処理等をすることができるという効果がある。
続いて、本実施形態を構成する各装置のハードウェア構成について、より詳細に説明する。上述の通り、本実施形態では、カメラアダプタ120がFPGA及び/又はASICなどのハードウェアを実装し、これらのハードウェアによって、上述した各処理を実行する場合の例を中心に説明した。それはセンサシステム110内の各種装置や、フロントエンドサーバ230、データベース250、バックエンドサーバ270、及びコントローラ300についても同様である。しかしながら、上記装置のうち、少なくとも何れかが、例えばCPU、GPU、DSPなどを用い、ソフトウェア処理によって本実施形態の処理を実行するようにしても良い。
図49は、図2に示した機能構成をソフトウェア処理によって実現するための、カメラアダプタ120のハードウェア構成を示すブロック図である。なお、フロントエンドサーバ230、データベース250、バックエンドサーバ270、制御ステーション310、仮想カメラ操作UI330、及びエンドユーザ端末190などの装置も、図49のハードウェア構成となりうる。カメラアダプタ120は、CPU1201、ROM1202、RAM1203、補助記憶装置1204、表示部1205、操作部1206、通信部1207、及びバス1208を有する。
CPU1201は、ROM1202やRAM1203に格納されているコンピュータプログラムやデータを用いてカメラアダプタ120の全体を制御する。ROM1202は、変更を必要としないプログラムやパラメータを格納する。RAM1203は、補助記憶装置1204から供給されるプログラムやデータ、及び通信部1207を介して外部から供給されるデータなどを一時記憶する。補助記憶装置1204は、例えばハードディスクドライブ等で構成され、静止画や動画などのコンテンツデータを記憶する。
表示部1205は、例えば液晶ディスプレイ等で構成され、ユーザがカメラアダプタ120を操作するためのGUI(Graphical User Interface)などを表示する。操作部1206は、例えばキーボードやマウス等で構成され、ユーザによる操作を受けて各種の指示をCPU1201に入力する。通信部1207は、カメラ112やフロントエンドサーバ230などの外部の装置と通信を行う。例えば、カメラアダプタ120が外部の装置と有線で接続される場合には、LANケーブル等が通信部1207に接続される。なお、カメラアダプタ120が外部の装置と無線通信する機能を有する場合、通信部1207はアンテナを備える。バス1208は、カメラアダプタ120の各部を繋いで情報を伝達する。
なお、例えばカメラアダプタ120の処理のうち一部をFPGAで行い、別の一部の処理を、CPUを用いたソフトウェア処理によって実現するようにしても良い。また、図49に示したカメラアダプタ120の各構成要素は、単一の電子回路で構成されていてもよいし、複数の電子回路で構成されていてもよい。例えば、カメラアダプタ120は、CPU1201として動作する電子回路を複数備えていてもよい。これら複数の電子回路がCPU1201としての処理を並行して行うことで、カメラアダプタの処理速度を向上することができる。
また、本実施形態では表示部1205と操作部1206はカメラアダプタ120の内部に存在するが、カメラアダプタ120は表示部1205及び操作部1206の少なくとも一方を備えていなくてもよい。また、表示部1205及び操作部1206の少なくとも一方がカメラアダプタ120の外部に別の装置として存在していて、CPU1201が、表示部1205を制御する表示制御部、及び操作部1206を制御する操作制御部として動作してもよい。
画像処理システム100内の他の装置についても同様である。また例えば、フロントエンドサーバ230、データベース250及びバックエンドサーバ270は表示部1205を備えず、制御ステーション310、仮想カメラ操作UI330及びエンドユーザ端末190は表示部1205を備えていてもよい。また、上述の実施形態は、画像処理システム100が競技場やコンサートホールなどの施設に設置される場合の例を中心に説明した。施設の他の例としては、例えば、遊園地、公園、競馬場、競輪場、カジノ、プール、スケートリンク、スキー場、ライブハウスなどがある。また、各種施設で行われるイベントは、屋内で行われるものであっても屋外で行われるものであっても良い。また、本実施形態における施設は、一時的に(期間限定で)建設される施設も含む。
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
以上、上述した実施形態によれば、カメラ112の台数などのシステムを構成する装置の規模、及び撮影画像の出力解像度や出力フレームレートなどに依らず、仮想視点画像を簡便に生成することが出来る。以上、本発明の実施形態について詳述したが、本発明は上述の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形及び変更が可能である。