以下に、本願の開示する生成方法、生成プログラムおよび情報処理装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
図1は、本実施例1に係る情報処理システムの一例を示す図である。図1に示すように、本実施例1に係る情報処理システムは、センサ10A,10B,10C,10Dと、情報処理装置100とを有する。センサ10A~10Dと、情報処理装置100とは、有線または無線によってそれぞれ接続されている。図1では、センサ10A~10Dを示すが、情報処理システムは、他のセンサを有していてもよい。
センサ10Aは、被写体(あるいはターゲット2)を構成する点群とセンサ10Aとの距離を測定する測定装置(レーザーセンサ)である。センサ10Aは、測定結果となる距離画像のデータを、情報処理装置100に出力する。距離画像のデータには、各画素と距離値とをそれぞれ対応付けた情報が含まれる。距離画像のデータは、情報処理装置100によって、3次元点群データに変換される。3次元点群データは、点群について、点と、3次元直交座標系の座標とをそれぞれ対応付けた情報である。
センサ10Bに関する説明は、センサ10Aに関する説明と同様である。以下の説明では、適宜、センサ10A~10Bをまとめて「センサ10」と表記する。また、3次元点群データは、センサ10が測定した距離画像のデータを変換したデータであるが、適宜、センサ10が測定した3次元点群データと表記し、距離画像のデータを3次元点群データに変換する旨の記載を省略する。
本実施例1に係る情報処理システムは、センサ10を用いて被写体(図示略)を測定し、被写体が行う演技を評価するシステムであるが、前処理として、ターゲット2を用いて、外部キャリブレーションを実行し、外部パラメータを生成する。情報処理システムは、生成した外部パラメータに基づいて、センサ10に測定された3次元点群データを統合し、被写体全体の3次元点群データを生成し、被写体が行う演技を評価する。
情報処理システムの情報処理装置100が、外部パラメータを生成する場合の処理について説明する。情報処理装置100は、外部パラメータを生成する場合において、センサ連結性グラフを生成する処理、ターゲットの分散をセンサ連結性グラフに反映する処理、センサを選択する順番を特定する処理を実行する。
図2及び図3は、センサ連結性グラフを生成する処理を説明するための図である。図2に示すように、時点t=1~13において、ターゲット2を移動させながら、センサ10A~10Dによって、ターゲット2を観測する。ターゲット2は、ユーザによって移動される。
たとえば、時点t=1において、ターゲット2は、センサ10Aによって観測される。時点t=2において、ターゲット2は、センサ10Aによって観測される。時点t=3において、ターゲット2は、センサ10A,10Bによって観測される。時点t=4において、ターゲット2は、センサ10A,10Bによって観測される。
時点t=5において、ターゲット2は、センサ10A,10Bによって観測される。時点t=6において、ターゲット2は、センサ10A,10B,10Cによって観測される。時点t=7において、ターゲット2は、センサ10B,10Cによって観測される。時点t=8において、ターゲット2は、センサ10B,10Dによって観測される。
時点t=9において、ターゲット2は、センサ10B,10C,10Dによって観測される。時点t=10において、ターゲット2は、センサ10C,10Dによって観測される。時点t=11において、ターゲット2は、センサ10C,10Dによって観測される。時点t=12において、ターゲット2は、センサ10B,10C,10Dによって観測される。時点t=13において、ターゲット2は、センサ10Cによって観測される。
ここで、情報処理装置100は、センサ10A~10Dのうち、2つのセンサの組で、複数時点のうち同じ時点において、ターゲット2を検出した時点の回数(以下、共有数)を特定する。
センサ10Aとセンサ10Bとの組については、時点t=1~13のうち、時点t=3,4,5,6において、ターゲット2を観測している。このため、センサ10A,10Bの組の共有数は「4」となる。
センサ10Aとセンサ10Cとの組については、時点t=1~13のうち、時点t=6において、ターゲット2を観測している。このため、センサ10A,10Cの組の共有数は「1」となる。
センサ10Aとセンサ10Dとの組については、時点t=1~13のうち、ターゲット2を観測している時点はない。このため、センサ10A,10Dの組の共有数は「0」となる。
センサ10Bとセンサ10Cとの組については、時点t=1~13のうち、時点t=6,7,12において、ターゲット2を観測している。このため、センサ10B,10Cの組の共有数は「3」となる。
センサ10Bとセンサ10Dとの組については、時点t=1~13のうち、時点t=8,9,12において、ターゲット2を観測している。このため、センサ10B,10Dの組の共有数は「3」となる。
センサ10Cとセンサ10Dとの組については、時点t=1~13のうち、時点t=9,10,11,12において、ターゲット2を観測している。このため、センサ10C,10Dの組の共有数は「4」となる。
図3の説明に移行する。情報処理装置100は、2つのセンサの組それぞれについて特定した共有数を基にして、ターゲット共有数グラフ50を生成する。ターゲット共有数グラフ50は、ノード50A,50B,50C,50Dを含む。ノード50Aは、センサ10Aに対応するノードである。ノード50Bは、センサ10Bに対応するノードである。ノード50Cは、センサ10Cに対応するノードである。ノード50Dは、センサ10Dに対応するノードである。
ターゲット共有数グラフ50において、ノード50A~50Dは、それぞれエッジEによって接続され、各エッジEには、共有数に応じた重みが設定される。情報処理装置100は、センサ10A,10Bの組の共有数は「4」であるため、ノード50Aとノード50Bとを接続するエッジEBAに、重み「4」を設定する。情報処理装置100は、センサ10A,10Cの組の共有数は「1」であるため、ノード50Aとノード50Dとを接続するエッジECAに、重み「1」を設定する。なお、センサ10A,10Dの組の共有数は「0」であるため、ノード50Aとノード50Dとは、エッジで接続されない。
情報処理装置100は、センサ10B,10Cの組の共有数は「4」であるため、ノード50Bとノード50Cとを接続するエッジEBCに、重み「4」を設定する。情報処理装置100は、センサ10B,10Dの組の共有数は「3」であるため、ノード50Bとノード50Dとを接続するエッジEDBに、重み「3」を設定する。
情報処理装置100は、各エッジEのうち、重みが「3」以上となるエッジを残すことで、センサ連結性グラフ51を生成する。図3に示す例では、情報処理装置100は、ターゲット共有数グラフ50からエッジECAを削除し、エッジEBA、ECB、EDB、ECDを残すことで、センサ連結性グラフ51を生成する。
図4は、ターゲットの分散をセンサ連結性グラフに反映する処理を説明するための図である。情報処理装置100は、各時点において、2つのセンサの組で観測されるターゲット群の位置の分散σ2を算出する。情報処理装置100は、「-2logσ」を、各エッジEの重みとし、ターゲットの分散をセンサ連結性グラフに反映する。エッジの重みが小さいほど、2つのセンサの組で観測したターゲット群の位置の空間的な分散が大きいこと(まんべんなく分布していること)を意味する。
たとえば、図2で説明したように、センサ10Aとセンサ10Bとの組については、時点t=1~13のうち、時点t=3,4,5,6において、ターゲット2を観測している。情報処理装置100は、センサ10A(あるいはセンサ10B)が観測した時点t=3,4,5,6におけるターゲット2の位置の分散σ2
BAを算出する。たとえば、「-2logσBA」を「-2.7」とすると、情報処理装置100は、エッジEBAに、重み「-2.7」を設定する。
センサ10Bとセンサ10Cとの組については、時点t=1~13のうち、時点t=6,7,12において、ターゲット2を観測している。情報処理装置100は、センサ10B(あるいはセンサ10C)が観測した、時点t=6,7,12におけるターゲット2の位置の分散σ2
CBを算出する。たとえば、「-2logσCB」を「-1.2」とすると、情報処理装置100は、エッジECBに、重み「-1.2」を設定する。
センサ10Bとセンサ10Dとの組については、時点t=1~13のうち、時点t=8,9,12において、ターゲット2を観測している。情報処理装置100は、センサ10B(あるいはセンサ10D)が観測した、時点t=8,9,12におけるターゲット2の位置の分散σ2
DBを算出する。たとえば、「-2logσDB」を「-3.2」とすると、情報処理装置100は、エッジEDBに、重み「-3.2」を設定する。
センサ10Cとセンサ10Dとの組については、時点t=1~13のうち、時点t=9,10,11,12において、ターゲット2を観測している。情報処理装置100は、センサ10C(あるいはセンサ10D)が観測した、時点t=9,10,11,12におけるターゲット2の位置の分散σ2
CDを算出する。たとえば、「-2logσCD」を「-3.4」とすると、情報処理装置100は、エッジECDに、重み「-3.4」を設定する。
情報処理装置100は、ターゲット2の分散をセンサ連結性グラフ51に反映した結果を基にして、外部パラメータ計算対象となるセンサを選択する順番を特定する処理を実行する。情報処理装置100は、各エッジEの和が最小となるような経路を、最短経路探索により決定する。たとえば、情報処理装置100は、Bellman-Ford法等を用いて、各エッジEの和が最小となるような経路を決定する。
各エッジEの和が最小となるような経路は、ターゲット群の位置の空間的な分散がなるべく大きくなるような、センサの順番である。図4に示す例では、基準となるノードを、センサ10Aに対応するノード50Aとすると、各エッジEの和が最小となるような経路は、ノード50A、ノード50B、ノード50D、ノード50Cの順となる。すなわち、ターゲット群の位置の空間的な分散がなるべく大きくなるような、センサの順番は、センサ10A、センサ10B、センサ10D、センサ10Cとなる。
情報処理装置100は、センサ10Aを基準として、センサ10B、センサ10D、センサCの順に選択し、外部パラメータを推定する。ここで、連結する2つのセンサの組の相対的な位置および姿勢を合成して行くことで、基準のセンサと直接連結しないセンサの外部パラメータを計算することが可能である。
図5は、直接連結しないセンサの外部パラメータの計算を説明するための図である。ノード50A、ノード50B、ノード50D、ノード50Cは、センサ10A、センサ10B、センサ10C、センサ10Dにそれぞれ対応する。図4で説明した、センサ連結性グラフ51は、ノード50Aと、ノード50Cとが直接連結していないが、下記の処理を実行することで、基準となるセンサ10Aと、センサ10Cとの相対的な位置および姿勢を計算することが可能である。
情報処理装置100は、センサ10Aとセンサ10Bとの組を選択し、センサ10Aの各時点t=1~13の観測結果と、センサ10Bの観測結果とを基にして、センサ10Aに対するセンサ10Bの外部パラメータTBAを算出する。
情報処理装置100は、センサ10Bとセンサ10Dとの組を選択し、センサ10Bの各時点t=1~13の観測結果と、センサ10Dの観測結果とを基にして、センサ10Bに対するセンサ10Dの外部パラメータTDBを算出する。
情報処理装置100は、センサ10Dとセンサ10Cとの組を選択し、センサ10Dの各時点t=1~13の観測結果と、センサ10Cの観測結果とを基にして、センサ10Dに対するセンサ10Cの外部パラメータTCDを算出する。
情報処理装置100は、式(1)を基にして、基準となるセンサ10Aと、センサ10Cとの相対的な位置および姿勢を計算する。たとえば、各Tは、回転行列と、並進ベクトルとを含む行列である。
TCA=TCDTDBTBA・・・(1)
上記のように、本実施例1に係る情報処理装置100は、各時点においてターゲット2を移動させながら、センサ10A~10Dによる観測を実行し、同時点でターゲット2を検出した時点の回数を示す共有数を特定する。情報処理装置100は、共有数をエッジの重みとするターゲット共有数グラフ50を生成し、ターゲット共有数グラフ50から、エッジEの重みが所定の数以上となるエッジを残したセンサ連結性グラフ51を生成する。センサ連結性グラフ51で連結されるノードの組は、同時点で、ターゲット2を観測した回数が所定の数以上となるセンサの組を示すものである。
また、情報処理装置100は、各時点において、2つのセンサの組で観測されるターゲット群の位置の分散σ2を算出し、「-2logσ」を、各エッジEの重みとし、ターゲットの分散をセンサ連結性グラフに反映する。係る「-2logσ」を、各エッジEの重みとしたセンサ連結性グラフにおいて、エッジの重みが小さいほど、2つのセンサの組で観測したターゲット群の位置の空間的な分散が大きいことを意味する。情報処理装置100は、各エッジEの和が最小となるような経路を特定し、特定した経路を基にして、外部パラメータを算出する場合に選択するセンサ10の順番を特定する。これによって、センサ10の外部パラメータの計算が安定するように、ターゲット群の位置の空間的な分散がなるべく大きくなるようなセンサの順番を特定することができる。したがって、3つ以上のセンサについて、配置位置関係や画角の関係など、相対位置関係を示す情報を精度よく生成することができる。
図6は、本実施例1に係る情報処理装置の効果を説明するための図である。図6の上段は、従来技術2を用いた場合のセンサ10の選択の順番を示す。下段は、情報処理装置100が特定した、センサ10の選択の順番を示す。ただし、情報処理装置100は、図27で説明した条件と同様にして、時点t=1~7において、ターゲット2を移動させながら、センサ10によって観測を行い、順番を特定するものとする。センサ10A~10Dの観測結果を、観測結果20A~20Dとする。
図28で説明したように、従来技術2では、センサ10A,10B,10C,10Dのように、予め定められた順番で、センサ10が選択される。係る順番でセンサ10が選択されると、観測結果20Cにおいて、外部パラメータの推定に利用できるターゲットが減少し、分布に偏りが生じる。外部パラメータの推定に利用できるターゲットが偏って分布すると、外部パラメータの推定精度が低くなる。
これに対して、情報処理装置100では、センサ連結性グラフを用いることで、センサ10A,10B,10C,10Dの順番で、センサ10が選択される。係る順番でセンサ10が選択されると、観測結果20Dにおいて、時点t=6,7において、ターゲット2を外部パラメータの計算に利用できないものの、時点t=1,2,3,4,5のターゲット2が視野上でまんべんなく分布しており、外部パラメータの推定精度が高くなる。また、後段の観測結果20Cを選択して外部パラメータを推定する場合の推定精度が低下することを抑止することもできる。
次に、図1に示した情報処理装置100の構成について説明する。図7は、本実施例1に係る情報処理装置の構成を示す機能ブロック図である。図7に示すように、この情報処理装置100は、通信部110、入力部120、表示部130、記憶部140、制御部150を有する。
通信部110は、図1に示したセンサ10から距離画像のデータを受信する処理部である。通信部110は、受信した距離画像のデータを、制御部150に出力する。通信部110は、通信装置の一例である。
入力部120は、各種の情報を情報処理装置100に入力する入力装置である。入力部120は、キーボードやマウス、タッチパネル等に対応する。たとえば、ユーザは、各時点において、ターゲット2の設置が完了する度に、入力部120を操作して、ターゲット2の設置が完了した旨の情報を、情報処理装置100に入力する。
表示部130は、制御部150から出力される情報を表示する表示装置である。たとえば、表示部130は、各種競技の技認定、採点結果等を表示する。表示部130は、液晶ディスプレイ、有機EL(Electro-Luminescence)ディスプレイ、タッチパネル等に対応する。
記憶部140は、背景画像テーブル141と、検出結果テーブル142と、外部パラメータテーブル143とを有する。記憶部140は、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)などの半導体メモリ素子や、HDD(Hard Disk Drive)などの記憶装置に対応する。
背景画像テーブル141は、ターゲット2が存在しない状態で、各センサ10A~10Dによってそれぞれ測定された背景画像のデータ(距離画像のデータ)を格納するテーブルである。
検出結果テーブル142は、センサ10の観測結果に基づき、各時点で検出されたターゲット2の点群および位置を格納するテーブルである。図8は、検出結果テーブルのデータ構造の一例を示す図である。図8に示すように、この検出結果テーブル142は、センサ識別情報と、各時点における、ターゲット2の点群情報を格納する。センサ識別情報は、センサ10を識別する情報である。たとえば、センサ識別情報SE10A,SE10B,SE10C,SE10Dは、センサ10A、センサ10B、センサ10C、センサ10Dにそれぞれ対応する。また、ターゲットの点群情報には、ターゲット2の3次元の点群と、点群に含まれる点の3次元の座標との関係を示すデータである。なお、該当するセンサ識別情報、時点において、ターゲットが検出されていない場合には、「ターゲット無し」が格納される。
外部パラメータテーブル143は、後述する外部パラメータ生成処理部152によって生成される外部パラメータを格納するテーブルである。図9は、外部パラメータテーブルのデータ構造の一例を示す図である。図9に示すように、この外部パラメータテーブル143は、センサ識別情報と、外部パラメータとを対応付ける。センサ識別情報は、センサ10を識別する情報である。外部パラメータは、基準となるセンサ10との相対的な位置および姿勢を示すデータである。本実施例1では、基準となるセンサをセンサ10Aとする。
外部パラメータTBAは、センサ10Aを基準とするセンサ10Bの相対的な位置および姿勢を示すデータである。外部パラメータTCAは、センサ10Aを基準とするセンサ10Cの相対的な位置および姿勢を示すデータである。外部パラメータTDAは、センサ10Aを基準とするセンサ10Dの相対的な位置および姿勢を示すデータである。
制御部150は、取得部151と、外部パラメータ生成処理部152と、統合部153と、フィッティング処理部154と、評価部155とを有する。制御部150は、CPU(Central Processing Unit)やMPU(Micro Processing Unit)、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などのハードワイヤードロジック等によって実現される。
取得部151は、通信部110を介して、センサ10から、距離画像のデータを取得する処理部である。たとえば、取得部151が、距離画像のデータを取得するタイミングは、入力部120を操作するユーザによって指示される。取得部151は、距離画像のデータと、背景画像テーブル141に格納された背景画像のデータとの差分をとり、背景差分画像データを生成する。取得部151は、背景差分画像データを、外部パラメータ生成処理部152に出力する。
なお、取得部151は、センサ10Aに測定された距離画像のデータと、センサ10Aに対応する背景画像のデータとの差分により、センサ10Aに対応する背景差分データを生成する。取得部151は、センサ10Bに測定された距離画像のデータと、センサ10Bに対応する背景画像のデータとの差分により、センサ10Bに対応する背景差分データを生成する。
取得部151は、センサ10Cに測定された距離画像のデータと、センサ10Cに対応する背景画像のデータとの差分により、センサ10Cに対応する背景差分データを生成する。取得部151は、センサ10Dに測定された距離画像のデータと、センサ10Dに対応する背景画像のデータとの差分により、センサ10Dに対応する背景差分データを生成する。
取得部151は、各時点において、センサ10から、距離画像のデータを取得する度に、上記処理を繰り返し実行する。取得部151は、背景差分データを、外部パラメータ生成処理部152に出力する場合、時点tの情報と、該当センサ10のセンサ識別情報を、背景差分データに付与してもよい。
取得部151は、外部キャリブレーションを実行する場合には、背景差分データを、外部パラメータ生成処理部152に出力する。取得部151は、被写体(図示略)が行う演技を評価する場合には、背景差分データを、統合部153に出力する。取得部151は、外部キャリブレーションを行うタイミング、演技の評価を行うタイミングは、ユーザの操作する入力部120から受け付ける。
外部パラメータ生成処理部152は、図2~図5で説明した処理を実行することで、外部パラメータを生成する処理部である。外部パラメータ生成処理部152は、生成した外部パラメータを、外部パラメータテーブル143に格納する。
図10は、外部パラメータ生成処理部の構成を示す機能ブロック図である。図10に示すように、外部パラメータ生成処理部152は、検出部160と、特定部161と、グラフ生成部162と、パラメータ生成部163と、ロバスト推定部164とを有する。
検出部160は、複数時点においてターゲット2を検出する処理部である。検出部160は、背景差分データに残された各画素(背景部分を除いた画素)をクラスタリングし、各画素を複数のクラスタに分類する。検出部160は、各クラスタのうち、クラスタに属する画素の数が所定数未満(クラスタの面積が閾値未満)のクラスタを、ノイズとして除去する。
検出部160は、画素の位置および距離値と、点および直交座標系の座標との関係を定義した変換テーブルを保持しているものとする。検出部160は、変換テーブルを基にして、クラスタに含まれる各画素を、3次元点群に変換する。検出部160は、各クラスタの3次元点群について、予め設定しておいたターゲット2の3次元モデル表面にフィッティングさせたときの誤差をそれぞれ評価する。
検出部160は、フィッティングさせたときの誤差が最も小さいクラスタを、ターゲット2として特定する。検出部160は、ICP(Iterative Closest Point)等に基づいて、フィッティングを実行してもよい。ターゲット2に対応するクラスタの3次元点群は、点群と各点の直交座標系の座標との関係を有し、点群情報に対応する。
検出部160は、背景差分データに付与されたセンサ識別情報および時点の情報を基にして、上記の点群情報を、検出結果テーブル142に格納する。なお、検出部160は、背景差分データを基にして上記処理を実行し、ターゲット2がセンサ10に観測されなかった場合、ターゲット無しの情報を、検出結果テーブル142に格納する。検出部160は、背景差分データを取得する度に、上記処理を繰り返し実行する。
特定部161は、2つのセンサ10の組毎に共有数を特定する処理部である。
たとえば、特定部161は、検出結果テーブル142のデータを取得し、各時点においてセンサ10A~10Dがそれぞれターゲットを検出したか否かを特定する。特定部161は、センサ10A~10Dのうちの2つのセンサ10の組で、複数時点のうち同じ時点においてターゲット2を検出した時点の回数(共有数)を特定する。特定部161が、共有数を特定する具体的な処理は、図2を用いて説明した情報処理装置100の処理に対応する。
特定部161は、2つのセンサ10の組毎に特定した共有数のデータを、グラフ生成部162に出力する。たとえば、各時点におけるターゲット2の観測結果が、図2で説明したものである場合には、センサ10A,10Bの組の共有数は「4」となる。センサ10A,10Cの組の共有数は「1」となる。センサ10A,10Dの組の共有数は「0」となる。センサ10B,10Cの組の共有数は「4」となる。センサ10B,10Dの組の共有数は「3」となる。センサ10C,10Dの組の共有数は「4」となる。
グラフ生成部162は、センサ連結性グラフ51を生成する処理部である。
たとえば、グラフ生成部162は、2つのセンサ10の組毎に特定された共有数のデータを基にして、ターゲット共有数グラフ50を生成する。センサ10A,10Bの組の共有数が「4」、センサ10A,10Cの組の共有数が「1」、センサ10A,10Dの組の共有数が「0」、センサ10B,10Cの組の共有数が「4」、センサ10B,10Dの組の共有数が「3」とする。そうすると、グラフ生成部162が生成するターゲット共有数グラフ50は、図3で説明したものとなる。
グラフ生成部162は、各エッジEのうち、重みが「3」以上となるエッジを残すことで、センサ連結性グラフ51を生成する。図3に示す例では、グラフ生成部162は、ターゲット共有数グラフ50からエッジECAを削除し、エッジEBA、ECB、EDB、ECDを残すことで、センサ連結性グラフ51を生成する。
また、グラフ生成部162は、ターゲットの分散をセンサ連結性グラフ51に反映する処理を実行する。図4で説明したように、グラフ生成部162は、各時点において、2つのセンサの組で観測されるターゲット群の位置の分散σ2を算出する。グラフ生成部162は、「-2logσ」を、各エッジEの重みとし、ターゲットの分散をセンサ連結性グラフに反映する。
図2で説明したように、センサ10Aとセンサ10Bとの組については、時点t=1~13のうち、時点t=3,4,5,6において、ターゲット2を観測している。グラフ生成部162は、センサ10A(あるいはセンサ10B)が観測した、時点t=3,4,5,6におけるターゲット2の位置の分散σ2
BAを算出する。たとえば、「-2logσBA」を「-2.7」とすると、グラフ生成部162は、エッジEBAに、重み「-2.7」を設定する。
グラフ生成部162は、センサ10Aが観測した、時点t=3,4,5,6におけるターゲット2の位置を、検出結果テーブル142から特定する。たとえば、ターゲット2の点群情報に含まれる各点の座標の重心座標を、ターゲット2の位置としてもよい。
グラフ生成部162は、センサ10Bとセンサ10Cとの組、センサ10Bとセンサ10Dとの組、センサ10Cとセンサ10Dとの組についても同様にして、分散σ2
CB、分散σ2
DB、分散σ2
CDを算出する。グラフ生成部162は、エッジECBに、重み「-1.2」、エッジEDBに、重み「-3.2」、エッジECDに、重み「-3.4」をそれぞれ設定する。グラフ生成部162は、エッジの重みを設定したセンサ連結性グラフ51のデータを、パラメータ生成部163に出力する。
パラメータ生成部163は、センサ連結性グラフ51を基にして、連結性のある2つのセンサ間で、外部パラメータを生成する。パラメータ生成部163は、外部パラメータを、外部パラメータテーブル143に記憶する。また、パラメータ生成部163は、外部パラメータを、予め設定された外部装置に送信してもよい。パラメータ生成部163は、センサ連結性グラフ51と、生成した外部パラメータを基にして、連結性のない2つのセンサ間の外部パラメータを生成する。以下において、パラメータ生成部163の処理の一例について説明する。
パラメータ生成部163は、センサ連結性グラフ51について、各エッジEの和が最小になるような経路を、最短経路探索により実行する。たとえば、パラメータ生成部163は、Bellman-Ford法等を用いて、各エッジEの和が最小となるような経路Pを選択する。
図4で説明したように、基準となるノードを、センサ10Aに対応するノード50Aとすると、各エッジEの和が最小となるような経路Pは、ノード50A、ノード50B、ノード50D、ノード50Cの順となる。
パラメータ生成部163は、センサ10A,10Bの組、センサ10B,10Dの組、センサ10D,10Cの組を、連結性のある2つのセンサとして特定する。パラメータ生成部163は、センサ10A,10Cの組を、連結性のない2つのセンサとして特定する。
パラメータ生成部163は、センサ10Aの時点t=3,4,5,6のターゲット2の位置と、センサ10Bの時点t=3,4,5,6のターゲット2の位置との関係から、特異値分解で位置合わせを行い、外部パラメータTBAの初期値を算出する。
パラメータ生成部163は、センサ10Bの時点t=8,9,12のターゲット2の位置と、センサ10Dの時点t=8,9,12のターゲット2の位置との関係から、特異値分解で位置合わせを行い、外部パラメータTDBの初期値を算出する。
パラメータ生成部163は、センサ10Dの時点のターゲット2の位置と、センサ10Cの時点のターゲット2の位置との関係から、特異値分解で位置合わせを行い、外部パラメータTCDの初期値を算出する。
パラメータ生成部163は、バンドル調整や最尤推定を用いて、外部パラメータTBA、TDB、TCDの最適化(ターゲット2形状のフィッティング)を実行し、最終的な外部パラメータTBA、TDB、TCDを算出する。連結性のある2つのセンサ間の、各外部パラメータTBA、TDB、TCDは「第1の相関位置関係を示す情報」に対応する。
パラメータ生成部163は、式(1)と、外部パラメータTBA、TDB、TCDとを基にして、外部パラメータTCAを算出する。外部パラメータTCAは、連結性のない2つのセンサ間の外部パラメータであり、「第2の相関位置関係を示す情報」に対応する。
パラメータ生成部163は、センサ10Aを基準とする外部パラメータTBA、TCA、TDAを、外部パラメータテーブル143に格納する。なお、パラメータ生成部163は、センサ10Aを基準とするセンサ10Dの相対的な位置および姿勢を示す外部パラメータTDAを、式(2)により算出する。
TDA=TDBTBA・・・(2)
ロバスト推定部164は、ターゲット2の誤検出を検出する処理部である。図11~図15は、ロバスト推定部の処理を説明するための図である。ここでは一例として、センサ10Aとセンサ10Bとを基にして説明を行う。図11に示すように、時点t=1~4において、ターゲット2を移動させながら、センサ10A、センサ10Bによって、ターゲット2を観測するものとする。なお、時刻t=2において、ターゲット2に似た特徴を持つ前景物体3が、センサ10Bの観測結果に含まれるものとする。
センサ10Aおよびセンサ10Bの観測結果は、図12に示すものとなる。観測結果30Aは、センサ10Aの時点t=1~4の観測結果を示す。観測結果30Bは、センサ10Bの時点t=1~4の観測結果を示す。たとえば、観測結果30Bの時点t=2において、ターゲット2の代わりに、誤って、前景物体3をターゲット2として誤検出され、検出結果テーブル142に格納されているものとする。
図13の説明に移行する。センサ10Aが時点t=1~4に観測したターゲット2の符号を、2A-1、2A-2、2A-3、2A-4とする。センサ10Bが時点t=1,3,4に観測したターゲット2の符号を、2B-1、2B-3、2B-4とする。センサ10Bは、時点t=2で前景物体3を観測する。
ロバスト推定部164は、同時点で観測したターゲット2(前景物体3)を対応付ける。すなわち、ロバスト推定部164は、ターゲット2A-1と、ターゲット2B-1とを対応付ける。ロバスト推定部164は、ターゲット2A-2と、前景物体3とを対応付ける。ロバスト推定部164は、ターゲット2A-3と、ターゲット2B-3とを対応付ける。ロバスト推定部164は、ターゲット2A-4と、ターゲット2B-4とを対応付ける。
ロバスト推定部164は、上記の対応関係によって、対応するターゲットのペア間における位置の距離の総和が最小となるような外部パラメータTBAを算出する。たとえば、ロバスト推定部164は、初期値の推定を行った後に、バンドル推定や最尤推定を用いて、センサ10Aとセンサ10Bとの間の外部パラメータTBAの最適化を行い、最終的な外部パラメータTBAを算出する。
ロバスト推定部164は、外部パラメータTBAを用いて、観測結果30Bの各ターゲット2の位置を、センサ10Aを基準とする位置に補正すると、図14に示すものとなる。誤対応(ターゲット2A-2と、前景物体3)の影響により、対応付けられたターゲット2A-1,2B-1の組の位置、ターゲット2A-3,2B-3の組の位置、ターゲット2A-4,2B-4の組の位置が一致しない。
ロバスト推定部164は、対応付けた各ターゲットの距離の平均が閾値以上である場合に、ノイズ(前景物体3)が観測されていると判定し、次の処理を実行する。ロバスト推定部164は、各時点において対応付けられた各ターゲットの組のうち、いずれかの組を除外して、外部パラメータTBAの算出を行う。
たとえば、ロバスト推定部164は、時刻t=1のターゲット2A-1と、ターゲット2B-1との組を除外して、外部パラメータTBA1を生成する。ロバスト推定部164は、時刻t=2のターゲット2A-2と、前景物体3との組を除外して、外部パラメータTBA2を生成する。ロバスト推定部164は、時刻t=3のターゲット2A-3と、2B-3との組を除外して、外部パラメータTBA3を生成する。ロバスト推定部164は、時刻t=4のターゲット2A-4と、ターゲット2B-4との組を除外して、外部パラメータTBA4を生成する。
ロバスト推定部164は、外部パラメータTBA1を用いて、観測結果30Bの各ターゲット2(ターゲット2A-1、2B-1の組を除く)の位置を、センサ10Aを基準とする位置に補正し、対応付けられた各ターゲットの距離の平均(第1平均値)を算出する。
ロバスト推定部164は、外部パラメータTBA2を用いて、観測結果30Bの各ターゲット2(ターゲット2A-2、前景物体3の組を除く)の位置を、センサ10Aを基準とする位置に補正し、対応付けられた各ターゲットの距離の平均(第2平均値)を算出する。たとえば、外部パラメータTBA2を用いて、各ターゲット2(ターゲット2A-2、前景物体3の組を除く)の位置を、センサ10Aを基準とする位置に補正した結果は、図15に示すものとなる。誤対応(ターゲット2A-2と、前景物体3)の影響がなくなり、対応付けられたターゲット2A-1,2B-1の組の位置、ターゲット2A-3,2B-3の組の位置、ターゲット2A-4,2B-4の組の位置が一致する(第2平均値が小さくなる)。
外部パラメータTBA3を用いて、観測結果30Bの各ターゲット2(ターゲット2A-3、2B-3の組を除く)の位置を、センサ10Aを基準とする位置に補正し、対応付けられた各ターゲットの距離の平均(第3平均値)を算出する。
外部パラメータTBA4を用いて、観測結果30Bの各ターゲット2(ターゲット2A-4、2B-4の組を除く)の位置を、センサ10Aを基準とする位置に補正し、対応付けられた各ターゲットの距離の平均(第4平均値)を算出する。
ロバスト推定部165は、第1平均値、第2平均値、第3平均値、第4平均値を比較し、他の平均値と比較して、十分小さい平均値が存在するか否かを判定する。たとえば、第2平均値が、第1,3,4平均値と比較して、十分小さい場合には、ターゲット2A-2と、前景物体3を、ターゲット2から除外する。すなわち、時点t=2に観測されたターゲット2の情報を、検出結果テーブル142から削除する。たとえば、ロバスト推定部165は、第2平均値が、第1,3,4平均値より大きく、かつ、差分が閾値以上である場合に、十分小さいと判定する。
たとえば、ロバスト推定部165は、検出部160によって、検出結果テーブル142が生成された後、特定部161、グラフ生成部162、パラメータ生成部163による処理が開始される前に、上記処理を実行する。これによって、ターゲット以外を誤検出したノイズ(前景物体3)を除去することが可能になる。
図7の説明に戻る。統合部153、フィッティング処理部154、評価部155は、外部パラメータ生成処理部152によって、外部キャリブレーションが終了し、被写体が演技を開始した場合に処理を実行する。
統合部153は、取得部151から、各センサ10A~10Dの背景差分データを取得する。統合部153は、変換テーブルを用いて、背景差分データに含まれる各画素と距離値との関係を、点群と各点の直交座標系の座標との関係に変換する。変換した背景差分データを「3次元点群データ」と表記する。変換テーブルは、画素の位置および距離値と、点および直交座標系の座標との関係を定義したテーブルである。
統合部153は、センサ10Aを基準のセンサ10とし、センサ10B~10Dの3次元点群データを、センサ10Aの位置および姿勢に合わせる。たとえば、統合部153は、外部パラメータTBAを用いて、センサ10Bの3次元点群データを、センサ10Aの位置および姿勢に合わせる。統合部153は、外部パラメータTCAを用いて、センサ10Cの3次元点群データを、センサ10Aの位置および姿勢に合わせる。統合部153は、外部パラメータTDAを用いて、センサ10Dの3次元点群データを、センサ10Aの位置および姿勢に合わせる。統合部153は、各外部パラメータを、外部パラメータテーブル143から取得する。
統合部153は、センサ10Aの3次元点群データと、センサ10Aの位置および姿勢に合わせたセンサ10B~10Dの3次元点群データとを統合して、一つの3次元点群データを生成する。統合部153は、生成した3次元点群データを、フィッティング処理部154に出力する。
統合部153は、取得部151から、センサ10A~10Dの背景差分データを取得する度に、上記処理を繰り返し実行する。
フィッティング処理部154は、3次元点群データに対して、被写体の3次元モデルデータを当てはめるフィッティングを実行する処理部である。フィッティング処理部154は、フィッティング結果を基にして、被写体の骨格モデルデータを特定する。骨格モデルデータには、各関節の位置情報が含まれる。フィッティング処理部は、骨格モデルデータを、評価部155に出力する。フィッティング処理部は、統合部153から、3次元点群データを取得する度に、上記処理を繰り返し実行する。
評価部155は、時系列に骨格モデルデータを取得し、骨格モデルデータの各関節座標の遷移を基にして、被写体の演技を評価する処理部である。たとえば、評価部155は、各関節座標の遷移と、技の種別、技の成立不成立を定義したテーブル(図示略)を用いて、被写体の演技を評価し、評価結果を表示部130に出力して表示させる。
なお、評価部155が実行する技の評価は、各種の採点競技に適用可能である。採点競技には、体操演技の他に、トランポリン、水泳の飛び込み、フィギュアスケート、空手の型、社交ダンス、スノーボード、スケートボード、スキーエアリアル、サーフィンを含む。また、クラシックバレエ、スキージャンプ、モーグルのエアー、ターン、野球、バスケットボールのフォームチェック等にも適用してもよい。また、剣道、柔道、レスリング、相撲などの競技にも適用してもよい。更に、ウェイトリフティングのバーベルが上がったか否かの評価にも用いることができる。
次に、本実施例1に係る情報処理装置100が、外部キャリブレーションを実行する処理手順の一例について説明する。図16は、本実施例1に係る情報処理装置の処理手順を示すフローチャートである。図16に示すように、情報処理装置100の取得部151は、センサ10から距離画像のデータを取得する(ステップS10)。取得部151は、距離画像のデータと、背景画像データとの差分をとり、背景差分データを生成する(ステップS11)。
情報処理装置100の検出部160は、背景差分データからターゲットを検出し、ターゲットの点群情報を、検出結果テーブル142に登録する(ステップS12)。情報処理装置100は、ターゲットの検出を終了しない場合には(ステップS13,No)、再度、ステップS10に移行する。一方、情報処理装置100は、ターゲットの検出を終了する場合には(ステップS13,Yes)、ステップS14に移行する。
情報処理装置100の外部パラメータ生成処理部152(特定部161およびグラフ生成部162)は、センサ連結性グラフ生成処理を実行する(ステップS14)。情報処理装置100のパラメータ生成部163は、基準センサirefと、その他のセンサitarの組(iref,itar)について、センサ連結性グラフ31上で、Bellman-Ford法を適用することで、最短経路を検索する(ステップS15)。たとえば、基準センサirefは、センサ10Aに対応する。その他のセンサitarは、センサ10B,10C,10Dに対応する。
パラメータ生成部163は、最短経路の検索結果を基にして、センサ群の経路Pを選択する(ステップS16)。パラメータ生成部163は、経路Pの順番に基づき、特異値分解を用いて、センサitarの外部パラメータの初期値を算出する(ステップS17)。
パラメータ生成部163は、バンドル調整および最尤推定により、センサitarの外部パラメータを最適化する(ステップS18)。パラメータ生成部163は、外部パラメータを、外部パラメータテーブル143に格納する(ステップS19)。ステップS19の処理は、外部パラメータを外部装置へ送信する処理にも対応する。
次に、図16のステップS14に示したセンサ連結性グラフ生成処理の処理手順の一例について説明する。図17は、センサ連結性グラフ生成処理の処理手順を示すフローチャートである。図17に示すように、情報処理装置100の特定部161は、全てのセンサの組(i,j)について、共有観測するターゲットの共有数Ni,jを集計する(ステップS101)。
情報処理装置100のグラフ生成部162は、共有数Ni,jをエッジ重み、センサ10をノードとするターゲット共有数グラフ50を生成する(ステップS102)。グラフ生成部162は、ターゲット共有数グラフのエッジのうち、共有数Ni,j≧3であるようなエッジを残したセンサ連結性グラフを生成する(ステップS103)。
グラフ生成部162は、センサ連結性グラフの各エッジについて、-2logσをエッジ重みとするようなセンサ連結性グラフを生成する(ステップS104)。
次に、本実施例1に係る情報処理装置100の効果について説明する。情報処理装置100は、各時点においてターゲット2を移動させながら、センサ10A~10Dによる観測を実行し、同時点でターゲット2を検出した時点の回数を示す共有数を特定する。情報処理装置100は、共有数をエッジの重みとするターゲット共有数グラフ50を生成し、ターゲット共有数グラフ50から、エッジEの重みが所定の数以上となるエッジを残したセンサ連結性グラフ51を生成する。これによって、同時点で、ターゲット2を観測した回数が所定の数以上となるセンサの組を特定することができる。
情報処理装置100は、各時点において、2つのセンサの組で観測されるターゲット群の位置の分散σ2を算出し、「-2logσ」を、各エッジEの重みとし、ターゲットの分散をセンサ連結性グラフ51に反映する。係る「-2logσ」を、各エッジEの重みとしたセンサ連結性グラフにおいて、エッジの重みが小さいほど、2つのセンサの組で観測したターゲット群の位置の空間的な分散が大きいことを意味する。情報処理装置100は、各エッジEの和が最小となるような経路を特定し、特定した経路を基にして、外部パラメータを算出する場合に選択するセンサ10の順番を特定する。これによって、センサ10の外部パラメータの計算が安定するように、ターゲット群の位置の空間的な分散がなるべく大きくなるようなセンサの順番を特定することができる。したがって、情報処理装置100によれば、3つ以上のセンサについて、配置位置関係や画角の関係など、相対位置関係を示す情報を精度よく生成することができる。
ところで、本実施例1に係る情報処理装置100は、ターゲットとして、円筒状のターゲット2を用いて、外部キャリブレーションを実行し、外部パラメータを生成したが、これに限定されるものではない。たとえば、情報処理装置100は、球体マーカを、ターゲットとして用いてもよい。
図18~図20は、球体マーカを用いた外部キャリブレーションの一例を示す図である。図18に示すように、ユーザ(図示略)は、各時点において、球体マーカ60を移動させながら、センサ10A~10Dによって、球体マーカ60を観測する。球体マーカ60は、ユーザ(図示略)によって移動される。
センサ10Aによって、各時点の観測結果61Aが観測される。センサ10Bによって、各時点の観測結果61Bが観測される。センサ10Cによって、各時点の観測結果61Cが観測される。センサ10Dによって、各時点の観測結果61Dが観測される。
図19の説明に移行する。ここでは、観測結果に含まれる距離画像のデータを用いて説明する。情報処理装置100は、距離画像のデータ62と、背景画像データとの差分を取ることで、背景差分データ63を生成する。情報処理装置100は、背景差分データ63からノイズを除去することで、背景差分データ64を生成する。情報処理装置100は、背景差分データ64から、球体マーカ64aを検出する。たとえば、情報処理装置100は、球体マーカ64aをフィッティングすることで、計測ノイズに対してロバストに球体マーカ64aを検出することが可能となる。
図20の説明に移行する。情報処理装置100は、各時点t=1~4において、上記処理を繰り返し実行することで、各センサ10が観測した、各時点t=1~4の球体マーカ60をそれぞれ特定する。たとえば、センサ10Aは、各時点t=1~4において、球体マーカ60を観測する。センサ10Bは、各時点t=1~4において、球体マーカ60を観測する。センサ10Cは、各時点t=1~4において、球体マーカ60を観測する。センサ10Dは、各時点t=1~3において、球体マーカ60を観測し、時刻t=4において、ノイズ65を誤検出する。
ここで、時刻t=4において、ノイズ65は、ロバスト推定部164により、除去され、センサ10Dにより、時刻t=4において、球体マーカ60が検出されるものとする。情報処理装置100は、球体マーカ60の共有数、球体マーカ60の分散を基にして、センサ連結性グラフを生成し、外部パラメータを生成する。
上記のように、情報処理装置100は、ターゲット2の代わりに、球体マーカ60を用いても、配置位置関係や画角の関係など、相対位置関係を示す情報(外部パラメータ)を精度よく生成することができる。
次に、本実施例2に係る情報処理システムについて説明する。本実施例2に係る情報処理システムでは、ターゲットを所定の位置に配置して計測することで、外部パラメータの生成に加えて、センサ以外の物体の位置と姿勢を計算することができる。本実施例2では一例として、センサ以外の物体として、体操器具を用いて説明を行うが、これに限定されるものではない。
図21は、ターゲットの配置位置を説明するための図である。図21に示すように、体操器具70が配置される。また、センサ10A~10Dは、体操器具70の周囲に配置される。センサ10A~10Dは、情報処理装置200にそれぞれ接続される。
図21において、ターゲットPnは、時点t=nにおいて、配置されたターゲットを意味する。ターゲットP1は、体操器具70の中央の真上に配置される。ターゲットP2は、体操器具70のy軸上であって、体操器具70の上面の高さHで配置される。ターゲットP3~Pnは、床面71からの高さが同一となるマット72上において、P2よりも高い位置に配置される。床面71から、ターゲットP3~Pnまでの高さはそれぞれ同一である。ターゲットP3~Pnは、3以上であることを条件とする。
情報処理装置200は、実施例1の情報処理装置100と同様にして、外部キャリブレーションを実行した後に、外部キャリブレーション実行時に観測したターゲットP1~Pnの位置を用いて、体操器具70の座標系のXa軸、Ya軸、Za軸と、原点Oaを算出する。
情報処理装置200は、ターゲットP3~Pnに対して平面をフィッティングし、平面の法線をZa軸として特定する。
情報処理装置200は、式(3)及び式(4)を基にして、Xa軸を算出する。式(3)に含まれるP1、P2は、ターゲットP1,P2の位置を示す。
v=(P2-P1)/|P2-P1|・・・(3)
Xa=(v/|v|)×Za・・・(4)
情報処理装置200は、式(5)を基にして、Ya軸を算出する。
Ya=Za×Xa・・・(5)
情報処理装置200は、式(6)を基にして、原点Oaを算出する。式(6)に含まれるHは、体操器具70の上面の高さに対応する。式(6)に含まれるdot(v,Za)は、vと、Zaとの内積を計算する関数である。
Oa=P1-(H-dot(v,Za))Za・・・(6)
基準となるセンサをセンサ10Aとし、Xa軸、Ya軸、Za軸、原点Oaを、センサ10Aを基準とする座標に変換する座標変換パラメータTaAを算出する。座標変換パラメータTaAは、回転成分Rと、並進成分tとを含む。回転成分Rは、式(7)により定義される。並進成分tは、式(8)により定義される。たとえば、センサ10Aの観測結果から得られる3次元座標に、座標変換パラメータTaAを乗算することで、センサ10A基準の座標系を、体操器具70の座標系に変換することができる。
t=R×Oa・・・(8)
上記のように、本実施例2に係る情報処理装置200は、ターゲットPnを所定の位置に配置して計測することで、外部パラメータの生成に加えて、センサ以外の体操器具70の座標系のXa、Ya、Zaと、原点Oaを算出することができる。たとえば、被写体の3次元モデルを生成し、アニメーション表示する場合に、体操器具70の座標系によって、3次元モデルをアニメーション表示することができる。
次に、本実施例2に係る情報処理装置200の構成の一例について説明する。図22は、本実施例2に係る情報処理装置の構成を示す機能ブロック図である。図22に示すように、この情報処理装置200は、通信部210、入力部220、表示部230、記憶部240、制御部250を有する。
通信部210は、図21に示したセンサ10から距離画像のデータを受信する処理部である。通信部210は、受信した距離画像のデータを、制御部250に出力する。通信部210は、通信装置の一例である。
入力部220は、各種の情報を情報処理装置200に入力する入力装置である。入力部220は、キーボードやマウス、タッチパネル等に対応する。たとえば、ユーザは、各時点において、ターゲットPnの設置が完了する度に、入力部220を操作して、ターゲットPnの設置が完了した旨の情報を、情報処理装置100に入力する。
表示部230は、制御部250から出力される情報を表示する表示装置である。たとえば、表示部230は、各種競技の技認定、採点結果等を表示する。表示部230は、液晶ディスプレイ、有機EL(Electro-Luminescence)ディスプレイ、タッチパネル等に対応する。
記憶部240は、背景画像テーブル241と、検出結果テーブル242と、外部パラメータテーブル243と、座標変換パラメータデータ244とを有する。記憶部240は、RAM、フラッシュメモリなどの半導体メモリ素子や、HDDなどの記憶装置に対応する。
背景画像テーブル241は、ターゲットPnが存在しない状態で、各センサ10A~10Dによってそれぞれ測定された背景画像のデータ(距離画像のデータ)を格納するテーブルである。
検出結果テーブル242は、センサ10の観測結果に基づき、各時点で検出されたターゲットPnの点群および位置を格納するテーブルである。検出結果テーブル242のデータ構造は、図8で説明した検出結果テーブル142のデータ構造に対応する。ただし、ターゲットは、ターゲット2の代わりに、ターゲットPnとなる。
外部パラメータテーブル243は、後述する外部パラメータ生成処理部252によって生成される外部パラメータを格納するテーブルである。外部パラメータテーブル243のデータ構造は、図9で説明した外部パラメータテーブル143に対応する。
座標変換パラメータデータ244は、座標変換パラメータTaAのデータを有する。座標変換パラメータTaAは、Xa軸、Ya軸、Za軸、原点Oaを、センサ10Aを基準とする座標に変換するパラメータである。
制御部250は、取得部251と、外部パラメータ生成処理部252と、算出部253と、統合部254と、フィッティング処理部255と、評価部256とを有する。制御部250は、CPUやMPU、ASICやFPGAなどのハードワイヤードロジック等によって実現される。
取得部251は、通信部210を介して、センサ10から、距離画像のデータを取得する処理部である。たとえば、取得部251が、距離画像のデータを取得するタイミングは、入力部220を操作するユーザによって指示される。取得部251は、距離画像のデータと、背景画像テーブル241に格納された背景画像のデータとの差分をとり、背景差分画像データを生成する。取得部251は、背景差分画像データを、外部パラメータ生成処理部252に出力する。取得部251に関するその他の説明は、実施例1で説明した取得部151に関する説明と同様である。
外部パラメータ生成処理部252は、検出結果テーブル242に格納されたデータを基にして、外部パラメータを生成する処理部である。外部パラメータ生成処理部252は、生成した外部パラメータを、外部パラメータテーブル243に格納する。外部パラメータ生成処理部252に関する説明は、実施例1で説明した外部パラメータ生成処理部252に関する説明と同様である。
算出部253は、体操器具70の座標系の座標系のXa軸、Ya軸、Za軸と、原点Oaを算出する処理部である。たとえば、算出部253は、センサ10Aを基準のセンサ10とし、センサ10B~10Dが観測したターゲットP1~Pnの3次元点群データを、センサ10Aの位置および姿勢に合わせる。センサ10B~10Dが観測したターゲットP1~Pnの3次元点群データは、検出結果テーブル242に格納されている。
たとえば、算出部253は、外部パラメータTBAを用いて、センサ10Bが観測した3次元点群データを、センサ10Aの位置および姿勢に合わせる。算出部253は、外部パラメータTCAを用いて、センサ10Cが観測した3次元点群データを、センサ10Aの位置および姿勢に合わせる。算出部253は、外部パラメータTDAを用いて、センサ10Dが観測した3次元点群データを、センサ10Aの位置および姿勢に合わせる。算出部253は、各外部パラメータを、外部パラメータテーブル243から取得する。
算出部253は、センサ10B~10Dが観測したターゲットP1~Pnの3次元点群データを、センサ10Aの位置および姿勢に合わせた後、センサ10A~10Dが観測したターゲットP1~Pnの3次元点群データを統合する。算出部253は、係る処理を実行することで、図21に示した各時点t=1~nのターゲットP1~Pnの位置および形状を特定する。たとえば、算出部253は、ターゲットP1~Pnの重心位置を、ターゲットP1~Pnの位置とする。
算出部253は、ターゲットP3~Pnに対して平面をフィッティングし、平面の法線をZa軸として特定する。算出部253は、式(3)及び式(4)を基にして、Xa軸を算出する。算出部253は、式(5)を基にして、Ya軸を算出する。算出部253は、式(6)を基にして、原点Oaを算出する。算出部253は、式(7)、式(8)を基にして、Xa軸、Ya軸、Za軸、原点Oaを、センサ10Aを基準とする座標に変換する座標変換パラメータTaAを算出する。算出部253は、座標変換パラメータTaAを、記憶部240に格納する。
続いて、統合部254、フィッティング処理部255、評価部256の説明に移行する。統合部254、フィッティング処理部255、評価部256は、外部パラメータ生成処理部252によって、外部キャリブレーションが終了し、被写体が演技を開始した場合に処理を実行する。
統合部254は、センサ10Aの3次元点群データと、センサ10Aの位置および姿勢に合わせたセンサ10B~10Dの3次元点群データとを統合して、一つの3次元点群データを生成する処理部である。統合部254に関する説明は、実施例1で説明した統合部153に関する説明と同様である。
なお、統合部254は、評価部256から、体操器具70の座標系に変換する旨の指示を受け付けた場合、統合した3次元点群データの座標に、座標変換パラメータTaAを乗算する。これにより、センサ10Aを基準とする座標系の3次元点群データを、体操器具70の座標系の3次元点群データに変換することができる。
フィッティング処理部255は、3次元点群データに対して、被写体の3次元モデルデータを当てはめるフィッティングを実行する処理部である。フィッティング処理部255は、フィッティング結果を基にして、被写体の骨格モデルデータを特定する。骨格モデルデータには、各関節の位置情報が含まれる。フィッティング処理部は、骨格モデルデータを、評価部256に出力する。フィッティング処理部255は、統合部254から、3次元点群データを取得する度に、上記処理を繰り返し実行する。
評価部256は、時系列に骨格モデルデータを取得し、骨格モデルデータの各関節座標の遷移を基にして、被写体の演技を評価する処理部である。たとえば、評価部256は、各関節座標の遷移と、技の種別、技の成立不成立を定義したテーブル(図示略)を用いて、被写体の演技を評価し、評価結果を表示部230に出力して表示させる。
また、評価部256は、時系列の骨格モデルデータを用いて、被写体の3次元モデルを生成し、アニメーション表示する場合に、体操器具70の座標系によって、3次元モデルをアニメーション表示してもよい。また、評価部256は、体操器具70の座標系に変換する旨の指示を、統合部254に出力し、被写体の座標を、体操器具70の座標系に変換して表示させてもよい。
次に、本実施例2に係る情報処理装置200の処理手順の一例について説明する。図23は、本実施例2に係る情報処理装置の処理手順を示すフローチャートである。図23に示すように、情報処理装置200の取得部251は、センサ10から距離画像のデータを取得する(ステップS201)。取得部251は、距離画像のデータと、背景画像データとの差分をとり、背景差分データを生成する(ステップS202)。
情報処理装置200の外部パラメータ生成処理部252は、背景差分データからターゲットを検出し、ターゲットの点群情報を、検出結果テーブル242に登録する(ステップS203)。情報処理装置200は、ターゲットの検出を終了しない場合には(ステップS204,No)、再度、ステップS201に移行する。一方、情報処理装置200は、ターゲットの検出を終了する場合には(ステップS204,Yes)、ステップS205に移行する。
情報処理装置200の外部パラメータ生成処理部252は、センサ連結性グラフ生成処理を実行する(ステップS205)。ステップS205のセンサ連結性グラフ生成処理は、実施例1の図17で説明したセンサ連結性グラフ生成処理の処理手順に対応する。
情報処理装置200の外部パラメータ生成処理部252は、基準センサirefと、その他のセンサitarの組(iref,itar)について、センサ連結性グラフ31上で、Bellman-Ford法を適用することで、最短経路を検索する(ステップS206)。たとえば、基準センサirefは、センサ10Aに対応する。その他のセンサitarは、センサ10B,10C,10Dに対応する。
外部パラメータ生成処理部252は、最短経路の検索結果を基にして、センサ群の経路Pを選択する(ステップS207)。外部パラメータ生成処理部252は、経路Pの順番に基づき、特異値分解を用いて、センサitarの外部パラメータの初期値を算出する(ステップS208)。
外部パラメータ生成処理部252は、バンドル調整および最尤推定により、センサitarの外部パラメータを最適化する(ステップS209)。外部パラメータ生成処理部252は、外部パラメータを、外部パラメータテーブル243に格納する(ステップS210)。
情報処理装置200の算出部253は、体操器具70のXa軸、Ya軸、Za軸を算出する(ステップS211)。算出部253は、体操器具70の原点Oaを算出する(ステップS212)。算出部253は、座標変換パラメータTaAを算出する(ステップS213)。算出部253は、座標変換パラメータTaAを座標変換パラメータデータ244に格納する(ステップS214)。
次に、本実施例2に係る情報処理装置200の効果について説明する。情報処理装置200は、外部キャリブレーションを実行した後に、外部キャリブレーション実行時に観測したターゲットP1~Pnの位置を用いて、体操器具70の座標系のXa軸、Ya軸、Za軸と、原点Oaを算出することができる。たとえば、座標変換パラメータTaAを用いることで、被写体の3次元モデルを生成し、アニメーション表示する場合に、体操器具70の座標系によって、3次元モデルをアニメーション表示することができる。
次に、上記実施例に示した情報処理装置100(200)と同様の機能を実現するコンピュータのハードウェア構成の一例について説明する。図24は、情報処理装置と同様の機能を実現するコンピュータのハードウェア構成の一例を示す図である。
図24に示すように、コンピュータ300は、各種演算処理を実行するCPU301と、ユーザからのデータの入力を受け付ける入力装置302と、ディスプレイ303とを有する。また、コンピュータ300は、センサ10から距離画像のデータを受信する通信装置304と、各種の装置と接続するインタフェース装置305とを有する。コンピュータ300は、各種情報を一時記憶するRAM306と、ハードディスク装置307とを有する。そして、各装置301~307は、バス308に接続される。
ハードディスク装置307は、取得プログラム307a、外部パラメータ生成処理プログラム307b、算出プログラム307c、統合プログラム307d、フィッティング処理プログラム307e、評価プログラム307fを有する。CPU201は、取得プログラム307a、外部パラメータ生成処理プログラム307b、算出プログラム307c、統合プログラム307d、フィッティング処理プログラム307e、評価プログラム307fを読み出してRAM306に展開する。
取得プログラム307aは、取得プロセス306aとして機能する。外部パラメータ生成処理プログラム307bは、外部パラメータ生成処理プロセス306bとして機能する。算出プログラム307cは、算出プロセス306cとして機能する。統合プログラム307dは、統合プロセス306dとして機能する。フィッティング処理プログラム307eは、フィッティング処理プロセス306eとして機能する。評価プログラム307fは、評価プロセス306fとして機能する。
取得プロセス206aの処理は、取得部151,251の処理に対応する。外部パラメータ生成処理プロセス306bの処理は、外部パラメータ生成処理部152,252の処理に対応する。算出プロセス306cの処理は、算出部253の処理に対応する。統合プロセス306dの処理は、統合部153,254の処理に対応する。フィッティング処理プロセス306eの処理は、フィッティング処理部154,255の処理に対応する。評価プロセス306fの処理は、評価部155,256の処理に対応する。
なお、各プログラム307a~307fについては、必ずしも最初からハードディスク装置307に記憶させておかなくてもよい。例えば、コンピュータ300に挿入されるフレキシブルディスク(FD)、CD-ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ300が各プログラム307a~307fを読み出して実行するようにしてもよい。