説明

操作対象物制御装置、システム、方法およびプログラム

【課題】容易にユーザの動作を修飾して操作対象物に反映させることにより、ユーザが操作対象物と一体感を持つことができ、また、多種多様の動作を操作対象物に行わせることができる操作対象物制御装置、および方法を提供すること。
【解決手段】
操作対象物制御装置は、動作検出部、動作取得部、動作特徴量抽出部、フィルタ記憶部、操作対象物動作記憶部、動作特徴量変換部、および操作対象物動作取得部を備える。動作取得部は動作検出部にて検出されたユーザの動作を取得し、取得された動作から動作特徴量抽出部にて動作特徴量が抽出される。そして、動作特徴量変換部は、フィルタ記憶部のから取得したフィルタを用いて動作特徴量を変換し、操作対象物動作取得部は、操作対象物動作記憶部の操作対象物の動作時系列から求められる操作対象物の動作特徴量が、動作特徴量変換部にて変換された動作特徴量に近い操作対象物動作記憶部の動作時系列を取得する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、人間の動作に基づいて、状況に合った操作対象物の動作を選定する装置、システム、方法およびプログラムに関する。
【背景技術】
【0002】
人間はロボットや仮想世界のアバター等の操作対象物を通して自己表現を行うことや、他者とのコミュニケーションを図ることができる。例えば、人間は、仮想世界内における自己の操作対象物(分身ともいう)であるアバターを操作し、アバターに振付を踊らせることにより、自己表現を行うことや、他者とのコミュニケーションを図ることができる。また、アバターに振付を踊らせることにより、ダンスを踊る気分を味わうことができる。このような操作対象物に振付を踊らせるための先行技術はいくつか存在し、以下に例示する。
【0003】
特許文献1には、遊戯者が予め作成した振付データを用いてダンスゲームを展開することができるダンスゲームシステムが提案されている。ダンスゲームシステムに備え付けられた足踏みステップ上で遊戯者が音楽に合わせて踏んだステップに基づいて、ダンスゲームシステムは振付を作成し、ダンスゲームシステム内に登録する。このようにしてダンスゲームシステムに登録された振付は、予めダンスゲームシステムに記憶されている振付とあわせてダンスゲームに用いることができる。
【0004】
特許文献2には、音楽に合わせて踊る人間の踊りを強調して、3次元CGの仮想ダンサーに高度な踊りを踊らせる踊り映像強調合成装置が提案されている。踊り映像強調合成装置は、音楽に合わせて踊る人間の映像をカメラで取り込んだ映像と予め用意されている踊りパターンから読み出された伴奏曲のテンポに合った踊りパターンとを合成し、3次元CGの仮想ダンサーが踊っている画像を作成する。
【0005】
特許文献3には、観察したユーザの動作を模倣して行い、更にユーザの動作を変調した新たな動作を行うロボット装置が提案されている。ロボット装置は、備えられたカメラからユーザの動作の画像を取り込み、その動作を行う。また、取り込んだユーザの動作はロボット装置内の記憶部に蓄積され、蓄積されたユーザの動作を元に新たな動作を創作し、行う。
【0006】
【特許文献1】特開2001−276291号公報
【特許文献2】特開2002−042168号公報
【特許文献3】特開2005−297095号公報
【発明の開示】
【発明が解決しようとする課題】
【0007】
しかしながら、特許文献1に記載のシステムでは、ステップの組み合わせを変化させることで、操作対象物であるアバターの動作にバリエーションを持たせることができるが、ステップ各々に動作を選べるわけではないため選べる動作のバリエーションは限られてしまう。また、ユーザの動作が操作対象物の動作に直接反映されないため、操作対象物との一体感を持つことができない。一方、特許文献2,3に記載の方法では、ユーザの動作が操作対象物の動作に直接反映されるが、ユーザの望まない動作もそのまま反映されてしまうという欠点もある。また、複数のカメラが必要であったり、専用のデバイスが必要であったりすることから、手軽に利用するにはわずらわしい。
【0008】
本発明は、上記課題に鑑み、容易にユーザの動作を修飾して操作対象物に反映させることにより、ユーザが操作対象物と一体感を持つことができ、また、多種多様の動作を操作対象物に行わせることができる操作対象物制御装置、および方法を提供することを目的とする。
【課題を解決するための手段】
【0009】
本発明の1つの態様によると、ユーザの少なくとも身体の一部の動作を検出してその動作に基づいて操作対象物制御装置を提供する。操作対象物制御装置は、ユーザの動作を検出する動作検出部、動作取得部、動作特徴量抽出部、フィルタ記憶部、操作対象物動作記憶部、動作特徴量変換部、および操作対象物動作取得部を備える。動作取得部は、動作検出部により検出されたユーザの動作を所定の間隔毎に取得する。動作特徴量抽出部は、動作取得部にて取得されたユーザの動作時系列に対して周波数変換を行って得られる周波数成分を要素とする動作特徴量を抽出する。
【0010】
フィルタ記憶部は、動作特徴量の周波数成分に重み付けを行うフィルタを記憶する。操作対象物動作記憶部は、操作対象物の動作時系列が予め記憶されている。動作特徴量変換部は、フィルタ記憶部からユーザまたは操作対象物の環境情報に基づいて取得されたフィルタを用いて、動作特徴量の変換を行う。操作対象物動作取得部は、操作対象物動作記憶部の動作時系列から求められる操作対象物の動作特徴量が、動作特徴量変換部にて変換された動作特徴量に近い操作対象物動作記憶部の動作時系列を取得する。
【0011】
「操作対象物」とは、ユーザが操作して動作を行わせるものであり、例えば、仮想世界上のアバターが典型例であるが、実空間上のロボットもの一種である。なお、操作対象物は人に限らず、動物等も含む。「周波数変換」とは、ある時系列値(本発明においては、動作の時系列)に含まれる様々な周波数成分を調べることであり、例えば、フーリエ変換、およびウェーブレット変換が挙げられる。「環境情報」とは、ユーザや操作対象物の自体の情報およびユーザや操作対象物が存在する環境の関する情報であり、例えば、流れている曲、時刻、アバターの性別や年齢である。本態様によれば、環境情報に基づいて、ユーザの動作特徴量のうち周波数成分に重み付けを行うことにより、ユーザの動作を修飾して操作対象物に反映することができる。「修飾して」とは、ユーザの動作の特定の動きを大きくする等強調することや。逆にユーザの動作の特定の動きを小さくする等減退することをいう。
【0012】
また、本態様において、操作対象物動作取得部は、前記動作特徴量変換部にて重み付けが行われた動作特徴量を逆周波数変換して得られた動作時系列と、前記操作対象物動作記憶部の動作時系列の相関係数を算出し、相関係数がもっとも1に近い前記操作対象物動作記憶部の動作時系列を取得する。重み付けされたユーザの動作特徴量から算出された動作時系列との相関係数が最も1に近い操作対象物の動作時系列を取得することにより、ユーザの動作に近い操作対象物の動作を特定することができる。
【0013】
また、本態様において、前記動作特徴量変換部は、前記フィルタを周波数変換してから用いてもよい。周波数変換したフィルタを用いることにより、周波数シフトに影響を受けにくくなる。
【0014】
また、本態様の操作対象物の動作は、1以上の動作点のツリー構造により表されてもよい。動作点とは、例えば、人と似た身体構造をもつアバターやロボット等の場合には、関節である。操作対象物の動作を1以上の動作点のツリー構造により表すことにより、動作点間の関係を表すことができ、また、柔軟かつ拡張性に富むデータ構造とすることができる。
【0015】
更に、本態様の操作対象物の動作記憶部および前記フィルタ記憶部は、リレーショナルデータベースまたは拡張マークアップ言語(XML)データベースである。それにより、操作対象物の動作をツリー構造のまま記憶することができる。
【0016】
また、本態様は、ユーザまたは操作対象物の環境情報は、ユーザが動作を行っている間に再生されている曲の情報であり、曲の情報が記憶されている曲情報記憶部を更に備える。曲の情報とは、例えば、「間奏」や「サビ」といった曲のパートである。曲の情報に基づいてフィルタが取得されることにより、ユーザの動作を曲に合うように変換して操作対象物に行わせることができる。例えば、「サビ」は盛り上がるので激しい動きにさせるために高周波数成分に重み付けを行うフィルタを取得するとすることができる。
【0017】
更に、本態様は、ユーザの動作を取得する所定の間隔は、前記曲の1小節を1以上の数で分割した間隔とすることができる。これにより、曲の区切りと動作の区切りとを合わせることができ、動作が曲にあってない状態を防ぐことができる。
【発明の効果】
【0018】
本発明によれば、容易にユーザの動作を修飾して操作対象物に反映させることにより、ユーザが操作対象物と一体感を持つことができ、また、多種多様の動作を操作対象物に行わせることができる操作対象物制御装置、および方法を提供することができる。
【発明を実施するための最良の形態】
【0019】
以下、本発明を実施するための最良の形態として、曲に合わせて踊るユーザの動作から仮想世界におけるユーザの操作対象物であるアバターの動作を選定する場合について図を参照しながら説明する。尚、これはあくまでも一例であって、本発明の技術的範囲はこれに限られるものではない。また、本発明の実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本発明の実施形態または実施例に記載されたものに限定されるものではない。
【0020】
[操作対象物制御装置の機能構成]
図1は、本実施形態に係る操作対象物制御装置1の機能構成を示す図である。操作対象物制御装置1は、ユーザ動作取得部10、動作特徴量抽出部11、曲情報取得部12、フィルタ検索部13、動作特徴量変換部14、およびアバター動作取得部15、アバター動作データベース(以下、簡略化のためデータベースをDBとする)20、曲DB21、およびフィルタDB22を有する。本実施形態において、操作対象物制御装置1としているが、各機能部を分散させて、ネットワークにて接続し、システム構成をとってもよい。
【0021】
ユーザ動作取得部10は、ユーザの動作をWii(登録商標)リモコンのような入力デバイス(動作検出部)を介してユーザの動作を3次元の絶対位置の時系列として取得する。そのため、入力デバイスは3次元の絶対位置の時系列が取得できるものである必要があり、加速度センサー等を用いた計算により絶対位置が計算できるものも含む。動作特徴量抽出部11は、ユーザ動作取得部10にて取得された動作時系列から周波数変換にてユーザの動作特徴量を抽出する。なお、本実施形態においては、周波数変換としてフーリエ変換を用いる。
【0022】
曲情報取得部12は、曲DB21から流れている曲の情報および次小節の情報を取得する。フィルタ検索部13は、曲情報取得部12にて取得された情報に基づいてフィルタDB22からフィルタ情報を取得する。動作特徴量変換部14は、動作特徴量抽出部11にて抽出された動作特徴量とフィルタ検索部13にて取得されたフィルタ情報とに基づいて動作特徴量の周波数成分に重み付けを行う。アバター動作取得部15は、動作特徴量変換部14にて重み付けされた動作特徴量を逆フーリエ変換して得られた動作時系列と、前記操作対象物動作記憶部の動作時系列の相関係数を算出し、相関係数がもっとも1に近い前記操作対象物動作記憶部の動作時系列を取得する。取得された動作時系列に基づいてアバターの動作はディスプレイ等に表示される。
【0023】
アバター動作DB20は、アバターの全身の各部位の一定フレーム分毎の連続動作の時系列および、その動作特徴量を複数の動作について蓄積している。ここで、フレームは、例えば、曲の1小節をK分割した間隔でサンプリングされ、一定フレーム分とは例えば、1小節である。Kが大きいほどアバターの動作は滑らかになるが、データ量は増える。なお、Kは操作対象物制御装置1の性能等に基づいて決まる値である。アバター動作DB20は、情報をテーブル形式で表すリレーショナルDBでもよいし、情報をXMLで表したXMLDBでもよい。本実施形態においては、XMLDBとする。
【0024】
曲DB21は、曲の作曲者等の楽曲情報、および各小節や経過時間に対しての「Aメロ」等の属性情報が曲毎に蓄積されている。フィルタDB22は、動作特徴量にフィルタを適用するルールおよびフィルタ情報を蓄積している。ここで、フィルタ情報とは、動作特徴量の周波数を強調するための情報である。なお、曲DB21も、リレーショナルDBでもXMLDBでもよいが、本実施形態においてはXMLDBとする。
【0025】
ユーザ動作取得部10は、動作取得部の一例であり、フィルタ検索部13および動作特徴量変換部14は動作特徴量変換部の一例であり、アバター動作取得部15は操作対象物動作取得部の一例であり、曲DB21は曲情報記憶部の一例であり、アバター動作DB20は操作対象物動作記憶部の一例である。なお、各DBは、ハード・ディスク上のデータベースに限らず、メモリ等の外部記憶装置でもよい。操作対象物制御装置1のハードウェア構成については後述する。
[アバター動作DB]
【0026】
アバター動作DB20について詳細に説明する。ここで、アバターの動作は一般的なモーションデータの1つであるBVHファイル形式(以下、BVH形式という)で表し、アバター動作DB20をそれに準じたXMLDBとする。なお、アバターの動作をASF−AMCファイル形式等の別の形式で表してもよいし、アバター動作DBにリレーショナルDBを用いてもよい。アバター動作DB20は、(1)アバターの骨格構造と寸法を定義するスケルトンデータ、(2)アバターの動きを定義するフレーム毎の動作、および(3)動作データの絶対座標、および特徴量の3つの項目から構成される。(1)スケルトンデータおよび(2)フレーム毎の動作はモーションデータを構成するデータである。BVH形式等のモーションデータのフォーマットは、人体を多数の関節と骨とを持つ多関節リンク構造で表現し、各関節の時系列の位置情報あるいは、各関節の時系列の角度情報と各骨の長さの情報を持つ。このモーションデータを用いることで、アバターを動作させることができる。一方、(3)動作データの絶対座標、および特徴量は、後述するアバター動作選定の際に使用されるデータである。
【0027】
まず、(1)アバターの骨格構造と寸法を定義するスケルトンについて説明する。スケルトンには骨格構造と寸法、つまり、関節の親子接続関係と各骨の長さとが定義される。図2は、BVH形式によるスケルトンデータのXMLファイルの一例を示す図であり、図3は、BVH形式によるスケルトンデータのXMLファイルタグ構造を示す図である。図3に示すように、スケルトンデータは、<Skeleton>以下に、アバターの骨格構造と寸法が<Root>、<Joint>、および<End>にて定義される。
【0028】
<Joint>とは、階層構造を構成する関節Nodeであり、1つ以上の<Joint>若しくは<End>を子Nodeとして持つ。また、<Root>とは、階層構造の唯一の始点となる特殊な<Joint>であり、1つ以上の<Joint>を子Nodeとして持つ。<Root>は、階層構造の一番上位にあるパーツを定義し、人間を表すオブジェクトの場合、腰を表現するパーツを<Root>として定義するのが一般的である。<End>とは、階層構造の末端ノードとなる特殊な<Joint>であり、子Nodeを持たない。
【0029】
<Root>、<Joint>、および<End>は、それぞれ、関節名を指定するname属性と、x,y,zの順に親関節である<Root>からの位置を指定するoffset属性を持つ。図2の<Root>には、nameとして「Avatar」がセットされ、offsetにはワールド座標系における初期位置がセットされている。また、図2の4行目の<Joint>には、nameに関節の名前である「vl5」が定義され、offsetには<Root>からの位置がx,y,zそれぞれについて(0.0000,2.7700,2.3300)が指定されている。図2の5行目以降も同様に指定されている。なお、<Joint>の関節は、<Root>から近い順に定義される。
【0030】
更に、図2の10行目の<End>にも<Joint>と同様に、関節名「skull_tip」とRootからの位置が(0.0000,17.5290,3.5690)と指定されている。上述した通り、図2において<End>以下には<Joint>の定義がされない。
【0031】
アバター動作DB20に蓄積される全ての動作データについて同じスケルトンデータを用いるのがデータ量等の点から見ても望ましい。そのためには、アバターについての新しい動作データを登録する際、登録する動作を行っているアバターのスケルトンとアバター動作DB20のスケルトンとが異なる場合には、登録する動作を行っているアバターのスケルトンの各Jointについてアバター動作DB20のスケルトンとの縮尺を求める。求められた縮尺率に合わせて、アバター動作DB20側のスケルトンに合うように、新しいアバターの動作データの拡大縮小を行ってから、アバター動作DB20に動作データを登録する。
【0032】
一方、ユーザが操作するアバターのスケルトンデータとアバター動作DB20のスケルトンデータとが異なる場合には、まず、上記の動作データの登録時と同様に、ユーザのアバターとアバター動作DB20とのスケルトンの各Jointについて縮尺率を求める。求めた縮尺率に合わせて、アバター動作DB20のスケルトンに正規化されている動作データを拡大・縮小を行うことでユーザが操作するアバターに動作データを合わせる。このスケーリング手法については、Dynamic Time Warping等の既存手法を用いる。この手法により、1つの標準スケルトンに基づいた動作が登録されたアバター動作DB20を用いて、スケルトンの異なる様々なアバターに動作をさせることができる。
【0033】
次に、(2)アバターの動きを定義するフレーム毎の動作データについて説明する。動作データには、具体的には、フレーム毎の<Root>の位置、<Joint>および<Root>の回転が定義される。図4は、BVH形式による動作データのXMLファイルの一例を示す図であり、図5は、BVH形式による動作データのXMLファイルタグ構造を示す図である。図5に示すように、動作データは、<Motion>の以下に<Source>、<Skeleton>、<Root>、および<Joint>にて、アバターの各関節の姿勢がフレーム毎に定義される。
【0034】
<Source>には、type属性で変換元のファイル形式、frame属性でデータ全体の長さを指定する。図4の3行目の<Source>において、type=“BVH”となっているので、変換元のファイルがBVH形式であることが指定されており、frame=2であるので、動作データが2フレーム分記憶されていることが指定されている。また、<Skeleton>は、スケルトン情報定義タグであり、name属性で対応するスケルトンデータのファイルを指定する。図4の4行目の<Skeleton>において、name=xmlMotion_skeleton.xmlとなっているので、図4に示す動作データに対応する、つまり図4に示す動作データにて動かすことができるアバターの骨格構造を定義したスケルトンファイル名がxmlMotion_skeleton.xmlであることを示す。
【0035】
<Root>には、<Root>の位置情報および<Root>の回転情報が定義され、<Joint>には、各関節の回転情報が行方向に時系列順に記録されている。ただし、関節情報は<Skeleton>に指定されるスケルトンデータと整合が取れている必要がある。<Skeleton>に指定されるスケルトンデータの動作データであるからである。また、回転情報の記述方法には、オイラー角表現、Quaternion表現、任意回転軸表現があり、いずれもフレーム順序に合わせて、数値を与える必要がある。
【0036】
図5に示すように<Root>以下には、<Position>および<Rotation>が定義される。<Position>はRoot位置定義タグであり、<X>、<Y>、<Z>を定義することができ、それぞれdata属性にて3次元座標系での位置を、フレームの順に指定する。<Rotation>は、Root向き定義タグであり、<Euler>、<Quaternion>、および<AxisAngle>のいずれかを定義することができる。いずれのタグにおいても、data属性にて3次元座標系での向きを基準向きからの回転移動としてフレーム順に指定する。ただし、基準の向きは、正面が+z軸方向、重力方向が+y軸方向である。
【0037】
<Euler>はEuler表現定義タグであり、<X>,<Y>,<Z>を含み、data属性でオイラー角をframe順に指定する。この際、回転行列の乗算順序は<X>,<Y>,<Z>の指定順序に依存する。<Quaternion>はQuaternion表現定義タグであり、<W>,<X>,<Y>,<Z>で、data属性の四元数をframe順に指定する。<AxisAngle>は任意軸表現定義タグであり、<X>,<Y>,<V>,<Angle>を含んで、data属性で回転軸の向きを表す3次元ベクトルと回転角度をframe順に指定する。
【0038】
図4に示す動作データにおいて、Rootの向きは<Euler>にて定義され、<X>、<Y>、<Z>data属性がいずれも(0.0)であるのでRootは基準の向きであることを示している。
【0039】
一方、<Joint>は、Joint回転定義タグであり、<Euler>、<Quaternion>、<AxisAngle>のいずれかのタグを定義することができる。<Euler>、<Quaternion>、<AxisAngle>に含まれるタグは、<Root>と同様であり、それぞれdata属性にて3次元座標系での向きを基準向きからの回転移動としてフレーム順に指定する。基準向きは関節部位によって異なるが、通常は腕を下げた立脚姿勢が基準である。
【0040】
最後に、(3)動作データの絶対座標、および動作特徴量について説明する。図6は、BVH形式による動作データの絶対座標、および動作特徴量のXMLファイルの一例を示す図であり、図7は、BVH形式による動作データの絶対座標、および動作特徴量のXMLファイルタグ構造を示す図である。図7に示すように、動作データの絶対座標、および動作特徴量は、<Feature>以下に、<Source>、<Motion>、および<Joint>が定義される。
【0041】
<Source>は、Source情報定義タグであり、frame属性で動作特徴量の次元数を指定する。この次元数は、絶対座標を使う場合には、対応する動作データのフレーム数と等しい。対応する動作データは<Motion>に定義される。図6に示す動作データの絶対座標、および動作特徴量が図4に示す動作データに対応しているとすると、図4に示す動作データのフレーム数=2とframeに指定される数は同じになる。<Motion>は動作データ定義タグであり、name属性で対応する動作データのファイル名を示す。
【0042】
<Joint>はNode定義タグであり、name属性で関節名を指定する。これは対応する動作データの関節名と整合性が取れている必要がある。図7に示すように、<Joint>以下には、<Spectrum>および<Position>が定義される。<Spectrum>は動作特徴量定義タグであり、type属性で動作特徴量名を示し、<X>,<Y>,<Z>で、それぞれ動作特徴量を示すが、フーリエ変換の場合は複素数であるので、data1属性で実部、data12属性で虚部を示す。<Position>は絶対座標定義タグであり、type属性で動作特徴量名を示し、<X>,<Y>,<Z>で、それぞれ絶対座標を示す。
【0043】
上述した(3)動作データの絶対座標、および特徴量は、アバター動作DB20に記憶されている(1)アバターの骨格構造と寸法を定義するスケルトンデータ、および(2)アバターの動きを定義するフレーム毎の動作から求めることができる。そのため、(3)動作データの絶対座標、および特徴量は、必要な時に(1)アバターの骨格構造と寸法を定義するスケルトンデータ、および(2)アバターの動きを定義するフレーム毎の動作から求めてもよいが、計算に時間がかかるため、予め計算し、アバター動作DB20に記憶させておくのが望ましい。
[絶対座標計算]
【0044】
ここで、動作データの絶対座標の求め方について説明する。上述したBVH形式のように、アバターの動作は通常絶対座標ではなく各関節との関係で表現される。一方、入力デバイスにて取得される情報は絶対座標であるためユーザの動作特徴量は絶対座標にて計算された値である。後述するが、ユーザの動作特徴量とアバターの動作特徴量とを対比するため、絶対座標におけるアバターの動作特徴量を求める必要がある。そのために、まず、アバターの動作の絶対座標を求める。
【0045】
アバターの動作を絶対座標に変換するには、あるフレームでのスケルトンデータの各関節の親関節からのX,Y,Zのオフセットの値(x,y,z)を用いたν=(x,y,z,1)、および、同じフレームでの動作データのEuler角の値(θx,θy,θz)、およびx,y,z軸の回転を表すトランスフォーム行列、および親関節ベクトル(tx,ty,tz)を用いて、式(1)にて、子関節の末端の絶対座標を求めることができる。なお、式(1)に用いるトランスフォーム行列を式(2)から(4)に、親関節ベクトル(tx,ty,tz)の行列式を式(5)に示す。
【0046】
【数1】

