以下、本発明によるカラオケ装置等の実施形態について図面を参照して説明する。なお、実施の形態において同じ符号を付した構成要素は同様の動作を行うので、再度の説明を省略する場合がある。また、本実施の形態において説明する各情報の形式、内容などは、あくまで例示であり、各情報の持つ意味を示すことができれば、形式、内容などは問わない。
(実施の形態1)
本実施の形態において、歌唱者を撮影し、当該歌唱者の動きを採点し、当該採点の結果であるスコアを出力するカラオケ装置1について説明する。
図1は、本実施の形態におけるカラオケ装置1のブロック図である。カラオケ装置1は、動き判定情報格納部101、手本画像格納部102、楽曲データ格納部103、受付部104、撮影部105、スケルトン情報取得部106、スコア算出部107、スコア出力部108、モデル画像構成部109、画像出力部110、楽曲再生部111を備える。
動き判定情報格納部101には、歌唱者の動きを判定するための情報である動き判定情報が格納される。「動き判定情報」は、手本の動きを示す情報でもある。また、「手本の動き」とは、ダンスにおける体の動きの手本となる動きである。また、当該「動き」とは、動作や、体勢、姿勢などを含み、広く解する。また、「動き判定情報」は、通常、時系列の情報である。つまり、「動き判定情報」は、例えば、予め決められた1以上の各タイミングに対応する情報である。当該「予め決められた1以上の各タイミング」とは、例えば、動画を構成するフレーム(静止画)や、動画を構成するフレームの区間、動画の開始からの時間(タイムスタンプ)などである。
具体的に、「動き判定情報」は、例えば、以下のうちの1種類以上である。
(A)関節角度条件
(B)ジョイント座標条件
(C)ジョイント移動量条件
(D)ジョイント間角度条件
(A)関節角度条件:「関節角度条件」とは、関節(肘、膝、手首、足首、首など)の角度(以下、適宜、関節角度とする)に関する条件である。当該「角度」は、通常、いわゆる内角であるが、外角であってもよい。また、「動き判定情報」が「関節角度条件」である場合、「動き判定情報」は、通常、歌唱者の1以上の各関節の角度に関する1以上の関節角度条件から構成される情報である。また、「関節角度条件」は、通常、関節を識別する情報(以下、適宜、関節識別情報とする)を有する。「関節識別情報」は、例えば、関節名や、IDなどである。また、「関節角度条件」は、例えば、「右肘=90°」や、「120°≦左膝≦130°」などである。
(B)ジョイント座標条件:「ジョイント座標条件」とは、ジョイントの座標(以下、適宜、ジョイント座標とする)に関する条件である。「ジョイント」とは、関節、および関節を軸に動く部位(手、足、頭など)に対応する点である。この点は、通常、関節や上記部位の端点である。また、この点は、例えば、関節や上記部位の中点など、関節や上記部位に含まれる点、関節や上記部位に隣接する点などであってもよい。つまり、この点は、関節や上記部位に対応する点であればよい。また、「ジョイント」は、例えば、「ノード」としてもよい。また、当該「座標」は、通常、3次元の座標である。また、当該「座標」は、例えば、2次元の座標であってもよい。また、当該「座標」は、絶対的な座標であってもよいし、相対的な座標であってもよい。「絶対的な座標」とは、歌唱者画像における座標である。また、「相対的な座標」とは、他のジョイントに対する位置を示す座標である。言い換えると、「相対的な座標」とは、基準となるジョイントの座標を「(x,y)=(0,0)」としたときの座標である。
また、「動き判定情報」が「ジョイント座標条件」である場合、「動き判定情報」は、通常、歌唱者の1以上の各ジョイントの座標に関する1以上のジョイント座標条件から構成される情報である。また、「ジョイント座標条件」は、通常、ジョイントを識別する情報(以下、適宜、ジョイント識別情報とする)を有する。「ジョイント座標条件」は、例えば、「右肘=(x1,y1,z1)」や、「(x2,y2,z2)≦左膝≦(x3,y3,z3)」などである。
(C)ジョイント移動量条件:「ジョイント移動量条件」とは、ジョイントの移動量(以下、適宜、ジョイント移動量とする)に関する条件である。「ジョイント移動量」は、通常、ジョイントの移動の大きさ、および、ジョイントの移動の方向である。また、「ジョイント移動量」は、例えば、ジョイントの移動の大きさのみであってもよい。また、「ジョイント移動量」は、いわゆる動きベクトル(ベクトル量)であると考えてもよい。
また、「ジョイント移動量」は、ジョイントの移動の大きさ(長さ、ピクセル数など)およびジョイントの移動の方向(座標、角度など)を示すことができれば、内容や形式などは、問わない。また、「移動の大きさ」は、例えば、相対的な大きさであってもよい。「相対的な大きさ」は、例えば、歌唱者の大きさ(体格)に対する相対的な大きさである。また、「移動の方向」は、例えば、相対的な方向であってもよい。「相対的な方向」は、例えば、座標軸や、歌唱者の向きなどに対する相対的な方向である。
また、「移動量」は、例えば、「(x:10px,y:20px)/sec」や、「(25px,30°)/frame」などである。前者は、1秒あたりに、x軸方向に10px、y軸方向に20px移動したことを意味する。また、後者は、1フレームあたりに、水平方向から30°の方向に25px移動したことを意味する。
また、「動き判定情報」が「ジョイント移動量条件」である場合、「動き判定情報」は、通常、歌唱者の1以上の各ジョイントの移動量に関する1以上のジョイント移動量条件から構成される情報である。また、「ジョイント移動量条件」は、通常、ジョイント識別情報を有する。「ジョイント移動量条件」は、例えば、「右肘=((x:10px,y:20px)/sec)」や、「((25px,30°)/frame)≦左膝≦((30px,30°)/frame)」などである。
(D)ジョイント間角度条件:「ジョイント間角度条件」とは、ジョイント間の角度に関する条件である。「ジョイント間の角度」(以下、適宜、ジョイント間角度とする)とは、通常、3個のジョイントのうちの2個のジョイント間を結ぶ2本の線分が成す角度である。また、「ジョイント間角度」は、通常、いわゆる内角であるが、外角であってもよい。つまり、「ジョイント間」とは、通常、3個のジョイントの組み合わせまたは順列である。
また、「ジョイント間角度」は、例えば、正規化された座標系に対する線分(以下、適宜、対象線分とする)の角度であってもよい。正規化された座標系とは、例えば、線分(以下、適宜、基準線分とする)、または平面(以下、適宜、基準平面とする)である。基準線分は、例えば、座標軸や、歌唱者の体の中心線、歌唱者の体の重心を通過する線分などである。また、基準平面は、例えば、座標面や、歌唱者の体に水平な平面、歌唱者の体に垂直な平面、歌唱者の体の向きに水平な平面、歌唱者の体の向きに垂直な平面などである。また、対象線分は、通常、2個のジョイント間を結ぶ線分である。
また、「動き判定情報」が「ジョイント間角度条件」である場合、「動き判定情報」は、通常、歌唱者の1以上の各ジョイント間の角度に関する1以上のジョイント間角度条件から構成される情報である。また、「ジョイント間角度条件」は、通常、ジョイント識別情報を有する。また、「ジョイント間角度条件」は、例えば、「左肩−右肩−右手首=120°」や、「45°≦右手−頭−腰≦60°」などである。前者のジョイント間角度条件は、左肩と右肩とを結ぶ線分と、右肩と右手首とを結ぶ線分とが成す角度が120°であることを意味する。また、後者の「ジョイント間角度条件」は、右手と頭とを結ぶ線分と、頭と腰とを結ぶ線分とが成す角度が40°以上60°以下であることを意味する。
なお、動き判定情報は、例えば、1以上の関節角度から構成される情報であってもよい。この場合、当該1以上の各関節角度には、通常、関節識別情報が対応付いている。また、当該関節識別情報が対応付いている関節角度は、例えば、「右肘:90°」や、「左膝:130°」などである。また、当該動き判定情報は、通常、関節角度条件に含まれる。
また、動き判定情報は、例えば、1以上のジョイント座標から構成される情報であってもよい。この場合、当該1以上の各ジョイント座標には、通常、ジョイント識別情報が対応付いている。また、当該ジョイント識別情報が対応付いているジョイント座標は、例えば、「右肘:(x1,y1,z1)」や、「左膝:(x3,y3,z3)」などである。また、当該動き判定情報は、通常、ジョイント座標条件に含まれる。
また、動き判定情報は、例えば、1以上のジョイント移動量から構成される情報であってもよい。この場合、当該1以上の各ジョイント移動量には、通常、ジョイント識別情報が対応付いている。また、当該ジョイント識別情報が対応付いているジョイント移動量は、例えば、「右肘:((x:10px,y:20px)/sec)」や、「左膝:((30px,30°)/frame)」などである。また、当該動き判定情報は、通常、ジョイント移動量条件に含まれる。
また、動き判定情報は、例えば、1以上のジョイント間角度から構成される情報であってもよい。この場合、当該1以上の各ジョイント間角度には、通常、ジョイント識別情報が対応付いている。また、当該ジョイント識別情報が対応付いているジョイント間角度は、例えば、「左肩−右肩−右手首:120°」や、「右手−頭−腰:60°」などである。また、当該動き判定情報は、通常、ジョイント間角度条件に含まれる。
手本画像格納部102には、楽曲に対応するダンスの手本を示す画像である手本画像が格納される。当該「楽曲」は、通常、後述の楽曲再生部111が楽曲データを再生することにより出力される楽曲である。また、「手本画像」は、通常、動画である。また、「手本画像」は、例えば、人物やキャラクタなどがダンスをしている様子を示す画像である。言い換えると、「手本画像」は、例えば、人物やキャラクタなどがダンスをしている様子を撮影した画像である。また、「手本画像」は、ダンスにおける体の動きを示す画像であればよい。例えば、「手本画像」は、後述の距離画像であってもよい。
また、「キャラクタ」とは、通常、いわゆるアバターである。また、「キャラクタ」は、例えば、いわゆるアニメに登場するキャラクタや、いわゆるマスコットキャラクタなどであってもよい。また、「キャラクタ」は、例えば、歌唱者であってもよい。
なお、本実施の形態において、「画像」とは、静止画または動画である。動画は、2以上の静止画を有する。また、動画が有する2以上の静止画は、通常、動画を構成するフレームである。
楽曲データ格納部103には、1以上の楽曲データが格納される。「楽曲データ」とは、楽曲を電子的に扱うための情報である。また、「楽曲」とは、いわゆる「音楽」と呼ばれるものや、いわゆる「曲」と呼ばれるものなどである。また、「楽曲データ」は、楽曲を電子的に扱うための情報であれば、形式などは問わない。「楽曲データ」は、例えば、MIDIや、WAV、MP3などの形式である。また、「楽曲データ」は、通常、楽曲データの識別情報(以下、適宜、楽曲データ識別情報とする)を有する。「楽曲データ識別情報」は、例えば、歌手名および楽曲名である。また、当該識別情報は、例えば、いわゆるファイル名であってもよい。なお、楽曲データ格納部103には、通常、ネットワークから受信した楽曲データが蓄積される。また、当該楽曲データの受信は、通常、図示しない受信部が行う。
受付部104は、指示を受け付ける。当該指示は、例えば、楽曲データを選択する指示である楽曲選択指示や、電源ONの指示、電源OFFの指示などである。なお、受付部104が電源ONの指示や電源OFFの指示などを受け付けた場合、カラオケ装置1は、通常、当該受け付けた指示に応じた処理を行う。
また、受け付けとは、タッチパネルや、リモコン、キーボードなどの入力デバイスから入力された情報の取得、光ディスクや磁気ディスク、半導体メモリなどの記録媒体に格納されている情報の取得、有線もしくは無線の通信回線を介して送信された情報の受信などを含む概念である。
受付部104における情報や指示などの入力手段は、メニュー画面によるものや、キーボードなど、何でもよい。受付部104は、メニュー画面の制御ソフトウェアや、キーボード等の入力手段のデバイスドライバなどで実現され得る。
撮影部105は、歌唱者を撮影する。そして、撮影部105は、当該歌唱者が写された画像である歌唱者画像を取得する。当該「歌唱者」は、通常、1人である。また、当該「歌唱者」は、例えば、2人以上であってもよい。また、「歌唱者画像」には、少なくとも歌唱者が写されていればよく、その他の物体などが写されているか否かについては、問わない。
また、「歌唱者画像」は、通常、距離情報、輝度情報、またはRGB情報のうちの1以上の情報を含む画像である。また、「歌唱者画像」は、例えば、距離画像である。「距離画像」とは、1以上の距離情報を有する画像である。また、「距離情報」とは、通常、カラオケ装置1から歌唱者までの距離を示す情報である。また、「歌唱者までの距離」とは、具体的に、歌唱者の頭や目、鼻、口、肩、胸、腰、膝などの各部位や、歌唱者の体の表面上の任意の点までの距離である。また、「距離情報」は、例えば、画像を構成する1以上の各画素に対応付いている。また、「距離画像」は、距離情報のみで構成されていてもよいし、RGB情報や輝度情報などをも有していてもよい。なお、歌唱者画像のデータ構造は問わない。
また、「歌唱者画像」は、例えば、撮影画像であってもよい。「撮影画像」とは、1以上の距離情報を有さない画像である。また、「撮影画像」は、通常、いわゆるカラー画像であるが、いわゆるグレースケール画像であってもよい。
以上より、「歌唱者画像」は、例えば、RGB情報と輝度情報のいずれか一方または両方を有していてもよいし、両方を有していなくてもよい。「RGB情報」とは、画像を構成する1以上の各画素の色を示す情報である。また、「輝度情報」とは、画像を構成する1以上の各画素の輝度を示す情報である。また、「輝度」には、明暗や、濃淡なども含み、広く解する。また、「画素」は、通常、画像中の座標(x,y)により特定される。
また、撮影部105は、例えば、距離画像と撮影画像のいずれか一方のみを取得してもよいし、両方を取得してもよい。距離画像および撮影画像を取得する場合、当該距離画像および当該撮影画像において、撮影者が写されている領域は、通常、同様の位置である。つまり、距離画像および撮影画像を取得する場合、撮影部105は、通常、歌唱者が同様の位置に配置された距離画像および撮影画像を取得する。また、「歌唱者画像の取得」には、歌唱者の撮影を開始し、歌唱者画像の取得を開始することも含まれる。
なお、撮影部105は、通常、いわゆる距離画像カメラから、距離画像を取得する。また、撮影部105は、例えば、いわゆるステレオカメラから、距離画像を取得してもよい。また、撮影部105は、例えば、CMOSやCCDなどのイメージセンサ(固体撮像素子)や、イメージセンサを用いたカメラ(デジタルスチルカメラ、デジタルビデオカメラ)などから、撮影画像を取得する。また、撮影部105は、例えば、これらの装置を有していてもよいし、これらの装置で実現され得てもよい。また、撮影部105の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。
また、距離画像カメラには、例えば、3次元距離画像カメラZCシリーズ(http://www.optex.co.jp/product/3d.html)や、TOF方式距離画像カメラDISTANZAシリーズ「http://www.brainvision.co.jp/xoops/modules/tinyd4/index.php?id=15」、KINECT for Windows(http://www.microsoft.com/en-us/kinectforwindows/)などがある。
スケルトン情報取得部106は、歌唱者画像を用いてスケルトン情報を取得する。当該歌唱者画像は、撮影部105が取得した歌唱者画像である。また、「スケルトン情報」とは、歌唱者の動きを示す情報である。また、「スケルトン情報を取得する」とは、スケルトン情報を構成することであってもよい。
具体的に、「スケルトン情報」とは、いわゆるジョイントの位置を示す1以上の座標の集合である。言い換えると、「スケルトン情報」とは、いわゆるジョイントの位置を示す1以上の座標から構成される情報である。また、当該「座標」は、通常、3次元の座標である。また、当該「座標」は、例えば、2次元の座標であってもよい。また、当該3次元の座標は、例えば、3次元画像を用いて取得された3次元の座標であってもよいし、2次元画像を用いて取得された3次元の座標であってもよい。また、当該2次元の座標は、例えば、3次元画像を用いて取得された2次元の座標であってもよいし、2次元画像を用いて取得された2次元の座標であってもよい。また、当該3次元画像および2次元画像は、撮影部105が取得した画像である。また、「スケルトン情報」は、例えば、歌唱者の体に対応するすべてのジョイントの位置を示す1以上の座標から構成されてもよいし、歌唱者が有する一部の部位(手、足、頭など)のみに対応するジョイントの位置を示す1以上の座標から構成されてもよい。
また、「スケルトン情報」が有する座標は、通常、連結しているジョイントごとに、対応付いている。つまり、例えば、肘と手首とは骨により連結されている。従って、「スケルトン情報」において、肘の座標と手首の座標とは、対応付いている。また、スケルトン情報が有する1以上の各座標には、通常、当該座標に対応するジョイントを識別するジョイント識別情報が対応付いている。また、当該1以上の各座標のうち、関節に対応する座標には、例えば、当該関節の角度が対応付いていてもよい。
また、スケルトン情報取得部106は、例えば、以下のいずれかの場合に応じて、スケルトン情報を取得する。
(A)歌唱者画像が距離画像である場合
(B)歌唱者画像が撮影画像である場合
(A)の場合:この場合は、撮影部105が距離画像を取得した場合である。この場合、スケルトン情報取得部106は、通常、距離画像を用いて、3次元の座標から構成されるスケルトン情報を取得する。当該スケルトン情報の取得の手順は、例えば、以下のとおりである。
(1)距離画像が有する距離情報を用いて、当該距離情報が示す距離が予め決められた条件を満たすほど近い画素の座標(x,y)を取得する。これにより、距離画像中に写された歌唱者の領域(以下、適宜、歌唱者領域とする)が検出される。
(2)(1)で検出した歌唱者領域の輪郭を検出する。
(3)(2)で検出した輪郭に対してパターン認識を行い、距離画像における歌唱者のジョイントを検出する。これにより、距離画像中に写された歌唱者の各ジョイントに対応する2次元の座標(x,y)が取得される。
(4)(3)で取得した2次元の座標(x,y)を、連結しているジョイントごとに対応付ける。
(5)(4)で対応付けた2次元の座標(x,y)で示される各画素に対応する距離情報と、予め決められた算出式(以下、適宜、ジョイント座標値算出式とする)とを用いて、当該距離情報に対応する座標値(z)を算出する。
(6)(4)で対応付けた2次元の座標(x,y)と、(4)で算出した座標値(z)とを対応付け、3次元の座標(x,y,z)を取得する。これにより、各ジョイントの位置を示す3次元の座標の集合(スケルトン情報)が取得される。
また、(A)の場合、スケルトン情報の取得の手順は、例えば、以下のとおりであってもよい。
(1’)距離画像が有する距離情報を用いて、当該距離情報が示す距離が予め決められた条件を満たすほど近い画素の座標(x,y)を取得する。これにより、歌唱者領域が検出される。
(2’)(1’)で検出した歌唱者領域内の各画素に対応する距離情報と、予め決められた算出式(以下、適宜、歌唱者座標値算出式とする)とを用いて、当該距離情報に対応する座標値(z)を算出する。
(3’)(1’)で取得した2次元の座標(x,y)と、(2’)で算出した座標値(z)とを対応付け、3次元の座標(x,y,z)を取得する。これにより、距離画像内に写された歌唱者の形状が検出される。
(4’)予め保持している基準スケルトン情報に、(3’)で取得した歌唱者の形状を適用する。当該「基準スケルトン情報」とは、基準の動きを示すスケルトン情報である。また、当該「適用する」とは、当該スケルトン情報が有する3次元の座標を、歌唱者の形状に合わせて変更することである。また、当該歌唱者の形状の適用には、通常、逆運動学を用いる。これにより、各ジョイントの位置を示す3次元の座標の集合(スケルトン情報)が取得される。
なお、上記(1)、(1’)において、スケルトン情報取得部106は、例えば、距離情報が示す距離が予め決められた条件を満たす1以上の画素が隣接して形成される領域を、歌唱者領域として検出してもよい。この場合、スケルトン情報取得部106は、通常、当該1以上の画素が隣接して形成される領域の面積が、予め決められた条件を満たすほど大きい場合に、当該領域を歌唱者領域として検出する。
また、上記(1)、(1’)において、スケルトン情報取得部106は、例えば、距離画像に対して二値化やラベリングなどの画像処理を施し、歌唱者領域を検出してもよい。
また、上記(5)におけるジョイント座標値算出式、および上記(2’)における歌唱者座標値算出式は、例えば、距離情報を代入するための変数を有する。また、当該ジョイント座標値算出式および歌唱者座標値算出式は、例えば、いわゆる関数(プログラム)であってもよい。また、スケルトン情報取得部106は、通常、ジョイント座標値算出式および歌唱者座標値算出式を予め保持している。また、ジョイント座標値算出式と歌唱者座標値算出式とは、通常、異なる。
また、上記(A)の場合、スケルトン情報取得部106は、例えば、2次元の座標から構成されるスケルトン情報を取得してもよい。当該スケルトン情報の取得の手順は、例えば、上記の(1)から(4)までの処理である。また、当該スケルトン情報の取得の手順は、例えば、上記の(1’)から(4’)までの処理と、その後に続く以下の(5’)の処理である。
(5’)(4’)で取得した1以上の各3次元の座標から、座標値(z)を削除する。
(B)の場合:この場合は、撮影部105が撮影画像を取得した場合である。この場合、スケルトン情報取得部106は、通常、撮影画像を用いて、2次元の座標から構成されるスケルトン情報を取得する。当該スケルトン情報の取得の手順は、例えば、以下のとおりである。
(1)撮影画像に対して二値化やラベリングなどの画像処理を施し、撮影画像中に写された歌唱者の輪郭を検出する。
(2)(1)で検出した輪郭に対してパターン認識を行い、撮影画像における歌唱者のジョイントを検出する。これにより、撮影画像中に写された歌唱者の各ジョイントに対応する2次元の座標(x,y)が取得される。
(3)(2)で取得した2次元の座標を、連結しているジョイントごとに対応付ける。これにより、各ジョイントの位置を示す2次元の座標の集合(スケルトン情報)が取得される。
また、上記(B)の場合において、スケルトン情報の取得の手順は、例えば、以下のとおりであってもよい。
(1’)撮影画像に対して二値化やラベリングなどの画像処理を施し、撮影画像中の歌唱者領域を検出する。
(2’)(1’)で検出した歌唱者領域に対して細線化の処理を施し、撮影画像中に写された歌唱者の中心線を取得する。
(3’)(2’)で取得した中心線の交点や、端点、交点と端点の中点(中心線上の点)などの2次元の座標(x,y)を取得する。これにより、撮影画像中に写された歌唱者の各ジョイントに対応する2次元の座標(x,y)が取得される。
(4’)(3’)で取得した座標を、中心線により連結されている座標ごとに対応付ける。これにより、各ジョイントの位置を示す2次元の座標の集合が取得される。
また、スケルトン情報取得部106は、取得した各ジョイントの座標に対して、通常、当該各ジョイントを識別するジョイント識別情報を対応付ける。例えば、右肘の座標を取得した場合、スケルトン情報取得部106は、当該右肘の座標に、例えば、ジョイント識別情報「右肘」を対応付ける。なお、ジョイント識別情報は、通常、予め決められた記憶領域に格納されている。
また、3次元の座標から構成されるスケルトン情報を、以下、適宜、3次元スケルトン情報とする。また、2次元の座標から構成されるスケルトン情報を、以下、適宜、2次元スケルトン情報とする。
なお、人物が写された画像(ここでは、歌唱者画像)を用いてスケルトン情報を取得する方法や手順などは、公知であるので、詳細な説明を省略する。なお、距離画像を用いてのスケルトン情報の取得は、例えば、市販のソフトウェアや、市販の距離画像カメラに付属のSDK(Software Development Kit)などを用いることにより行うことが可能である。
また、スケルトン情報の取得に際して、スケルトン情報取得部106は、例えば、歌唱者画像から予め決められた条件(以下、適宜、画素削除条件とする)を満たす画素を削除してもよい。この場合、スケルトン情報取得部106は、当該削除後の歌唱者画像を用いて、スケルトン情報を取得する。また、これにより、歌唱者画像からより高速にスケルトン情報を取得することができる。なお、当該「画素の削除」とは、いわゆる画素の間引きである。また、当該「画素削除条件」とは、例えば、削除するか否かが判断される対象となる画素に対応する距離情報と、当該画素の周囲の4個(4近傍)または8個(8近傍)の各画素に対応する距離情報との差の平均が予め決められた閾値以下であることや、当該画素の2次元の座標(x,y)の座標値が共に偶数であること、当該画素の2次元の座標(x,y)の座標値が共に奇数であることなどである。
スコア算出部107は、歌唱者の動きを採点し、当該採点の結果であるスコアを算出する。言い換えると、スコア算出部107は、歌唱者のダンスのスコアを算出する。なお、以下において、「採点を行う」ことは、「スコアを算出する」ことであるものとする。
また、スコア算出部107は、通常、スケルトン情報を用いて、当該スケルトン情報が示す歌唱者の動きを採点し、スコアを算出する。当該スケルトン情報は、スケルトン情報取得部106が取得したスケルトン情報である。具体的に、スコア算出部107は、例えば、動き判定情報を用いて、スケルトン情報が示す歌唱者の動きを判定し、当該判定の結果を用いてスコアを算出する。また、スコア算出部107は、例えば、スケルトン情報と、動き判定情報とを比較し、当該比較の結果を用いてスコアを算出する。当該「比較する」とは、差分や一致度などを算出することである。つまり、当該「比較の結果」とは、差分や一致度などである。
また、スコア算出部107は、例えば、以下のいずれかの場合に応じて、スコアを算出する。
(A)動き判定情報が関節角度条件である場合
(B)動き判定情報がジョイント座標条件である場合
(C)動き判定情報がジョイント移動量条件である場合
(D)動き判定情報がジョイント間角度条件である場合
(E)動き判定情報が関節角度である場合
(F)動き判定情報がジョイント座標である場合
(G)動き判定情報がジョイント移動量である場合
(H)動き判定情報がジョイント間角度である場合
(A)の場合:この場合、スコア算出部107は、通常、1以上の各関節に対応する関節角度条件を用いて、1以上の各関節の角度を判定し、当該判定の結果を用いてスコアを算出する。当該(A)の場合のスコアを算出する具体的な手順は、例えば、以下のとおりである。
(1)スケルトン情報取得部106が取得したスケルトン情報から、当該スケルトン情報が有する1以上の関節角度を取得する。このとき、関節角度に対応付いている関節識別情報と共に関節角度を取得する。
(2)(1)で取得した1以上の各関節角度に対応付いている関節識別情報と同一の関節識別情報を有する関節角度条件を、動き判定情報から取得する。
(3)(1)で取得した1以上の各関節角度が、当該関節角度に対応する関節角度条件((2)で取得した関節角度条件)を満たすか否かを判断する。そして、当該判断の結果を示すパラメータを算出する。
(4)(3)で算出したパラメータと、予め決められた算出式(以下、適宜、スコア算出式とする)とを用いて、スコアを算出する。
なお、上記(1)において、スケルトン情報が1以上の関節角度を有していない場合、スコア算出部107は、通常、スケルトン情報が有する1以上の座標を用いて、関節角度を算出する。なお、3個の座標により形成される角の角度を算出する方法や手順などは、公知であるので、詳細な説明を省略する。また、スコア算出部107は、関節角度の算出に用いた3個の座標のうち、関節に対応する座標に対応付いているジョイント識別情報を、関節識別情報として算出した関節角度に対応付ける。
また、上記(3)において、「パラメータ」とは、例えば、関節角度条件を満たす関節角度の数や、関節角度条件を満たさない関節角度の数、関節角度の数に対する当該関節角度条件を満たす関節角度の数の割合、関節角度の数に対する当該関節角度条件を満たさない関節角度の数の割合などである。
また、上記(4)において、「スコア算出式」は、通常、上記パラメータを代入するための変数を有する。そして、スコア算出部107は、当該スコア算出式が有する変数に算出したパラメータを代入し、当該算出式を計算することにより、スコアを算出する。また、当該「スコア算出式」は、いわゆる関数(プログラム)であってもよい。また、スコア算出部107は、通常、スコア算出式を予め保持している。また、「スコア算出式」は、以下においても、上記と同様の意味を持つものとする。
(B)の場合:この場合、スコア算出部107は、通常、1以上の各ジョイントに対応するジョイント座標条件を用いて、1以上の各ジョイントの座標を判定し、当該判定の結果を用いてスコアを算出する。当該(B)の場合のスコアを算出する具体的な手順は、例えば、以下のとおりである。
(1)スケルトン情報取得部106が取得したスケルトン情報から、当該スケルトン情報が有する1以上のジョイント座標を取得する。このとき、ジョイント座標に対応付いているジョイント識別情報と共にジョイント座標を取得する。
(2)(1)で取得した1以上の各ジョイント座標に対応付いているジョイント識別情報と同一のジョイント識別情報を有するジョイント座標条件を、動き判定情報から取得する。
(3)(1)で取得した1以上の各ジョイント座標が、当該ジョイント座標に対応するジョイント座標条件((2)で取得したジョイント座標条件)を満たすか否かを判断する。そして、当該判断の結果を示すパラメータを算出する。
(4)(3)で算出したパラメータと、スコア算出式とを用いて、スコアを算出する。
なお、上記(3)において、「パラメータ」とは、例えば、ジョイント座標条件を満たすジョイント座標の数や、ジョイント座標条件を満たさないジョイント座標の数、ジョイント座標の数に対する当該ジョイント座標条件を満たすジョイント座標の数の割合、ジョイント座標の数に対する当該ジョイント座標条件を満たさないジョイント座標の数の割合などである。
(C)の場合:この場合、スコア算出部107は、通常、1以上の各ジョイントに対応するジョイント移動量条件を用いて、1以上の各ジョイントの移動量を判定し、当該判定の結果を用いてスコアを算出する。当該(C)の場合のスコアを算出する具体的な手順は、例えば、以下のとおりである。
(1)スケルトン情報取得部106が取得したスケルトン情報が有するジョイント座標を用いて、1以上の各ジョイント移動量を算出する。このとき、算出に用いたジョイント座標に対応付いているジョイント識別情報を、算出したジョイント移動量に対応付ける。
(2)(1)で算出した1以上の各ジョイント移動量に対応付いているジョイント識別情報と同一のジョイント識別情報を有するジョイント移動量条件を、動き判定情報から取得する。
(3)(1)で取得した1以上の各ジョイント移動量が、当該ジョイント移動量に対応するジョイント移動量条件((2)で取得したジョイント移動量条件)を満たすか否かを判断する。そして、当該判断の結果を示すパラメータを算出する。
(4)(3)で算出したパラメータと、スコア算出式とを用いて、スコアを算出する。
なお、上記(1)において、例えば、動画を構成する2以上の静止画を用いてジョイント移動量を算出する方法や手順などは、公知である。従って、ジョイント移動量を算出する方法や手順などは、詳細な説明を省略する。
また、上記(3)において、「パラメータ」とは、例えば、ジョイント移動量条件を満たすジョイント移動量の数や、ジョイント移動量条件を満たさないジョイント移動量の数、ジョイント移動量の数に対する当該ジョイント移動量条件を満たすジョイント移動量の数の割合、ジョイント移動量の数に対する当該ジョイント移動量条件を満たさないジョイント移動量の数の割合などである。
(D)の場合:この場合、スコア算出部107は、通常、1以上の各ジョイント間に対応するジョイント間角度条件を用いて、1以上の各ジョイント間の角度を判定し、当該判定の結果を用いてスコアを算出する。当該(D)の場合のスコアを算出する具体的な手順は、例えば、以下のとおりである。
(1)スケルトン情報取得部106が取得したスケルトン情報が有するジョイント座標を用いて、1以上の各ジョイント間角度を算出する。このとき、算出に用いたジョイント座標に対応付いているジョイント識別情報を、算出したジョイント間角度に対応付ける。
(2)(1)で取得した1以上の各ジョイント間角度に対応付いているジョイント間識別情報と同一のジョイント間識別情報を有するジョイント間角度条件を、動き判定情報から取得する。
(3)(1)で取得した1以上の各ジョイント間角度が、当該ジョイント間角度に対応するジョイント間角度条件((2)で取得したジョイント間角度条件)を満たすか否かを判断する。そして、当該判断の結果を示すパラメータを算出する。
(4)(3)で算出したパラメータと、スコア算出式とを用いて、スコアを算出する。
なお、上記(1)において、角度を算出するジョイント間は、例えば、予め決められていてもよいし、そうでなくてもよい。そうでない場合、スコア算出部107は、例えば、スケルトン情報が有する1以上のジョイント座標のうち、3個のジョイント座標のすべての組み合わせまたは順列を取得し、当該組み合わせまたは順列ごとにジョイント間角度情報を算出してもよい。
また、上記(3)において、「パラメータ」とは、例えば、ジョイント間角度条件を満たすジョイント間角度の数や、ジョイント間角度条件を満たさないジョイント間角度の数、ジョイント間角度の数に対する当該ジョイント間角度条件を満たすジョイント間角度の数の割合、ジョイント間角度の数に対する当該ジョイント間角度条件を満たさないジョイント間角度の数の割合などである。
(E)の場合:この場合、スコア算出部107は、通常、歌唱者の1以上の各関節の角度と、当該各関節に対応する関節角度であり、動き判定情報である関節角度とを比較し、当該比較の結果を用いてスコアを算出する。当該(E)の場合のスコアを算出する具体的な手順は、例えば、以下のとおりである。
(1)スケルトン情報取得部106が取得したスケルトン情報から、当該スケルトン情報が有する1以上の関節角度を取得する。このとき、関節角度に対応付いている関節識別情報と共に関節角度を取得する。当該取得した関節角度を、以下、適宜、歌唱者関節角度とする。
(2)(1)で取得した1以上の各関節角度に対応付いている関節識別情報と同一の関節識別情報が対応付いている関節角度を、動き判定情報から取得する。当該取得した関節角度を、以下、適宜、手本関節角度とする。
(3)(1)で取得した1以上の各歌唱者関節角度と、当該歌唱者関節角度に対応する手本関節角度((2)で取得した手本関節角度)とを比較する。そして、当該比較の結果を示すパラメータを算出する。
(4)(3)で算出したパラメータと、スコア算出式とを用いて、スコアを算出する。
なお、上記(1)において、スケルトン情報が1以上の関節角度を有していない場合、スコア算出部107は、通常、スケルトン情報が有する1以上の座標を用いて、関節角度を算出する。なお、3個の座標により形成される角の角度を算出する方法や手順などは、公知であるので、詳細な説明を省略する。また、スコア算出部107は、関節角度の算出に用いた3個の座標のうち、関節に対応する座標に対応付いているジョイント識別情報を、関節識別情報として算出した関節角度に対応付ける。
また、上記(3)において、「パラメータ」とは、例えば、歌唱者関節角度と手本関節角度との差の絶対値や、手本関節角度に対する当該絶対値の割合、手本関節角度に対する歌唱者関節角度の割合などである。
(F)の場合:この場合、スコア算出部107は、通常、歌唱者の1以上の各ジョイントの座標と、当該各ジョイントに対応するジョイント座標であり、動き判定情報であるジョイント座標とを比較し、当該比較の結果を用いてスコアを算出する。当該(F)の場合のスコアを算出する具体的な手順は、例えば、以下のとおりである。
(1)スケルトン情報取得部106が取得したスケルトン情報から、当該スケルトン情報が有する1以上のジョイント座標を取得する。このとき、ジョイント座標に対応付いているジョイント識別情報と共にジョイント座標を取得する。当該取得したジョイント座標を、以下、適宜、歌唱者ジョイント座標とする。
(2)(1)で取得した1以上の各ジョイント座標に対応付いているジョイント識別情報と同一のジョイント識別情報が対応付いているジョイント座標を、動き判定情報から取得する。当該取得したジョイント座標を、以下、適宜、手本ジョイント座標とする。
(3)(1)で取得した1以上の各歌唱者ジョイント座標と、当該歌唱者ジョイント座標に対応する手本ジョイント座標((2)で取得した手本ジョイント座標)とを比較する。そして、当該比較の結果を示すパラメータを算出する。
(4)(3)で算出したパラメータと、スコア算出式とを用いて、スコアを算出する。
なお、上記(3)において、「パラメータ」とは、例えば、歌唱者ジョイント座標と手本ジョイント座標との差の絶対値や、手本ジョイント座標に対する当該絶対値の割合、手本ジョイント座標に対する歌唱者ジョイント座標の割合などである。
(G)の場合:この場合、スコア算出部107は、通常、歌唱者の1以上の各ジョイントの移動量と、当該各ジョイントに対応するジョイント移動量であり、動き判定情報であるジョイント移動量とを比較し、当該比較の結果を用いてスコアを算出する。当該(G)の場合のスコアを算出する具体的な手順は、例えば、以下のとおりである。
(1)スケルトン情報取得部106が取得したスケルトン情報が有するジョイント座標を用いて、1以上の各ジョイント移動量を算出する。このとき、算出に用いたジョイント座標に対応付いているジョイント識別情報を、算出したジョイント移動量に対応付ける。また、当該算出したジョイント移動量を、歌唱者ジョイント移動量とする。
(2)(1)で算出した1以上の各ジョイント移動量に対応付いているジョイント識別情報と同一のジョイント識別情報が対応付いているジョイント移動量を、動き判定情報から取得する。当該取得したジョイント移動量を、以下、適宜、手本ジョイント移動量とする。
(3)(1)で取得した1以上の各歌唱者ジョイント移動量と、当該歌唱者ジョイント移動量に対応する手本ジョイント移動量((2)で取得した手本ジョイント移動量)とを比較する。そして、当該比較の結果を示すパラメータを算出する。
(4)(3)で算出したパラメータと、スコア算出式とを用いて、スコアを算出する。
なお、上記(3)において、「パラメータ」とは、例えば、歌唱者ジョイント移動量と手本ジョイント移動量との差の絶対値や、手本ジョイント移動量に対する当該絶対値の割合、手本ジョイント移動量に対する歌唱者ジョイント移動量の割合などである。
(H)の場合:この場合、スコア算出部107は、通常、歌唱者の1以上の各ジョイント間の角度と、当該各ジョイント間に対応するジョイント間角度であり、動き判定情報であるジョイント間角度とを比較し、当該比較の結果を用いてスコアを算出する。当該(H)の場合のスコアを算出する具体的な手順は、例えば、以下のとおりである。
(1)スケルトン情報取得部106が取得したスケルトン情報が有するジョイント座標を用いて、1以上の各ジョイント間角度を算出する。このとき、算出に用いたジョイント座標に対応付いているジョイント識別情報を、算出したジョイント間角度に対応付ける。また、当該算出したジョイント間角度を、歌唱者ジョイント間角度とする。
(2)(1)で算出した1以上の各ジョイント間角度に対応付いているジョイント間識別情報と同一のジョイント間識別情報が対応付いているジョイント間角度を、動き判定情報から取得する。当該取得したジョイント間角度を、以下、適宜、手本ジョイント間角度とする。
(3)(1)で取得した1以上の各歌唱者ジョイント間角度と、当該歌唱者ジョイント間角度に対応する手本ジョイント間角度((2)で取得した手本ジョイント間角度)とを比較する。そして、当該比較の結果を示すパラメータを算出する。
(4)(3)で算出したパラメータと、スコア算出式とを用いて、スコアを算出する。
なお、上記(3)において、「パラメータ」とは、例えば、歌唱者ジョイント間角度と手本ジョイント間角度との差の絶対値や、手本ジョイント間角度に対する当該絶対値の割合、手本ジョイント間角度に対する歌唱者ジョイント間角度の割合などである。
また、上記(A)から(H)までの場合において、「スコア算出式」は、例えば、ダンスが上手であればあるほど(歌唱者の動きが手本の動きと一致しているほど)スコアが高くなり、ダンスが下手であればあるほど(歌唱者の動きが手本の動きと一致していないほど)スコアが低くなるような算出式であることが好適である。
また、例えば、いわゆる加点方式で採点する場合、上記「スコア算出式」は、加点分を算出する算出式であってもよい。また、例えば、いわゆる減点方式で採点する場合、上記「スコア算出式」は、減点分を算出する算出式でもよい。
また、上記(B)の場合、スコア算出部107は、例えば、ジョイント座標条件が有する座標、および、スケルトン情報が有する座標に対して、いわゆる正規化を行ってもよい。また、スコア算出部107は、当該正規化を、例えば、ジョイント座標条件が有する座標、または、スケルトン情報が有する座標のいずれか一方に対して行ってもよい。なお、ここでの正規化とは、ジョイント座標条件が有する座標と、スケルトン情報が有する座標との差異を吸収するための処理である。言い換えると、ここでの正規化とは、スケルトン情報により示される歌唱者の大きさと、ジョイント座標条件が有する座標により示される手本の大きさとの差異を吸収するための処理、スケルトン情報により示される歌唱者の位置と、ジョイント座標条件が有する座標により示される手本の位置との差異を吸収するための処理、スケルトン情報により示される歌唱者の向きと、ジョイント座標条件が有する座標により示される手本の向きとの差異を吸収するための処理の3つの処理のうちの1以上の処理である。
また、上記(F)の場合、スコア算出部107は、例えば、ジョイント座標、および、スケルトン情報が有する座標に対して、いわゆる正規化を行ってもよい。また、スコア算出部107は、当該正規化を、例えば、ジョイント座標、または、スケルトン情報が有する座標のいずれか一方に対して行ってもよい。なお、ここでの正規化とは、ジョイント座標と、スケルトン情報が有する座標との差異を吸収するための処理である。言い換えると、ここでの正規化とは、スケルトン情報により示される歌唱者の大きさと、ジョイント座標により示される手本の大きさとの差異を吸収するための処理、スケルトン情報により示される歌唱者の位置と、ジョイント座標により示される手本の位置との差異を吸収するための処理、スケルトン情報により示される歌唱者の向きと、ジョイント座標により示される手本の向きとの差異を吸収するための処理の3つの処理のうちの1以上の処理である。
また、スコア算出部107は、例えば、スケルトン情報と動き判定情報とを比較することなく、スケルトン情報を用いて、スコアを算出してもよい。この場合、スコア算出部107は、例えば、スケルトン情報が有する情報またはスケルトン情報を用いて算出した情報と、スコア算出式とを用いて、当該スケルトン情報が示す動きに対応するスコアを算出する。また、このとき、スコア算出部107は、当該スケルトン情報が有する情報を、スコア算出式に代入するパラメータとして用いる。なお、「スケルトン情報を用いて算出した情報」とは、例えば、関節角度や、ジョイント移動量、ジョイント間角度などである。
また、スコアの算出に用いるパラメータは、例えば、各関節や各ジョイントなどのスコアに対する係数(重み)であると考えてもよい。
また、以上より、スコア算出部107は、通常、少なくともスケルトン情報を用いて、歌唱者の動きの採点結果であるスコアを算出することができればよく、その方法や手順などは、問わない。
スコア出力部108は、スコア算出部107が算出したスコアを出力する。出力とは、ディスプレイへの表示、プロジェクターを用いた投影、プリンタでの印字、音出力、外部の装置への送信、記録媒体への蓄積、他の処理装置や他のプログラムなどへの処理結果の引渡しなどを含む概念である。なお、送信や蓄積、処理結果の引渡しについては、出力対象が最終的にユーザに提示されるものとする。
また、スコア出力部108によるスコアの出力態様は、問わない。例えば、スコア出力部108は、例えば、スコア算出部107がスコアを算出するたびに、当該スコアを出力してもよい。また、スコア出力部108は、例えば、スコア算出部107が算出したスコアを統計処理し、当該統計処理の結果を出力してもよい。当該統計処理とは、例えば、合計することや、平均(単純平均または加重平均)を算出することなどである。
また、スコア出力部108は、ディスプレイやスピーカーなどの出力デバイスを含むと考えてもよいし、含まないと考えてもよい。スコア出力部108は、出力デバイスのドライバソフトまたは、出力デバイスのドライバソフトと出力デバイスなどで実現され得る。
モデル画像構成部109は、モデル画像を構成する。具体的に、モデル画像構成部109は、歌唱者画像に含まれる情報を用いて、歌唱者の1以上の属性値を取得し、少なくとも一部は当該歌唱者の1以上の属性値を用いてモデルを示す画像であるモデル画像を構成する。「歌唱者画像に含まれる情報」とは、例えば、距離情報、輝度情報、またはRGB情報のうちの1以上の情報のうち、歌唱者の領域に対応する距離情報、輝度情報、またはRGB情報のうちの1以上の情報である。また、「一部」とは、時間的、または空間的、または時間的及び空間的な一部である。「時間的な一部」とは、モデル画像が動画である場合の、一部の時間帯のことを言う。また、「空間的な一部」とは、歌唱者が有する1以上の部位のうちの一部を言う。また、「歌唱者の属性値」とは、歌唱者に関する情報であり、歌唱者の特徴量と言ってもよい。また、「1以上の属性値」は、例えば、歌唱者の動き、歌唱者の形状、または歌唱者の色のうちの1以上の情報である。また、「1以上の属性値」とは、通常、1種類以上の属性値のことである。
また、「モデル画像」は、例えば、少なくとも一部は歌唱者の動きに応じた動きを行う画像、または、歌唱者の形状または色を反映させた画像である。また、「歌唱者の動きに応じた動き」とは、例えば、歌唱者の動きに連動した動きや、歌唱者の動きと同一(ほぼ同一を含む)の動き、歌唱者の動きを反映させた動き、歌唱者の動きに対応した動きなどであり、広く解する。
また、「モデル画像」は、例えば、歌唱者を模した画像や、歌唱者の顔とキャラクタの胴体などを合成した画像、キャラクタを示す画像などである。「歌唱者を模したモデル画像の構成」とは、歌唱者の色や、歌唱者の形状などを模しているモデル画像を構成することを意味する。さらに具体的には、「歌唱者を模したモデル画像の構成」とは、例えば、歌唱者の色や、歌唱者の形状などの歌唱者の属性値を取得し、当該属性値を用いて、モデル画像を構成することである。また、「歌唱者の色」とは、例えば、歌唱者の髪の色や、歌唱者の肌の色、歌唱者の服の色などである。また、当該「色」には、通常、輝度も含む。また、「歌唱者の形状」とは、例えば、歌唱者の輪郭や、歌唱者の体の表面の起伏などである。
また、「モデル画像」は、通常、3次元のモデルを示す画像(以下、適宜、3次元モデル画像とする)である。「3次元モデル画像」は、モデルが3次元(立体的)に表現された画像である。また、「モデル画像」は、例えば、2次元のモデルを示す画像(以下、適宜、2次元モデル画像とする)であってもよい。「2次元モデル画像」は、モデルが2次元(平面的)に表現された画像である。また、「モデル画像」は、あくまで画像であり、ホログラムではない。
また、モデル画像構成部109は、例えば、以下のいずれかの方法により、モデル画像を構成する。
(A)距離画像を用いる方法(その1)
(B)距離画像を用いる方法(その2)
(C)距離画像を用いる方法(その3)
(D)撮影画像を用いる方法
(E)スケルトン情報を用いる方法
(A)の方法:当該方法は、距離画像および撮影画像を用いて、歌唱者の色および形状を模した3次元のモデルを示す3次元モデル画像を構成する方法である。つまり、当該方法は、撮影部105が距離画像および撮影画像を取得した場合において、当該3次元モデル画像を構成する方法である。また、当該方法は、いわゆるサーフェスモデリングを行う方法である。当該方法の具体的な手順は、例えば、以下のとおりである。
(1)距離画像が有する距離情報を用いて、当該距離情報が示す距離が予め決められた条件を満たすほど近い画素の座標(x,y)を取得する。これにより、歌唱者領域が検出される。
(2)(1)で座標を取得した画素に対応付いている距離情報と、歌唱者座標値算出式とを用いて、当該距離情報に対応する座標値(z)を算出する。
(3)(2)で算出した座標値(z)と、当該座標値の算出に用いた画素の座標(x,y)とを対応付け、3次元の座標(x,y,z)を取得する。これにより、1以上の3次元の座標が取得される。言い換えると、これにより、距離画像内に写された歌唱者の形状が検出される。また、この処理は、例えば、3DCGを作成するための処理であるポリゴンモデリングであると考えてよい。
(4)(1)で検出した歌唱者領域に対応する画像(以下、適宜、歌唱者領域画像とする)を、撮影画像から切り出す。
(5)(3)で取得した1以上の3次元の座標(x,y,z)に、(4)で切り出した歌唱者領域画像を適用し、歌唱者の色および形状を模した3次元モデル画像を構成する。当該「3次元の座標に画像を適用する」とは、例えば、当該1以上の3次元の座標(x,y,z)により示される歌唱者の形状に、当該画像を重ね合わせることである。また、この処理は、例えば、3DCGを作成するための処理であるテクスチャマッピングであると考えてよい。
以上の処理により、例えば、撮影画像がカラー画像である場合は、歌唱者の色および形状を模した3次元モデル画像が構成される。また、例えば、撮影画像がグレースケール画像である場合は、歌唱者の輝度および形状を模した3次元モデル画像が構成される。
(B)の方法:この方法は、距離画像および撮影画像を用いて、歌唱者の色および形状を模した2次元のモデルを示す2次元モデル画像を構成する方法である。つまり、当該方法は、撮影部105が距離画像および撮影画像を取得した場合において、当該2次元モデル画像を構成する方法である。当該方法の具体的な手順は、例えば、以下のとおりである。
(1)距離画像が有する距離情報を用いて、当該距離情報が示す距離が予め決められた条件を満たすほど近い画素の座標(x,y)を取得する。これにより、歌唱者領域が検出される。
(2)(1)で検出した歌唱者領域に対応する歌唱者領域画像を、撮影画像から切り出す。当該切り出しにより取得した歌唱者領域画像が、2次元モデル画像である。
以上の処理により、例えば、撮影画像がカラー画像である場合は、歌唱者の色および形状を模した2次元モデル画像が構成される。また、例えば、撮影画像がグレースケール画像である場合は、歌唱者の輝度および形状を模した2次元モデル画像が構成される。
(C)の方法:当該方法は、距離画像を用いて、歌唱者の形状を模した3次元のまたは2次元のモデルを示す3次元モデル画像または2次元モデル画像を構成する方法である。つまり、当該方法は、撮影部105が距離画像を取得した場合において、当該3次元モデルまたは当該2次元モデルを構成する方法である。当該3次元モデル画像を構成する具体的な手順は、例えば、以下のとおりである。
(1)距離画像が有する距離情報を用いて、当該距離情報が示す距離が予め決められた条件を満たすほど近い画素の座標(x,y)を取得する。これにより、歌唱者領域が検出される。
(2)(1)で座標を取得した画素に対応付いている距離情報と、歌唱者座標値算出式とを用いて、当該距離情報に対応する座標値(z)を算出する。
(3)(2)で算出した座標値(z)と、当該座標値の算出に用いた画素の座標(x,y)とを対応付け、3次元の座標(x,y,z)を取得する。これにより、1以上の3次元の座標が取得される。言い換えると、これにより、距離画像内に写された歌唱者の形状が検出される。また、この処理は、例えば、ポリゴンモデリングであると考えてよい。
(4)(3)で取得した1以上の3次元の座標(x,y,z)に、予め保持している模様を示す画像を適用し、歌唱者の形状を模した3次元モデル画像を構成する。当該「模様」は、例えば、粘土や、水、泡などである。また、当該「模様を示す画像」は、例えば、テクスチャマッピングに用いるテクスチャであると考えてよい。また、この処理は、例えば、テクスチャマッピングであると考えてよい。
また、上記(C)の方法において、2次元モデル画像を構成する具体的な手順は、例えば、以下のとおりである。
(1’)距離画像が有する距離情報を用いて、当該距離情報が示す距離が予め決められた条件を満たすほど近い画素の座標(x,y)を取得する。これにより、歌唱者領域が検出される。
(2’)(1’)で取得した1以上の2次元の座標に、予め保持している模様を示す画像を適用し、歌唱者の形状を模した2次元モデル画像を構成する。当該「2次元の座標に画像を適用する」とは、例えば、当該1以上の2次元の座標(x,y)により示される歌唱者の形状に、当該画像を重ね合わせることである。また、この処理は、例えば、テクスチャマッピングであると考えてよい。
なお、上記(A)から(C)までの方法において、モデル画像構成部109は、例えば、距離画像に対して二値化やラベリングなどの画像処理を施し、歌唱者領域を検出してもよい。
(D)の方法:当該方法は、撮影画像を用いて、歌唱者の色および形状を模した2次元のモデルを示す2次元モデル画像を構成する方法である。つまり、当該方法は、撮影部105が撮影画像を取得した場合において、当該2次元モデルを構成する方法である。当該方法の具体的な手順は、例えば、以下のとおりである。
(1)撮影画像に対して二値化やラベリングなどの画像処理を施し、歌唱者領域を検出する。
(2)(1)で検出した歌唱者領域に対応する歌唱者領域画像を、撮影画像から切り出す。当該切り出しにより取得した歌唱者領域画像が、2次元モデル画像である。
(E)の方法:当該方法は、キャラクタ情報と、スケルトン情報とを用いて、キャラクタを示すモデル画像を構成する方法である。言い換えると、当該方法は、いわゆるスケルタルアニメーションにより、キャラクタを示すモデル画像を構成する方法である。
「キャラクタ情報」とは、キャラクタを示す情報である。「キャラクタ情報」は、通常、キャラクタの形状を示す1以上の座標およびキャラクタの各部位の色を示す情報の集合である。当該座標は、通常、3次元(x,y,z)である。また、当該座標は、例えば、2次元(x,y)であってもよい。また、「キャラクタ情報」は、例えば、キャラクタを示す画像であってもよい。当該「キャラクタを示す画像」は、通常、キャラクタが3次元的に表現される画像である。また、当該「キャラクタを示す画像」は、例えば、キャラクタが2次元的に表現される画像であってもよい。また、当該「キャラクタを示す画像」は、通常、静止画である。また、キャラクタ情報は、通常、予め決められた記憶領域に格納されている。
以上より、キャラクタ情報は、キャラクタの形状や色などを示すことができる情報であればよく、そのデータ構造などは、問わない。なお、3次元のキャラクタを示すキャラクタ情報を、以下、適宜、3次元キャラクタ情報とする。また、2次元のキャラクタを示すキャラクタ情報を、以下、適宜、2次元キャラクタ情報とする。
また、(E)の方法は、さらに、例えば、以下の2つの方法に分類することができる。
(E1)3次元スケルトン情報を用いる方法
(E2)2次元スケルトン情報を用いる方法
(E1)の方法:当該方法は、3次元スケルトン情報を用いて、キャラクタ情報が示すキャラクタの3次元モデル画像を構成する方法である。当該方法の具体的な手順は、例えば、以下のとおりである。
(1)予め決められた記憶領域から、3次元キャラクタ情報を取得する。
(2)(1)で取得した3次元キャラクタ情報に、3次元スケルトン情報を適用する。「3次元スケルトン情報を適用する」とは、3次元キャラクタ情報が示すキャラクタのジョイントと、3次元スケルトン情報が有する座標とを対応付け、当該キャラクタを3次元スケルトン情報が示す動きに動かすことである。
(3)(2)で3次元スケルトン情報を適用した3次元キャラクタ情報を用いて、いわゆるレンダリングや、テクスチャマッピングなどの処理を行い、3次元モデル画像を構成する。
(E2)の場合:当該方法は、2次元スケルトン情報を用いて、キャラクタ情報が示すキャラクタの2次元モデル画像を構成する方法である。当該方法の具体的な手順は、例えば、以下のとおりである。
(1)予め決められた記憶領域から、2次元キャラクタ情報を取得する。
(2)(1)で取得した2次元キャラクタ情報に、2次元スケルトン情報を適用する。「2次元スケルトン情報を適用する」とは、2次元キャラクタ情報が示すキャラクタのジョイントと、2次元スケルトン情報が有する座標とを対応付け、当該キャラクタを2次元スケルトン情報が示す動きに動かすことである。
(3)(2)で2次元スケルトン情報を適用した2次元キャラクタ情報を画像化し、2次元モデル画像を構成する。
また、モデル画像構成部109は、例えば、歌唱者領域を示す1以上の2次元の座標(x,y)、または、距離画像内に写された歌唱者の形状を示す1以上の3次元の座標(x,y,z)に、キャラクタ画像を適用し、歌唱者の形状を模したキャラクタを示す2次元モデル画像または3次元モデル画像を構成してもよい。
なお、1以上の3次元の座標を用いて3次元モデル画像を構成する方法や手順、1以上の2次元の座標を用いて2次元モデル画像を構成する方法や手順、スケルトン情報とキャラクタ情報とを用いて3次元モデル画像または2次元モデル画像を構成する方法や手順などは、公知であるので、詳細な説明を省略する。例えば、1以上の3次元の座標を用いて、3次元のモデルを示す画像(ここでは、モデル画像)を構成するソフトウェアとして、例えば、以下のソフトウェアが利用可能である。
・Maya(http://www.autodesk.co.jp/products/autodesk-maya/overview)
・3dsMAX(http://www.autodesk.co.jp/products/autodesk-3ds-max/overview)
・Shade(http://shade.e-frontier.co.jp/)
・OpenGL(http://www.opengl.org/)
・DirectX(http://www.microsoft.com/ja-jp/directx/default.aspx)
また、上記の方法などにより作成したモデル画像のうち、歌唱者を模したものを示すモデル画像を、以下、適宜、歌唱者モデル画像とする。また、上記の方法などにより作成したモデル画像のうち、キャラクタを示すモデル画像を、以下、適宜、キャラクタモデル画像とする。
また、距離画像を用いた3次元モデル画像の作成に際して、モデル画像構成部109は、例えば、距離画像から画素削除条件を満たす画素を削除してもよい。この場合、モデル画像構成部109は、当該削除後の距離画像を用いて、3次元モデル画像を構成する。また、距離画像を用いた3次元モデル画像の構成に際して、モデル画像構成部109は、例えば、いわゆるカリングを行ってもよい。これらの処理により、より高速に距離画像を用いて3次元モデル画像を構成することができる。
画像出力部110は、手本画像を出力する。また、例えば、モデル画像構成部109がモデル画像を構成した場合、画像出力部110は、通常、当該モデル画像を出力する。この場合、画像出力部110は、例えば、手本画像とモデル画像とを出力してもよい。また、画像出力部110は、例えば、2以上の画像が合成された画像である合成画像を出力してもよい。当該「合成画像」は、例えば、手本画像が背景画像上に配置された画像である。「背景画像」とは、背景の画像である。「背景画像」は、例えば、いわゆるステージや、風景、幾何学的な模様などを示す画像である。つまり、「背景画像」は、いわゆる背景となり得る画像であればよく、その内容などは、問わない。また、「合成画像」は、例えば、手本画像とモデル画像とが背景画像上に配置された画像であってもよい。この場合、手本画像とモデル画像とは、通常、背景画像上の重ならない位置に配置される。また、当該2以上の画像を合成することによる合成画像の構成は、通常、図示しない合成画像構成部が行う。
また、例えば、手本画像を出力する場合、画像出力部110は、通常、後述の楽曲再生部111が楽曲データを再生することにより出力される楽曲のテンポ(リズム)と、手本画像が示す手本のダンスのテンポ(リズム)とが同期(一致)するように、手本画像を出力する。また、「手本画像の出力」には、合成画像の出力を開始することも含まれる。
また、画像出力部110は、ディスプレイなどの出力デバイスを含むと考えてもよいし、含まないと考えてもよい。スコア出力部108は、出力デバイスのドライバソフトまたは、出力デバイスのドライバソフトと出力デバイスなどで実現され得る。
楽曲再生部111は、楽曲データ格納部103に格納されている楽曲データを再生する。「楽曲データを再生する」とは、例えば、楽曲データを再生することが可能な装置に楽曲データを送信することや、楽曲データを音出力すること、楽曲データを音出力することが可能な装置に楽曲データを送信することなどを含み、広く解する。また、「楽曲データの再生」を、以下、適宜、「楽曲の再生」とする。また、「楽曲データの再生」には、楽曲データの再生を開始することも含まれる。
また、楽曲再生部111が再生する楽曲データは、通常、受付部104が受け付けた楽曲選択指示により選択された楽曲データである。この場合、例えば、楽曲データの識別情報がユーザに提示されることにより、ユーザは、1以上の楽曲データの中から、自身が好む楽曲データを選択する。
また、楽曲再生部111は、スピーカーなどの出力デバイスを含むと考えてもよいし、含まないと考えてもよい。楽曲再生部111は、出力デバイスのドライバソフトまたは、出力デバイスのドライバソフトと出力デバイスなどで実現され得る。
なお、動き判定情報格納部101、手本画像格納部102、楽曲データ格納部103は、不揮発性の記録媒体が好適であるが、揮発性の記録媒体でも実現可能である。また、動き判定情報格納部101などに所定の情報が記憶される過程は、問わない。例えば、当該所定の情報は、記録媒体や、通信回線、入力デバイスなどを介して動き判定情報格納部101などに記憶されてもよい。
また、スケルトン情報取得部106、スコア算出部107、モデル画像構成部109は、通常、MPUやメモリ等から実現され得る。また、スケルトン情報取得部106などの処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。なお、スケルトン情報取得部106などは、ハードウェア(専用回路)で実現されてもよい。
次に、カラオケ装置1の全体動作について、フローチャートを用いて説明する。なお、所定の情報におけるi番目の情報は、「情報[i]」と記載するものとする。図2は、カラオケ装置1の全体動作を示すフローチャートである。
(ステップS201)カラオケ装置1は、受付部104が電源ONの指示を受け付けたか否かを判断する。受け付けた場合は、ステップS202に進み、そうでない場合は、ステップS201に戻る。
(ステップS202)カラオケ装置1は、電源ONの処理を行う。
(ステップS203)図示しない受信部は、楽曲データを受信したか否かを判断する。受信した場合は、ステップS204に進み、そうでない場合は、ステップS205に進む。
(ステップS204)図示しない蓄積部は、ステップS203で受信した楽曲データを、楽曲データ格納部103に蓄積する。
(ステップS205)楽曲再生部111は、受付部104が楽曲選択指示を受け付けたか否かを判断する。受け付けた場合は、ステップS206に進み、そうでない場合は、ステップS207に進む。
(ステップS206)楽曲再生部111は、ステップS205で受け付けた楽曲選択指示により選択された楽曲データが有する楽曲データ識別情報を、楽曲データ識別情報を格納するリストである再生リストに登録する。
(ステップS207)楽曲再生部111は、楽曲データの再生のタイミングであるか否かを判断する。当該タイミングは、例えば、楽曲データの再生が終了した後や、受付部104が楽曲選択指示を受け付けた後などである。そして、楽曲データの再生のタイミングである場合は、ステップS208に進み、そうでない場合は、ステップS219に進む。
(ステップS208)楽曲再生部111は、再生リストに楽曲データ識別情報が登録されているか否かを判断する。登録されている場合は、ステップS209に進み、そうでない場合は、ステップS219に進む。
(ステップS209)楽曲再生部111は、再生リストから、次に再生する楽曲データの楽曲データ識別情報を取得する。
(ステップS210)楽曲再生部111は、ステップS209で取得した楽曲データ識別情報により識別される楽曲データを、楽曲データ格納部103から取得する。
(ステップS211)楽曲再生部111は、ステップS210で取得した楽曲データの再生を開始する。
(ステップS212)画像出力部110は、手本画像を出力するか否かを判断する。当該判断は、例えば、手本画像を出力するか否かを示す情報が予め決められた記憶領域に格納されており、当該情報を用いて行う。そして、手本画像を出力する場合は、ステップS213に進み、そうでない場合は、ステップS214に進む。
(ステップS213)画像出力部110は、手本画像格納部102から手本画像を取得する。そして、画像出力部110は、当該取得した手本画像の出力を開始する。
(ステップS214)撮影部105は、歌唱者の撮影を開始する。言い換えると、撮影部105は、距離画像の取得を開始する。
(ステップS215)スケルトン情報取得部106は、撮影部105が距離画像を取得したか否かを判断する。取得した場合は、ステップS216に進み、そうでない場合は、ステップS219に進む。
(ステップS216)スケルトン情報取得部106は、ステップS215で取得した距離画像を用いて、スケルトン情報を取得する。この処理の詳細は、図3のフローチャートを用いて説明する。
(ステップS217)スコア算出部107は、ステップS216で取得したスケルトン情報を用いてスコアを算出し、スコア出力部108は、当該算出したスコアを出力する。この処理の詳細は、図4のフローチャートを用いて説明する。
(ステップS218)モデル画像構成部109は、モデル画像を構成し、画像出力部110は、当該構成したモデル画像を出力する。この処理の詳細は、図5のフローチャートを用いて説明する。
(ステップS219)カラオケ装置1は、受付部104が電源OFFの指示を受け付けたか否かを判断する。受け付けた場合は、ステップS220に進み、そうでない場合は、ステップS203に戻る。
(ステップS220)カラオケ装置1は、電源OFFの処理を行う。そして、ステップS201に戻る。
なお、図2のフローチャートにおいて、電源オフや処理終了の割り込みにより処理を終了してもよい。
また、図2のフローチャートにおいて、撮影部105による撮影は、例えば、楽曲再生部111による楽曲データの再生が終了すると、終了する。また、楽曲データの再生は、例えば、受付部104が楽曲データの再生を終了する指示を受け付けた場合や、楽曲データの再生が完了した場合などに終了する。
図3は、図2のフローチャートのステップS216のスケルトン情報の取得処理を示すフローチャートである。
(ステップS301)スケルトン情報取得部106は、距離画像が有する距離情報を用いて、歌唱者領域を検出する。
(ステップS302)スケルトン情報取得部106は、ステップS301で検出した歌唱者領域の輪郭に対してパターン認識を行い、距離画像における歌唱者のジョイントを検出する。
(ステップS303)スケルトン情報取得部106は、ステップS302で検出したジョイントを示す画素に対応付いている距離情報と、ジョイント座標値算出式とを用いて、当該距離情報に対応する座標値を算出する。
(ステップS304)スケルトン情報取得部106は、ステップS302で検出したジョイントを示す画素の2次元の座標と、ステップS303で算出した座標値とを対応付け、3次元の座標を構成する。そして、スケルトン情報取得部106は、当該3次元の座標を、連結しているジョイントごとに対応付け、スケルトン情報を構成する。そして、上位処理にリターンする。
図4は、図2のフローチャートのステップS217のスコアの算出と出力処理を示すフローチャートである。
(ステップS401)スコア算出部107は、スケルトン情報取得部106が取得したスケルトン情報を用いて、判定対象情報を取得する。判定対象情報とは、例えば、歌唱者関節角度や、歌唱者ジョイント座標、歌唱者ジョイント移動量などである。ここで、スコア算出部107は、m個の判定対象情報を取得したものとする。
(ステップS402)スコア算出部107は、動き判定情報格納部101に格納されている動き判定情報の種類が、動き判定条件であるか、動き判定値であるかを判断する。動き判定条件とは、例えば、関節角度条件や、ジョイント座標条件、ジョイント移動量条件などである。また、動き判定値とは、例えば、手本関節角度や、手本ジョイント座標、手本ジョイント移動量などである。そして、動き判定条件である場合は、ステップS403に進み、そうでない場合は、ステップS414に進む。
(ステップS403)スコア算出部107は、変数trueに0をセットする。
(ステップS404)スコア算出部107は、変数falseに0をセットする。
(ステップS405)スコア算出部107は、カウンタiに1をセットする。
(ステップS406)スコア算出部107は、判定対象情報[i]に対応付いている識別情報と同一の識別情報が対応付いている動き判定条件を、動き判定情報格納部101から取得する。
(ステップS407)スコア算出部107は、判定対象情報[i]が、ステップS406で取得した動き判定条件を満たすか否かを判断する。満たす場合は、ステップS408に進み、そうでない場合は、ステップS409に進む。
(ステップS408)スコア算出部107は、trueを1インクリメントする。
(ステップS409)スコア算出部107は、falseを1インクリメントする。
(ステップS410)スコア算出部107は、iがmであるか否かを判断する。mである場合は、ステップS412に進み、そうでない場合は、ステップS411に進む。
(ステップS411)スコア算出部107は、iを1インクリメントする。そして、ステップS406に戻る。
(ステップS412)スコア算出部107は、trueとfalseとを用いて、予め決められた種類のパラメータを算出する。
(ステップS413)スコア算出部107は、ステップS412で算出したパラメータと、予め保持しているスコア算出式とを用いて、スコアを算出する。
(ステップS414)スコア算出部107は、カウンタiに1をセットする。
(ステップS415)スコア算出部107は、判定対象情報[i]に対応付いている識別情報と同一の識別情報が対応付いている動き判定値を、動き判定情報格納部101から取得する。
(ステップS416)スコア算出部107は、判定対象情報[i]とステップS415で取得した動き判定値とを比較し、当該比較の結果を示すパラメータであるパラメータ[i]を算出する。
(ステップS417)スコア算出部107は、iがmであるか否かを判断する。mである場合は、ステップS419に進み、そうでない場合は、ステップS418に進む。
(ステップS418)スコア算出部107は、iを1インクリメントする。そして、ステップS415に戻る。
(ステップS419)スコア算出部107は、ステップS416で算出したm個のパラメータと、予め保持しているスコア算出式とを用いて、スコアを算出する。
(ステップS420)スコア出力部108は、スコアを出力するタイミングであるか否かを判断する。当該タイミングは、例えば、楽曲再生部111が楽曲データを再生している間の定期的や、楽曲再生部111が楽曲データの再生を終了した後などである。そして、スコアを出力するタイミングである場合は、ステップS421に進み、そうでない場合は、上位処理にリターンする。
(ステップS421)スコア出力部108は、ステップS413またはステップS419で算出したスコアを出力する。そして、上位処理にリターンする。
なお、図4のフローチャートにおいて、判定対象情報の種類と、動き判定情報の種類とは、同一である。つまり、判定対象情報が歌唱者関節角度である場合、動き判定情報は、関節角度条件または手本関節角度である。また、判定対象情報が歌唱者ジョイント座標である場合、動き判定情報は、ジョイント座標条件または手本ジョイント座標である。また、判定対象情報が歌唱者ジョイント移動量である場合、動き判定情報は、ジョイント移動量条件または手本ジョイント移動量である。
図5は、図2のフローチャートのステップS218のモデル画像の構成と出力処理を示すフローチャートである。
(ステップS501)画像出力部110は、モデル画像を出力するか否かを判断する。当該判断は、例えば、モデル画像を出力するか否かを示す情報が予め決められた記憶領域に格納されており、当該情報を用いて行う。そして、モデル画像を出力する場合は、ステップS502に進み、そうでない場合は、上位処理にリターンする。
(ステップS502)モデル画像構成部109は、構成するモデル画像の種類が、歌唱者モデル画像であるかキャラクタモデル画像であるかを判断する。当該判断は、例えば、構成するモデル画像の種類を示す情報が予め決められた記憶領域に格納されており、当該情報を用いて行う。そして、歌唱者モデル画像を構成する場合は、ステップS503に進み、キャラクタモデル画像を構成する場合は、ステップS506に進む。
(ステップS503)モデル画像構成部109は、距離画像が有する距離情報を用いて、距離画像中に写された歌唱者の領域である歌唱者領域を検出する。
(ステップS504)モデル画像構成部109は、ステップS503で検出した歌唱者領域内の画素に対応付いている距離情報と、歌唱者座標値算出式とを用いて、当該距離情報に対応する座標値を算出する。
(ステップS505)モデル画像構成部109は、歌唱者領域内の画素の2次元の座標と、ステップS504で算出した座標値とを対応付け、3次元の座標を構成する。そして、モデル画像構成部109は、当該3次元の座標を用いて、歌唱者モデル画像を構成する。
(ステップS506)モデル画像構成部109は、スケルトン情報取得部106が取得したスケルトン情報を取得する。
(ステップS507)モデル画像構成部109は、予め決められた記憶領域に格納されているキャラクタ情報を取得する。
(ステップS508)モデル画像構成部109は、ステップS506で取得したスケルトン情報と、ステップS507で取得したキャラクタ情報とを用いて、キャラクタモデル画像を構成する。
(ステップS509)画像出力部110は、ステップS505で取得した歌唱者モデル画像またはステップS508で取得したキャラクタモデル画像を出力する。そして、上位処理にリターンする。
なお、上記で説明したカラオケ装置1の全体動作は、あくまで一例である。つまり、カラオケ装置1の全体動作は、上記の説明に限定されるものではない。
(具体例)
次に、カラオケ装置1の動作の具体例について説明する。なお、本具体例において、楽曲データ格納部103には、1以上の楽曲データが予め格納されているものとする。また、撮影部105は、距離画像を取得するものとする。
(例1)
本例において、スケルトン情報と動き判定情報との比較により、歌唱者の動きを採点し、スコアを算出する例について説明する。なお、本例において、動き判定情報格納部101には、図6に示す動き判定情報が格納されているものとする。当該動き判定情報(項目名:手本関節角度)は、手本関節角度である。また、当該動き判定情報(手本関節角度)には、レコードを一意に特定するためのIDと、関節識別情報(項目名:関節名)が対応付いている。
まず、ユーザが、カラオケ装置1のリモコンを操作し、自身が歌いたい楽曲を選択するための操作を行ったとする。すると、受付部104は、楽曲選択指示を受け付ける。
次に、楽曲再生部111は、楽曲選択指示により選択された楽曲データの楽曲データ識別情報を、再生リストに登録する。ここで、再生リストには、当該登録された楽曲データ識別情報のみが登録されているとする。すると、楽曲再生部111は、当該楽曲データ識別情報により識別される楽曲データを、楽曲データ格納部103から取得する。そして、楽曲再生部111は、当該取得した楽曲データの再生を開始する。
次に、撮影部105は、歌唱者の撮影を開始する。つまり、撮影部105は、距離画像の取得を開始する。ここで、撮影部105が、あるタイミングで取得した距離画像が、図7に示す静止画であるものとする。当該距離画像は、カラオケ装置1(厳密には、撮影部105を構成する距離画像カメラ)から歌唱者までの距離を、濃淡により表現している画像である。
次に、スケルトン情報取得部106は、撮影部105が取得した距離画像から、歌唱者領域を検出する。そして、当該歌唱者領域の輪郭を用いて、距離画像中に写された歌唱者の1以上のジョイントを検出する。これにより、スケルトン情報取得部106は、当該ジョイントを示す画素の座標(x,y)を取得する。そして、スケルトン情報取得部106は、当該取得した座標(x,y)を、連結しているジョイントごとに対応付ける。
次に、スケルトン情報取得部106は、取得した1以上の座標(x,y)で示される画素に対応付いている距離情報と、ジョイント座標値算出式とを用いて、当該各距離情報に対応する座標値(z)を算出する。そして、スケルトン情報取得部106は、当該ジョイントの各画素を示す座標(x,y)と、当該算出した座標値(z)とを、対応する画素ごとに対応付け、1以上の3次元の座標(x,y,z)を構成する。これにより、スケルトン情報取得部106は、1以上の3次元の座標(x,y,z)から構成される3次元スケルトン情報を取得する。当該3次元スケルトン情報は、例えば、図8である。図8において、3次元スケルトン情報は、レコードを一意に特定するためのIDと、ジョイント識別情報(項目名:ジョイント名1、ジョイント名2)と、3次元の座標(項目名:座標1、座標2)とを有する。また、当該スケルトン情報を画像化した画像は、例えば、図9である。
次に、スコア算出部107は、図8のスケルトン情報を用いて、歌唱者関節角度を算出する。このとき、スコア算出部107は、図8のスケルトン情報から、関節を識別するジョイント識別情報である関節識別情報を取得する。そして、スコア算出部107は、当該取得した一の関節識別情報について、当該関節識別情報を有する2つのレコードを取得する。そして、当該取得した2つのレコードにおいてユニークな3つの座標を用いて、当該一の関節識別情報により識別される関節の角度を算出する。
例えば、関節識別情報「右肘」に対応する関節角度を算出する場合、スコア算出部107は、まず、当該関節識別情報「右肘」を有する「ID=011」と「ID=012」のレコードを取得する。そして、スコア算出部107は、当該取得した2つのレコードにおいてユニークな3つの座標「(30,30,30)」、「(25,40,30)」、「(20,50,35)」を用いて、「右肘」の角度を算出する。
以上の様にして算出された歌唱者関節角度は、例えば、図10である。図10において、歌唱者関節角度には、レコードを一意に特定するためのIDと、関節識別情報(項目名:関節名)とが対応付いている。
次に、スコア算出部107は、図10の歌唱者関節角度と、図6の手本関節角度とについて、同一の関節識別情報が対応付いている歌唱者関節角度と手本関節角度とを比較し、当該比較の結果を示すパラメータを算出する。図6の手本関節角度は、図7の距離画像が取得されたタイミングに対応する手本関節角度であるものとする。
例えば、スコア算出部107は、同一の関節識別情報「左肩」が対応付いている図10の「ID=012」の歌唱者関節角度「25°」と、図6の「ID=012」の手本関節角度「30°」とを比較し、パラメータを算出する。また、当該パラメータを算出する算出式は、「abs(歌唱者関節角度−手本関節角度)/手本関節角度」であるものとする。当該算出式は、歌唱者関節角度と手本関節角度との差の絶対値を手本関節角度で割ることを意味する。
以上の様にして算出されたパラメータは、例えば、図11である。図11において、パラメータには、レコードを一意に特定するためのIDと、関節識別情報(項目名:関節名)とが対応付いている。
次に、スコア算出部107は、図11のパラメータとスコア算出式とを用いて、スコアを算出する。当該スコア算出式は、「100−(パラメータの平均×100)」であるものとする。当該スコア算出式における「パラメータの平均」とは、図11のパラメータの平均である。そして、スコア算出部107は、例えば、スコア「85」を算出する。
次に、スコア出力部108は、スコア「85」を出力する。
(例2)
本例において、動き判定情報によるスケルトン情報の判定により、歌唱者の動きを採点し、スコアを算出する例について説明する。なお、本例において、動き判定情報格納部101には、図12に示す動き判定情報が格納されているものとする。当該動き判定情報(項目名:関節角度条件)は、関節角度条件である。また、当該動き判定情報(関節角度条件)には、レコードを一意に特定するためのIDが対応付いている。
まず、例1と同様に、ユーザの指示により楽曲再生部111が楽曲データの再生を開始した結果、スケルトン情報取得部106が図8のスケルトン情報を取得したものとする。
次に、スコア算出部107は、例1と同様に、図10の歌唱者関節角度を算出する。
次に、スコア算出部107は、図10の歌唱者関節角度と、図12の関節角度条件とにおいて、同一の関節識別情報が対応付いている歌唱者関節角度と関節角度条件とについて、当該歌唱者関節角度が当該関節角度条件を満たすか否かを判断する。そして、スコア算出部107は、当該判断の結果を示す情報を取得する。
例えば、スコア算出部107は、同一の関節識別情報「左肩」が対応付いている図10の「ID=012」の歌唱者関節角度「25°」と、図12の「ID=012」の関節角度条件「25°≦左肩≦35°」とについて、当該歌唱者関節角度「25°」が当該関節角度条件「25°≦左肩≦35°」を満たすと判断する。そして、スコア算出部107は、当該判断の結果を示す情報「1」を取得する。
また、例えば、スコア算出部107は、同一の関節識別情報「右肘」が対応付いている図10の「ID=013」の歌唱者関節角度「100°」と、図12の「ID=013」の関節角度条件「115°≦右肘≦125°」とについて、当該歌唱者関節角度「100°」が当該関節角度条件「115°≦右肘≦125°」を満たさないと判断する。そして、スコア算出部107は、当該判断の結果を示す情報「0」を取得する。
以上の様にして取得された判断の結果を示す情報は、例えば、図13である。図13において、判断の結果を示す情報(項目名:判断結果)には、レコードを一意に特定するためのIDと、関節識別情報(項目名:関節名)とが対応付いている。
次に、スコア算出部107は、図13の判断結果を示す情報を用いてパラメータを算出する。ここで、当該パラメータは、判断の結果を示す情報における「1」の数であるものとする。すると、スコア算出部107は、図13の判断結果を示す情報における「1」の数をカウントし、パラメータを算出する。この結果、スコア算出部107は、パラメータ「10」を算出したものとする。
次に、スコア算出部107は、算出したパラメータ「8」とスコア算出式とを用いて、スコアを算出する。当該スコア算出式は、「100×(パラメータ/14)」であるものとする。そして、スコア算出部107は、例えば、スコア「71」を算出する。
次に、スコア出力部108は、スコア「71」を出力する。
(例3)
次に、スコアと共に、モデル画像と手本画像とを画面出力する例について説明する。
まず、例1と同様に、スコア算出部107が、スコア「85」を算出したものとする。
次に、モデル画像構成部109は、図7の距離画像から、歌唱者領域を検出する。そして、当該歌唱者領域内の各画素に対応付いている距離情報と、歌唱者座標値算出式とを用いて、当該各距離情報に対応する座標値(z)を算出する。そして、モデル画像構成部109は、当該歌唱者領域内の各画素を示す座標(x,y)と、当該算出した座標値(z)とを、対応する画素ごとに対応付け、1以上の3次元の座標(x,y,z)を構成する。
次に、モデル画像構成部109は、構成した1以上の3次元の座標(x,y,z)を用いて、モデリングや、レンダリング、テクスチャマッピングなどの3DCGを作成するための処理を行う。そして、モデル画像構成部109は、歌唱者モデル画像を構成する。当該歌唱者モデル画像は、例えば、図14に示す画像である。
次に、画像出力部110は、手本画像格納部102から、手本画像を取得する。当該手本画像は、図15に示す画像であるものとする。
次に、スコア出力部108は、スコア「85」を出力し、画像出力部110は、図14のモデル画像と、図15の手本画像とを出力する。このとき、スコア出力部108は、手本画像と重ならない位置に配置されるようにスコアを出力する。また、画像出力部110は、モデル画像と手本画像とを、別々の領域に画面出力する。このときの様子は、例えば、図16である。図16は、画面の左側にモデル画像が出力され、画面の右側に手本画像が出力され、モデル画像の上部にスコアが出力されている例を示す図である。
以上、本実施の形態によるカラオケ装置1によれば、ダンスの採点を精度良く行うカラオケ装置を提供することができる。これにより、ユーザ(歌唱者)は、歌の採点だけでなく、ダンスの採点を楽しむことができ、歌うことだけでなく、ダンスをしながらもカラオケを楽しむことができる。また、手本画像を出力することにより、歌う楽曲に対応するダンスを知らないユーザでも、歌いながらダンスを楽しむことができる。つまり、本実施の形態によるカラオケ装置1によれば、カラオケのエンターテイメント性をより向上させることができ、ユーザがより楽しむことができるカラオケを、ユーザに提供することができる。
また、以上より、従来のカラオケ装置は、歌唱者の歌のみを採点する個別採点型カラオケを提供するカラオケ装置であり、本実施の形態によるカラオケ装置1は、歌唱者の歌のみではなくダンスも採点できる総合採点型カラオケを提供するカラオケ装置であると言える。言い換えると、本実施の形態によるカラオケ装置1は、次世代のカラオケを提供するカラオケ装置であると言える。
また、本実施の形態において、手本画像格納部102には、通常、手本画像が予め格納されている。また、当該手本画像は、例えば、楽曲再生部111が再生する楽曲データに応じて構成された手本画像であってもよい。この場合、カラオケ装置1は、例えば、キャラクタを示す情報であるキャラクタ情報が格納されるキャラクタ情報格納部と、手本の動きを示す情報である手本情報が格納される手本情報格納部と、当該キャラクタ情報と当該手本情報とを用いて、手本情報が示す手本の動きに応じた動きを行うキャラクタを示す画像である手本画像を構成する手本画像構成部とをさらに備える。そして、手本画像構成部により構成された手本画像が、手本画像格納部102に蓄積される。
また、上記「手本情報」のデータ構造は、スケルトン情報のデータ構造と同様であるので、説明を省略する。また、上記手本画像構成部が手本画像を構成する方法や手順などは、モデル画像構成部109がキャラクタ情報とスケルトン情報とを用いてモデル画像を構成する方法や手順などと同様であるので、説明を省略する。
また、本実施の形態において、動き判定情報格納部101には、通常、1以上の動き判定情報が格納される。当該1以上の動き判定情報は、通常、予め決められた1以上の各タイミングに対応する動き判定情報である。また、当該1以上の各動き判定情報は、予め決められた1以上のタイミングごとの歌唱者の動きを判定するための動き判定情報である。また、当該タイミングとは、例えば、当該楽曲データにおけるフレーム番号である。また、当該タイミングは、例えば、楽曲データの再生開始からの経過時間や、いわゆるタイムスタンプなどであってもよい。つまり、当該1以上の各動き判定情報には、通常、楽曲データ、および、当該楽曲データにおけるタイミングを示す情報が対応付いている。
また、本実施の形態において、撮影部105が取得した1以上の各歌唱者画像(静止画)には、通常、撮影開始からのタイミングを示す情報が対応付いている。当該タイミングとは、例えば、動画におけるフレーム番号である。また、当該タイミングは、例えば、撮影開始からの経過時間や、いわゆるタイムスタンプなどであってもよい。つまり、撮影部105は、取得した1以上の各歌唱者画像に、通常、撮影開始からのタイミングを示す情報を対応付ける。
また、本実施の形態において、撮影部105は、通常、楽曲データの再生が開始されると同時に、歌唱者画像の取得(歌唱者の撮影)を開始する。当該「同時」には、「ほぼ同時」も含まれる。つまり、楽曲再生部111が楽曲データの再生を開始すると、撮影部105が歌唱者画像の取得を開始する。
以上より、本実施の形態において、スコア算出部107は、通常、楽曲再生部111が再生している楽曲データ、および、当該再生している楽曲データにおけるタイミングに対応する動き判定情報を、動き判定情報格納部101から取得する。そして、スコア算出部107は、当該フレーム番号に対応する歌唱者画像を用いて取得されたスケルトン情報と、当該取得した動き判定情報とを用いて、当該スケルトン情報により示される歌唱者の動きを採点し、スコアを算出する。なお、例えば、楽曲再生部111が再生する楽曲データに、どの動き判定情報も対応付いていない場合、スコア算出部107は、通常、スコアを算出しない。
具体的に、例えば、楽曲再生部111が、楽曲データ識別情報「music01」で識別される楽曲データを再生しているとする。また、撮影部105が、10フレーム目の歌唱者画像を取得したとする。この様な場合、スコア算出部107は、まず、楽曲データ識別情報「music01」とフレーム番号「10フレーム目」に対応する動き判定情報を、動き判定情報格納部101から取得する。そして、スコア算出部107は、当該10フレーム目の歌唱者画像を用いて取得されたスケルトン情報と、当該取得した動き判定情報とを用いて、当該10フレーム目に対応するスケルトン情報により示される歌唱者の動き(当該10フレーム目の歌唱者画像に写されている歌唱者の動き)を採点する。
また、例えば、楽曲再生部111が、楽曲データ識別情報「music01」で識別される楽曲データを再生しているとする。撮影部105が、撮影開始から10秒後に歌唱者画像を取得したとする。この様な場合、スコア算出部107は、まず、楽曲データ識別情報「music01」と再生開始からの経過時間「10秒」に対応する動き判定情報を、動き判定情報格納部101から取得する。そして、スコア算出部107は、当該撮影開始から10秒後の歌唱者画像を用いて取得されたスケルトン情報と、当該取得した動き判定情報とを用いて、当該撮影開始から10秒後に対応するスケルトン情報により示される歌唱者の動き(当該撮影開始から10秒後の歌唱者画像に写されている歌唱者の動き)を採点する。
また、本実施の形態において、スケルトン情報取得部106は、例えば、歌唱者画像から、マイクの領域(以下、適宜、マイク領域とする)を検出し、当該マイク領域と隣接している領域または当該マイク領域を含む領域を、歌唱者領域として検出してもよい。マイク領域の検出は、例えば、輪郭抽出やパターン認識などの画像処理により行う。また、これにより、スケルトン情報取得部106は、例えば、撮影部105が撮影により取得した歌唱者画像に歌唱者となり得る2人以上の人物が写されている場合に、実際に歌を歌っているユーザ(歌唱者)の領域のみを歌唱者領域として歌唱者画像から検出することができる。
また、本実施の形態において、例えば、歌唱者画像が1以上の静止画を有する動画である場合(1以上のフレームから構成される動画である場合)、スケルトン情報取得部106は、当該1以上の各静止画を用いて、当該1以上の各静止画に対応するスケルトン情報を取得する。また、この場合、スケルトン情報取得部106は、例えば、予め決められた条件を満たす1以上の各静止画を用いて、当該1以上の各静止画に対応するスケルトン情報を取得してもよい。また、例えば、歌唱者画像が静止画である場合(動画が有する1以上の各静止画である場合、または、動画を構成する1以上の各フレームである場合)、スケルトン情報取得部106は、当該静止画を用いて、当該歌唱者画像に対応するスケルトン情報を取得する。また、この場合、スケルトン情報取得部106は、例えば、予め決められた条件を満たす1以上の各静止画を用いて、当該1以上の各歌唱者画像に対応するスケルトン情報を取得してもよい。なお、「予め決められた条件」とは、例えば、動画における静止画のタイミング(フレーム番号、経過時間など)や、静止画に写されている歌唱者が動いているか静止しているかに関する条件などである。
また、スコア算出部107は、例えば、スケルトン情報取得部106がスケルトン情報を取得するたびに、当該スケルトン情報を用いて、当該スケルトン情報が取得された静止画(フレーム)に対応するスコアを算出してもよい。また、スコア算出部107は、例えば、スケルトン情報取得部106が取得した1以上のスケルトン情報のうち、予め決められた条件を満たすスケルトン情報を用いて、当該スケルトン情報が取得された静止画に対応するスコアを算出してもよい。なお、「予め決められた条件」とは、例えば、動画における静止画のタイミング(フレーム番号、経過時間など)や、静止画に写されている歌唱者が動いているか静止しているかに関する条件などである。
また、スコア算出部107は、例えば、算出した2以上のスコアを統計処理し、新たなスコアを算出してもよい。当該統計処理とは、例えば、合計を算出することや、平均を算出することなどである。また、当該平均は、単純平均であってもよいし、加重平均であってもよい。また、加重平均を算出する場合、2以上の各スコア(2以上の各スコアに対応する2以上の各タイミング)に対する重みは、通常、予め決められている。また、当該重みは、通常、スコア算出部107が予め保持している。また、スコア算出部107は、例えば、算出した新たな2以上のスコアをさらに統計処理し、新たなスコアを算出してもよい。
例えば、5フレーム目から9フレーム目の各フレームに対応する5個のスコアの加重平均を算出し、新たなスコアを算出する場合、スコア算出部107は、当該5フレーム目から9フレーム目の各フレームに対応する5個の重みを取得する。そして、スコア算出部107は、当該5個のスコアと、当該5個の重みとを用いて、加重平均を算出し、新たなスコアを算出する。
また、本実施の形態において、スコア算出部107は、例えば、手本の動きに対する歌唱者の動きの遅れを考慮し、歌唱者の動きを採点してもよい。具体的に、この場合、スコア算出部107は、例えば、動き判定情報格納部101に格納されている動き判定情報と、スケルトン情報取得部106が取得したスケルトン情報とを用いて、当該動き判定情報が示す手本の動きに対する、当該スケルトン情報が示す歌唱者の動きの遅延の度合を示す遅延度を算出する。そして、スコア算出部107は、当該遅延度に応じて歌唱者の動きを採点し、当該採点の結果であるスコアを算出する。「遅延度」は、例えば、遅延しているフレーム数や、遅延している秒数などである。また、「遅延度に応じて」とは、例えば、遅延がないものと見なすことや、遅延度合をスコアに反映させることなどである。
上記「遅延がないものと見なす」とは、例えば、歌唱者画像のフレーム番号とは異なるフレーム番号に対応する動き判定情報を用いて、当該歌唱者画像に写されている歌唱者の動きを採点することである。言い換えると、「遅延がないものと見なす」とは、例えば、一の歌唱者画像を用いて取得されたスケルトン情報が示す歌唱者の動きに最も類似する手本の動きを示す動き判定情報を用いて、当該一の歌唱者画像に写されている歌唱者の動きを採点することである。「歌唱者の動きに最も類似する手本の動きを示す動き判定情報を用いて」とは、例えば、2以上の動き判定情報を用いて採点した結果のスコアのうち、最も高いスコアを取得することである。また、上記「遅延度合をスコアに反映させる」とは、例えば、算出したスコアに対して、遅延度合に応じた係数を掛けることである。
例えば、撮影部105が取得した歌唱者画像(静止画)のフレーム番号との差が予め決められた条件を満たすフレーム番号に対応する動き判定情報を用いて、歌唱者の動きを採点することが予め決められているとする。当該「予め決められた条件」は、対象となるフレーム番号から+5フレームであるとする。また、この場合において、撮影部105が、10フレーム目の歌唱者画像を取得したとする。この様な場合、スコア算出部107は、例えば、5フレーム目から10フレーム目までの各フレームに対応する動き判定情報を用いて、10フレーム目の歌唱者画像を用いて取得されるスケルトン情報が示す歌唱者の動きを採点する。そして、スコア算出部107は、算出した6個のスコアのうち、最も高いスコアを、当該10フレーム目の歌唱者画像に対応するスコアとして取得する。
また、例えば、スコア算出部107が、上記算出した6個のスコアのうち、8フレーム目の動き判定情報を用いて算出したスコアを、上記10フレーム目の歌唱者画像に対応するスコアとして取得したとする。この様な場合、スコア算出部107は、例えば、遅延度「10−8=2」を算出する。そして、スコア算出部107は、当該遅延度に応じた係数を算出する。当該係数の算出方法などは、問わない。そして、スコア算出部107は、取得した10フレーム目の歌唱者画像に対応するスコアに対し、当該算出した係数を掛け、新たなスコアを算出する。
なお、上記の説明におけるフレーム番号は、経過時間であってもよいことは、言うまでもない。
以上より、本実施の形態において、スコア算出部107は、例えば、手本の動きに対する歌唱者の動きの一致度と、手本の動きに対する歌唱者の動きの遅延度とを用いて、歌唱者の動きを採点し、当該採点の結果であるスコアを算出する。この場合、スコア算出部107は、例えば、スコア算出式を用いてスコアを算出する。具体的に、スコア算出部107は、当該一致度と、当該遅延度とをパラメータとしてスコア算出式に代入する。
また、本実施の形態において、カラオケ装置1は、スコア算出部107を備えていなくてもよい。この場合、カラオケ装置1は、例えば、前述のスコアを算出する装置(以下、適宜、スコア算出装置)が算出したスコアを、当該スコア算出装置から受信する。そして、スコア出力部108は、当該受信したスコアを出力する。なお、スコア算出装置が行う処理や動作などは、スコア算出部107が行う処理や動作などと同様であるので、説明を省略する。
また、本実施の形態において、カラオケ装置1は、モデル画像構成部109を備えていなくてもよい。この場合、画像出力部110は、手本画像のみを出力する。
また、本実施の形態において、画像出力部110が出力する手本画像は、通常、楽曲再生部111が再生する楽曲データに対応付いている。つまり、画像出力部110は、手本画像を出力する場合、通常、楽曲再生部111が再生している楽曲データに対応付いている手本画像を、手本画像格納部102から取得する。そして、画像出力部110は、当該取得した手本画像を出力する。また、例えば、楽曲再生部111が再生する楽曲データに、どの手本画像も対応付いていない場合、画像出力部110は、通常、手本画像を出力しない。
また、本実施の形態において、画像出力部110は、通常、歌詞を示す画像である歌詞画像をも出力する。当該歌詞画像は、通常、予め決められた記憶領域に格納されている。当該予め決められた記憶領域は、例えば、楽曲データ格納部103であってもよい。また、出力する歌詞画像は、通常、楽曲再生部111が再生する楽曲データに対応付いている。つまり、画像出力部110は、通常、楽曲再生部111が再生している楽曲データに対応付いている歌詞画像を、予め決められた記憶領域から取得する。そして、画像出力部110は、当該取得した歌詞画像を出力する。また、歌詞画像を出力する場合、合成画像構成部は、例えば、歌詞画像をも用いて、合成画像を構成してもよい。
また、本実施の形態において、手本画像が出力される場合、通常、楽曲データの再生が開始されると同時に、手本画像の出力が開始される。当該「同時」には、「ほぼ同時」も含まれる。つまり、楽曲再生部111が楽曲データの再生を開始すると、画像出力部110が手本画像の出力を開始する。
また、本実施の形態において、モデル画像が出力される場合、通常、楽曲データの再生が開始されると同時に、モデル画像の出力が開始される。当該「同時」には、「ほぼ同時」も含まれる。つまり、楽曲再生部111が楽曲データの再生を開始すると、撮影部105は、歌唱者の撮影を開始する。また、当該撮影部105による撮影の開始に応じて、モデル画像構成部109がモデル画像を構成し、画像出力部110がモデル画像の出力を開始する。
また、モデル画像と手本画像とを出力する場合、画像出力部110は、例えば、モデル画像と手本画像とを重ねて出力してもよい。この場合、画像出力部110は、例えば、手本画像の上にモデル画像が重なるようにモデル画像と手本画像とを出力する。また、この場合、画像出力部110は、例えば、モデル画像の上に手本画像が重なるようにモデル画像と手本画像とを出力してもよい。また、この場合、画像出力部110は、例えば、他の画像の上に重なる画像に対して、いわゆる半透明化の処理を施してもよい。また、これにより、ユーザにとって、手本どおりにダンスが踊れているか否かがよりわかりやすくなる。
また、本実施の形態において、カラオケ装置1は、例えば、歌唱者が歌う歌の採点を行う歌唱採点部212を備えていてもよい。歌唱採点部212は、通常、歌唱者が歌う歌の採点を行い、当該採点の結果であるスコア(以下、適宜、歌スコアとする)を算出する。なお、歌唱者が歌う歌を採点する方法や手順など(歌スコアを算出する方法や手順など)は、公知であるので、詳細な説明を省略する。
また、歌唱採点部212を備える場合、カラオケ装置1は、通常、スコア算出部107に代えて、例えば、歌唱者の動きを採点した結果であるスコア(以下、適宜、ダンススコアとする)と、上記歌スコアとを用いて、歌唱者の歌と歌唱者の動きとを採点した結果であるスコア(以下、適宜、総合スコアとする)を算出するスコア算出部207を備えていてもよい。この場合、スコア出力部108は、通常、スコア算出部207が算出した総合スコアを出力する。また、スコア出力部108は、例えば、スコア算出部207が算出した総合スコアまたはダンススコア、歌唱採点部212が取得した歌スコアのうちの1以上を出力してもよい。
また、総合スコアを算出する手順は、例えば、次のとおりである。つまり、スコア算出部207は、例えば、総合スコアを算出するための算出式(以下、適宜、総合スコア算出式とする)を予め保持している。「総合スコア算出式」は、通常、ダンススコアと、歌スコアとを代入するための変数を有する。そして、スコア算出部207は、例えば、算出したダンススコアと、歌唱採点部が算出した歌スコアとを、当該総合スコア算出式に代入し、当該代入後の総合スコア算出式を計算することにより、総合スコアを算出する。なお、「総合スコア算出式」は、いわゆる関数(プログラム)であってもよい。また、「総合スコア算出式」は、通常、ダンススコアおよび歌スコアに対する増加関数であることが好適である。
また、「総合スコア」は、歌唱者によるパフォーマンス(歌およびダンス)のスコアであるパフォーマンススコアであると言える。
また、歌唱採点部212およびスコア算出部207を備えるカラオケ装置であるカラオケ装置2のブロック図は、図17である。図17において、カラオケ装置2は、動き判定情報格納部101、手本画像格納部102、楽曲データ格納部103、受付部104、撮影部105、スケルトン情報取得部106、スコア算出部207、スコア出力部108、モデル画像構成部109、画像出力部110、楽曲再生部111、歌唱採点部212を備える。
また、上記各実施の形態において、各処理または各機能は、単一の装置または単一のシステムによって集中処理されることによって実現されてもよいし、あるいは、複数の装置または複数のシステムによって分散処理されることによって実現されてもよい。
また、上記各実施の形態において、各構成要素は専用のハードウェアにより構成されてもよいし、あるいは、ソフトウェアにより実現可能な構成要素については、プログラムを実行することによって実現されてもよい。例えば、ハードディスクや半導体メモリ等の記録媒体に記録されたソフトウェア・プログラムをCPU等のプログラム実行部が読み出して実行することによって、各構成要素が実現され得る。
また、上記各実施の形態におけるカラオケ装置を実現するソフトウェアは、例えば、以下のようなプログラムである。つまり、このプログラムは、コンピュータを、歌唱者を撮影し、当該歌唱者が写された画像である歌唱者画像を取得する撮影部と、前記歌唱者画像に含まれる情報を用いて、歌唱者の動きを示す情報であるスケルトン情報を取得するスケルトン情報取得部と、前記スケルトン情報取得部が取得したスケルトン情報を用いて、当該スケルトン情報が示す歌唱者の動きを採点し、当該採点の結果であるスコアを算出するスコア算出部と、前記スコア算出部が算出したスコアを出力するスコア出力部として機能させるためのプログラムである。
なお、上記プログラムにおいて、上記プログラムが実現する機能には、ハードウェアでしか実現できない機能は含まれない。
また、上記プログラムは、サーバなどからダウンロードされることによって実行されてもよいし、所定の記録媒体(例えば、CD−ROMなどの光ディスクや磁気ディスク、半導体メモリなど)に記録されたプログラムが読み出されることによって実行されてもよい。また、このプログラムは、プログラムプロダクトを構成するプログラムとして用いられてもよい。
また、上記プログラムを実行するコンピュータは、単数であってもよいし、複数であってもよい。つまり、集中処理を行ってもよいし、あるいは分散処理を行ってもよい。
また、図18は、前述のプログラムを実行して、前述の実施の形態のカラオケ装置等を実現するコンピュータシステム9の概観図である。前述の実施の形態は、コンピュータハードウェア、およびその上で実行されるコンピュータプログラムで実現され得る。
図18において、コンピュータシステム9は、CD−ROMドライブ9011、FDドライブ9012を含むコンピュータ901と、キーボード902と、マウス903と、モニタ904とを備える。
図19は、コンピュータシステム9のブロック図である。図19において、コンピュータ901は、CD−ROMドライブ9011、FDドライブ9012に加えて、MPU9013と、ブートアッププログラム等のプログラムを記憶するためのROM9014と、MPU9013に接続され、アプリケーションプログラムの命令を一時的に記憶するとともに一時記憶空間を提供するためのRAM9015と、アプリケーションプログラム、システムプログラム、およびデータを記憶するためのハードディスク9016と、CD−ROMドライブ9011、FDドライブ9012、MPU9013等を相互に接続するバス9017とを備える。ここでは図示しないが、コンピュータ901は、さらに、LANへの接続を提供するネットワークカードを備えていてもよい。
コンピュータシステム9に、前述の実施の形態のカラオケ装置等の機能を実行させるプログラムは、CD−ROM9101、またはFD9102に記憶されて、CD−ROMドライブ9011またはFDドライブ9012に挿入され、さらにハードディスク9016に転送されてもよい。これに代えて、プログラムは、図示しないネットワークを介してコンピュータ901に送信され、ハードディスク9016に記憶されてもよい。プログラムは実行の際にRAM9015にロードされる。プログラムは、CD−ROM9101、FD9102またはネットワークから直接、ロードされてもよい。
プログラムは、コンピュータ901に、前述の実施の形態のカラオケ装置等の機能を実行させるオペレーティングシステム(OS)、またはサードパーティープログラム等は、必ずしも含まなくてもよい。プログラムは、制御された態様で適切な機能(モジュール)を呼び出し、所望の結果が得られるようにする命令の部分のみを含んでいればよい。コンピュータシステム9がどのように動作するかは周知であり、詳細な説明は省略する。
本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。