以下に、本願の開示する練習支援プログラム、練習支援方法および練習支援システムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
図1は、本実施例1に係る練習支援システムの一例を示す図である。図1に示すように、この練習支援システムは、3D(3 dimension)レーザセンサ50と、カメラ60と、技認識装置70と、練習支援装置100とを有する。練習支援装置100は、3Dレーザセンサ50、カメラ60、技認識装置70に接続される。
本実施例1では一例として、選手10は、第一の技の演技を行った後に、再度、第一の技の演技を行うものとする。選手10は、演技者の一例である。一回目の演技を、「第一の演技」と表記し、二回目の演技を、「第二の演技」と表記する。第一の演技および第二の演技ともに、選手10は、同一の「第一の技」の演技を行う。また、本実施例1では一例として、選手10が、体操演技を行う場合について説明するが、他の採点競技に関しても同様に適用することが可能である。
たとえば、他の採点競技は、トランポリン、水泳の飛び込み、フィギュアスケート、空手の型、社交ダンス、スノーボード、スケートボード、スキーエアリアル、サーフィンを含む。また、クラシックバレエ、スキージャンプ、モーグルのエアー、ターン、野球、バスケットボールのフォームチェック等にも適用してもよい。また、剣道、柔道、レスリング、相撲などの競技にも適用してもよい。
3Dレーザセンサ50は、選手10に対して3Dセンシングを行うセンサである。3Dレーザセンサ50は、センシング結果となるセンシングデータを、技認識装置70および練習支援装置100に出力する。なお、3Dレーザセンサ50は、選手10までの距離を計測可能な距離画像センサの一例である。
図2は、センシングデータを説明するための図である。センシングデータには、複数のフレームが含まれ、各フレームには、フレームを一意に識別するフレーム番号が昇順に付与される。図2に示すセンシングデータでは、古いフレームから順番に、フレーム番号n、n+1、・・・、n+15、・・・、n+30のフレームを示す。nは自然数に対応する。たとえば、各フレームには、3Dレーザセンサ50から、選手10上の各点までの距離情報が含まれる。センシングデータを用いることで、各フレームにおける選手10の各関節の3次元位置を推定し、選手10の3Dモデルを生成することができる。
3Dレーザセンサ50がセンシングを行う場合のフレームレートを、30fps(frames per second)とした場合、フレーム番号nのフレームから、フレーム番号n+1までの時間間隔は、0.33秒となる。センシングデータでは、前後のフレームを基に補間することで、フレーム間に相当する、フレームを生成することもできる。たとえば、フレーム番号nのフレームと、フレーム番号n+1のフレームとを補間することで、n+0.5のフレームを生成することができる。
カメラ60は、選手10の映像データを撮影する装置である。カメラ60は、映像データを、練習支援装置100に出力する。映像データには、選手10の画像に相当する複数のフレームが含まれ、各フレームには、フレーム番号が割り振られる。図3は、映像データを説明するための図である。図3に示す映像データでは、古いフレームから順番に、フレーム番号n、n+1、・・・のフレームを示す。映像データのフレーム番号と、センシングデータのフレーム番号とは、同期しているものとする。また、下記の説明では、適宜、センシングデータに含まれるフレームを、「センシングフレーム」と表記し、映像データのフレームを「映像フレーム」と表記する。
技認識装置70は、3Dレーザセンサ50がセンシングしたセンシングデータを基にして、技の局面、技を構成する各要素を認識する装置である。技認識装置70は、センシングデータの各フレーム番号と、各認識結果とをそれぞれ対応づけた認識結果データを生成する。技認識装置70は、認識結果データを、練習支援装置100に出力する。局面とは、一つの技を便宜的に区切る単位であって、要素は一つの技を構成する動きの単位である。局面は複数の要素からなる。なお、種目や競技によっては、局面は設定されずに、動きの単位を示す要素だけが設定されることもある。
たとえば、技認識装置70は、技の特徴を定義した技認識テーブル(図示略)と、センシングデータとを比較することで、各センシングフレームに対応する、技の局面および技を構成する要素を認識する。技認識装置70は、他の技術を用いて、各センシングフレームに対応する、技の局面および技を構成する要素を認識してもよい。
練習支援装置100は、第一の演技中のセンシングデータから、第一の技を構成する複数の要素に対応する複数の第一のセンシングフレームを特定する。練習支援装置100は、第二の演技中のセンシングデータから、第一の技を構成する複数の要素に対応する複数の第二のセンシングフレームを特定する。練習支援装置100は、複数の各要素の各々について、第一のセンシングフレームと、第二のセンシングフレームとを対応づけて、時系列に、表示する。
なお、練習支援装置100は、センシングデータを基にして、選手10の関節位置、骨格位置を推定し、選手10の3Dモデルデータを生成する。練習支援装置100は、第一のセンシングフレームに対応する3次元モデルと、第二のセンシングフレームに対応する3次元モデルとを、対応づけて表示する。
図4は、本実施例1に係る練習支援装置が表示する表示画面の一例を示す図(1)である。図4に示すように、この表示画面80では、表示領域80aと、表示領域80bが含まれる。たとえば、第一の技には、第一の要素、第二の要素、・・・第mの要素、第m+nの要素が含まれるものとする。表示領域80aには、第mの要素に対応する第一のセンシングフレームの3Dモデルが表示される。表示領域80bには、第mの要素に対応する第二のセンシングフレームの3Dモデルが表示される。すなわち、練習支援装置100は、表示領域80aに表示される3Dモデルに対応する技の要素と、表示領域80bに表示される3Dモデルに対応する技の要素とを同期させて、表示する。
練習支援装置100は、図4に示すような表示画面80を表示させることで、比較対象となる複数の要素に対応する選手10の各姿勢を比較可能な態様で表示することができる。
続いて、図1に示した練習支援装置100の構成の一例について説明する。図5は、本実施例1に係る練習支援装置の構成を示す機能ブロック図である。図5に示すように、この練習支援装置100は、インタフェース部110、通信部120、入力部130、表示部140、記憶部150、制御部160を有する。表示部140、出力部165は、表示部の一例である。
インタフェース部110は、3Dレーザセンサ50、カメラ60、技認識装置70と接続し、3Dレーザセンサ50、カメラ60、技認識装置70からデータを取得する装置である。インタフェース部110は、取得したデータを、制御部160に出力する。たとえば、インタフェース部110は、3Dレーザセンサ50から、センシングデータを取得する。インタフェース部110は、カメラ60から映像データを取得する。インタフェース部110は、技認識装置70から、認識結果データを取得する。
通信部120は、ネットワークを介して、他の装置とデータ通信を行う装置である。通信部120は、通信装置に対応する。練習支援装置100は、ネットワークを介して、3Dレーザセンサ50、カメラ60、技認識装置70に接続されてもよい。この場合には、通信部120は、ネットワークを介して、3Dレーザセンサ50、カメラ60、技認識装置70からデータを取得する。
入力部130は、練習支援装置100に各種の情報を入力するための入力装置である。入力部130は、キーボード、マウス、タッチパネル等に対応する。たとえば、ユーザは、入力部130を操作して、第一の演技中のセンシングデータ、第二の演技中のセンシングデータを指定する。ユーザは、入力部130を操作して、技を構成する複数の要素のうち、参照したい要素を指定する。ユーザは、選手10であっても良いし、コーチ等、他のユーザであってもよい。
表示部140は、制御部160から出力される表示画面の情報を表示する表示装置である。たとえば、表示部140は、図4で説明した表示画面80等を表示する。表示部140は、液晶ディスプレイ、タッチパネル等に対応する。
記憶部150は、センシングDB(Data Base)151、技認識DB152、映像DB153、関節定義データ154、関節位置DB155、3DモデルDB156を有する。記憶部150は、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ(Flash Memory)などの半導体メモリ素子や、HDD(Hard Disk Drive)などの記憶装置に対応する。
センシングDB151は、3Dレーザセンサ50から取得するセンシングデータを格納するデータベースである。図6は、本実施例1に係るセンシングDBのデータ構造の一例を示す図である。図6に示すように、このセンシングDB151は、演技識別番号と、フレーム番号と、センシングフレームとを対応づける。演技識別番号は、別々に行われた演技を一意に識別する番号である。同一の演技であっても、3Dレーザセンサ50にセンシングされたタイミングが異なる場合には、異なる演技識別番号が付与される。たとえば、第一の演技と、第二の演技とは、別の演技識別番号が割り振られる。
図6において、フレーム番号は、同一の演技識別番号に対応する各センシングフレームを、一意に識別する番号である。センシングフレームは、3Dレーザセンサ50にセンシングされたセンシングフレームである。
技認識DB152は、技認識装置70から取得する認識結果データを格納するデータベースである。図7は、本実施例1に係る技認識DBのデータ構造の一例を示す図である。図7に示すように、この技認識DB152は、演技識別番号と、フレーム番号と、技認識結果データとを対応づける。演技識別番号に関する説明は、センシングDB151で行った説明と同様である。
図7において、フレーム番号は、同一の演技識別番号に対応する各センシングフレームを、一意に識別する番号である。たとえば、同一の演技識別番号に対応する各フレーム番号について、図7のフレーム番号と、図6のフレーム番号とは同期しているものとする。
図7において、技認識結果データは、技認識装置70に認識されたセンシングフレームの認識結果を示す情報である。技認識結果データには、技の局面、技の要素が含まれる。たとえば、演技識別番号「P101」のフレーム番号「2」に対応するセンシングフレームが、図29で説明した要素「踏み切り」のフレームである場合には、演技識別番号「P101」のフレーム番号「2」に対応する技認識結果データに「局面=局面1a、要素=踏み切り」が格納される。
本実施例1では一例として、技認識結果データには、技を構成する要素のうち、技を代表する要素が設定される。たとえば、フレームが、技を構成する「要素A」に対応するフレームである場合には、技認識結果データには、「要素=要素A」が格納される。一方、フレームが、技を構成する要素に対応するフレームでない場合には、技認識結果データには、「要素=NULL」が格納される。
映像DB153は、カメラ60から取得する映像データを格納するデータベースである。図8は、本実施例1に係る映像DBのデータ構造の一例を示す図である。図8に示すように、この映像DB153は、演技識別番号と、フレーム番号と、映像フレームとを対応づける。演技識別番号に関する説明は、センシングDB151で行った説明と同様である。
図8において、フレーム番号は、同一の演技識別番号に対応する各映像フレームを、一意に識別する番号である。なお、映像フレームのフレーム番号は、センシングフレームのフレーム番号と同期しているものとする。映像フレームは、カメラ60に撮影された映像フレームである。
関節定義データ154は、演技者(選手10)の各関節位置を定義するものである。図9は、本実施例1に係る関節定義データの一例を示す図である。図9に示すように、関節定義データ154は、公知の骨格モデルで特定される各関節をナンバリングした情報を記憶する。たとえば、図9に示すように、右肩関節(SHOULDER_RIGHT)には7番が付与され、左肘関節(ELBOW_LEFT)には5番が付与され、左膝関節(KNEE_LEFT)には11番が付与され、右股関節(HIP_RIGHT)には14番が付与される。ここで、実施例1では、8番の右肩関節のX座標をX8、Y座標をY8、Z座標をZ8と記載する場合がある。なお、点線の数字は、骨格モデルから特定されても、採点には利用されない関節等である。
関節位置DB154は、3Dレーザセンサ50のセンシングデータを基に生成される選手10の各関節の位置データである。図10は、本実施例1に係る関節位置DBのデータ構造の一例を示す図である。図10に示すように、この関節位置DB155は、演技識別番号と、フレーム番号と、「X0、Y0、Z0、・・・、X17、Y17、Z17」を対応づける。演技識別番号に関する説明は、センシングDB151で行った説明と同様である。
図10において、フレーム番号は、同一の演技識別番号に対応する各センシングフレームを一意に識別する番号である。図10に示すフレーム番号と、図6に示すフレーム番号は、同期しているものとする。「X0、Y0、Z0、・・・、X17、Y17、Z17」は、各関節のXYZ座標であり、たとえば「X0、Y0、Z0」は、図9に示す0番号の関節の3次元座標である。
図10は、演技識別番号「P101」のセンシングデータにおける各関節の時系列の変化を示しており、フレーム番号「1」では、各関節の位置が「X0=100、Y0=20、Z0=0、・・・、X17=200、Y17=40、Z17=5」であることを示す。そして、フレーム番号「2」では、各関節の位置が「X0=101、Y0=25、Z0=5、・・・、X17=202、Y17=39、Z17=15」へ移動したことを示す。
3DモデルDB156は、センシングデータを基に生成される選手10の3Dモデルの情報を格納するデータベースである。図11は、本実施例1に係る3DモデルDBのデータ構造の一例を示す図である。図11に示すように、3DモデルDB156は、演技識別番号と、フレーム番号と、骨格データと、3Dモデルデータとを対応づける。演技識別番号、フレーム番号に関する説明は、センシングDB151で行った説明と同様である。
骨格データは、各関節位置を接続することで推定される選手10の骨格を示すデータである。3Dモデルデータは、センシングデータから得られる情報と、骨格データとを基にして推定される選手10の3Dモデルのデータである。
図5の説明に戻る。制御部160は、登録部161、3Dモデル生成部162、受付部163、特定部164、出力部165を有する。制御部160は、CPU(Central Processing Unit)やMPU(Micro Processing Unit)などによって実現できる。また、制御部160は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などのハードワイヤードロジックによっても実現できる。
登録部161は、3Dレーザセンサ50からセンシングデータを取得し、取得したセンシングデータを、センシングDB151に登録する。登録部161は、センシングデータ(フレーム番号、センシングフレーム)をセンシングDB151に登録する際に、演技識別番号を対応づける。演技識別番号は、入力部130等を介して、ユーザに指定されるものとする。
登録部161は、技認識装置70から認識結果データを取得し、取得した認識結果データを、技認識DB152に登録する。登録部161は、技認識結果データ(フレーム番号、技認識結果データ)を技認識DB152に登録する際に、演技識別番号を対応づける。演技識別番号は、入力部130等を介して、ユーザに指定されるものとする。
登録部161は、カメラ60から映像データを取得し、取得した映像データを、映像DB153に登録する。登録部161は、映像データ(フレーム番号、映像フレーム)を映像DB153に登録する際に、演技識別番号を対応づける。演技識別番号は、入力部130等を介して、ユーザに指定されるものとする。
3Dモデル生成部162は、センシングDB151を基にして、各演技識別番号の各フレーム番号に対応する3Dモデルデータを生成する処理部である。以下において、3Dモデル生成部162の処理の一例について説明する。3Dモデル生成部162は、センシングDB151のセンシングフレームと、関節定義データ154に定義された各関節の位置関係とを比較して、センシングフレームに含まれる各関節の種別および関節の3次元座標を特定する。3Dモデル生成部162は、各演技識別番号のフレーム番号毎に上記処理を繰り返し実行することで、関節位置DB155を生成する。
3Dモデル生成部162は、関節位置DB155に格納された各関節の3次元座標を、関節定義データ154に定義された接続関係を基にしてつなぎ合わせることで、骨格データを生成する。また、3Dモデル生成部162は、推定した骨格データを、選手10の体格に合わせた骨格モデルに当てはめることで、3Dモデルデータを生成する。3Dモデル生成部162は、各演技識別番号のフレーム番号毎に上記処理を繰り返し実行することで、3DモデルDB156を生成する。
受付部163は、入力部130等から、ユーザが比較したい2つの演技に対応する2種類の演技識別番号を受け付ける処理部である。受付部163は、受け付けた2種類の演技識別番号の情報を、特定部164に出力する。たとえば、ユーザが比較したい2つの演技を、「第一の演技」および「第二の演技」とする。第一の演技に対応する演技識別番号を「第一の演技識別番号」とし、第二の演技に対応する演技識別番号を「第二の演技識別番号」とする。
たとえば、第一の演技と第二の演技との関係は、指導前の演技、指導後の演技に対応する。または、第一の演技と第二の演技との関係は、失敗した演技と、成功した演技に対応する。または、第一の演技と第二の演技との関係は、単に、過去のある演技と、最新の演技であってもよい。また、第一の演技と第二の演技の演技者(選手10)は同一人物であっても、異なる人物であっても良い。
更に、受付部163は、追加表示箇所に関する情報を受け付ける。追加表示箇所に関する情報は、ユーザが表示を望む、技の要素と複数の関節を識別する情報を含む。受付部163は、追加表示箇所に関する情報を、出力部165に出力する。
たとえば、受付部163は、追加表示箇所を選択するための追加表示箇所選択画面を、表示部140に表示させ、追加表示箇所に関する情報を受け付ける。
図12は、本実施例1に係る追加表示箇所選択画面の一例を示す図である。図12に示す例では、追加表示箇所選択画面81には、表示箇所となる関節を選択する選択フォーム81aと、要素を入力する入力フォーム81bとを有する。ユーザは、入力部130を操作して、追加表示箇所に関する情報を入力する。図12に示す例では、追加表示箇所として、関節7,8,9が選択され、要素Eが入力されている。なお、要素の選択においては、ある技が指定され、指定された技を構成する要素の中から特定の要素Eが選択される態様であってもよい。
また、受付部163は、入力部130等から、3Dモデルを参照する場合の仮想視点の位置および方向の情報を受け付ける。以下の説明では、仮想視点の位置および方向の情報を、「仮想視線データ」と表記する。受付部163は、仮想視線データを、出力部165に出力する。
特定部164は、受付部163から、第一の演技識別番号と、第二の演技識別番号とを取得する。たとえば、特定部164は、技認識DB152について、第一の演技識別番号に対応する各フレーム番号の技認識結果データを参照し、第一の演技の技を構成する複数の要素それぞれを代表するフレーム番号(以下、第一のフレーム番号)を特定する。特定部164は、第一の演技識別番号と、特定した複数の第一のフレーム番号とを、出力部165に出力する。なお、ある要素を構成するフレームが単数である場合には、当該フレームが、ある要素を代表するフレームとなる。一方で、ある要素を構成するフレームが複数である場合には、所定のフレームが、ある要素を代表するフレームとなる。たとえば、所定のフレームとして、ある要素を構成する複数のフレームのうち、はじめのフレーム、真ん中のフレーム、最後のフレームなどである。
特定部164は、技認識DB152について、第二の演技識別番号に対応する各フレーム番号の技認識結果データを参照し、第二の演技の技を構成する複数の要素それぞれを代表するフレーム番号(以下、第二のフレーム番号)を特定する。特定部164は、第二の演技識別番号と、特定した複数の第二のフレーム番号とを、出力部165に出力する。
以下の説明では、第一の演技識別番号の複数の第一のフレーム番号に対応する複数のセンシングフレームを複数の「第一のセンシングフレーム」と表記する。第二の演技識別番号の複数の第二のフレーム番号に対応する複数のセンシングフレームを複数の「第二のセンシングフレーム」と表記する。
出力部165は、複数の要素の各々について、複数の第一のセンシングフレームと、複数の第二のセンシングフレームとを対応づけて、時系列に、表示部140に表示させる処理部である。以下において、出力部165の処理1〜5の一例についてそれぞれ説明する。
出力部165が実行する「処理1」について説明する。出力部165の処理1は、図4で説明した表示画面80の情報を生成して、表示部140に出力する処理である。たとえば、第一の演技および第二の演技を構成する要素が「要素A、要素B、要素C、・・・」を含むものとする。
出力部165は、複数の第一のセンシングフレームのうち、要素Aに対応する第一のセンシングフレームのフレーム番号をキーにして、対応する第一の3Dモデルデータを3DモデルDB156から検出する。出力部165は、仮想視線データを基準として、仮想視線から見える第一の3Dモデルデータの画像を生成し、表示領域80aに設置する。
出力部165は、複数の第二のセンシングフレームのうち、要素Aに対応する第二のセンシングフレームのフレーム番号をキーにして、対応する第二の3Dモデルデータを3DモデルDB156から検出する。出力部165は、仮想視線データを基準として、仮想視線から見える第二の3Dモデルデータの画像を生成し、表示領域80bに設置する。
出力部165は、他の要素「要素B、要素C、・・・」についても、上記処理を繰り返し実行することで、表示領域80aには、「要素B、要素C、・・・」に対応する第一の3Dモデルデータを表示する。また、表示領域80bには、「要素B、要素C、・・・」に対応する第二の3Dモデルデータを表示する。出力部165は、表示領域80aに表示させる第一の3Dモデルデータの要素と、表示領域80bに表示させる第二の3Dモデルデータの要素とを同期させるものとする。
練習支援装置100は、図4に示すような表示画面80を表示させることで、比較対象となる複数の要素に対応する選手10の各姿勢を比較可能な態様で表示することができる。
出力部165が実行する「処理2」について説明する。出力部165が実行する処理2は、図13に示す表示画面82の情報を生成して、表示部140に出力する処理である。図13は、本実施例1に係る練習支援装置が表示する表示画面の一例を示す図(2)である。
出力部165は、処理1と同様にして、第一の3Dモデルデータの画像と、第二の3Dモデルデータの画像とを生成する。出力部165は、第一のモデルデータの画像と、第二の3Dモデルデータの画像とを重畳して、表示領域82aに表示する。表示領域82aに表示される第一の3Dモデルデータの要素と、第二の3Dモデルデータの要素は、同一であるとする。つまり、ある局面におけるある要素に対応する、第一の3Dモデルデータと第二の3Dモデルデータとが、重畳された状態で、表示領域82aに表示される。
出力部165には、要素毎に、選手10の姿勢を把握しやすい仮想視線データ(以下、設定視線データと表記する)が予め設定されているものとする。出力部165は、表示領域82aに現在表示している第一の3Dモデルデータおよび第二の3Dモデルデータの要素に対応する設定視線データを基にして、表示領域82b、82cの画像を生成する。
出力部165は、設定視線データを基準として、仮想視線から見える第一の3Dモデルデータの画像を生成し、表示領域82bに設定する。出力部165は、3Dモデルデータの所定の関節を通る直線82dと、水平線82eとのなす角度を合わせて表示してもよい。
出力部165は、設定視線データを基準として、仮想視線から見える第二の3Dモデルデータの画像を生成し、表示領域82cに設定する。出力部165は、3Dモデルデータの所定の関節を通る直線82fと、水平線82gとのなす角度を合わせて表示してもよい。
練習支援装置100は、図13に示すような表示画面82を表示させることで、比較対象となる複数の要素に対応する選手10の各姿勢を比較可能な態様で表示することができる。また、各要素について、複数の仮想視線から見た第一の演技、第二の演技に関する3Dモデルの映像を同時に参照することができる。
出力部165が実行する「処理3」について説明する。出力部165が実行する処理3は、図14に示す表示画面83の情報を生成して、表示部140に出力する処理である。図14は、本実施例1に係る練習支援装置が表示する表示画面の一例を示す図(3)である。
出力部165は、処理1と同様にして、各要素に対応する各第一の3Dモデルデータと、各要素に対応する各第二の3Dモデルデータとを特定する。たとえば、出力部165は、仮想視線データを基準として、仮想視線から見える各要素A〜Fの各第一の3Dモデルデータの画像84a〜84fを生成し、表示領域84に時系列に、設置する。画像84a〜84fに示す数字は、フレーム番号を示す。たとえば、要素Aに対応する画像84aのフレーム番号は「40」である。
出力部165は、仮想視線データを基準として、仮想視線から見える各要素A〜Fの各第二の3Dモデルデータの画像85a〜85fを生成し、表示領域85に時系列に、設置する。画像85a〜85fに示す数字は、フレーム番号を示す。たとえば、要素Aに対応する画像85aのフレーム番号は「50」である。
出力部165は、画像84a〜84fを表示領域84に配置し、画像85a〜85fを表示領域85に配置する場合には、上下の画像の要素が同一となるように画像の配置を行う。
練習支援装置100は、図14に示すような表示画面83を表示させることで、比較対象となる各要素に対応する選手10の各姿勢を時系列で、比較可能な態様で表示することができる。また、フレーム番号を表示することで、第一の演技における、ある要素とそれに続く要素との間に要した時間と、第二の演技における、ある要素とそれに続く要素との間に要した時間とを、ユーザは把握することができる。たとえば、ユーザが、ある要素からそれに続く要素へ移行するまでの時間が、第一の演技に比べ第二の演技の方が短いまたは長いことを把握することで、演技のスピードを意識して、練習を行うことができる。
出力部165が実行する「処理4」について説明する。出力部165が実行する処理4は、図15に示す表示画面86の情報を生成して、表示部140に出力する処理である。図15は、本実施例1に係る練習支援装置が表示する表示画面の一例を示す図(4)である。
出力部165は、処理3と同様にして、仮想視線データを基準として、仮想視線から見える各要素A〜Fの各第一の3Dモデルデータの画像87a〜87fを生成し、表示領域87に時系列に設置する。出力部165は、仮想視線データを基準として、仮想視線から見える各要素A〜Fの各第一の3Dモデルデータの画像88a〜88fを生成し、表示領域88に時系列に、設置する。
出力部165は、受付部163から、追加表示箇所に関する情報を取得する。ここでは説明の便宜上、追加表示箇所に関する情報には、関節7,8,9、要素Eが含まれているものとする。出力部165は、複数の第一のセンシングフレームのうち、要素Eに対応する第一のセンシングフレームのフレーム番号と、関節位置DB155とを基にして関節7,8,9の位置を特定する。出力部165は、関節位置7,8,9を通る線分89aを、要素Eに対応する画像87eに表示させる。
出力部165は、複数の第二のセンシングフレームのうち、要素Eに対応する第二のセンシングフレームのフレーム番号と、関節位置DB155とを基にして関節7,8,9の位置を特定する。出力部165は、関節位置7,8,9を通る線分89bを、要素Eに対応する画像88eに表示させる。また、出力部165は、画像88eに、線分89aと、線分89bとを重畳表示させてもよい。
練習支援装置100は、図15に示すような表示画面86を表示部140に表示させることで、追加表示箇所に関する関節位置の変化(改善具合)を容易に把握することが可能となる。たとえば、コーチから「手首の角度に気をつけて」と指導された時には、手首の角度を見やすい視線で、指導前後の演技(たとえば、第一の演技、第二の演技)を並べることが有効である。このため、ユーザは、追加表示箇所に関する関節位置として、手首付近の関節(たとえば、関節7,8,9)を指定し、仮想視線データを指定することで、手首付近に関して、見やすい方向から、指導前後の演技を容易に比較できる。
また、コーチから「腰からつま先を伸ばして」と指導された時には、腰からつま先を見やすい視線で、指導前後の演技を並べることが有効である。このため、ユーザは、追加表示箇所に関する関節位置として、腰からつま先に関連する関節(たとえば、関節14,15,16,17)を指定し、仮想視線データを指定することで、腰からつま先に関して、見やすい方向から、指導前後の演技を容易に比較できる。
従来の映像比較では、ユーザの所望する方向からの映像を参照する場合には、その都度、カメラの位置を変え、撮影を行っている。これに対して、練習支援装置100で用いる3Dレーザセンサ50で計測したセンシングデータは、3D情報を有している。このため、仮想視線データを指定すれば、指定された仮想視線から見た3Dモデルデータを生成して、各要素の姿勢を比較可能に表示することが可能になる。
出力部165が実行する「処理5」について説明する。出力部165が実行する処理5は、図16に示す表示画面90の情報を生成して、表示部140に出力する処理である。図16は、本実施例1に係る練習支援装置が表示する表示画面の一例を示す図(5)である。
出力部165は、処理3と同様にして、仮想視線データを基準として、仮想視線から見える各要素A,B,Cの各第一の3Dモデルデータの画像91a,91b,91cを生成し、表示領域91に時系列に配置する。出力部165は、仮想視線データを基準として、仮想視線から見える各要素A,B,Cの各第二の3Dモデルデータの画像92a,92b,92cを生成し、表示領域92に時系列に配置する。
また、出力部165は、各要素間のフレームの数に基づき、時間間隔を把握可能な態様で表示する。たとえば、出力部165は、各要素間のフレームの数に基づき、10フレーム毎に「四角」を表示する。出力部165は、各要素に対応するセンシングフレームのフレーム番号と、センシングDB151とを比較することで、各要素間のフレームの数を計数する。
たとえば、出力部165は、要素Aに対応する第一のセンシングフレームと、要素Bに対応する第一のセンシングフレームとの間のフレーム数が、20フレームである場合には、2つの「四角」を、画像91aと、画像91bとの間に表示させる。出力部165は、要素Bに対応する第一のセンシングフレームと、要素Cに対応する第一のセンシングフレームとの間のフレーム数が、30フレームである場合には、3つの「四角」を、画像91bと、画像91cとの間に表示させる。
出力部165は、要素Aに対応する第二のセンシングフレームと、要素Bに対応する第二のセンシングフレームとの間のフレーム数が、10フレームである場合には、1つの「四角」を、画像92aと、画像92bとの間に表示させる。出力部165は、要素Bに対応する第二のセンシングフレームと、要素Cに対応する第二のセンシングフレームとの間のフレーム数が、20フレームである場合には、2つの「四角」を、画像92bと、画像92cとの間に表示させる。
練習支援装置100は、図16に示すような表示画面90を表示部140に表示させることで、ユーザは、要素間のフレーム数を視覚的に把握しやすくなる。また、選手10が演技した際の技の実施速度を容易に把握しやすくなり、タイミングの差を比較することが可能となる。たとえば、第一の演技と、第二の演技とを比較すると、各画像間における、第一の演技の四角の数が、第二の演技の四角の数より多いため、第一の演技よりも、第二の演技の方がタイミングが早いことを容易に把握可能である。
次に、本実施例1に係る練習支援装置100の処理手順の一例について説明する。図17は、本実施例1に係る練習支援装置の処理手順を示すフローチャート(1)である。図17に示すように、練習支援装置100の受付部163は、比較対象となる第一の演技識別番号、第二の演技識別番号を受け付ける(ステップS101)。
練習支援装置100の特定部164は、第一の演技中(第一の演技識別番号に対応する第一の演技中)に計測されたセンシングデータから第一の技を構成する複数の要素をそれぞれ代表する複数の第一のセンシングフレームを特定する(ステップS102)。
特定部164は、第二の演技中(第二の演技識別番号に対応する第二の演技中)に計測されたセンシングデータから第一の技を構成する複数の要素をそれぞれ代表する複数の第二のセンシングフレームを特定する(ステップS103)。
練習支援装置100の出力部168は、複数の要素の各々について、複数の第一のセンシングフレームと、複数の第二のセンシングフレームとを対応づける(ステップS104)。受付部163は、仮想視線データを受け付け、出力部165は、仮想視線からみた、第一の3Dモデルの画像および第二の3Dモデルの画像を生成する(ステップS105)。出力部163は、第一の3Dモデルの画像および第二の3Dモデルの画像を対応づけて、時系列に表示させる(ステップS106)。
図18は、本実施例1に係る練習支援装置の処理手順を示すフローチャート(2)である。図18に示すように、練習支援装置100の受付部163は、比較対象となる第一の演技識別番号、第二の演技識別番号を受け付ける(ステップS201)。
練習支援装置100の特定部164は、第一の演技中(第一の演技識別番号に対応する第一の演技中)に計測されたセンシングデータから第一の技を構成する複数の要素をそれぞれ代表する複数の第一のセンシングフレームを特定する(ステップS202)。
特定部164は、第二の演技中(第二の演技識別番号に対応する第二の演技中)に計測されたセンシングデータから第一の技を構成する複数の要素をそれぞれ代表する複数の第二のセンシングフレームを特定する(ステップS203)。
練習支援装置100の出力部165は、複数の要素の各々について、複数の第一のセンシングフレームと、複数の第二のセンシングフレームとを対応づける(ステップS204)。受付部163は、仮想視線データを受け付け、出力部165は、仮想視線からみた、第一の3Dモデルの画像および第二の3Dモデルの画像を生成する(ステップS205)。
受付部163は、追加表示箇所に関する情報の入力を受け付ける(ステップS206)。出力部165は、第一のセンシングフレームにおいて追加表示箇所に対応する箇所を特定し、第一の3Dモデルの画像上に第一線分を表示する(ステップS207)。たとえば、第一線分は、図15の線分89aに対応する。
出力部165は、第二のセンシングフレームにおいて追加表示箇所に対応する箇所を特定し、第二の3Dモデルの画像上に第二線分を表示する(ステップS208)。たとえば、第二線分は、図15の線分89bに対応する。
出力部165は、第二の3Dモデルの画像上に、第一線分および第二線分を重畳表示する(ステップS209)。出力部165は、第一の3Dモデルの画像および第二の3Dモデルの画像を対応づけて、時系列に表示する(ステップS210)。
図19は、本実施例1に係る練習支援装置の処理手順を示すフローチャート(3)である。図19に示すように、練習支援装置100の受付部163は、比較対象となる第一の演技識別番号、第二の演技識別番号を受け付ける(ステップS301)。
練習支援装置100の特定部164は、第一の演技中(第一の演技識別番号に対応する第一の演技中)に計測されたセンシングデータから第一の技を構成する複数の要素をそれぞれ代表する複数の第一のセンシングフレームを特定する(ステップS302)。
特定部164は、第二の演技中(第二の演技識別番号に対応する第二の演技中)に計測されたセンシングデータから第一の技を構成する複数の要素をそれぞれ代表する複数の第二のセンシングフレームを特定する(ステップS303)。
練習支援装置100の出力部165は、複数の要素の各々について、複数の第一のセンシングフレームと、複数の第二のセンシングフレームとを対応づける(ステップS304)。受付部163は、仮想視線データを受け付け、出力部165は、仮想視線からみた、第一の3Dモデルの画像および第二の3Dモデルの画像を生成する(ステップS305)。出力部165は、第一の3Dモデルの画像および第二の3Dモデルの画像を対応づけて、時系列に表示させる(ステップS306)。
出力部165は、第一の演技、第二の演技に対して、要素間のフレーム数を計数する(ステップS307)。出力部165は、要素間のフレーム数に応じて、四角の数を算出する(ステップS308)。出力部165は、四角の数に対応する図を、要素間に表示させる(ステップS309)。
次に、本実施例1に係る練習支援装置100の効果について説明する。練習支援装置100は、第一の演技中のセンシングデータから、第一の技を構成する複数の要素に対応する複数の第一のセンシングフレームを特定する。練習支援装置100は、第二の演技中のセンシングデータから、第一の技を構成する複数の要素に対応する複数の第二のセンシングフレームを特定する。練習支援装置100は、複数の各要素の各々について、第一のセンシングフレームと、第二のセンシングフレームとを対応づけて、時系列に、表示する。これにより、練習支援装置100によれば、比較対象となる複数の要素に対応する選手10の各姿勢を比較可能な態様で表示することができる。
なお、図4に示した表示画面80、図13〜図16に示した表示画面82〜90では図示を省略したが、出力部165は、下記の処理を行ってもよい。たとえば、出力部165は、表示画面80、82〜90で表示しているセンシングフレームのフレーム番号と同期させて、表示画面80、82〜90の所定領域に、映像DB153の映像フレームを表示させてもよい。
図20は、本実施例2に係る練習支援システムの一例を示す図である。図20に示すように、この練習支援システムは、3Dレーザセンサ50と、カメラ60と、技認識装置70と、練習支援装置200とを有する。このうち、3Dレーザセンサ50、カメラ60、技認識装置70に関する説明は、図1で説明したものと同様である。
本実施例2では一例として、選手10は、第一の技の演技を行った後に、再度、第一の技の演技を行うものとする。一回目の演技を、「第一の演技」と表記し、二回目の演技を、「第二の演技」と表記する。第一の演技および第二の演技ともに、選手10は、同一の第一の技の演技を行う。また、本実施例2では一例として、選手10が、体操演技を行う場合について説明するが、他の採点競技(フィギアスケートなど)に関しても同様に適用することが可能である。
練習支援装置200は、第一のセンシングデータに対応する第一の骨格データの推移と、第二のセンシングデータに対応する第二の骨格データの推移とを比較することで、複数の要素のうち、第一の骨格データの推移と第二の骨格データの推移との差分が所定値以上となる要素を特定する。たとえば、この差分が所定値以上となる要素は、複数の要素のうち、選手10が技を失敗した要素に対応する。練習支援装置200は、この特定した要素のタイミングが把握可能な態様で、表示画面を生成し、表示する。
図21は、本実施例2に係る練習支援装置が表示する表示画面の一例を示す図である。図21に示すように、この表示画面93には、表示領域93aと、表示領域93bと、表示領域93cとが含まれる。
たとえば、第一の技には、第一の要素、第二の要素、・・・第mの要素が含まれるものとする。なお、第一の要素〜第mの要素に対応するセンシングフレームのフレーム番号を、フレーム番号1〜mとする。表示領域93aには、第一の要素〜第mの要素に対応する第一のセンシングフレームの3Dモデル(仮想視線から見た3Dモデルデータの画像)がそれぞれ表示される。表示領域93bには、第一の要素〜第mの要素に対応する第二のセンシングフレームの3Dモデルがそれぞれ表示される。
第一の要素〜第mの要素の内、第一の骨格データの推移と、第二の骨格データの推移との差分が閾値以上となる要素を、フレーム番号8〜12の要素(第八の要素〜第十二の要素)とする。この場合には、練習支援装置200は、表示領域93aのフレーム番号8〜12の3Dモデルの画像を強調表示する。
表示領域93cには、第一の骨格データの推移と、第二の骨格データの推移とがグラフで表示される。ここでは一例として、骨格データの推移を、選手10の右足首の旋回速度とする。表示領域93cのグラフの横軸はフレーム番号に対応し、縦軸は、選手10の右足首の旋回速度に対応する。線分94aは、第一の骨格データに対応する、選手10の右足首の旋回速度と、フレーム番号との関係を示す線分である。線分94bは、第二の骨格データに対応する、選手10の右足首の旋回速度と、フレーム番号との関係を示す線分である。線分94aは、線分94bと比較して、フレーム番号8以降、速度の差分が閾値以上となり、第一の演技が失敗していることが分かる。
練習支援装置200が、図21に示す表示画面93を表示することで、ユーザは、失敗した3Dモデルの画像と、成功した3Dモデルの画像とを容易に比較することができる。また、強調表示により、第一の技を構成する複数の要素のうち、失敗した要素の3Dモデルの画像を容易に参照することも可能となる。
続いて、図20に示した練習支援装置200の構成の一例について説明する。図22は、本実施例2に係る練習支援装置の構成を示す機能ブロック図である。図22に示すように、この練習支援装置200は、インタフェース部210、通信部220、入力部230、表示部240、記憶部250、制御部260を有する。このうち、インタフェース部210、通信部220、入力部230、表示部240に関する説明は、図5で説明した、インタフェース部110、通信部120、入力部130、表示部140に関する説明と同様である。
記憶部250は、センシングDB251、技認識DB252、映像DB253、関節定義データ254、関節位置DB255、3DモデルDB256を有する。記憶部250は、RAM、ROM、フラッシュメモリなどの半導体メモリ素子や、HDDなどの記憶装置に対応する。
このうち、センシングDB251、技認識DB252、映像DB253、関節定義データ254、関節位置DB255、3DモデルDB256に関する説明は、図5で説明した、センシングDB(Data Base)151、技認識DB152、映像DB153、関節定義データ154、関節位置DB155、3DモデルDB156に関する説明と同様である。
制御部260は、登録部261、3Dモデル生成部262、受付部263、特定部264、出力部265を有する。制御部260は、CPUやMPUなどによって実現できる。また、制御部260は、ASICなどのハードワイヤードロジックによっても実現できる。
登録部261は、3Dレーザセンサ50からセンシングデータを取得し、取得したセンシングデータを、センシングDB251に登録する。登録部261は、センシングデータ(フレーム番号、センシングフレーム)をセンシングDB251に登録する際に、演技識別番号を対応づける。演技識別番号は、入力部230等を介して、ユーザに指定されるものとする。演技識別番号は、選手10が行った演技を一意に識別するデータである。
登録部261は、技認識装置70から認識結果データを取得し、取得した認識結果データを、技認識DB252に登録する。登録部261は、技認識結果データ(フレーム番号、技認識結果データ)を技認識DB252に登録する際に、演技識別番号を対応づける。演技識別番号は、入力部230等を介して、ユーザに指定されるものとする。
登録部261は、カメラ60から映像データを取得し、取得した映像データを、映像DB253に登録する。登録部261は、映像データ(フレーム番号、映像フレーム)を映像DB253に登録する際に、演技識別番号を対応づける。演技識別番号は、入力部230等を介して、ユーザに指定されるものとする。
3Dモデル生成部262は、センシングDB251を基にして、各演技識別番号の各フレーム番号に対応する3Dモデルデータを生成する処理部である。3Dモデル生成部262は、生成した3Dモデルデータを、3DモデルDB256に登録する。3Dモデル生成部262が3Dモデルデータを生成する処理は、図5に示した3Dモデル生成部162の処理と同様である。
受付部263は、入力部230等から、ユーザが比較したい2つの演技に対応する2種類の演技識別番号を受け付ける処理部である。受付部263は、受け付けた2種類の演技識別番号の情報を、特定部264に出力する。たとえば、ユーザが比較したい2つの演技を、「第一の演技」および「第二の演技」とする。第一の演技に対応する演技識別番号を「第一の演技識別番号」とし、第二の演技に対応する演技識別番号を「第二の演技識別番号」とする。
特定部264は、受付部263から、第一の演技識別番号と、第二の演技識別番号とを取得する。たとえば、特定部264は、技認識DB252について、第一の演技識別番号に対応する各フレーム番号の技認識結果データを参照し、第一の演技の技(第一の技)を構成する複数の要素それぞれを代表するフレーム番号(以下、第一のフレーム番号)を特定する。特定部264は、第一の演技識別番号と、特定した複数の第一のフレーム番号とを、出力部265に出力する。
特定部264は、技認識DB252について、第二の演技識別番号に対応する各フレーム番号の技認識結果データを参照し、第二の演技の技(第一の技)を構成する複数の要素それぞれを代表するフレーム番号(以下、第二のフレーム番号)を特定する。特定部264は、第二の演技識別番号と、特定した複数の第二のフレーム番号とを、出力部265に出力する。
第一の演技識別番号の複数の第一のフレーム番号に対応する複数のセンシングフレームを複数の「第一のセンシングフレーム」と表記する。第二の演技識別番号の複数の第二のフレーム番号に対応する複数のセンシングフレームを複数の「第二のセンシングフレーム」と表記する。
更に、特定部264は、特定した各第一のフレーム番号に対応する各骨格データ(第一の骨格データ)を、3DモデルDB256から取得する。特定部264は、所定数のフレーム毎に、第一の骨格データの推移を算出する。たとえば、第一の骨格データの推移は、第一の骨格データに含まれる複数の関節のうち、所定の関節の位置の移動速度に対応する。
特定部264は、特定した各第二のフレーム番号に対応する各骨格データ(第二の骨格データ)を、3DモデルDB256から取得する。特定部264は、所定数のフレーム毎に、第二の骨格データの推移を算出する。たとえば、第二の骨格データの推移は、第二の骨格データに含まれる複数の関節のうち、所定の関節の位置の移動速度に対応する。
特定部264は、第一の骨格データの推移と、第二の骨格データの推移とを比較して、複数の要素のうち、第一の骨格データの推移と、第二の骨格データの推移との差が、閾値以上となる要素を、第一の技を構成する複数の要素から特定する。以下の説明では、第一の技を構成する複数の要素のうち、第一の骨格データの推移と、第二の骨格データの推移との差が、閾値以上となる要素を、「特定要素」と表記する。特定部264は、特定要素の情報を、出力部265に出力する。
特定部264は、第一の骨格データの推移の情報と、第二の骨格データの推移の情報を、出力部265に出力する。たとえば、骨格データの推移の情報は、フレーム番号と、フレーム番号に対応する骨格データに含まれる所定の関節の移動速度とを含む。
なお、特定部264は、比較を行う場合に、推移の算出の基準となる関節の種別に応じて、閾値を調整してもよい。たとえば、特定部264は、指先の関節位置に対応する閾値の大きさを、膝の関節に対応する閾値の大きさよりも大きく設定する。
出力部265は、複数の要素の各々について、複数の第一のセンシングフレームと、複数の第二のセンシングフレームとを対応づけて、時系列に、表示部240に表示させる処理部である。また、出力部265は、複数の第一のセンシングフレームまたは複数の第二のセンシングフレームのうち、特定要素に対応するセンシングフレームを強調表示する。また、出力部265は、第一の骨格データの推移の情報と、第二の骨格データの推移の情報とを示すグラフを生成して、表示部240に表示させる。
たとえば、出力部265は、図21で説明した表示画面93を生成し、表示部240に表示させる。
すなわち、出力部265は、複数の第一のセンシングフレームのうち、各要素に対応する第一のセンシングフレームのフレーム番号をキーにして、対応する第一の3Dモデルデータを3DモデルDB256から検出する。出力部265は、仮想視線データを基準として、仮想視線から見える第一の3Dモデルデータの画像を生成し、表示領域93aに設置する。また、出力部265は、各3Dモデルの画像のうち、特定要素に対応する3Dモデルの画像を強調表示する。
出力部265は、複数の第二のセンシングフレームのうち、各要素に対応する第二のセンシングフレームのフレーム番号をキーにして、対応する第二の3Dモデルデータを3DモデルDB256から検出する。出力部265は、仮想視線データを基準として、仮想視線から見える第二の3Dモデルデータの画像を生成し、表示領域93bに設置する。
出力部265は、横軸をフレーム番号、縦軸を速度とするグラフに対して、第一の骨格データの推移および第二の骨格データの推移をプロットし、表示領域93cに表示させる。
次に、本実施例2に係る練習支援装置200の処理手順の一例について説明する。図23は、本実施例2に係る練習支援装置の処理手順を示すフローチャートである。図23に示すように、練習支援装置200の受付部263は、比較対象となる第一の演技識別番号、第二の演技識別番号を受け付ける(ステップS401)。
練習支援装置200の特定部264は、第一の演技中(第一の演技識別番号に対応する第一の演技中)に計測されたセンシングデータから第一の技を構成する複数の要素をそれぞれ代表する複数の第一のセンシングフレームを特定する(ステップS402)。
特定部264は、第二の演技中(第二の演技識別番号に対応する第二の演技中)に計測されたセンシングデータから第一の技を構成する複数の要素をそれぞれ代表する複数の第二のセンシングフレームを特定する(ステップS403)。
練習支援装置100の出力部265は、複数の要素の各々について、複数の第一のセンシングフレームと、複数の第二のセンシングフレームとを対応づける(ステップS404)。受付部263は、仮想視線データを受け付け、出力部265は、仮想視線からみた、第一の3Dモデルの画像および第二の3Dモデルの画像を生成する(ステップS405)。出力部265は、第一の3Dモデルの画像および第二の3Dモデルの画像を対応づけて、時系列に表示させる(ステップS406)。
特定部264は、第一の骨格データの推移と、第二の骨格データの推移との差が閾値以上となる要素を特定する(ステップS407)。出力部265は、特定要素に対応する3Dモデルの画像を強調表示する(ステップS408)。出力部265は、第一の骨格データの推移、第二の骨格データの推移をグラフで表示する(ステップS409)。
次に、本実施例2に係る練習支援装置200の効果について説明する。練習支援装置200は、第一のセンシングデータに対応する第一の骨格データの推移と、第二のセンシングデータに対応する第二の骨格データの推移とを比較することで、複数の要素のうち、差分が所定値以上となる要素を特定する。たとえば、この差分が所定値以上となる要素は、複数の要素のうち、選手10が技を失敗した要素に対応する。練習支援装置200は、この特定した要素のタイミングが把握可能な態様で、表示画面を生成し、表示する。これにより、ユーザは、失敗した3Dモデルの画像と、成功した3Dモデルの画像とを容易に比較することができる。また、図21の表示画面93のような強調表示、グラフ表示により、第一の技を構成する複数の要素のうち、失敗した要素の3Dモデルの画像、失敗に至る骨格の推移等を容易に参照することも可能となる。
図24は、本実施例3に係る練習支援システムの一例を示す図である。図24に示すように、この練習支援システムは、3Dレーザセンサ50と、カメラ60と、技認識装置70と、練習支援装置300とを有する。このうち、3Dレーザセンサ50、カメラ60、技認識装置70に関する説明は、図1で説明したものと同様である。
本実施例3では一例として、選手10aが、第一の技の演技を行った後に、選手10aとは体格の異なる他の選手10bが、第一の技の演技を行うものとする。選手10aが行った演技を、「第一の演技」と表記し、選手10bが行った演技を、「第二の演技」と表記する。第一の演技および第二の演技ともに、各選手10a,10bは、同一の第一の技の演技を行う。また、本実施例3では一例として、選手10a,10bが、体操演技を行う場合について説明するが、他の採点競技(フィギアスケートなど)に関しても同様に適用することが可能である。
練習支援装置300は、実施例1で説明した練習支援装置100と同様にして、複数の各要素の各々について、選手10aが行った演技の第一のセンシングフレーム(第一の3Dモデル)と、選手10bが行った演技の第二のセンシングフレーム(第二の3Dモデル)とを対応づけて、時系列に、表示する。ここで、練習支援装置300は、選手10aの大きさと、選手10bの大きさとの差分に応じて、第一の3Dモデルに対する、第二の3Dモデルの大きさを決定し、決定した大きさで、第一の3Dモデルと、第二の3Dモデルを表示する。
図25は、本実施例3に係る練習支援装置が表示する表示画面の一例を示す図である。図25に示すように、この表示画面95では、表示領域95aと、表示領域95bとが含まれる。たとえば、第一の技には、第一の要素、第二の要素、・・・第mの要素、第m+nの要素が含まれるものとする。表示領域95aには、第mの要素に対応する第一のセンシングフレームの3Dモデルが表示される。表示領域95bには、第mの要素に対応する第二のセンシングフレームの3Dモデルが表示される。ここで、表示領域95bに表示される選手10bの3Dモデルの大きさは、選手10aと選手10bとの大きさの差分に応じた大きさに調整される。たとえば、練習支援装置300は、表示領域95aの3Dモデルのスケールと、表示領域95bの3Dモデルのスケールとを合わせる。
このように、練習支援装置300は、表示領域95aの3Dモデルのスケールと、表示領域95bの3Dモデルのスケールとを合わせて表示するため、選手10aと選手10bとの体格差の違いによらず、直感的な演技の比較を行うことができる。
続いて、図24に示した練習支援装置300の構成の一例について説明する。図26は、本実施例3に係る練習支援装置の構成を示す機能ブロック図である。図26に示すように、この練習支援装置300は、インタフェース部310、通信部320、入力部330、表示部340、記憶部350、制御部360を有する。このうち、インタフェース部310、通信部320、入力部330、表示部340に関する説明は、図5で説明した、インタフェース部110、通信部120、入力部130、表示部140に関する説明と同様である。
記憶部350は、センシングDB351、技認識DB352、映像DB353、関節定義データ354、関節位置DB355、3DモデルDB356を有する。記憶部350は、RAM、ROM、フラッシュメモリなどの半導体メモリ素子や、HDDなどの記憶装置に対応する。
このうち、センシングDB351、技認識DB352、映像DB353、関節定義データ354、関節位置DB355、3DモデルDB356に関する説明は、図5で説明した、センシングDB(Data Base)151、技認識DB152、映像DB153、関節定義データ154、関節位置DB155、3DモデルDB156に関する説明と同様である。
制御部360は、登録部361、3Dモデル生成部362、受付部363、特定部364、出力部365を有する。制御部360は、CPUやMPUなどによって実現できる。また、制御部360は、ASICなどのハードワイヤードロジックによっても実現できる。
登録部361は、3Dレーザセンサ50からセンシングデータを取得し、取得したセンシングデータを、センシングDB351に登録する。登録部361は、センシングデータ(フレーム番号、センシングフレーム)をセンシングDB351に登録する際に、演技識別番号を対応づける。演技識別番号は、入力部330等を介して、ユーザに指定されるものとする。演技識別番号は、選手10aまたは選手10bが行った演技を一意に識別するデータである。
登録部361は、技認識装置70から認識結果データを取得し、取得した認識結果データを、技認識DB352に登録する。登録部361は、技認識結果データ(フレーム番号、技認識結果データ)を技認識DB352に登録する際に、演技識別番号を対応づける。演技識別番号は、入力部330等を介して、ユーザに指定されるものとする。
登録部361は、カメラ60から映像データを取得し、取得した映像データを、映像DB353に登録する。登録部361は、映像データ(フレーム番号、映像フレーム)を映像DB353に登録する際に、演技識別番号を対応づける。演技識別番号は、入力部330等を介して、ユーザに指定されるものとする。
3Dモデル生成部362は、センシングDB351を基にして、各演技識別番号の各フレーム番号に対応する3Dモデルデータを生成する処理部である。3Dモデル生成部362は、生成した3Dモデルデータを、3DモデルDB356に登録する。3Dモデル生成部362が3Dモデルデータを生成する処理は、図5に示した3Dモデル生成部162の処理と同様である。
なお、3Dモデル生成部362は、3Dモデル生成部162の処理に加えて下記の処理を更に実行する。3Dモデル生成部362は、入力部330等を介して、選手10aの体型情報と、選手10bの体型情報とを取得する。たとえば、選手の体型情報には、演技識別番号と、選手の識別情報と、選手の身長、スリーサイズ(たとえば、チェストサイズ、ウエストサイズ、ヒップサイズ)の情報が含まれる。なお、3Dモデル生成部362は、選手の身長、スリーサイズの情報を、3Dレーザセンサ50のセンシングデータを基にして、生成してもよい。
3Dモデル生成部362は、選手10aの大きさと、選手10bの大きさとの差分を算出し、算出した差分に応じて、選手10bの3Dモデルデータの大きさを補正する。たとえば、3Dモデル生成部362は、式(1)に基づいて、差分値を算出する。式(1)のα、β、γ、εは、予め設定される重み係数である。
差分値=α|(選手10bの身長−選手10aの身長)×|β|(選手10bのチェストサイズ−選手10aのチェストサイズ)×|γ|(選手10bのウエストサイズ−選手10aのウエストサイズ)×|ε|(選手10bのヒップサイズ−選手10aのヒップサイズ)|・・・(1)
3Dモデル生成部362は、選手10bの体型情報に含まれる演技識別番号をキーとして、3DモデルDB356から、選手10bの各フレーム番号の各骨格データを特定する。3Dモデル生成部362は、差分値を基にして、各骨格データを補正する。たとえば、3Dモデル生成部362は、骨格データに含まれる各関節間の長さを、式(2)に基づいて補正する。式(2)において、選手10bの体格が、選手10aの体格よりも大きい場合には、補正値Xは、差分値の値が大きいほど、小さくなる値である。一方、選手10bの体格が、選手10aの体格よりも小さい場合には、補正値Xは、差分値の値が大きいほど、大きくなる値である。なお、3Dモデル生成部362は、関節の組毎に、補正値Xを変更してもよい。
補正後の関節間の長さ=補正前の関節間の長さ×補正値X・・・(2)
3Dモデル生成部362は、上記処理により、選手10bに対応する各骨格データを補正した後に、補正した各骨格データを基にして、再度、3Dモデルデータを生成し、生成した3Dモデルデータによって、選手10bに対応する3Dモデルデータを更新する。
受付部363は、入力部330等から、ユーザが比較したい2つの演技に対応する2種類の演技識別番号を受け付ける処理部である。受付部363は、受け付けた2種類の演技識別番号の情報を、特定部364に出力する。たとえば、ユーザが比較したい選手10aの演技を「第一の演技」とし、選手10bの演技を「第二の演技」とする。第一の演技に対応する演技識別番号を「第一の演技識別番号」とし、第二の演技に対応する演技識別番号を「第二の演技識別番号」とする。
特定部364は、受付部363から、第一の演技識別番号と、第二の演技識別番号とを取得する。たとえば、特定部364は、技認識DB352について、第一の演技識別番号に対応する各フレーム番号の技認識結果データを参照し、第一の演技の技(第一の技)を構成する複数の要素それぞれを代表するフレーム番号(以下、第一のフレーム番号)を特定する。特定部364は、第一の演技識別番号と、特定した複数の第一のフレーム番号とを、出力部365に出力する。
特定部364は、技認識DB352について、第二の演技識別番号に対応する各フレーム番号の技認識結果データを参照し、第二の演技の技(第一の技)を構成する複数の要素それぞれを代表するフレーム番号(以下、第二のフレーム番号)を特定する。特定部364は、第二の演技識別番号と、特定した複数の第二のフレーム番号とを、出力部365に出力する。
第一の演技識別番号の複数の第一のフレーム番号に対応する複数のセンシングフレームを複数の「第一のセンシングフレーム」と表記する。第二の演技識別番号の複数の第二のフレーム番号に対応する複数のセンシングフレームを複数の「第二のセンシングフレーム」と表記する。
出力部365は、複数の要素の各々について、複数の第一のセンシングフレームと、複数の第二のセンシングフレームとを対応づけて、時系列に、表示部340に表示させる処理部である。
出力部365は、図25で説明した表示画面95の情報を生成して、表示部340に出力する。たとえば、第一の演技および第二の演技を構成する要素が「要素A、要素B、要素C、・・・」を含むものとする。
出力部365は、複数の第一のセンシングフレームのうち、要素Aに対応する第一のセンシングフレームのフレーム番号をキーにして、対応する第一の3Dモデルデータを3DモデルDB356から検出する。出力部365は、仮想視線データを基準として、仮想視線から見える第一の3Dモデルデータの画像を生成し、表示領域95aに設置する。たとえば、表示領域95aの第一の3Dモデルデータは、選手10aに対応するものである。
出力部365は、複数の第二のセンシングフレームのうち、要素Aに対応する第二のセンシングフレームのフレーム番号をキーにして、対応する第二の3Dモデルデータを3DモデルDB356から検出する。出力部365は、仮想視線データを基準として、仮想視線から見える第二の3Dモデルデータの画像を生成し、表示領域95bに設置する。たとえば、表示領域95bの第二の3Dモデルデータは、選手10bに対応するものである。
表示領域95bの第二の3Dモデルデータの大きさは、選手10aの大きさと、選手10bの大きさとの差分に基づいて、補正されており、図25に示す例では、各3Dモデルの大きさが略同一となっている。
出力部365は、他の要素「要素B、要素C、・・・」についても、上記処理を繰り返し実行することで、表示領域95aには、「要素B、要素C、・・・」に対応する第一の3Dモデルデータを表示する。また、表示領域95bには、「要素B、要素C、・・・」に対応する第二の3Dモデルデータを表示する。出力部365は、表示領域95aに表示させる第一の3Dモデルデータの要素と、表示領域95bに表示させる第二の3Dモデルデータの要素とを同期させるものとする。
次に、本実施例3に係る練習支援装置300の処理手順の一例について説明する。図27は、本実施例3に係る練習支援装置の処理手順を示すフローチャートである。図27に示すように、練習支援装置300の受付部363は、比較対象となる第一の演技識別番号、第二の演技識別番号を受け付ける(ステップS501)。
練習支援装置300の特定部364は、第一の演技中(第一の演技識別番号に対応する第一の演技中)に計測されたセンシングデータから第一の技を構成する複数の要素をそれぞれ代表する複数の第一のセンシングフレームを特定する(ステップS502)。
特定部364は、第二の演技中(第二の演技識別番号に対応する第二の演技中)に計測されたセンシングデータから第一の技を構成する複数の要素をそれぞれ代表する複数の第二のセンシングフレームを特定する(ステップS503)。
練習支援装置300の出力部365は、複数の要素の各々について、複数の第一のセンシングフレームと、複数の第二のセンシングフレームとを対応づける(ステップS504)。
練習支援装置300の3Dモデル生成部362は、第一の選手の3Dモデルデータと、第二の選手の3Dモデルデータとを生成する(ステップS505)。たとえば、第一の選手を選手10aとし、第二の選手を選手10bとする。3Dモデル生成部362は、第一の選手の大きさと、第二の選手の大きさとの差分を算出する(ステップS506)。3Dモデル生成部362は、差分を基にして、第二の選手に対応する3Dモデルデータの大きさを補正する(ステップS507)。
受付部363は、仮想視線データを受け付け、出力部365は、仮想視線からみた、第一の3Dモデルの画像および第二の3Dモデルの画像を生成する(ステップS508)。出力部365は、第一の3Dモデルの画像および第二の3Dモデルの画像を対応づけて、時系列に表示させる(ステップS509)。
次に、本実施例3に係る練習支援装置300の効果について説明する。練習支援装置300は、実施例1で説明した練習支援装置100と同様にして、複数の各要素の各々について、選手10aが行った演技の第一のセンシングフレーム(第一の3Dモデル)と、選手10bが行った演技の第二のセンシングフレーム(第二の3Dモデル)とを対応づけて、時系列に、表示する。ここで、練習支援装置300は、選手10aの大きさと、選手10bの大きさとの差分に応じて、第一の3Dモデルに対する、第二の3Dモデルの大きさを決定し、決定した大きさで、第一の3Dモデルと、第二の3Dモデルとを表示する。たとえば、練習支援装置300は、図25で説明した、表示領域95aの3Dモデルのスケールと、表示領域95bの3Dモデルのスケールとを合わせて表示するため、選手10aと選手10bとの体格差の違いによらず、直感的な演技の比較を行うことができる。
なお、上記実施例1〜3では、一例として、選手10,10a,10bが、体操種目のあん馬を行う場合について説明したが、練習支援装置100,200,300は、床運動、吊り輪、平行棒、鉄棒、跳馬、段違い平行棒、平均台等に対しても、同様に処理を実行することができる。
ここで、本実施例で説明した練習支援装置100(200、300)と同様の機能を実現するコンピュータのハードウェア構成の一例について説明する。図28は、練習支援装置と同様の機能を実現するコンピュータのハードウェア構成の一例を示す図である。
図28に示すように、コンピュータ400は、各種演算処理を実行するプロセッサー(たとえば、CPU401)と、ユーザからのデータの入力を受け付ける入力装置402と、ディスプレイ403とを有する。また、コンピュータ400は、記憶媒体からプログラム等を読み取る読み取り装置404と、無線ネットワークを介して他のコンピュータとの間でデータの授受を行うインタフェース装置405とを有する。また、コンピュータ400は、各種情報を一時記憶するRAM406と、ハードディスク装置407とを有する。そして、各装置401〜407は、バス408に接続される。
ハードディスク装置407は、3Dモデル生成プログラム407a、受付プログラム407b、特定プログラム407c、出力プログラム407dを有する。CPU401は、3Dモデル生成プログラム407a、受付プログラム407b、特定プログラム407c、出力プログラム407dを読み出してRAM406に展開する。
3Dモデル生成プログラム407aは、3Dモデル生成プロセス406aとして機能する。受付プログラム407bは、受付プロセス406bとして機能する。特定プログラム407cは、特定プロセス406cとして機能する。出力プログラム407dは、出力プロセス406dとして機能する。
3Dモデル生成プロセス406aの処理は、3Dモデル生成部162,262,362の処理に対応する。受付プロセス406aの処理は、受付部163,263,363の処理に対応する。特定プロセス406cの処理は、特定部164,264,364の処理に対応する。出力プロセス406dの処理は、出力部165,265,365の処理に対応する。
なお、各プログラム407a〜407dについては、必ずしも最初からハードディスク装置407に記憶させておかなくても良い。例えば、コンピュータ400に挿入されるフレキシブルディスク(FD)、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ400が各プログラム407a〜407dを読み出して実行するようにしても良い。