【0047】
【数2】

【0048】
【数3】

【0049】
すなわち、任意の関節の絶対座標を求めるには、
(1)(tx,ty,tz)にRootのオフセット値を代入する。
(2)子関節のオフセット値を(x,y,z)、動作データのEuler角の値(θx,θy,θz)に代入し、式(1)を計算する。
(3)求めたν´=(x´,y´,z´,1)より、(tx,ty,tz)に(x´,y´,z´)を代入し、絶対座標を求めたい関節まで(2)(3)を繰り返す。
【0050】
例えば、図2に示すスケルトンデータにおいて、17行目に示す左手「l_wrist」の絶対座標を求める場合には、まず「vl5」の絶対座標を(1)から(3)の手順にて計算し、次に計算された「vl5」の絶対座標を用いて「vl1」を同様に計算し、とRootから「l_wrist」まで順番に計算を行うことで「l_wrist」の絶対座標を求めることができる。
[動作特徴量]
【0051】
次にアバターの絶対座標における動作特徴量の求め方について説明する。アバターの動作時系列はx,y,zの3次元で表されるが、1次元ずつ特徴量を抽出する方法について説明する。Kフレーム分の動作時系列のうち、ある次元、例えばx座標、の時系列をa=(a,a,・・,aK−1)とした場合に、式(6)に示すフーリエ変換にて、A=(A,A,・・・,AK−1)を求める。なお、Kフレームとは、曲の1小節をK分割した時に得られるフレーム数である。
【0052】
【数4】

