以下、図面を適宜参照し、本発明の様々な実施形態を説明する。複数の図面において同一の又は類似する構成要素には同じ参照符号が付される。
図1から図6を参照して、一実施形態による動画配信システムについて説明する。図1は、一実施形態による動画配信システム1を示すブロック図である、図2、図4a、及び図4bは、3次元骨格モデルを概念的に示す図であり、図3、図5、及び図6は、動画配信システム1において記憶される情報を説明するための図である。
動画配信システム1は、動画再生装置10と、動画配信装置20と、を備える。動画再生装置10と動画配信装置20とは、ネットワーク50を介して相互に通信可能に接続されている。動画配信システム1は、ストレージ60を備えてもよい。動画再生装置10のユーザである視聴ユーザは、動画配信装置20から配信された動画を動画再生装置10により視聴することができる。動画配信システム1は、2台以上の動画再生装置を備えていてもよい。動画配信装置20から配信される動画を動画再生装置10で視聴する視聴ユーザは、自らのアバタを当該動画に表示させることができる。言い換えると、視聴ユーザは、自らのアバタを介して配信されている動画に参加することができる。視聴ユーザは、配信されている動画に自らのアバタを表示させ、そのアバタを介して動画の配信ユーザ(又は配信されている動画内のキャラクタ)や他の視聴ユーザと交流することができる。
まず、動画再生装置10について説明する。動画再生装置10は、スマートフォンなどの情報処理装置である。動画再生装置10は、スマートフォン以外に、携帯電話機、タブレット端末、パーソナルコンピュータ、電子書籍リーダー、ウェアラブルコンピュータ、ゲーム用コンソール、及びこれら以外の動画を再生可能な各種情報処理装置であってもよい。
動画再生装置10は、視聴ユーザによって動画の視聴及びそれ以外の目的のために用いられる。動画再生装置10は、コンピュータプロセッサ11、通信I/F12、各種情報を記憶するストレージ13、再生される動画を表示するディスプレイ14、及びセンサユニット15、を備える。動画配信装置10は、集音マイク等の前記以外の構成要素を備えてもよい。動画再生装置10は、動画配信装置20から配信された動画を再生する。
コンピュータプロセッサ11は、ストレージ13又はそれ以外のストレージからオペレーティングシステムや様々な機能を実現する様々なプログラムをメモリにロードし、ロードしたプログラムに含まれる命令を実行する演算装置である。コンピュータプロセッサ11は、例えば、CPU、MPU、DSP、GPU、これら以外の各種演算装置、又はこれらの組み合わせである。コンピュータプロセッサ11は、ASIC、PLD、FPGA、MCU等の集積回路により実現されてもよい。図1においては、コンピュータプロセッサ11が単一の構成要素として図示されているが、コンピュータプロセッサ11は複数の物理的に別体のコンピュータプロセッサの集合であってもよい。本明細書において、コンピュータプロセッサ11によって実行されるとして説明されるプログラム又は当該プログラムに含まれる命令は、単一のコンピュータプロセッサで実行されてもよいし、複数のコンピュータプロセッサにより分散して実行されてもよい。また、コンピュータプロセッサ11によって実行されるプログラム又は当該プログラムに含まれる命令は、複数の仮想コンピュータプロセッサにより実行されてもよい。コンピュータプロセッサ11により実現される機能については後述する。
通信I/F12は、ハードウェア、ファームウェア、又はTCP/IPドライバやPPPドライバ等の通信用ソフトウェア又はこれらの組み合わせとして実装される。動画再生装置10は、通信I/F12を介して、他の装置とデータを送受信することができる。
ストレージ13は、コンピュータプロセッサ11によりアクセスされる記憶装置である。ストレージ13は、例えば、磁気ディスク、光ディスク、半導体メモリ、又はデータを記憶可能な前記以外の各種記憶装置である。ストレージ13には、様々なプログラムが記憶され得る。ストレージ13に記憶され得るプログラム及び各種データの少なくとも一部は、動画再生装置10とは物理的に別体のストレージ(例えば、ストレージ60)に格納されてもよい。
ディスプレイ14は、表示パネルと、タッチパネルと、を有する。表示パネルは、液晶パネル、有機ELパネル、無機ELパネル、又はこれら以外の画像を表示可能な任意の表示パネルである。タッチパネルは、プレイヤのタッチ操作(接触操作)を検出することができるように構成されている。タッチパネルは、プレイヤのタップ、ダブルタップ、ドラッグ等の各種タッチ操作を検出することができる。タッチパネルは、静電容量式の近接センサを備え、プレイヤの非接触操作を検出可能に構成されてもよい。動画配信装置20から配信された動画は、ディスプレイ14に表示される。
センサユニット15は、動画再生装置10のユーザの姿勢を検出する一又は複数のセンシングデバイスを備える。このセンシングデバイスには、RGBカメラ、深度センサ、及びこれら以外のユーザの姿勢を検出可能なデバイスが含まれてもよい。センサユニット15は、コンピュータプロセッサを含んでもよい。センサユニット15のコンピュータプロセッサは、センシングデバイスによって取得されたデータを解析することで、ユーザの姿勢を表す3次元骨格データを生成してもよい。センサユニット15に備えられるコンピュータプロセッサは、専用ソフトウェアを実行することで3次元骨格データを生成してもよい。センサユニット15により検出されるユーザの姿勢を表す3次元骨格データは、特許請求の範囲に記載されている「姿勢特徴量」の一例である。センサユニット15は、Microsoft Corporationが提供するkinect(商標)のようにLight Coding技術を用いて3次元骨格データを生成してもよい。つまり、センサユニット15は、赤外線のランダムパターンをユーザ等の対象に照射し、その画像を解析することによって対象の深度を取得し、当該深度を解析することで3次元骨格データを生成してもよい。Light Coding技術を用いて検出されるユーザの姿勢を表す特徴量は3次元骨格データには限られず、それ以外のユーザの姿勢を表す特徴量が用いられ得る。
3次元骨格データは、人体又は人体の一部を3次元骨格モデルで表現するためのデータである。3次元骨格モデルは、人体の骨の軸線に相当する複数のボーンと各ボーンを接続する複数の関節とによって、人体又は人体の一部の骨格をモデリングする。図2を参照して3次元骨格モデルについてさらに説明する。図2は、3次元骨格モデルの概念を説明するための説明図である。図2に示されている例では、3次元骨格モデル100は、8本のボーンと、これらのボーンを接続する関節と、を含む。3次元骨格モデルのボーンは、3次元座標上の2点を結ぶ線分として表される。よって、各ボーンは、3次元空間(XYZ空間)において各ボーンに相当する有効線分を表す3次元ベクトルV1〜V8で表現される。3次元骨格モデルを構成する3次元骨格モデルは、当該3次元モデルに含まれるボーンの各々を表す3次元ベクトルを含む。図2には、人体の上半身の3次元骨格モデルが示されているが、3次元骨格モデルは、人体の全部の骨格をモデリングしたものであってもよいし、人体の上半身以外の一部(例えば、腕、下半身など)をモデリングしたものであってもよい。また、図2の例では、人体の上半身を8本のボーンで表現しているが、人体の上半身は8本より多い数又は少ない数のボーンで表現されてもよい。より多い数のボーンを含む3次元骨格モデルは、指の骨を表すボーンを含んでもよい。これにより、指の動きを検出することもできる。
ストレージ13に記憶される情報について説明する。図示の実施形態においては、ストレージ13には、基準姿勢管理データ13a及びそれ以外の動画配信装置20が提供するサービスを利用するために必要な様々な情報が記憶される。一実施形態による動画配信システム1においては、予めユーザの基準姿勢が定められている。動画配信システム1においては、一つだけの基準姿勢が定められていてもよいし、複数の基準姿勢が定められていてもよい。この一又は複数の基準姿勢の各々は、ユーザの一連の動作を識別するために複数の姿勢のセットであってもよい。例えば、基準姿勢には、当該基準姿勢に対応付けられるユーザの一連の動作の開始時の姿勢を示す開始姿勢と、当該一連の動作において開始姿勢を取った後の特定の姿勢を示すトリガー姿勢とが含まれてもよい。開始姿勢及びトリガー姿勢の少なくとも一方は、複数であってもよい。
基準姿勢管理データ13aの例が図3に示されている。図3に示されている例では、基準姿勢に開始姿勢とトリガー姿勢とが含まれている。このため、ストレージ13においては、基準姿勢を識別する基準姿勢識別データと対応付けて、当該基準姿勢に含まれる開始姿勢を示す開始姿勢データ、及び、当該基準姿勢に含まれるトリガー姿勢を示すトリガー姿勢データと、が記憶され得る。
基準姿勢識別データは、例えば、基準姿勢を識別する基準姿勢IDである。基準姿勢IDは、例えば数ビットで表される識別コードである。基準姿勢IDのビット数は、動画配信システム1で使用される基準姿勢の数に応じて定めることができる。基準姿勢IDは、例えば、10ビット以下の情報量のデータで表される。基準姿勢IDは、5ビット以下、4ビット以下、3ビット以下、2ビット以下の情報量のデータで表されてもよい。したがって、基準姿勢識別データ(基準姿勢ID)は、3次元骨格データよりも大幅にデータ量が小さい。
開始姿勢データは、開始姿勢を示すデータである。開始姿勢データは、例えば、開始姿勢を示す3次元骨格データである。開始姿勢の例が図4aに示されている。図示の例における開始姿勢は、右拳が右肩と同じ高さになるように右の掌を前方に突き出している姿勢である。開始姿勢データは、この開始姿勢をモデリングした3次元骨格データであってもよい。開始姿勢データは、開始姿勢における各ボーンの位置及び向きを示す3次元ベクトルデータを含んでもよい。開始姿勢を示す3次元骨格データは、図4aに模式的に示されているように8本のボーンを含んでもよい。この8本のボーンを表すベクトルT1〜T8は、センサユニット15の検出データに基づいて生成される視聴ユーザの3次元骨格データに含まれるボーンのベクトルV1〜V8とそれぞれ対応している。姿勢特徴量として3次元骨格データ以外のデータが用いられる場合には、開始姿勢データは、その使用される姿勢特徴量のうち開始姿勢を表すデータである。
トリガー姿勢データは、トリガー姿勢を示すデータである。トリガー姿勢データは、例えば、トリガー姿勢を示す3次元骨格データである。トリガー姿勢の例が図4bに示されている。図示の例におけるトリガー姿勢は、右腕を前方斜め上に突き上げた姿勢である。トリガー姿勢データは、このトリガー姿勢をモデリングした3次元骨格データであってもよい。トリガー姿勢を示す3次元骨格データは、各ボーンの位置及び向きを示す3次元ベクトルデータを含んでもよい。トリガー姿勢を示す3次元骨格データは、図4bに模式的に示されているように8本のボーンを含んでもよい。この8本のボーンのベクトルT1〜T8は、センサユニット15の検出データに基づいて生成される視聴ユーザの3次元骨格データに含まれるボーンのベクトルV1〜V8とそれぞれ対応している。姿勢特徴量として3次元骨格データ以外のデータが用いられる場合には、トリガー姿勢データは、その使用される姿勢特徴量のうちトリガー姿勢を表すデータである。
次に、動画配信装置20について説明する。動画配信装置20は、例えば、動画再生装置10にネットワーク50の下り回線を介して動画を配信する動画配信サーバである。動画配信装置20は、コンピュータプロセッサ21、通信I/F22、及び各種情報を記憶するストレージ23、を備える。動画配信装置20は、集音マイク等の前記以外の構成要素を備えてもよい。
コンピュータプロセッサ21は、ストレージ23又はそれ以外のストレージからオペレーティングシステムや様々な機能を実現する様々なプログラムをメモリにロードし、ロードしたプログラムに含まれる命令を実行する演算装置である。上述したコンピュータプロセッサ11についての説明は、可能な限りコンピュータプロセッサ21にも当てはまる。コンピュータプロセッサ21により実現される機能については後述する。
通信I/F22は、ハードウェア、ファームウェア、又はTCP/IPドライバやPPPドライバ等の通信用ソフトウェア又はこれらの組み合わせとして実装される。動画配信装置20は、通信I/F22を介して、他の装置とデータを送受信することができる。
ストレージ23は、コンピュータプロセッサ21によりアクセスされる記憶装置である。ストレージ23は、例えば、磁気ディスク、光ディスク、半導体メモリ、又はデータを記憶可能な前記以外の各種記憶装置である。ストレージ23には、様々なプログラムが記憶され得る。ストレージ23に記憶され得るプログラム及び各種データの少なくとも一部は、動画配信装置20とは物理的に別体のストレージ(例えば、ストレージ60)に格納されてもよい。
ストレージ23には、オブジェクトデータ23a、アバタデータ23b、アニメーション管理データ23c、及び前記以外の動画の生成及び配信のために必要な様々な情報が記憶され得る。
オブジェクトデータ23aは、動画を構成する仮想空間を構築するためのアセットデータを含んでもよい。オブジェクトデータ23aは、動画を構成する仮想空間の背景を描画するためのデータ、動画に表示される各種物体を描画するためのデータ、及びこれら以外の動画に表示される各種オブジェクトを描画するためのデータが含まれる。オブジェクトデータ23aには、仮想空間におけるオブジェクトの位置を示すオブジェクト位置情報を含んでもよい。オブジェクトデータ23aには、上記以外にも、動画再生装置10の視聴ユーザからの表示要求に基づいて動画に表示されるギフトオブジェクトを示すデータが含まれ得る。ギフトオブジェクトには、エフェクトオブジェクトと、通常オブジェクトと、装飾オブジェクトと、が含まれ得る。視聴ユーザは、所望のギフトオブジェクトを購入することができる。動画に表示されるギフトオブジェクトの詳細は、特許第6446154号の明細書に記載されている。本出願の動画配信システム1においても、特許第第6446154号の明細書における記載と同様にギフトオブジェクトを動画中に表示することができる。
アバタデータ23bの例が図5に示されている。図5に示すように、アバタデータ23bは、動画配信システム1で視聴ユーザによって利用されるアバタのアバタ識別情報と、当該アバタを動画内に表示するためのアバタ表示情報と、を含むことができる。言い換えると、ストレージ23には、アバタのアバタ識別情報と対応付けて、当該アバタを表示するためのアバタ表示情報が記憶され得る。アバタ識別情報は、例えば、アバタを識別するアバタIDである。動画再生装置10のユーザは、動画配信システム1において自らのアバタを設定することができる。ユーザごとにアバタを管理するために、アバタIDは、ユーザを識別するユーザIDと対応付けてストレージ23に記憶されてもよい。アバタは、例えば、人間や動物を模した画像として動画内に表示される。アバタ表示情報は、アバタを動画内に表示するために用いられる情報である。アバタ情報には、例えば、頭部、ヘアスタイル、顔のパーツ(目、鼻、口など)、胴部、服、アクセサリ、アイテム、及びこれら以外のアバタを構成するパーツの画像を示すパーツ情報又はそれ以外のアバタの外観を特定するためのスキン情報が含まれる。ユーザは、好みのパーツ画像を選択することで自らのアバタを登録することができる。アバタ表示情報には、動画にアバタを2D表示するための2D表示情報と、動画にアバタを3D表示するための3D表示情報とが含まれてもよい。3D表示情報には、アバタを動画内で立体的に表示するためのパーツの画像を示すパーツ情報、アバタの3次元での動きを表現するためのボーンデータ、及びこれら以外のアバタを立体的に表示するために用いられている公知の情報を含む。
上述したとおり、動画配信装置20から配信される動画には、動画再生装置10のユーザのアバタのアニメーションが含まれてもよい。あるユーザのアバタのアニメーションは、後述するように、当該ユーザの姿勢を示す姿勢特徴量に基づいて、当該ユーザの姿勢や動きをリアルタイムで反映するように生成されてもよい。
アバタのアニメーションとして、予め登録されている登録アニメーションを採用してもよい。登録アニメーションは、視聴ユーザの動きに追従するように動画の配信中にリアルタイムに生成されるのではなく、動画の配信前又はアバタのアニメーションの表示が必要になる前に予め登録又は定義されているアニメーションである。登録アニメーションを管理するためのアニメーション管理データ23cの例が図6に示されている。図示のように、アニメーション管理データ23cは、基準姿勢識別データと、登録アニメーションを識別する登録アニメーション識別データ(登録アニメーションID)と、アバタのアニメーションを特定するためのアニメーション定義データと、を有する。ストレージ23においては、基準姿勢識別データと対応付けて、登録アニメーション識別データ、及び、アニメーション定義データが記憶されている。基準姿勢識別データは、既述のとおり基準姿勢IDであってもよい。動画配信システム1において複数の基準姿勢IDが用いられている場合には、その基準姿勢IDの数に応じて複数の登録アニメーションが登録されていてもよい。この複数の登録アニメーションから選択された一つの登録アニメーションが動画に含められ得る。アニメーション定義データは、アバタのボーンの位置及び向きを示すボーンデータを時系列的に記述するデータであってもよい。
登録アニメーションは、視聴ユーザからの要求に基づいて生成されてもよい。以下、説明の便宜のために、視聴ユーザからの要求に基づいて登録される登録アニメーションを「ユーザアニメーション」と呼ぶ。動画再生装置10は、視聴ユーザからユーザアニメーションの登録要求がなされると、当該視聴ユーザに対して登録を希望するアニメーションに対応する動きを行うように促すことができる。動画再生装置10は、この基準姿勢を表す画像の表示に応答して視聴ユーザが取った姿勢の姿勢特徴量(例えば、3次元骨格データ)を所定時間に亘って取得する。この姿勢特徴量の取得は、姿勢データ取得部11b又はセンサユニット15により所定のサンプリング時間間隔で行われる。このようにして、視聴ユーザが登録を希望するアニメーションに対応する動きを示すアニメーション定義データが得られる。このアニメーション定義データは、アニメーション管理データ23cとして記憶されている登録アニメーションのアニメーション定義データと同じデータ形式を有していてもよい。動画再生装置10は、このようにして取得されたユーザアニメーションを定義するアニメーション定義データを動画配信装置20に送信し、このユーザアニメーションを新たな登録アニメーションとして動画配信装置20に登録する。
動画配信装置20は、ユーザアニメーションを定義するアニメーション定義データを受信すると、当該ユーザアニメーションをアニメーション管理データ23cの一部としてストレージ23に記憶する。具体的には、動画配信装置20は、登録が要求されているユーザアニメーションを識別する登録アニメーションIDを発行し、当該登録アニメーションIDと対応付けて動画再生装置10から受信したアニメーション定義データを記憶する。また、動画配信装置20は、登録が要求されているユーザアニメーションを動画に含めるためのトリガーとなる基準姿勢を決定するよう動画再生装置10に要求する。
動画再生装置10は、動画配信装置20からの要求に応じて、自らのアバタに新規に登録したユーザアニメーションに従った動きを行わせるためのトリガーとなる基準姿勢を決定する。本明細書では、新規に登録したユーザアニメーションに従ってアバタを動かすためのトリガーとなる基準姿勢を追加基準姿勢と呼ぶことがある。追加基準姿勢は、様々な手法で定められる。例えば、新規に登録したユーザアニメーションを含むサンプル動画を生成し、当該ユーザアニメーションの登録要求を行った視聴ユーザに対し、このサンプル動画に含まれる複数のフレームの中から一又は複数の候補フレームを選択させ、その選択されたフレームに含まれているアバタの画像に基づいて追加基準姿勢を決定することができる。当該視聴ユーザは、複数のフレームの中から好みのフレームを選択することができる。当該視聴ユーザは、例えば、記憶に残りやすい姿勢を取っているアバタが含まれているフレーム、特徴的な姿勢を取っているアバタが含まれているフレーム、又はこれら以外のフレームを選択することができる。当該複数のフレームの中から2つのフレームが選択された場合、その2つのフレームのうち時系列的に前にあるフレームに含まれているアバタの姿勢を開始姿勢として決定し、時系列的に後にあるフレームに含まれているアバタの姿勢をトリガー姿勢として決定してもよい。
追加基準姿勢を決定する他の方法について説明する。動画再生装置10は、ユーザアニメーションの登録要求を行った視聴ユーザに対して、当該ユーザアニメーションに対応する動きを複数回行うように指示する。この指示は、音声又は画面表示により行われ得る。動画再生装置10は、この指示に対応して視聴ユーザが行った動きに対応する姿勢特徴量(例えば、3次元骨格データ)を取得する。具体的には、所定の計測期間において、所定のサンプリング間隔で、ユーザアニメーションに対応して動いている視聴ユーザの姿勢を表す3次元骨格データを取得する。これにより、計測開始から計測終了までの間ユーザアニメーションに対応する動きを行った視聴ユーザの姿勢を時系列で表す3次元骨格データのセットが2組得られる。次にこの2組の3次元骨格データのセットのうち測定開始後に同タイミングで取得された3次元骨格データ同士を比較し、この比較結果に基づいて追加基準姿勢を決定する。例えば、2組の3次元骨格データのセットのうち測定開始後に同タイミングで取得された3次元骨格データの対応するボーンのベクトルが為す角度の合計値を算出し、この角度の合計値が最も小さい3次元骨格データに対応する姿勢(2組の骨格データのうちいずれを採用しても構わない。)を追加基準姿勢とすることができる。
次に、動画再生装置10の機能について説明する。動画再生装置10の機能は、コンピュータプロセッサ11がプログラムに含まれるコンピュータ読み取り可能な命令を実行することにより実現される。コンピュータプロセッサ11は、プログラムに含まれるコンピュータ読み取り可能な命令を実行することにより、動画再生部11a、姿勢データ取得部11b、送信部11c、分類部11d、及び遅延監視部11eとして機能する。コンピュータプロセッサ11により実現される機能の少なくとも一部は、コンピュータプロセッサ11以外のコンピュータプロセッサにより実現されてもよい。コンピュータプロセッサ11により実現される機能の少なくとも一部は、動画配信装置20のコンピュータプロセッサ21又はそれ以外の動画配信システム1に備えられたコンピュータプロセッサにより実現されてもよい。
動画再生部11aは、動画配信装置20から配信された動画を再生する。再生された動画は、ディスプレイ14に表示される。
姿勢データ取得部11bは、動画再生装置10を使用して動画を視聴するユーザ(「視聴ユーザ」ということもある。)の姿勢の特徴を表す姿勢特徴量を取得する。視聴ユーザの姿勢の特徴を表す姿勢特徴量は、当該視聴ユーザの姿勢を表す3次元骨格データ、つまり視聴ユーザのボーンの位置及び向きを示す3次元ベクトルデータであってもよい。姿勢データ取得部11bは、例えば、センサユニット15が検出した検出データに基づいて視聴ユーザの3次元骨格データを生成する。視聴ユーザの3次元骨格データは、所定のサンプリング時間間隔ごとに生成されてもよい。センサユニット15がプロセッサを備えており、そのセンサユニット15のプロセッサにより3次元骨格データが生成される場合には、姿勢データ取得部11bはプロセッサ11の機能として実行されなくともよい。
姿勢データ取得部11bにより取得される姿勢特徴量は、3次元骨格データ以外の特徴量であってもよい。例えば、上述したように、Light Coding技術を用いて赤外線のランダムパターンをユーザ等の対象に照射し、その画像を解析することによって対象の深度を取得し、当該深度を姿勢特徴量としてもよい。センサユニット15により検出される検出値及びこの検出値に基づいて算出される様々な値が姿勢特徴量として用いられ得る。
姿勢データ取得部11bは、動画再生装置10のユーザの動きを所定のフレームレートで撮像して得られる複数のフレームを含む撮像画像から次のようにして姿勢特徴量を求めても良い。具体的には、姿勢データ取得部11bは、当該撮像画像の各フレームにおいて当該ユーザに関連する複数の特徴点を抽出する。ユーザの姿勢や動きを表現するために適した位置が特徴点として抽出される。複数の特徴点を特徴点群ということもある。図7は、動画再生装置10により撮像された撮像画像を構成する複数のフレームの一つであるフレームf1を模式的に示している。図示のように、フレームf1には、撮像されたユーザの画像U1が含まれている。図7に示されているP1〜P6はそれぞれ抽出された特徴点を示す。特徴点の数及び位置は、図7に示されたものには限られない。例えば、動画再生装置10のユーザの体や顔に赤外線のレーザーによってランダムドットパターンを投影し、このランダムドットパターンが投影されたユーザを赤外線領域を撮影できるカメラで撮像する場合には、このランダムドット全体が特徴点群となる。
姿勢データ取得部11bは、抽出された複数の特徴点の各々について姿勢特徴量(画像ベクトル)を得ることができる。特徴点P1〜P6の各々における姿勢特徴量は、各特徴点の深度であってもよいし3次元座標であってもよい。姿勢特徴量として3次元座標が用いられる場合には、撮像画像内に3次元のワールド座標系が設定され、撮影画像及びワールド座標系を元にして正規化された相対量が姿勢特徴量とされる。正規化された姿勢特徴量は、例えば、0〜1.0の相対量で表される。フレームf1における各特徴点P1〜P6の姿勢特徴量は、フレームf1よりも時系列的に前の(例えば直前の)フレームにおいて得られた各特徴点P1〜P6の姿勢特徴量とフレームf1において得られた各特徴点P1〜P6の姿勢特徴量との差で表される変化量であってもよい。姿勢特徴量のフレーム間での変化量を別の姿勢特徴量として用いる場合に両者を区別する必要があるときには、あるフレームにおける姿勢特徴量を「フレーム内特徴量」と呼び、フレーム間での姿勢特徴量の変化量で表される姿勢特徴量を「フレーム間特徴量」と呼んでも良い。特に断らない限り、または、文脈上別に解される場合を除き、単に「姿勢特徴量」というときには「フレーム内特徴量」及び「フレーム間特徴量」の両方を含む。各特徴点P1〜P6の姿勢特徴量は、0〜1.0の範囲に正規化されてfloat配列として表現されてもよい。この場合、特徴点P1〜P6の各々における姿勢特徴量が当該配列の要素となる。
送信部11cは、姿勢データ取得部11b又はセンサユニット15により取得された視聴ユーザの姿勢を表す姿勢特徴量を動画配信装置20に送信する。送信部11cは、姿勢データ取得部11b又はセンサユニット15から姿勢特徴量を受け取ると即時に動画配信装置20に送信する。言い換えると、送信部11cは、視聴ユーザの姿勢特徴量をリアルタイムに動画配信装置20に送信することができる。上記のとおり、姿勢特徴量は、所定のサンプリング時間間隔又は所定のフレームレートで取得される。これにより、姿勢特徴量は、所定のサンプリング時間間隔ごと又はフレームレートごとに生成され得る。よって、所定の時間間隔に亘って連続して取得された視聴ユーザの姿勢特徴量は、当該視聴ユーザの体の動きを時系列的にデジタルデータとして表現することができる。視聴ユーザの姿勢を表す姿勢特徴量は、当該姿勢特徴量以外のデータとともに動画配信装置20に送信されてもよい。本明細書では、視聴ユーザの姿勢や表情を表すデータまたは視聴ユーザの姿勢や表情と相関のあるデータを当該視聴ユーザの「モーションデータ」と総称することがある。視聴ユーザのモーションデータは、動画再生装置10からネットワーク50を含む伝送路を介して動画配信装置20に送信される。モーションデータは、パケット送信されてもよい。つまり、送信部11cは、モーションデータを含むパケットを動画配信装置20に対して送信してもよい。
一実施形態における分類部11dは、視聴ユーザの姿勢を分類する分類器により、当該視聴ユーザの姿勢特徴量(例えば、3次元骨格データ)に基づいて、当該視聴ユーザの姿勢が予め定められた基準姿勢に属するか否かを判定する。この分類器は、例えば線形分類器である。基準姿勢が開始姿勢とトリガー姿勢とを含む場合には、分類部11dは、視聴ユーザの姿勢が当該基準姿勢に属するか否か及び当該トリガー姿勢に属するか否かをそれぞれ判定することができる。分類部11dは、時刻t1において視聴ユーザの姿勢が基準姿勢のうちの開始姿勢に属するか否かを判定した後、当該時刻t1におけるユーザの姿勢が開始姿勢に属すると判定された場合には、続いて時刻t1よりも後の時刻t2における視聴ユーザの姿勢がトリガー姿勢に属するか否かを判定してもよい。
一実施形態において、分類部11dは、教師データを得るために、基準姿勢を表す画像をディスプレイ14に表示し、この基準姿勢を表す画像に従った姿勢を取るように視聴ユーザに音声や画面表示を通じて指示することができる。動画再生装置10は、この指示に対応して視聴ユーザが行った動きの姿勢特徴量を姿勢データ取得部11b又はセンサユニット15により逐次取得する。分類部11dは、基準姿勢を表す画像に応答して視聴ユーザが取った姿勢の姿勢特徴量を教師データとして学習することにより分類器を作成することができる。
一実施形態における分類部11dは、例えば、姿勢データ取得部11b又はセンサユニット15からの姿勢特徴量が示す視聴ユーザの姿勢が予め定められた基準姿勢と合致するか否かを、当該姿勢特徴量を変数として評価関数に基づいて判定することができる。評価関数に基づいて視聴ユーザの姿勢が基準姿勢と合致すると判定された場合には、当該視聴ユーザの姿勢は、当該基準姿勢に属する。視聴ユーザの姿勢が開始姿勢と合致するか否かは、姿勢データ取得部11b又はセンサユニット15において生成された視聴ユーザの姿勢を表す姿勢特徴量と開始姿勢を表す姿勢特徴量(開始姿勢データ)とに基づいて判定され得る。姿勢特徴量が3次元骨格データである場合には、視聴ユーザの3次元骨格データに含まれる各ボーンのベクトルV1〜V8と開始姿勢データのうちベクトルV1〜V8に対応する各ボーンのベクトルT1〜T8とのなす角度の合計値が小さくなるほど、センサユニット15によって検出された視聴ユーザの姿勢と開始姿勢との類似度が高くなる。すなわち、視聴ユーザの姿勢を表す3次元骨格データに含まれる3次元ベクトルと基準姿勢を表す3次元骨格モデルの対応するベクトルのなす角度θの大きさと姿勢の類似度との間に負の相関関係がある。よって、この点に着目し、2つの3次元骨格モデルによって定義される角度θの大きさを正規化するための新規な評価関数fを定義する。下記式(1)に評価関数fの一例を示す。
上記式において、(Ti・Vi)は、対応するベクトルの内積を示し、(‖Ti‖‖Vi‖)は、各ベクトルの大きさの積を示し、kは、3次元骨格モデルを構成するベクトルの要素数を示す。つまり、上記式(1)に示した評価関数fによれば、2つの3次元骨格モデルの対応するベクトルのなす角度θの余弦(=cosθ)の平均値が得られることになる。ここで、2つの3次元骨格モデルの対応するベクトルが完全一致する場合(角度θ=0)は、cosθ=1になり、2つの3次元骨格モデルの対応するベクトルの方向が逆向きになる場合(角度θ=180°)は、cosθ=−1になるので、評価関数fの値の取り得る範囲は、−1≦f≦+1となる。この場合、たとえば、評価関数fの値の範囲(−1≦f≦+1)を百分率の値(0〜100%)にリニアに割り当てれば、類似度を百分率で表現することができる。この所定の閾値は、例えば、90%とすることができる。2つの3次元骨格データ間の類似度の判定については、特開2013−37454号公報にも開示されている。
分類部11dは、上記のようにして算出した視聴ユーザの姿勢を表す姿勢特徴量と開始姿勢を表す姿勢特徴量との類似度が所定の閾値以上のときに、視聴ユーザの姿勢が開始姿勢に合致すると判定してもよい。
分類部11dは、姿勢データ取得部11b又はセンサユニット15において視聴ユーザの姿勢特徴量が取得される都度、当該姿勢特徴量が示す視聴ユーザの姿勢が開始姿勢に属するか否かを判定してもよい。この場合、視聴ユーザの姿勢特徴量の取得のためのサンプリングレートと同じ頻度で視聴ユーザの姿勢が開始姿勢に合致するか否かの判定が行われる。
視聴ユーザの姿勢とトリガー姿勢とが合致するか否かも同様にして判定され得る。すなわち、分類部11dは、時刻t2における視聴ユーザの姿勢を表す姿勢特徴量とトリガー姿勢を表す姿勢特徴量との類似度を算出し、この類似度が所定の閾値以上のときに、視聴ユーザの姿勢がトリガー姿勢に合致すると判定してもよい。視聴ユーザの姿勢が開始姿勢に合致するか否かを判定するための上記の説明は、視聴ユーザの姿勢がトリガー姿勢に合致するか否かを判定するための処理にも可能な限り当てはまる。
遅延監視部11eは、送信部11cによって動画再生装置10から動画配信装置20に送信されたモーションデータの伝送遅延を監視する。例えば、遅延監視部11eは、モーションデータを含む実パケットに送信前にタイムスタンプを付加し、この送信時に付加されたタイプスタンプと、この実パケットが動画配信装置20で受信されたときに付加されるタイムスタンプと、を用いて動画再生装置10と動画配信装置20との間の伝送路における当該実パケットの伝送時間を求めることができる。遅延監視部11eは、この伝送時間が所定の基準時間以上となったとき又は当該基準時間よりも長いときに当該伝送路において遅延が発生していると判定することができる。遅延監視部11eは、伝送路において一旦遅延が発生していると判定した後に、伝送時間が所定の基準時間よりも短くなったとき又は当該所定の基準時間以下となったときに遅延が解消したと判定することができる。動画配信装置20がサーバであり、動画再生装置10がクライアントである場合には、動画再生装置10から動画配信装置20へのデータの伝送は上り回線を使用して行われる。この場合、遅延監視部11eは、動画再生装置10と動画配信装置20との間の伝送路の上り回線に遅延が発生しているか否かを監視する。遅延監視部11eは、上記のように実パケットの伝送時間を測定してもよいし、モーションデータを含まない疑似パケットを用いて伝送時間を測定してもよい。ある視聴ユーザの動画再生装置10から送信されたモーションデータの伝送に遅延が発生している間に、他の視聴ユーザの動画再生装置10から送信されたモーションデータの伝送には遅延が発生していないと判定されることも有り得る。よって、伝送路における遅延は、視聴ユーザごとに判定されてもよい。また、伝送遅延の発生の有無は、パケットに含まれるタイムスタンプに基づいて動画配信装置20において判定されてもよい。動画再生装置10は、動画配信装置20における伝送遅延の判定結果を受け取っても良い。
再び送信部11cの機能について説明する。送信部11cは、遅延監視部11eにおいて伝送路に遅延が発生していると判定された場合に、ストレージ13に記憶されている基準姿勢識別データ(基準姿勢ID)を送信することができる。基準姿勢識別データは、視聴ユーザの姿勢特徴量を含むモーションデータに代えて送信されてもよい。上記のとおり、基準姿勢識別データは、開始姿勢データ及びトリガー姿勢データを含み得る。送信部11cは、基準姿勢識別データとして、トリガー姿勢データを送信することができる。一実施形態において、分類部11dによって視聴ユーザの姿勢がトリガー姿勢に属すると判定された場合、送信部11cは、モーションデータの伝送に遅延が発生している間、基準姿勢識別データとしてトリガー姿勢を識別する基準姿勢IDを動画配信装置20に送信する。送信部11cは、分類部11dによって視聴ユーザの姿勢が開始姿勢に属すると判定された後の所定インターバル内に当該視聴ユーザの姿勢がトリガー姿勢に属すると判定された場合、送信部11cは、モーションデータの伝送に遅延が発生している間、トリガー姿勢を識別する基準姿勢IDを動画配信装置20に送信する。視聴ユーザの姿勢が開始姿勢に属すると判定された後の視聴ユーザの姿勢がトリガー姿勢にも属すると判定された場合に基準姿勢IDを送信することにより、開始姿勢又はトリガー姿勢の一方のみに属すると判定されたことに応じて基準姿勢IDを送信する場合と比べて、視聴ユーザが意図せずに基準姿勢IDを送信してしまうことを防止又は抑制できる。「モーションデータの伝送に遅延が発生している間」とは、遅延監視部11eにおいて伝送路に遅延が発生していると判定されてから遅延が解消したと判定されるまでの期間を意味してもよい。送信部11cは、開始姿勢を識別する基準姿勢IDを動画配信装置20に送信しなくともよい。
次に、コンピュータプロセッサ21により実現される機能についてより具体的に説明する。コンピュータプロセッサ21は、配信プログラムに含まれるコンピュータ読み取り可能な命令を実行することにより、動画生成部21a、動画配信部21b、及びアニメーション生成部21c、として機能する。コンピュータプロセッサ21により実現される機能の少なくとも一部は、動画配信システム1のコンピュータプロセッサ21以外のコンピュータプロセッサにより実現されてもよい。コンピュータプロセッサ21により実現される機能の少なくとも一部は、例えば、動画再生装置10のコンピュータプロセッサ11又はそれ以外の動画配信システム1に備えられたコンピュータプロセッサにより実現されてもよい。
動画配信装置20は、様々な種類の動画を配信することができる。以下では、動画配信装置20がアクターの動きに基づいて生成されるキャラクタオブジェクトのアニメーションを含む動画を配信することを想定する。
動画生成部21aは、アクターに装着されたモーションセンサによって当該アクターの動きを検出する。動画生成部21aは、モーションセンサによって検出されたアクターの体の動きに同期して動くキャラクタのアニメーションを生成することができる。動画生成部21aは、アクターの顔の動きのデジタル表現であるフェイスモーションデータを取得してもよい。この場合、動画生成部21aは、アクターの顔の動きに同期して表情が変わるキャラクタのアニメーションを生成することができる。動画生成部21aは、オブジェクトデータ23aを用いて仮想空間を構築し、この仮想空間と、アクターに対応するキャラクタのアニメーションと、を含む動画を生成することができる。動画生成部21aは、生成した動画にマイクから取得したアクターの音声を合成することができる。アクターの体や表情の動きに同期して動くキャラクタのアニメーションを含む動画の生成については、特許第644615号の明細書に詳細に開示されている。
動画生成部21aは、動画を視聴している視聴ユーザから当該動画へアバタを参加させるための参加要求を受け付けると、当該視聴ユーザのアバタを含むように動画を生成することができる。視聴ユーザからの参加要求には、当該視聴ユーザを特定するユーザIDが含まれていてもよい。動画生成部21aは、参加要求に含まれているユーザIDに基づいて当該視聴ユーザのアバタを識別するアバタIDを特定し、ストレージ23において当該アバタIDに対応付けて記憶されているパーツ情報に基づいて当該視聴ユーザのアバタを表すアバタオブジェクトを生成することができる。
動画配信部21bは、動画生成部21aにおいて生成された動画を配信する。この動画は、ネットワーク50を介して動画再生装置10に配信される。受信された動画は、動画再生装置10において再生される。
動画配信装置20から動画再生装置10aに配信され、この動画再生装置10において再生されている動画の表示例が図9aに示されている。動画再生装置10において再生される動画は、ディスプレイ14に表示され得る。図示のように、動画再生装置10において表示されている動画60は、アクターのキャラクタを表すキャラクタオブジェクト51と、キャラクタオブジェクト51が立つフロアオブジェクト54aと、ステージの後端を画定するスクリーンオブジェクト54bと、動画60を視聴している視聴ユーザのアバタを示すアバタオブジェクト56a〜56jと、を含んでいる。キャラクタオブジェクト51は、アクターの体の動きに同期して仮想空間で動くことができる。動画60は、動画配信装置20から多数の動画再生装置10に配信されるため、画像60は、多数のアバタを含んでいる。図9aにおいては、10人の視聴ユーザがアバタを介して動画に参加していることが想定されている。動画に参加可能な視聴ユーザの数は、10より多くともよいし、10より少なくともよい。
ディスプレイ14には、動画60に重複するように、ユーザの操作を受け付けるための操作ボタンが表示されてもよい。図9aに示されている例では、ギフティングを行うためのギフトボタン61と、評価を提供するための評価ボタン62と、アバタによる動画60への参加を申請するためのアバタ参加ボタン63と、が動画60に重畳表示されている。ギフトボタン61、評価ボタン62、及びアバタ参加ボタン63は、視聴ユーザによって選択可能に表示されている。動画60には、これら以外の操作ボタンが表示されてもよい。動画60を視聴している視聴ユーザは、ギフトボタン61の選択により、動画60を配信している配信者や動画60にキャラクタ51を介して出演しているアクターに対して所望のギフトを贈ることができる。視聴ユーザは、評価ボタン62の選択により、動画60への肯定的な評価がなされたことを示す評価情報を動画配信装置20に送信することができる。様々な視聴ユーザからの評価情報を集計し、その集計結果が動画60とともに表示されてもよい。視聴ユーザは、アバタ参加ボタン63の選択により、自らのアバタを動画60に参加させることを要求する参加要求を動画配信装置20に送信することができる。
アニメーション生成部21cは、動画60に参加している視聴者のアバタのアニメーションを生成する。一実施形態において、アニメーション生成部21cは、動画再生装置10から受信した視聴ユーザの姿勢特徴量に基づいて、当該視聴ユーザのアバタのアニメーションを生成する。時間的に連続して受信される姿勢特徴量(例えば、3次元骨格データ)は、視聴ユーザの体の動きを時系列的に表現する。よって、アニメーション生成部21cは、動画再生装置10から視聴ユーザの姿勢特徴量を連続して受信することで、当該姿勢特徴量に基づいて、当該視聴ユーザの体の動きに同期して動くアバタのアニメーションを生成することができる。動画生成部21aは、アニメーション生成部21cによってアバタのアニメーションが生成されると、当該アバタのアニメーションを含むように動画60を生成する。
動画再生装置10から動画配信装置20への上り回線の伝送路で伝送遅延が発生すると、動画配信装置20は、視聴ユーザの姿勢特徴量を時間的に連続して受信することができなくなることがある。動画再生装置10から送信される視聴ユーザの姿勢特徴量のみに基づいてアバタのアニメーションを作成しようとすると、伝送路において伝送遅延が発生した場合、視聴ユーザの動きを反映して動くアバタのアニメーションを生成することができなくなってしまうおそれがある。これに対し、一実施形態におけるアニメーション生成部21cは、視聴ユーザの姿勢特徴量のみに依存せず、動画再生装置10からの基準姿勢識別データ(例えば、基準姿勢ID)に基づいてアバタのアニメーションを生成することができる。具体的には、アニメーション生成部21cは、動画再生装置10から基準姿勢識別データを受信すると、アニメーション管理データ23cを参照することで受信した基準姿勢識別データに対応付けられている登録アニメーションを特定することができ、この特定された登録アニメーションの登録アニメーションIDに対応付けられているアニメーション定義データに基づいてアバタのアニメーションを生成することができる。既述のとおり、基準姿勢識別データは、動画再生装置10の遅延監視部11eによって姿勢特徴量を含むモーションデータの上り回線での伝送に遅延があると判定された場合に、動画再生装置10から動画配信装置20へ送信される。よって、アニメーション生成部21cは、モーションデータの伝送に遅延が発生している間に姿勢特徴量が受信できなかったとしても、その遅延が発生している間に動画再生装置10から送られてくる基準姿勢識別データに基づいてアバタのアニメーションを生成することができる。
アバタのアニメーションの生成について説明する。視聴ユーザの姿勢特徴量(例えば、3次元骨格データ)に基づいて生成されるアバタのアニメーションは、視聴ユーザの動きを反映したアバタの動きを表現するものである。例えば、視聴ユーザが右手を腰に当てた位置から斜め上方に向かって持ち上げる動作を行ったと想定する。この場合、視聴ユーザの姿勢特徴量に基づいて当該視聴ユーザのアバタのアニメーションを生成する。このアニメーションを動画に含めることにより、アバタは、当該動画内で、視聴ユーザの動きと同様に右手(アバタの右手に相当するパーツ)を腰に当てた位置から斜め上方に向かって持ち上げる動作を行う。
他方、伝送路において遅延が発生している場合には、姿勢特徴量に基づくアバタのアニメーションの生成は中断されてもよい。例えば、伝送路において遅延が発生している場合には、送信部11cによる姿勢特徴量の送信を中断してもよく、これに応じてアニメーション生成部21cにおける姿勢特徴量に基づくアバタのアニメーションの生成も中断されてもよい。上記のように、動画配信装置20は、動画再生装置10から受信するパケットに含まれるタイムスタンプに基づいて遅延の有無を判定することができる。伝送路に遅延が発生しているときには、動画配信装置20においてデータ量が大きい姿勢特徴量を適時に受信することは困難となる。かかる場合にも姿勢特徴量に基づくアバタのアニメーションを継続すると、動画内におけるアバタの動きが不自然になってしまうおそれがある。このようなアバタの不自然な動きは、配信される動画のクオリティを劣化させるため望ましくない。伝送路において遅延が発生している場合に、姿勢特徴量に基づくアバタのアニメーションの生成を中断することにより、アバタが不自然な動きを行わないようにすることができる。姿勢特徴量に基づくアバタのアニメーションの生成を中断しても、アニメーション生成部21cは、動画再生装置10からの基準姿勢識別データに基づいてアバタの登録アニメーションIDを特定し、この特定された登録アニメーションIDに対応付けられているアニメーション定義データに基づいてアバタのアニメーションを生成することができる。伝送路において遅延が発生している間に、視聴ユーザが基準姿勢と合致する姿勢を取らなかった場合には、動画配信装置20は、基準姿勢識別データを受信しない。この場合には、アニメーション生成部21cは、当該視聴ユーザのアバタのアニメーションを生成しなくともよい。アニメーション生成部21cがアバタのアニメーションを生成しない場合には、当該アバタは動画内で静止している。別の実施形態において、伝送路において遅延が発生している間に動画配信装置20が基準姿勢識別データを受信しない場合には、アバタについて定められている基本動作に従った動きを行うように当該アバタのアニメーションを作成してもよい。アバタの基本動作とは、例えば、手を上下に揺らす、手を左右に揺らす、飛び跳ねるなどの予め定められた動作を指す。この基本動作は、複数の視聴ユーザに共通に設定されていてもよい。アバタの基本動作は、動画再生装置10からのアバタの動きに関する情報(3次元骨格データや基準姿勢識別データ)を受信しなくてもアバタによって行われ得る点で、アニメーション生成部21cにおいて生成されるアニメーションとは異なっている。
アニメーション生成部21cによってアバタのアニメーションが生成されると、動画生成部21aによって当該アニメーションを含む動画が生成され、このアバタのアニメーションを含む動画が動画配信部21bによって動画再生装置10に配信される。図9aに示されている動画60にアバタオブジェクト56aのアニメーションが含まれる場合には、アバタオブジェクト56aのアニメーションを含む動画60が表示される。例えば、アバタオブジェクト56aが右手を挙げるアニメーションが生成された場合には、図9bに示されているように、動画60内においてアバタオブジェクト56aが右手を挙げる動きを行う。
上記のように、動画配信装置20は、登録が要求されているユーザアニメーションを動画に含めるためのトリガーとなる追加基準姿勢を決定するよう動画再生装置10に要求してもよい。追加基準姿勢の決定方法の一部の態様については既述のとおりであるが、図8をさらに参照して追加基準姿勢を決定する別の態様について説明する。以下の例では、ユーザの画像の特徴点を抽出し、その特徴点における姿勢特徴量の二乗平均平方根を利用して追加基準姿勢が決定される。まず、動画再生装置10は、ユーザアニメーションとして登録したい動きを行うようにユーザに指示し、当該指示に基づいて登録したい動きを行っているユーザを所定のフレームレートで撮像することにより複数のフレームを含む撮像画像を得る。動画再生装置10は、抽出された複数の特徴点の各々について姿勢特徴量を得る。ユーザを撮像した撮像画像の複数のフレームの各々における特徴点の抽出については、図7を参照して既に説明したので、繰り返しの説明は行わない。
図8は、第0フレームから第23フレームまでの24フレームの各々における姿勢特徴量を含む表を示している。図8の表においては、特徴点P1〜P6の各々の姿勢特徴量が、「P1」欄〜「P6」欄にそれぞれ示されている。この姿勢特徴量は、0〜1.0の範囲に正規化されている。動画再生装置10は、各特徴点P1〜P6の姿勢特徴量の二乗平均平方根(RMS)をフレームごとに算出する。N個の特徴点P1〜PNの各々における姿勢特徴量をxi(ただし、iは1〜Nの値をとる。)とすると、特徴点P1〜PNの姿勢特徴量のRMS(x)は以下の式で表される。
図8には、フレームごとに算出されたRMS(x)が記載されている。動画再生装置10は、RMS(x)以外に、各フレームについて、各特徴点における姿勢特徴量の平均値、及び、当該フレームのRMS(x)と前フレームのRMS(x)との差を示すRMS差を算出しても良い。動画再生装置10は、フレームごとに、RMS差の正負を示す正負フラグ、RMS差の正負が逆転したか否かを示す反転フラグを求めてもよい。例えば、第2フレームにおけるRMS差は、第2フレームにおけるRMS(x2)と第1フレームにおけるRMS(x1)との差である。正負フラグは、例えば、RMS差が正のときに「1」であり、RMS差が負のときに「0」となる。反転フラグは、例えば、RMS差の符号が逆転したときに「1」であり、RMS差の符号が逆転していない(つまり、全フレームと符号が同じ)にときに「0」となる。図8には、これらの平均値、RMS差、正負フラグ、及び反転フラグが含められている。図8においては、第4フレーム、第10フレーム、第16フレーム、第17フレーム、第19フレーム、及び第21フレームでその直前のフレームとRMS差の正負が逆転しているため、反転フラグに「1」が設定されている。第0フレームよりも先行するフレームは存在しないため、第0フレームについてはRMS差が空欄になっている。
反転フラグが「1」のフレームにおいては、前フレームからRMS差の符号が逆転しているから、当該フレームにおいてユーザが大きな動きを行ったと推定される。反転フラグによって検出可能な大きな動きは、例えば、手を振る、まばたきをするなど周期的な動作であることが多い。そこで、本発明の一実施形態においては、反転フラグの「1」に設定されているフレーム、すなわち姿勢特徴量のRMS差の符号が前フレームと逆転したフレームを開始フレームとし、この開始フレームからRMS差の符号が再び反転するまで(次に反転フラグが「1」になるまで)の区間について注目することが容易になる。この開始フレームにおけるユーザの姿勢を開始姿勢とすることができる。また、開始フレームの次に反転フラグが「1」に設定されているフレームをトリガーフレームとし、このトリガーフレームにおけるユーザの姿勢をトリガー姿勢とすることができる。このように、反転フラグが「1」になってから次に反転フラグが「1」になるまでの区間に着目してユーザの動作や姿勢を解析できる。図8に示されている例では、第4フレームにおいて反転フラグが初めて「1」になっており、第10フレームで反転フラグが2回目に「1」になっている。したがって、第4フレームにおけるユーザの姿勢を開始姿勢とし、第10フレームにおけるユーザの姿勢をトリガー姿勢とする周期性のある動作やそのトリガー姿勢の抽出を低い演算コストで可能にする。開始姿勢を示す開始姿勢データ及びトリガー姿勢を示すトリガー姿勢データは、二乗平均平方根誤差(RMSE:Root Mean Squared Error)や平均平方二乗誤差率(RMSPTE:Root Mean Squared Percentage Error)、または撮像画像から算出または推定することができる。
図8に示されている例では、第16フレームと第17フレームにおいていずれも反転フラグが「1」に設定されている。連続するフレーム間の時間間隔は極めて短いため、これらの隣接するフレームの各々におけるユーザの姿勢を開始姿勢及びトリガー姿勢とすることは適切でない可能性がある。そこで、開始フレームとトリガーフレームとの間に存在すべきフレーム数の下限である下限フレーム数が定められていてもよい。下限フレーム数は、例えば、通信パケットの圧縮、近隣フレームとの差分、及びこれら以外の要素を考慮して3フレーム以上としてもよい。開始フレームとトリガーフレームとの間の時間間隔の下限が定められても良い。開始フレームとトリガーフレームとの間の時間間隔の下限は、例えば、動作周波数、対象とするユーザの動作、及びこれら以外の要素を考慮して、1秒以上、2秒以上、3秒以上、4秒以上、5秒以上、又はこれら以外の下限としてもよい。仮に、下限フレーム数を3フレームとした場合、図8において第4フレームと第10フレームとの間には下限フレーム数を超える5フレームが存在しているから、第10フレームをトリガーフレームと扱うことができる。仮に第7フレームにおいて反転フラグが「1」に設定されたとすると、第4フレームと第7フレームとの間には下限フレーム数以下の2フレームしか存在していないから第7フレームをトリガーフレームとせずにその次に反転フラグが「1」になる第10フレームをトリガーフレームとすることができる。しかしながら、この第10フレームから次の対象フレームとなる16フレームまでのRMSPEは概ね1以下であるから、第10フレームを雑音と判定し、トリガーフレームとして処理しなくともよい。
以上のように、ユーザの特徴点における姿勢特徴量の二乗平均平方根を利用して追加基準姿勢(開始姿勢及びトリガー姿勢)を定めることにより、候補フレームやサンプル動画を提示しなくともユーザアニメーションの登録並びに当該ユーザアニメーションに対応する開始姿勢及びトリガー姿勢を決定することができる。
次に、図10を参照して、一態様による動画再生方法に含まれる処理の一部について説明する。図10は、一実施形態における動画再生方法における処理の一部の流れを示すフロー図である。図10の動画再生方法においては、視聴ユーザが動画再生装置10により動画を再生しており、当該動画に自らのアバタを参加させていることが想定されている。つまり、視聴ユーザが視聴している動画には自らのアバタが含まれている。図10に示されている処理は、動画の視聴中に行われる姿勢特徴量及び基準姿勢識別データの動画配信装置20への送信に関する。
まず、ステップS11において、動画を視聴している視聴ユーザの姿勢特徴量に関するデータが取得される。また、ステップS11では、取得された姿勢特徴量が即時に動画配信装置20に送信される。ステップS11においては、姿勢特徴量及び他のデータを含むモーションデータが動画配信装置20に送信されてもよい。視聴ユーザの姿勢特徴量は、当該視聴ユーザの姿勢を表す3次元骨格データであってもよい。姿勢特徴量は、所定のサンプリング時間間隔ごとに取得されてもよい。視聴ユーザの姿勢特徴量の取得は、例えば、上記の姿勢データ取得部11b又はセンサユニット15で行われる。姿勢特徴量の送信は、例えば、上記の送信部11cにより行われる。
次に、ステップS12において、ステップS11で取得された視聴ユーザの姿勢特徴量に基づいて、当該視聴ユーザの姿勢が予め定められた基準姿勢に属するか否かが判定される。この判定は、例えば、上記の分類部11dにより行われる。視聴ユーザの姿勢が基準姿勢に属しない場合には、処理はステップS11に戻り、ステップS11において姿勢特徴量の取得が引き続き行われる。視聴ユーザの姿勢が基準姿勢のいずれかに属すると判定された場合には、処理は、ステップS13に進む。
ステップS13では、動画再生装置10と動画配信装置20との間の伝送路においてモーションデータの送信に遅延が発生しているか否かが判定される。この判定は、例えば、上記の遅延監視部11eによって行われる。伝送路において遅延が発生していないと判定された場合には、処理はステップS11に戻り、ステップS11において姿勢特徴量の取得が引き続き行われる。伝送路において遅延が発生していると判定された場合には、処理はステップS14に進む。
ステップS14では、ステップS12において視聴ユーザの姿勢が属すると判定された基準姿勢を識別する基準姿勢識別データが動画配信装置20に送信される。基準姿勢識別データの送信は、例えば、上記の送信部11cにより行われる。ステップS12で視聴ユーザの姿勢が開始姿勢に属すると判定され、その後さらにトリガー姿勢に属すると判定された場合には、このトリガー姿勢を識別するトリガー姿勢データが送信される。
以上のステップS11〜ステップS14の各工程における処理と並行して、動画配信装置20から動画再生装置10に対して動画が継続して配信されている。動画の配信中には、ステップS11〜ステップS14の処理が繰り返し行われる。ステップS13において伝送路において遅延が発生していないと判定されている場合には、配信される動画には視聴ユーザの姿勢特徴量に基づいて生成されたアバタのアニメーションが含められる。逆に、ステップS13において伝送路において遅延が発生していると判定された場合には、配信される動画には動画配信装置20に送信された基準姿勢識別データに基づいて特定されるアバタの登録アニメーションが含められる。
ステップS13は、ステップS11の前又はステップS11とステップS12との間に実行されてもよい。これ以外にも、図10に示されている処理の順番は、適宜変更されてもよい。また、ステップS11〜ステップS14の処理に加えて、図10に明示的に記載されていない処理が行われてもよい。
次に、図11から図13を参照して、本発明の他の実施形態について説明する。図11には、本発明の他の実施形態による動画配信システム101のブロック図が示されている。動画配信システム101は、動画再生装置110及び動画配信装置120を備えている。動画配信システム101の動画再生装置110は、コンピュータプロセッサ11が顔特徴量取得部11fとして機能し、ストレージ13が基準表情管理データ13bを記憶している点で動画配信システム1の動画再生装置10と異なる。動画配信システム101の動画配信装置120は、ストレージ23が登録表情管理データ23dを記憶している点で動画配信システム1の動画配信装置20と異なっている。以下では、図11の実施形態において、図1の実施形態と異なる点を説明する。図11の実施形態において図1の実施形態と共通する事項については説明を省略する。
顔特徴量取得部11fは、動画再生装置110を使用して動画を視聴する視聴ユーザの顔の特徴を表す顔特徴量を取得する。具体的には、顔特徴量取得部11fは、センサユニット15により取得された視聴ユーザの顔を含む画像から、例えばHOG、SIFT、SURF、又はこれら以外の公知のアルゴリズムに従って顔の特徴を表す特徴量を算出する。例えば、SIFTにより算出される顔特徴量は、128次元の特徴量として算出される。このように、顔特徴量は、姿勢データ取得部11bで取得される姿勢特徴量と同様にデータ量が大きい。
図12は、基準表情管理データの例を示している。図12に示されているように、ストレージ13には、基準表情を識別する基準表情識別データと対応付けて、当該基準表情を示す基準表情識別データが記憶されている。基準表情識別データは、例えば、基準表情を識別する基準表情IDである。基準表情IDは、例えば数ビットで表される識別コードである。基準表情IDのビット数は、動画配信システム1で使用される基準表情の数に応じて定めることができる。基準表情IDは、例えば、10ビット以下の情報量のデータで表される。基準表情IDは、5ビット以下、4ビット以下、3ビット以下、2ビット以下の情報量のデータで表されてもよい。したがって、基準表情識別データ(基準表情ID)は、顔特徴量よりも大幅にデータ量が小さい。
基準表情識別データは、基準表情を示すデータである。動画配信システム1には、一又は複数の基準表情を設定し得る。基準表情は、例えば、正面を向いて目を大きく見開いた表情である。基準表情識別データは、基準表情を記述するデータであり、顔特徴量取得部11fにより算出される顔特徴量と同じデータ構造を有する。顔特徴量取得部11fにより算出される顔特徴量がSIFTアルゴリズムで算出されるSIFT特徴量である場合には、基準表情識別データは、基準表情をSIFT特徴量と同じデータ形式で記述したものである。
分類部11dは、視聴ユーザの表情を分類する分類器により、当該視聴ユーザの顔特徴量に基づいて、当該視聴ユーザの表情が予め定められた基準表情に属するか否かを判定する。一実施形態において、分類部11dは、教師データを得るために、基準表情を表す画像をディスプレイ14に表示し、この基準表情を表す画像に従った表情をする視聴ユーザに促すことができる。コンテンツ再生装置110は、この基準表情を表す画像の表示に応答して視聴ユーザが作った表情の顔特徴量を顔特徴量取得部11fにより取得する。分類部11dは、基準表情を表す画像に対して視聴ユーザが作った表情の表情特徴量を教師データとして学習することにより分類器を作成することができる。
送信部11cは、顔特徴量取得部11fにより取得された視聴ユーザの顔の特徴を表す顔特徴量を含むモーションデータを動画配信装置120に送信する。送信部11cは、遅延監視部11eにおいて伝送路においてモーションデータの伝送に遅延が発生していると判定された場合に、ストレージ13に記憶されている基準表情識別データ(基準表情ID)を動画配信装置120へ送信することができる。遅延監視部11eにおいて伝送路に遅延が発生していると判定された場合には、基準表情識別データは、顔特徴量に代えて動画配信装置120へ送信されてもよい。
動画配信装置20において、アニメーション生成部21cは、動画60に参加している視聴者のアバタのアニメーションを生成する。一実施形態において、アニメーション生成部21cは、動画再生装置110から受信した視聴ユーザの顔特徴量に基づいて、当該視聴ユーザのアバタのアニメーションを生成する。アニメーション生成部21cは、動画再生装置110から視聴ユーザの顔特徴量を連続して受信することで、当該顔特徴量に基づいて、当該視聴ユーザの顔の動き(表情の変化)に同期して表情を変化させるアバタのアニメーションを生成することができる。
一実施形態におけるアニメーション生成部21cは、登録表情管理データ23dを参照することにより、動画再生装置110からの基準表情識別データ(例えば、基準表情ID)に基づいて、表情の動きを含むアバタのアニメーションを生成することができる。図13に、図11の実施形態における登録表情管理データ23dの例が示されている。図13に示されているように、登録表情管理データ23dは、基準表情識別データ(登録表情ID)と、登録表情を識別する登録表情識別データ(登録表情ID)と、アバタの表情の動きを含むアニメーションを特定するためのアニメーション定義データと、を有する。このアニメーション定義データは、アバタの表情の動きを定義するデータである。登録表情管理データ23dに含まれるアニメーション定義データは、アバタの顔の特徴点の位置を時系列的に記述するデータであってもよい。アニメーション生成部21cは、動画再生装置110から基準表情識別データを受信すると、上記のアニメーション管理データ23dを参照することにより、受信した基準表情識別データに対応付けられている登録表情識別データを特定することができ、この特定された登録表情識別データに対応付けられているアニメーション定義データに基づいて表情の動きを含むアバタのアニメーションを生成することができる。
次に、図14を参照して、本発明の他の実施形態について説明する。図14には、本発明の他の実施形態による動画配信システム201のブロック図が示されている。概して言えば、図1に示されている動画配信システム1においては、視聴ユーザの姿勢を表す姿勢特徴量がリアルタイムで伝送されるのに対し、図14に示されている動画配信システム201においては、視聴ユーザが特徴のある動きを行った場合にのみ当該視聴ユーザの姿勢特徴量が伝送される点で両者は異なっている。動画配信システム201は、動画再生装置210及び動画配信装置220を備えている。動画配信システム201の動画再生装置210は、コンピュータプロセッサ11が判定部11g及び送信部11hとして機能する。動画再生装置210は基準表情管理データ13bを有していなくともよく、動画配信装置220はアニメーション管理データ23cを有していなくともよい。図14の実施形態において図1の実施形態と共通する事項については説明を省略する。
判定部11gは、動画再生装置210のユーザが特徴的な動きを行ったか否かを判定する。具体的には、姿勢データ取得部11bにおいて所定のフレームレートで動画再生装置210のユーザの特徴点の姿勢特徴量を算出し、判定部11gは、このフレームの姿勢特徴量のRMS差に基づいて当該ユーザが特徴的な動きを行ったか否かを判定する。フレームごとの姿勢特徴量の算出及びRMS差の算出については図8を参照して説明済である。一実施形態において、判定部11gは、RMS差の正負が逆転したフレームにおいてユーザが特徴的な動きを行ったと判定する。上記のように、あるフレームにおいてRMS差の符号が前フレームと逆転している場合には、当該フレームにおいてユーザが手を振る、大きくうなずくなどの往復動を伴う特徴的な動きを行ったと推定される。例えば、姿勢データ取得部11bにおいて図8に示す24フレーム分の姿勢特徴量が算出された場合には、反転フラグに「1」が設定されている第4フレーム、第10フレーム、第16フレーム、第17フレーム、第19フレーム、及び第21フレームにおいてユーザが特徴的な動きを行ったと判定される。
一実施形態において、判定部11gは、RMSPEが所定の閾値よりも大きいフレームにおいてユーザが大きな動きを行ったと判定する。この閾値は、例えば、1.0とすることができる。判定部11gが使用する閾値は、適宜変更可能である。図8の例においては、第4フレームから第7フレームにおいてRMSPEが閾値である1.0よりも大きくなっている。よって、判定部11gは、第4フレームから第8フレームにおいてユーザが大きな動きを行ったと判定することができる。
送信部11hは、判定部11gによってユーザが特徴的な動きを行ったと判定されたフレームを選択し、この選択されたフレームにおける姿勢特徴量を動画配信装置220に送信する。送信部11hにより選択されたフレームを「選択フレーム」と呼んでも良い。選択フレームは、判定部11gによってユーザが特徴的な動きを行ったと判定されたフレームだけであってもよいし、判定部11gによってユーザが特徴的な動きを行ったと判定されたフレーム及びそれに続く一又は複数のフレームであってもよい。このように、送信部11hは、選択フレームにおける姿勢特徴量を動画配信装置220に送信する一方、選択フレーム以外のフレームにおける姿勢特徴量を動画配信装置220に送信しないように構成される。
送信部11hによって送信された姿勢特徴量を受信した動画配信装置220において、アニメーション生成部21cは、受信した姿勢特徴量に基づいて、動画再生装置210のユーザのアバタのアニメーションを生成する。姿勢特徴量に基づくアバタのアニメーションの生成方法は、動画配信システム1における生成方法と同様である。動画配信システム201においては、動画再生装置210から動画配信装置220に対して姿勢特徴量が伝送されない期間がある。具体的には、選択フレーム以外のフレームにおいては姿勢特徴量は動画配信装置220に伝送されない。この姿勢特徴量が伝送されない期間において、アニメーション生成部21cは、アバタについて定められている基本動作に従った動きを行うように当該アバタのアニメーションを作成してもよい。アバタの基本動作は記述の通りであり、手を揺らす動作などの予め定められた動作である。
動画配信システム201においては、選択フレームにおいてのみ姿勢特徴量が動画再生装置210から動画配信装置220に伝送されるので、算出された姿勢特徴量をリアルタイムで伝送する態様よりも伝送されるデータ量を削減することができる。
次に、図15を参照して、本発明の他の実施形態について説明する。図15には、本発明の他の実施形態による動画配信システム301のブロック図が示されている。動画配信システム1においては、動画再生装置において姿勢特徴量などの動画生成に必要なデータに基づいて動画を生成する点で動画配信システム1と異なっている。具体的には、動画配信システム301は、姿勢データ取得装置310と、動画配信装置320と、動画再生装置330と、を備える。姿勢データ取得装置310と、動画配信装置320、及び動画再生装置330は、ネットワーク50を介して接続されている。動画配信システム301においては、姿勢データ取得装置310のユーザの動きに基づいて生成されるアバタのアニメーションを含む動画を動画再生装置320において生成し、この生成した動画を再生することが想定されている。つまり、姿勢データ取得装置310のユーザは、自らの動きに基づいて動くアバタを含む動画を、視聴ユーザによって使用される動画再生装置320において再生させることができる。姿勢データ取得装置310のユーザは、動画再生装置320のユーザとアバタを介して対話することができる。本実施形態に関して姿勢データ取得装置310のユーザを単に「配信ユーザ」と呼ぶことがある。図15には説明のため姿勢データ取得装置310、動画配信装置320、及び動画再生装置330が一つずつ図示されているが、動画配信システム301は、これらの装置を複数備えてもよい。
姿勢データ取得装置310は、姿勢データ取得装置310のユーザの姿勢の特徴を表す姿勢特徴量を取得する。視聴ユーザの姿勢の特徴を表す姿勢特徴量は、当該視聴ユーザの姿勢を表す3次元骨格データ、つまり視聴ユーザのボーンの位置及び向きを示す3次元ベクトルデータであってもよい。姿勢データ取得装置310は、既述のセンサユニット15を備えてもよい。姿勢データ取得装置310は、センサユニット15が検出した検出データに基づいて視聴ユーザの3次元骨格データを生成することができる。姿勢データ取得装置310は、取得された姿勢特徴量を動画配信装置320に送信する。姿勢データ取得装置310は、配信ユーザの音声を表す音声データを動画配信装置320に送信しても良い。
動画配信装置320は、既述の動画配信装置20と同様にコンピュータプロセッサ21と、通信I/F22と、ストレージ23と、を備える。動画配信装置320は、コンピュータプロセッサ21によって実現される機能及びストレージ23に格納されるデータの点で動画配信装置20と異なっている。そこで、以下では、動画配信装置320のコンピュータプロセッサ21において実現される機能及びストレージ23に格納されるデータについて説明する。
図示のように、動画配信システム301ストレージ23には、オブジェクトデータ23a、アバタデータ23b、基準姿勢管理データ323a、及び前記以外の動画の生成及び配信のために必要な様々な情報が記憶され得る。オブジェクトデータ23a及びアバタデータ23bは、動画配信システム1において記憶されるオブジェクトデータ23a及びアバタデータ23bと同じであってもよい。基準姿勢管理データ323aは、動画配信システム1における基準姿勢管理データ13aと同じものであってもよい。すなわち、基準姿勢管理データ323aは、図3に示されているように、基準姿勢を識別する基準姿勢識別データと、この基準姿勢識別データと対応付けて記憶される開始姿勢データ及びトリガー姿勢データを含むことができる。
コンピュータプロセッサ21は、コンピュータ読み取り可能な命令を実行することにより、姿勢特徴量取得部321a、送信部321b、分類部321c、及び遅延監視部321dとして機能する。コンピュータプロセッサ21により実現される機能の少なくとも一部は、動画配信システム301のコンピュータプロセッサ21以外のコンピュータプロセッサにより実現されてもよい。
姿勢特徴量取得部321aは、姿勢データ取得装置310から、姿勢データ取得装置310のユーザの姿勢を表す姿勢特徴量を取得する。
送信部321bは、姿勢データ取得装置310から取得された当該姿勢データ取得装置310のユーザの姿勢を表す姿勢特徴量を動画再生装置330に送信する。送信部321bは、姿勢データ取得装置310から姿勢特徴量を受け取ると即時に動画配信装置320に送信してもよい。言い換えると、送信部321bは、配信ユーザの姿勢特徴量をリアルタイムに動画配信装置320に送信することができる。送信部321bは、この姿勢特徴量を含むパケットを動画再生装置320に対して送信してもよい。送信部321bは、姿勢特徴量に加えて、動画再生装置330における動画の生成に必要なデータを動画再生装置330に送信することができる。例えば、送信部321bは、オブジェクトデータ23a及びアバタデータ23bの少なくとも一部を動画再生装置330に送信することができる。オブジェクトデータ23a及びアバタデータ23bは、送信部321bによって動画再生装置330に送信されるのではなく、動画再生装置330に予め記憶されていてもよい。この場合、動画配信装置320から動画再生装置330へのオブジェクトデータ23a及びアバタデータ23bの送信は不要となる。また、送信部321bは、動画配信装置320が生成データ取得装置310から取得した配信ユーザの音声を表す音声データを動画再生装置330に送信しても良い。
分類部321cは、配信ユーザの姿勢を分類する分類器により、当該視聴ユーザの姿勢特徴量(例えば、3次元骨格データ)に基づいて、当該視聴ユーザの姿勢が予め定められた基準姿勢に属するか否かを判定する。この分類器は、例えば線形分類器である。分類部321cは、動画配信システム1の分類部11dと概ね同じ機能を実現してもよい。例えば、分類部321cは、基準姿勢が開始姿勢とトリガー姿勢とを含む場合に、配信ユーザの姿勢が当該基準姿勢に属するか否か及び当該トリガー姿勢に属するか否かをそれぞれ判定することができる。
遅延監視部321dは、送信部321cによって動画配信装置320から動画再生装置330に送信されたモーションデータの伝送遅延を監視する。遅延監視部321dは、動画配信システム1の遅延監視部11eと概ね同じ機能を実現しても良い。例えば、遅延監視部321dは、モーションデータを含む実パケットに送信前にタイムスタンプを付加し、この送信時に付加されたタイプスタンプと、この実パケットが動画再生装置330で受信されたときに付加されるタイムスタンプと、を用いて動画配信装置320と動画再生装置330との間の伝送路における当該実パケットの伝送時間を求めることができる。伝送遅延の発生の有無は、パケットに含まれるタイムスタンプに基づいて動画再生装置330において判定されてもよい。動画再生装置320は、動画配信装置330における伝送遅延の判定結果を受け取っても良い。
再び送信部321bの機能について説明する。送信部321bは、遅延監視部321dにおいて伝送路に遅延が発生していると判定された場合に、ストレージ23に記憶されている基準姿勢識別データ(基準姿勢ID)を動画再生装置330に送信することができる。基準姿勢識別データは、視聴ユーザの姿勢特徴量を含むモーションデータに代えて送信されてもよい。上記のとおり、基準姿勢識別データは、開始姿勢データ及びトリガー姿勢データを含み得る。この伝送遅延が発生している場合に実行される送信部321bの機能は、伝送遅延が発生している場合に送信部11cによって実行される機能と同様である。
動画再生装置330は、既述の動画再生装置10と同様にコンピュータプロセッサ11と、通信I/F12と、ストレージ13と、を備える。動画再生装置330は、コンピュータプロセッサ11によって実現される機能及びストレージ23に格納されるデータの点で動画再生装置10と異なっている。そこで、以下では、動画再生装置330のコンピュータプロセッサ21において実現される機能及びストレージ23に格納されるデータについて説明する。
動画再生装置330のストレージ13には、アニメーション管理データ313aが記憶される。アニメーション管理データ313aは、動画配信システム1において記憶されるアニメーション管理データ13aと同じであってもよい。例えば、アニメーション管理データ313aは、図6に示されているように、基準姿勢識別データと、登録アニメーションを識別する登録アニメーション識別データ(登録アニメーションID)と、アバタのアニメーションを特定するためのアニメーション定義データと、を有する。
コンピュータプロセッサ11は、コンピュータ読み取り可能な命令を実行することにより、アニメーション生成部331a、動画生成部331b、及び動画再生部331cとして機能する。コンピュータプロセッサ11により実現される機能の少なくとも一部は、動画配信システム301のコンピュータプロセッサ11以外のコンピュータプロセッサにより実現されてもよい。
アニメーション生成部331aは、動画配信システム1のアニメーション生成部21cと概ね同じ機能を実現しても良い。例えば、アニメーション生成部331cは、姿勢データ取得装置310の配信ユーザのアバタのアニメーションを生成することができる。一実施形態において、アニメーション生成部331cは、動画配信装置320から受信した配信ユーザの姿勢特徴量及びアバタデータ23bに基づいて、当該配信ユーザのアバタのアニメーションを生成する。アニメーション生成部331cは、動画配信装置320から視聴ユーザの姿勢特徴量を連続して受信することで、当該姿勢特徴量に基づいて、当該視聴ユーザの体の動きに同期して動くアバタのアニメーションを生成することができる。
動画生成部331bは、動画配信装置320から取得したオブジェクトデータ23aを用いて仮想空間を構築し、この仮想空間内でアニメーション生成部331aにて生成されたアバタが動く動画を生成することができる。この動画には、配信ユーザの音声を合成することができる。
動画再生部331aは、動画生成部331bにおいて生成された動画を再生する。これにより、動画再生装置330のディスプレイ14に配信ユーザのアバタのアニメーションを含む動画が表示される。
動画配信装置320から動画再生装置330へデータを伝送する伝送路において伝送遅延が発生した場合におけるアニメーション生成部331aにより実現される処理について説明する。動画配信装置320から動画再生装置330への伝送路で伝送遅延が発生すると、配信ユーザの動きを反映して滑らかに動くアバタのアニメーションを生成することができなくなってしまうおそれがある。アニメーション生成部331aは、動画配信装置320からの基準姿勢識別データ(例えば、基準姿勢ID)に基づいてアバタのアニメーションを生成することができる。具体的には、アニメーション生成部331aは、動画再生装置10から基準姿勢識別データを受信すると、アニメーション管理データ313aを参照することで受信した基準姿勢識別データに対応付けられている登録アニメーションを特定することができ、この特定された登録アニメーションの登録アニメーションIDに対応付けられているアニメーション定義データに基づいてアバタのアニメーションを生成することができる。よって、アニメーション生成部331aは、モーションデータの伝送に遅延が発生している間に姿勢特徴量が受信できなかったとしても、その遅延が発生している間に動画配信装置320から送られてくる基準姿勢識別データに基づいてアバタのアニメーションを生成することができる。
一実施形態において、姿勢データ取得装置310が動画再生装置320の機能を実現可能に構成され、動画再生装置320が姿勢データ取得装置310の機能を実現可能に構成されてもよい。これにより、両装置のユーザ同士がアバタを介して双方向的にコミニュケーションできる。
次に、図16を参照して、上記の動画配信システムの変形例について説明する。上記の実施形態では、分類部11dによって視聴ユーザの姿勢が基準姿勢に属すると判定された場合に、姿勢特徴量に代えて基準姿勢を識別する基準姿勢IDを送信することで、ユーザの姿勢を表すデータのデータ量を少なくしている。図16に示す例では、基準姿勢IDに代えて、以下のようにして決定する特徴配列のインデックス(添字)を用いる。つまり、伝送遅延が発生しているときに、ユーザの姿勢を表す姿勢特徴量に代えて、特徴配列のインデックスが送信される。特徴配列のインデックスは、以下で説明するように数ビット程度のデータであり、基準姿勢IDと同様に10ビット以下の範囲の情報量で表すことができる。
動画配信システム1においては、特徴配列は、以下のようにして決定される。まず、図7及び図8を参照して説明したように、動画再生装置10は、所定のフレームレートで動画再生装置10のユーザを撮像して撮像画像を取得し、この撮像画像の各フレームにおいて当該ユーザに関連する複数の特徴点を抽出する。例えば、図7に示されているようにP1〜P6の6つの特徴点が抽出される。動画再生装置10は、抽出された複数の特徴点の各々についてユーザの動きに関する画像ベクトルを得る。特徴点P1〜P6の各々における画像ベクトルは、例えば、各特徴点における深度である。各特徴点P1〜P6の画像ベクトルは、0〜1.0の範囲に正規化されてfloat配列として表現されてもよい。このようにして取得された特徴点P1〜P6の画像ベクトルを図16に示す。図16には、説明の簡略化のために10フレーム分の画像ベクトルが示されているが、実際には統計的解析に十分な量のフレームについて画像ベクトルが取得される。
次に、特徴点P1〜P6の各々について、所定区間における画像ベクトルの要素の和Σを算出する。図16の表には、第0フレーム〜第25フレームの26フレーム分の区間における画像ベクトルの要素の和が「Σ」と表記されている行に示されている。次に、各特徴点P1〜P6の画像ベクトルの要素の和を大きい順にソートする。図16においては、このソート結果が「RANK」と表記されている行に示されている。図16の例では、P4、P3、P6、P2、P1、P5の順にソートされる。このソート後の配列を{4,3,6,2,1,5}と表現する。
動画再生装置10は、ユーザの動きに関する画像ベクトルのサンプルを学習することにより、ユーザの特徴的な姿勢又は動きを示す代表ベクトルを算出する。代表ベクトルは、例えば、ロイドアルゴリズム及びこれ以外の公知のアルゴリズムを用いて算出される。つまり、代表ベクトルは、ユーザの特徴的な姿勢を示す。よって、この代表ベクトルに基づいてユーザの姿勢を特定することができる。動画再生装置は、算出された代表ベクトルをインデックスとともに記憶する。動画再生装置10は、自装置以外で算出された代表ベクトルを取得しても良い。本実施形態では、4つの代表ベクトルA〜Dが算出されており、各代表ベクトルの要素を大きい順にソートして代表ベクトルの配列を得る。代表ベクトルA〜Dの各々の要素を大きい順にソートした配列はそれぞれ順に{1,3,6,2,4,5}、{4,3,6,2,1,5}{2,3,6,4,5,1}{1,2,3,4,5,6}を表されると想定する。
動画再生装置10は、撮像画像から得られた画像ベクトルをソートして得られた入力配列{4,3,6,2,1,5}と各代表ベクトルの配列とを比較し、入力配列{4,3,6,2,1,5}と最も近い代表ベクトルの配列を選定する。図16に示されている例では、入力配列{4,3,6,2,1,5}が4つの代表ベクトルの配列のうち代表ベクトルBの配列{4,3,6,2,1,5}と一致していることから、{4,3,6,2,1,5}が特徴配列として選定される。動画再生装置10は、このようにして選定された特徴配列のインデックスを動画配信装置20に送信する。
動画配信装置20は、代表ベクトルA〜Dとその配列とが対応付けられているコードブックを記憶している。動画配信装置20は、当該コードブックを参照し、動画再生装置10から取得した特徴配列に対応する代表ベクトルBに対応する姿勢を取るように上記ユーザのアバタのアニメーションを生成する。
上記の例では、26フレーム分の単位区間ごとに特徴配列が動画再生装置10から動画配信装置20に送信される。この単位区間は、適宜調整可能である。
以上のとおり、動画配信システム1において基準姿勢IDに代えて特徴配列のインデックスを伝送し、伝送遅延時にはこの特徴配列のインデックスに基づいてアバタのアニメーションを生成することを説明した。動画配信システム301においても同様に、基準姿勢IDに代えて特徴配列を用いることができる。特徴配列は、動画配信システム101において基準表情IDに代えて用いることもできる。
以上の実施形態によって奏される作用効果について説明する。上記の一態様において、伝送路において遅延が発生している間は、データ量が大きな姿勢特徴量ではなく、小さなデータ量で視聴ユーザの姿勢に関する情報を特定することができる基準姿勢識別データが動画再生装置10から動画配信装置20に対して送信される。これにより、伝送路において遅延が発生している場合に、小さなデータ量の基準姿勢識別データにより、視聴ユーザの姿勢に関する情報を動画配信装置20に伝達することができる。
一態様においては、視聴ユーザのアバタに関して登録アニメーションを登録することができ、伝送路において遅延が発生している間には、基準姿勢識別データに基づいて特定される基準姿勢に対応する登録アニメーションを含む動画が配信される。これにより、動画再生装置10から動画配信装置20への伝送路における遅延のために視聴ユーザの姿勢を表す姿勢特徴量の動画配信装置20への送信が困難な場合であっても、視聴ユーザの姿勢に関連する登録アニメーションを動画に含めることができる。
上記の一態様においては、動画再生装置330において、動画配信装置320から受信した配信ユーザの姿勢特徴量に基づいて当該配信ユーザの動きに基づいて動くアバタのアニメーションが生成される。伝送路において遅延が発生している間は、姿勢特徴量ではなく基準姿勢識別データが動画配信装置320から動画再生装置310に対して送信される。これにより、伝送路において遅延が発生している場合に、配信ユーザの動きを小さなデータ量で表すことができる基準姿勢識別データにより、動画再生装置330においてアバタのアニメーションを生成することができる。
一態様においては、ユーザの動きに基づいて生成されるユーザアニメーションを登録アニメーションとして登録することができる。これにより、姿勢特徴量が利用できない場合におけるアバタの動きのバリエーションを増やすことができる。
一態様において、伝送路において遅延が発生している間は、データ量が大きな顔特徴量ではなく、小さなデータ量で視聴ユーザの姿勢に関する情報を特定することができる基準表情識別データが動画再生装置10から動画配信装置20に対して送信される。これにより、伝送路において遅延が発生している場合に、小さなデータ量の基準表情識別データにより、視聴ユーザの表情に関する情報を動画配信装置20に伝達することができる。
本明細書において説明された処理手順、特にフロー図を用いて説明された処理手順においては、その処理手順を構成する工程(ステップ)の一部を省略すること、その処理手順を構成する工程として明示されていない工程を追加すること、及び/又は当該工程の順序を入れ替えることが可能であり、このような省略、追加、順序の変更がなされた処理手順も本発明の趣旨を逸脱しない限り本発明の範囲に含まれる。
以下に、本願の原出願の出願当初の特許請求の範囲に記載された発明を付記する。
[1]
一又は複数のコンピュータプロセッサを備え、
前記一又は複数のコンピュータプロセッサは、コンピュータ読み取り可能な命令を実行することにより、
動画配信装置から受信した動画を再生し、
ユーザの顔の特徴を表す顔特徴量を含むモーションデータを前記動画配信装置に送信し、
前記動画配信装置から前記顔特徴量に基づいて生成された前記ユーザのアバタのアニメーションを含む動画を受信し、
前記ユーザの表情が予め定められた基準表情に合致するか否かを判定し、
前記モーションデータの前記動画配信装置への伝送に遅延が発生している間に、前記ユーザの表情に合致すると判定された前記基準表情を識別する基準表情識別データを前記動画配信装置に送信し、
前記基準表情識別データは、前記顔特徴量よりもデータ量が少ない、
動画再生装置。
[2]
前記ユーザの表情が前記基準表情と合致するか否かは、前記顔特徴量を変数として評価関数に基づいて判定される、
[1]に記載の動画再生装置。
[3]
前記ユーザの表情が前記基準表情に合致するか否かの判定は、前記顔特徴量に基づいて前記ユーザの表情を分類する分類器により行われ、
前記基準表情を表す画像を前記ユーザに提示し、提示された前記画像に対して前記ユーザが作った表情を表す顔特徴量を教師データとして学習することにより前記分類器を作成する、
[1]に記載の動画再生装置。
[4]
前記ユーザのアバタについて一又は複数の登録アニメーションが登録されており、
前記遅延が発生している間に前記基準表情識別データに基づいて特定された前記基準表情に対応する前記登録アニメーションを含む動画を受信する、
[1]から[3]のいずれか1項に記載の動画再生装置。
[5]
時系列に取得された前記顔特徴量に基づいて前記アバタのユーザアニメーションを生成し、
前記ユーザアニメーションを前記登録アニメーションとして登録し、
前記ユーザアニメーションを含むサンプル動画を生成し、
前記サンプル動画を構成する複数のフレームの中から選択された基準フレームの画像に基づいて前記ユーザアニメーションに対応する前記基準表情を決定する、
[4]に記載の動画再生装置。
[6]
時系列に取得された前記顔特徴量に基づいて前記アバタのユーザアニメーションを生成し、
前記ユーザアニメーションを前記登録アニメーションとして登録し、
所定のフレームレートに基づいて前記ユーザに関する複数の特徴点の各々において前記ユーザに関する前記顔特徴量を算出し、
第1フレームにおいて前記複数の特徴点の各々における前記顔特徴量の二乗平均平方根である第1RMSを算出し、
前記第1フレームよりも時系列的に後の第2フレームにおいて前記複数の特徴点の各々における前記顔特徴量の二乗平均平方根である第2RMSを算出し、
前記第2フレームよりも時系列的に後の第3フレームにおいて前記複数の特徴点の各々における前記顔特徴量の二乗平均平方根である第3RMSを算出し、
前記第2RMSと前記第1RMSとの差である第1RMS差の正負と前記第3RMSと前記第2RMSとの差である第2RMS差の正負とが逆転した場合に、前記第3フレームにおける前記顔特徴量に基づいて前記ユーザアニメーションに対応する前記基準表情を決定する、
[4]に記載の動画再生装置。
[7]
時系列に取得された前記顔特徴量に基づいて前記アバタのユーザアニメーションを生成し、
前記ユーザアニメーションを前記登録アニメーションとして登録し、
前記ユーザアニメーションに対する前記ユーザの表情に基づいて時系列に取得された前記顔特徴量を含む第1評価データと、前記ユーザアニメーションに対する前記ユーザの他の表情に基づいて時系列に取得された前記顔特徴量を含む第2評価データと、を比較することで前記ユーザアニメーションに対応する前記基準表情を決定する、
[4]に記載の動画再生装置。
[8]
前記モーションデータはリアルタイムで送信される、
[1]から[7]のいずれか1項に記載の動画再生装置。
[9]
一又は複数のコンピュータプロセッサを備え、ユーザのアバタを含む動画を前記ユーザの動画再生装置に配信する動画配信システムであって、
前記一又は複数のコンピュータプロセッサは、コンピュータ読み取り可能な命令を実行することにより、
前記動画再生装置から伝送路を介して前記ユーザの表情を表す顔特徴量を含むモーションデータを受信し、
前記顔特徴量に基づいて生成された前記ユーザのアバタのアニメーションを前記動画に含めて配信し、
前記ユーザの表情に合致する前記動画再生装置からの前記モーションデータの伝送に遅延が発生している間に、前記ユーザの表情に合致する基準表情を識別する基準表情識別データを前記動画再生装置から受信し、
前記基準表情識別データに基づいて生成された前記ユーザのアバタの登録アニメーションを前記動画に含めて配信し、
前記基準表情識別データは、前記顔特徴量よりもデータ量が少ない、
動画配信システム。
[10]
一又は複数のコンピュータプロセッサがコンピュータ読み取り可能な命令を実行することにより実行される動画再生方法であって、
動画配信装置から受信した動画を再生する工程と、
ユーザの表情を表す顔特徴量を含むモーションデータを前記動画配信装置に送信する工程と、
前記動画配信装置から前記顔特徴量に基づいて生成された前記ユーザのアバタのアニメーションを含む動画を受信する工程と、
前記顔特徴量に基づいて前記ユーザの表情を分類する分類器により前記ユーザの表情が予め定められた基準表情に合致するか否かを判定する工程と、
前記モーションデータの前記動画配信装置への伝送に遅延が発生しているか否かを判定する工程と、
前記遅延が発生している間に、前記ユーザの表情が合致すると判定された前記基準表情を識別する基準表情識別データを前記動画配信装置に送信する工程と、
を備え、
前記基準表情識別データは、前記顔特徴量よりもデータ量が少ない、
動画再生方法。
[11]
一又は複数のコンピュータプロセッサを備え、
前記一又は複数のコンピュータプロセッサは、コンピュータ読み取り可能な命令を実行することにより、
ユーザの表情の特徴を表す顔特徴量を含むモーションデータを動画再生装置に送信し、
前記ユーザの表情が予め定められた基準表情に合致するか否かを判定し、
前記モーションデータの前記動画再生装置への伝送に遅延が発生している間に、前記ユーザの表情が合致すると判定された前記基準表情を識別する基準表情識別データを前記動画再生装置に送信し、
前記基準表情識別データは、前記顔特徴量よりもデータ量が少ない、
動画配信装置。
[12]
一又は複数のコンピュータプロセッサと、登録アニメーションを記憶するストレージと、を備え、
前記一又は複数のコンピュータプロセッサは、コンピュータ読み取り可能な命令を実行することにより、
動画配信装置からユーザの表情の特徴を表す顔特徴量を含むモーションデータを受信し、
前記モーションデータに基づいて生成されたユーザのアバタのアニメーションを含む動画を生成し、
前記動画配信装置からの前記モーションデータの伝送に遅延が発生している間に、前記ユーザの表情が合致すると判定された基準表情を識別する基準表情識別データに基づいて前記基準表情に対応する前記登録アニメーションを含む動画を生成し、
前記基準表情識別データは、前記顔特徴量よりもデータ量が少ない、
動画再生装置。