1以上の任意の添付図面において同じ符号を有するステップ及び/又は構成を参照する場合に、それらのステップ及び/又は構成は、反対の意図が明示されない限り、この説明を目的として同一の機能又は動作を有する。
説明する配置構成は、編集するデータポイントの量を減少させるだけでなく、ユーザが編集を望み得る場所を示す残余のポイントに表現させることによって、編集が効率的であるカメラパスをユーザに示す情報処理装置および情報処理方法に関する。
ここで説明する配置構成は、図1に例示するように、スポーツ又は同様のパフォーマンスフィールドのコンテキストにおいて用いることを目的とする。シーン又はアリーナであるフィールド110は、略矩形、楕円形又は円形の競技フィールドの中央に位置し、フィールドがカメラ120A〜120Xの1以上のカメラネットワーク(リング)120によって囲まれることを可能とするものである。図1の例においてシーンはフィールド110であるが、他の配置構成では、シーンは音楽ステージ、劇場、公共又は民間の会場であってもよい。図1の例では、フィールドは物体140などの物体を含む。物体140は、人物、ボール、車両又は任意の構造体であってもよい。カメラ120A〜120Xは、フィールド110上のすべてのポイントが非常に多くのビューポイントから同時に撮影されるように、時間内で同時にフレームを取得するように同期化される。ある変形例では、カメラのリング全体が用いられずに全外周のいくつかのサブセットが用いられる。
撮影されたビデオフレームは、ネットワーク接続1321を介してプロセッサともいわれる演算ビデオ処理部1305で利用可能となるより前に、カメラ近傍で処理及び一時記憶される。演算ビデオ処理部1305は、フィールド110内の仮想カメラ150についての位置、向き、ズーム及び場合によっては他のシミュレーションカメラ構成を指定するコントローラ180からの制御入力を受信する。演算ビデオ処理部1305の役割は、フィールド110を囲むカメラ120A〜120Xから入手可能なビデオストリームに基づいて指定された仮想カメラ全体像のビデオストリーム190を合成することである。「バーチャルカメラ」は、物理カメラ間の補間などの方法によって、又は単に任意の単一の物理カメラの出力ではなくシーンを囲む多数のカメラからのデータを用いて構築されたモデル化三次元シーンによるレンダリングによってそれらの機能性が演算して求められることから、仮想カメラといわれる。
仮想カメラの位置特定入力は、人間の仮想カメラのオペレータによって生成され、ジョイスティック、マウス、又は複数の入力コンポーネントを備えた専用コントローラを含む同様のコントローラなどのユーザインターフェースデバイス(受付手段)によって受け付けられた入力に基づいてもよい。代替的に、仮想カメラの位置は、フィールド110における試合競技の解析に基づいて完全に自動的に生成されてもよい。ハイブリッド制御構成もまた可能であるため、仮想カメラの位置決めについてのある態様は、人間のオペレータ又は自動化アルゴリズムによる他のものによって指示される。ハイブリッドコントローラの例は、コースの位置決めが人間のオペレータによって実行され、安定化及びパスの円滑化を含む精密な位置決めは自動化アルゴリズムによって実行される場合を含む。
演算ビデオ処理部1305は、本技術分野において周知の自由ビューポイント生成のための方法の1つを用いてフレーム合成を実現する。方法の第1のクラスは、シーンの完全三次元(3D)幾何学形状を再構築するモデルによる方法である。第2のクラスは、深度推定を用いてから、画像及び深度データから自由ビューポイントビデオを生成する深度による方法である。第3のクラスは、自由ビューポイントビデオを直接形成するように画像データのある種の補間を用いる画像による方法である。3D幾何学形状を生成するのに用いられる技術は、運動による構造、シルエットによる形状、視覚的外郭再構築、焦点合致又はピンボケによる形状、立体による構造、及び深度/差異推定アルゴリズムを含む。画像によるレンダリング方法は、既知の幾何学的配置構成のカメラセットからの画素データのサンプリング、及びこの情報の合成フレームへの組合せに基づく。演算ビデオ処理部は、要求されるフレームのサンプルによるレンダリングに加えて、要求されるサンプリング欠陥を隠すこと及び高品質の視覚的外観のフレーム作成として領域の合成、3Dモデリング、インペインティング又は補間も実行し得る。演算ビデオ処理部1305によって作成されるビデオストリーム190は、続いて、ビデオストリーム190がともに編集されて放送ビデオを形成可能な制作デスク(図示せず)に提供され得る。
本実施形態における自由ビューポイントビデオは、仮想視点画像や自由視点映像とも呼ばれるものである。本実施形態における仮想カメラは、撮影領域(フィールド110)の周囲に実際に設置された複数の撮影装置(カメラ120)とは異なる仮想的なカメラであって、仮想視点画像の生成に係る仮想視点を便宜的に説明するための概念である。すなわち、仮想視点画像は、撮影領域に関連付けられる仮想空間内に設定された仮想視点から撮影した画像であるとみなすことができる。そして、仮想的な当該撮影における視点の位置及び方向は仮想カメラの位置及び方向として表すことができる。言い換えれば、仮想視点画像は、空間内に設定された仮想視点の位置にカメラが存在するものと仮定した場合に、そのカメラにより得られる撮影画像を模擬した画像であると言える。また、仮想カメラを制御することは、仮想視点画像の生成に係る仮想視点を設定することであると言える。
図13A及び13Bは、組み込まれた構成要素を含む汎用の電子デバイス1301の概略的ブロック図をまとめて形成し、それにより説明する方法が所望のように実践される。電子デバイス1301は、好適には、タブレットなどのビデオ映像を鑑賞及び編集するのに適したデバイスである。電子デバイス1301はまた、例えば、処理リソースが制限された携帯電話、可搬メディアプレーヤ又はデジタルカメラであってもよい。それにもかかわらず、説明する方法はまた、デスクトップコンピュータ、サーバコンピュータ、及び非常に大きな処理リソースを有する他のそのようなデバイスなどのよりハイレベルのデバイス上でも実行され得る。
図13Aに示すように、電子デバイス1301は組み込まれたコントローラ1302を備える。したがって、電子デバイス1301を「組込みデバイス」という。本例では、コントローラ1302は、内部ストレージモジュール1309に双方向連結された処理部(すなわち、プロセッサ)1305を有する。内部ストレージモジュール1309は、図13Bに示すように、不揮発性半導体読み出し専用メモリ(ROM)1360及び半導体ランダムアクセスメモリ(RAM)1370から構成され得る。RAM1370は、揮発性メモリ、不揮発性メモリ、又は揮発性と不揮発性メモリの組合せであってもよい。
電子デバイス1301はディスプレイコントローラ1307を含み、それは液晶ディスプレイ(LCD)パネルなどのようなビデオディスプレイ1314に接続される。ディスプレイコントローラ1307は、ディスプレイコントローラ1307が接続される組み込まれたコントローラ1302から受信された命令に従ってビデオディスプレイ1314上にグラフィック画像を表示するように構成される。
電子デバイス1301はまた、キー、キーパッド又は同様の制御装置によって通常構成されるユーザ入力デバイス1313も含む。ある実施例では、ユーザ入力デバイス1313は、タッチスクリーンをまとめて構成するようにディスプレイ1314に物理的に関連付けられたタッチ感知パネルを含み得る。したがって、そのようなタッチスクリーンは、プロンプトの対語としてのグラフィカルユーザインターフェース(GUI)、又はキーパッド−ディスプレイとともに通常用いられるメニュー駆動GUIの一方の形式として動作し得る。音声コマンドのためのマイク(図示せず)又はメニューについてのナビゲーションを容易にするためのジョイスティック/サムホイール(図示せず)などの、他の形式のユーザ入力デバイスも用いられ得る。仮想カメラを制御するためのユーザ入力は、ユーザ入力デバイス1313を介して、通常、電子デバイス1301がタブレットコンピュータの場合にはタッチスクリーンを介して受信され得る。
図13Aに示すように、電子デバイス1301は可搬メモリインターフェース1306も備え、それは接続1319を介してプロセッサ1305に連結される。可搬メモリインターフェース1306によって、可搬記憶媒体1325は、データの送信元若しくは宛先として作用するように、又は内部ストレージモジュール1309を補足するように電子デバイス1301に連結されることが可能となる。そのようなインターフェースの例は、ユニバーサルシリアルバス(USB)メモリデバイス、セキュアデジタル(SD)カード、パーソナルコンピュータメモリカード国際協会(PCMIA)カード、光ディスク及び磁気ディスクなどの可搬メモリデバイスとの結合を可能とする。
電子デバイス1301はまた、接続1321を介するコンピュータ又は通信ネットワーク1320への電子デバイス1301の連結を可能とする通信インターフェース1308も有する。接続1321は、有線でも無線であってもよい。例えば、接続1321は無線周波数又は光学的であってもよい。有線接続の例は、イーサネット(登録商標)を含む。さらに、無線接続の例は、Bluetooth(登録商標)タイプのローカル相互接続、Wi−Fi(IEEE802.11ファミリーの規格に基づくプロトコルを含む)、赤外線通信協会(IrDa)などを含む。
電子デバイス1301は、コンピュータ又は通信ネットワーク1320を介してカメラネットワーク120に接続可能である。電子デバイス1301はまた、コンピュータ又は通信ネットワーク1320を介してサーバコンピュータ1399にも接続され得る。サーバコンピュータ1399は、電子デバイス1301と同様に動作する。ある実施例では、説明する方法、例えば、図6及び7の方法の一部のステップは電子デバイス1301上で実施されてもよく、一方、他のステップ、例えば、図14の一部のステップはサーバコンピュータ1399において実施されてもよい。ある実例では、図6及び7の方法は、以下で説明するように、サーバコンピュータ1399の一部において実施され得る。
通常、電子デバイス1301は、ある特殊機能を実行するように構成される。組み込まれたコントローラ1302は、おそらくさらに特殊な機能の構成要素1310とともにその特殊な機能を実行するように設けられる。例えば、電子デバイス1301はデジタルカメラである場合には、構成要素1310はカメラのレンズ、焦点制御及び画像センサを示し得る。特殊な機能の構成要素1310は、組み込まれたコントローラ1302に接続される。他の例として、電子デバイス1301は、携帯電話機のハンドセットであってもよい。この実例では、構成要素1310は、セルラ電話機環境における通信に必要とされるそれらの構成要素を示し得る。電子デバイス1301は可搬デバイスであり、特殊な機能の構成要素1310は、ジョイントフォトグラフィックエクスパーツグループ(JPEG)、ムービングピクチャエクスパーツグループ(MPEG)、MPEG−1オーディオレイヤ(MP3)などを含むタイプの多数のエンコーダ及びデコーダを示し得る。
これ以降で説明する方法は組み込まれたコントローラ1302を用いて実施されてもよく、図6〜12及び図14の工程が、組み込まれたコントローラ1302内で実行可能な1以上のアプリケーションプログラム(ソフトウェアプログラム)1333として実施され得る。図13Aの電子デバイス1301は、説明する方法を実施する。特に、図13Bを参照すると、説明する方法のステップは、コントローラ1302内で実行されるアプリケーションプログラム1333における命令によって達成される。アプリケーションプログラムの命令は、各々が1以上の特定のタスクを実行するための1以上のコードモジュールとして構成され得る。アプリケーションプログラムはまた、2つの分離した部分に分割されてもよく、第1の部分と対応するコードモジュールは説明する方法を実行し、第2の部分と対応するコードモジュールは第1の部分とユーザの間のユーザインターフェースを管理する。
組み込まれたコントローラ1302のアプリケーションプログラム1333は、通常、内部ストレージモジュール1309の不揮発性ROM1360に記憶される。ROM1360に記憶されたアプリケーションプログラム1333は、コンピュータ可読媒体から要求された場合に更新可能である。アプリケーションプログラム1333は、プロセッサ1305に読み込まれるとともにそれによって実行可能である。ある実例では、プロセッサ1305は、RAM1370に配置されたソフトウェアの命令を実行し得る。ソフトウェアの命令は、プロセッサ1305によってRAM1370に読み込まれて、ROM1360からRAM1370への1以上のコードモジュールのコピーを開始し得る。代替的に、1以上のコードモジュールについてのソフトウェアの命令は、製造業者によってRAM1370の不揮発性領域に事前にインストールされてもよい。1以上のコードモジュールがRAM1370に配置された後に、プロセッサ1305は1以上のコードモジュールについてのソフトウェアの命令を実行し得る。
アプリケーションプログラム1333は、通常、電子デバイス1301の分配よりも前に、製造業者によってROM1360に事前にインストール及び記憶される。しかしながら、ある実例では、アプリケーションプログラム1333は、1以上のCD−ROM(図示せず)上で符号化されてユーザに供給され、内部ストレージモジュール1309又は可搬記憶媒体1325における記憶よりも前に、図13Aの可搬メモリインターフェース1306を介して読み出され得る。他の代替例では、アプリケーションプログラム1333は、プロセッサ1305によってコンピュータ又は通信ネットワーク1320から読み出され、又は他のコンピュータ可読媒体からコントローラ1302若しくは可搬記憶媒体1325に読み込まれ得る。コンピュータ可読記憶媒体とは、実行及び/又は処理のためにコントローラ1302に命令及び/又はデータの提供に際して関与する任意の非一時的タンジブル記憶媒体のことをいう。そのような記憶媒体の例は、それらのデバイスが電子デバイス1301の内部又は外部に有るか否かにかかわらず、フロッピーディスク、磁気テープ、CD−ROM、ハードディスクドライブ、ROM若しくは集積回路、USBメモリ、光磁気ディスク、フラッシュメモリ、又はPCMCIAカードなどのコンピュータ可読カードなどを含む。ソフトウェア、アプリケーションプログラム、命令及び/又はデータの電子デバイス1301への提供の際にも関与し得る一時的又は非タンジブルコンピュータ可読伝送媒体の例は、無線又は赤外線伝送チャネルと、さらに他のコンピュータ又はネットワーク化されたデバイスへのネットワーク接続、並びにウェブサイト上などに記録されたeメールの送信及び情報を含む単数又は複数のインターネットとを含む。それに記録されたそのようなソフトウェア又はコンピュータプログラムを有するコンピュータ可読媒体は、コンピュータプログラム製品である。
上記のアプリケーションプログラム1333の第2の部分と対応するコードモジュールは、1以上のグラフィカルユーザインターフェース(GUI)を実施するように実行されて、図13Aのビデオディスプレイ1314にレンダリングあるいは表現され得る。ユーザ入力デバイス1313(例えば、キーパッド)の操作を通じて、電子デバイス1301及びアプリケーションプログラム1333のユーザは、機能上適合可能なようにインターフェースを操作し、制御コマンド及び/又は入力をGUIに関連付けられたアプリケーションに提供し得る。拡声器(図示せず)を介して出力される言語プロンプトを利用するオーディオインターフェース及びマイク(図示せず)を介して入力されるユーザの音声コマンドなどの、他の形式の機能上適合可能なユーザインターフェースも実施され得る。
図13Bは、アプリケーションプログラム1333及び内部ストレージモジュール1309を実行するためのプロセッサ1305を有する組み込まれたコントローラ1302を詳細に示す。内部ストレージモジュール1309は、読み出し専用メモリ(ROM)1360及びランダムアクセスメモリ(RAM)1370を備える。プロセッサ1305は、接続されたメモリ1360及び1370の一方又は双方に記憶されたアプリケーションプログラム1333を実行可能である。電子デバイス1301が最初に電源投入されると、ROM1360にあるシステムプログラムが実行される。ROM1360に恒久的に記憶されたアプリケーションプログラム1333を「ファームウェア」ともいう。プロセッサ1305によるファームウェアの実行によって、プロセッサの管理、メモリの管理、デバイスの管理、ストレージの管理及びユーザインターフェースを含む種々の機能が充足され得る。
プロセッサ1305は、通常、制御部(CU)1351、算術論理演算装置(ALU)1352、デジタル信号プロセッサ(DSP)1353、及び内部バッファ又はキャッシュメモリ1355とともに通常原子データ要素1356、1357を含むレジスタ1354のセットを備えるローカルメモリ又は内部メモリを含む、多数の機能性モジュールを含む。1以上の内部バス1359は、これらの機能性モジュールを相互接続する。通常、プロセッサ1305はまた、接続1361を用いてシステムバス1381を介して外部デバイスと通信するために1以上のインターフェース1358も有する。
アプリケーションプログラム1333は、条件付き分岐及びループ命令を含み得る一連の命令1362から1363を含む。アプリケーションプログラム1333はデータを含んでいてもよく、それはアプリケーションプログラム1333の実行に用いられる。このデータは、命令の一部として、又はROM1360若しくはRAM1370内の別個の位置1364に記憶され得る。
一般的に、プロセッサ1305にはそこで実行される命令のセットが与えられる。命令のこのセットは、具体的なタスクを実行又は電子デバイス1301において生じる具体的なイベントを取り扱うブロックにまとめられる。通常、アプリケーションプログラム1333は、イベントを待ち受け、続いてそのイベントに関連付けられたコードのブロックを実行する。イベントは、プロセッサ1305によって検出されるように、図13Aのユーザ入力デバイス1313を介したユーザからの入力に応じてトリガされ得る。イベントはまた、電子デバイス1301における他のセンサ及びインターフェースに応じてもトリガされ得る。
命令のセットの実行は、読み出されて修正される数値変数を要求し得る。そのような数値変数は、メモリ(RAM)1370に記憶される。開示する方法は、メモリ1370における既知の位置1372、1373に記憶された入力変数1371を用いる。入力変数1371は、メモリ1370における既知の位置1378、1379に記憶された出力変数1377を生成するように処理される。中間媒介変数1374は、メモリ1370の位置1375、1376における追加的メモリ位置に記憶され得る。代替的に、プロセッサ1305のレジスタ1354にのみ存在し得る中間媒介変数もある。
一連の命令の実行は、フェッチ実行サイクルの反復アプリケーションによってプロセッサ1305において実現される。プロセッサ1305の制御部1351はプログラムカウンタといわれるレジスタを維持し、それは実行される次の命令のROM1360又はRAM1370にアドレスを含む。フェッチ実行サイクルの開始時に、プログラムカウンタによってインデックス付けされたメモリアドレスのコンテンツが、制御部1351に読み込まれる。したがって、読み込まれた命令はプロセッサ1305の後続の動作を制御することにより、例えば、データがROM1360からプロセッサのレジスタ1354に読み込まれ、レジスタのコンテンツが他のレジスタのコンテンツと算術的に組み合わされ、レジスタのコンテンツが他のレジスタに記憶された位置に書き込まれるなどとなる。フェッチ実行サイクルの終了時には、プログラムカウンタはシステムプログラムコードにおける次の命令を指し示すように更新される。これは、ちょうど実行された命令に応じて、分岐動作を実現するために、プログラムカウンタに含まれたアドレスを増分すること又は新たなアドレスによるプログラムカウンタを読み込むことを含み得る。
以下で説明する方法の工程における各ステップ又はサブ工程は、アプリケーションプログラム1333の1以上のセグメントに関連付けられ、プロセッサ1305におけるフェッチ実行サイクルの反復実行、又は電子デバイス1301における他の独立したプロセッサブロックの同様のプログラム動作によって実行される。
具体的には、ユーザが撮影しているイベントがライブの場合には、6自由度でリアルタイムにユーザが仮想カメラを正確に制御することは困難であり、したがって予測が困難となるはずなので、撮影された仮想カメラ映像の編集が多くの場合に必要とされる。ある時間中に生じるキーとなるイベントは、通常、ユーザにとって撮影することが重要であり、正確にフレーム構成されることが必要である。スポーツ放送環境などの用途では、カメラパスの編集は迅速に行われる必要があり、イベントとリプレーの間の時間経過が長いほど多くの場合にリプレーの価値が早急に低下する。効果的な期間においてカメラパスを効率的に編集するには、ユーザはカメラパスに沿っていつ重要なイベントが生じるかを特定する必要がある。そして、ユーザは、比較的単純且つ時間的に効率よくパスを編集できなくてはならない。本実施形態におけるカメラパスは、カメラ120による撮影期間に含まれる複数の時点に対応する仮想視点パラメータを複数有する視点情報であり、仮想カメラの移動経路と向きの変化を表す。なお、仮想視点パラメータは、仮想視点の位置と向きを示すパラメータであるが、それらの何れか一方のみを示していてもよい。
説明する配置構成は、カメラパスの元の撮影状態からユーザ又は編集者による編集により適した修正状態への変換に関する。さらに、この新たな修正状態においては、カメラパスはユーザを編集する場所に誘導する際の有意性及び実用性を示唆するように構築又は再作成される。ただし、変換されたカメラパスは、最初に変換状態において元のカメラパスの当初の目的とするものを撮影することが重要である。
説明を補助するために、図2は錐台211を有する仮想カメラ210が仮想環境212の周辺を移動しているシーン200の例を示す。仮想カメラ210は、プレーヤ201がボール202を軌道203に沿ってゴールキーパ204越しにゴールネット205に対してキックするスポーツイベントのビデオを撮影している。仮想環境212における軌道203は、サッカーのペナルティーキックを示す。
図3は、ユーザによってリアルタイムで自由にナビゲートされるような仮想カメラパス、図2のシーン200に概説されたイベントの撮影、及び関連するタイムライン320を示す。シーン200に対応するシーン300は、仮想環境を通じる仮想カメラ306のカメラパス301の下向きの空間図を示す。仮想カメラ306のカメラパス301は、位置304で開始し、位置305で終了する。カメラパス301はまた、仮想環境において可視的でもある。仮想カメラ306がリアルタイムでナビゲートされる場合には、カメラパス301を含む記録データは経時的にカメラ306の姿勢を規定する一連のカメラ姿勢の座標302aである。対応する編集可能タイムライン(ユーザインターフェース)320は、座標302bとしてカメラ姿勢の時間的位置を表示する。タイムラインは、カメラパス301に沿ってカメラ306の現在の位置を示すプレーヘッド322を有する。システムは、カメラの姿勢を更新する頻度、例えば、毎秒60フレーム(fps)に応じて、姿勢座標データの量を決定する。60fpsにおいて10秒持続するカメラパスは、600ポイントのデータを有することになる。タイムライン(ユーザインターフェース)320によって図示するように、非常に多くの編集可能ポイントがタイムラインユーザインターフェース上に表示される場合(時間増分ごとに1つ)には、タイムラインは過密となりユーザが効率的に編集するのは困難となる。
ユーザは、カメラパスデータを編集することが可能である。しかしながら、図4を用いて示すように、タイムライン320におけるカメラパスの編集は編集者にとって理想的なものではない。図4は、シーン200及び300に相当するシーン400を示す。ユーザが仮想カメラ406の位置を変えたいと望むので、ユーザは電子デバイス1301の入力を操作して、プレーヘッド411をタイムライン(ユーザインターフェース)410上のポイント402cに移動させる。ポイント402cはボールがネットに入る瞬間であるため、ユーザは仮想カメラ406の位置を変えたいと求める。ポイント402cは、時間内の瞬間を示し、カメラパス401上の元の姿勢402aに対応する。ユーザは、仮想カメラ406を元の姿勢402aから新たな姿勢402bにナビゲートする。時間内のある瞬間のカメラ姿勢への変化は隣接するポイントを自動的に移動させることにはならず、直前のポイント404と後続のポイント405との間でカメラパス401に急激なずれ403を形成する。
タイムライン410を再作成する単純なアプローチは、仮想カメラのパス全体を十分に記述するわずかなデータに対して補間を用いてデータの量を減少させることによってパスを単純化し、編集可能なタイムラインユーザインターフェース上にそのデータを表示することである。単純なアプローチは、フリーハンドで描いたラインをベクトルスプラインにベクトル化する作図アプリケーションに似ている。単純なアプローチによる問題は、アプローチは編集するポイントの量を減少させるが残余のポイントの位置はユーザが求め得るポイントにおいて容易な編集を促すことにはならないことである。
図5は、単純なアプローチの制限を示す。仮想環境500において、図3の元の未加工のカメラパス301は、減少した残余の制御ポイント502a〜502fのカメラパス501となるように単純化される。対応する編集可能なタイムライン510上では、残余の制御ポイント502a〜502fは、ポイント512a〜512fとしてそれぞれ示される。ユーザは、ボールがネットに入る瞬間にカメラパス501を修正するようにプレーヘッド511をタイムライン510上の位置513に移動させる。パスを修正するには、ユーザは新たな編集可能ポイント(仮想環境500においてタイムライン510及びカメラパス501の双方に現れる)を作成することが必要となる。ユーザは、新たなポイント503を元の位置から新たな位置504に移動させることによってパスを修正する。この変化の影響によって、パスからの新たなずれ505が生じる。パスのずれ505の形状は、既存のポイント502eから、新たなポイント504の修正位置へ、そして次の既に存在しているポイント502fへの円滑な補間に基づく。その結果、カメラ506は、ポイント502eと504の間の短時間にわたってさらに移動するように急激にカメラスピードを増加しなくてはならない。位置の相違とともに急激なカメラスピード変化によって、結果として生じるカメラパスを目視しづらくなる。これを補正するために、ユーザは、ポイント502eを編集し、ある例では、目的とするものが開始から終了まで円滑な円弧状パスの形式である場合にはポイント502dをも編集することが必要となる。
ここで説明する例において、その役割がスポーツイベントの自由ビューポイントのリプレーを記録することであるユーザをカメラオペレータという。説明する撮影領域におけるイベントの例は、図3、図4及び図5の例に示すように、プレーヤがゴールキーパを越えてゴールにフットボールをキックするものである。カメラオペレータはコントローラ180の制御を用いて、仮想カメラのビューポイントから撮影されたリプレーを記録するように仮想環境の周辺の仮想カメラを手動で制御する。電子デバイス1301を用いて仮想カメラによって撮影された映像をレビューすると、カメラオペレータは決定的瞬間の良好な撮影を向上させるように元の記録されたカメラパスの編集を望む。
図6は、ユーザ編集をより容易にするためにカメラパスを修正する方法600を示す。方法600は、通常、ROM1360に記憶されプロセッサ1305の実行のもとで制御されるアプリケーションプログラム1333の1以上のモジュールとして実施される。
方法600は、カメラオペレータが編集ボタンを押圧し又はアプリケーションプログラム1333の編集モードに移行した結果として開始する。方法600は、カメラオペレータにとって編集が容易なフォーマットにおいてカメラパスを準備及び提示するのに用いられる。
方法600は、受信するステップ601で開始する。ステップ601では、アプリケーションプログラム1333は手動で制御された元のカメラパスを受信する。例えば、手動で制御されたカメラパスは、カメラ120A〜120Xのうちの1つに記憶され、電子デバイス1301に送信される。ある配置構成では、手動で制御されたカメラパス及びカメラ120A〜120Xによって撮影されたビデオデータがサーバコンピュータ1399に送信される。
方法600は、プロセッサ1305の実行のもとでステップ601から、特定するステップ602を継続する。ステップ602において、アプリケーションプログラム1333は、受信されたカメラパスの開始及び終了の時間の一定期間を特定する。例えば、カメラパスの開始時間は、通常、記録の開始と一致し、終了時間は記録の終了と一致する。開始及び終了の時間は、仮想環境のタイムラインからのタイムコードとして記録される。開始及び終了の時間が分かると、アプリケーションプログラム1333は仮想環境にカメラパスが存在した期間を決定する。
方法600は、プロセッサ1305の実行のもとでステップ602から、特定するステップ603を継続する。ステップ603では、アプリケーションプログラム1333は、カメラパスの期間内の有意なイベントを特定してから、有意なイベントを示すようにタイムマーカを作成する。タイムマーカは、時間の値、例えば、タイムコードを保持し、イベントがシーンにおいてその時間で生じたことを示す。ある配置構成では、タイムマーカは、タイムマーカに対応する特定された有意なイベントのタイプ、例えば、ゴール、ペナルティ、ボールのパス/キックなどのタイプを保持し、又は含み得る。ステップ603は、有意であると考えられるが有意性又は重要性のレベル間を区別しないものについての所定の表示に基づいて、有意であると考えられるイベントを特定するように動作する。
ある実施例では、ステップ603は有意なイベントについてのクエリを電子デバイス1301からサーバコンピュータ1399に送信するように動作する。サーバコンピュータ1399は、例えば、カメラネットワーク120から受信された解析ビデオデータによって、又は物体140(例えば、プレーヤ又はボール)に取り付けられたセンサを用いて有意なイベントを特定するように動作する。サーバコンピュータ1399は、有意なイベントの特定を電子デバイス1301に戻す。
方法600は、プロセッサ1305の実行のもとでステップ603から、関連付けるステップ604を継続する。ステップ604では、アプリケーションプログラム1333は、特定されたイベントのタイムマーカを元のカメラパスのタイムラインに沿ってカメラの姿勢と関連付ける。アプリケーションプログラム1333は、元のカメラパスに沿ってカメラの姿勢を説明する(各タイムマーカに対応する)値のセットを記憶する。説明する配置構成において、カメラの姿勢は、カメラの位置、向き及びズーム特性として規定される。タイムマーカの各々は、ステップ603において特定された所定のタイプの少なくとも1つのイベントに対応する。すなわち、ステップ603及びステップ604により、S601で受信したカメラパスが有する複数の仮想視点パラメータのうち、所定のイベントに応じて特定される1以上の仮想視点パラメータが抽出される。抽出された仮想視点パラメータが変更可能であることを示す画像が表示される。
方法600は、プロセッサ1305の実行のもとでステップ604から、作成するステップ605を継続する。ステップ605では、アプリケーションプログラム1333は、ステップ604においてアプリケーションプログラム1333によって記憶された姿勢の値のセットに基づいて関連付けられた空間及び時間に新たな制御ポイントを作成する。システムによって記憶された姿勢の値のセットは新たなポイントの空間座標を規定し、タイムマーカはタイムラインにおいていつ新たな制御ポイントを作成するかを規定するように用いられる。新たに作成された各制御ポイントは、規定の空間座標における仮想環境と、規定のタイムコードにおけるタイムラインインターフェース上との双方において示される。ステップ605は、仮想カメラのビデオ撮影の開始と終了の時間の間の期間内における複数のタイムマーカを用いてカメラパス上に複数の制御ポイントを決定するように効率的に動作する。制御ポイントは、元のカメラパスを少なくとも部分的に規定(特徴付け)する。
方法600は、プロセッサ1305の実行のもとでステップ605から、補間するステップ606を継続する。ステップ606では、アプリケーションプログラム1333によって記憶された姿勢の値のセットに基づいて関連付けられた空間及び時間に1333は、ステップ605において作成された制御ポイントを通じて、元の開始カメラ姿勢から元の終了カメラ姿勢へと開始する修正された円滑なカメラパスを補間する。ステップ606は、制御ポイントにおける仮想カメラの幾何学形状(空間における位置)、移行の加速度及びスピードなどの特性を補間するように動作する。仮想カメラの幾何学形状又は位置は、仮想カメラの姿勢に関する。上記のように、姿勢は、仮想カメラの向き、位置及び他の特性に関する。ステップ606は、603において特定された対応する有意なイベントのタイプとともに図5のタイムライン510のマーカを例えば含む再作成されたカメラパスに関連付けられ、かつマーカ(図示せず)の各々に関連付けられたタイムラインの生成を含むことが可能である。生成に応じて、対応するイベントを用いて注釈されたタイムマーカを有するタイムラインは、ユーザによる編集のためにGUIインターフェースを用いて再生成される。ユーザは、タッチスクリーンなどの電子デバイス1301のユーザ入力デバイス1313を用いて、再作成されたカメラパスを編集することができる。ステップ606の実行の後に、方法600は、609で終了する。配置構成によっては、タイムラインは、ステップ606ではなくステップ605で生成され得る。
カメラパスの全体の曲線次数が低い場合には、例えば、カメラパスが直線又は二次曲線によって規定され得る場合、又は曲線次数が特定された有意なイベント数よりも小さい場合には、方法600は、一般的に、元のパス及び元のカメラパスの撮影を制御したユーザの目的とするものを再現するカメラパスを再作成するのに十分である。元のカメラパスが複雑な場合には、パスが多大な曲率の複数の線分を有することを意味し、代替的な方法が用いられ得る。複雑なカメラパスは、例えば、曲線次数が特定されたイベント数を超過するような高次曲線によって規定され得る。結果として、方法600によって再作成されたカメラパスは、パスが制御ポイントを必要とする領域において不十分なタイムマーカしか含まないことになる。代替的方法を、図7との関連において説明する。図7は、元のカメラパスの曲率を適切に規定するには不十分なタイムマーカしかない場合に、編集し易いカメラパスを再作成する方法700を示す。方法700は、一般的に、ROM1360に記憶されプロセッサ1305の制御のもとで実行されるアプリケーションプログラム1333の1以上のモジュールとして実施される。
方法700は、カメラオペレータが編集ボタンを押圧し、又は編集モードを移行した結果として開始する。
方法700は、受信するステップ701で開始する。ステップ701では、アプリケーションプログラム1333は手動で制御された元のカメラパスを受信する。図7の例において、受信されるパスは、図3の元のカメラパス301と同一である。
方法700は、アプリケーションプログラム1333の実行のもとでステップ701から、特定するステップ702を継続する。ステップ702では、アプリケーションプログラム1333はカメラパスの開始及び終了の時間を特定する。説明する例では、カメラパスの開始時間は記録の開始と同じであり、終了時間は記録の終了と同じである。開始及び終了の時間は、仮想環境のタイムラインによるタイムコードとして記録される。開始及び終了の時間が分かると、アプリケーションプログラム1333は仮想環境においてカメラパスが存在した期間を計算する。
方法700は、アプリケーションプログラム1333の実行のもとでステップ702から、特定するステップ703を継続する。ステップ703では、アプリケーションプログラム1333はイベントの階層に基づいて期間内の最も重要なイベントを特定する。イベントは、ステップ603と同様にして特定可能である。ただし、ステップ703は階層を用いてイベントの重要性レベルをさらに特定するように動作する。アプリケーションプログラム1333が重要なイベントを特定するのに使用され得る方法は、複数ある。方法の1つは、仮想環境におけるすべての物体の移動に追従するのに物体の追跡を利用し、追跡され得る物体が相互にどのように相互作用するかを検出するものである。追跡される物体の例は、それに限定されないが、人々(及び彼らの一部)、(ボールなどの)器具、車両及び物理カメラを含む。追跡される物体が相互作用する形態は、イベントを認識するのに使用され得る。そのような物体及び相互作用の例は、ネットに接触するボール、他のプレーヤに接触するプレーヤ、ボールに接触するプレーヤ、及びある空間から他の空間、例えば、ゴールエリア又は競技場外部に移動するボールを含む。イベントを検出する他の方法は、カメラ102A〜120Xのオペレータが、例えば、コントローラ180又は電子デバイス1301の入力を用いて、いつ重要なイベントが生じたか及びイベントのタイプをマーキングすることである。イベントを特定するのに使用され得る他の方法は、イベントを検出するのに群衆の反応の音響レベルを測定し、音響レベルに基づいて有意性を判断することである。
ある実施例では、ステップ703は、電子デバイス1301からサーバコンピュータ1399に有意なイベントについてクエリを送信するように動作する。サーバコンピュータ1399は、階層を用いて有意なイベント及び各イベントの重要性レベルを特定するように動作する。サーバコンピュータ1399は、イベントの特定及び重要性の関連するレベルを電子デバイス1301に戻す。
ステップ703でイベントが認識及び分類されると、イベントは非常に有意であるものから最も有意でないものまでランク付けする有効なイベントの階層と比較される。階層及びイベントの分類は、事前に規定される。図8は、イベントの階層の例を以下で詳細に説明する。アプリケーションプログラム1333が最も重要なイベントを特定すると、方法700はステップ703から、関連付けるステップ704に移動する。
ステップ704では、特定されたイベントのタイムマーカは、元のカメラパスのタイムラインに沿ってカメラ姿勢とイベントを関連付けるのに用いられる。アプリケーションプログラム1333は、カメラの姿勢を説明する値のセットを記憶する。本開示のコンテキストにおいて、カメラ姿勢は、カメラの位置、向き及びズーム特性として規定される。
方法700は、アプリケーションプログラム1333の実行のもとでステップ704から、作成するステップ705を継続する。ステップ705では、アプリケーションプログラム1333は対応する空間及び時間において新たな制御ポイントを作成する。システムによって保持される6次元の値は新たなポイントの空間座標を定義し、一方、特定されたイベントのタイムコードはタイムラインにおいていつ制御ポイントを作成するかを規定するのに用いられる。新たに作成された制御ポイントは、既定の空間座標における仮想環境及び規定のタイムコードにおけるタイムラインインターフェース上の双方において示される。制御ポイントは、ステップ605と同様にして作成又は決定される。制御ポイントは、ステップ703において決定されたイベントの重要性スコア又は階層に基づいて制御ポイントが決定されるので、関連する重要性スコアに基づいて効率的に特定される。
方法700は、アプリケーションプログラム1333の実行のもとでステップ705から、補間するステップ706を継続する。ステップ706では、アプリケーションプログラム1333は、ステップ705において作成された制御ポイントを通じて、元の開始カメラ姿勢から元の終了カメラ姿勢へと開始する円滑なカメラパスを補間する。ステップ706は、ステップ606と同様にして動作する。
方法700は、アプリケーションプログラム1333の実行のもとでステップ706から、チェックするステップ707を継続する。ステップ707では、アプリケーションは、補間されたカメラパスが閾値内の元のパスを正確に再作成しているかを判定するように、ステップ706の一部として作成された新たに補間されたカメラパスを評価する。ステップ707は、ステップ705の制御ポイントを用いて、再作成されたカメラパスと受信されたカメラパスを比較することによって再作成されたカメラパスの幾何学形状がステップ701において受信されたカメラパスの幾何学形状と実質的に一致するかを判定する。アプリケーションプログラム1333は、カメラパスの時間増分ごとに元のカメラ姿勢と、新たなカメラパスの新たなカメラ姿勢との差を計算し、差を合算することによって評価を実行する。事前に規定された閾値よりも計算によって小さな値が生成される場合(ステップ707において「Y」)、肯定的発見は、生成されたカメラパスが、最小量の制御ポイントを有し、タイムライン上の制御ポイントの一時的な位置にシーンにおける重要性の高いイベントを表示させつつ元のパスに沿って元のカメラの軌道を十分に再現していることを意味するので、方法700は709で終了する。差が事前に規定された閾値未満であるかの判定は、ステップ706で判定された制御ポイントを用いて再作成されたカメラパスの品質を示す。このイベントにおけるステップ707は、再作成されたカメラパスに関連付けられたタイムラインの生成、及びユーザによる編集のためにGUIインターフェースを用いるタイムラインの再生成を含み得る。十分に再現されたカメラパスを構成する閾値は、オプションメニューにおいてユーザによって事前に設定される値である。
事前に規定された閾値よりも計算によって大きな値が生成される場合(ステップ707において「N」)、生成されるパスが元のパスを十分には再現せずにカメラパスの解像度を増加させるにはより多くの制御ポイントを必要とするので、方法700はステップ707から、特定するステップ708に移動する。
ステップ708では、アプリケーションプログラム1333は、イベント800の生成された階層に戻り、カメラパスの期間内で次に最も重要なイベントを特定する。次に最も重要なイベントが特定されると、方法700は、元のカメラパスに沿ったカメラ姿勢とイベントを対応させるようにステップ704に戻る。
方法700は、上記の技術を用いて特定された有意なイベントに基づいて、単純化された形式で元の仮想カメラパスを再作成するように動作する。方法700は、重要なリプレーを撮影するのに仮想カメラを編集及び制御するデータストレージを低下させるとともにユーザの能力を増加させるようにして、仮想カメラパスを再作成するように動作する。制御ポイント数を減少させることによって、まず、カメラパスに関連付けられたデータが減少する。さらに、特定されたイベント(方法600及び700の双方)に基づいて制御ポイントを選択することによって、目立つイベントを迅速に特定及び編集するユーザの能力が向上する。方法600及び700によって、カメラパスの当初の目的とするものが、特に、図7のステップ704〜708を用いる複素曲線に対して維持可能となる。制御ポイントは、ステップ704〜708の動作によって再作成されたカメラパスの品質に基づいて効率的に特定される。ステップ704〜708のループによって、特定されたイベントに関連付けられた制御ポイント及びイベントの重要度のスコア(階層)を用いて受信仮想カメラパスが再作成可能となる。
ステップ605及び705(又はステップ606及び706)の各々は、以下の図9との関連で説明するように、対応するタイムラインインターフェースの生成及び表示を含むことができる。
図8は、イベントの階層800の例を示す。図8の例において、イベントの階層800はサッカー/フットボールのシナリオに関連する。異なる階層は、異なるイベントのシナリオ、例えば、(他のオリンピック陸上競技のシナリオとともに)競走のシナリオ、カーレーシングのシナリオ、演奏会のシナリオなどに対して存在する。
階層800は最も重要であるものから最も重要でないものまで示され、上部が最も重要なものであり、底部は最も重要でないものである。階層800は、降順で示す重要性801〜806の6層を有する。階層の層は、各タイムマーカに関連付けられて特定されたイベントの重要度のスコアを効率的に示す。図8の例において、低いスコア又は層はより高い重要性を示す。他の配置構成において、階層は昇順で重要性を示してもよい。層1の801は、上位層であり、ペナルティ、ゴール及びゴールセーブのイベントのためのものである。層2の802は、ペナルティ、スローイン及びコーナーキックのイベントをカテゴリ別に分ける。層3の803は、ボールがパス若しくはキックされるイベント、ボールがプレーヤによって受け取られるイベント、又はボールが対向するプレーヤによってインターセプトされるイベントをカテゴリ別に分ける。層4の804は、プレーヤが(ボールとともに)走り出すイベント、及びプレーヤが(ボールとともに)走るのを停止するイベントをカテゴリ別に分ける。層5の805は、プレーヤ(任意のプレーヤ)が走り出すイベント、及びプレーヤ(任意のプレーヤ)が走るのを停止するイベントをカテゴリ別に分ける。層6の806は、仮想カメラが移動を開始するイベント、仮想カメラが移動を停止するイベント、及び元のパスの曲線が大きく変化するイベント(所定の閾値に対する向きのx、y、zにおける微分係数を比較することによって決定される変化)をカテゴリ別に分ける。層6の806のコンテンツは、すべての階層に対して共通であり、各階層の最下層となる。階層800には図示していないが、各層における各イベントはサブ階層を形成可能である。例えば、層1の801において、ゴールのイベントは、ゴールセーブのイベントよりも重要性が高くてもよい。
階層を構成するものは、スポーツごと及びイベントごとに変動することになる。各々に使用する場合の階層は、プレーヤ/参加者、目立つ動き又は相互作用の数などの変数に依存し、ある場合においては、主体的であり、カメラネットワーク120の管理者、視覚効果アーティスト、放送局又はユーザの嗜好に基づくことがある。異なる階層の例は、フィギュアスケートの演技についてのものである。フィギュアスケートの演技を含むイベントは、サッカー/フットボールのイベントとは異なり、ユーザがイベントに適合する階層を事前に構成する必要がある。適切な階層を事前に構成することは、異なるイベントを認識するようにサーバに正確なデータを提供する追加的センサ及び入力、例えば、ジャイロスコープ、加速度計、破損位置トラッカ、オーディオ入力などを組み込むことを要求し得る。
フィギュアスケートのイベントに対して階層を構成するユーザは、このようにして階層を規定し得る。層1は、最も有意なイベントを保持しており、演者が氷面から飛び上がり空中を移動する技を実行するイベントを含み得る。層2は、演者が氷上でスピンの技を実行するイベントを保持し得る。層3は、演者が方向を反転するイベントを保持し得る。層4は、伴奏の音楽的変化に関するイベントを保持し得る。層5は、演者がスケートを開始及び終了する瞬間を示すイベントを保持し得る。さらに上記のように、層6は、仮想カメラが移動経路上における移動を開始する場合、仮想カメラが移動を停止する場合、及び元のパスの曲線が大幅に変化する場合のイベントを保持する。
サッカー/フットボール及びフィギュアスケートの階層の提供した例の双方において、階層はカメラパスに関するイベントを保持する第6の層を有する6層を含む。階層はさらに多い又は少ない層を有していてもよく、カメラに関するイベントは第6の層にある必要はない。
他のイベントの例は、非競合的な1つに演劇がある。上記のセンサ及び入力に加えて、演技のようなイベントは、媒体に固有のイベントの認識のために異なる入力を必要としてもよく、例えば、演技の脚本がシステムに供給され、脚本の節に基づいてイベントをトリガするのに言語認識が用いられてもよい。
劇場のイベントに対する階層を構成するユーザは、このようにして階層を規定し得る。層1は、演技の物語において重要なイベント、例えば、脚本家によって重要であると見なされた物語の部分を含み得る。層2は、俳優の移動及び位置が脚本に記されたステージの方向と相関するイベントを保持し得る。層3は、音楽配列の開始及び終了などの音楽の合図を保持し得る。層4は、仮想カメラが移動を開始する場合、仮想カメラが移動を停止する場合、及び元のパスの曲線が大幅に変化する場合のイベントを保持し得る。
図9は、元のカメラパス301が方法700を用いて修正された後の再作成されたカメラパスの表示を示す。仮想環境900において、元の未加工のカメラパス301は再作成されたパス901となるように単純化される。パス901は、制御ポイント902a〜902eとして示される減少した残余の編集(制御)ポイントしか有しない。ステップ707で生成される対応する編集可能なタイムライン910上で、ポイント902a〜902eはポイント912a〜912eとしてそれぞれ示される。残余のポイント902a〜902e及び912a〜912eは、ステップ705の実行において作成され、イベント903、904及び905を反映している。ボールがネットに入るイベント905に対応するカメラパスの線分は、その線分がゴールのイベントに関連するとして特定されるので層1の801のイベントに関するとして最も重要なイベントである。ゴールのイベント905の特定によって、アプリケーションプログラム1333が結果としてイベントを示すポイント912dを作成することになり、制御ポイント902dの作成がもたらされる。制御ポイント902dの位置の作成は、イベントのタイムマーカに対応する時間に仮想カメラが位置した場所に基づく。ただし、開始姿勢の制御ポイント902a及び終了姿勢の制御ポイント902eと併せた制御ポイント902dの作成では、元のカメラパス301を再作成することはない。例えば、パスの曲率、すなわち、カメラパスを規定する曲線の次数は、追加的ポイントを必要とするように合成されて元のカメラパスの当初の目的とするものを正確に再生成し得る。このように、表示部に表示される画像は、制御ポイント902に対応する仮想視点パラメータが変更可能であることを示す。また、表示部に表示される画像は、制御ポイント902に対応する仮想カメラの位置をパス901上に示す。また、表示部に表示される画像は、制御ポイント902に対応する時点を撮影期間に対応するタイムライン910上に示す。
ステップ708に続いて、方法700は、次に最も重要なイベントを特定することに戻る。次に最も重要なイベントは、イベントの階層800の層3の803に関し、904においてプレーヤ(図3及び9の例ではゴールキッカー)がボールをキックする場合である。キックのイベントは、仮想環境900における制御ポイント902c及びタイムライン910上の対応するポイント912cを作成する。新たな制御ポイント902cは元のカメラパス(300)をまだ十分には規定しないので、方法700は次に重要なイベントとしてイベント903において走り出すプレーヤ(ゴールキッカー)を特定するステップ704〜707を繰り返す。イベントについてステップ704から705の実行によって、制御ポイント902b及び対応するタイムライン910上のポイント912bが作成される。開始及び終了のポイント902a及び902eと同様に制御ポイント902b〜902dを用いて、ステップ706では、ステップ707において元のカメラパス301を十分に再作成していると判定される補間されたパス901が構築され得る。説明する配置構成において、ステップ707の実行はまた、ユーザの参照のためにビデオディスプレイ1314上にタイムライン910を生成及び再生成するように動作する。
ステップ707で補間されたパスが元のパスを十分に再作成しているかを判定する方法の1つは、まず、時間増分ごとに元のパスと補間されたパス上の対応するポイント間の距離を計算し、続いてその合計を合算するものである。その総計が所定の閾値未満または閾値以内の場合には、補間されたパスが十分であると見なされる。十分なカメラパスの作成を完了すると、ユーザは、作成された1以上の制御ポイントを修正することによってカメラパスを編集することが可能となり、例えば、編集のために制御ポイント902a〜902eを記憶することによって制御ポイント付近の外部を編集することができなくなる。ユーザは、追加的制御ポイントを作成するのに(カメラパスの編集に通常用いられるユーザインターフェースなどの)ユーザインターフェースを用いることによって、既存の制御ポイント付近の外部を編集することを選択できる。
図10は、ここで説明する方法を用いて修正されるカメラパスを用いることの効果を実証する。カメラパスの編集を求めるユーザは、放送時間を短縮するように特定のイベントに関連してカメラパスの一部を編集する可能性が高い。カメラパスはまた、本来提供されなかった全体像であるイベントの異なる又は改良された全体像を放送視聴者に提供するように編集されてもよい。図10は、仮想環境1000の例を示す。図10の例において、ユーザの目的は、イベント1002でゴールを決める瞬間にカメラパス1001に沿って仮想カメラ1006のビューポイントを修正することである。ユーザは、編集可能なタイムライン1010上でプレーヘッド1011を位置1012に移動させる。プレーヘッド1011の位置1012は、ゴールのイベント1002と一致する。入力装置、例えば、ビデオディスプレイ1314を用いて、ユーザは、仮想カメラ1006の姿勢を元の位置1003から新たな制御ポイント1004に移動させることによってカメラパス1001を修正することができる。カメラパス1001に沿った全ての制御ポイントは重要なイベントに関連して保存されたカメラ姿勢を示すので、新たに修正されたカメラパス1005は、他のいずれのポイントも作成、削除、あるいは編集する必要なく、目立つ姿勢を全て保持する。ユーザを補助するために、特定されたイベントの名称、例えば、「i」を、タイムライン1010上の制御ポイント1012と一緒に示す注釈を表示する。タイムラインに関連付けられたイベントの特定又は名称付け以外の注釈が、用いられてもよい。カメラパスを編集する場合にユーザを補助するように、例えば、動き(例えば、ゴール又はキック)を特定する注釈がタイムラインにおける各制御ポイントで用いられてもよく、又は各イベントの層を特定するのに記号(例えば、層1のイベントに対して色又は特定の形状)が用いられてもよい。
図14は、再作成されたカメラパスを用いて仮想カメラを制御する方法1400を示す。方法1400は、通常、メモリに記憶されプロセッサ1305の制御の下で実行されるアプリケーションプログラム1333の1以上のモジュールとして実施される。
方法1400は、生成するステップ1405で開始する。ステップ1405は、例えば、ユーザが編集ボタンを押圧することに応じて、方法600又は700を用いて仮想カメラパスを再作成するように動作する。ステップ1405の動作の結果、図9のタイムライン910を生成する。ある実施例において、ステップ603及び703は、電子デバイス1301ではなくサーバ1399上で実施可能である。
方法1400は、ステップ1405から、受信するステップ1410に進む。ステップ1410では、ユーザはタイムライン910を用いて制御ポイントを選択及び編集する。例えば、図10に示すように、ユーザはゴールを決めたプレーヤに接近した仮想カメラ映像を生成するように制御ポイント1003を新たな位置1004に移動させる命令を提供する。プロセッサ1305は、制御ポイントに対応する仮想視点パラメータの変更に係る上記のユーザ操作に応じた入力を受け付ける。
方法1400は、プロセッサ1305の実行のもとでステップ1410から、編集するステップ1415を継続する。ステップ1415は、制御ポイント1003を位置1004に移動させるユーザの命令に基づいて修正されたカメラパス1005を生成するように動作する。ステップ1415はまた、通常、制御ポイント1007〜制御ポイント1004から仮想カメラ配列の終了部への円滑な移行を含む修正された円滑なカメラパスを生成するように、変更後のパラメータに基づいて制御ポイント間を補完するステップも含む。ただし、補間は、ステップ1420において仮想カメラを制御しつつなされ得る。したがって、カメラパスは、少なくとも1つの制御ポイントに関連してステップ1410において受信されたユーザの入力に応じた制御ポイントに基づいて効率的に修正される。すなわち、カメラパスの修正が、決定された制御ポイントの各々の付近において有効化され、カメラパスの他の部分に対して無効化される。言い換えると、制御ポイント以外の部分の仮想視点パラメータを変更対象として指定するユーザ操作に応じた入力は受け付けられない。
方法1400は、プロセッサ1305の実行のもとでステップ1410から、制御するステップ1420を継続する。制御するステップ1420の実行は、例えば、時間1011付近の制御ポイント1004から仮想カメラ配列の終了部のビデオ映像を生成するように、例えば、ステップ1415において生成され修正されたパスに従って仮想カメラの構成を制御することによって、及び選択的に、制御ポイント間の仮想カメラ移行のスピード又は加速度を関連付けることによって仮想カメラの動作を制御するように動作する。ステップ1420は、既知の仮想カメラ生成(自由ビューポイント生成としても知られた)技術及びカメラ120A〜120Xの関連するものから受信されたデータを用いて、制御ポイント1004を含む修正されたカメラパスから仮想カメラビデオを生成するように動作する。仮想カメラビデオは、仮想カメラ姿勢に対応して修正されたカメラパス1005及びタイムライン1010によって規定された仮想カメラ姿勢に従って、上記の自由ビューポイント生成技術の1つを用いて仮想カメラのビューポイントをレンダリングすることによって効率的に生成される。タイムライン1010は、シーンにおけるタイムラインに対応する。
カメラ120A〜120Xは時間同期化され、すなわち、カメラ120A〜120Xは異なる全体像から特定のイベントを同時に撮影し、それによって特定の仮想カメラ姿勢及びシーンにおける時間内の特定の瞬間についてのビューポイントを合成することが可能となる。例えば、ユーザは、時間を「フリーズする」とともに仮想カメラを制御して、異なるビューポイントから見た「フリーズされた」シーンのリプレービデオを生成することができる。シーンが特定の時間にフリーズされた場合には、リプレーのためにタイムライン1010は、シーンがフリーズされたシーンの時間と同じタイムコードを示す複数の追加的制御ポイントを含むように修正されることができる。仮想カメラは、所定のスピードで複数の追加的制御ポイントを横断するように制御されることが可能である。
仮想カメラのビューポイントをレンダリングするステップは、通常、タブレットデバイス1301ではなくサーバ1399上で実施される。電子デバイス1301は、修正されたカメラパス1005からの仮想カメラ姿勢がタイムライン1010における対応するポイントに関連付けられることができるように、タイムライン1010を伴う修正されたカメラパス1005を送信し得る。例えば、修正されたカメラパス1005の制御ポイント間の補間は、タイムライン1010におけるすべてのポイントに対して1以上の仮想カメラ姿勢を決定することができる。
そして、サーバ1399は、修正されたカメラパス1005によって規定された対応する仮想カメラ姿勢を用いてタイムライン1010における特定のポイントに対して、カメラ120A〜120Xから受信されるデータを用いてシーンをレンダリングする。代替的に、比較的短いタイムラインに対して、電子デバイス1301は、電子デバイス1301が修正されたカメラパス1005のビューポイントをレンダリングすることを可能とするように、タイムライン1010に対してサーバ1399によって生成されたモデルを与えられてもよい。
そして、レンダリングされたビデオ映像は、例えば、ユーザによるプレビューのために電子デバイス1301のディスプレイ上に表示される。ユーザが結果に満足すると、レンダリングされたビデオはより広範な視聴者に対して放送される。ある実施例では、シーンをレンダリングしつつリアルタイムで放送が実施されることができる。代替的に、レンダリングされた出力は、放送の前にさらに処理されてもよく、例えば、ビデオ共有ウェブサイトに単にアップロードされ、ニュースに組み込まれるなどが可能となる。
イベントによる制御ポイントがタイムラインに沿って具体的な時間にカメラの姿勢を規定するが、イベントによる制御ポイントは、通常、元のパスに当初は存在したカメラ速度におけるバラつきを求める十分な情報を単独で提供することはない。図3を参照すると、カメラ姿勢の座標302はパスに沿って密度が変動する。カメラ姿勢の座標は、終了部に向かうよりもパスの中間付近でよりタイトにグループ化される。よりタイトなグループ化は、カメラ306のスピードがより多くのカメラ姿勢の座標を作成する中間付近で減速したことを示す。元のカメラパス301を正確に再作成するには、速度の変化を説明するとともにパスにおける速度の変化を再作成する能力が必要となる。
速度変化の再作成を実現する比較的単純な方法は、元のカメラパス301に関連付けられたカメラのスピード及び加速度メタデータ(速度情報)を用いるものである。メタデータがない場合に速度変化の再作成を実現する方法は、図11に示す方法1100である。方法1100は、通常、図7の方法700のステップ709の終了において実行される。方法1400のコンテキストにおいて、方法1100はステップ1405と1410の間で実行され得る(図示せず)。方法1100は、通常、ROM1360に記憶されプロセッサ1305の実行のもとで制御されるアプリケーションプログラム1333の1以上のモジュールとして実施される。
方法1100は、サンプリングするステップ1101で開始する。アプリケーションプログラム1333は、ステップ1101において一定間隔で元の仮想カメラの速度をサンプリングする。方法1100は、ステップ1101から、適用するステップ1102を継続する。ステップ1102は、仮想カメラが元のカメラパス301と同様のスピード及び加速度で再作成されたパスに沿って移動するように、測定と同じ一定間隔で再作成されたパスに沿ってステップ1101で生成された速度値を利用又は適用するように動作する。ステップ1102は、カメラのスピード及び加速度メタデータに基づいて仮想カメラパスを再作成するように動作する。
図12は、カメラの速度を再作成されたパスに変換する代替的方法1200を示す。方法1200は、方法1100と同様にして、図7の方法700の終了の後に生じる。方法1400のコンテキストにおいて、方法1200はステップ1405と1410の間で実行可能である(図示せず)。元のパスを再作成するのに十分な数の制御ポイントが特定及び作成されると、方法1200は取得するステップ1201で開始する。ステップ1201の動作は、特定された制御ポイントに関連付けられた時間を取得する。方法1200は、プロセッサ1305の実行のもとでサンプリングするステップ1202へと継続する。アプリケーションプログラム1333は、参考として取得された時間を用いてステップ1202において元のカメラパスに沿ったカメラの速度データをサンプリングする。方法1200は、プロセッサ1305の実行のもとでステップ1202から、組み込むステップ1203を継続する。ステップ1203では、サンプリングされた速度値が、制御ポイントに組み込まれ、より正確なカメラパスを補間するのに用いられる。
説明する配置構成は、迅速に元のカメラパスをユーザが編集するのに役立つ。さらに、説明する方法はカメラパスを記憶するのに必要とされるファイルサイズを低下させるように実施され得る。ファイルサイズを低下させるために、方法は、仮想環境900又は編集可能なタイムライン910内の制御ポイントを可視化する必要がないだけで、説明したように実施可能である。
説明する配置構成は、コンピュータ及びデータ処理産業に適用可能であり、具体的には、放送及びビデオ撮影産業のためのものである。特定されたイベントに基づいて制御ポイントを決定するステップにおいて、カメラパスは、手動で制御されるカメラパスの目的とするもの又は目立つイベントを損なうことなく意味のある方法で短縮可能となる。したがって、ユーザは、相対的容易さ及びスピードでカメラパスを編集することができる。ユーザにとっての容易さ及びスピードは、カメラパスを再作成するために制御ポイントを決定するステップにおいてイベントの階層を用いることによってさらに補助される。さらに、制御ポイントの補間は、元のカメラパスの目的とするものを維持することを補助する。
上記では本発明のいくつかの実施形態のみを説明するものであり、それに対して本発明の範囲及び趣旨から逸脱することなく変形及び/又は変更が可能であり、実施形態は例示的なものであり限定的ではない。