【0053】
残りの2次元、y,z座標、についても同様に式(6)に示す離散フーリエ変換を行い、B=(B,B,・・・,BK−1)およびC=(C,C,・・・,CK−1)を求める。このようにして求められたA,B,Cを動作特徴量とする。なお、A,B,Cは複素数であり、かつ動作特徴量は3次元のKフレームの時系列であるので、1動作あたりの特徴量の数は見かけ上2×K×3となるが、自由度はK×3のままである。また、離散フーリエ変換の計算コストはΟ(K)であるが、この計算の高速な方法、高速フーリエ変換を用いればΟ(Klog(K))まで計算コストを削減することができる。
[曲DB]
【0054】
次に、曲DB21がXMLDBの場合を例として説明する。なお、曲DB21は、XMLDBに限らず、リレーショナルDBでもよい。曲DB21には、各小節や経過時間に対して「サビ」「Aメロ」等の属性情報を付加したMusicXMLファイルが蓄積されている。MusicXMLファイルは、「楽曲情報」、「演奏情報」、および、「楽譜情報」の3つの要素から構成されている。「楽曲情報」は、楽曲の持つ「タイトル」、「作者」等を表現する情報であり、「演奏情報」は、オーディオの情報等を表現する情報である。「楽譜情報」は楽譜イメージを表現する情報であり、小節毎に音符や歌詞が記述される。図8は、MusicXMLの論理構造例を示す。図8に示すように、具体的なMusicXMLの記述は、楽譜、パート、小節を表す<measure>が記述され、その下には、調合や拍子を表す<attributes>と、音符を表す<note>等の楽譜タグが記述される。
【0055】
図9は、楽譜のMusicXMLの1部を示す図である。図9の2行目に示すように、小節を表す<measure>にtype属性を付加することでこの小節は”Aメロ”であることをあらわす。number属性にて小節の順番を表し、図9においては1小節目であることを表している。また、itunesで用いられるXML形式の情報にタイムライン情報iTunes Music Library.xmlのようなタイムラインに対して、Timeline Annotatorのような情報を付加することで、時間指定でアノテーションを付加することもできる。
[フィルタDB]
【0056】
続いて、フィルタDB22がXMLDBの場合を例として説明する。なお、フィルタDB22は、XMLDBに限らず、リレーショナルDBでもよい。フィルタDB22には、フィルタの適用ルールおよびフィルタ情報のXMLファイルが蓄積される。図10は、フィルタDB22に蓄積されているフィルタの適用ルールおよびフィルタ情報のXMLファイルの一例を示す図である。図11は、フィルタの適用ルールおよびフィルタ情報のXMLファイルタグ構成を示す図である。図11に示すように、フィルタの適用ルールおよびフィルタ情報は、<Feature>以下に、<Source>、<Rule>、および<Joint>が定義される。
【0057】
<Source>はSource情報定義タグであり、frame属性でフィルタの次元数を指定する。次元数がフィルタを適用する動作データに定義されているフレーム数と等しくなければ、フィルタを適用することができない。そのため、フレーム数が複数想定される場合には、フレーム数分適用するルールおよびフィルタ情報のXMLファイルを用意する必要がある。図10の3行目において、frames=32となっているので、本フィルタ情報を適用できるのは、フレーム数が32の動作データである。
【0058】
<Rule>は曲情報に対するルール適用のタグであり、type属性で曲情報の形式および曲情報の要素のタグを定義することができる。動作特徴量に対するフィルタの情報は、<Joint>以下に動作特徴量定義タグ<Filter>を定義し、<X>、<Y>、<Z>のtype属性にて定義される。これは、アバター動作DB20に記憶されている動作特徴量の<Joint>と<Spectrum>との関係と同様である。
【0059】
図10に示すXMLファイルは、作曲者Johannes BrahmsのAメロの小節に対するフィルタの例である。5・6行目に曲情報である作曲者名および曲パート「Aメロ」が指定されている。8行目の<Joint>のname属性からこのXMLファイルが関節「l_wrist」に対して適用されるものであることがわかる。フィルタによる動作特徴量のうちの周波数成分の重み付けの例としては「間奏」のように穏やかな動きの方がよいときは低周波を重視し、「サビ」のように盛り上がって激しい動きをした方がよいときには高周波も考慮する、といったものが考えられる。
[アバター動作選定処理]
【0060】
図12は、アバター動作選定処理のフローチャートである。アバターの動作選定処理は、曲が始まると開始する。まず、ステップS1において、ユーザ動作取得部10は、入力デバイスからユーザの動作時系列を取得する。ここでは、入力デバイスとしてWii(登録商標)リモコンを用いる場合を例として説明する。Wiiリモコンでは、先端部分にCMOSイメージ・センサが実装されており、センサーバーと呼ばれる、両端に赤外線LEDが5個ずつ組み込まれている横長の棒と組み合わせて用いる。Wiiリモコンがテレビ画面の方向を向くと、センサーバーの両端の光点がイメージ・センサで捉えられる。二つの光点の位置関係と間隔からテレビ画面に対するWiiリモコンの向きや距離を見積もることができる。このようにして見積もられたWiiリモコンの向きや距離をユーザの動作としてユーザ動作取得部10が取得する。
【0061】
ユーザが右手にデバイスを持っている等、用いる入力デバイスが1つである場合には、ユーザの体が前後逆になる、等の回転については対応できない。そのため、回転については各デバイスをどの体の部位に割り当てるかを予め指定し(左右に持ち、左手のデバイスは左手から離さない、右手に持っているデバイスは右手専用、等)、2つ以上のデバイスを使うことで対応する。また、入力デバイスをつける体の部位を増やすことにより、ユーザの各部位の動作をアバターの各部位に反映させることができる。ただし、使用前にどのデバイスがユーザのどの部位に対応するかを指定する必要がある。また、アバター動作DB20に、各部位毎に動作量および特徴量が定義されている必要がある。
【0062】
なお、ユーザ動作取得部10がユーザの動作をサンプリングの間隔については、一定時間毎にサンプリングするのではなく、曲の1小節をK分割する形で行う。この分割数Kは、上述したアバター動作DB20およびフィルタDB22の次元数またはフレーム数と一致している必要がある。
【0063】
次に、動作特徴量抽出部11は、ステップS1にて取得されたユーザの動作時系列からユーザの動作特徴量を求める(ステップS2)。ユーザの動作特徴量は、上述したアバターの動作特徴量と同様に式(6)に示されるフーリエ変換にて求める。
【0064】
ステップS3において、曲情報取得部12は、現在流れている小節の次の小節の情報および曲の情報を曲DB21から取得する。曲の情報の取得手法については既存の手法を用いる。現在流れている次の小節の情報とは、例えば、「間奏」が流れているときには、次の小節が「Aメロ」であることを取得する。ステップS1にて取得されたユーザの動作からステップS3にて取得された情報を用いて選定された動作をアバターが行うのは、ユーザの動作が取得された時ではなく、それから少し遅れた時であるからである。
【0065】
ステップS3にて取得された現在流れている小節の次の小節の情報および曲の情報に基づいて、フィルタ検索部13は、フィルタDB22を検索し、フィルタを取得する(ステップS4)。上述したようにフィルタDB22はXMLDBであるので、検索にはXQuery等を用いる。なお、検索結果が複数の場合には、ランダムに1つ選ぶや全体の平均を用いる等の任意の方法によりフィルタを決定する。
【0066】
ステップS2にて取得されたユーザの動作特徴量にステップS3にて取得されたフィルタをかける(ステップS5)。ユーザの動作特徴量をそれぞれ軸毎にX,Y,X、フィルタをα,β,γをすると、X軸方向については、式(7)にて重視したい周波数成分を強調することができる。このとき、ステップS3にて取得されたフィルタをかけることにより、曲に合致したアバターの動作を検索することができる。なお、α,β,γは直流成分であるため、0とするのが望ましい。他の2軸についても同様の計算を行い、X´,Y´,Z´を求める。
【0067】
【数5】

