(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-10-16
(45)【発行日】2023-10-24
(54)【発明の名称】骨格認識方法、骨格認識プログラムおよび情報処理装置
(51)【国際特許分類】
G06T 7/00 20170101AFI20231017BHJP
G06T 7/70 20170101ALI20231017BHJP
【FI】
G06T7/00 660B
G06T7/00 350B
G06T7/70 Z
(21)【出願番号】P 2021545059
(86)(22)【出願日】2019-09-12
(86)【国際出願番号】 JP2019035979
(87)【国際公開番号】W WO2021048988
(87)【国際公開日】2021-03-18
【審査請求日】2021-12-07
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】藤本 博昭
【審査官】笠田 和宏
(56)【参考文献】
【文献】国際公開第2019/069358(WO,A1)
【文献】国際公開第2018/087933(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 7/00
G06T 7/70
(57)【特許請求の範囲】
【請求項1】
コンピュータが、
被写体を複数の方向からそれぞれセンシングする複数のセンサそれぞれから、距離画像を取得し、
距離画像の入力に応じて被写体を正面方向から見た各関節のヒートマップ画像である正面ヒートマップ画像と被写体を真上方向から見た各関節のヒートマップ画像である真上ヒートマップ画像を出力する学習モデルに、前記複数のセンサそれぞれから取得された各距離画像を入力して、前記複数のセンサそれぞれに対応する前記正面ヒートマップ画像と前記真上ヒートマップ画像とを取得し、
前記複数のセンサそれぞれについて、
各正面ヒートマップ画像および各真上ヒートマップ画像を用いて各関節の2次元骨格位置を算出するとともに、前記各関節の2次元骨格位置を用いて前記各関節の3次元骨格位置を算出し、
前記複数のセンサそれぞれについて算出された前記各関節の3次元骨格位置を統合して、前記被写体の各関節の3次元骨格位置を決定し、
前記被写体の各関節の3次元骨格位置を出力する、
処理を実行することを特徴とする骨格認識方法。
【請求項2】
前記決定する処理は、
前記複数のセンサそれぞれについて算出された前記各関節の3次元骨格位置を前記複数のセンサそれぞれの座標系から基準座標系に座標変換し、前記複数のセンサそれぞれに対応する座標変換後の前記各関節の3次元骨格位置を統合して、前記被写体の各関節の3次元骨格位置を決定することを特徴とする請求項1に記載の骨格認識方法。
【請求項3】
前記統合する処理は、
前記各関節について、前記複数のセンサそれぞれについて算出された前記各関節の3次元骨格位置の平均値を算出し、
前記各関節の3次元骨格位置の平均値を、前記被写体の最終的な各関節の3次元骨格位置をと決定することを特徴とする請求項1に記載の骨格認識方法。
【請求項4】
前記決定する処理は、
前記各関節について、前記複数のセンサそれぞれについて算出された前記各関節の3次元骨格位置のうち、現在処理対象とする距離画像より以前に取得された距離画像を用いて生成された前記各関節の3次元骨格位置との距離が最も近い各関節の3次元骨格位置を選択し、
選択された前記各関節の3次元骨格位置を用いて、前記被写体の各関節の3次元骨格位置を決定することを特徴とする請求項1に記載の骨格認識方法。
【請求項5】
前記決定する処理は、
前記複数のセンサそれぞれについて算出された前記各関節の3次元骨格位置について、前記各関節の3次元骨格位置と、現在処理対象とする距離画像より以前に取得された距離画像を用いて生成された前記各関節の3次元骨格位置との距離が閾値未満の場合に、前記各関節について前記複数のセンサそれぞれに対応する各3次元骨格位置の平均値を算出し、算出された前記各関節の3次元骨格位置の平均値を用いて、前記被写体の各関節の3次元骨格位置を決定し、
前記複数のセンサそれぞれについて算出された前記各関節の3次元骨格位置について、前記各関節の3次元骨格位置と前記距離が閾値以上の場合に、前記各関節について、前記複数のセンサそれぞれについて算出された前記各関節の3次元骨格位置のうち前記距離が最も近い関節の3次元骨格位置を選択し、選択された前記各関節の3次元骨格位置を用いて、前記被写体の各関節の3次元骨格位置を決定することを特徴とする請求項1に記載の骨格認識方法。
【請求項6】
前記決定する処理は、前記平均値を算出した前記各関節について、前記複数のセンサそれぞれについて算出された前記各関節の3次元骨格位置と前記平均値との差分の平均である差分平均を算出し、前記距離が最も近いとして選択された3次元骨格位置を前記差分平均で補正して、前記被写体の各関節の3次元骨格位置を決定することを特徴とする請求項5に記載の骨格認識方法。
【請求項7】
コンピュータに、
被写体を複数の方向からそれぞれセンシングする複数のセンサそれぞれから、距離画像を取得し、
距離画像の入力に応じて被写体を正面方向から見た各関節のヒートマップ画像である正面ヒートマップ画像と被写体を真上方向から見た各関節のヒートマップ画像である真上ヒートマップ画像を出力する学習モデルに、前記複数のセンサそれぞれから取得された各距離画像を入力して、前記複数のセンサそれぞれに対応する前記正面ヒートマップ画像と前記真上ヒートマップ画像とを取得し、
前記複数のセンサそれぞれについて、各正面ヒートマップ画像および各真上ヒートマップ画像を用いて各関節の2次元骨格位置を算出するとともに、前記各関節の2次元骨格位置を用いて前記各関節の3次元骨格位置を算出し、
前記複数のセンサそれぞれについて算出された前記各関節の3次元骨格位置を統合して、前記被写体の各関節の3次元骨格位置を決定し、
前記被写体の各関節の3次元骨格位置を出力する、
処理を実行させることを特徴とする骨格認識プログラム。
【請求項8】
被写体を複数の方向からそれぞれセンシングする複数のセンサそれぞれから、距離画像を取得し、
距離画像の入力に応じて被写体を正面方向から見た各関節のヒートマップ画像である正面ヒートマップ画像と被写体を真上方向から見た各関節のヒートマップ画像である真上ヒートマップ画像を出力する学習モデルに、前記複数のセンサそれぞれから取得された各距離画像を入力して、前記複数のセンサそれぞれに対応する前記正面ヒートマップ画像と前記真上ヒートマップ画像とを取得し、
前記複数のセンサそれぞれについて、各正面ヒートマップ画像および各真上ヒートマップ画像を用いて各関節の2次元骨格位置を算出するとともに、前記各関節の2次元骨格位置を用いて前記各関節の3次元骨格位置を算出し、
前記複数のセンサそれぞれについて算出された前記各関節の3次元骨格位置を統合して、前記被写体の各関節の3次元骨格位置を決定し、
前記被写体の各関節の3次元骨格位置を出力する、
制御部を有することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、骨格認識方法、骨格認識プログラムおよび情報処理装置に関する。
【背景技術】
【0002】
体操や医療などの幅広い分野において、選手や患者などの人物の骨格を認識することが行われている。例えば、人物までの距離をセンシングする3D(Three Dimensions)レーザセンサ(以下、距離センサや深度センサともいう。)が出力する距離画像に基づいて、人物の骨格を認識する装置が利用されている。
【0003】
近年では、異なる方向から被写体を撮像する2台の3Dレーザセンサと、距離画像から体の部位を示す部位ラベルを付与した部位ラベル画像を認識するランダムフォレストで学習された学習モデルとを用いた装置が知られている。
【0004】
例えば、各3Dレーザセンサから取得された各距離画像をランダムフォレストで学習された各学習モデルに入力して各部位ラベル画像を取得し、各部位ラベル画像内で各部位の境界付近の画素(境界画素)を特定する。また、各3Dレーザセンサから、距離画像の各画素を3軸(x、y、z軸)で表す点に変換した3D点群データを取得する。続いて、各3D点群データ上で境界画素に対応する点群を特定し、一方の3D点群データに座標変換等を行って、2つの3D点群データを統合した1つの点群データを生成する。そして、2つの部位ラベル画像と点群データとを統合し、各部位ラベル画像内の各境界点群における各重心座標を各関節位置の座標として算出することで、被写体の骨格を認識する。
【先行技術文献】
【特許文献】
【0005】
【文献】特開2009-15671号公報
【文献】特開2013-120556号公報
【文献】国際公開第2019/069358号
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、上記技術のように、距離画像からランダムフォレストにより得られた各部位ラベル画像を統合する手法では、被写体の骨格の認識精度がよくない。具体的には、各部位ラベルの境界から間接的に関節座標を算出するので、2台の3Dレーダセンサを用いても、被写体の一部が隠れるオクルージョンとなっている部分の関節の認識精度を高めることは難しい。
【0007】
例えば、体操競技のあん馬を例に、2台のうちの3DレーザセンサAでは左足があん馬の後ろに隠れたオクルージョンが発生し、3DレーザセンサBではオクルージョンが発生していない例で説明する。
【0008】
この場合、ランダムフォレストは、画素単位で認識してラベル推定を行うので、オクルージョンが発生している距離画像Aからは、左足の部位ラベルを認識できず、左足の3D点群データも取得できない。このため、2つの部位ラベル画像と点群データとを統合すると、左足のデータに関しては、3DレーザセンサBの距離画像Bに依存することになる。したがって、例えば距離画像Aと距離画像Bとのずれが大きい場合、左足以外は平均的な位置に関節を認識できるが、左足は距離画像Bの情報がそのまま使用されるので、最終的に認識された全身の骨格位置がいびつになる場合がある。つまり、少なくとも一つの関節(例えば左足の膝や足首)の位置を正しく認識できない。
【0009】
一つの側面では、骨格の認識精度を向上させることができる骨格認識方法、骨格認識プログラムおよび情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【0010】
第1の案では、骨格認識方法は、コンピュータが、被写体を複数の方向からそれぞれセンシングする複数のセンサそれぞれから、距離画像を取得する処理を実行する。骨格認識方法は、コンピュータが、前記複数のセンサそれぞれから取得された各距離画像と、距離画像から被写体の各関節位置を推定する学習モデルとを用いて、前記複数のセンサごとに、前記被写体の各関節位置を含む関節情報を取得する処理を実行する。骨格認識方法は、コンピュータが、前記複数のセンサそれぞれに対応する各関節情報を統合して、前記被写体の各関節位置に関する3次元座標を含む骨格情報を生成し、前記被写体の骨格情報を出力する処理を実行する。
【発明の効果】
【0011】
一つの側面では、骨格の認識精度を向上させることができる。
【図面の簡単な説明】
【0012】
【
図1】
図1は、実施例1にかかる認識装置を含むシステムの全体構成例を示す図である。
【
図2】
図2は、実施例1にかかる学習モデルを用いた関節情報の推定を説明する図である。
【
図3】
図3は、実施例1にかかる骨格認識を説明する図である。
【
図4】
図4は、実施例1にかかるシステムの機能構成を示す機能ブロック図である。
【
図6】
図6は、各関節のヒートマップ認識を説明する図である。
【
図7】
図7は、3次元の骨格算出イメージを説明する図である。
【
図8】
図8は、実施例1にかかる骨格認識処理の流れを示すフローチャートである。
【
図9】
図9は、実施例1にかかる座標変換処理の流れを示すフローチャートである。
【
図10】
図10は、実施例1にかかる統合処理の流れを示すフローチャートである。
【
図11】
図11は、3DレーザセンサBで両足を片側に間違えた場合の骨格認識結果を説明する図である。
【
図12】
図12は、3DレーザセンサBで全身が左右反転した場合の骨格認識結果を説明する図である。
【
図13】
図13は、実施例2にかかる骨格認識処理を説明する図である。
【
図14】
図14は、3DレーザセンサBで両足を片側に間違えた場合の実施例2にかかる骨格認識結果を説明する図である。
【
図15】
図15は、3DレーザセンサBで全身が左右反転した場合の実施例2にかかる骨格認識結果を説明する図である。
【
図16】
図16は、実施例2にかかる統合処理の流れを示すフローチャートである。
【
図17】
図17は、センサ間のずれが大きい場合の骨格認識結果を説明する図である。
【
図18】
図18は、実施例3にかかる統合処理を説明する図である。
【
図19】
図19は、実施例3にかかる統合処理の流れを示すフローチャートである。
【発明を実施するための形態】
【0013】
以下に、本発明にかかる骨格認識方法、骨格認識プログラムおよび情報処理装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。また、各実施例は、矛盾のない範囲内で適宜組み合わせることができる。
【実施例1】
【0014】
[全体構成]
図1は、実施例1にかかる認識装置を含むシステムの全体構成例を示す図である。
図1に示すように、このシステムは、3DレーザセンサAとB、認識装置50、採点装置90を有し、被写体である演技者1の3次元データを撮像し、骨格等を認識して正確な技の採点を行うシステムである。なお、本実施例では、一例として、体操競技における演技者の骨格情報を認識する例で説明する。また、本実施例では、骨格位置の2次元座標や2次元座標の骨格位置を、単に2次元骨格位置などと記載する場合がある。
【0015】
一般的に、体操競技における現在の採点方法は、複数の採点者によって目視で行われているが、技の高度化に伴い、採点者の目視では採点が困難な場合が増加している。近年では、3Dレーザセンサを使った、採点競技の自動採点システムや採点支援システムが知られている。例えば、これらのシステムにおいては、3Dレーザセンサにより選手の3次元データである距離画像を取得し、距離画像から選手の各関節の向きや各関節の角度などである骨格を認識する。そして、採点支援システムにおいては、骨格認識の結果を3Dモデルにより表示することで、採点者が演技者の細部の状況を確認するなどにより、より正しい採点を実施することを支援する。また、自動採点システムにおいては、骨格認識の結果から、演技した技などを認識し、採点ルールに照らして採点を行う。
【0016】
ここで、採点支援システムや自動採点システムにおいては、随時行われる演技を、タイムリーに採点支援または自動採点することが求められる。しかし、従来のランダムフォレストで学習する手法では、2台の3Dレーダセンサを用いても、被写体の一部が隠れるオクルージョンとなっている部分の関節の認識精度が低下することから、採点精度も低下していた。
【0017】
例えば、自動採点システムによる自動採点の結果を採点者へ提供し、採点者が自己の採点結果と比較する形態では、従来技術を用いた場合、骨格認識の精度が低下することで、技認識も誤ってしまう可能性があり、結果として技による決定される得点も誤ってしまう。同様に、採点支援システムにおいて、演技者の関節の角度や位置を、3Dモデルを使って表示する際にも、表示までの時間が遅延し、表示される角度等が正しくないという事態を生じうる。この場合には、採点支援システムを利用した採点者による採点は、誤った採点となってしまう場合もある。
【0018】
以上の通り、自動採点システムや採点支援システムにおける骨格認識の精度低下は、技の誤認識、採点ミスの発生を引き起こし、システムの信頼度の低下を招いてしまう。
【0019】
そこで、実施例1にかかるシステムでは、3DレーザセンサAとBのそれぞれで取得された距離画像から、深層学習(Deep Learning)等の機械学習技術を用いて直接関節座標を推定することで、オクルージョンが発生している場合であっても、演技者の3次元骨格を高速かつ高精度に認識する。
【0020】
まず、
図1におけるシステムを構成する各装置について説明する。3DレーザセンサA(以下では単にセンサAなど記載する場合がある)は、演技者を前方から撮像するセンサであり、3DレーザセンサBは、演技者を後方から撮像するセンサである。各3Dレーザセンサは、赤外線レーザ等を用いて対象物の距離を画素ごとに測定(センシング)するセンサ装置の一例である。距離画像には、各画素までの距離が含まれる。つまり、距離画像は、各3Dレーザセンサ(深度センサ)から見た被写体の深度を表す深度画像である。
【0021】
認識装置50は、各3Dレーザセンサにより測定された距離画像と学習済みの学習モデルとを用いて、演技者1の各関節の向きや位置等に関する骨格を認識するコンピュータ装置の一例である。具体的には、認識装置50は、各3Dレーザセンサにより測定された距離画像を学習済みの学習モデルに入力し、学習モデルの出力結果に基づいて骨格を認識する。その後、認識装置50は、認識された骨格を採点装置90に出力する。なお、本実施例において、骨格認識の結果として得られる情報は、各関節の3次元位置に関する骨格情報である。
【0022】
採点装置90は、認識装置50により入力された認識結果である骨格情報を用いて、演技者の各関節の位置や向きから得られる動きの推移を特定し、演技者1が演技した技の特定および採点を実行するコンピュータ装置の一例である。
【0023】
次に、学習モデルについて説明する。学習モデルは、ニューラルネットワークなどの機械学習を用いたモデルであり、認識装置50で生成することもでき、認識装置50と別の装置である学習装置(図示しない)で生成することもできる。なお、3DレーザセンサA、Bそれぞれで撮像される各距離画像を用いて学習された1つの学習モデルを用いることできる。また、3DレーザセンサA、Bそれぞれで撮像される各距離画像を用いて、それぞれのセンサに対応するように学習された2つの学習モデルA、Bを用いることもできる。
【0024】
この学習モデルの学習には、距離画像と当該距離画像における3次元の骨格位置情報とが利用される。例えば、学習装置で生成する例で説明すると、学習装置は、3次元の骨格位置情報から、被写体の複数の関節位置の尤度を複数方向から投影したヒートマップ画像を生成する。より詳細には、学習装置は、演技者を正面から見た正面方向のヒートマップ画像(以下では、正面ヒートマップやxyヒートマップなどと記載する場合がある)と演技者を真上から見た真上方向のヒートマップ画像(以下では、真上ヒートマップやxzヒートマップなどと記載する場合がある)とを生成する。そして、学習装置は、距離画像を説明変数、距離画像に対応付けられる2方向のヒートマップ画像を目的変数とする訓練データを用いて、学習モデルを学習する。
【0025】
実施例1にかかる認識装置50は、このように学習された学習モデルを用いて、各関節の位置を含む関節情報を推定する。
図2は、実施例1にかかる学習モデルを用いた関節情報の推定を説明する図である。
図2に示すように、認識装置50は、各3Dレーザセンサにより演技者1の距離画像を取得し、学習済みの学習モデルに距離画像を入力して、2方向の2次元ヒートマップ画像を関節数分認識する。そして、認識装置50は、各方向の関節数分の2次元ヒートマップ画像から画像上の骨格位置の2次元座標を算出し、各方向の2次元の骨格位置と人領域の重心から、演技者1の各関節の3次元座標を含む関節情報を算出する。
【0026】
ここで、
図2に示した学習モデルを用いた認識装置50の骨格認識の処理について説明する。
図3は、実施例1にかかる骨格認識を説明する図である。
図3に示すように、認識装置50は、3DレーザセンサAにより撮像された距離画像に対して、フレーム間で動きのない領域を背景として除去する背景差分とノイズ除去を実行して距離画像Aを生成する。続いて、認識装置50は、距離画像Aを学習済みの学習モデルに入力して、距離画像Aに基づく関節情報A(各関節の3次元座標)を推定する。
【0027】
同様に、認識装置50は、3DレーザセンサBにより撮像された距離画像に対して、背景差分とノイズ除去を実行して距離画像Bを生成する。続いて、認識装置50は、距離画像Bを学習済みの学習モデルに入力して、距離画像Bに基づく関節情報Bを推定する。その後、認識装置50は、関節情報Bの座標系に合わせるように関節情報Aの座標を変換し、変換後の関節情報Aと関節情報Bとを統合して、演技者1の3次元の骨格位置を示す骨格情報を生成する。
【0028】
このように、認識装置50は、センサ毎に全身の関節座標を含む関節位置を算出し、その後、両センサの座標系を合わせた上で、関節位置を統合することで、最終的な全身の骨格位置を出力する。この結果、オクルージョンが発生している場合であっても、演技者の3次元骨格を高速かつ高精度に認識することができる。
【0029】
[機能構成]
図4は、実施例1にかかるシステムの機能構成を示す機能ブロック図である。ここでは、認識装置50と採点装置90とについて説明する。
【0030】
(認識装置50)
図4に示すように、認識装置50は、通信部51、記憶部52、制御部55を有する。通信部51は、他の装置の間の通信を制御する処理部であり、例えば通信インタフェースなどである。例えば、通信部51は、各3Dレーザセンサが撮像した距離画像を受信し、認識結果などを採点装置90に送信する。
【0031】
記憶部52は、データや制御部55が実行するプログラムなどを記憶する記憶装置の一例であり、例えばメモリやハードディスクなどである。この記憶部52は、学習モデル53、骨格認識結果54を記憶する。
【0032】
学習モデル53は、機械学習等によって学習された学習済みの学習モデルである。具体的には、学習モデル53は、距離画像から、各関節に対応する18枚の正面ヒートマップ画像と18枚の真上ヒートマップ画像とを予測する学習モデルである。なお、学習モデル53は、各3Dレーザセンサそれぞれに対応するように、各センサの距離画像から各ヒートマップ画像を認識するようにそれぞれ学習された2つの学習モデルであってもよい。また、学習モデル53は、各3Dレーザセンサで撮像される各距離画像から各ヒートマップ画像を認識するように学習された1つの学習モデルであってもよい。
【0033】
ここで、各ヒートマップ画像は、骨格モデル上で定義される18個の各関節に対応するヒートマップ画像である。ここで、18個の関節は予め定義されている。
図5は、骨格の定義例を示す図である。
図5に示すように、骨格定義は、公知の骨格モデルで特定される各関節をナンバリングした、18個(0番から17番)の定義情報である。例えば、
図5に示すように、右肩関節(SHOULDER_RIGHT)には7番が付与され、左肘関節(ELBOW_LEFT)には5番が付与され、左膝関節(KNEE_LEFT)には11番が付与され、右股関節(HIP_RIGHT)には14番が付与される。ここで、実施例では、8番の右肩関節のX座標をX8、Y座標をY8、Z座標をZ8と記載する場合がある。なお、例えば、Z軸は、3Dレーザセンサ5から対象に向けた距離方向、Y軸は、Z軸に垂直な高さ方向、X軸は、水平方向をと定義することができる。ここで記憶される定義情報は、3Dレーザセンサによる3Dセンシングによって演技者ごとに測定してもよく、一般的な体系の骨格モデルを用いて定義してもよい。
【0034】
骨格認識結果54は、後述する制御部55によって認識された演技者1の骨格情報である。例えば、骨格認識結果54は、撮像された各演技者のフレームと、そのフレームの距離画像から算出された3次元の骨格位置とが対応付けられる情報である。
【0035】
制御部55は、認識装置50全体を司る処理部であり、例えばプロセッサなどである。この制御部55は、推定部60と算出部70を有し、演技者1の骨格認識を実行する。なお、推定部60と算出部70は、プロセッサが有する電子回路の一例やプロセッサが実行するプロセスの一例である。
【0036】
推定部60は、距離画像取得部61、ヒートマップ認識部62、2次元算出部63、3次元算出部64を有し、距離画像から3次元の関節位置を示す関節情報(骨格認識)を推定する処理部である。
【0037】
距離画像取得部61は、各3Dレーザセンサから距離画像を取得する処理部である。例えば、距離画像取得部61は、3DレーザセンサAが撮像した距離画像を取得する。そして、距離画像取得部61は、取得された距離画像に対して、あん馬等の器具や背景を除去して人の領域だけを残す背景差分と、何もない場所に現れる画素の除去や誤差による人体表面のノイズの平滑化等を行うノイズ除去を行い、その結果で得られる距離画像をヒートマップ認識部62に出力する。
【0038】
このようにして、距離画像取得部61は、3DレーザセンサAから距離画像Aを取得し、3DレーザセンサBから距離画像Bを取得して、各距離画像をヒートマップ認識部62に出力する。なお、距離画像取得部61は、各演技者と距離画像とを対応付けて記憶部52等に格納することもできる。
【0039】
ヒートマップ認識部62は、学習済みの学習モデル53を用いて、距離画像からヒートマップ画像を認識する処理部である。例えば、ヒートマップ認識部62は、ニューラルネットワークを用いた学習済みの学習モデル53を記憶部52から読み出す。そして、ヒートマップ認識部62は、3DレーザセンサAから取得した距離画像Aを学習モデル53に入力して、各ヒートマップ画像を取得する。同様に、ヒートマップ認識部62は、3DレーザセンサBから取得した距離画像Bを学習モデル53に入力して、各ヒートマップ画像を取得する。
【0040】
図6は、各関節のヒートマップ認識を説明する図である。
図6に示すように、ヒートマップ認識部62は、距離画像取得部61から取得した距離画像を、学習済みの学習モデル53に入力し、出力結果として、18個の関節それぞれに関する正面ヒートマップ画像と、18個の関節それぞれに関する真上ヒートマップ画像を取得する。そして、ヒートマップ認識部62は、このようにして認識した各ヒートマップ画像を、2次元算出部63に出力する。
【0041】
なお、
図6に示すように、距離画像は、3Dレーザセンサから画素までの距離が含まれるデータであり、3Dレーザセンサからの距離が近いほど、濃い色で表示される。また、ヒートマップ画像は、関節ごとに生成され、各関節位置の尤度を可視化した画像であって、最も尤度が高い座標位置ほど、濃い色で表示される。なお、通常、ヒートマップ画像では、人物の形は表示されないが、
図6では、説明をわかりやすくするために、人物の形を図示するが、画像の表示形式を限定するものではない。
【0042】
2次元算出部63は、2次元のヒートマップ画像から画像上の骨格を算出する処理部である。具体的には、2次元算出部63は、3DレーザセンサAとBのそれぞれに対して、各3Dレーザセンサに対応する各ヒートマップ画像を用いて、画像上の各間接(骨格位置)の2次元座標を算出する。すなわち、2次元算出部63は、3DレーザセンサAの距離画像Aから認識された各ヒートマップ画像に基づく各関節の2次元座標Aと、3DレーザセンサBの距離画像Bから認識された各ヒートマップ画像に基づく各関節の2次元座標Bとを算出して、それぞれの2次元座標AとBを3次元算出部64に出力する。
【0043】
例えば、2次元算出部63は、18個の関節に関する正面ヒートマップ画像と18個の関節に関する真上ヒートマップ画像とを取得する。そして、2次元算出部63は、各ヒートマップ画像の最高値画素から各関節の位置を特定し、画像上の骨格位置の2次元座標を算出して、3次元算出部64に出力する。
【0044】
つまり、2次元算出部63は、18個の関節に関する正面ヒートマップ画像それぞれについて、ヒートマップ画像の最高値の画素を特定して、各関節の画像上の位置を、個別に特定する。そして、2次元算出部63は、各正面ヒートマップ画像から特定された関節位置を組み合わせて、演技者1を正面から見た場合の18個の関節位置を特定する。
【0045】
同様に、2次元算出部63は、18個の関節に関する真上ヒートマップ画像それぞれについて、ヒートマップ画像の最高値の画素を特定して、各関節の画像上の位置を、個別に特定する。そして、2次元算出部63は、各真上ヒートマップ画像から特定された関節位置を組み合わせて、演技者1を真上から見た場合の18個の関節位置を特定する。
【0046】
このような手法を用いて、2次元算出部63は、3DレーザセンサAに対応する演技者の骨格位置の2次元座標Aを用いて、正面から見た場合の18個の関節位置と真上から見た場合の関節位置を特定して、3次元算出部64に出力する。また、2次元算出部63は、3DレーザセンサBに対応する演技者の骨格位置の2次元座標Bを用いて、正面から見た場合の18個の関節位置と真上から見た場合の関節位置を特定して、3次元算出部64に出力する。
【0047】
3次元算出部64は、正面方向および真上方向の2次元骨格位置と人領域の重心とを用いて、3次元の各関節位置を示す関節情報(骨格認識)を算出する処理部である。具体的には、3次元算出部64は、3DレーザセンサAの距離画像Aに基づき算出された関節位置の2次元座標Aを用いて、3次元の関節情報Aを算出し、3DレーザセンサBの距離画像Bに基づき算出された関節位置の2次元座標Bを用いて、3次元の関節情報Bを算出する。そして、3次元算出部64は、3次元座標である各関節情報を算出部70に出力する。
【0048】
ここで、3次元の骨格算出時のイメージについて説明する。
図7は、3次元の骨格算出イメージを説明する図である。
図7に示すように、本実施例において撮像される距離画像は、演技者の水平方向をx軸、垂直方向をy軸、奥行き方向をz軸とした場合のxy軸方向の距離画像(単に距離画像またはxy距離画像と記載する場合がある)などである。
【0049】
また、ヒートマップ認識部62により認識される18個の関節に関する正面ヒートマップ画像は、演技者1を正面から見た場合の画像であり、x軸-y軸方向から撮像されるxyヒートマップ画像である。また、ヒートマップ認識部62により認識される18個の関節に関する真上ヒートマップ画像は、演技者1を真上から見た場合の画像であり、x軸-z軸方向から撮像されるxzヒートマップ画像である。
【0050】
3次元算出部64は、距離画像に映る人領域の重心(以下、人重心と記載する場合がある)を算出し、人重心とxzヒートマップ画像上の2次元骨格位置とから18関節分の奥行き値を算出する。そして、3次元算出部64は、18関節分の奥行き値とxyヒートマップ画像上の2次元骨格位置とを用いて、各関節の3次元の位置情報である関節情報(骨格位置の3次元座標)を算出する。
【0051】
例えば、3次元算出部64は、距離画像取得部61から演技者の距離画像を取得する。ここで、距離画像には、人が映っている画素が含まれており、各画素には、3Dイメージセンサから人(演技者1)までのZ値が格納されている。Z値とは、距離画像上で人が映っている画素の画素値である。なお、一般的には、距離画像の距離の情報を、x,y,zの直交座標の座標軸で表す座標値に変換した値のうち、3Dイメージセンサから被写体へ向かう方向であるz軸の値をZ値という。
【0052】
そこで、3次元算出部64は、3Dイメージセンサからの距離が閾値未満であり、画素値が一定値以上である各画素を特定する。つまり、3次元算出部64は、距離画像上で演技者1を特定する。そして、3次元算出部64は、特定した各画素の画素値の平均値を人領域の重心として算出する。
【0053】
続いて、3次元算出部64は、人領域の重心と演技者1を真上から見た画像である真上画像上の2次元の骨格位置とを用いて、18関節分の奥行き値を算出する。例えば、3次元算出部64は、ヒートマップ認識部62から取得した18個の関節に関する各真上ヒートマップ画像(xzヒートマップ画像)から、画素値が一定値以上である各画素を特定し、画像上で演技者が映っている領域を特定する。そして、3次元算出部64は、各xyヒートマップ画像上で特定された人領域の2次元座標(x,z)を算出する。
【0054】
ここで、距離画像は、人の重心が画像の中心にくるように、例えば1ピクセル=10mmとなるように作成される。したがって、3次元算出部64は、各xyヒートマップ画像上で特定された人領域の2次元座標(x,z)のz値が距離画像の中心からどれだけ離れているかにより、3次元空間中のZ値を算出することができる。例えば、3次元算出部64は、画像サイズを(320,320)、画像中心を(160,160)、人領域の重心を6000mm、頭のz値を200とする例で説明すると、3次元空間中のZ値を「(200-160)×10+6000=6400mm」と算出する。
【0055】
その後、3次元算出部64は、18関節分の奥行き値と、ヒートマップ認識部62により認識されたxyヒートマップ画像上の2次元骨格位置とを用いて、演技者1の骨格位置の3次元座標を算出する。例えば、3次元算出部64は、18関節分の奥行き値である3次元空間中のZ値を取得し、上記手法を用いて、xyヒートマップ画像から画像上の(x,y)の2次元座標を算出し、2次元座標(x,y)から3次元空間中のベクトルを算出する。
【0056】
例えば、3Dレーザセンサのような3次元センサで撮像された距離画像は、センサ原点から各画素を通る3次元ベクトル情報を有していることから、この情報を用いることにより、各画素に写っている物体の3次元座標値が算出できる。そして、3次元算出部64は、xyヒートマップ画像に(x,y)座標の3次元ベクトルを(normX,normY,normZ)、その座標のZ値を「pixelZ」とすると、式(1)を用いることにより、(x,y)座標に映っている物体(演技者1)の(X,Y,Z)を算出することができる。このようにして、3次元算出部64は、各画素に写っている物体、すなわち演技者1の各関節の3次元座標(X,Y,Z)を算出する。
【0057】
【0058】
上述した手法を用いて、3次元算出部64は、3DレーザセンサAの距離画像Aに基づいて、演技者1の各関節の3次元座標である関節情報Aを算出するとともに、3DレーザセンサBの距離画像Bに基づいて、演技者1の各関節の3次元座標である関節情報Bを算出する。そして、3次元算出部64は、関節情報Aと関節情報Bとを、算出部70に出力する。
【0059】
図4に戻り、算出部70は、座標変換部71と統合部72を有し、3次元算出部64により算出された2つの関節情報を用いて、演技者1の3次元の骨格位置を算出する処理部である。
【0060】
座標変換部71は、3Dレーザセンサの片方の座標系をもう片方の座標系に合わせるための座標変換を実行する処理部である。なお、統一する座標系を基準座標系とも呼ぶ。具体的には、座標変換部71は、センサ設置時に予めキャリブレーションを行って算出しておいたアフィン変換パラメータを用いて片方のセンサの座標系をもう片方の座標系に合わせる処理を行う。この例では片方の座標系をもう片方に一致させる例を示しているが、どちらのセンサの座標系とも異なる新たな座標系に合わせる場合は両方のセンサの結果に対し、座標変換を適用する。
【0061】
ここで、入力座標(x,y,z)に対して、x軸まわりの回転、y軸まわりの回転、z軸まわりの回転、平行移動それぞれの行列を乗算することによって座標変換を行う例を説明する。式(2)によりx軸まわりの回転を定義し、ここでRx(θ)を式(3)と定義する。同様に、式(4)によりy軸まわりの回転を定義し、ここでRy(θ)を式(5)と定義する。また、式(6)によりz軸まわりの回転を定義し、ここでRz(θ)を式(7)と定義し、式(8)により平行移動を定義し、ここでTを式(9)と定義する。なお、x軸中心回転角度を表すθxrot、y軸中心回転角度を表すθyrot、z軸中心回転角度を表すθzrot、x軸平行移動を表すtx、y軸平行移動を表すty、z軸平行移動を表すtzとなる。
【0062】
【数2】
【数3】
【数4】
【数5】
【数6】
【数7】
【数8】
【数9】
【0063】
このように、座標変換部71は、上述した順に変換することで、式(10)と式(11)を用いるアフィン変換行列を変換と等価の変換を実行することができる。
【0064】
【0065】
そして、座標変換部71は、3DレーザセンサAに対応する演技者1の3次元骨格である関節情報Aに対して、上述した座標変換を行って、3DレーザセンサBに対応する関節情報Bと同じ座標系に変換する。その後、座標変換部71は、座標変換後の関節情報Aを統合部72に出力する。
【0066】
統合部72は、関節情報Aと関節情報Bとを統合して、演技者1の3次元の骨格情報を算出する処理部である。具体的には、統合部72は、
図5に示す18個の各関節について、関節情報Aと関節情報Bとの平均値を算出する。例えば、統合部72は、
図5に示す関節番号3のHEADについて、関節情報Aに含まれるHEADの3次元座標と関節情報Bに含まれるHEADの3次元座標との平均値を、最終的な関節位置として算出する。
【0067】
このように、統合部72は、各関節の平均値を、演技者1の最終的な3次元の骨格情報として算出する。そして、統合部72は、算出した骨格情報を採点装置90に送信する。なお、採点装置90には、各関節の3次元座標とともに、フレーム番号や時刻情報などの情報が対応付けて、出力されても良い。
【0068】
図4に戻り、採点装置90は、通信部91、記憶部92、制御部94を有する。通信部91は、認識装置50から演技者の骨格情報(3次元の骨格位置情報)を受信する。
【0069】
記憶部92は、データや制御部94が実行するプログラムなどを記憶する記憶装置の一例であり、例えばメモリやハードディスクなどである。この記憶部92は、技情報93を記憶する。技情報93は、例えばあん馬の技に関する情報であり、技の名前、難易度、得点、各関節の位置、関節の角度、採点ルールなどを対応付けた情報である。
【0070】
制御部94は、採点装置90全体を司る処理部であり、例えばプロセッサなどである。この制御部94は、採点部95と出力制御部96とを有し、認識装置50により認識された演技者1の骨格情報にしたがって、技の採点などを行う。
【0071】
採点部95は、演技者の技の採点を実行する処理部である。具体的には、採点部95は、認識装置50から随時送信される3次元の骨格位置と、技情報93とを比較して、演技者1が演技した技の採点を実行する。そして、採点部95は、採点結果を出力制御部96に出力する。
【0072】
例えば、採点部95は、演技者1が演技している技の関節情報を技情報93から特定する。そして、採点部95は、予め定められた技の関節情報と、認識装置50から取得した3次元の骨格位置とを比較し、誤差の大きさ等により、演技者1の技の正確性や減点項目などを抽出して、技の採点を行う。なお、技の採点方法は、これに限定されるものではなく、予め定めた採点ルールにしたがって採点される。
【0073】
出力制御部96は、採点部95の採点結果などをディスプレイ等に表示する処理部である。例えば、出力制御部96は、認識装置50から、各3Dレーザセンサによる撮像された距離画像、算出部70により算出された3次元の骨格情報、演技者1が演技中の各画像データ、採点結果などの各種情報を取得して、所定の画面に表示する。
【0074】
[処理の流れ]
次に、上述したシステムで実行される各処理について説明する。ここでは、骨格認識処理、座標変換処理、統合処理のそれぞれについて説明する。
【0075】
(骨格認識処理)
図8は、実施例1にかかる骨格認識処理の流れを示すフローチャートである。
図8に示すように、認識装置50の推定部60は、3DレーザセンサAから距離画像Aを取得し(S101)、距離画像Aに対して背景差分やノイズ除去を実行する(S102)。
【0076】
続いて、推定部60は、学習モデル53を用いたヒートマップ認識、2次元座標の算出、3次元座標の算出などを実行して、演技者1の関節情報Aを推定する(S103)。そして、算出部70は、もう片方の座標系に合わせるために、推定された関節情報Aの座標変換を実行する(S104)。
【0077】
上記処理と並行して、認識装置50の推定部60は、3DレーザセンサBから距離画像Bを取得し(S105)、距離画像Bに対して背景差分やノイズ除去を実行する(S106)。続いて、推定部60は、学習モデル53を用いたヒートマップ認識、2次元座標の算出、3次元座標の算出などを実行して、演技者1の関節情報Bを推定する(S107)。
【0078】
その後、算出部70は、関節情報Aと関節情報Bとを統合して、各関節の3次元座標を生成し(S108)、生成した各関節の3次元座標を骨格認識結果として出力する(S109)。
【0079】
(座標変換処理)
図9は、実施例1にかかる座標変換処理の流れを示すフローチャートである。この処理は、
図8のS104で実行される処理である。
【0080】
図9に示すように、認識装置50の算出部70は、1つの関節情報に含まれるある関節の関節座標を読み出し(S201)、もう1台の3Dレーザセンサの座標系へ変換する(S202)。そして、算出部70は、すべての関節について処理が完了するまで(S203:No)、S201以降を繰り返し、すべての関節について処理が完了すると(S203:Yes)、変換された全間接の座標を、座標変換後の関節情報として出力する(S204)。
【0081】
例えば、算出部70による座標変換は、各センサの点群を統合後座標系に変換するための回転・平行移動パラメータを用いて行われる。センサ設置時にキャリブレーションを行い、X軸中心回転角度、Y軸中心回転角度、Z軸中心回転角度、X軸平行移動、Y軸平行移動、Z軸平行移動、回転と平行移動の順序などのパラメータを求めることによりアフィン変換行列が決定し、関節のXYZ座標を変換することができる。
【0082】
(統合処理)
図10は、実施例1にかかる統合処理の流れを示すフローチャートである。この処理は、
図8のS108で実行される処理である。
【0083】
図10に示すように、算出部70は、各センサの距離画像から推定された各関節情報からある関節の各関節座標を読み出し(S301)、各関節座標の平均値を関節位置として算出する(S302)。
【0084】
そして、算出部70は、すべての関節について関節位置を算出するまで(S303:No)、S301以降を繰り返し、すべての関節について関節位置を算出すると(S303:Yes)、算出した全関節の座標を骨格位置(3次元の骨格情報)として出力する(S304)。
【0085】
[効果]
上述したように、認識装置50は、演技者1を複数の方向からそれぞれセンシングする複数の3Dレーザセンサそれぞれから、距離画像を取得する。そして、認識装置50は、複数の3Dレーザセンサそれぞれの距離画像と、距離画像から人間の関節位置を得るための学習モデルに基づき、演技者1の仮骨格情報を、複数の3Dレーザセンサごとに取得する。その後、認識装置50は、複数の3Dレーザセンサそれぞれの演技者1の仮骨格情報を統合して、演技者1の骨格情報を生成する。
【0086】
このように、認識装置50は、演技者1の前後に設置した2つの3Dレーザセンサで各々センシングした結果を踏まえて、骨格認識結果を生成することができる。したがって、関節位置を直接的に推定して骨格情報を生成することができるので、従来のランダムフォレストのように、関節位置を間接的に推定する手法と比較すると、距離画像から18関節の位置情報を予測することができ、1つの関節にオクルージョンが発生している場合であっても、残りの17関節の位置情報の関係性から、18個すべての関節の位置情報を予測することができる。さらに、方向が異なる2つの関節の位置情報を統合することで、1方向のみの位置情報を用いるよりも骨格の認識精度を向上させることができる。
【実施例2】
【0087】
ところで、実施例1による手法では、平均により各関節情報の統合を行うので、片方が間違えると何もない空間の座標が関節座標として算出され、骨格の認識精度が低下する場合がある。例えば、正立や倒立している場合は、3Dの形状だけでは前後の判別が難しく、左右(もしくは前後)が反転して認識されることがあり、片方だけ反転した場合は人の形とはかけ離れた結果となる場合がある。
【0088】
ここで、
図11と
図12を用いて、骨格の認識精度が低下する例を説明する。ここでは、説明を分かりやすくするために、距離画像を用いて推定された関節情報については、各関節情報に含まれる各関節をプロットした骨格位置(骨格認識結果)を用いて説明する。
【0089】
図11は、3DレーザセンサBで両足を片側に間違えた場合の骨格認識結果を説明する図である。
図11に示すように、センサAの距離画像Aを用いて認識された骨格認識結果Aは、両手、両足ともに正しく認識されている。一方で、センサBの距離画像Bを用いて認識された骨格認識結果Aは、右足と左足とが同じ位置に認識されており、間違った認識結果となっている。このような認識結果を実施例1の手法により統合すると、各関節の座標の平均値により各関節位置を決定するので、右足の位置が左足寄りになり、正しい骨格位置とならず、骨格情報の認識精度が低下する。
【0090】
図12は、3DレーザセンサBで全身が左右反転した場合の骨格認識結果を説明する図である。
図12に示すように、センサAの距離画像Aを用いて認識された骨格認識結果Bは、両手、両足ともに正しく認識されている。一方で、センサBの距離画像Bを用いて認識された骨格認識結果Bは、右手と左手とが左右逆転するとともに、右足と左足とが左右逆転した位置に認識されており、間違った認識結果となっている。このような認識結果を実施例1の手法により統合すると、各関節の座標の平均値により各関節位置を決定するので、両足が同じ位置に位置し、両手が同じ位置に位置する骨格位置となり、骨格情報の認識精度が低下する。
【0091】
そこで、実施例2では、前フレームの統合結果を保持しておき、現フレームの統合の際に、前フレームの統合結果を利用することで片方が誤っていた場合の精度を向上させる。なお、フレームとは、演技者1の演技を撮像した各画像フレームの一例を示し、前フレームとは、現在処理対象とする画像フレームの直前のフレームの一例である。また、前フレームの統合結果とは、現在処理対象とする距離画像の1つ前の距離画像を用いて、最終的に取得された骨格認識結果の一例である。
【0092】
図13は、実施例2にかかる骨格認識処理を説明する図である。
図13に示す処理のうち、骨格統合までの処理は実施例1と同様の処理なので、詳細な説明は省略する。実施例2では、認識装置50は、前フレームの結果を保存しておき、現フレームについて各センサからの距離画像に基づく関節情報を統合する際に、前フレームの統合結果を読み出す。
【0093】
そして、認識装置50は、関節ごとに、各関節情報のうち前フレームに近い方の関節を選択する。例えば、認識装置50は、関節情報Aに含まれる左手の3次元座標Aと、関節情報Bに含まれる左手の3次元座標Bとのうち、前フレームの骨格認識結果に含まれる左手の3次元座標Cに近い方の3次元座標を選択する。このように、認識装置50は、現フレームの統合時に、関節情報Aと関節情報Bに含まれる各関節のうち、前フレームにおける骨格認識結果に近い方を選択して、最終的な3次元の骨格情報を生成する。このよう結果、実施例1と比較して、認識装置50は、認識を誤った関節を除外して統合結果を生成することができるので、骨格情報の認識精度の低下を抑制することができる。
【0094】
図14は、3DレーザセンサBで両足を片側に間違えた場合の実施例2にかかる骨格認識結果を説明する図である。
図14に示すように、センサAの距離画像Aを用いて認識された骨格認識結果Aは、両手、両足ともに正しく認識されている。一方で、センサBの距離画像Bを用いて認識された骨格認識結果Bは、右足が左足と同じ位置に認識されており、間違った認識結果となっている。
【0095】
この状態で、認識装置50は、18個の各関節について、センサAの骨格認識結果である関節情報AとセンサBの骨格認識結果である関節情報Bのうち、前フレームの骨格認識結果に近い方の関節情報を選択する。例えば、
図14の例では、認識装置50は、頭、背骨、左足についてはセンサBの関節情報Bを選択するが、両手と右足については、センサAの関節情報Aを選択する。つまり、関節情報Bにおいて誤認識されている右足と前フレームの骨格認識結果との差分は、関節情報Aにおいて正確に認識されている右足と前フレームの骨格認識結果との差分より大きくなるので、認識装置50は、関節情報Aの右足の座標を選択することができ、正確な骨格情報を認識することができる。
【0096】
図15は、3DレーザセンサBで全身が左右反転した場合の実施例2にかかる骨格認識結果を説明する図である。
図15に示すように、センサAの距離画像Aを用いて認識された骨格認識結果Aは、両手、両足ともに正しく認識されている。一方で、センサBの距離画像Bを用いて認識された骨格認識結果Bは、右手と左手とが左右逆転するとともに、右足と左足とが左右逆転した位置に認識されており、間違った認識結果となっている。
【0097】
この状態で、認識装置50は、18個の各関節について、センサAの骨格認識結果である関節情報AとセンサBの骨格認識結果である関節情報Bのうち、前フレームの骨格認識結果に近い方の関節情報を選択する。例えば、
図15の例では、認識装置50は、頭、背骨、骨盤についてはセンサBの関節情報Bが選択され、両手と両足についてはセンサAの関節情報Aが選択される。つまり、関節情報Bにおいて誤認識されている両手、両足については、前フレームと全く異なる方向に認識されており、その差分も非常に大きくなるので、認識装置50は、関節情報Aの両手および両足の座標を選択することができ、正確な骨格情報を認識することができる。
【0098】
図16は、実施例2にかかる統合処理の流れを示すフローチャートである。
図16に示すように、認識装置50は、1関節について両センサの認識結果を前フレームと比較し(S401)、前フレームに近い方の関節座標を選択する(S402)。
【0099】
そして、認識装置50は、すべての関節について関節座標の選択が完了するまで(S403:No)、S401以降を繰り返し、すべての関節について関節座標を選択すると(S403:Yes)、選択した全関節の座標を骨格位置として出力する(S404)。
【実施例3】
【0100】
ところで、実施例2による手法では、キャリブレーションずれやセンサ歪みにより座標変換後の各骨格のずれが大きい場合、統合後に正しい骨格が得られない場合がある。例えば、真っ直ぐな関節が曲がっているように見えたり、フレーム毎に選択されるセンサが変わり振動しているように見えたりする。
【0101】
図17は、センサ間のずれが大きい場合の骨格認識結果を説明する図である。実施例2と同様、ここでは、説明を分かりやすくするために、距離画像を用いて推定された関節情報については、各関節情報に含まれる各関節をプロットした骨格位置を用いて説明する。
【0102】
図17に示すように、センサAの距離画像Aを用いて認識された骨格認識結果Aも、センサBの距離画像Bを用いて認識された骨格認識結果Bも、正しい方向で認識されている。しかし、
図17に示すように、骨格認識結果Aは、前フレームの骨格認識結果よりも全体的に右にずれており、骨格認識結果Bは、前フレームの骨格認識結果よりも全体的に左にずれており、骨格認識結果Aと骨格認識結果Bとのずれが大きい。このような認識結果を実施例2の手法により統合すると、互いにずれた骨格認識結果A、Bから各関節の座標を選択する事になる。よって、実施例2は、キャリブレーションずれやセンサ歪みにより座標変換後の各骨格のずれが大きい場合には、骨格認識結果A、骨格認識結果Bの前フレームとのずれがそれぞれ同程度の場合は、関節毎に選択される骨格認識結果(A/B)が異なるいびつな形の骨格認識結果となる場合がある。
【0103】
そこで、実施例3では、両方のセンサ結果が前フレームとの距離が閾値未満で近い場合には、平均値を関節位置に決定し、両方のセンサ結果が前フレームとの距離が閾値以上で遠い場合は、前フレームに近い方を関節位置に選択することで、骨格の認識精度を向上させる。なお、前フレームに近い方の関節位置を選択する場合、平均を取った関節の各センサからのずれを示す値を用いて、選択した関節位置を補正した上で、最終的な関節位置を決定することもできる。
【0104】
図18は、実施例3にかかる統合処理を説明する図である。
図18では、
図17と同様、センサAの骨格認識結果AとセンサBの骨格認識結果Bとのずれが大きい例を示している。この状態で、右足以外の関節の骨格認識結果Aと骨格認識結果Bとのそれぞれにおける右足以外の間接位置が、前フレームとの差分が閾値未満であり、右足の位置については、前フレームとの差分が閾値以上とする。この場合、認識装置50は、右足以外の関節についてはセンサAの骨格認識結果AとセンサBの骨格認識結果Bとの平均値を関節位置に決定し、右足についてはセンサAの骨格認識結果AとセンサBの骨格認識結果Bとのうち前フレームに近い方の座標を関節位置に決定する。
【0105】
図19は、実施例3にかかる統合処理の流れを示すフローチャートである。ここでは、前フレームに近い方の関節位置を選択した場合に、平均を取った関節の各センサからのずれを示す値を用いて、選択した関節位置を補正する処理を組み込んだ例で説明する。
【0106】
図19に示すように、認識装置50は、1関節について両センサの骨格認識結果を前フレームと比較し(S501)、両方とも閾値未満か否かを判定する(S502)。
【0107】
そして、認識装置50は、両方ともが閾値未満の場合(S502:Yes)、両センサ平均を関節座標として算出する(S503)。続いて、認識装置50は、平均を算出した関節について、平均値と各骨格認識結果との差分を算出する(S504)。
【0108】
一方、認識装置50は、いずれかが閾値以上である場合(S502:No)、前フレームに近い方の関節座標を選択する(S505)。
【0109】
その後、すべての関節について処理が完了するまで(S506:No)、S501以降を繰り返し、すべての関節についての処理が完了すると(S506:Yes)、認識装置50は、平均を取った関節について、各センサの平均値の差分からセンサ全体の差分平均を算出する(S507)。
【0110】
そして、認識装置50は、前フレームに近い方の関節について、センサ全体の差分平均を用いて座標を補正する(S508)。その後、認識装置50は、算出した全関節の座標を骨格認識結果として出力する(S509)。
【0111】
ここで、前フレームに近いとして選択された座標の補正について詳細に説明する。認識装置50は、平均を取った関節(補正後の関節)に対し、各センサの補正前の骨格認識結果との座標差分を取得し、センサ毎の補正前後の差分平均を算出する。例えば、認識装置50は、以下のような式で算出する。なお、差分の算出は、xyz座標の差である。
【0112】
センサAの差分=補正後の座標-センサAの補正前の座標
センサBの差分=補正後の座標-センサBの補正前の座標
センサAの平均差分=(各関節のセンサAの差分の和)/(センサAの平均を取った関節数)
センサBの平均差分=(各関節のセンサBの差分の和)/(センサBの平均を取った関節数)
【0113】
その後、認識装置50は、前フレームに近いとして選択された関節に対して、上記平均差分の算出結果を用いて、以下の式のように補正する。
【0114】
(センサAの座標が選択された場合)センサAの補正後の関節=センサAの補正前の座標+センサAの平均差分
(センサBの座標が選択された場合)センサBの補正後の関節=センサBの補正前の座標+センサBの平均差分
【0115】
このようにすることで、片方のセンサを選択した関節についても平均した関節と同じだけシフトさせる事ができ、正しい位置に関節が接続された骨格を認識することができる。なお、両方のセンサ結果が前フレームとの距離が閾値未満で近い場合には、平均値を関節位置に決定する例を説明したが、いずれか一方が近い場合に平均値を算出し、いずれも遠い場合に前フレームに近い方を関節位置に選択することもできる。
【実施例4】
【0116】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。
【0117】
[適用例]
上記実施例では、体操競技を例にして説明したが、これに限定されるものではなく、選手が一連の技を行って審判が採点する他の競技にも適用することができる。他の競技の一例としては、フィギュアスケート、新体操、チアリーディング、水泳の飛び込み、空手の型、モーグルのエアーなどがある。また、スポーツに限らず、トラック、タクシー、電車などの運転手の姿勢検出やパイロットの姿勢検出などにも適用することができる。
【0118】
[骨格情報]
また、上記実施例では、18個の各関節の位置を学習する例を説明したが、これに限定されるものではなく、1個以上の関節を指定して学習することもできる。また、上記実施例では、骨格情報の一例として各関節の位置を例示して説明したが、これに限定されるものではなく、各関節の角度、手足の向き、顔の向きなど、予め定義できる情報であれば、様々な情報を採用することができる。
【0119】
また、実施例1では、一方の関節位置の座標系に合うように、もう片方の関節位置に座標変換を行う例を説明したが、これに限定されるものではない。例えば、2つの座標系とは異なる別の座標系になるように、両方の関節位置の座標系を変換して統合することもできる。また、実施例2では、現フレームより1つ前の直前のフレームの骨格認識結果を用いる例を説明したが、直前に限らず、現フレームより前であればよい。
【0120】
[数値や方向等]
上記実施例で用いた数値などがあくまで一例であり、実施例を限定するものではなく、任意に設定変更することができる。また、上記実施例では、2方向のヒートマップ画像を例示して説明したが、これに限定されるものではなく、3方向以上のヒートマップ画像を対象とすることもできる。また、各3Dレーザセンサの設置位置や数も一例であり、異なる方向であれば、任意の方向に設置することができる。
【0121】
[学習モデル]
上記学習済みの学習モデルには、ニューラルネットワークなどの学習アルゴリズムを採用することができる。また、上記実施例では、正面ヒートマップ画像と真上ヒートマップ画像とを認識する学習モデルを例示したが、これに限定されるものではない。例えば、正面ヒートマップ画像と視差ヒートマップ画像とを認識する学習モデルを採用することもできる。
【0122】
正面方向のヒートマップ画像は、入力に与える距離画像そのものの視点(基準視点)のヒートマップ画像である。視差ヒートマップ画像は、基準視点に対して任意の数値分平行移動および回転させた位置に仮定した仮想視点のヒートマップ画像である視差位置からのヒートマップ画像である。
【0123】
なお、「正面」は実施例1と変わらず入力に与える距離画像そのものの視点であり、これを基準に考えて、「視差位置」の「正面」に対する相対的な位置関係として、回転行列は、変化なし(=X,Y,Z軸どれに対しても回転0°)となり、平行移動は、「正面」から真横方向に移動した位置βとなる。なお、βは、学習時にどれだけ真横に移動した位置のヒートマップを学習させたかに依存するので、例えば、視差位置を正面に対してX軸正方向に100mm移動した位置を仮定してヒートマップを学習させた場合、平行移動は[100,0,0]となる。すなわち、平行移動[100,0,0]、回転[0,0,0]となる。
【0124】
また、上記実施例では、距離画像から各種ヒートマップ画像を認識する学習モデルを用いた例を説明したが、これに限定されるものではない。例えば、距離画像から18個の関節位置を直接推定するように学習された、ニューラルネットワークを適用した学習モデルを採用することもできる。
【0125】
[仮想視点の相対的な位置関係を示す情報]
上記実施例では、基準視点のヒートマップ画像と、基準視点に対して任意の数値分平行移動、回転させた位置に仮定した仮想視点のヒートマップ画像とを使用して3次元の骨格位置を算出する例を説明したが、仮想視点の相対的な位置関係を示す情報であれば他の情報を用いることもでき、任意に設定した回転行列の値や平行移動を用いることができる。ここで、片方の仮想視点の座標系Aを基準に、もう一方の仮想視点の座標系Bを座標系Aと一致させるために必要な情報が、平行移動[X,Y,Z]と回転行列である。
【0126】
実施例1の場合、「正面」は入力に与える距離画像そのものの視点で、これを基準に考えて、「真上」の「正面」に対する相対的な位置関係として、回転行列は、X軸に-90度回転となり、平行移動は、Z軸方向に距離画像から得られる重心のZ値、Y軸方向に距離画像から得られる重心のY値+αとなる。なお、αは、学習時にどの視点のヒートマップを学習したかに依存するので、例えば、学習時に真上ヒートマップ画像を人領域の重心の真上5700mm位置から見たヒートマップ画像として学習させた場合、α=5700mmとなる。すなわち、実施例1では、平行移動[0,α,重心Z]、回転[-90,0,0]となる。
【0127】
[システム]
上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【0128】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散や統合の具体的形態は図示のものに限られない。つまり、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。また、各3Dレーザセンサは、各装置に内蔵されていてもよく、各装置の外部装置として通信等で接続されていてもよい。なお、距離画像取得部61は、距離画像を取得する取得部の一例であり、ヒートマップ認識部62、2次元算出部63、3次元算出部64は、前記被写体の各関節位置を含む関節情報を取得する取得部の一例である。算出部70は、生成部と出力部の一例である。
【0129】
さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【0130】
[ハードウェア]
次に、認識装置50や採点装置90などのコンピュータのハードウェア構成について説明する。
図20は、ハードウェア構成例を説明する図である。
図20に示すように、コンピュータ100は、通信装置100a、HDD(Hard Disk Drive)100b、メモリ100c、プロセッサ100dを有する。また、
図20に示した各部は、バス等で相互に接続される。
【0131】
通信装置100aは、ネットワークインタフェースカードなどであり、他のサーバとの通信を行う。HDD100bは、
図4に示した機能を動作させるプログラムやDBを記憶する。
【0132】
プロセッサ100dは、
図4に示した各処理部と同様の処理を実行するプログラムをHDD100b等から読み出してメモリ100cに展開することで、
図4等で説明した各機能を実行するプロセスを動作させる。すなわち、このプロセスは、認識装置50や採点装置90が有する各処理部と同様の機能を実行する。具体的には、認識装置50を例にすると、プロセッサ100dは、推定部60と算出部70等と同様の機能を有するプログラムをHDD100b等から読み出す。そして、プロセッサ100dは、推定部60と算出部70等と同様の処理を実行するプロセスを実行する。なお、学習装置10についても同様のハードウェア構成を用いて処理することができる。
【0133】
このように認識装置50または採点装置90は、プログラムを読み出して実行することで認識方法または採点方法を実行する情報処理装置として動作する。また、認識装置50または採点装置90は、媒体読取装置によって記録媒体から上記プログラムを読み出し、読み出された上記プログラムを実行することで上記した実施例と同様の機能を実現することもできる。なお、この他の実施例でいうプログラムは、認識装置50または採点装置90によって実行されることに限定されるものではない。例えば、他のコンピュータまたはサーバがプログラムを実行する場合や、これらが協働してプログラムを実行するような場合にも、本発明を同様に適用することができる。
【符号の説明】
【0134】
50 認識装置
51 通信部
52 記憶部
53 学習モデル
54 骨格認識結果
55 制御部
60 推定部
61 距離画像取得部
62 ヒートマップ認識部
63 2次元算出部
64 3次元算出部
70 算出部
71 座標変換部
72 統合部