(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0020】
以下、図面を参照し、本発明の実施形態について説明する。
図1は、本発明の一実施形態に係る映像コンテンツ生成装置1の構成を示すブロック図である。
図1において、映像コンテンツ生成装置1は、動き解析部11、入力部12、音楽解析部13、コンテンツ生成部14、映像データ生成部15及びコンテンツ表示部16を有する。
【0021】
映像コンテンツ生成装置1には、映像コンテンツ生成対象の楽曲の音楽データが楽曲ファイル3から入力される。又、映像コンテンツ生成装置1には、動きデータが動きデータベース2−1,2−2から入力される。動きデータベース2−1,2−2は、一般に利用可能な動きデータを多数蓄積している。本実施形態では、人の動きデータを扱い、人の動きデータとして、
図2に例示されるように定義された人体スケルトン型動きデータを用いる。
【0022】
図2は、人の動きデータの定義例の概略図であり、人のスケルトン型動きデータ(人体スケルトン型動きデータ)の定義例である。人体スケルトン型動きデータは、人の骨格を基に、骨及び骨の連結点(ジョイント)を用い、一ジョイントを根(ルート)とし、ルートからジョイント経由で順次連結される骨の構造を木(ツリー)構造として定義される。
図2には、人体スケルトン型動きデータの定義の一部分のみを示している。
図2において、ジョイント100は腰の部分であり、ルートとして定義される。ジョイント101は左腕の肘の部分、ジョイント102は左腕の手首の部分、ジョイント103は右腕の肘の部分、ジョイント104は右腕の手首の部分、ジョイント105は左足の膝の部分、ジョイント106は左足の足首の部分、ジョイント107は右足の膝の部分、ジョイント108は右足の足首の部分、である。
【0023】
スケルトン型動きデータは、スケルトン型対象物の各ジョイントの動きを記録したデータであり、スケルトン型対象物としては人体や動物、ロボットなどが適用可能である。スケルトン型動きデータとしては、各ジョイントの位置情報や角度情報、速度情報、加速度情報などが利用可能である。ここでは、人体スケルトン型動きデータとして、人体スケルトンの角度情報と加速度情報を例に挙げて説明する。
【0024】
人体スケルトン型角度情報データは、人の一連の動きを複数の姿勢(ポーズ)の連続により表すものであり、人の基本ポーズ(neutral pose)を表す基本ポーズデータと、実際の人の動きの中の各ポーズを表すポーズ毎のフレームデータとを有する。基本ポーズデータは、基本ポーズのときのルートの位置及び各ジョイントの位置、並びに各骨の長さなどの情報を有する。基本ポーズデータにより基本ポーズが特定される。フレームデータは、基本ポーズからの移動量をジョイント毎に表す。ここでは、移動量として角度情報を利用する。各フレームデータにより、基本ポーズに対して各移動量が加味された各ポーズが特定される。これにより、各フレームデータによって特定される各ポーズの連続により、人の一連の動きが特定される。なお、人体スケルトン型角度情報データは、人の動きをカメラ撮影した映像からモーションキャプチャ処理によって作成したり、或いは、キーフレームアニメーションの手作業によって作成したりすることができる。
人体スケルトン型加速度情報データは、人の各ジョイントの加速度をポーズ毎のフレームデータと複数のポーズの連続により表すものである。なお、人体スケルトン型加速度情報データは、加速度計で記録したり、映像や動きデータから算出したりすることができる。
【0025】
なお、本実施形態に係る以下の説明においては、人体スケルトン型動きデータのことを単に「動きデータ」と称する。
【0026】
以下、
図1に示される映像コンテンツ生成装置1の各部について順次説明する。
【0027】
[動き解析部]
動き解析部11は、動きデータベース2−1,2−2から動きデータを取得し、取得した動きデータを解析して動き特徴量を取得し、取得した動き特徴量をモーショングラフに格納する。動き解析部11は、動きデータベース2−1,2−2に蓄積される全ての動きデータを対象にする。但し、動きデータベース2−1の動きデータには全て同じラベルが付与されている。一方、動きデータベース2−2の動きデータに対しては、動きデータ毎に、独自のラベルが付与されている。動き解析部11の処理は、実際に映像コンテンツを生成する段階の前に、事前の準備段階として行われる。
【0028】
図3は、
図1に示す動き解析部11の構成を示すブロック図である。
図3において、動き解析部11は、ビート抽出部111、属性指定部112及びモーショングラフ生成部113を有する。
【0029】
[ビート抽出部]
ビート抽出部111は、入力された動きデータからビート時刻を検出する。ここで、動きデータのビート時刻は反復的な動きの方向又は強度が変化する時刻である、と定義する。例えば、ダンスなどの動きでは拍子を打つタイミングが相当する。ビート抽出部111は、入力された動きデータを短時間の動きデータに分割し、分割した動き区間から主成分分析によってビート時刻を検出する。
【0030】
以下、本実施形態に係るビート時刻検出方法を説明する。
【0031】
[物理量変換ステップ]
物理量変換ステップでは、入力された動きデータにおいて、時刻tにおけるジョイント相対位置を算出する。ジョイント相対位置は、ルートに対するジョイントの相対的な位置である。
【0032】
ここで、ジョイント相対位置の算出方法を説明する。
まず、人体スケルトン型角度情報データ内の基本ポーズデータとフレームデータを用いて、ジョイント位置を算出する。基本ポーズデータは、基本ポーズのときのルートの位置及び各ジョイントの位置、並びに各骨の長さなど、基本ポーズを特定する情報を有する。フレームデータは、ジョイント毎に、基本ポーズからの移動量の情報を有する。ここでは、移動量として角度情報を利用する。この場合、時刻tにおけるk番目のジョイントの位置p
k(t)は、(1)式および(2)式により算出される。p
k(t)は3次元座標で表される。なお、時刻tはフレームデータの時刻である。本実施形態では、時刻tを単に「フレームインデックス」として扱う。これにより、時刻tは、0,1,2,・・・,T−1の値をとる。Tは、動きデータに含まれるフレームの個数である。
【0035】
但し、0番目(i=0)のジョイントはルートである。R
axisi−1,i(t)は、i番目のジョイントとその親ジョイント(「i−1」番目のジョイント)間の座標回転マトリックスであり、基本ポーズデータに含まれる。各ジョイントにはローカル座標系が定義されており、座標回転マトリックスは親子関係にあるジョイント間のローカル座標系の対応関係を表す。R
i(t)は、i番目のジョイントのローカル座標系におけるi番目のジョイントの回転マトリックスであり、フレームデータに含まれる角度情報である。T
i(t)は、i番目のジョイントとその親ジョイント間の遷移マトリックスであり、基本ポーズデータに含まれる。遷移マトリックスは、i番目のジョイントとその親ジョイント間の骨の長さを表す。
【0036】
次いで、時刻tにおける、ルートに対するk番目のジョイントの相対位置(ジョイント相対位置)p’
k(t)を(3)式により算出する。
【0038】
但し、p
root(t)は時刻tにおけるルート(0番目のジョイント)の位置(p
0(t))である。
【0039】
これにより、時刻tのフレーム「x(t)」は、「x(t)={p’
1(t),p’
2(t),・・・,p’
K(t)}」と表される。但し、Kは、ルートを除いたジョイントの個数である。
【0040】
[データ分割ステップ]
データ分割ステップでは、ジョイント相対位置データを、一定時間の区間に分割する。データ分割ステップでは、各ジョイントのジョイント相対位置データ「p’
k(t)」に対して、それぞれデータ分割処理を行う。
図4,
図5にデータ分割処理の概念を示す。データ分割処理では、ジョイント相対位置データを一定時間(一定数のフレーム分に対応)の区間に分割する。分割区間の長さは、適宜、設定可能である。分割区間の長さは、例えば、1フレーム当たりの時間の60倍である。このとき、
図4に示されるように、各区間が重複しないようにしてもよく、或いは、
図5に示されるように、各区間が重複区間(オーバーラップ)を有するようにしてもよい。重複区間の長さは、適宜、設定可能である。重複区間の長さは、例えば、分割区間の長さの半分である。
【0041】
[主成分分析ステップ]
主成分分析ステップでは、データ分割ステップによって分割されたジョイント相対位置データに対し、各区間で主成分分析処理を行う。ここで、時刻tのフレーム「x(t)」を用いて、一区間のデータ「X」を「X={x(t1),x(t2),・・・,x(tN)}と表す。但し、Nは区間長(区間内に含まれるフレームの個数)である。Xは、M行N列の行列である(但し、M=3×K)。
【0042】
主成分分析処理では、Xに対して主成分分析処理を行い、Xを主成分空間へ変換する。
【0043】
ここで、主成分分析方法を説明する。
まず、(4)式により、Xから平均値を除いたN行M列の行列Dを算出する。
【0045】
次いで、(5)式により、N行M列の行列Dに対して特異値分解(Singular Value Decomposition)を行う。
【0047】
但し、Uは、N行N列のユニタリ行列である。Σは、N行M列の負でない対角要素を降順にもつ対角行列であり、主成分空間の座標の分散を表す。Vは、M行M列のユニタリ行列であり、主成分に対する係数(principal component)である。
【0048】
次いで、(6)式により、N行M列の行列Dを主成分空間へ変換する。M行N列の行列Yは、主成分空間の座標を表す。
【0050】
主成分分析ステップでは、区間毎に、主成分空間の座標を表す行列(主成分座標行列)Yと、主成分に対する係数の行列(主成分係数行列)Vをメモリに保存する。
【0051】
なお、元空間の座標を表す行列Xと主成分座標行列Yは、(6)式と(7)式により相互に変換することができる。
【0053】
また、上位のr個の主成分によって、(8)式により変換することができる。
【0055】
但し、V
rは、主成分係数行列V内の上位のr個の行から成るM行r列の行列である。Y
rは、主成分座標行列Y内の上位のr個の列から成るr行N列の行列である。X
〜は、復元されたM行N列の行列である。
【0056】
なお、元空間の一部の自由度だけを主成分分析処理することも可能である。例えば、足の動きだけでビートを表現することができる場合には、足に関するジョイント相対位置データのみから生成したM’行N列の行列X’に対して、(4)式、(5)式及び(6)式により主成分分析処理を行う。
【0057】
[主成分選択ステップ]
主成分選択ステップでは、各区間において、主成分座標行列Yから主成分を一つ選択する。
【0058】
ここで、主成分選択方法を説明する。
(ユーザからの指定がない場合)
ユーザからの指定がない場合には、主成分座標行列Y内の第1主成分(主成分座標行列Yの第1行)を選択する。第1主成分は、一区間における時間関連性がより強いために、動きの変化を表現しており、一般的に、ビート時刻に関する十分な情報を有する。
【0059】
(ユーザからの指定がある場合)
ユーザによって主成分が指定されている場合には、その指定された主成分(第k主成分(主成分座標行列Yの第k行)、1≦k≦K)を選択する。この場合、映像コンテンツ生成装置1には、動きデータと共に、主成分の指定情報が入力される。若しくは、予め主成分の指定情報を固定的に設定しておいてもよい。
なお、第1主成分以外の第n主成分(1<n≦K)が選択される場合の例としては、体の一部分の動きがビートを表現しているものなどが挙げられる。例えば、最も大きい動きが体の回転である場合において、足の着地がビートをよく表現しているとする。すると、足の動きを表す第k主成分がビート時刻に関する十分な情報を有する。
【0060】
主成分選択ステップでは、区間毎に、選択した主成分を示す情報(例えば、主成分番号「k(kは1からKまでの自然数)」をメモリに保存する。
【0061】
[主成分座標連結ステップ]
主成分座標連結ステップでは、主成分選択ステップによって選択された各区間の主成分の座標を、時系列に沿って連結する。この主成分座標連結処理では、連続する2つの区間の境界部分において、主成分の座標が滑らかに連結されるように、主成分の座標を調整する。
【0062】
図6に、本実施形態に係る主成分座標連結処理を説明するための概念図を示す。本実施形態では、時系列に従って、先頭の区間から順番に主成分座標連結処理を行ってゆく。
図6において、ある区間(前区間)までの主成分座標連結処理が終了している。そして、その前区間に対して、次の区間(当区間)を連結するための主成分座標連結処理を行う。この主成分座標連結処理では、前区間の主成分座標に対し、当区間の主成分座標が滑らかに連結されるように、当区間の主成分座標を調整する。この主成分座標の調整処理では、主成分選択ステップによって選択された当区間の主成分座標(元座標)に対し、符号反転又は座標シフトを行う。
【0063】
ここで、主成分座標連結処理を説明する。
【0064】
主成分座標連結ステップS11:主成分選択ステップによって選択された当区間の主成分の座標(第k主成分の元座標)Y
kに対し、当区間の主成分係数行列Vから、第k主成分に対する係数V
kを取得する。さらに、メモリに保存されている前区間の主成分係数行列Vから、第k主成分に対する係数V
kpreを取得する。
【0065】
主成分座標連結ステップS12:当区間に係る第k主成分に対する係数V
kと前区間に係る第k主成分に対する係数V
kpreとの関係に基づいて、当区間に係る第k主成分の元座標を符号反転するか否かを判定する。この符号反転の判定は、(9)式により行う。(9)式による判定の結果、符号反転する場合には、当区間の第k主成分の元座標Y
kに対して符号反転を行うと共に、当区間の主成分係数行列Vに対しても符号反転を行う。一方、(9)式による判定の結果、符号反転しない場合には、当区間の第k主成分の元座標Y
k及び当区間の主成分係数行列Vともに、そのままの値を主成分座標連結ステップS12の処理結果とする。
【0067】
但し、Y
kは、当区間で選択された主成分の座標(第k主成分の元座標)である。Vは、当区間の主成分係数行列である。V
kは、当区間に係る第k主成分に対する係数である。V
kpreは、前区間に係る第k主成分に対する係数である。(V
k・V
kpre)は、V
kとV
kpreの内積である。Y
k’は、当区間で選択された主成分の座標(第k主成分の元座標)Y
kに対する主成分座標連結ステップS12の処理結果である。V’は、当区間の主成分係数行列Vに対する主成分座標連結ステップS12の処理結果である。
【0068】
主成分座標連結ステップS13:主成分座標連結ステップS12の処理結果の主成分座標Y
k’に対し、座標シフトを行う。
(区間のオーバーラップがない場合)
区間のオーバーラップがない場合(
図4に対応)には、(10)式により座標シフトを行う。この場合、前区間の主成分座標行列Yから、前区間の第tNフレームにおける第k主成分の座標Y
kpre(tN)を取得する。
【0070】
但し、Y
k’(t1)は、ステップS12の処理結果の主成分座標Y
k’のうち、第t1フレームの座標である。Y
k”(t2)は、(10)式の最初の計算式の計算結果の座標Y
k”のうち、第t2フレームの座標である。
(10)式の最初の計算式の計算結果の座標Y
k”に対し、第t1フレームの座標Y
k”(t1)をY
kopt(t1)に置き換える。この置き換え後の座標Y
k”が、座標シフト結果の座標である。
【0071】
(区間のオーバーラップがある場合)
区間のオーバーラップがある場合(
図5に対応)には、(11)式により座標シフトを行う。この場合、前区間の主成分座標行列Yから、前区間の第(tN−L
ol+1)フレームにおける第k主成分の座標Y
kpre(tN−L
ol+1)と、前区間の第(tN−L
ol+1+i)フレームにおける第k主成分の座標Y
kpre(tN−L
ol+1+i)とを取得する。但し、i=1,2,・・・,L
olである。L
olは、前区間と当区間で重複している区間(オーバーラップ)の長さである。
【0073】
但し、Y
k’(t1)は、ステップS12の処理結果の主成分座標Y
k’のうち、第t1フレームの座標である。Y
k”(t1+i)は、(11)式の最初の計算式の計算結果の座標Y
k”のうち、第(t1+i)フレームの座標である。
(11)式の最初の計算式の計算結果の座標Y
k”に対し、第(t1+i)フレームの座標Y
k”(t1+i)をY
kopt(t1+i)に置き換える。この置き換え後の座標Y
k”が、座標シフト結果の座標である。
【0074】
主成分座標連結ステップS14:当区間において、主成分座標連結ステップS12の処理結果の座標Y
k’に対して、主成分座標連結ステップS13の処理結果の座標Y
kopt(t1)又はY
kopt(t1+i)を反映する。これにより、当区間の主成分座標は、前区間の主成分座標に対して滑らかに連結されるものとなる。
【0075】
主成分座標連結ステップでは、上記した主成分座標連結処理を最初の区間から最後の区間まで行う。これにより、連結後の全区間の主成分座標「y(t)、t=0,1,2,・・・,T−1」が求まる。但し、Tは、動きデータに含まれるフレームの個数である。
【0076】
[ビート抽出ステップ]
ビート抽出ステップでは、主成分座標連結ステップによって算出された連結後の全区間の主成分座標y(t)から、極値b(j)を算出する。この算出結果の極値b(j)がビートに対応する。ビートの集合Bは、(12)式で表される。
【0079】
なお、ビートの集合の算出は、上記した方法以外の方法でも可能である。
例えば、ビート抽出ステップでは、主成分座標連結ステップによって算出された連結後の全区間の主成分座標から自己相関値を算出し、該自己相関値の極値b(j)をビートに対応するものとして算出することができる。
また、ビート抽出ステップでは、主成分座標連結ステップによって、連結後の隣区間の主成分係数から算出した内積((9)式によるもの)の自己相関値を算出し、該自己相関値の極値b(j)をビートに対応するものとして算出することができる。
【0080】
[後処理ステップ]
後処理ステップでは、ビート抽出ステップによって算出されたビート集合Bから、ビート時刻を検出する。
【0081】
ここで、ビート時刻検出処理を説明する。
まず、ビート集合B内の各極値間を、(13)式により正弦曲線(sinusoid)で近似する。
【0083】
但し、s
j−1(t)は、(j−1)番目の極値b(j−1)からj番目の極値b(j)までの区間の正弦近似値である。tはフレームに対応する時刻であり、「t=0,1,2,・・・,T−1」である。Tは、動きデータに含まれるフレームの個数である。
【0084】
図7に、(13)式による正弦近似処理の概念図を示す。
図7において、1番目の極値b(1)から2番目の極値b(2)までの区間a1(j=2の場合の区間)は、s
1(t)で近似される。同様に、2番目の極値b(2)から3番目の極値b(3)までの区間a2(j=3の場合の区間)はs
2(t)で近似され、3番目の極値b(3)から4番目の極値b(4)までの区間a3(j=4の場合の区間)はs
3(t)で近似され、4番目の極値b(4)から5番目の極値b(5)までの区間a4(j=5の場合の区間)はs
4(t)で近似される。
【0085】
次いで、正弦近似値「s
j−1(t)、j=2,3,・・・,J」に対してフーリエ変換を行う。そのフーリエ変換処理には、所定のFFTポイント数Lのハン窓を用いたFFT(Fast Fourier Transform)演算器を使用する。そして、そのフーリエ変換の結果に基づいて、該フーリエ変換に係る周波数範囲のうちから最大の成分を有する周波数(最大成分周波数)fmaxを検出する。そして、ビート間隔TBを「TB=Fs÷fmax」なる計算式により算出する。但し、Fsは、1秒当たりのフレーム数である。
【0086】
次いで、正弦近似値「s
j−1(t)、j=2,3,・・・,J」と、(14)式で定義される基準値「s’(t)」との間の最大相関初期位相を(15)式により算出する。
【0089】
次いで、(16)式により、ビート時刻eb(j)の集合EBを算出する。但し、EJは、ビート時刻eb(j)の個数である。
【0091】
以上が本実施形態に係るビート時刻検出方法の説明である。
【0092】
ビート抽出部111は、各動きデータについて、ビート時刻eb(j)の集合EBを属性指定部112へ出力する。このとき、ビート抽出部111が主成分分析処理を行った区間(主成分分析区間)とビート時刻eb(j)の対応関係を表す情報も属性指定部112へ出力する。これにより、あるビート時刻がどの主成分分析区間に属するのかが分かる。
【0093】
[属性指定部]
属性指定部は、各動きデータについて、ビート抽出部111が算出した集合EBに含まれるビート時刻eb(j)に基づいて各ビート間に属性値を設定する。
まず、動きデータベース2−1の動きデータに対しては、全てのビート間に属性値「0」を設定する。一方、動きデータベース2−2の動きデータに対しては、ラベルに応じた所定の属性値を設定する。
図8には、動きデータベース2−2の動きデータに付与されているラベルに対応する属性値が例示されている。
図8の例では、ラベル「A」,「B」,「C」,・・・に対応する適切な属性値「10」,「20」,「30]・・・が予め準備されている。
【0094】
[モーショングラフ生成部]
モーショングラフ生成部113は、各動きデータの、ビート時刻eb(j)の集合EB及び属性値を用いて、モーショングラフを生成する。モーショングラフについては非特許文献2に開示されている。モーショングラフは、ノード(頂点)群とノード間の連結関係を表すエッジ(枝)群とエッジの重みから構成される。エッジには双方向と単方向の2種類がある。
【0095】
図9は、本実施形態に係るモーショングラフ生成方法の流れを示す概念図である。以下、
図9を参照して、モーショングラフを生成する手順を説明する。
【0096】
[ビートフレーム抽出ステップ]
まず、ビートフレーム抽出ステップでは、全ての動きデータから、ビート時刻に該当するフレーム(ビートフレーム)を全て抽出する。この抽出されたビートフレームの集合をF
iALLBと表す。
【0097】
[連結性算出ステップ]
次いで、連結性算出ステップでは、集合F
iALLBに含まれる全ビートフレームを対象とした全てのペアについて、(17)式又は(18)式により距離を算出する。あるビートフレームF
iBとあるビートフレームF
jBとの距離をd(F
iB,F
jB)と表す。
【0099】
但し、q
i,kはビートフレームF
iBのk番目のジョイントの四元数(quaternion)である。w
kはk番目のジョイントに係る重みである。重みw
kは予め設定される。
【0101】
但し、p
i,kはビートフレームF
iBのk番目のジョイントのルートに対する相対位置のベクトルである。つまり、p
i,kは、ルートの位置と方向は考えずに算出したビートフレームF
iBのk番目のジョイントの位置のベクトルである。
【0102】
なお、ビートフレーム間の距離は、対象ビートフレームにおけるポーズを構成する各ジョイントの位置、速度、加速度、角度、角速度、角加速度などの物理量の差分の重み付き平均として算出することができる。
【0103】
次いで、連結性算出ステップでは、(19)式により、連結性を算出する。あるビートフレームF
iBとあるビートフレームF
jBとの連結性をc(F
iB,F
jB)と表す。
【0105】
但し、d(F
iB)はビートフレームF
iBの前フレームと後フレームの間の距離である((17)式又は(18)式と同様の計算式で算出する)。THは予め設定される閾値である。
【0106】
連結性c(F
iB,F
jB)が1である場合、ビートフレームF
iBのポーズとビートフレームF
jBのポーズは似ていると判断できる。連結性c(F
iB,F
jB)が0である場合、ビートフレームF
iBのポーズとビートフレームF
jBのポーズは似ているとは判断できない。
【0107】
[モーショングラフ構築ステップ]
次いで、モーショングラフ構築ステップでは、まず、集合F
iALLBに含まれる全ビートフレームをそれぞれ、モーショングラフのノードに設定する。従って、モーショングラフのノード数の初期値は、集合F
iALLBに含まれるビートフレームの個数に一致する。
【0108】
次いで、連結性c(F
iB,F
jB)が1である場合、ビートフレームF
iBのノードとビートフレームF
jBのノードの間に双方向のエッジを設ける。連結性c(F
iB,F
jB)が0である場合には、ビートフレームF
iBのノードとビートフレームF
jBのノードの間に双方向のエッジを設けない。
【0109】
次いで、同じ動きデータの中で隣接するビートフレーム間には、単方向のエッジを設ける。単方向のエッジは、時間的に前のビートフレームのノードから後のビートフレームのノードへ向かう。
【0110】
次いで、双方向のエッジに対する重みを算出する。ビートフレームF
iBのノードとビートフレームF
jBのノードの間の双方向エッジに対する重みは、(20)式により算出する。
【0112】
次いで、単方向のエッジに対する重みを算出する。ビートフレームF
iBのノードとビートフレームF
jBのノードの間の単方向エッジに対する重みには、該当する動きデータの属性値を使用する。
【0113】
次いで、双方向エッジの両端のノード(ビートフレーム)に係る動きデータに対して、ブレンディング(blending)処理を行う。ブレンディング処理は、双方向エッジの方向ごとに、それぞれ行う。従って、一つの双方向エッジに対して、
図10(1),(2)に示されるように、2つのブレンディング処理を行うことになる。
図10は、ビートフレームiのノードとビートフレームjのノードの間の双方向エッジに係るブレンディング処理の概念図である。
図10(1)はビートフレームiのノードからビートフレームjのノードへ向かう方向に係るブレンディング処理を表し、
図10(2)はビートフレームjのノードからビートフレームiのノードへ向かう方向に係るブレンディング処理を表す。
【0114】
図11は、ブレンディング処理を説明する概念図であり、
図10(1)に対応している。ここでは、
図11を参照し、
図10(1)に示されるビートフレームiのノードからビートフレームjのノードへ向かう方向に係るブレンディング処理を例に挙げて説明する。
【0115】
ブレンディング処理では、ビートフレームiを有する動きデータ1とビートフレームjを有する動きデータ2に対して、動きのつながりが不自然にならないように、両者の動きデータの接続部分を混合した補間データ(ブレンディング動きデータ)1_2を生成する。本実施形態では、一定時間分のフレームを使用しクォータニオンによる球面線形補間を利用して連結部分を補間する。具体的には、動きデータ1と動きデータ2を接続する接続区間(区間長m、但し、mは所定値)のブレンディング動きデータ1_2を、動きデータ1のうち最後の区間長mのデータ1_mと動きデータ2のうち最初の区間長mのデータ2_mを用いて生成する。このとき、接続区間の区間長mに対する接続区間の先頭からの距離uの比(u/m)に応じて、データ1_mのうち距離uに対応するフレームiとデータ2_mのうち距離uに対応するフレームjを混合する。具体的には、(21)式および(22)式により、ブレンディング動きデータ1_2を構成する各フレームを生成する。なお、(21)式は、ある一つの骨についての式となっている。
【0118】
但し、mはブレンディング動きデータ1_2を構成するフレーム(ブレンディングフレーム)の総数(所定値)、uはブレンディングフレームの先頭からの順番(1≦u≦m)、q(k,u)はu番目のブレンディングフレームにおける第k骨の四元数、q(k,i)はフレームiにおける第k骨の四元数、q(j)はフレームjにおける第k骨の四元数、である。但し、ルートにはブレンディングを行わない。なお、(22)式はslerp(spherical linear interpolation)の算出式である。
【0119】
ブレンディング動きデータ1_2は、動きデータ1と動きデータ2の接続部分のデータとする。
【0120】
次いで、モーショングラフからデッドエンド(Dead end)を除去する。デッドエンドとは次数が1であるノードのことである。なお、モーショングラフにおいて、ノードに接続するエッジの数のことを次数という。また、ノードに入ってくるエッジの数のことを入次数、ノードから出て行くエッジの数のことを出次数という。
【0121】
モーショングラフからデッドエンドを除去すると、新たなデッドエンドが発生する可能性があるが、デッドエンドがなくなるまでデッドエンド除去を繰り返す。
【0122】
以上のモーショングラフ構築ステップによって、モーショングラフのデータが生成される。モーショングラフデータは、モーショングラフが有するノード(ビートフレーム)の情報と、ノード間のエッジ(双方向エッジまたは単方向エッジ)の情報(エッジの重みを含む)と、双方向エッジに対応する2方向分のブレンディング動きデータとを有する。
【0123】
モーショングラフ生成部113は、生成したモーショングラフデータをコンテンツ生成部14へ出力する。
【0124】
以上が動き解析部11に係る説明である。
【0125】
[音楽解析部]
映像コンテンツ生成装置1には、映像コンテンツ生成対象の楽曲の音楽データが楽曲ファイル3から入力される。音楽解析部13は、映像コンテンツ生成対象の楽曲の音楽データを解析して音楽特徴量を取得する。本実施形態では、非特許文献1に記載の技術を用いて、音楽データから、ビート間隔およびビート時刻を音楽特徴量として取得する。音楽解析部13は、音楽特徴量(ビート間隔およびビート時刻)をコンテンツ生成部14へ出力する。
【0126】
[入力部]
入力部12には、楽曲ファイル3からの映像コンテンツ生成対象の楽曲の音楽データと、動きデータベース2−2からの動きデータとが入力される。動きデータベース2−2から入力される各動きデータにはラベルが付与されている。
図12は、
図1に示す入力部12の構成を示すブロック図である。入力部12は、再生部121と動き候補提示部122と操作部123と属性値設定部124を有する。
【0127】
再生部121は、映像コンテンツ生成対象の楽曲の音楽データを再生する。動き候補提示部122は、動きデータベース2−2の動きデータをユーザに提示する。操作部123は、ユーザが、音楽データが再生された音楽を聴きながら、該音楽の再生している時間的な位置を示す再生時刻と、動き候補提示部122で提示された動きデータの中から再生時刻に対応付ける動きデータとを、指定するための手段を有する。
【0128】
属性値設定部124は、ある再生時刻に対応付けられた動きデータに付与されているラベルに応じて、当該再生時刻の属性値を設定する。まず、ユーザが、再生された音楽を聴きながら、任意のタイミングで操作部123の再生時刻指定手段を操作すると、属性値設定部124は、該操作時刻を再生時刻とする。次いで、ユーザが、動き候補提示部122で提示された動きデータの中から、任意の動きデータを操作部123の動きデータ指定手段で指定すると、属性値設定部124は、該指定された動きデータを該再生時刻に対応付ける。次いで、属性値設定部124は、該再生時刻に対応付けられた動きデータに付与されているラベルに対応する所定の属性値を、当該再生時刻から一定時間までの区間に対する属性値とする。
図13には、動きデータに付与されているラベルに対応する、音楽データの再生時刻の属性値が例示されている。
図13の例では、ラベル「指定なし」,「A」,「B」,「C」,・・・に対応する属性値「0」,「10」,「20」,「30]・・・が予め準備されている。属性値設定部124は、音楽データにおいて、属性値を設定しなかった区間に対して、属性値「0」を設定する(これは、ラベル「指定なし」に対応する処理である)。
【0129】
入力部12は、映像コンテンツ生成対象の楽曲の音楽データに関し、再生時刻と動きデータと属性値の組合せを示す情報をコンテンツ生成部14に出力する。
【0130】
[コンテンツ生成部]
まず、コンテンツ生成部14は、モーショングラフデータの中から、映像コンテンツ生成対象の楽曲とユーザの指定に合ったモーショングラフデータを選択する。具体的には、コンテンツ生成部14は、モーショングラフデータを用いて、動きデータと音楽データを対応付ける同期情報を生成する。以下、同期情報生成方法を説明する。
【0131】
[始点選択ステップ]
始点選択ステップでは、モーショングラフ内のノードから、映像コンテンツの動きの始点となるノードの候補(始点候補ノード)を選択する。始点候補ノードには、モーショングラフ内のノードであって、各動きデータの最初のビートフレームに対応するノードを全て抽出する。従って、始点候補ノードは、通常、複数ある。
【0132】
[最適パス探索ステップ]
次いで、最適パス探索ステップでは、モーショングラフ上の始点候補ノードからの最適パスを始点候補ノード毎に探索し、各始点候補ノードに係る最適パスの中から最小コストのパスを選択する。このパス探索方法には、非特許文献3に記載されるパス探索技術を用いる。非特許文献3に記載されるパス探索技術は、ある始点からダイナミックプログラミングで最適なパスを探索するものである。以下、最適パス探索ステップの詳細を説明する。
【0133】
まず、ある始点候補ノードuからモーショングラフ上の全てのノードiまでの各パスのコストを(23)式により算出する。始点候補ノードuに係る最初の最短パス算出操作は第1回の操作である。
【0135】
但し、shortestPath(i,1)は、第1回の最短パス算出操作による、始点候補ノードuからノードiまでのパスのコストである。edgeCost(u,i)はノードuからノードiまでのエッジコストである。エッジコストの計算式は(24)式である。エッジコストは毎回計算される。
【0137】
但し、w(i,j)はエッジの重みであり、I(k)は音楽のビートkとビートk+1間の属性値であり、wbiは双方向エッジの重みであり、E1は単方向エッジの集合であり、E2は双方向エッジの集合である。
【0138】
次いで、第2回目以降の第k回の最短パス算出操作では、(25)式により、始点候補ノードuからモーショングラフ上の全てのノードvまでの最適パスのコストを算出する。
【0140】
但し、Vはモーショングラフ上のノードの集合である。shortestPath(v,k)は、第k回の最短パス算出操作による、始点候補ノードuからノードvまでの最適パスのコストである。edgeCost(i,v)はノードiからノードvまでのエッジコストである。
【0141】
この(25)式を用いた第2回目以降の最短パス算出操作は、第K回まで繰り返し行う。但し、Kは映像コンテンツ生成対象の楽曲のビート数である。映像コンテンツ生成対象の楽曲のビート数Kは、映像コンテンツ生成対象の楽曲のビート時刻の総数に等しい。映像コンテンツ生成対象の楽曲のビート時刻は、音楽解析部13からコンテンツ生成部14に入力されるので、その入力された数を数えることによってビート数Kを求めることができる。
【0142】
上記(23)式および(25)式を用いた最短パス算出操作を、全ての始点候補ノードに対してそれぞれに行う。次いで、全ての始点候補ノードに係る第K回の最短パス算出操作結果から、(26)式により、最小コストのパスを選択する。
【0144】
但し、shortestPath(v,K)は、第K回の最短パス算出操作による、始点候補ノードuからノードvまでの最適パスのコストである。shortestPath(K)は、最小コストのパス(始点ノードuから終点ノードvまでのパス)のコストである。
【0145】
最適パス探索ステップでは、上記(26)式によって選択された最小コストのパスを探索結果の最適パスとする。この最適パスに含まれるK個のノードは、1個の始点ノードuと、(K−2)個の経由ノードiと、1個の終点ノードvである。ここで、始点候補ノードは、通常、複数あるので、上記探索結果の最適パスは始点候補ノードの数と同じ数だけある。それら最適パスの中から、コストが一番小さいパスとその始点を最終結果の最適パスとして選択する。この最終結果の最適パスに含まれるK個のノードは、1個の最適始点ノードu
optと、(K−2)個の経由ノードi
optと、1個の終点ノードv
optである。
【0146】
[同期情報生成ステップ]
同期情報生成ステップでは、最適パス探索ステップの最終結果の最適パスに従って、動きデータと音楽データを対応付ける同期情報を生成する。以下、同期情報生成ステップの詳細を説明する。
【0147】
まず、最適パス探索ステップの最終結果の最適パスに含まれるK個のノード(1個の始点ノードu
optと、(K−2)個の経由ノードi
optと、1個の終点ノードv
opt)に対応するK個のビートフレーム(1個の始点ビートフレームと、(K−2)個の経由ビートフレームと、1個の終点ビートフレーム)について、最適パスの順番で隣り合うビートフレーム間の時間を求める。さらに、各隣接ビートフレーム間のフレームレートを求める。また、映像コンテンツ生成対象の楽曲のK個のビートについて、時間的に隣り合うビート間の時間を求める。
【0148】
次いで、楽曲のビート間隔に動きのビート間隔を等しくするように、(27)式により、動きのフレームレートを増減させる調整を行う。
図14に、動きのフレームレートを調整する処理の概念図を示す。(27)式は、n番目のビートフレームと(n+1)番目のビートフレームの間のフレームレートを算出するための計算式である(但し、nは1から(K−1)までの自然数である)。
【0150】
但し、t
motionnode2は隣接ビートフレームのうち先のビートフレームの時刻、t
motionnode1は該隣接ビートフレームのうち後のビートフレームの時刻である。t
musicnode2は楽曲の隣接ビートのうち先のビートの時刻、t
musicnode1は該隣接ビートのうち後のビートの時刻である。rate_oldは元のフレームレートである。rate_newは調整後のフレームレートである。
【0151】
コンテンツ生成部14は、上記した同期情報生成方法によって、映像コンテンツの動きの始点となる1個の始点ビートフレームと、映像コンテンツの動きの終点となる1個の終点ビートフレームと、始点ビートフレームから終点ビートフレームに至るまでに経由する(K−2)個の経由ビートフレームと、各隣接ビートフレーム間の調整後のフレームレートとを得る。コンテンツ生成部14は、始点ビートフレームの情報と経由ビートフレームの情報と終点ビートフレームの情報と調整後のフレームレートの情報と該ビートフレーム間のブレンディング動きデータを同期情報として映像データ生成部15に出力する。なお、ブレンディング動きデータは、最適パス探索ステップの探索結果の最適パスに沿った方向のデータのみでよい。
【0152】
[映像データ生成部]
映像データ生成部15は、コンテンツ生成部14から入力された同期情報に基づいて、映像コンテンツ生成対象の楽曲の音楽データとともに再生される映像データを生成する。具体的には、始点ビートフレームから経由ビートフレームを経由して終点ビートフレームに至るまでに必要な動きデータを動きデータベース2−1,2−2から取得する。
【0153】
次いで、取得した動きデータ間を連結する部分(双方向エッジに対応する部分)に対してブレンディング動きデータで置換する。このとき、動きデータの連結部分において、動きデータのルート座標と方向の平行移動を行う。動きデータが連結される際に各動きデータのルート座標は、各動きデータに独自のローカル座標のままである。このままでは、連結後の動きデータの再生画像は、ルート座標が整合されていないために、スムーズな動きにならない。このため、動きデータの連結部分において、後の動きデータのルート座標を前の動きデータの最後のフレームで表現している位置へオフセットする。これにより、動きデータの連結部分における補間処理を行い、連結後の動きデータの再生画像がスムーズな動きとなるようにする。同様に、動きデータが連結される際に各動きデータのルート方向は、後の動きデータのルート方向を前の動きデータの最後のフレームで表現している方向へオフセットする。
【0154】
次いで、連結された動きデータに対して、各隣接ビートフレーム間の調整後のフレームレートの情報を付加する。映像データ生成部15は、この生成した映像データをコンテンツ表示部16に出力する。
【0155】
[コンテンツ表示部]
コンテンツ表示部16は、映像データ生成部15から入力された映像データを、映像コンテンツ生成対象の楽曲の音楽データとともに再生する。このとき、コンテンツ表示部16は、映像データに付加されたフレームレートの情報に従って、隣接ビートフレーム間のフレームレートを設定する。これにより、映像データと音楽データは、互いのビートが同期して再生される。
【0156】
なお、コンテンツ表示部16は、映像コンテンツ生成装置1とは独立した装置であってもよい。
【0157】
なお、本実施形態に係る映像コンテンツ生成装置1は、専用のハードウェアにより実現されるものであってもよく、あるいはパーソナルコンピュータ等のコンピュータシステムにより構成され、
図1に示される映像コンテンツ生成装置1の各部の機能を実現するためのプログラムを実行することによりその機能を実現させるものであってもよい。
【0158】
また、その映像コンテンツ生成装置1には、周辺機器として入力装置、表示装置等が接続されるものとする。ここで、入力装置とはキーボード、マウス等の入力デバイスのことをいう。表示装置とはCRT(Cathode Ray Tube)や液晶表示装置等のことをいう。
また、上記周辺機器については、映像コンテンツ生成装置1に直接接続するものであってもよく、あるいは通信回線を介して接続するようにしてもよい。
【0159】
また、
図1に示す映像コンテンツ生成装置1が行う各ステップを実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより、映像コンテンツ生成処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものであってもよい。
また、「コンピュータシステム」は、WWWシステムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、フラッシュメモリ等の書き込み可能な不揮発性メモリ、DVD(Digital Versatile Disk)等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。
【0160】
さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ(例えばDRAM(Dynamic Random Access Memory))のように、一定時間プログラムを保持しているものも含むものとする。
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であっても良い。
【0161】
以上、本発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。
例えば、上述した実施形態では人の動きデータを扱ったが、本発明は各種の物体の動きデータに適用することができる。ここで、物体とは、人、動物、植物その他の生物、及び、生物以外の物(ロボット等)を含む。
【0162】
また、本発明は、3次元コンテンツの生成に利用することができる。