【0068】
ステップS5にて求められたX´,Y´,Z´について周波数領域からの逆フーリエ変換を行い、x´,y´,z´を求める(ステップS6)。例えば、x´=(x´,x´,・・・,x´K−1)の逆フーリエ変換は式(8)のように表される。
【0069】
【数6】

【0070】
最後に、ステップS6にて求められたx´,y´,z´、およびアバター動作DB20内の全アバター動作i(i=1,2,・・・)の動作時系列a,b,c(i=1,2,・・・)に対し、式(9)にて相関係数を計算し、相関係数が最も1に近くなるアバターの動作を取得する(ステップS7)。このようにして得られたアバターの動作が、ディスプレイ等に表示される。
【0071】
【数7】

【0072】
図12に示すアバター動作選定処理のフローチャートは、ユーザの動作時系列に対してフーリエ変換をし、フィルタをかけた後逆フーリエ変換をし、アバターの時系列の相関を求めいている。その他にも、シフトに強い処理として、ユーザの動作時系列に対してフーリエ変換をし、同じくフーリエ変換をしたフィルタをかけた後、逆フーリエ変換をして、相関を求める処理がある。この場合には、予めアバター動作DB20に蓄積されている各軸に対応する特徴量A,B,Cを用いる。
【0073】
なお、アバター動作DB20に蓄積されているアバターの動作が多い場合は時系列のクラスタリングを行って、クラスタの中央値となる時系列の特徴量を使って相関係数を求めることでクラスタを1つ選び、クラスタ内で再び、最も相関係数が1に近い時系列を探せばよい。
[実施例]
【0074】
以下に、本発明の一実施形態であるユーザの動作を曲に合わせて変化させてアバターにさせる例について説明する。図13は、ユーザの動作を曲に合わせて変化させてアバターにさせる例を示す図である。(a)は、右手に入力デバイスを持ち、手を上下させて踊っているユーザを示す図である。曲が「サビ」で盛り上がっている場合には、フィルタにて高周波のユーザ動作特徴量に重み付けを行い、(b)に示すようにアバターが大きく手を上下させる動作が選択される。一方、曲が「後奏」で穏やかな場合には、フィルタにて低周波のユーザ動作特徴量に重み付けを行い、(c)に示すようにアバターが小さく手を上下させる動作が選択される。
[ハードウェア構成]
【0075】
図14は、本実施形態に係る操作対象物制御装置1のハードウェア構成を示す図である。操作対象物制御装置1は、制御部を構成するCPU(Central Processing Unit)310、バスライン200、通信I/F(I/F:インタフェース)320、メインメモリ330、BIOS(Basic Input Output System)340、表示装置350、I/Oコントローラ360、キーボードおよびマウス等の入力装置370、ハード・ディスク380、光ディスクドライブ390、並びに半導体メモリ410を備える。尚、ハード・ディスク380、光ディスクドライブ390、並びに、半導体メモリ410をまとめて記憶装置420と呼ぶ。
【0076】
制御部300は、操作対象物制御装置1を統括的に制御する部分であり、ハード・ディスク380に記憶された各種プログラムを適宜読み出して実行することにより、上述したハードウェアと協働し、本発明に係る各種機能を実現している。
【0077】
通信I/F320は、操作対象物制御装置1が、通信ネットワークを介して他の装置等と情報を送受信する場合のネットワーク・アダプタである。通信I/F320は、モデム、ケーブル・モデムおよびイーサネット(登録商標)・アダプタを含んでよい。なお、操作対象物制御装置1が通信を行わない場合には、通信I/F320はなくともよい。
【0078】
BIOS340は、操作対象物制御装置1の起動時にCPU310が実行するブートプログラムや、操作対象物制御装置1がハードウェアに依存するプログラム等を記録する。
【0079】
表示装置350は、ブラウン管液晶装置(CRT)、液晶表示装置(LCD)等のディスプレイ装置を含む。
【0080】
I/Oコントローラ360には、ハード・ディスク380、光ディスクドライブ390、および半導体メモリ410等の記憶装置420を接続することができる。
【0081】
入力装置370は、ユーザの動作の入力を行うためのものであり、動作検出部に対応する。
【0082】
ハード・ディスク380は、本ハードウェアを操作対象物制御装置1として機能させるための各種プログラム、本発明の機能を実行するプログラムおよび後述するテーブルおよびレコードを記憶する。なお、操作対象物制御装置1は、外部に別途設けたハード・ディスク(図示せず)を外部記憶装置として利用することもできる。
【0083】
光ディスクドライブ390としては、例えば、DVD−ROMドライブ、CD−ROMドライブ、DVD−RAMドライブ、CD−RAMドライブを使用することができる。この場合は各ドライブに対応した光ディスク400を使用する。光ディスク400から光ディスクドライブ390によりプログラムまたはデータを読み取り、I/Oコントローラ360を介してメインメモリ330またはハード・ディスク380に提供することもできる。
【0084】
なお、本発明でいうコンピュータとは、記憶装置420、CPU310等を備えた情報処理装置をいい、編集用端末1は、記憶装置420、CPU310等を備えた情報処理装置により構成され、この情報処理装置は、本発明のコンピュータの概念に含まれる。
尚、編集用端末1は、本発明の原理が適用可能である限り、携帯電話、PDA(Personal Data Assistant)、ゲーム機等の様々な端末で実現してよい。
【図面の簡単な説明】
【0085】
【図1】本実施形態に係る操作対象物制御装置の機能構成を示す図である。
【図2】BVH形式によるスケルトンデータのXMLファイルの一例を示す図である。
【図3】BVH形式によるスケルトンデータのXMLファイルタグ構造を示す図である。
【図4】BVH形式による動作データのXMLファイルの一例を示す図である。
【図5】BVH形式による動作データのXMLファイルタグ構造を示す図である。
【図6】BVH形式による動作データの絶対座標、および特徴量のXMLファイルの一例を示す図である。
【図7】BVH形式による動作データの絶対座標、および特徴量のXMLファイルタグ構造を示す図である。
【図8】MusicXMLの論理構造例を示す。
【図9】楽譜のMusicXMLの1部を示す図である。
【図10】フィルタDBに蓄積されているフィルタの適用ルールおよびフィルタ情報のXMLファイルの一例を示す図である。
【図11】フィルタの適用ルールおよびフィルタ情報のXMLファイルタグ構造を示す図である。
【図12】アバター動作選定処理のフローチャートである。
【図13】ユーザの動作を曲に合わせて変化させてアバターにさせる例を示す図である。
【図14】本実施形態に係る操作対象物制御装置のハードウェア構成を示す図である。
【符号の説明】
【0086】
1 操作対象物制御装置
10 ユーザ動作取得部
11 動作特徴量抽出部
12 曲情報取得部
13 フィルタ検索部
14 動作特徴量変換部
15 アバター動作取得部
20 アバター動作DB
21 曲DB
22 フィルタDB



