以下、本発明の実施形態について、図面を参照して説明する。なお、以下の実施形態は、本発明を限定するものではなく、本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。その他、本発明の要旨を逸脱しない範囲の様々な形態も本発明に含まれ、また、以下の実施形態の一部を適宜組み合わせることもできる。
図1は、画像処理システム10について説明するための図である。より詳細には、図1(a)は画像処理システム10の全体構成を示す図であり、また、図1(b)は画像処理システム10の情報処理装置103のハードウェア構成を示す図である。以下、図1(a)及び図1(b)の各々について説明する。
画像処理システム10は、図1(a)に示されるように、撮影システム101、仮想視点画像生成サーバ102、情報処理装置103を備える。画像処理システム10は、仮想視点画像を生成することができる。
撮影システム101は、複数のカメラを各々、異なる位置に配置し、複数視点からの複数画像を同期撮影する。撮影システム101は、複数視点から同期撮影した複数画像を、仮想視点画像生成サーバ102に送信する。
仮想視点画像生成サーバ102は、複数視点から同期撮影した複数画像を取得し、当該複数画像に基づいて、仮想カメラから見た仮想視点画像を生成する。なお、ここで、仮想カメラとは、撮影空間内を自由に移動可能な仮想的なカメラのことである。即ち、この仮想カメラでは、撮影空間内において、設置(配置)されたどのカメラとも異なる視点において撮影することができる。但し、仮想カメラの位置及び姿勢に一定の制限が課せられるようにしても良い。仮想カメラの視点は、後述する情報処理装置103が決定するカメラパラメータによって操作される。
仮想視点画像生成サーバ102は、受信した複数画像から逐次、仮想視点画像を生成する。したがって、例えば、ライブ仮想視点画像を生成することができる。なお、画像処理システム10において生成されるライブ仮想視点画像は、現在時刻に対して撮影システム101及び仮想視点画像生成サーバ102での処理遅延が考慮された時刻に撮影システム101により撮影された撮影画像に基づく仮想視点画像である。
さらに、仮想視点画像生成サーバ102は、所定のデータベースを備え、受信した複数画像を記録する機能を有する。そのため、記録した複数画像から、過去の仮想視点画像、つまり、リプレイ仮想視点画像(即ち、任意の時刻において、撮影システム101により撮影された撮影画像に基づく仮想視点画像)を生成することができる。
また、補足として、以降の説明において、特に断りがない限り、画像という用語は、動画と静止画の両方の概念を含むものとする。即ち、画像処理システム10は、静止画像及び動画像のいずれについても、処理することができる。
情報処理装置103は、仮想カメラを制御し、仮想カメラの視点を示すカメラパラメータを決定する。仮想カメラのカメラパラメータは、仮想カメラの位置、姿勢、ズーム、又は時刻の少なくともいずれか1つを指定するためのパラメータを含む。
カメラパラメータにより指定される仮想カメラの位置は、例えば、3次元座標等で示される。具体的には、X軸、Y軸、Z軸の3軸の直交座標系の座標により示すことができる。この場合、カメラパラメータにより指定される仮想カメラの位置は、座標を示すものであり、X軸、Y軸、Z軸の3軸のパラメータから構成される。また、原点を、撮影空間内の任意の位置とすることもできる。
カメラパラメータにより指定される仮想カメラの姿勢は、例えば、パン(Pan)、チルト(Tilt)、ロール(Roll)の3軸との成す角度等で示される。この場合、カメラパラメータにより指定される仮想カメラの姿勢は、パン、チルト、ロールの3軸のパラメータから構成される。カメラパラメータにより指定される仮想カメラのズームは、焦点距離の1軸のパラメータで示される。また、時刻についても、同様に、1軸のパラメータで示される。
このように、仮想カメラのカメラパラメータは、8軸のパラメータを含み、また、情報処理装置103は、これらの8軸を制御することができる。なお、カメラパラメータとして、他の要素を規定するパラメータを含ませることもでき、また、上述した8軸のパラメータの全てを含ませないようにすることもできる。
情報処理装置103は、決定した仮想カメラのカメラパラメータを、仮想視点画像生成サーバ102に送信する。仮想視点画像生成サーバ102は、仮想カメラのカメラパラメータを受信すると、その受信したカメラパラメータに基づいて、仮想視点画像を生成し、さらに、その生成した仮想視点画像を情報処理装置103に送信する。そして、情報処理装置103は、受信した仮想視点画像をカメラビュー301に表示する。なお、本実施形態のように1台の情報処理装置103によりライブ仮想視点画像とリプレイ仮想視点画像を生成しても、2台の情報処理装置を用いて、ライブ仮想視点画像とリプレイ仮想視点画像を各々、異なる情報処理装置により生成してもよい。また、上述の図1(a)では、仮想視点画像生成サーバ102と情報処理装置103とが別体として構成されているが、情報処理装置103に仮想視点画像生成サーバ102を含ませる構成としてもよい。
次に、図1(b)を用いて、情報処理装置103のハードウェア構成について説明する。情報処理装置103は、そのハードウェア構成として、CPU111、RAM112、ROM113、通信部114、入出力部115を備える。
CPU(Central Processing Unit)111は、RAM112に格納されているデータやROM113に格納されているコンピュータプログラムを用いて、情報処理装置103の動作を制御する。RAM(Random Access Memory)112は、ROM113から読み出されたコンピュータプログラム、計算の途中結果である中間データ、通信部114を介して外部から供給されるデータ等を一時的に記憶する。ROM(Read Only Memory)113は、変更を必要としないコンピュータプログラムやデータを保持する。なお、ROM113には、電源が遮断されても保持しておく必要があるデータを記憶するための不揮発メモリも含まれるものとする。
通信部114は、EthernetやUSB(Universal Serial Bus)等の通信手段を備え、仮想視点画像生成サーバ102との通信を行う。入出力部115は、仮想カメラを制御するための複数のコントローラと、仮想カメラの状態等を表示する複数の表示部を備える。
図2は、情報処理装置103の入出力部115の模式図である。入出力部115は、図2に示されるように、3つの表示部(201a、201b、201c)を備える。表示部201aは、カメラビューウィンドウを表示する。カメラビューウィンドウは、仮想視点画像生成サーバ102から受信した仮想視点画像を表示するためのウィンドウである。表示部201bは、パイロットウィンドウを表示する。パイロットウィンドウは、仮想カメラを制御するためのウィンドウである。表示部201cは、リプレイウィンドウを表示する。リプレイウィンドウは、リプレイ仮想視点画像を生成及び編集するためのウィンドウである。
なお、以降の説明において、表示部201a、201b、201cを総称して、表示部201と記載することもある。また、情報処理装置103は、上述の各ウィンドウに対する操作を行うために、不図示のタッチパネル、マウス、キーボード等を備えてもよい。
また、入出力部115は、図2に示されるように、4つのコントローラ202a、202b、203、204を備える。入出力部115は、ユーザによるコントローラ操作に応じた、仮想カメラの制御を行うための指示を受け付ける。即ち、入出力部115は、仮想カメラの位置・姿勢等を変化させるため(制御するため)の指示を受け付ける。
3軸コントローラ202a及び3軸コントローラ202bは、3軸を制御(操作)するコントローラである。3軸コントローラの各々の軸には、設定により任意の制御を割り当てることができる。3軸コントローラ202aの各々の軸には、例えば、仮想カメラの位置を指定するためのX軸、Y軸、Z軸の制御を割り当てることができる。また、3軸コントローラ202bの各々の軸には、例えば、仮想カメラの姿勢を指定するためのパン、チルト、ロールの制御を割り当てることができる。
ズームコントローラ203は、仮想カメラのズームを制御するコントローラである。リプレイコントローラ204は、リプレイ仮想視点画像を生成するための機能を制御するコントローラである。また、リプレイコントローラ204には、仮想カメラの時刻の制御も割り当てられる。
なお、図2では、入出力部115に関して、3つの表示部を備える構成をその一例として示したが、1つ、2つ、又は4つ以上の表示部を備える構成としてもよい。同様に、図2では、入出力部115に関して、4つのコントローラを備える構成をその一例として示したが、3つ以下、又は5つ以上のコントローラを備える構成としてもよい。
図3は、カメラビューウィンドウを説明するための図である。カメラビューウィンドウは、上述のように、表示部201aに表示される。カメラビュー301は、仮想視点画像生成サーバ102から受信した仮想視点画像を表示する表示領域である。この仮想視点画像は、ユーザが制御する仮想カメラから見た仮想視点画像である。また、情報処理装置103は、仮想カメラの時刻を制御することで、過去の仮想視点画像を表示することもできる。
シーン時刻302は、カメラビュー301が表示する仮想視点画像の生成に用いられる撮影画像の撮影時刻である。即ち、カメラビュー301に表示されている仮想視点画像の時刻である。
シーン再生速度303は、カメラビュー301に表示されている仮想視点画像の再生速度である。このシーン再生速度303が100%である場合、仮想視点画像は通常の再生速度で再生される。また、シーン再生速度303が100%より小さい場合、仮想視点画像はスローで再生される。例えば、実時間における1秒間の映像を2秒間で再生する場合、シーン再生速度303は50%となる。また、シーン再生速度303が100%より大きい場合、仮想視点画像は早送りで再生される。
なお、シーン再生速度303が0%である場合、カメラビュー301にはある撮影時刻の仮想視点画像が時間的に停止している状態で表示され、シーン時刻302は変動しない。但し、シーン再生速度303が0%である場合であっても、仮想カメラを制御することは可能である。具体的には、例えば、サッカーにおいて、特定の選手がボールを蹴った瞬間に、その特定の選手の周りをぐるりと回るような仮想視点画像を生成することができる。
カメラビューの状態304は、カメラビュー301に表示されている仮想視点画像の状態である。具体的には、例えば、カメラビューの状態304として、以下の5つの状態(「Review replay clip」、「Live」、「Recording」、「Edit replay」、「None」)がある。
「Review replay clip」は、リプレイクリップの仮想視点画像を再生している状態である。「Live」は、ライブの仮想視点画像を再生している状態である。「Recording」は、リプレイクリップを録画している状態である。「Edit replay」は、録画したリプレイクリップを編集している状態である。「None」は、その他の状態である。
図4は、パイロットウィンドウのパイロットタブを説明するための図である。パイロットウィンドウは、上述のように、表示部201bに表示される。切り換えボタン401は、パイロットウィンドウに表示する内容を切り替えるためのボタンであり、パイロットタブとカメラ制御タブで構成される。パイロットタブを選択すると、表示部201bには、主に仮想カメラの状態が表示される。また、カメラ制御タブを選択すると、表示部201bには、主に仮想カメラの制御に関する情報が表示される。
コンテキストビュー408は、ユーザが制御している仮想カメラの位置・姿勢等を俯瞰的に表示する表示領域である。図4に示す例では、パイロットウィンドウは、コンテキストビュー408を4面含んでいる。図4に示されるように、左上のコンテキストビュー408にはフィールドを真上から見た画像が表示され、左下のコンテキストビュー408には、左上のコンテキストビュー408において、その左側からフィールドの長辺方向に沿って見た画像が表示されている。また、右下のコンテキストビュー408には、左上のコンテキストビュー408において、その下側からフィールドの短辺方向に沿って見た画像が表示され、右上のコンテキストビュー408にはフィールドを斜め上から見下ろした画像が表示されている。
これらの画像は、例えば、スタジアムのモデルのCG(Computer Graphics)画像を用いて生成される。或いは、コンテキストビュー408用の仮想カメラを別途、用意し、仮想視点画像を生成してもよい。ユーザは、コンテキストビュー408を確認することで、撮影空間(例えば、スタジアム)における仮想カメラの位置・姿勢等を容易に把握することができる。
カメラパラメータ表示410は、仮想カメラのカメラパラメータを表示する。ここでは、仮想カメラのカメラパラメータとして、仮想カメラの位置を示す座標値、仮想カメラの姿勢を示すパン、チルト、ロール、及びズーム等を表示する。また、情報処理装置103は、GUI(Graphical User Interface)において、各種パラメータに対応するバーの操作を受け付けた場合、カメラパラメータの値を変更することができる。なお、カメラパラメータのうち、仮想カメラの時刻は、シーン時刻302に表示される。仮想カメラ画角表示412は、撮影空間内で、仮想カメラの位置と姿勢を示すCGである。
図5は、パイロットウィンドウのカメラ制御タブを説明するための図である。X軸制御設定501は、仮想カメラのX軸方向(左右方向)への移動に関する各種の設定を行うための設定部である。Y軸制御設定502は、仮想カメラのY軸方向(前後方向)への移動に関する各種の設定を行うための設定部である。Z軸制御設定503は、仮想カメラのZ軸方向(上下方向)への移動に関する各種の設定を行うための設定部である。
パン制御設定504は、仮想カメラのパン方向への回転に関する各種の設定を行うための設定部である。チルト制御設定505は、仮想カメラのチルト方向への回転に関する各種の設定を行うための設定部である。ロール制御設定506は、仮想カメラのロール方向への回転に関する各種の設定を行うための設定部である。ズーム制御設定507は、仮想カメラのズームに関する各種の設定を行うための設定部である。
図6は、図5のカメラ制御タブを選択したときのパイロットウィンドウの一部を抜粋した図である。図6において、操作軸名511は、各操作軸の項目名を示す。カメラパラメータ値512は、各操作軸に対する操作に応じて決定された各カメラパラメータの現在の値を示す。スライドバー513は、コントローラの操作量に対するカメラパラメータの変化速度等の各種設定を行うためのスライドバーである。
Onスイッチ514は各操作軸の編集操作を有効にするためのスイッチであり、Offスイッチ515は各操作軸の編集操作を無効にするためのスイッチである。具体的には、Onスイッチ514をクリックすると、当該操作軸において編集操作が可能な状態(On状態)となり、当該操作軸のOnスイッチ514が強調表示されるとともに、当該操作軸のOffスイッチ515が非強調表示される。また、Offスイッチ515をクリックすると、当該操作軸において編集操作が不可の状態(Off状態)となり、当該操作軸のOffスイッチ515が強調表示されるとともに、当該操作軸のOnスイッチ514が非強調表示される。図6において、図6(a)はすべての操作軸においてOn状態である場合を示しており、また、図6(b)は仮想カメラの位置を指定するためのX軸、Y軸、Z軸においてOff状態、それ以外の操作軸においてOn状態である場合を示している。
なお、各操作軸の編集操作に関して、有効又は無効を切り替える機能が実装されたものであれば、必ずしも上述の形態(即ち、Onスイッチ514、Offスイッチ515)に限定されない。したがって、例えば、1つのスイッチやボタン等で、各操作軸の編集操作の有効又は無効を切り替えるようにしてもよい。また、Onスイッチ514、Offスイッチ515は、他のウィンドウ(例えば、図4のパイロットタブを選択したときのパイロットウィンドウのカメラパラメータ表示410等)に表示させてもよい。
図7は、リプレイウィンドウを説明するための図である。リプレイウィンドウは、主にリプレイクリップの生成に関連する情報を表示する。リプレイクリップリスト604は、ユーザが生成したリプレイクリップ605を管理するためのリストである。なお、図7のリプレイクリップリスト604において、新しいリプレイクリップ605から順に表示している。
リプレイクリップ605は、仮想カメラのカメラパラメータを記録したものである。即ち、情報処理装置103は、リプレイクリップ605を画像としてではなく、カメラパラメータとして記録する。そして、この記録されたカメラパラメータの仮想視点画像を順に生成したものがリプレイ画像となる。
リプレイウィンドウにおいて、リプレイクリップ編集ボタン606が押下されると、リプレイクリップの編集が開始される。リプレイクリップ編集では、一度作成したカメラパラメータをより良いカメラパラメータにするために、再操作して修正することが行われる。そして、この作成したカメラパラメータの修正では、仮想カメラの操作軸のうち、指定した操作軸の値のみが変化し、それ以外の操作軸においては前回の値が維持(保持)される。これにより、1度の操作(修正)において、操作対象とする操作軸を減らすことができるため、即ち、仮想視点操作の自由度を向上させることができるため、操作の負担を軽減したり、オペレータを減らしたりすることができる。
タイムライン607には、試合の進行に合わせて、1フレーム毎に仮想カメラのカメラパラメータが記録される。なお、タイムライン607には、仮想カメラのパラメータが次のように記録される。情報処理装置103がライブの仮想視点画像の生成に使用されている場合、タイムライン607には、そのときの仮想カメラのカメラパラメータが記録される。情報処理装置103がリプレイの仮想視点画像の生成に使用されている場合、タイムライン607には、仮想カメラのカメラパラメータは記録されない。
タイムライン607上の1点がクリックされると、クリックされた時刻にジャンプし、その時刻に対応するフレームのカメラパラメータの値が仮想カメラに設定される。なお、対応するフレームにカメラパラメータが記録されていない場合には、クリック時の仮想カメラのカメラパラメータが適用される。即ち、この場合、位置・姿勢はそのままで、時刻のみがジャンプすることになる。
図8は、3軸コントローラ202を説明するための図である。3軸コントローラ202は、1つの3軸コントローラ202で3軸の制御が可能であり、6個のつまみ801~806、6個のボタン807~812、シーソースイッチ813、3軸ジョイスティック814を備える。本実施形態では、2つの3軸コントローラ202を用いて、6軸の制御を割り当てる。以下、一方の3軸コントローラ202aにX、Y、Zの3軸の制御を割り当て、他方の3軸コントローラ202bにパン、チルト、ロールの3軸の制御を割り当てる。
次に、3軸コントローラ202aのつまみ、ボタン、シーソースイッチ、及び3軸ジョイスティックに割り当てられる機能について説明する。3軸コントローラ202aにおいて、ボタン807には、X軸のOn/Offが割り当てられ、ボタン808には、Y軸のOn/Offが割り当てられ、さらに、ボタン809には、Z軸のOn/Offが割り当てられる。また、シーソースイッチ813には、Z軸が割り当てられ、3軸ジョイスティック814には、左右への倒しはX軸、前後への倒しはY軸が割り当てられる。なお、左右へのひねりは、3軸コントローラ202aにおいて、割り当てられていない。
同様に、3軸コントローラ202bのつまみ、ボタン、シーソースイッチ、及び3軸ジョイスティックに割り当てられる機能について説明する。3軸コントローラ202bにおいて、ボタン807には、パンのOn/Offが割り当てられ、ボタン808には、チルトのOn/Offが割り当てられ、さらに、ボタン809には、ロールのOn/Offが割り当てられる。また、3軸ジョイスティック814には、左右への倒しはパン、前後への倒しはチルト、左右へのひねりはロールが割り当てられる。なお、3軸コントローラ202bにおいて、シーソースイッチ813には、所定の機能は割り当てられていない。
その他、補足として、ジョイスティックに関して、3軸より多い操作軸の制御が可能なジョイスティックを用いることもできる。例えば、ジョイスティックの左右への平行移動はX軸、前後への平行移動はY軸、引き上げ/押し下げはZ軸、左右への倒しはパン、前後への倒しはチルト、左右へのひねりはロールが割り当てられるようにしてもよい。
図9は、ズームコントローラ203を説明するための図である。ズームコントローラ203は、2個のつまみ901、902、4個のボタン903~906、ダイヤル907、シーソースイッチ908を備える。ズームコントローラ203において、ボタン903には、ズームのOn/Offが割り当てられ、ダイヤル907には、フォーカスが割り当てられ、シーソースイッチ908には、ズームが割り当てられる。
図10は、リプレイコントローラ204を説明するための図である。リプレイコントローラ204は、13個のボタン1001~1013、スライダー1014、ジョグホイール1015、フィンガーホイール1016を備える。以下、リプレイコントローラ204において、割り当てられる機能について説明する。
ボタン1010にはRECが割り当てられ、このボタン1010が押下されると、リプレイクリップの作成が開始され、以降において、ユーザが操作した仮想カメラのパラメータがリプレイクリップとして記録される。ボタン1011にはPLAY/PAUSEが割り当てられ、このボタン1011によりシーンの再生と一時停止が行われる。なお、一時停止されている間は、仮想カメラの時刻を停止する。さらに、ボタン1012にはREVIEWが割り当てられ、このボタン1012が押下されると、リプレイクリップの再生が開始される。
スライダー1014は、シーン再生速度を設定するためのスライダーである。このスライダー1014によりシーン再生速度が設定されると、仮想カメラの時刻は、設定されたシーンの再生速度に応じて、変更される。ジョグホイール1015は、時刻を設定するためのものである。このジョグホイール1015により、時刻の巻き戻し、早送り等が行われる。また、フィンガーホイール1016は、フレーム単位で時刻を設定するためのものである。このフィンガーホイール1016により、時刻の巻き戻し、先送り等がフレーム単位で行われる。即ち、フィンガーホイール1016では、ジョグホイール1015よりも時刻を細かく制御することができる。
なお、コントローラ202、203、204において、上述で説明した以外のつまみ、ボタン、スイッチ等については、本実施形態に関係ないので、その説明を省略する。また、上述の機能以外の機能、例えば、被写界深度調整やフォーカス調整等の機能を割り当てることもできる。以下、図11~図16を参照して、各実施形態について説明する。
実施形態1
図11は、仮想カメラの操作軸について説明するための図である。操作軸のうち、X軸703、Y軸704、Z軸705は、仮想カメラの移動操作方向に対応する。なお、X軸703、Y軸704、Z軸705は互いに直交し、Z軸705は、仮想カメラ701の姿勢によらず、常に地面702に垂直な方向である。そのため、X軸703とY軸704は、カメラの姿勢によらず、常に地面702に水平な方向である。また、X軸703とY軸704は、仮想カメラ701の姿勢によって方向が変わる。仮想カメラ701の光軸を地面702に水平な面に投影した方向がY軸704であり、仮想カメラ701の光軸に直交する方向がX軸703である。操作軸のうち、Pan軸(パン軸)706はZ軸705、Tilt軸(チルト軸)707はX軸703、Roll軸(ロール軸)708はY軸704を各々回転軸とした回転操作方向に対応する。
図11(a)及び図11(b)は、仮想カメラ701をZ軸方向から見た図である。図11(a)の状態から仮想カメラをパンさせる(即ち、Z軸を回転軸として回転させる)と、図11(b)の状態になる。図11(c)及び図11(d)は、仮想カメラ701をY軸方向から見た図である。図11(c)の状態から仮想カメラをロールさせる(即ち、Y軸を回転軸として回転させる)と、図11(d)の状態になる。図11(e)及び図11(f)は、仮想カメラ701をX軸方向から見た図である。図11(e)の状態から仮想カメラをチルトさせる(即ち、X軸を回転軸として回転させる)と、図11(f)の状態になる。
なお、各操作軸への操作に応じて、各カメラパラメータがどのように変化するかは、図6のカメラ制御タブを選択したときのパイロットウィンドウのスライドバー513の設定による。また、操作軸とカメラパラメータの項目とは、1対1に対応するとは限らない。例えば、操作軸のX軸は仮想カメラに対して左右方向、Y軸は仮想カメラに対して前後方向であるが、カメラパラメータのX軸はグラウンドの長辺方向、Y軸はグラウンドの短辺方向としてもよい。この場合、カメラパラメータのX軸の現在値及びY軸の現在値と、操作軸のX軸の値及びY軸の値とを相互に組み合わせることによって、編集後のカメラパラメータのX軸の値及びY軸の値が決定される。具体的には、例えば、X軸をOff(編集不可)、Y軸をOn(編集可能)に設定した場合に、仮想カメラを前後方向に移動させると、グラウンドに対して斜め方向の移動であれば、カメラパラメータのX軸の値及びY軸の値は、いずれも変化する。
図12は、情報処理装置103の機能ブロックを示す図である。入出力部120は、上述のコントローラ202a-204、及び表示部201a-201cで構成される入出力部115により実現される機能であり、仮想カメラを制御するための複数のコントローラと、仮想カメラの状態等を表示する。
設定部121は、コントローラの操作に応じて、各種カメラパラメータを設定する。例えば、図6のカメラ制御タブを選択したときのパイロットウィンドウにおける各種設定や、図8の3軸コントローラの各種ボタンによる設定が該当する。なお、設定部121において設定された値は、設定記憶部122に記憶される。
カメラパラメータ編集部123は、入出力部120を介したユーザからの操作に応じて、カメラパラメータを編集する。具体的には、カメラパラメータ編集部123は、動画のシーンの開始時点からシーンの終了時点までの各フレームにおいて、入出力部120における操作に応じて仮想カメラの位置と視野を設定することで、カメラパラメータを編集する。カメラパラメータ記憶部124は、カメラパラメータ編集部123により編集されたカメラパラメータを、三次元オブジェクトデータの時間経過に対応付けて記憶する。
ウィンドウ制御部125は、カメラビューウィンドウ、パイロットウィンドウ、リプレイウィンドウ等の各種ウィンドウの表示制御を行う。ウィンドウ制御部125は、カメラビューウィンドウにおいて、各フレームにおけるカメラパラメータをカメラパラメータ記憶部124から読み出し、仮想視点画像生成サーバ102に渡す。さらに、ウィンドウ制御部125は、入出力部115の表示部201aのカメラビューウィンドウ内に仮想視点画像生成サーバ102が生成した仮想視点画像を表示させる。また、ウィンドウ制御部125は、パイロットウィンドウにおいて、各フレームにおけるカメラパラメータをカメラパラメータ記憶部124から読み出し、カメラパラメータの位置、姿勢に応じて仮想カメラ画角表示412を描画する。
図13は、情報処理装置103における処理の手順を示したフローチャートである。なお、以下において、フローチャートの説明における記号「S」は、ステップを表すものとする。即ち、ここでは、フローチャートの各処理ステップS101~ステップS114をS101~S114と略記する。
S101において、カメラパラメータ編集部123は、カメラパラメータ記憶部124に記憶済みのカメラパラメータの中からオペレータによって指定された1つのカメラパラメータを読み出す。具体的には、図7に示すリプレイウィンドウにおいて、表示されているリプレイクリップリスト604を表示し、オペレータがリストの中から1つのリプレイクリップ605を選択(指定)する。
S102において、カメラパラメータ編集部123は、シーンの開始フレームを処理対象として設定する。S103において、カメラパラメータ編集部123は、シーンの開始フレームにおける仮想カメラパラメータを読み出す。S104においては、ウィンドウ制御部125は、カメラパラメータ記憶部124から仮想カメラパラメータを読み出して、カメラビューウィンドウ及びパイロットウィンドウを更新する。カメラビューウィンドウの更新では、仮想視点画像生成サーバ102に仮想カメラパラメータを渡し、仮想視点画像生成サーバ102において生成された仮想視点画像をカメラビューウィンドウ(カメラビュー)に表示させる。また、パイロットウィンドウの更新では、仮想カメラ画角表示412をカメラパラメータの位置、姿勢に応じて描画する。なお、S104からS114までの処理は、動画シーンのフレーム毎に実行される処理である。
S105において、カメラパラメータ編集部123は、コントローラの各操作軸に対する操作を取得する。S106において、カメラパラメータ編集部123は、カメラパラメータの最初の操作軸を処理対象とする。具体的には、例えば、X軸、Y軸、Z軸、Pan軸、Tilt軸、Roll軸、Zoom軸の順に処理を行う場合に、先ず、X軸を処理対象とする。
S107において、カメラパラメータ編集部123は、設定記憶部122に記憶されている情報(設定値)を参照して、当該操作軸(処理対象の操作軸)が編集可(On)として指定されているか否かを判定する。即ち、編集可否を判定する。情報処理装置103は、当該操作軸が編集可能として指定されていれば(107 Yes)、処理をS108に移行させ、また、当該操作軸が編集可能として指定されていなければ(S107 No)、処理をS109に移行させる。なお、S107からS112までの処理は、操作軸毎に実行される処理である。
S108において、カメラパラメータ編集部123は、S105で取得したコントローラ操作に基づいて、当該操作軸のカメラパラメータの値を導出(算出)する。他方、S109において、カメラパラメータ編集部123は、S101で指定された既存カメラパラメータの当該フレームの当該操作軸のパラメータの値をカメラパラメータ記憶部124から読み出す。
S110において、カメラパラメータ編集部123は、上述のS108で算出した値、又はS109で取得した値を、編集中のカメラパラメータの当該フレームの当該操作軸の値としてカメラパラメータ記憶部124に記憶する。
S111において、カメラパラメータ編集部123は、当該操作軸(処理対象の操作軸)が処理順序の最後の操作軸であるか否かを判定する。情報処理装置103は、当該操作軸が処理順序の最後の操作軸である場合(S111 Yes)、処理をS113に移行させ、また、当該操作軸が処理順序の最後の操作軸でない場合(S111 No)、処理をS112に移行させる。
S112において、カメラパラメータ編集部123は、その次の操作軸を処理対象として設定し、さらに、処理をS107に返す。具体的には、例えば、X軸、Y軸、Z軸、Pan軸、Tilt軸、Roll軸、Zoom軸の順に処理を行う場合に、現在の処理対象がX軸であれば、その次の処理対象(操作軸)としてY軸を新たに設定する。
S113において、カメラパラメータ編集部123は、現在のフレームがシーンの最後のフレーム(最終のフレーム)であるか否かを判定する。情報処理装置103は、最後のフレームであれば、図13に示すフローチャートの処理を終了し、最後のフレームでなければ、処理をS114に移行させる。S114において、カメラパラメータ編集部123は、現在のフレームの次のフレームを編集対象として設定し、さらに、処理をS104に返す。
図14は、カメラパラメータを編集した結果を示す図である。図14において、オブジェクト1402は軌跡1405に沿って移動しており、オペレータは、オブジェクト1402を追うように、仮想カメラ1401を軌跡1404に沿って移動させている。また、ここでは、3軸コントローラ202aにはX軸、Y軸、Z軸の操作、3軸コントローラ202bにはPan軸、Tilt軸、Roll軸の操作、ズームコントローラ203にはZoom軸の操作が割り当てられているものとする。
1回目の操作では、図6(a)に示されるように、X軸、Y軸、Z軸、Pan軸、Tilt軸、Roll軸、Zoom軸のすべてを編集可能な状態(On)にする。オペレータは、主にパイロットウィンドウのコンテキストビュー408を見ながら、片方の手で3軸コントローラ202aを操作し、X軸、Y軸、Z軸の値を調整し、仮想カメラが所望の軌跡を描くように、仮想カメラを正確に移動させる。それと同時に、オペレータは、もう片方の手で3軸コントローラ202bを操作して、Pan軸、Tilt軸、Roll軸の値を調整するが、これらの操作軸の値は、2回目の操作で正確に調整するので、1回目の操作では正確に操作(調整)されなくてもよい。また、ズームコントローラ203によるZoom軸の調整は、2回目の操作で行うので、1回目の操作では行わない。なお、1回目の操作で出力されたカメラパラメータは、図7のリプレイウィンドウのリプレイクリップ605として表示される。
1回目の操作では、図14(a)に示されるように、仮想カメラ1401の向きは所望の向き(オブジェクトへの向き)から多少ずれており、そのため、所望の構図が十分に得られていない。そこで、2回目の操作では、リプレイウィンドウのリプレイクリップ編集ボタン606を押下して、リプレイクリップ605の編集を開始する。また、2回目の操作では、図6(b)に示されるように、X軸、Y軸、Z軸を編集不可状態(Off)にする。
2回目の操作において、オペレータは、主にカメラビューウィンドウのカメラビュー301を見ながら、片方の手で3軸コントローラ202bを操作して、Pan軸、Tilt軸、Roll軸の値を正確に調整する。それと同時に、オペレータは、もう片方の手でズームコントローラ203を操作して、Zoom軸の値を正確に調整する。そして、このように調整すると、図14(b)に示されるように、仮想カメラの位置及び向きが所望の状態となる。そのため、所望の構図を得ることができる。なお、補足として、上述の操作軸のうち、さらに微調整が必要な操作軸があれば、その操作軸のみ編集可能な状態(On状態)にして、再度、同様に編集してもよい。また、編集対象とする操作軸によっては、パイロットウィンドウ(仮想カメラの位置、姿勢)、カメラビューウィンドウのいずれかを確認することで、操作することもできる。
以上、説明したように、同時に制御する操作軸を減らし、操作軸毎に複数回に分けて操作することで、操作の負担を減らしたり、操作人数を減らしたりすることが可能になる。また、このように操作することで、各操作軸において、正確かつ容易にカメラパラメータを調整することができる。特に、上述のように、コンテキストビューを見ながらの操作と、カメラビューを見ながらの操作を分けて行うことで、オペレータが特定のビューに集中できるので、正確な操作を容易に行うことができる。また、カメラパラメータを微調整したいときに、改めてすべての操作軸の操作をやり直す必要はなく、微調整したい操作軸のみを調整(変更)できるので、調整時の負担を軽減することができる。
実施形態2
次に、実施形態2について、図15を参照して説明する。図15は、仮想カメラの操作軸について説明するための図である。操作軸のうち、X軸703は仮想カメラ701の側面方向、Y軸704は仮想カメラ701の正面方向(光軸方向)、Z軸705は仮想カメラ701の上面方向への移動操作方向に各々、対応し、X軸703、Y軸704、Z軸705は互いに直交する。また、操作軸のうち、Pan軸706はZ軸705、Tilt軸707はX軸703、Roll軸708はY軸704を各々回転軸とした回転操作方向に対応する。
上述の実施形態1では、3軸コントローラ202aで仮想カメラを前方に移動させる操作(即ち、Y軸方向への移動)を行うと、仮想カメラのレンズの上下方向の向き(即ち、Tilt)に依存せず、仮想カメラは、常に地面702に対して水平に移動する。他方、本実施形態(実施形態2)では、同様に3軸コントローラ202aで仮想カメラを前方に移動させる操作(即ち、Y軸方向への移動)を行うと、仮想カメラは、仮想カメラの光軸方向に移動する。そのため、仮想カメラが水平に対して下向き(即ち、Tilt値が負)であれば、仮想カメラは地面に近づくことになる(即ち、Z値が小さくなる)。また、逆に仮想カメラが水平に対して上向き(即ち、Tilt値が正)であれば、仮想カメラは地面から遠ざかることになる(即ち、Z値が大きくなる)。
実施形態3
次に、実施形態3について、図16を参照して説明する。図16は、仮想カメラの操作軸について説明するための図である。操作軸のうち、X軸703、Y軸704、Z軸705は、仮想カメラの位置や姿勢に依存せず、常に一定の方向に各々、対応する。具体的には、例えば、サッカーグラウンド等の施設の場合、X軸703はグラウンドの長辺方向、Y軸704はグラウンドの短辺方向、Z軸705はグラウンド面に垂直な方向への移動操作方向に各々、対応する(即ち、各々の操作軸は施設の形状に対応する)。
なお、X軸703、Y軸704、Z軸705は互いに直交する。また、この場合、操作軸のうち、Pan軸706、Tilt軸707、Roll軸708は、上述の実施形態1、実施形態2と同様に、Z軸、X軸、Y軸の各々を回転軸とした回転操作方向に対応させることができる。但し、この例に限らず、X軸703とPan軸706、Y軸704とTilt軸707、及びZ軸705とRoll軸708が一致しないようにPan軸706、Tilt軸707、Roll軸708を設定するようにしても良い。例えば、X軸703がサッカーグラウンドの長辺方向、Y軸704がサッカーグラウンドの短辺方向を基準とした座標軸であっても、ロールやチルトの回転軸が仮想カメラの光軸の向きを基準に設定されるようにしても良い。
実施形態4
次に、実施形態4について説明する。上述の実施形態では、撮影済みの画像に対してカメラパラメータを編集することで様々な視点から見たリプレイ映像を提供する例について説明したが、ここでは、撮影しながらリアルタイムにカメラパラメータを生成してライブ映像を提供する例について説明する。
例えば、音楽映像や演劇映像等のように、シナリオが予め決まっている場合がある。その場合、リハーサルを撮影して、リハーサル用のカメラパラメータを予め作成しておく。そして、本番において、シナリオの進行に同期させてリハーサル用のカメラパラメータを編集して、本番用のカメラパラメータを作成(生成)する。リハーサルと本番では、演者の動きに微妙な違いがあるので、それに応じて所望の構図になるように仮想カメラの向きを調整(例えば、パン、チルト、ロールのみ調整)しながら本番用のカメラパラメータを作成する。さらに、ライブ映像(ライブ画像)として放送や配信を行う。
実施形態5
次に、実施形態5について説明する。上述のように、操作軸の1つとして、リプレイコントローラ204による時間軸(より詳細には、再生速度を制御する時間軸)がある。スロー再生や一時停止等の仮想カメラ操作を含むカメラパラメータを編集する場合、リプレイコントローラ204による再生速度の調整(編集)可否を切り替えられるようにしてもよい。
編集可能にした場合、既存のカメラパラメータの再生速度によらず、リプレイコントローラ204を操作して新たに再生速度を調整しながら、さらに3軸コントローラ202やズームコントローラ203を操作して任意の操作軸を調整する。また、編集不可にした場合、既存のカメラパラメータの再生速度の変化に従って、さらに任意の操作軸を調整する。
以上、実施形態1から実施形態5までで説明したように、仮想視点画像の生成において、仮想視点操作の自由度を向上させることで、操作上の負担を軽減することができる。また、操作軸の定義は、上述の実施形態1から実施形態5までで記載した定義に必ずしも限定されない。
その他の実施形態
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。