【特許請求の範囲】
【請求項1】
ユーザの少なくとも身体の一部の動作を検出してその動作に基づいて操作対象物の動作を選定する操作対象物制御装置であって、
前記ユーザの動作を検出する動作検出部と、
前記動作検出部により検出されたユーザの動作を所定の間隔毎に取得する動作取得部と、
前記動作取得部にて取得されたユーザの動作時系列に対して周波数変換を行って得られる周波数成分を要素とする動作特徴量を抽出する動作特徴量抽出部と、
前記動作特徴量の周波数成分に重み付けを行うフィルタを記憶するフィルタ記憶部と、
前記操作対象物の動作時系列が予め記憶されている操作対象物動作記憶部と、
前記フィルタ記憶部から前記ユーザまたは前記操作対象物の環境情報に基づいて取得されたフィルタを用いて、前記動作特徴量の変換を行う動作特徴量変換部と、
前記操作対象物動作記憶部の動作時系列から求められる操作対象物の動作特徴量が、前記動作特徴量変換部にて変換された動作特徴量に近い前記操作対象物動作記憶部の動作時系列を取得する操作対象物動作取得部と、
を備えた操作対象物制御装置。
【請求項2】
操作対象物動作取得部は、前記動作特徴量変換部にて重み付けが行われた動作特徴量を逆周波数変換して得られた動作時系列と、前記操作対象物動作記憶部の動作時系列との相関係数を算出し、相関係数がもっとも1に近い前記操作対象物動作記憶部の動作時系列を取得する、請求項1に記載の操作対象物制御装置。
【請求項3】
前記動作特徴量変換部は前記フィルタを周波数変換してから用いる、請求項1に記載の操作対象物制御装置。
【請求項4】
前記操作対象物の動作は1以上の動作点のツリー構造にて表される、請求項1に記載の操作対象物制御装置。
【請求項5】
前記操作対象物動作記憶部および前記フィルタ記憶部は、リレーショナルデータベースまたは拡張マークアップ言語(XML)データベースである、請求項4に記載の操作対象物制御装置。
【請求項6】
前記ユーザまたは前記操作対象物の環境情報は、前記ユーザが動作を行っている間に再生されている曲の情報であり、
前記曲の情報が記憶されている曲情報記憶部を更に備えた、請求項1に記載の操作対象物制御装置。
【請求項7】
前記ユーザの動作を取得する所定の間隔は、前記曲の1小節を1以上の数で分割した間隔である、請求項6に記載の操作対象物制御装置。
【請求項8】
ユーザの少なくとも身体の一部の動作を検出してその動作に基づいて操作対象物の動作を選定するための方法であって、
前記ユーザの動作を所定の間隔毎に取得するステップと、
前記ユーザの動作時系列に対して周波数変換を行って得られる周波数成分を要素とする動作特徴量を抽出するステップと、
前記動作特徴量のうち周波数成分に重み付けを行うために予め記憶されている前記ユーザまたは前記操作対象物の環境情報に基づいて、フィルタを取得するステップと、
前記フィルタを用いて、前記動作特徴量の変換を行うステップと、
予め記憶されている前記操作対象物の動作時系列から求められる操作対象物の動作特徴量が、前記変換された動作特徴量に近い前記動作時系列を取得するステップと、
を含む操作対象物の動作を選定する方法。
【請求項9】
更に、予め記憶されている前記操作対象物の動作時系列と、前記重み付けが行われた動作特徴量を逆周波数変換して得られた動作時系列と、前記動作時系列の相関係数を算出し、相関係数がもっとも1に近い前記動作時系列を取得するステップを含む、請求項8に記載の方法。
【請求項10】
前記動作特徴量の変換を行う際に、前記フィルタを周波数変換してから用いる、請求項8に記載の方法。
【請求項11】
前記操作対象物の動作は1以上の動作点のツリー構造により表される、請求項8に記載の操作対象物制御方法。
【請求項12】
前記ユーザまたは前記操作対象物の環境情報は、前記ユーザが動作を行っている間に再生されている曲の情報である、請求項8に記載の方法。
【請求項13】
前記ユーザの動作を取得する所定の間隔は、前記曲の1小節を1以上の数で分割した間隔である、請求項12に記載の方法。
【請求項14】
ユーザの少なくとも身体の一部の動作を検出してその動作に基づいて操作対象物の動作を選定するシステムであって、
ユーザの動作を検出する動作検出部と、
前記動作検出部により検出されたユーザの動作を所定の間隔毎に取得する動作取得部と、
前記動作取得部にて取得されたユーザの動作時系列に対して周波数変換を行って得られる周波数成分を要素とする動作特徴量を抽出する動作特徴量抽出部と、
前記動作特徴量のうち周波数成分に重み付けを行うフィルタを記憶するフィルタ記憶部と、
前記操作対象物の動作時系列が予め記憶されている操作対象物動作記憶部と、
前記フィルタ記憶部から前記ユーザまたは前記操作対象物の環境情報に基づいて取得されたフィルタを用いて、前記動作特徴量の変換を行う動作特徴量変換部と、
前記操作対象物動作記憶部の動作時系列から求められる操作対象物の動作特徴量が、前記動作特徴量変換部にて変換された動作特徴量に近い前記操作対象物動作記憶部の動作時系列を取得する操作対象物動作取得部と、
を備えた操作対象物の動作を選定する操作対象物制御システム。
【請求項15】
操作対象物動作取得部は、前記動作特徴量変換部にて重み付けが行われた動作特徴量を逆周波数変換して得られた動作時系列と、前記操作対象物動作記憶部の動作時系列の相関係数を算出し、相関係数がもっとも1に近い前記操作対象物動作記憶部の動作時系列を取得する請求項14に記載の操作対象物制御システム。
【請求項16】
前記動作特徴量変換部は、前記フィルタを周波数変換してから用いる請求項14に記載の操作対象物制御システム。
【請求項17】
前記操作対象物の動作は1以上の動作点のツリー構造により表される、請求項14に記載の操作対象物制御システム。
【請求項18】
前記操作対象物動作記憶部および前記フィルタ記憶部は、リレーショナルデータベースまたは拡張マークアップ言語(XML)データベースである、請求項17に記載の操作対象物制御システム。
【請求項19】
コンピュータにより、ユーザの少なくとも身体の一部の動作を検出してその動作に基づいて操作対象物の動作を選定するためのプログラムであって、
前記コンピュータをして、
前記ユーザの動作を所定の間隔毎に取得するステップと、
前記ユーザの動作時系列に対して周波数変換を行って得られる周波数成分を要素とする動作特徴量を抽出するステップと、
前記動作特徴量のうち周波数成分に重み付けを行うために予め記憶されている前記ユーザまたは前記操作対象物の環境情報に基づいて、フィルタを取得するステップと、
前記フィルタを用いて、前記動作特徴量の変換を行うステップと、
予め記憶されている前記操作対象物の動作時系列から求められる操作対象物の動作特徴量が、前記変換された動作特徴量に近い前記動作時系列を取得するステップと、
を実行させる、プログラム。
【請求項20】
更に、予め記憶されている前記操作対象物の動作時系列と、前記重み付けが行われた動作特徴量を逆周波数変換して得られた動作時系列と、前記動作時系列の相関係数を算出し、相関係数がもっとも1に近い前記動作時系列を取得するステップを含む、請求項19に記載のプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate


【公開番号】特開2009−261533(P2009−261533A)
【公開日】平成21年11月12日(2009.11.12)
【国際特許分類】
【出願番号】特願2008−113241(P2008−113241)
【出願日】平成20年4月23日(2008.4.23)
【出願人】(390009531)インターナショナル・ビジネス・マシーンズ・コーポレーション (4,084)
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MASCHINES CORPORATION
【復代理人】
【識別番号】100106002
【弁理士】
【氏名又は名称】正林 真之
【Fターム(参考)】