IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社メガチップスの特許一覧

特許7444646ポーズデータ生成装置、CGデータ生成システム、ポーズデータ生成方法、および、プログラム
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-27
(45)【発行日】2024-03-06
(54)【発明の名称】ポーズデータ生成装置、CGデータ生成システム、ポーズデータ生成方法、および、プログラム
(51)【国際特許分類】
   G06T 19/00 20110101AFI20240228BHJP
【FI】
G06T19/00 A
【請求項の数】 11
(21)【出願番号】P 2020041836
(22)【出願日】2020-03-11
(65)【公開番号】P2021144403
(43)【公開日】2021-09-24
【審査請求日】2022-11-15
(73)【特許権者】
【識別番号】591128453
【氏名又は名称】株式会社メガチップス
(74)【代理人】
【識別番号】100143498
【弁理士】
【氏名又は名称】中西 健
(74)【代理人】
【識別番号】100136319
【弁理士】
【氏名又は名称】北原 宏修
(74)【代理人】
【識別番号】100148275
【弁理士】
【氏名又は名称】山内 聡
(74)【代理人】
【識別番号】100142745
【弁理士】
【氏名又は名称】伊藤 世子
(72)【発明者】
【氏名】松本 真人
【審査官】橋爪 正樹
(56)【参考文献】
【文献】特開2012-164161(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 15/00-19/20
(57)【特許請求の範囲】
【請求項1】
時間ステップt(t:整数)において3次元空間内の被写体を撮像することで取得される画像データから、前記被写体の姿勢情報を含むデータである画像ベースポーズデータを取得する画像ベースポーズデータ取得部と、
前記被写体の異なる位置に取り付けられた複数の慣性計測装置から出力されるデータであって、前記被写体に取り付けられた前記慣性計測装置の3次元空間内での位置データ、変位データ、速度データ、加速度データ、角速度データの少なくとも1つを含むデータであるIMUデータを取得するIMUデータ取得処理部と、
時間ステップtに取得された前記画像データの次に画像データが取得されるタイミングを時間ステップt+k(k:自然数)とすると、時間ステップtよりも後で、かつ、時間ステップt+kよりも前の期間である第1期間において、前記画像ベースポーズデータ取得部により時刻tに取得された前記画像データを用いて取得された前記画像ベースポーズデータと、前記第1期間において前記IMUデータ取得処理部により取得された前記IMUデータとに基づいて補間処理を行うことで、前記被写体のポーズデータの補間データである補間ポーズデータを取得する補間部と、
を備えるポーズデータ生成装置。
【請求項2】
前記画像ベースポーズデータ取得部は、前記画像データから、3次元データである前記画像ベースポーズデータを取得する、
請求項1に記載のポーズデータ生成装置。
【請求項3】
前記画像ベースポーズデータ取得部は、前記画像データから、2次元データである前記画像ベースポーズデータを取得し、
前記IMUデータは、3次元データあり、
前記IMUデータ取得処理部は、3次元データである前記IMUデータに対して、3次元-2次元変換処理を実行することで、2次元データであるIMUデータを取得する、
請求項1に記載のポーズデータ生成装置。
【請求項4】
前記画像ベースポーズデータ取得部は、前記画像データから、2次元データである前記画像ベースポーズデータを取得し、
前記IMUデータは、3次元データあり、
前記補間ポーズデータは、3次元データであり、
3次元データである前記補間ポーズデータを2次元に変換したデータである2次元補間ポーズデータと、前記画像ベースポーズデータとの誤差を含むデータである2次元誤差データを取得する誤差取得部と、
前記2次元誤差データを3次元に変換することで、3次元誤差データを取得する2D/3D変換部と、
をさらに備え、
前記補間部は、前記補間ポーズデータに対して、前記3次元誤差データに基づく誤差を修正する処理を行うことで、誤差修正処理後の補間ポーズデータを取得する、
請求項1に記載のポーズデータ生成装置。
【請求項5】
前記画像ベースポーズデータ取得部は、
ポーズデータ生成装置により生成されるポーズデータのフレームレートをRfps(R:実数、fps:frames per second)とすると、0.5×Rfps以下のフレームレートで取得される前記画像データから前記画像ベースポーズデータを取得する、
請求項1から4のいずれかに記載のポーズデータ生成装置。
【請求項6】
前記補間部は、
前記画像データが取得される時間ステップにおいて、前記画像データから取得された前記画像ベースポーズデータと、前記補間処理により取得された前記補間ポーズデータとを比較し、
(1)前記画像データから取得された前記画像ベースポーズデータと、前記補間処理により取得された前記補間ポーズデータとの差が所定の閾値よりも大きい場合、前記画像データから取得された前記画像ベースポーズデータを前記ポーズデータ生成装置からの出力データとし、
(2)前記画像データから取得された前記画像ベースポーズデータと、前記補間処理により取得された前記補間ポーズデータとの差が所定の閾値以下である場合、前記補間処理により取得された前記補間ポーズデータを前記ポーズデータ生成装置からの出力データとする、
請求項1から3のいずれかに記載のポーズデータ生成装置。
【請求項7】
前記補間部は、時系列フィルタを用いた処理を実行することで前記補間処理を実行する、
請求項1から6のいずれかに記載のポーズデータ生成装置。
【請求項8】
請求項3に記載のポーズデータ生成装置と、
3次元CGデータから2次元CGデータを生成するとともに、2次元のポーズデータから2次元CGデータを生成するCGデータ生成部と、
を備えるCGデータ生成システムであって、
前記CGデータ生成部は、
前記IMUデータ取得処理部が2次元データであるIMUデータを取得するための3次元―2次元変換処理に用いた変換パラメータに基づいて、3次元CGデータを2次元CGデータに変換する処理を実行することで、2次元合成用CGデータを取得し、取得した前記2次元合成用CGデータを前記2次元のポーズデータから生成された2次元CGデータを合成することで、出力用CGデータを取得する、
CGデータ生成システム。
【請求項9】
請求項4に記載のポーズデータ生成装置と、
3次元のポーズデータに基づいて、CG処理を行うことで、3次元CGデータを生成する3次元CGデータ生成部と、
前記3次元CGデータ生成部により生成された3次元CGデータを2次元に変換する3D/2D変換処理を実行することで、2次元CGデータを取得する2次元CGデータ生成部と、
を備え、
前記誤差取得部は、前記2次元CGデータ生成部により取得される前記2次元CGデータに対応する2次元ポーズデータを前記2次元補間ポーズデータとして、当該2次元補間ポーズデータと、前記画像ベースポーズデータとの誤差を含むデータである2次元誤差データを取得する、
CGデータ生成システム。
【請求項10】
時間ステップt(t:整数)において3次元空間内の被写体を撮像することで取得される画像データから、前記被写体の姿勢情報を含むデータである画像ベースポーズデータを取得する画像ベースポーズデータ取得ステップと、
前記被写体の異なる位置に取り付けられた複数の慣性計測装置から出力されるデータであって、前記被写体に取り付けられた前記慣性計測装置の3次元空間内での位置データ、変位データ、速度データ、加速度データ、角速度データの少なくとも1つを含むデータであるIMUデータを取得するIMUデータ取得処理ステップと、
時間ステップtに取得された前記画像データの次に画像データが取得されるタイミングを時間ステップt+k(k:自然数)とすると、時間ステップtよりも後で、かつ、時間ステップt+kよりも前の期間である第1期間において、前記画像ベースポーズデータ取得ステップにより時刻tに取得された前記画像データを用いて取得された前記画像ベースポーズデータと、前記第1期間において前記IMUデータ取得処理ステップにより取得された前記IMUデータとを用いて補間処理を行うことで、前記被写体のポーズデータの補間データである補間ポーズデータを取得する補間ステップと、
を備えるポーズデータ生成方法。
【請求項11】
請求項10に記載のポーズデータ生成方法をコンピュータに実行させるためのプログラム。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、移動可能であり、かつ、その姿勢が可変である、人、生物、物体等のポーズを推定する技術に関する。
【背景技術】
【0002】
近年、現実の人や物体の動きを記録する技術であるモーションキャプチャーが注目されており、高精度なモーションキャプチャーを実現するために、人のポーズを高精度に推定する技術が求められている。
【0003】
例えば、非特許文献1には、処理対象とする人(被写体人物)を異なる複数の位置に設置した撮像装置により撮像した映像から取得した被写体人物の3次元データ(当該被写体人物の3次元形状データ)と、当該被写体人物の複数の部位に取り付けた慣性計測装置(IMU:Inertial measurement unit)により取得したデータ(IMUデータ)とを用いて、ニューラルネットワークによる処理を行うことで、被写体人物の3次元ポーズデータを取得する技術の開示がある。
【0004】
また、非特許文献2には、撮像装置により被写体人物を撮像した映像と、当該被写体人物の複数の部位に取り付けた慣性計測装置により取得したデータ(IMUデータ)とを融合させたデータを用いて、予測処理を行うことで、当該被写体人物のポーズデータを取得する技術の開示がある。具体的には、非特許文献2には、IMUデータ(方向データ)から導出した線形方程式と、被写体人物を撮像した映像から取得したシルエット画像から導出した線形方程式とを結合させた線形方程式を用いて、予測処理を行うことで、被写体人物のポーズデータを取得する。
【先行技術文献】
【非特許文献】
【0005】
【文献】Andrew Gilbert, Matthew Trumble, Charles Malleson, Adrian Hilton, John Collomosse, "Fusing Visual and Inertial Sensors with Semantics for 3D Human Pose Estimation" International Journal of Computer Vision (2019) 127:381-397.
【文献】Gerard Pons-Moll, Andreas Baak, Thomas Helten, Meinard Mueller, Hans-Peter Seidel, Bodo Rosenhahn, "Multisensor-Fusion for 3D Full-Body Human Motion Capture" Conference Paper in Proceedings/CVPR, IEEE Computer Society Conference on Computer Vision and Pattern Recognition. IEEE Computer Society Conference on Computer Vision and Pattern Recognition ・ June 2010
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、上記非特許文献1の技術では、(1)映像から取得した被写体人物の3次元データを入力とするニューラルネットワークと、(2)IMUデータを入力とするニューラルネットワークとを設け、(3)さらに、上記2つのニューラルネットワークの出力を統合するニューラルネットワークを設けて学習を行う必要がある。つまり、非特許文献1の技術では、学習済みモデルを取得するために、複雑な学習モデルを用いて学習処理を実行する必要があり、学習済みモデルを構築のための負荷が大きい。さらに、非特許文献2の技術では、予測処理において、複雑な構成の学習済みモデルを用いて処理を行うため、例えば、ハードウェアで実現する場合、当該ハードウェアの規模が大きくなり、その結果、非特許文献1の技術を実現するためのコストも高くなる。
【0007】
上記非特許文献2の技術では、IMUデータ(方向データ)から導出した線形方程式と、被写体人物を撮像した映像から取得したシルエット画像から導出した線形方程式とを結合させた線形方程式を用いて、予測処理を行うことで、被写体人物のポーズデータを取得する。このため、非特許文献2の技術では、常時、IMUデータとシルエット画像(被写体人物を撮像した映像より取得される画像データ)とを取得し続ける必要がある。非特許文献2の技術により、高精度のポーズデータを取得する場合、被写体人物を撮像した映像のフレームレートを高くする必要があり、その結果、当該高いフレームレートに対応する短い時間間隔で予測処理を実行する必要がある。つまり、非特許文献2の技術では、高精度のポーズデータを取得する場合、常時、高フレームレートで、IMUデータとシルエット画像の両方を取得し、両データを用いた予測処理を実行する必要がある。このように、非特許文献2の技術で高精度のポーズデータを取得しようと、高フレームレートで処理できる装置が必要となるため、非特許文献2の技術を実現するためのコストが高くなる。
【0008】
そこで、本発明は、上記課題に鑑み、低コストで実現でき、かつ、高精度なポーズデータを取得するポーズデータ生成装置、CGデータ生成システム、ポーズデータ生成方法、および、プログラムを実現することを目的とする。
【課題を解決するための手段】
【0009】
上記課題を解決するために、第1の発明は、画像ベースポーズデータ取得部と、IMUデータ取得処理部と、補間部と、を備えるポーズデータ生成装置である。
【0010】
画像ベースポーズデータ取得部は、時間ステップt(t:整数)において3次元空間内の被写体を撮像することで取得される画像データから、被写体の姿勢情報を含むデータである画像ベースポーズデータを取得する。
【0011】
IMUデータ取得処理部は、被写体に取り付けられた慣性計測装置から出力されるデータであって、被写体に取り付けられた慣性計測装置の3次元空間内での位置データ、変位データ、速度データ、加速度データ、角速度データ、角加速度データの少なくとも1つを含むデータであるIMUデータを取得する。
【0012】
補間部は、時間ステップtに取得された画像データの次に画像データが取得されるタイミングを時間ステップt+k(k:自然数)とすると、時間ステップtよりも後で、かつ、時間ステップt+kよりも前の期間である第1期間において、画像ベースポーズデータ取得部により時刻tに取得された画像データを用いて取得された画像ベースポーズデータと、第1期間においてIMUデータ取得処理部により取得されたIMUデータとに基づいて補間処理を行うことで、被写体の画像ベースポーズデータの補間データである補間ポーズデータを取得する。
【0013】
このポーズデータ生成装置では、(1)画像データが撮像されて取得される時間ステップでは、当該画像データに基づいて、画像ベースポーズデータを取得することができ、(2)画像データが取得される時間ステップ間の期間(画像データが取得されない期間)では、IMUデータを用いて前時間ステップから現時間ステップのポーズデータを予測して補間する処理により、ポーズデータを取得することができる。したがって、このポーズデータ生成装置では、画像データ(例えば、フレーム画像)の取得レート(フレームレート)が低い場合であっても、IMUデータを用いた上記補間処理により、高フレームレートのポーズデータを取得することができる。つまり、このポーズデータ生成装置では、高フレームレートの撮像装置を用いる必要がないので、低コストで実現でき、かつ、IMUデータを用いた補間処理によりポーズデータを取得できるので、高精度なポーズデータを取得することができる。
【0014】
なお、「画像データ」は、1または複数の画像データであってもよい。
【0015】
また、「画像データ」は、空間的に異なる位置から撮像された1または複数の画像であってもよく、あるいは、時間的に異なる1または複数の画像(例えば、時系列に連続する複数のフレーム画像)であってもよい。
【0016】
また、「ポーズデータ」とは、ポーズを特定するためのデータである。そして、「ポーズ」とは、姿勢を含む概念であり、ポーズは、人のポーズに限定されることはなく、あらゆる物体の姿勢制御対象となりうるものを含む概念である。ポーズは、例えば、行列(回転行列)、クォータニオン(quatarnion)、あるいは、オイラー角を用いて、特定、変更、および/または、調整することが可能である。
【0017】
また、「被写体」は、移動可能であり、かつ、その姿勢が可変である、人、生物、物体等を含む概念である。
【0018】
第2の発明は、第1の発明であって、画像ベースポーズデータ取得部は、画像データから、3次元データである画像ベースポーズデータを取得する。
【0019】
これにより、このポーズデータ生成装置では、3次元データである画像ベースポーズデータを用いて処理を行うことができる。
【0020】
第3の発明は、第1の発明であって、画像ベースポーズデータ取得部は、画像データから、2次元データである画像ベースポーズデータを取得する。
【0021】
そして、IMUデータは、3次元データある。
【0022】
IMUデータ取得処理部は、3次元データであるIMUデータに対して、3次元-2次元変換処理を実行することで、2次元データであるIMUデータを取得する。
【0023】
これにより、このポーズデータ生成装置では、画像データから取得した2次元の画像ベースポーズデータと、2次元データであるIMUデータとを用いて処理を行うことができる。
【0024】
第4の発明は、第1の発明であって、誤差取得部と、2D/3D変換部と、をさらに備える。
【0025】
画像ベースポーズデータ取得部は、画像データから、2次元データである画像ベースポーズデータを取得する。
【0026】
IMUデータは、3次元データある。
【0027】
補間ポーズデータは、3次元データである。
【0028】
誤差取得部は、3次元データである補間ポーズデータを2次元に変換したデータである2次元補間ポーズデータと、前記画像ベースポーズデータとの誤差を含むデータである2次元誤差データを取得する。
【0029】
2D/3D変換部は、2次元誤差データを3次元に変換することで、3次元誤差データを取得する。
【0030】
そして、補間部は、補間ポーズデータに対して、3次元誤差データに基づく誤差を修正する処理を行うことで、誤差修正処理後の補間ポーズデータを取得する。
【0031】
これにより、このポーズデータ生成装置では、3次元誤差データに基づく誤差を修正する処理により取得した補間ポーズデータにより処理ができるため、さらに高精度なポーズデータ生成処理を行うことができる。
【0032】
第5の発明は、第1から第4のいずれかの発明であって、画像ベースポーズデータ取得部は、ポーズデータ生成装置により生成されるポーズデータのフレームレートをRfps(R:実数、fps:frames per second)とすると、0.5×Rfps以下のフレームレートで取得される画像データから画像ベースポーズデータを取得する。
【0033】
これにより、このポーズデータ生成装置では、低レートで取得される画像データを用いて、高レートの画像ベースポーズデータを取得することができる。例えば、画像ベースポーズデータ取得部が10fps(≦0.5×30fps)のフレームレートで取得される画像データから画像ベースポーズデータを取得し、画像データが取得される時間ステップ間の期間において、2つのポーズデータを補間処理により取得する場合、このポーズデータ生成装置で取得(生成)されるポーズデータのフレームレートは、30fps(=10fps×3)となる。したがって、このポーズデータ生成装置では、低レートの画像データを用いて、高レートのポーズデータを取得することができる。
【0034】
第6の発明は、第1から第3のいずれかの発明であって、補間部は、画像データが取得される時間ステップにおいて、画像データから取得された画像ベースポーズデータと、補間処理により取得された補間ポーズデータとを比較する。そして、補間部は、
(1)画像データから取得された画像ベースポーズデータと、補間処理により取得された補間ポーズデータとの差が所定の閾値よりも大きい場合、画像データから取得された画像ベースポーズデータをポーズデータ生成装置からの出力データとし、
(2)画像データから取得された画像ベースポーズデータと、補間処理により取得された補間ポーズデータとの差が所定の閾値以下である場合、補間処理により取得された補間ポーズデータをポーズデータ生成装置からの出力データとする。
【0035】
これにより、このポーズデータ生成装置では、画像データが取得される時間ステップにおいて、画像データから取得された画像ベースポーズデータと、補間処理により取得された補間ポーズデータとの精度差を検証することができる。つまり、このポーズデータ生成装置では、画像データが取得される時間ステップにおいて、補間処理の精度を検証することができる。そして、このポーズデータ生成装置では、補間処理の精度が悪いと判断した場合、画像データから取得された画像ベースポーズデータを出力データとすることができるので、このポーズデータ生成装置により取得されるポーズデータの精度を常に一定レベル以上に維持することができる。
【0036】
第7の発明は、第1から第6のいずれかの発明であって、補間部は、時系列フィルタを用いた処理を実行することで補間処理を実行する。
【0037】
これにより、このポーズデータ生成装置では、時系列フィルタを用いて、補間処理を実行できるため、例えば、運動方程式等で処理対象(例えば、人)の動作(または人の特定部位の移動)が表現(予測)できる場合、当該運動方程式等により予測したデータと、実際の観測データ(IMUデータから特定されるデータ)とを用いて、時系列フィルタ(例えば、カルマンフィルタ、拡張カルマンフィルタ、アンセンテッドカルマンフィルタ、パーティクルフィルタ等)を適用して、ポーズデータの補間処理を実行することができる。
【0038】
第8の発明は、第3の発明であるポーズデータ生成装置と、3次元CGデータから2次元CGデータを生成するとともに、2次元のポーズデータから2次元CGデータを生成するCGデータ生成部と、を備えるCGデータ生成システムである。
【0039】
CGデータ生成部は、IMUデータ取得処理部が2次元データであるIMUデータを取得するための3次元―2次元変換処理に用いた変換パラメータに基づいて、3次元CGデータを2次元CGデータに変換する処理を実行することで、2次元合成用CGデータを取得し、取得した2次元合成用CGデータを2次元のポーズデータから生成された2次元CGデータを合成することで、出力用CGデータを取得する。
【0040】
このCGデータ生成システムでは、ポーズデータ生成装置により取得される2次元のポーズデータをCG合成することで、2次元のポーズデータに対応する2次元CG画像を取得することができる。
【0041】
なお、このCGデータシステムにおいて、3次元のIMUデータを2次元のIMUデータに変換したときの3次元―2次元変換処理のパラメータを、3次元CGデータを2次元CGデータに変換するときの3次元―2次元変換処理のパラメータと一致させるようにしてもよい。このようにすることで、3次元―2次元変換処理を共通にすることができ、3次元―2次元変換処理を簡易化することが可能となる。
【0042】
第9の発明は、第4の発明であるポーズデータ生成装置と、3次元CGデータ生成部と、2次元CGデータ生成部と、を備えるCGデータ生成システムである。
【0043】
3次元CGデータ生成部は、3次元のポーズデータに基づいて、CG処理を行うことで、3次元CGデータを生成する。
【0044】
2次元CGデータ生成部は、3次元CGデータ生成部により生成された3次元CGデータを2次元に変換する3D/2D変換処理を実行することで、2次元CGデータを取得する。
【0045】
そして、誤差取得部は、2次元CGデータ生成部により取得される2次元CGデータに対応する2次元ポーズデータを2次元補間ポーズデータとして、当該2次元補間ポーズデータと、画像ベースポーズデータとの誤差を含むデータである2次元誤差データを取得する。
【0046】
これにより、このCGデータ生成システムでは、3次元誤差データに基づく誤差を修正する処理により取得した補間ポーズデータにより処理ができるため、さらに高精度なポーズデータ生成処理、および、CGデータ生成処理を行うことができる。
【0047】
第10の発明は、画像ベースポーズデータ取得ステップと、IMUデータ取得処理ステップと、補間ステップと、を備えるポーズデータ生成方法である。
【0048】
画像ベースポーズデータ取得ステップは、時間ステップt(t:整数)において3次元空間内の被写体を撮像することで取得される画像データから、被写体の姿勢情報を含むデータである画像ベースポーズデータを取得する。
【0049】
IMUデータ取得処理ステップは、被写体に取り付けられた慣性計測装置から出力されるデータであって、被写体に取り付けられた慣性計測装置の3次元空間内での位置データ、変位データ、速度データ、加速度データ、角速度データ、角加速度データの少なくとも1つを含むデータであるIMUデータを取得する。
【0050】
補間ステップは、時間ステップtに取得された画像データの次に画像データが取得されるタイミングを時間ステップt+k(k:自然数)とすると、時間ステップtよりも後で、かつ、時間ステップt+kよりも前の期間である第1期間において、画像ベースポーズデータ取得ステップにより時刻tに取得された画像データを用いて取得された画像ベースポーズデータと、第1期間においてIMUデータ取得処理ステップにより取得されたIMUデータとを用いて補間処理を行うことで、被写体のポーズデータの補間データである補間ポーズデータを取得する。
【0051】
これにより、第1の発明と同様の効果を奏するポーズデータ生成方法を実現することができる。
【0052】
第11の発明は、第10の発明であるポーズデータ生成方法をコンピュータに実行させるためのプログラムである。
【0053】
これにより、第1の発明と同様の効果を奏するポーズデータ生成方法をコンピュータに実行させるためのプログラムを実現することができる。
【発明の効果】
【0054】
本発明によれば、低コストで実現でき、かつ、高精度なポーズデータを取得するポーズデータ生成装置、CGデータ生成システム、ポーズデータ生成方法、および、プログラムを実現することができる。
【図面の簡単な説明】
【0055】
図1】第1実施形態に係るポーズデータ生成システム1000の概略構成図。
図2】第1実施形態に係る画像ベースポーズデータ取得部1の概略構成図。
図3】キーポイントデータを説明するための図。
図4】撮像装置Cam1により第Nフレーム画像を撮像した時間ステップt、および、撮像装置Cam1により第N+1フレーム画像を撮像した時間ステップt+4における被写体人物Sub1の姿勢を模式的に示した図。
図5】被写体人物Sub1に取り付けた慣性計測装置IMUkの位置を示す図。
図6】ポーズデータ生成システム1000で実行されるポーズデータ生成処理(補間処理を含む)を説明するための図。
図7】ポーズデータ生成システム1000で実行されるポーズデータ生成処理(補間処理を含む)を説明するための図。
図8】ポーズデータ生成システム1000で実行されるポーズデータ生成処理(補間処理を含む)を説明するための図。
図9】ポーズデータ生成システム1000で実行されるポーズデータ生成処理(補間処理を含む)を説明するための図。
図10】ポーズデータ生成システム1000で実行される判定選択処理を説明するための図。
図11】ポーズデータ生成システム1000で実行される判定選択処理を説明するための図。
図12】ポーズデータ生成システム1000で実行される判定選択処理を説明するための図。
図13】ポーズデータ生成システム1000で実行される処理のシーケンス図。
図14】ポーズデータ生成システム1000で実行される処理のシーケンス図。
図15】第2実施形態に係るポーズデータ生成システム2000の概略構成図。
図16】第2実施形態に係る画像ベースポーズデータ取得部1Aの概略構成図。
図17】ポーズデータ生成システム2000で実行されるポーズデータ生成処理(補間処理を含む)を説明するための図。
図18】ポーズデータ生成システム2000で実行されるポーズデータ生成処理(補間処理を含む)を説明するための図。
図19】ポーズデータ生成システム2000で実行されるポーズデータ生成処理(補間処理を含む)を説明するための図。
図20】ポーズデータ生成システム2000で実行されるポーズデータ生成処理(補間処理を含む)を説明するための図。
図21】ポーズデータ生成システム2000で実行される判定選択処理を説明するための図。
図22】ポーズデータ生成システム2000で実行される判定選択処理を説明するための図。
図23】ポーズデータ生成システム2000で実行される判定選択処理を説明するための図。
図24】ポーズデータ生成システム2000で実行される処理のシーケンス図。
図25】ポーズデータ生成システム2000で実行される処理のシーケンス図。
図26】第3実施形態に係るCGデータ生成システム3000の概略構成図。
図27】第4実施形態に係るCGデータ生成システム4000の概略構成図。
図28】CGデータ生成システム4000で実行される処理のシーケンス図。
図29】CGデータ生成システム4000で実行される処理のシーケンス図。
図30】CPUバス構成を示す図。
【発明を実施するための形態】
【0056】
[第1実施形態]
第1実施形態について、図面を参照しながら、以下、説明する。
【0057】
<1.1:ポーズデータ生成システムの構成>
図1は、第1実施形態に係るポーズデータ生成システム1000の概略構成図である。
【0058】
図2は、第1実施形態に係る画像ベースポーズデータ取得部1の概略構成図である。
【0059】
ポーズデータ生成システム1000は、図1に示すように、被写体人物Sub1を撮影するための撮像装置Cam1と、被写体人物Sub1に取り付けたn個(n:自然数)の慣性計測装置IMU~IMUと、ポーズデータ生成装置100とを備える。
【0060】
撮像装置Cam1は、被写体光を集光する光学系(例えば、複数のレンズにより構成される光学系)と、光学系により集光された光を光電効果により電気信号に変換する撮像素子とを備える。撮像装置Cam1は、動画撮影が可能であり、例えば、被写体人物Sub1を撮影することで、動画像を構成する、時系列に連続したフレーム画像(2次元画像)を取得する。撮像装置Cam1は、例えば、被写体人物Sub1を撮影することで取得したフレーム画像データ(2次元画像データ)をデータD_imgとして画像ベースポーズデータ取得部1に出力する。
【0061】
慣性計測装置IMUは、例えば、加速度計測器、ジャイロスコープ、磁気センサ、気圧センサ等を搭載しており、慣性計測装置を取り付けた物体の角度(姿勢)、角速度、位置データ、変位データ、速度データ等を取得する装置である。なお、慣性計測装置IMU~IMUは、慣性計測装置IMUと同様の構成、機能を有している。
【0062】
慣性計測装置IMU~IMUは、被写体人物Sub1のそれぞれ異なる位置に取り付けられている。慣性計測装置IMUは(k:自然数、1≦k≦n)、取り付けられた位置における、被写体人物Sub1の角度(姿勢)、角速度、位置データ、変位データ、速度データの少なくとも1つを含むデータをIMUデータとして取得する。そして、慣性計測装置IMUは、取得したIMUデータをデータD0として、IMUデータ取得部2に出力する。なお、慣性計測装置IMUは、ポーズデータ生成装置100と、有線または無線により、データ通信を行うことができる機能を有している。
【0063】
ポーズデータ生成装置100は、画像ベースポーズデータ取得部1と、IMUデータ取得部2(IMUデータ取得処理部)と、補間部3とを備える。
【0064】
画像ベースポーズデータ取得部1は、撮像装置Cam1から出力されるフレーム画像データD_imgと、撮像装置Cam1が撮像する3次元空間(撮像空間)に関する情報Info_spaceと、撮像装置Cam1の撮影パラメータInfo_cam_prm(例えば、撮像装置Cam1の設置位置、撮像装置Cam1のレンズ光学系の光軸についての情報(光軸の方向等)、画角、絞り、焦点距離、シャッタースピード等)とを入力する。撮像空間に関する情報Info_spaceは、予め、ポーズデータ生成装置100の記憶部(不図示)に記憶されているものであってもよいし、また、例えば、ユーザにより、ポーズデータ生成装置100のユーザーインターフェース(不図示)を介して入力されるものであってもよい。撮像空間に関する情報Info_spaceは、撮像装置Cam1が撮像する3次元空間(撮像空間)を特定するための情報を含むものであり、撮像空間において、所定の座標系を設定する場合に、当該情報が用いられる。例えば、撮像空間に関する情報Info_spaceは、フレーム画像データ(2次元画像データ)D_imgから取得されたポーズデータ(画像ベースポーズデータ)と、記憶部に記憶保持されている所定のポーズデータとを比較することで設定できる。撮像装置Cam1の撮影パラメータは、予め、ポーズデータ生成装置100の記憶部(不図示)に記憶されているものであってもよいし、また、例えば、ユーザにより、ポーズデータ生成装置100のユーザーインターフェース(不図示)を介して入力されるものであってもよい。
【0065】
画像ベースポーズデータ取得部1は、時系列に連続して入力されるフレーム画像データD_imgを用いて、ポーズデータ取得処理を実行することで、被写体人物Sub1のポーズデータ(画像ベースポーズデータ)を取得する。そして、画像ベースポーズデータ取得部1は、取得した画像ベースポーズデータをデータD1_pose_3Dとして、補間部3に出力する。
【0066】
画像ベースポーズデータ取得部1は、例えば、図2に示すように、2Dキーポイントデータ取得部11と、3Dポーズデータ取得部12とを備える。
【0067】
2Dキーポイントデータ取得部11は、撮像装置Cam1から出力されるフレーム画像データD_imgを入力する。2Dキーポイントデータ取得部11は、入力されたフレーム画像データD_imgから、被写体人物Sub1の所定の部位の位置を示すキーポイントデータを取得する。具体的には、2Dキーポイントデータ取得部11は、(1)フレーム画像データD_imgにより形成されるフレーム画像上において、被写体人物Sub1に相当する画像領域を抽出し、(2)画像ベースポーズデータ取得部1に入力される撮像空間の情報Info_spaceと、撮像装置Cam1の撮影パラメータの情報Info_cam_prmとに基づいて、被写体人物Sub1の所定の部位の上記フレーム画像上の位置(2次元画像上の位置)を特定する。これにより、2Dキーポイントデータ取得部11は、キーポイントデータを取得する(トップダウン型姿勢推定方式によるキーポイントデータの取得処理)。キーポイントデータは、例えば、被写体人物Sub1の所定の部位の位置(複数の位置)の2次元画像上の座標の情報を含むデータである。
【0068】
なお、2Dキーポイントデータ取得部11は、上記の処理(トップダウン型姿勢推定方式によるキーポイントデータの取得処理)の代わりに、ボトムアップ型姿勢推定方式によるキーポイントデータの取得処理を行い、キーポイントデータを取得してもよい。具体的には、2Dキーポイントデータ取得部11は、先に姿勢推定の鍵となるキーポイントを抽出し、その後、キーポイントを人物ごとにマッチングさせる。そして、マッチングしたキーポイントのみを残し、当該キーポイントを被写体人物Sub1のキーポイントに設定する。2Dキーポイントデータ取得部11は、上記のように設定したキーポイントについて、キーポイントデータを取得する(ボトムアップ型姿勢推定方式によるキーポイントデータの取得処理)。
【0069】
そして、2Dキーポイントデータ取得部11は、取得したキーポイントデータをデータD_2d_key_pointsとして3Dポーズデータ取得部12に出力する。
【0070】
3Dポーズデータ取得部12は、2Dキーポイントデータ取得部11から出力されるキーポイントデータD_2d_key_pointsを入力する。3Dポーズデータ取得部12は、画像ベースポーズデータ取得部1に入力される撮像空間の情報Info_spaceと、撮像装置Cam1の撮影パラメータの情報Info_cam_prmとに基づいて、キーポイントデータD_2d_key_pointsから、3次元のポーズデータを取得する。具体的には、3Dポーズデータ取得部12は、キーポイントデータD_2d_key_points(2次元座標データ)が示すフレーム画像(2次元画像)上の点に対応する、ポーズデータ生成装置100において設定される3次元空間の座標系における位置(座標位置)を推定し、推定した当該位置の3次元の座標情報を取得する。そして、3Dポーズデータ取得部12は、上記により推定したキーポイントデータに対応する、上記3次元空間内の点(複数の点)の3次元座標データを含むデータを、3次元のポーズデータD1_pose_3Dとして取得する。そして、3Dポーズデータ取得部12は、取得した3次元のポーズデータ(3次元の画像ベースポーズデータ)D1_pose_3Dを補間部3に出力する。
【0071】
IMUデータ取得部2は、慣性計測装置IMU~IMUからそれぞれ出力されるデータD0~D0を入力する。IMUデータ取得部2は、入力されたD0~D0を統合したデータをデータD1_imuとして取得し、取得したデータD1_imuを補間部3に出力する。
【0072】
補間部3は、画像ベースポーズデータ取得部1から出力されるデータD1_pose_3Dと、IMUデータ取得部2から出力されるデータD1_imuとを入力する。また、補間部3は、撮像装置Cam1が撮像する3次元空間(撮像空間)に関する情報Info_spaceと、撮像装置Cam1の撮影パラメータInfo_cam_prmとを入力する。
(1)補間部3は、フレーム画像データが取得された時間ステップにおいて画像ベースポーズデータ取得部1から最初にポーズデータD1_pose_3Dが入力された場合、当該入力されたポーズデータD1_pose_3Dを出力データDout(3次元ポーズデータDout)として出力するとともに、当該出力データDoutを記憶保持する。
(2)補間部3は、フレーム画像データが取得されていない時間ステップにおいて、撮像空間に関する情報Info_space、および、撮像装置Cam1の撮影パラメータInfo_cam_prmに基づいて、補間部3が記憶保持している3次元ポーズデータDoutと、現時間ステップにおいて取得されたデータD1_imuとを用いて、補間処理を実行することで、補間処理後のポーズデータを取得する。そして、補間部3は、取得した補間処理後のポーズデータを出力データDoutとして出力するとともに、当該出力データDoutを記憶保持する。
(3)補間部3は、フレーム画像データが取得された時間ステップにおいて、撮像空間に関する情報Info_space、および、撮像装置Cam1の撮影パラメータInfo_cam_prmに基づいて、補間部3が記憶保持している3次元ポーズデータDoutと、現時間ステップにおいて取得されたデータD1_imuとを用いて、補間処理を実行することで、補間処理後のポーズデータを取得する。また、補間部3は、入力されたポーズデータD1_pose_3D(フレーム画像データから取得したポーズデータ)と、上記補間処理後のポーズデータとを比較し、当該比較の結果に従って、入力されたポーズデータD1_pose_3D(フレーム画像データから取得したポーズデータ)、および、上記補間処理後のポーズデータのいずれかを選択する。そして、補間部3は、選択したポーズデータを出力データDoutとして出力するとともに、当該出力データDoutを記憶保持する。
【0073】
<1.2:ポーズデータ生成システムの動作>
以上のように構成されたポーズデータ生成システム1000の動作について、以下、説明する。
【0074】
図3は、キーポイントデータを説明するための図である。
【0075】
図4は、撮像装置Cam1により第Nフレーム画像を撮像した時間ステップ(時刻)(この時間ステップを時間ステップtとする)、および、撮像装置Cam1により第N+1フレーム画像を撮像した時間ステップ(この時間ステップを時間ステップt+4とする)における被写体人物Sub1の姿勢を模式的に示した図である。
【0076】
以下では、説明便宜のために、被写体人物Sub1が図4に示す動作を行った場合におけるポーズデータ生成システム1000の動作について説明する。なお、図4に示すように、被写体人物Sub1は、第Nフレーム画像が取得された時間ステップtにおいて、直立した姿勢(状態)であり、時間ステップtから時間ステップt+4の期間において、図4に示す矢印Dir1の方向に、左手を動かすものとする。そして、この場合についてのポーズデータ生成システム1000の動作について、以下説明する。
【0077】
また、図4に示すように、原点o、x軸、y軸、z軸を設定した3次元の座標系を設定する。そして、この3次元座標系により規定される3次元空間を撮像空間(撮像装置Cam1により撮像する対象の空間(図4の場合、空間SP1))に設定する。
【0078】
図5は、被写体人物Sub1に取り付けた慣性計測装置IMUの位置を示す図である。なお、説明便宜のため、被写体人物Sub1に3つの慣性計測装置IMU~IMUが取り付けられているものとし、慣性計測装置IMUは、被写体人物Sub1の頭部に取り付けられており、慣性計測装置IMUは、被写体人物Sub1の右手首部分に取り付けられており、慣性計測装置IMUは、被写体人物Sub1の左手首部分に取り付けられているものとする。
【0079】
図6図9は、ポーズデータ生成システム1000で実行されるポーズデータ生成処理(補間処理を含む)を説明するための図である。
【0080】
図10図12は、ポーズデータ生成システム1000で実行される判定選択処理を説明するための図である。
【0081】
図13図14は、ポーズデータ生成システム1000で実行される処理のシーケンス図である。図13図14において、「PoseData1」で示した欄は、フレーム画像データから取得したポーズデータを示しており、「PoseData2」で示した欄は、補間処理により取得したポーズデータを示している。
【0082】
以下では、図面を参照しながら、ポーズデータ生成システム1000の動作について、説明する。
【0083】
なお、撮像空間は、図4に示すように、3次元空間SP1に設定されており、図4に示すように、3次元座標系(原点o、x軸、y軸、z軸)が設定されているものとし、被写体人物Sub1を追跡対象とする。
【0084】
また、一例として、ポーズデータ生成システム1000において、4時間ステップ間隔で、フレーム画像が取得され、フレーム画像が取得されていない期間において、3つのポーズデータを補間処理により生成する場合について、以下説明する。
【0085】
≪時間ステップtの処理≫
時間ステップtにおいて、撮像装置Cam1により、被写体人物Sub1を含む3次元空間(撮像空間SP1)を撮像することで、フレーム画像データD_img(t)を取得する。なお、時間ステップtに取得されたフレーム画像データをD_img(t)と表記する。フレーム画像データD_img(t)により形成される画像(フレーム画像)は、図2の上左図に示す画像Img1である。
【0086】
画像ベースポーズデータ取得部1は、撮像装置Cam1から出力されるフレーム画像データD_img(t)を入力し、当該フレーム画像データD_img(t)から、3次元ポーズデータ(3次元の画像ベースポーズデータ)を取得する処理を実行する。具体的には、以下の処理が実行される。
【0087】
画像ベースポーズデータ取得部1の2Dキーポイントデータ取得部11は、(1)フレーム画像データD_img(t)により形成されるフレーム画像(画像Img1)上において、被写体人物Sub1に相当する画像領域を抽出し、(2)画像ベースポーズデータ取得部1に入力される撮像空間の情報Info_spaceと、撮像装置Cam1の撮影パラメータの情報Info_cam_prmとに基づいて、被写体人物Sub1の所定の部位の上記フレーム画像上の位置(2次元画像上の位置)を特定する。なお、ここでは、「所定の部位」は、(1)人の頭部および脊椎に含まれる所定の位置(図3のキーポイントkp~kpに対応)、(2)人の左右の腕に含まれる所定の位置(図3のキーポイントkp~kp、kp14~kp16に対応)、(3)人の左右の脚部に含まれる所定の位置(図3のキーポイントkp~kp10、kp11~kp13に対応)であるものとする。そして、キーポイントデータD_2d_key_pointsにより特定されるキーポイントは、図3に示すように、16個の点kp~kp16に対応するものとする。
【0088】
なお、ポーズデータ生成システム1000では、追跡対象を人としており(標準的な人間の大きさが既知であり)、3次元空間内の撮像装置Cam1の設置位置、カメラ光軸の向き、焦点距離、画角が既知であるので、撮像装置Cam1により取得されたフレーム画像から、被写体人物Sub1に相当する画像領域を抽出することができ、かつ、被写体人物Sub1の特定の部位のフレーム画像上の位置を特定することができる。
【0089】
そして、2Dキーポイントデータ取得部11は、上記処理により取得したキーポイントデータをデータD_2d_key_pointsとして3Dポーズデータ取得部12に出力する。
【0090】
3Dポーズデータ取得部12は、画像ベースポーズデータ取得部1に入力される撮像空間の情報Info_spaceと、撮像装置Cam1の撮影パラメータの情報Info_cam_prmとに基づいて、キーポイントデータD_2d_key_pointsから、3次元のポーズデータを取得する。具体的には、3Dポーズデータ取得部12は、キーポイントデータD_2d_key_points(2次元座標データ)が示すフレーム画像(2次元画像)上の点に対応する、ポーズデータ生成装置100において設定される3次元空間SP1の座標系における位置(座標位置)を推定し、推定した当該位置の3次元の座標情報を取得する。
【0091】
なお、ポーズデータ生成システム1000では、追跡対象を人としており(標準的な人間の大きさが既知であり)、3次元空間内の撮像装置Cam1の設置位置、カメラ光軸の向き、焦点距離、画角が既知であり、さらに、撮像空間とした3次元空間SP1を特定する情報が既知であるので、被写体人物Sub1の特定の部位のフレーム画像上の位置から、当該部位の3次元空間SP1(撮像空間SP1)内の座標位置を推定することができる。つまり、ポーズデータ生成システム1000では、キーポイントデータD_2d_key_points(2次元画像上の各キーポイントの2次元座標データ)から、各キーポイントの3次元空間SP1内の座標情報(3次元座標データ)を推定することができる。
【0092】
なお、キーポイントデータD_2d_key_points(2次元画像上の各キーポイントの2次元座標データ)から、各キーポイントの3次元空間SP1内の座標情報(3次元座標データ)を推定する処理(推定処理)は、2次元座標空間を3次元座標空間に変換する算出処理を利用するものであってもよく、また、ニューラルネットワークによる処理を利用するものであってもよい。上記推定処理としてニューラルネットワークによる処理を利用する場合、例えば、以下のように処理を行う。つまり、人を撮影した2次元画像(フレーム画像)から取得した当該人のキーポイントデータを入力とし、当該キーポイントデータの各キーポイントの3次元空間内の座標データ(3次元座標データ)を出力データの教師データとして、ニューラルネットワークモデルの学習処理を行う。そして、当該学習処理により、人を撮影した2次元画像(フレーム画像)から取得した当該人のキーポイントデータを入力とし、当該キーポイントデータの各キーポイントの3次元空間内の座標データ(3次元座標データ)の予測データを出力する学習済みモデルを取得する。そして、当該学習済みモデルを用いて処理を行うことで、キーポイントデータD_2d_key_points(2次元画像上の各キーポイントの2次元座標データ)から、各キーポイントの3次元空間SP1内の座標情報(3次元座標データ)を推定する処理(推定処理)を実現できる。
【0093】
3Dポーズデータ取得部12は、上記処理により取得した各キーポイントの3次元空間内の座標データ(3次元座標データ)を含むデータを、データD1_pose_3D(時間ステップtに取得されるデータD1_pose_3DをD1_pose_3D(t)と表記する)として、補間部3に出力する。
【0094】
なお、図2の上右図に示すように、データD1_pose_3D(3Dポーズデータ)を、各キーポイントの3次元空間内の座標データ(3次元座標データ)で特定される点を線で接続した図により示す。また、時間ステップtにおいて、画像ベースポーズデータ取得部1により取得された3DポーズデータD1_pose_3DをV_3d(t)と表記する。
【0095】
時間ステップtにおいて、補間部3は、画像ベースポーズデータ取得部1から出力されるデータD1_pose_3D(=V_3d(t))を入力し、当該入力データを、そのまま出力データDoutとして出力する(図6の時間ステップtの図、図13の時間ステップtの処理を参照)。また、補間部3は、出力データDoutを時間ステップtの3DポーズデータPose_3d(t)(=V_3d(t))として、記憶保持する。なお、時間ステップtにおいて、補間部3から出力されるデータをデータPose_3d(t)と表記する。
【0096】
また、補間部3は、3DポーズデータPose_3d(t)を用いて、時間ステップtにおける慣性計測装置IMU(k:自然数、1≦k≦3)の3次元空間SP1内の位置(座標位置)を特定(推定)する。慣性計測装置IMUの取り付け位置は既知であるので、慣性計測装置IMUの取り付け位置に相当する3次元空間SP1内の位置を、3DポーズデータPose_3d(t)に基づいて、特定(推定)する。例えば、図5の右図に示すように、慣性計測装置IMUは、被写体人物Sub1の左リスト部分に取り付けられているので、3DポーズデータPose_3d(t)を参照して、被写体人物Sub1の左リスト部分に対応する位置(3次元空間SP1内の座標位置)(図5の右図のP (t)で示した位置)を特定できる。したがって、補間部3は、この位置の3次元空間SP1内の座標位置のデータをP (t)として特定し、当該データを記憶保持する。なお、P (t)は、
(t)=[x (t),y (t),z (t)
(t):時間ステップtにおける慣性計測装置IMUのx座標
(t):時間ステップtにおける慣性計測装置IMUのy座標
(t):時間ステップtにおける慣性計測装置IMUのz座標
(t):P (t)転置行列
である。
【0097】
同様に、慣性計測装置IMUは、被写体人物Sub1の右リスト部分に取り付けられているので、3DポーズデータPose_3d(t)を参照して、被写体人物Sub1の右リスト部分に対応する位置(3次元空間SP1内の座標位置)(図5の右図のP (t)で示した位置)を特定できる。したがって、補間部3は、この位置の3次元空間SP1内の座標位置のデータをP (t)として特定し、当該データを記憶保持する。なお、P (t)は、
(t)=[x (t),y (t),z (t)
(t):時間ステップtにおける慣性計測装置IMUのx座標
(t):時間ステップtにおける慣性計測装置IMUのy座標
(t):時間ステップtにおける慣性計測装置IMUのz座標
(t):P (t)転置行列
である。
【0098】
同様に、慣性計測装置IMUは、被写体人物Sub1の頭部に取り付けられているので、3DポーズデータPose_3d(t)を参照して、被写体人物Sub1の頭部に対応する位置(3次元空間SP1内の座標位置)(図5の右図のP (t)で示した位置)を特定できる。したがって、補間部3は、この位置の3次元空間SP1内の座標位置のデータをP (t)として特定し、当該データを記憶保持する。なお、P (t)は、
(t)=[x (t),y (t),z (t)
(t):時間ステップtにおける慣性計測装置IMUのx座標
(t):時間ステップtにおける慣性計測装置IMUのy座標
(t):時間ステップtにおける慣性計測装置IMUのz座標
(t):P (t)転置行列
である。
【0099】
≪時間ステップt+1の処理≫
時間ステップt+1において、慣性計測装置IMU~IMUは、それぞれ、IMUデータD0(t+1)~D0(t+1)を取得し、取得したIMUデータをポーズデータ生成装置100のIMUデータ取得部2に送信する。なお、慣性計測装置IMU~IMUは、角速度のデータを取得するものとして、以下説明する。また、慣性計測装置IMUが時間ステップtにおいて取得するIMUデータをD0(t)と表記する。
【0100】
IMUデータ取得部2は、慣性計測装置IMU~IMUからそれぞれ出力されるデータD0(t+1)~D0(t+1)を入力する。IMUデータ取得部2は、入力されたD0~D0を統合したデータをデータD1_imu(時間ステップt+1に取得されるデータD1_imuをD1_imu(t+1)と表記する)として取得し、取得したデータD1_imu(=D1_imu(t+1))を補間部3に出力する。
【0101】
補間部3は、(1)時間ステップt+1において取得したIMUデータD0(t+1)~D0(t+1)と、(2)記憶保持している、時間ステップtの慣性計測装置IMU~IMUの3次元座標位置データP (t)~P (t)とを用いて、時間ステップt+1の慣性計測装置IMU~IMUの3次元座標位置データP (t+1)~P (t+1)を取得する。具体的には、補間部3は、下記数式に相当する処理を実行することで、時間ステップt+1の慣性計測装置IMU~IMUの3次元座標位置データP (t+1)~P (t+1)を取得する。
【数1】

(k:自然数、1≦k≦3)
Δ (t+1)=O (t+1)×Δt
(t+1)=[ωx (t+1),ωy (t+1),ωz (t+1)
Δt:時間ステップtと時間ステップt+1と時間間隔
(t+1):O (t+1)の転置行列
なお、ωx (t+1)は、時間ステップt+1において慣性計測装置IMUで取得された角速度のx成分データであり、ωy (t+1)は、時間ステップt+1において慣性計測装置IMUで取得された角速度のy成分データであり、ωz (t+1)は、時間ステップt+1において慣性計測装置IMUで取得された角速度のz成分データである。
【0102】
補間部3は、時間ステップt+1において慣性計測装置IMUで取得された角速度の各成分に、時間ステップtから時間ステップt+1までの経過時間Δtを乗算することで、各成分(x、y、z成分)の変位量を取得(推定)する。すなわち、補間部3は、
Δx (t+1)=ωx (t+1)×Δt
Δy (t+1)=ωy (t+1)×Δt
Δz (t+1)=ωz (t+1)×Δt
に相当する処理により、慣性計測装置IMUの時間ステップtから時間ステップt+1までの変位量(移動量)を取得(推定)する。
【0103】
そして、補間部3は、(1)時間ステップtの3DポーズデータPose_3d(t)(=V_3d(t))と、(2)上記により取得した時間ステップt+1の慣性計測装置IMU~IMUの3次元座標位置データP (t+1)~P (t+1)とを用いて、補間処理を実行することで、時間ステップt+1の3DポーズデータPose_3d(t+1)を取得する。
【0104】
具体的には、補間部3は、
Pose_3d(t+1)=f1(P (t+1),P (t+1),P (t+1),Pose_3d(t)
に相当する処理を実行することで、時間ステップt+1の3DポーズデータPose_3d(t+1)を取得する。なお、関数f1は、P (t+1)~P (t+1)、および、Pose_3d(t)から、時間ステップt+1の3DポーズデータPose_3d(t+1)を取得する関数である。
【0105】
具体的には、補間部3は、慣性計測装置IMUの位置が、時間ステップt+1において、上記推定位置であると仮定したときに、人間の関節の自由度、各部位の移動可能範囲を考慮して、各キーポイントがどのように移動するかを予測する。例えば、図6の右図(時間ステップt+1の図の拡大図)に示すように、慣性計測装置IMUの位置が、P (t)からP (t+1)に移動したと推定されているので(P (t)からP (t+1)へのベクトルをベクトルvec_Pとする)、補間部3は、ベクトルvec_Pを考慮して、キーポイントkp15(Pose_3d(t)から特定されるキーポイントデータ)の時間ステップtから時間ステップt+1の移動ベクトルをベクトルvec_kp15図6のベクトルvec_kp15)と推定し、キーポイントkp15の時間ステップt+1の位置を図6に示す位置kp’15と推定する。同様に、補間部3は、ベクトルvec_Pを考慮して、キーポイントkp16(Pose_3d(t)から特定されるキーポイントデータ)の時間ステップtから時間ステップt+1の移動ベクトルをベクトルvec_kp16図6のベクトルvec_kp16)と推定し、キーポイントkp16の時間ステップt+1の位置を図6に示す位置kp’16と推定する。
【0106】
なお、慣性計測装置IMU、IMUの位置は、変化していないので、キーポイントkp~kp14(Pose_3d(t)から特定されるキーポイントデータ)の位置は、時間ステップtから時間ステップt+1の期間において変化していないと推定する。
【0107】
そして、補間部3は、上記のように処理(推定)(関数f1の処理に相当)すること取得したキーポイントの3次元座標データに基づいて、時間ステップt+1の3DポーズデータPose_3d(t+1)図6に示す3DポーズデータPose_3d(t+1))を取得する。
【0108】
そして、補間部3は、上記処理により取得した3DポーズデータPose_3d(t+1)を出力する(図13のシーケンス図の時間ステップt+1の処理)とともに、記憶保持する。
【0109】
また、補間部3は、時間ステップt+1の慣性計測装置IMU~IMUの3次元座標位置データP (t+1)~P (t+1)を記憶保持する。
【0110】
≪時間ステップt+2の処理≫
時間ステップt+2において、慣性計測装置IMU~IMUは、それぞれ、IMUデータD0(t+2)~D0(t+2)を取得し、取得したIMUデータをポーズデータ生成装置100のIMUデータ取得部2に送信する。
【0111】
IMUデータ取得部2は、慣性計測装置IMU~IMUからそれぞれ出力されるデータD0(t+2)~D0(t+2)を入力する。IMUデータ取得部2は、入力されたD0~D0を統合したデータをデータD1_imu(t+2)として取得し、取得したデータD1_imu(t+2)を補間部3に出力する。
【0112】
補間部3は、(1)時間ステップt+2において取得したIMUデータD0(t+2)~D0(t+2)と、(2)記憶保持している、時間ステップt+1の慣性計測装置IMU~IMUの3次元座標位置データP (t+1)~P (t+1)とを用いて、時間ステップt+2の慣性計測装置IMU~IMUの3次元座標位置データP (t+2)~P (t+2)を取得する。
【0113】
具体的には、補間部3は、時間ステップt+1のときの処理と同様の処理により、時間ステップt+2の慣性計測装置IMU~IMUの3次元座標位置データP (t+2)~P (t+2)を取得する。
【0114】
そして、補間部3は、時間ステップt+1のときと同様に、
Pose_3d(t+2)=f1(P (t+2),P (t+2),P (t+2),Pose_3d(t+1)
に相当する処理を実行することで、時間ステップt+2の3DポーズデータPose_3d(t+2)を取得する。これにより、補間部3は、図7に示すような時間ステップt+2の3DポーズデータPose_3d(t+2)を取得する。
【0115】
そして、補間部3は、上記処理により取得した3DポーズデータPose_3d(t+2)を出力する(図13のシーケンス図の時間ステップt+2の処理)とともに、記憶保持する。
【0116】
また、補間部3は、時間ステップt+2の慣性計測装置IMU~IMUの3次元座標位置データP (t+2)~P (t+2)を記憶保持する。
【0117】
≪時間ステップt+3の処理≫
時間ステップt+3において、慣性計測装置IMU~IMUは、それぞれ、IMUデータD0(t+3)~D0(t+3)を取得し、取得したIMUデータをポーズデータ生成装置100のIMUデータ取得部2に送信する。
【0118】
IMUデータ取得部2は、慣性計測装置IMU~IMUからそれぞれ出力されるデータD0(t+3)~D0(t+3)を入力する。IMUデータ取得部2は、入力されたD0~D0を統合したデータをデータD1_imu(t+3)として取得し、取得したデータD1_imu(t+3)を補間部3に出力する。
【0119】
補間部3は、(1)時間ステップt+3において取得したIMUデータD0(t+3)~D0(t+3)と、(2)記憶保持している、時間ステップt+2の慣性計測装置IMU~IMUの3次元座標位置データP (t+2)~P (t+2)とを用いて、時間ステップt+3の慣性計測装置IMU~IMUの3次元座標位置データP (t+3)~P (t+3)を取得する。
【0120】
具体的には、補間部3は、時間ステップt+1のときの処理と同様の処理により、時間ステップt+3の慣性計測装置IMU~IMUの3次元座標位置データP (t+3)~P (t+3)を取得する。
【0121】
そして、補間部3は、時間ステップt+1のときと同様に、
Pose_3d(t+3)=f1(P (t+3),P (t+3),P (t+3),Pose_3d(t+2)
に相当する処理を実行することで、時間ステップt+3の3DポーズデータPose_3d(t+3)を取得する。これにより、補間部3は、図8に示すような時間ステップt+3の3DポーズデータPose_3d(t+3)を取得する。
【0122】
そして、補間部3は、上記処理により取得した3DポーズデータPose_3d(t+3)を出力する(図13のシーケンス図の時間ステップt+3の処理)とともに、記憶保持する。
【0123】
また、補間部3は、時間ステップt+3の慣性計測装置IMU~IMUの3次元座標位置データP (t+3)~P (t+3)を記憶保持する。
【0124】
≪時間ステップt+4の処理≫
時間ステップt+4において、撮像装置Cam1により、被写体人物Sub1を含む3次元空間(撮像空間SP1)を撮像することで、フレーム画像データD_img(t+4)を取得する。
【0125】
画像ベースポーズデータ取得部1は、時間ステップtのときの処理と同様の処理を実行し、撮像装置Cam1から出力されるフレーム画像データD_img(t+4)から、3次元ポーズデータD1_pose_3D(t+4)(=V_3d(t+4))を取得する。
【0126】
補間部3は、時間ステップtの処理と同様に、3DポーズデータV_3d(t+4)を用いて、時間ステップtにおける慣性計測装置IMU(k:自然数、1≦k≦3)の3次元空間SP1内の位置(座標位置)を特定(推定)する。これにより、補間部3は、慣性計測装置IMU~IMUの3次元座標データP (t+4)~P (t+4)を取得する。
【0127】
また、補間部3は、時間ステップt+1と同様の補間処理を行う。つまり、補間部3は、以下の処理を実行する。
【0128】
時間ステップt+4において、慣性計測装置IMU~IMUは、それぞれ、IMUデータD0(t+4)~D0(t+4)を取得し、取得したIMUデータをポーズデータ生成装置100のIMUデータ取得部2に送信する。
【0129】
IMUデータ取得部2は、慣性計測装置IMU~IMUからそれぞれ出力されるデータD0(t+4)~D0(t+4)を入力する。IMUデータ取得部2は、入力されたD0~D0を統合したデータをデータD1_imu(t+4)として取得し、取得したデータD1_imu(t+4)を補間部3に出力する。
【0130】
補間部3は、(1)時間ステップt+4において取得したIMUデータD0(t+4)~D0(t+4)と、(2)記憶保持している、時間ステップt+3の慣性計測装置IMU~IMUの3次元座標位置データP (t+3)~P (t+3)とを用いて、時間ステップt+4の慣性計測装置IMU~IMUの3次元座標位置データP (t+4)~P (t+4)を取得する。
【0131】
具体的には、補間部3は、時間ステップt+1のときの処理と同様の処理により、時間ステップt+4の慣性計測装置IMU~IMUの3次元座標位置データP (t+4)~P (t+4)を取得する。
【0132】
そして、補間部3は、時間ステップt+1のときと同様の処理により、3Dポーズデータ(補間処理による3Dポーズデータ)を取得する。なお、時間ステップt+4において、補間部3が補間処理による取得する3Dポーズデータを3DポーズデータPose_3dH(t+4)と表記する。つまり、補間部3は、
PoseH_3d(t+4)=f1(P (t+4),P (t+4),P (t+4),Pose_3d(t+3)
に相当する処理を実行することで、時間ステップt+4の補間処理による3DポーズデータPoseH_3d(t+4)を取得する。
【0133】
そして、補間部3は、フレーム画像データD_img(t+4)から取得した3DポーズデータV_3d(t+4)と、補間処理により取得した3DポーズデータPoseH_3d(t+4)とに対して、判定選択処理を行う(図14のシーケンス図の時間ステップt+4の処理)。
【0134】
具体的には、3DポーズデータV_3d(t+4)と、3DポーズデータPoseH_3d(t+4)とを比較し、両者の差が所定の範囲内であれば、補間処理の予測精度が高いと判断し、補間処理により取得した3DポーズデータPoseH_3d(t+4)を時間ステップt+4の3DポーズデータPose_3d(t+4)として出力し、一方、両者の差が所定の範囲から外れている場合、補間処理の予測精度が低いと判断し、フレーム画像データD_img(t+4)から取得した3DポーズデータV_3d(t+4)を時間ステップt+4の3DポーズデータPose_3d(t+4)として出力する。
【0135】
図10に、3DポーズデータV_3d(t+4)と、3DポーズデータPoseH_3d(t+4)との差が小さい場合を示す。また、図11に、3DポーズデータV_3d(t+4)と、3DポーズデータPoseH_3d(t+4)との差が大きい場合を示す。
【0136】
図10の場合、補間部3は、3DポーズデータV_3d(t+4)と、3DポーズデータPoseH_3d(t+4)とにおいて、対応するキーポイント間のベクトルのノルム(あるいは、ユークリッド距離)の総和の合計が所定の閾値よりも大きいか否かについての比較判定処理を行う。対応するキーポイント間のベクトルは、例えば、図12に示すように、設定されるものとする。
【0137】
すなわち、vec(a,b)を、3次元空間SP1内の点aから点bへのベクトルとすると、対応するキーポイント間のベクトルは、以下の15個のベクトルv~v15である。
=vec(kp,kp
=vec(kp,kp
=vec(kp,kp
=vec(kp,kp
=vec(kp,kp
=vec(kp,kp
=vec(kp,kp14
=vec(kp14,kp15
=vec(kp15,kp16
10=vec(kp,kp
11=vec(kp,kp
12=vec(kp,kp10
13=vec(kp,kp11
14=vec(kp11,kp12
15=vec(kp12,kp13
なお、3DポーズデータPoseH_3d(t+4)に対応するキーポイント間のベクトルをベクトルv~v15とし、3DポーズデータV_3d(t+4)に対応するキーポイント間のベクトルをベクトルv’~v’15とする。
【0138】
そして、補間部3は、3DポーズデータV_3d(t+4)と、3DポーズデータPoseH_3d(t+4)とにおいて、対応するキーポイント間のベクトルの差ベクトルのノルム(あるいは、ユークリッド距離)の総和の合計Ev(評価値Ev)を下記数式に相当する処理を実行することで取得する。
【数2】

M:キーポイント間のベクトルの数
そして、補間部3は、上記により取得した評価値Evを所定の閾値Th1と比較する。なお、3DポーズデータPoseH_3d(t+4)と、3DポーズデータV_3d(t+4)とに対する評価値EvをEv(PoseH_3d(t+4),V_3d(t+4))と標記する。
(1)Ev(PoseH_3d(t+4),V_3d(t+4))>Th1である場合、補間部3は、ポーズデータ生成装置100で実行されている補間処理の予測精度が低いと判断し、フレーム画像データD_img(t+4)から取得した3DポーズデータV_3d(t+4)を時間ステップt+4の3DポーズデータPose_3d(t+4)として出力する(例えば、図11の場合)。
(2)Ev(PoseH_3d(t+4),V_3d(t+4))≦Th1である場合、補間部3は、ポーズデータ生成装置100で実行されている補間処理の予測精度が高いと判断し、補間処理により取得した3DポーズデータPoseH_3d(t+4)を時間ステップt+4の3DポーズデータPose_3d(t+4)として出力する(例えば、図10の場合)。
【0139】
以上のように処理することで、ポーズデータ生成装置100では、フレーム画像が取得される時間ステップt+4において、(1)フレーム画像データD_img(t+4)から取得した3DポーズデータV_3d(t+4)、および、(2)補間処理により取得した3DポーズデータPoseH_3d(t+4)の精度の高い方の3Dポーズデータを出力することができる。つまり、ポーズデータ生成装置100は、フレーム画像が取得される時間ステップt+4において、当該時間ステップまでに実行された補間処理の精度を検証することができ、補間処理の精度が悪い場合、フレーム画像データD_img(t+4)から取得した3DポーズデータV_3d(t+4)を出力する。したがって、ポーズデータ生成装置100により取得される3Dポーズデータの精度を常に一定レベル以上に維持することができる。
【0140】
なお、上記では、ベクトル(対応するキーポイント間のベクトル)を用いる場合について、説明したが、これに限定されることはない。例えば、ポーズデータ生成装置100において、行列(回転行列)、クォータニオン(quatarnion)、オイラー角を用いて、(1)フレーム画像データD_img(t+4)から取得した3DポーズデータV_3d(t+4)、および、(2)補間処理により取得した3DポーズデータPoseH_3d(t+4)の精度の高い方を選択(出力)するようにしてもよい。具体的には、ポーズデータ生成装置100は、3DポーズデータV_3d(t+4)のキーポイントと、当該キーポイントに対応する3DポーズデータPoseH_3d(t+4)のキーポイントとを、行列(回転行列)、クォータニオン(quatarnion)、あるいは、オイラー角を用いて表現(特定)する。そして、ポーズデータ生成装置100は、行列(回転行列)、クォータニオン(quatarnion)、あるいは、オイラー角を用いて、3DポーズデータV_3d(t+4)のキーポイントと、当該キーポイントに対応する3DポーズデータPoseH_3d(t+4)のキーポイントとの間のズレ量を示すデータ(例えば、スカラー、ベクトル、テンソル)を取得し、当該ズレ量を示すデータ(例えば、スカラー、ベクトル、テンソル)により、(1)フレーム画像データD_img(t+4)から取得した3DポーズデータV_3d(t+4)、および、(2)補間処理により取得した3DポーズデータPoseH_3d(t+4)の精度の高い方を選択(出力)するようにしてもよい。
【0141】
≪時間ステップt+5以降の処理≫
時間ステップt+5以降、ポーズデータ生成システム1000は、上記と同様の処理を繰り返し実行する。すなわち、フレーム画像が取得される時間ステップでは、時間ステップt+4の処理と同様の処理が実行され、フレーム画像が取得されない時間ステップでは、時間ステップt+1~t+3の処理と同様の処理が実行される。
【0142】
以上のように、ポーズデータ生成システム1000では、(1)撮像装置Cam1によりフレーム画像が取得される時間ステップでは、撮像したフレーム画像に基づいて、3Dポーズデータを取得することができ、(2)フレーム画像が取得される時間ステップ間の期間(フレーム画像が取得されない期間)では、IMUデータを用いて前時間ステップから現時間ステップの3Dポーズデータを予測して補間する処理(上記補間処理)により、3Dポーズデータを取得することができる。したがって、ポーズデータ生成システム1000では、撮像装置Cam1によるフレーム画像の取得レート(フレームレート)が低い場合であっても、IMUデータを用いた上記補間処理により、高フレームレートの3Dポーズデータを取得することができる。つまり、ポーズデータ生成システム1000では、高フレームレートの撮像装置を用いる必要がないので、低コストで実現でき、かつ、IMUデータを用いた補間処理により3Dポーズデータを取得できるので、高精度なポーズデータ(3Dポーズデータ)を取得することができる。
【0143】
≪第1変形例≫
次に、第1実施形態の第1変形例について、説明する。なお、上記実施形態と同様の部分については、同一符号を付し、詳細な説明を省略する。
【0144】
本変形例のポーズデータ生成システムは、第1実施形態のポーズデータ生成システム1000と同様の構成を有しており、補間部3での処理が、第1実施形態とは異なる。
【0145】
本変形例の補間部3では、時系列フィルタ(例えば、カルマンフィルタ、拡張カルマンフィルタ(EKF:Extended Kalman Filter)、アンセンテッドカルマンフィルタ(UKF:Unscented Kalman Filter)、パーティクルフィルタ等)を用いた処理が実行される。
【0146】
時々刻々変化する観測対象の内部状態を推定する技術として、時系列フィルタを用いた技術がある。時系列フィルタとは、時間ステップt(時刻t)における対象の内部状態を状態ベクトルxとし、時間ステップt(時刻t)において観測された特徴を観測ベクトルyとしたとき、観測された観測ベクトルyから、直接観測できない対象の内部状態xを推定する手法である。
【0147】
観測対象の内部状態のシステムモデルおよび対象を観測した時の観測モデル(状態空間モデル)は、以下のように表すことができる。
システムモデル(状態方程式):
=f(xt-1,u,w
f:時間ステップt-1と時間ステップtとの状態変化を表す状態遷移関数
:時間ステップtの制御入力
:時間ステップtのシステムノイズ
観測モデル(観測方程式):
=h(x,v
h:状態xのときに得られる観測ベクトルを表す関数
:時間ステップtの観測ノイズ
運動方程式等で人の動作(または人の特定部位の移動)が表現(予測)できる場合、当該運動方程式等により予測したデータと、実際の観測データ(IMUデータから特定されるデータ)とを用いて、時系列フィルタを適用することができる。
【0148】
本変形例のポーズデータ生成システムでは、補間部3において、(1)前時間ステップ(時間ステップt-1)で取得された3Dポーズデータ(1時間ステップ前の観測対象の内部状態を示すデータ(上記の内部状態xt-1に相当))と、(2)処理対象としている被写体人物Sub1の動作(または、被写体人物Sub1の特定部位の移動)についての物理現象を表現する方程式(例えば、運動方程式等)から予測した3Dポーズデータ(観測データ(上記の観測ベクトルzに相当))とを用いて時系列フィルタによる処理を行うことで、現時間ステップ(時間ステップt)での観測対象の内部状態(被写体人物Sub1のポーズデータ)を取得(推定)する。
【0149】
例えば、非線形カルマンフィルタを用いる場合、補間部3は、以下の処理により、現時間ステップ(時間ステップt)での観測対象の内部状態(被写体人物Sub1のポーズデータ)を取得(推定)する。
(A)予測
t|t-1=f(xt-1|t-1),u,0)
t|t-1=Ft-1|t-1 +G
t|t-1:時間ステップt-1における時間ステップtの状態推定値(状態推定ベクトル)
t-1|t-1:時間ステップt-1における更新処理後の状態推定値(状態推定ベクトル)
:システムの時間遷移に関する線形モデル
t-1|t-1:誤差の共分散行列
:Fの転置行列
:時間遷移に関するノイズモデルの行列
:時間遷移に関するノイズモデルの共分散行列
:Gの転置行列
(B)更新
=z-h(xt|t-1,0)
=Ht|t-1 +R
=Pt|t-1 +S-1
t|t=xt|t-1+K
t|t=(I-K)Pt|t-1
:時間ステップtの観測残差
:時間ステップtの観測残差の共分散
:時間ステップtの最適カルマンゲイン
t|t:時間ステップtにおいて更新された状態の推定値(推定ベクトル)
t|t:時間ステップtにおいて更新された誤差の共分散
:観測モデルに関する線形モデル
:時間ステップtの観測ノイズの共分散
なお、F、および、Hは、非線形カルマンフィルタとして拡張カルマンフィルタを用いる場合、下記の数式により示されるものとなる。
【数3】

【数4】

すなわち、前述した状態空間モデルの関数f、関数hは非線形関数である場合、テイラー展開より、2次微分以降の項目を省略して、非線形である関数f、hのそれぞれ1次微分の項までで近似し、線形化することで、カルマンフィルタのアルゴリズムが適用可能となる。
【0150】
なお、上記では、本変形例のポーズデータ生成システムにおいて、時系列フィルタとして、非線形カルマンフィルタとして拡張カルマンフィルタを適用して3Dポーズデータの補間処理を実現する場合について、説明したが、これに限定されることなく、例えば、時系列フィルタとして、カルマンフィルタ、アンセンテッドカルマンフィルタ(UKF:Unscented Kalman Filter)、パーティクルフィルタ等を用いて、3Dポーズデータの補間処理を実現するようにしてもよい。
【0151】
以上のように、本変形例のポーズデータ生成システムでは、運動方程式等で人の動作(または人の特定部位の移動)が表現(予測)できる場合、当該運動方程式等により予測したデータと、実際の観測データ(IMUデータから特定されるデータ)とを用いて、時系列フィルタを適用して、3Dポーズデータの補間処理を実現できる。そして、本変形例のポーズデータ生成システムでは、第1実施形態のポーズデータ生成システム1000に比べて、より滑らかな動きを再現できる3Dポーズデータ(補間処理後の3Dポーズデータ)を取得できる。
【0152】
[第2実施形態]
次に、第2実施形態について説明する。なお、上記実施形態(変形例を含む)と同様の部分については、同一符号を付し、詳細な説明を省略する。
【0153】
<2.1:ポーズデータ生成システムの構成>
図15は、第2実施形態に係るポーズデータ生成システム2000の概略構成図である。
【0154】
図16は、第2実施形態に係るポーズデータ取得部1Aの概略構成図である。
【0155】
第2実施形態のポーズデータ生成システム2000は、図15に示すように、第1実施形態のポーズデータ生成システム1000において、ポーズデータ生成装置100をポーズデータ生成装置200に置換した構成を有している。そして、ポーズデータ生成装置200は、ポーズデータ生成装置100において、画像ベースポーズデータ取得部1を画像ベースポーズデータ取得部1Aに置換し、補間部3を補間部3Aに置換し、IMUデータ変換部4を追加した構成を有している。
【0156】
そして、第1実施形態のポーズデータ生成システム1000は、3Dポーズデータを取得するものであったが、第2実施形態のポーズデータ生成システム2000は、2Dポーズデータを取得するものである。
【0157】
画像ベースポーズデータ取得部1Aは、例えば、図16に示すように、2Dキーポイントデータ取得部11と、2Dポーズデータ取得部12Aとを備える。
【0158】
2Dキーポイントデータ取得部11は、第1実施形態の2Dキーポイントデータ取得部11と同様の構成、機能を有している。
【0159】
2Dポーズデータ取得部12Aは、2Dキーポイントデータ取得部11から出力されるキーポイントデータD_2d_key_pointsを入力する。2Dポーズデータ取得部12Aは、画像ベースポーズデータ取得部1Aに入力される撮像空間の情報Info_spaceと、撮像装置Cam1の撮影パラメータの情報Info_cam_prmとに基づいて、キーポイントデータD_2d_key_pointsから、2次元のポーズデータを取得する。具体的には、2Dポーズデータ取得部12Aは、キーポイントデータD_2d_key_points(2次元座標データ)が示すフレーム画像(2次元画像)上の点(複数の点)の2次元座標データを含むデータを、2次元のポーズデータD1_pose_2Dとして取得する。そして、2Dポーズデータ取得部12Aは、取得した2次元のポーズデータD1_pose_2Dを補間部3Aに出力する。
【0160】
IMUデータ変換部4は、IMUデータ取得部2から出力されるデータD1_imuを入力する。また、IMUデータ変換部4は、撮像装置Cam1が撮像する3次元空間(撮像空間)に関する情報Info_spaceと、撮像装置Cam1の撮影パラメータInfo_cam_prmとを入力する。IMUデータ変換部4は、IMUデータ取得部2から出力される3次元のデータD1_imu(例えば、各慣性計測装置IMUにより取得された3次元空間SP内における角速度ベクトル(3次元データ))を、2次元のデータに変換する。具体的には、IMUデータ変換部4は、撮像装置Cam1が撮像する3次元空間(撮像空間)に関する情報Info_spaceと、撮像装置Cam1の撮影パラメータInfo_cam_prmとに基づいて、3次元空間(撮像空間)の3次元座標データ(3次元のデータD1_imu)を、撮像装置Cam1により撮像したときに得られるフレーム画像(2次元画像)上の2次元座標データに変換する。そして、IMUデータ変換部4は、3次元のデータD1_imuに対して、上記の3次元/2次元座標変換により取得したデータを、データD2_imuとして、補間部3Aに出力する。
【0161】
補間部3Aは、画像ベースポーズデータ取得部1Aから出力される2次元のデータD1_pose_2Dと、IMUデータ変換部4から出力される2次元のデータD2_imuとを入力する。また、補間部3Aは、撮像装置Cam1が撮像する3次元空間(撮像空間)に関する情報Info_spaceと、撮像装置Cam1の撮影パラメータInfo_cam_prmとを入力する。
(1)補間部3Aは、フレーム画像データが取得された時間ステップにおいて画像ベースポーズデータ取得部1Aから最初にポーズデータD1_pose_2Dが入力された場合、当該入力されたポーズデータD1_pose_2Dを出力データDout(2次元ポーズデータDout)として出力するとともに、当該出力データDoutを記憶保持する。
(2)補間部3Aは、フレーム画像データが取得されていない時間ステップにおいて、撮像空間に関する情報Info_space、および、撮像装置Cam1の撮影パラメータInfo_cam_prmに基づいて、補間部3Aが記憶保持している3次元ポーズデータDoutと、現時間ステップにおいて取得されたデータD2_imuとを用いて、補間処理を実行することで、補間処理後のポーズデータを取得する。そして、補間部3Aは、取得した補間処理後のポーズデータを出力データDoutとして出力するとともに、当該出力データDoutを記憶保持する。
(3)補間部3Aは、フレーム画像データが取得された時間ステップにおいて、撮像空間に関する情報Info_space、および、撮像装置Cam1の撮影パラメータInfo_cam_prmに基づいて、補間部3Aが記憶保持している3次元ポーズデータDoutと、現時間ステップにおいて取得されたデータD2_imuとを用いて、補間処理を実行することで、補間処理後のポーズデータを取得する。また、補間部3Aは、入力されたポーズデータD1_pose_2D(フレーム画像データから取得したポーズデータ)と、上記補間処理後のポーズデータとを比較し、当該比較の結果に従って、入力されたポーズデータD1_pose_2D(フレーム画像データから取得したポーズデータ)、および、上記補間処理後のポーズデータのいずれかを選択する。そして、補間部3Aは、選択したポーズデータを出力データDoutとして出力するとともに、当該出力データDoutを記憶保持する。
【0162】
なお、IMUデータ取得処理部は、IMUデータ取得部2、および、IMUデータ変換部4に対応する。
【0163】
<2.2:ポーズデータ生成システムの動作>
以上のように構成されたポーズデータ生成システム2000の動作について、以下、説明する。
【0164】
以下では、説明便宜のために、第1実施形態と同様に、被写体人物Sub1が図4に示す動作を行った場合におけるポーズデータ生成システム2000の動作について説明する。
【0165】
また、説明便宜のため、第1実施形態と同様に、被写体人物Sub1に3つの慣性計測装置IMU~IMUが取り付けられているものとし、慣性計測装置IMUは、被写体人物Sub1の頭部に取り付けられており、慣性計測装置IMUは、被写体人物Sub1の右手首部分に取り付けられており、慣性計測装置IMUは、被写体人物Sub1の左手首部分に取り付けられているものとする。
【0166】
図17図20は、ポーズデータ生成システム2000で実行されるポーズデータ生成処理(補間処理を含む)を説明するための図である。
【0167】
図21図23は、ポーズデータ生成システム2000で実行される判定選択処理を説明するための図である。
【0168】
図24図25は、ポーズデータ生成システム2000で実行される処理のシーケンス図である。図24図25において、「PoseData1」で示した欄は、フレーム画像データから取得したポーズデータを示しており、「PoseData2」で示した欄は、補間処理により取得したポーズデータを示している。
【0169】
以下では、図面を参照しながら、ポーズデータ生成システム2000の動作について、説明する。
【0170】
なお、撮像空間は、第1実施形態と同様、図4に示すように、3次元空間SP1に設定されており、図4に示すように、3次元座標系(原点o、x軸、y軸、z軸)が設定されているものとし、被写体人物Sub1を追跡対象とする。
【0171】
また、一例として、ポーズデータ生成システム2000において、4時間ステップ間隔で、フレーム画像が取得され、フレーム画像が取得されていない期間において、3つのポーズデータを補間処理により生成する場合について、以下説明する。
【0172】
≪時間ステップtの処理≫
時間ステップtにおいて、撮像装置Cam1により、被写体人物Sub1を含む3次元空間(撮像空間SP1)を撮像することで、フレーム画像データD_img(t)を取得する。フレーム画像データD_img(t)により形成される画像(フレーム画像)は、図16の上左図に示す画像Img1である。
【0173】
画像ベースポーズデータ取得部1Aは、撮像装置Cam1から出力されるフレーム画像データD_img(t)を入力し、当該フレーム画像データD_img(t)から、2次元ポーズデータを取得する処理を実行する。具体的には、以下の処理が実行される。
【0174】
画像ベースポーズデータ取得部1Aの2Dキーポイントデータ取得部11は、(1)フレーム画像データD_img(t)により形成されるフレーム画像(画像Img1)上において、被写体人物Sub1に相当する画像領域を抽出し、(2)画像ベースポーズデータ取得部1Aに入力される撮像空間の情報Info_spaceと、撮像装置Cam1の撮影パラメータの情報Info_cam_prmとに基づいて、被写体人物Sub1の所定の部位の上記フレーム画像上の位置(2次元画像上の位置)を特定する。なお、ここでは、「所定の部位」は、(1)人の頭部および脊椎に含まれる所定の位置(図3のキーポイントkp~kpに対応)、(2)人の左右の腕に含まれる所定の位置(図3のキーポイントkp~kp、kp14~kp16に対応)、(3)人の左右の脚部に含まれる所定の位置(図3のキーポイントkp~kp10、kp11~kp13に対応)であるものとする。そして、キーポイントデータD_2d_key_pointsにより特定されるキーポイントは、図3に示すように、16個の点kp~kp16に対応するものとする。
【0175】
なお、ポーズデータ生成システム2000では、追跡対象を人としており(標準的な人間の大きさが既知であり)、3次元空間内の撮像装置Cam1の設置位置、カメラ光軸の向き、焦点距離、画角が既知であるので、撮像装置Cam1により取得されたフレーム画像から、被写体人物Sub1に相当する画像領域を抽出することができ、かつ、被写体人物Sub1の特定の部位のフレーム画像上の位置を特定することができる。
【0176】
そして、2Dキーポイントデータ取得部11は、上記処理により取得したキーポイントデータをデータD_2d_key_pointsとして2Dポーズデータ取得部12Aに出力する。
【0177】
2Dポーズデータ取得部12Aは、2Dキーポイントデータ取得部11から出力されるキーポイントデータD_2d_key_pointsを入力する。2Dポーズデータ取得部12Aは、画像ベースポーズデータ取得部1Aに入力される撮像空間の情報Info_spaceと、撮像装置Cam1の撮影パラメータの情報Info_cam_prmとに基づいて、キーポイントデータD_2d_key_pointsから、2次元のポーズデータを取得する。具体的には、2Dポーズデータ取得部12Aは、キーポイントデータD_2d_key_points(2次元座標データ)が示すフレーム画像(2次元画像)上の点(複数の点)の2次元座標データを含むデータを、2次元のポーズデータD1_pose_2Dとして取得する。そして、2Dポーズデータ取得部12Aは、取得した2次元のポーズデータD1_pose_2Dを補間部3Aに出力する。
【0178】
なお、ポーズデータ生成システム2000では、追跡対象を人としており(標準的な人間の大きさが既知であり)、3次元空間内の撮像装置Cam1の設置位置、カメラ光軸の向き、焦点距離、画角が既知であり、さらに、撮像空間とした3次元空間SP1を特定する情報が既知であるので、被写体人物Sub1の特定の部位のフレーム画像上の位置から、当該部位の3次元空間SP1(撮像空間SP1)内の座標位置を推定することができる。つまり、ポーズデータ生成システム2000では、キーポイントデータD_2d_key_points(2次元画像上の各キーポイントの2次元座標データ)から、各キーポイントの3次元空間SP1内の座標情報(3次元座標データ)を推定することができ、さらに、各キーポイントのフレーム画像上の座標情報(2次元座標データ)を推定することができる。
【0179】
なお、キーポイントデータD_2d_key_points(2次元画像上の各キーポイントの2次元座標データ)から、各キーポイントの2次元座標情報(フレーム画像上の2次元座標データ)を推定する処理(推定処理)は、撮像空間SP1の情報と、撮像装置Cam1の撮影パラメータとに基づいて、算出するものであってもよく、また、ニューラルネットワークによる処理を利用するものであってもよい。上記推定処理としてニューラルネットワークによる処理を利用する場合、例えば、以下のように処理を行う。つまり、人を撮影した2次元画像(フレーム画像)から取得した当該人のキーポイントデータを入力とし、当該キーポイントデータの各キーポイントの2次元画像(撮像したフレーム画像)上の座標データ(2次元座標データ)を出力データの教師データとして、ニューラルネットワークモデルの学習処理を行う。そして、当該学習処理により、人を撮影した2次元画像(フレーム画像)から取得した当該人のキーポイントデータを入力とし、当該キーポイントデータの各キーポイントの2次元座標データ(フレーム画像上の2次元座標データ)の予測データを出力する学習済みモデルを取得する。そして、当該学習済みモデルを用いて処理を行うことで、キーポイントデータD_2d_key_points(2次元画像上の各キーポイントの2次元座標データ)から、各キーポイントの2次元座標情報(2次元座標データ)を推定する処理(推定処理)を実現できる。
【0180】
2Dポーズデータ取得部12Aは、上記処理により取得した各キーポイントの2次元画像(フレーム画像)上の座標データ(2次元座標データ)を含むデータを、データD1_pose_2D(時間ステップtに取得されるデータD1_pose_2DをD1_pose_2D(t)と表記する)として、補間部3Aに出力する。
【0181】
なお、図16の上右図に示すように、データD1_pose_2D(2Dポーズデータ)を、各キーポイントの2次元画像上の座標データ(2次元座標データ)で特定される点を線で接続した図により示す。また、時間ステップtにおいて、画像ベースポーズデータ取得部1Aにより取得された2DポーズデータD1_pose_2DをV_2d(t)と表記する。
【0182】
時間ステップtにおいて、補間部3Aは、画像ベースポーズデータ取得部1Aから出力されるデータD1_pose_2D(=V_2d(t))を入力し、当該入力データを、そのまま出力データDoutとして出力する(図17の時間ステップtの図、図24の時間ステップtの処理を参照)。また、補間部3Aは、出力データDoutを時間ステップtの2DポーズデータPose_2d(t)(=V_2d(t))として、記憶保持する。なお、時間ステップtにおいて、補間部3Aから出力されるデータをデータPose_2d(t)と表記する。
【0183】
また、補間部3Aは、2DポーズデータPose_2d(t)を用いて、時間ステップtにおける慣性計測装置IMU(k:自然数、1≦k≦3)の3次元空間SP1内の位置(座標位置)を特定(推定)する。慣性計測装置IMUの取り付け位置は既知であり、フレーム画像を取得したときの撮像装置Cam1の撮影パラメータは既知であるので、慣性計測装置IMUの取り付け位置に相当する3次元空間SP1内の位置を、2DポーズデータPose_2d(t)に基づいて、特定(推定)し、さらに、慣性計測装置IMUの取り付け位置に相当する2次元画像上の位置を特定(推定)する。例えば、図5の右図に示すように、慣性計測装置IMUは、被写体人物Sub1の左リスト部分に取り付けられているので、2DポーズデータPose_2d(t)を参照して、被写体人物Sub1の左リスト部分に対応する位置(3次元空間SP1内の座標位置)(図5の右図のP (t)で示した位置)を特定でき、さらに、2次元画像上の位置を特定(推定)できる。したがって、補間部3Aは、上記のようにして特定(推定)した慣性計測装置IMUの2次元座標データを、データP(t)として記憶保持する。なお、本実施形態において、P (t)は、
(t)=[x (t),y (t)
(t):時間ステップtにおける慣性計測装置IMUの2次元画像上のx座標
(t):時間ステップtにおける慣性計測装置IMUの2次元画像上のy座標
(t):P (t)転置行列
k:1≦k≦3を満たす自然数
である。
【0184】
≪時間ステップt+1の処理≫
時間ステップt+1において、慣性計測装置IMU~IMUは、それぞれ、IMUデータD0(t+1)~D0(t+1)を取得し、取得したIMUデータをポーズデータ生成装置200のIMUデータ取得部2に送信する。なお、慣性計測装置IMU~IMUは、角速度のデータを取得するものとして、以下説明する。また、慣性計測装置IMUが時間ステップtにおいて取得するIMUデータをD0(t)と表記する。
【0185】
IMUデータ取得部2は、慣性計測装置IMU~IMUからそれぞれ出力されるデータD0(t+1)~D0(t+1)を入力する。IMUデータ取得部2は、入力されたD0~D0を統合したデータをデータD1_imu(t+1)として取得し、取得したデータD1_imu(t+1)をIMUデータ変換部4に出力する。
【0186】
IMUデータ変換部4は、IMUデータ取得部2から出力されるデータD1_imu(t+1)を入力する。また、IMUデータ変換部4は、撮像装置Cam1が撮像する3次元空間(撮像空間)に関する情報Info_spaceと、撮像装置Cam1の撮影パラメータInfo_cam_prmとを入力する。IMUデータ変換部4は、IMUデータ取得部2から出力される3次元のデータD1_imu(t+1)(例えば、各慣性計測装置IMUにより取得された3次元空間SP内における角速度ベクトル(3次元データ))を、2次元のデータに変換する。具体的には、IMUデータ変換部4は、撮像装置Cam1が撮像する3次元空間(撮像空間)に関する情報Info_spaceと、撮像装置Cam1の撮影パラメータInfo_cam_prmとに基づいて、3次元空間(撮像空間)の3次元座標データ(3次元のデータD1_imu(t+1))を、撮像装置Cam1により撮像したときに得られるフレーム画像(2次元画像)上の2次元座標データに変換する。そして、IMUデータ変換部4は、3次元のデータD1_imuに対して、上記の3次元/2次元座標変換により取得したデータを、データD2_imu(t+1)として、補間部3Aに出力する。
【0187】
補間部3Aは、(1)時間ステップt+1において取得したIMUデータD0(t+1)~D0(t+1)から3次元座標-2次元座標変換した後のデータ(データD2_imu(t+1))と、(2)記憶保持している、時間ステップtの慣性計測装置IMU~IMUの2次元座標位置データP (t)~P (t)とを用いて、時間ステップt+1の慣性計測装置IMU~IMUの2次元座標位置データP (t+1)~P (t+1)を取得する。具体的には、補間部3Aは、下記数式に相当する処理を実行することで、時間ステップt+1の慣性計測装置IMU~IMUの2次元座標位置データP (t+1)~P (t+1)を取得する。
【数5】

(k:自然数、1≦k≦3)
Δ (t+1)=O (t+1)×Δt
(t+1)=[ωx (t+1),ωy (t+1)
Δt:時間ステップtと時間ステップt+1と時間間隔
(t+1):O (t+1)の転置行列
なお、ωx (t+1)は、時間ステップt+1において慣性計測装置IMUで取得された角速度の3次元空間座標のx成分データを3次元座標-2次元座標変換した後のデータ、すなわち、2次元画像上のx成分データであり、ωy (t+1)は、時間ステップt+1において慣性計測装置IMUで取得された角速度の3次元空間座標のy成分データを3次元座標-2次元座標変換した後のデータ、すなわち、2次元画像上のy成分データである。
【0188】
補間部3Aは、時間ステップt+1において慣性計測装置IMUで取得された角速度の2次元画像上の各成分に、時間ステップtから時間ステップt+1までの経過時間Δtを乗算することで、各成分(x、y成分)の変位量を取得(推定)する。すなわち、補間部3は、
Δx (t+1)=ωx (t+1)×Δt
Δy (t+1)=ωy (t+1)×Δt
に相当する処理により、慣性計測装置IMUの時間ステップtから時間ステップt+1までの変位量(移動量)を取得(推定)する。
【0189】
そして、補間部3Aは、(1)時間ステップtの3DポーズデータPose_2d(t)(=V_2d(t))と、(2)上記により取得した時間ステップt+1の慣性計測装置IMU~IMUの2次元座標位置データP (t+1)~P (t+1)とを用いて、補間処理を実行することで、時間ステップt+1の3DポーズデータPose_2d(t+1)を取得する。
【0190】
具体的には、補間部3は、
Pose_2d(t+1)=f2(P (t+1),P (t+1),P (t+1),Pose_2d(t)
に相当する処理を実行することで、時間ステップt+1の2DポーズデータPose_2d(t+1)を取得する。なお、関数f2は、P (t+1)~P (t+1)、および、Pose_2d(t)から、時間ステップt+1の3DポーズデータPose_2d(t+1)を取得する関数である。
【0191】
具体的には、補間部3Aは、慣性計測装置IMUの位置が、時間ステップt+1において、上記推定位置であると仮定したときに、人間の関節の自由度、各部位の移動可能範囲を考慮して、各キーポイントがどのように移動するかを予測する。例えば、図17の右図(時間ステップt+1の図の拡大図)に示すように、慣性計測装置IMUの位置が、P (t)からP (t+1)に移動したと推定されているので(P (t)からP (t+1)へのベクトル(2次元画像上のベクトル)をベクトルvec2D_Pとする)、補間部3Aは、ベクトルvec2D_Pを考慮して、キーポイントkp15(Pose_2d(t)から特定されるキーポイントデータ)の時間ステップtから時間ステップt+1の移動ベクトルをベクトルvec2D_kp15図17のベクトルvec2D_kp15)と推定し、キーポイントkp15の時間ステップt+1の位置を図17に示す位置kp’15と推定する。同様に、補間部3Aは、ベクトルvec2D_Pを考慮して、キーポイントkp16(Pose_2d(t)から特定されるキーポイントデータ)の時間ステップtから時間ステップt+1の移動ベクトルをベクトルvec2D_kp16図17のベクトルvec2D_kp16)と推定し、キーポイントkp16の時間ステップt+1の位置を図17に示す位置kp’16と推定する。
【0192】
なお、慣性計測装置IMU、IMUの位置は、変化していないので、キーポイントkp~kp14(Pose_2d(t)から特定されるキーポイントデータ)の位置は、時間ステップtから時間ステップt+1の期間において変化していないと推定する。
【0193】
そして、補間部3Aは、上記のように処理(推定)(関数f2の処理に相当)すること取得したキーポイントの2次元座標データに基づいて、時間ステップt+1の2DポーズデータPose_2d(t+1)図17に示す2DポーズデータPose_2d(t+1))を取得する。
【0194】
そして、補間部3Aは、上記処理により取得した2DポーズデータPose_2d(t+1)を出力する(図24のシーケンス図の時間ステップt+1の処理)とともに、記憶保持する。
【0195】
また、補間部3Aは、時間ステップt+1の慣性計測装置IMU~IMUの2次元座標位置データP (t+1)~P (t+1)を記憶保持する。
【0196】
≪時間ステップt+2の処理≫
時間ステップt+2において、慣性計測装置IMU~IMUは、それぞれ、IMUデータD0(t+2)~D0(t+2)を取得し、取得したIMUデータをポーズデータ生成装置200のIMUデータ取得部2に送信する。
【0197】
IMUデータ取得部2は、慣性計測装置IMU~IMUからそれぞれ出力されるデータD0(t+2)~D0(t+2)を入力する。IMUデータ取得部2は、入力されたD0~D0を統合したデータをデータD1_imu(t+2)として取得し、取得したデータD1_imu(t+2)をIMUデータ変換部4に出力する。
【0198】
IMUデータ変換部4は、IMUデータ取得部2から出力されるデータD1_imu(t+2)を入力する。また、IMUデータ変換部4は、撮像装置Cam1が撮像する3次元空間(撮像空間)に関する情報Info_spaceと、撮像装置Cam1の撮影パラメータInfo_cam_prmとを入力する。IMUデータ変換部4は、IMUデータ取得部2から出力される3次元のデータD1_imu(t+2)(例えば、各慣性計測装置IMUにより取得された3次元空間SP内における角速度ベクトル(3次元データ))を、2次元のデータに変換する。具体的には、IMUデータ変換部4は、撮像装置Cam1が撮像する3次元空間(撮像空間)に関する情報Info_spaceと、撮像装置Cam1の撮影パラメータInfo_cam_prmとに基づいて、3次元空間(撮像空間)の3次元座標データ(3次元のデータD1_imu(t+2))を、撮像装置Cam1により撮像したときに得られるフレーム画像(2次元画像)上の2次元座標データに変換する。そして、IMUデータ変換部4は、3次元のデータD1_imuに対して、上記の3次元/2次元座標変換により取得したデータを、データD2_imu(t+2)として、補間部3Aに出力する。
【0199】
補間部3Aは、(1)時間ステップt+2において取得したIMUデータD0(t+2)~D0(t+2)から3次元座標-2次元座標変換した後のデータ(データD2_imu(t+2))と、(2)記憶保持している、時間ステップt+1の慣性計測装置IMU~IMUの3次元座標位置データP (t+1)~P (t+1)とを用いて、時間ステップt+2の慣性計測装置IMU~IMUの2次元座標位置データP (t+2)~P (t+2)を取得する。
【0200】
具体的には、補間部3Aは、時間ステップt+1のときの処理と同様の処理により、時間ステップt+2の慣性計測装置IMU~IMUの2次元座標位置データP (t+2)~P (t+2)を取得する。
【0201】
そして、補間部3Aは、時間ステップt+1のときと同様に、
Pose_2d(t+2)=f2(P (t+2),P (t+2),P (t+2),Pose_2d(t+1)
に相当する処理を実行することで、時間ステップt+2の2DポーズデータPose_2d(t+2)を取得する。これにより、補間部3Aは、図18に示すような時間ステップt+2の2DポーズデータPose_2d(t+2)を取得する。
【0202】
そして、補間部3Aは、上記処理により取得した2DポーズデータPose_2d(t+2)を出力する(図24のシーケンス図の時間ステップt+2の処理)とともに、記憶保持する。
【0203】
また、補間部3Aは、時間ステップt+2の慣性計測装置IMU~IMUの2次元座標位置データP (t+2)~P (t+2)を記憶保持する。
【0204】
≪時間ステップt+3の処理≫
時間ステップt+3において、慣性計測装置IMU~IMUは、それぞれ、IMUデータD0(t+3)~D0(t+3)を取得し、取得したIMUデータをポーズデータ生成装置200のIMUデータ取得部2に送信する。
【0205】
IMUデータ取得部2は、慣性計測装置IMU~IMUからそれぞれ出力されるデータD0(t+3)~D0(t+3)を入力する。IMUデータ取得部2は、入力されたD0~D0を統合したデータをデータD1_imu(t+3)として取得し、取得したデータD1_imu(t+3)をIMUデータ変換部4に出力する。
【0206】
IMUデータ変換部4は、IMUデータ取得部2から出力されるデータD1_imu(t+3)を入力する。また、IMUデータ変換部4は、撮像装置Cam1が撮像する3次元空間(撮像空間)に関する情報Info_spaceと、撮像装置Cam1の撮影パラメータInfo_cam_prmとを入力する。IMUデータ変換部4は、IMUデータ取得部2から出力される3次元のデータD1_imu(t+3)(例えば、各慣性計測装置IMUにより取得された3次元空間SP内における角速度ベクトル(3次元データ))を、2次元のデータに変換する。具体的には、IMUデータ変換部4は、撮像装置Cam1が撮像する3次元空間(撮像空間)に関する情報Info_spaceと、撮像装置Cam1の撮影パラメータInfo_cam_prmとに基づいて、3次元空間(撮像空間)の3次元座標データ(3次元のデータD1_imu(t+3))を、撮像装置Cam1により撮像したときに得られるフレーム画像(2次元画像)上の2次元座標データに変換する。そして、IMUデータ変換部4は、3次元のデータD1_imuに対して、上記の3次元/2次元座標変換により取得したデータを、データD2_imu(t+3)として、補間部3Aに出力する。
【0207】
補間部3Aは、(1)時間ステップt+3において取得したIMUデータD0(t+3)~D0(t+3)から3次元座標-2次元座標変換した後のデータ(データD2_imu(t+3))と、(2)記憶保持している、時間ステップt+2の慣性計測装置IMU~IMUの3次元座標位置データP (t+2)~P (t+2)とを用いて、時間ステップt+3の慣性計測装置IMU~IMUの2次元座標位置データP (t+3)~P (t+3)を取得する。
【0208】
具体的には、補間部3Aは、時間ステップt+1のときの処理と同様の処理により、時間ステップt+3の慣性計測装置IMU~IMUの2次元座標位置データP (t+3)~P (t+3)を取得する。
【0209】
そして、補間部3Aは、時間ステップt+1のときと同様に、
Pose_2d(t+3)=f2(P (t+3),P (t+3),P (t+3),Pose_2d(t+2)
に相当する処理を実行することで、時間ステップt+3の2DポーズデータPose_2d(t+3)を取得する。これにより、補間部3Aは、図19に示すような時間ステップt+3の2DポーズデータPose_2d(t+3)を取得する。
【0210】
そして、補間部3Aは、上記処理により取得した2DポーズデータPose_2d(t+3)を出力する(図24のシーケンス図の時間ステップt+3の処理)とともに、記憶保持する。
【0211】
また、補間部3Aは、時間ステップt+3の慣性計測装置IMU~IMUの2次元座標位置データP (t+3)~P (t+3)を記憶保持する。
【0212】
≪時間ステップt+4の処理≫
時間ステップt+4において、撮像装置Cam1により、被写体人物Sub1を含む3次元空間(撮像空間SP1)を撮像することで、フレーム画像データD_img(t+4)を取得する。
【0213】
画像ベースポーズデータ取得部1Aは、時間ステップtのときの処理と同様の処理を実行し、撮像装置Cam1から出力されるフレーム画像データD_img(t+4)から、2次元ポーズデータD1_pose_2D(t+4)(=V_2d(t+4))を取得する。
【0214】
補間部3Aは、時間ステップtの処理と同様に、2DポーズデータV_2d(t+4)を用いて、時間ステップtにおける慣性計測装置IMU(k:自然数、1≦k≦3)の3次元空間SP1内の位置(座標位置)を特定(推定)する。これにより、補間部3Aは、慣性計測装置IMU~IMUの2次元座標データP (t+4)~P (t+4)を取得する。
【0215】
また、補間部3Aは、時間ステップt+1と同様の補間処理を行う。つまり、補間部3Aは、以下の処理を実行する。
【0216】
時間ステップt+4において、慣性計測装置IMU~IMUは、それぞれ、IMUデータD0(t+4)~D0(t+4)を取得し、取得したIMUデータをポーズデータ生成装置200のIMUデータ取得部2に送信する。
【0217】
IMUデータ取得部2は、慣性計測装置IMU~IMUからそれぞれ出力されるデータD0(t+4)~D0(t+4)を入力する。IMUデータ取得部2は、入力されたD0~D0を統合したデータをデータD1_imu(t+4)として取得し、取得したデータD1_imu(t+4)をIMUデータ変換部4に出力する。
【0218】
IMUデータ変換部4は、IMUデータ取得部2から出力されるデータD1_imu(t+4)を入力する。また、IMUデータ変換部4は、撮像装置Cam1が撮像する3次元空間(撮像空間)に関する情報Info_spaceと、撮像装置Cam1の撮影パラメータInfo_cam_prmとを入力する。IMUデータ変換部4は、IMUデータ取得部2から出力される3次元のデータD1_imu(t+4)(例えば、各慣性計測装置IMUにより取得された3次元空間SP内における角速度ベクトル(3次元データ))を、2次元のデータに変換する。具体的には、IMUデータ変換部4は、撮像装置Cam1が撮像する3次元空間(撮像空間)に関する情報Info_spaceと、撮像装置Cam1の撮影パラメータInfo_cam_prmとに基づいて、3次元空間(撮像空間)の3次元座標データ(3次元のデータD1_imu(t+4))を、撮像装置Cam1により撮像したときに得られるフレーム画像(2次元画像)上の2次元座標データに変換する。そして、IMUデータ変換部4は、3次元のデータD1_imuに対して、上記の3次元/2次元座標変換により取得したデータを、データD2_imu(t+4)として、補間部3Aに出力する。
【0219】
補間部3Aは、(1)時間ステップt+4において取得したIMUデータD0(t+4)~D0(t+4)から3次元座標-2次元座標変換した後のデータ(データD2_imu(t+4))と、(2)記憶保持している、時間ステップt+3の慣性計測装置IMU~IMUの3次元座標位置データP (t+3)~P (t+3)とを用いて、時間ステップt+4の慣性計測装置IMU~IMUの2次元座標位置データP (t+4)~P (t+4)を取得する。
【0220】
具体的には、補間部3Aは、時間ステップt+1のときの処理と同様の処理により、時間ステップt+4の慣性計測装置IMU~IMUの2次元座標位置データP (t+4)~P (t+4)を取得する。
【0221】
そして、補間部3Aは、時間ステップt+1のときと同様の処理により、2Dポーズデータ(補間処理による2Dポーズデータ)を取得する。なお、時間ステップt+4において、補間部3Aが補間処理による取得する2Dポーズデータを2DポーズデータPose_2dH(t+4)と表記する。つまり、補間部3Aは、
PoseH_2d(t+4)=f2(P (t+4),P (t+4),P (t+4),Pose_2d(t+3)
に相当する処理を実行することで、時間ステップt+4の補間処理による2DポーズデータPoseH_2d(t+4)を取得する。
【0222】
そして、補間部3Aは、フレーム画像データD_img(t+4)から取得した2DポーズデータV_2d(t+4)と、補間処理により取得した2DポーズデータPoseH_2d(t+4)とに対して、判定選択処理を行う(図25のシーケンス図の時間ステップt+4の処理)。
【0223】
具体的には、2DポーズデータV_2d(t+4)と、2DポーズデータPoseH_2d(t+4)とを比較し、両者の差が所定の範囲内であれば、補間処理の予測精度が高いと判断し、補間処理により取得した2DポーズデータPoseH_2d(t+4)を時間ステップt+4の2DポーズデータPose_2d(t+4)として出力し、一方、両者の差が所定の範囲から外れている場合、補間処理の予測精度が低いと判断し、フレーム画像データD_img(t+4)から取得した2DポーズデータV_2d(t+4)を時間ステップt+4の2DポーズデータPose_2d(t+4)として出力する。
【0224】
図21に、2DポーズデータV_2d(t+4)と、2DポーズデータPoseH_2d(t+4)との差が小さい場合を示す。また、図22に、2DポーズデータV_2d(t+4)と、2DポーズデータPoseH_2d(t+4)との差が大きい場合を示す。
【0225】
図21の場合、補間部3Aは、2DポーズデータV_2d(t+4)と、2DポーズデータPoseH_2d(t+4)とにおいて、対応するキーポイント間のベクトルのノルム(あるいは、ユークリッド距離)の総和の合計が所定の閾値よりも大きいか否かについての比較判定処理を行う。対応するキーポイント間のベクトルは、例えば、図23に示すように、設定されるものとする。
【0226】
すなわち、vec(a,b)を、2次元画像上の点aから点bへのベクトルとすると、対応するキーポイント間のベクトルは、以下の15個のベクトルv~v15である。
=vec(kp,kp
=vec(kp,kp
=vec(kp,kp
=vec(kp,kp
=vec(kp,kp
=vec(kp,kp
=vec(kp,kp14
=vec(kp14,kp15
=vec(kp15,kp16
10=vec(kp,kp
11=vec(kp,kp
12=vec(kp,kp10
13=vec(kp,kp11
14=vec(kp11,kp12
15=vec(kp12,kp13
なお、2DポーズデータPoseH_2d(t+4)に対応するキーポイント間のベクトルをベクトルv~v15とし、2DポーズデータV_3d(t+4)に対応するキーポイント間のベクトルをベクトルv’~v’15とする。
【0227】
そして、補間部3Aは、2DポーズデータV_2d(t+4)と、2DポーズデータPoseH_2d(t+4)とにおいて、対応するキーポイント間のベクトルの差ベクトルのノルム(あるいは、ユークリッド距離)の総和の合計Ev(評価値Ev)を下記数式に相当する処理を実行することで取得する。
【数6】

M:キーポイント間のベクトルの数
そして、補間部3Aは、上記により取得した評価値Evを所定の閾値Th2と比較する。なお、2DポーズデータPoseH_2d(t+4)と、2DポーズデータV_2d(t+4)とに対する評価値EvをEv(PoseH_2d(t+4),V_2d(t+4))と標記する。
(1)Ev(PoseH_2d(t+4),V_2d(t+4))>Th2である場合、補間部3Aは、ポーズデータ生成装置200で実行されている補間処理の予測精度が低いと判断し、フレーム画像データD_img(t+4)から取得した2DポーズデータV_2d(t+4)を時間ステップt+4の2DポーズデータPose_2d(t+4)として出力する(例えば、図22の場合)。
(2)Ev(PoseH_2d(t+4),V_2d(t+4))≦Th2である場合、補間部3Aは、ポーズデータ生成装置200で実行されている補間処理の予測精度が高いと判断し、補間処理により取得した2DポーズデータPoseH_2d(t+4)を時間ステップt+4の2DポーズデータPose_2d(t+4)として出力する(例えば、図21の場合)。
【0228】
以上のように処理することで、ポーズデータ生成装置200では、フレーム画像が取得される時間ステップt+4において、(1)フレーム画像データD_img(t+4)から取得した2DポーズデータV_2d(t+4)、および、(2)補間処理により取得した2DポーズデータPoseH_2d(t+4)の精度の高い方の2Dポーズデータを出力することができる。つまり、ポーズデータ生成装置200は、フレーム画像が取得される時間ステップt+4において、当該時間ステップまでに実行された補間処理の精度を検証することができ、補間処理の精度が悪い場合、フレーム画像データD_img(t+4)から取得した2DポーズデータV_2d(t+4)を出力する。したがって、ポーズデータ生成装置200により取得される2Dポーズデータの精度を常に一定レベル以上に維持することができる。
【0229】
≪時間ステップt+5以降の処理≫
時間ステップt+5以降、ポーズデータ生成システム2000は、上記と同様の処理を繰り返し実行する。すなわち、フレーム画像が取得される時間ステップでは、時間ステップt+4の処理と同様の処理が実行され、フレーム画像が取得されない時間ステップでは、時間ステップt+1~t+3の処理と同様の処理が実行される。
【0230】
以上のように、ポーズデータ生成システム2000では、(1)撮像装置Cam1によりフレーム画像が取得される時間ステップでは、撮像したフレーム画像に基づいて、2Dポーズデータを取得することができ、(2)フレーム画像が取得される時間ステップ間の期間(フレーム画像が取得されない期間)では、IMUデータを用いて前時間ステップから現時間ステップの3Dポーズデータを予測して補間する処理(上記補間処理)により、2Dポーズデータを取得することができる。したがって、ポーズデータ生成システム2000では、撮像装置Cam1によるフレーム画像の取得レート(フレームレート)が低い場合であっても、IMUデータを用いた上記補間処理により、高フレームレートの2Dポーズデータを取得することができる。つまり、ポーズデータ生成システム2000では、高フレームレートの撮像装置を用いる必要がないので、低コストで実現でき、かつ、IMUデータを用いた補間処理により2Dポーズデータを取得できるので、高精度なポーズデータ(2Dポーズデータ)を取得することができる。
【0231】
なお、第2実施形態のポーズデータ生成システム2000において、第1実施形態の第1変形例と同様に、時系列フィルタを用いた処理により、補間処理を実現するようにしてもよい。具体的には、第2実施形態の補間部3Aにおいて、運動方程式等で人の動作(または人の特定部位の移動)が表現(予測)できる場合、当該運動方程式等により予測したデータと、実際の観測データ(IMUデータから特定されるデータ)とを用いて、時系列フィルタ(例えば、カルマンフィルタ、拡張カルマンフィルタ、アンセンテッドカルマンフィルタ、パーティクルフィルタ等)を適用して、2Dポーズデータの補間処理を実行するようにしてもよい。
【0232】
[第3実施形態]
次に、第3実施形態について説明する。第3実施形態では、ポーズデータ生成システムを用いたCGデータ生成システムを実現させる。
【0233】
なお、上記実施形態(変形例を含む)と同様の部分については、同一符号を付し、詳細な説明を省略する。
【0234】
<3.1:CGデータ生成システムの構成>
図26は、第3実施形態に係るCGデータ生成システム3000の概略構成図である。
【0235】
第3実施形態のCGデータ生成システム3000は、図26に示すように、被写体人物Sub1を撮影するための撮像装置Cam1と、被写体人物Sub1に取り付けたn個(n:自然数)の慣性計測装置IMU~IMUと、ポーズデータ生成装置200Aと、2次元CGデータ生成部Dev1と、3次元CGデータ生成部Dev2とを備える。
【0236】
撮像装置Cam1、および、慣性計測装置IMU~IMUは、第1実施形態、第2実施形態の撮像装置Cam1、および、慣性計測装置IMU~IMUと同様の構成、機能を有している。
【0237】
ポーズデータ生成装置200Aは、第2実施形態のポーズデータ生成装置200において、IMUデータ変換部4をIMUデータ変換部4Aに置換し、補間部3Aを補間部3Bに置換した構成を有している。それ以外について、ポーズデータ生成装置200Aは、ポーズデータ生成装置200と同様である。
【0238】
IMUデータ変換部4Aは、IMUデータ取得部2から出力される3次元データであるデータD1_imuを2次元データであるD2_imuに変換(3次元―2次元変換)したときの変換パラメータを含むデータをデータInfo_3D-2D_conv_prmとして取得し、当該データInfo_3D-2D_conv_prmを2次元CGデータ生成部Dev1に出力する。これに以外については、IMUデータ変換部4Aは、IMUデータ変換部4と同様である。
【0239】
補間部3Bは、補間処理に用いた、(1)3次元空間座標を特定するためのデータと、(2)2次元座標(2次元画像上の座標)を特定するためのデータとを含むデータをデータInfo_crdとして、2次元CGデータ生成部Dev1に出力する。これに以外については、補間部3Bは、第2実施形態の補間部3Aと同様である。なお、補間部3Aは、出力データDoutを2次元CGデータ生成部Dev1に出力する。
【0240】
2次元CGデータ生成部Dev1は、(1)ポーズデータ生成装置200Aの補間部3Bから出力されるデータDout(2次元のポーズデータ)および座標情報のデータInfo_crdと、(2)IMUデータ変換部4Aから出力される3次元―2次元変換パラメータのデータInfo_3D-2D_conv_prmと、(3)CG(コンピュータ・グラフィックス)のレンダリングに必要な情報(レンダリングに必要なパラメータ)Info_renderと、(4)3次元CGデータ生成部Dev2から出力される3次元CGデータD_CG_3Dと、を入力する。なお、データInfo_renderは、CGデータ生成システム3000の外部から所定のインターフェースを介して入力されるものであってもよく、また、CGデータ生成システム3000の記憶部(不図示)に記憶保持されており、当該記憶部から入力されるものであってもよい。
【0241】
2次元CGデータ生成部Dev1は、座標情報のデータInfo_crdと、3次元―2次元変換パラメータInfo_3D-2D_conv_prmと、レンダリングに必要なパラメータInfo_renderと、3次元CGデータD_CG_3Dとに基づいて、2次元のポーズデータDoutに対して、CGデータを生成する処理を実行し、2次元CGデータ(2次元CG画像を形成できるデータ)を生成し、生成した2次元CGデータをデータCG_outとして出力する。
【0242】
3次元CGデータ生成部Dev2は、3次元のCGデータを生成し、生成した3次元CGデータをデータD_CG_3Dとして、2次元CGデータ生成部Dev1に出力する。
【0243】
<3.2:CGデータ生成システムの動作>
以上のように構成されたCGデータ生成システム3000の動作について、以下説明する。
【0244】
本実施形態のポーズデータ生成装置200Aは、第2実施形態のポーズデータ生成装置200と同様の処理を実行し、2次元のポーズデータDoutを取得する。そして、ポーズデータ生成装置200Aは、取得した2次元ポーズデータDoutを2次元CGデータ生成部Dev1に出力する。
【0245】
IMUデータ変換部4Aは、IMUデータ取得部2から出力される3次元データであるデータD1_imuを2次元データであるD2_imuに変換(3次元―2次元変換)したときの変換パラメータを含むデータをデータInfo_3D-2D_conv_prmとして取得し、当該データInfo_3D-2D_conv_prmを2次元CGデータ生成部Dev1に出力する。
【0246】
補間部3Bは、補間処理に用いた、(1)3次元空間座標を特定するためのデータと、(2)2次元座標(2次元画像上の座標)を特定するためのデータとを含むデータをデータInfo_crdとして、2次元CGデータ生成部Dev1に出力する。
【0247】
3次元CGデータ生成部Dev2は、3次元のCGデータを生成し、生成した3次元CGデータをデータD_CG_3Dとして、2次元CGデータ生成部Dev1に出力する。例えば、3次元CGデータ生成部Dev2は、被写体人物Sub1の2次元ポーズデータから生成されえるCGオブジェクト(2次元CG画像)の背景に相当する3次元のCGデータをデータD_CG_3Dとして生成し、2次元CGデータ生成部Dev1に出力する。なお、3次元CDデータD_CG_3Dは、3次元CGデータを生成したときの3次元空間を特定する座標情報、3次元CGデータの各点の座標情報、テクスチャー等のレンダリングに必要なデータを含むものとする。
【0248】
2次元CGデータ生成部Dev1は、座標情報のデータInfo_crdと、3次元―2次元変換パラメータInfo_3D-2D_conv_prmと、レンダリングに必要なパラメータInfo_renderと、3次元CGデータD_CG_3Dとに基づいて、2次元のポーズデータDoutに対して、CGデータを生成する処理を実行し、2次元CGデータ(2次元CG画像を形成できるデータ)を生成する。具体的には、2次元CGデータ生成部Dev1は、座標情報のデータInfo_crdと、3次元―2次元変換パラメータInfo_3D-2D_conv_prmと、レンダリングに必要なパラメータInfo_renderと、に基づいて、被写体人物Sub1に相当する2次元CGデータを生成する。さらに、2次元CGデータ生成部Dev1は、座標情報のデータInfo_crdと、3次元―2次元変換パラメータInfo_3D-2D_conv_prmと、に基づいて、3次元CDデータD_CG_3Dを、被写体人物Sub1に相当する2次元CGデータと合成できるように処理し、3次元CDデータD_CG_3Dに対応する2次元CGデータを生成する。そして、2次元CGデータ生成部Dev1は、上記により取得した、被写体人物Sub1に相当する2次元CGデータと、3次元CDデータD_CG_3Dに対応する2次元CGデータ(例えば、背景のデータ)とを合成することで、2次元CGデータCG_outを取得し、当該2次元CGデータCG_outを出力する。
【0249】
このように、第3実施形態のCGデータ生成システム3000では、ポーズデータ生成装置200Aにより取得される2次元のポーズデータをCG合成することで、2次元のポーズデータに対応する2次元CG画像を取得することができる。
【0250】
なお、CGデータ生成システム3000において、3次元のIMUデータを2次元のIMUデータに変換したときの3次元―2次元変換処理のパラメータを、3次元CGデータを2次元CGデータに変換するときの3次元―2次元変換処理のパラメータと一致させるようにしてもよい。このようにすることで、3次元―2次元変換処理を共通にすることができ、3次元―2次元変換処理を簡易化することが可能となる。
【0251】
[第4実施形態]
次に、第4実施形態について説明する。第4実施形態では、ポーズデータ生成システムを用いたCGデータ生成システムを実現させる。
【0252】
なお、上記実施形態(変形例を含む)と同様の部分については、同一符号を付し、詳細な説明を省略する。
【0253】
<4.1:CGデータ生成システムの構成>
図27は、第4実施形態に係るCGデータ生成システム4000の概略構成図である。
【0254】
第4実施形態のCGデータ生成システム4000は、図27に示すように、被写体人物Sub1を撮影するための撮像装置Cam1と、被写体人物Sub1に取り付けたn個(n:自然数)の慣性計測装置IMU~IMUと、ポーズデータ生成装置200Bと、3次元CGデータ生成部Dev2Aと、2次元CGデータ生成部Dev1Aとを備える。
【0255】
撮像装置Cam1、および、慣性計測装置IMU~IMUは、第1実施形態、第2実施形態の撮像装置Cam1、および、慣性計測装置IMU~IMUと同様の構成、機能を有している。
【0256】
ポーズデータ生成装置200Bは、第2実施形態のポーズデータ生成装置200において、IMUデータ変換部4を削除し、補間部3Aを補間部3Cに置換し、誤差取得部5と、2D-3D変換部6とを追加した構成を有している。
【0257】
補間部3Cは、2D-3D変換部6から出力される誤差データerr_3Dと、IMUデータ取得部2から出力されるデータD1_imuとを入力する。また、補間部3Cは、撮像装置Cam1が撮像する3次元空間(撮像空間)に関する情報Info_spaceと、撮像装置Cam1の撮影パラメータInfo_cam_prmとを入力する。
(1)補間部3Cは、フレーム画像データが取得された時間ステップであって、初期化処理を行う時間ステップにおいて、画像ベースポーズデータ取得部1Aから出力されるデータD1_pose_2Dを2D-3D変換部6により2D-3D変換されたデータerr_3D(データD1_pose_2Dに対応する3Dデータ)を入力し、入力された当該データを出力データDout(3次元ポーズデータDout)として出力するとともに、当該出力データDoutを記憶保持する。
(2)補間部3Cは、フレーム画像データが取得されていない時間ステップにおいて、撮像空間に関する情報Info_space、および、撮像装置Cam1の撮影パラメータInfo_cam_prmに基づいて、補間部3Cが記憶保持している3次元ポーズデータDoutと、現時間ステップにおいて取得されたデータD1_imuとを用いて、補間処理を実行することで、補間処理後のポーズデータを取得する。そして、補間部3Cは、取得した補間処理後のポーズデータを出力データDoutとして出力するとともに、当該出力データDoutを記憶保持する。
(3)補間部3Cは、フレーム画像データが取得された時間ステップであって、初期化処理を実行しない時間ステップにおいて、撮像空間に関する情報Info_space、および、撮像装置Cam1の撮影パラメータInfo_cam_prmに基づいて、補間部3Cが記憶保持している3次元ポーズデータDoutと、現時間ステップにおいて取得されたデータD1_imuとを用いて、補間処理を実行することで、補間処理後のポーズデータPoseH_3dを取得する。そして、補間部3Cは、取得した補間処理後のポーズデータを出力データDoutとして出力する。さらに、補間部3Cは、2D-3D変換部6から入力した誤差データerr_3Dと、補間処理後のポーズデータPoseH_3dとを用いて、補間処理後のポーズデータPoseH_3dを誤差データerr_3Dにより修正する処理(誤差修正処理)を実行することで、修正処理後のポーズデータをポーズデータPose_3dとして取得する。そして、補間部3Cは、取得したポーズデータPose_3dを出力データDoutとして、3次元CGデータ生成部Dev2に出力するとともに、当該出力データDoutを記憶保持する。
【0258】
また、補間部3Cは、補間処理に用いた、3次元空間座標を特定するためのデータを含むデータをデータInfo_crdとして、3次元CGデータ生成部Dev2Aに出力する。
【0259】
誤差取得部5は、画像ベースポーズデータ取得部1Aから出力されるデータD1_pose_2D(2次元のポーズデータ)と、2次元CGデータ生成部Dev1Aから出力されるデータD2_pose_2D(2次元のポーズデータ)とを入力する。誤差取得部5は、データD1_pose_2Dから、データD2_pose_2Dを減算する処理、すなわち、
err_2D=D1_pose_2D-D2_pose_2D
に相当する処理を実行することで、2次元のポーズデータの誤差データerr_2Dを取得する。そして、誤差取得部5は、取得した2次元のポーズデータの誤差データerr_2Dを2D-3D変換部6に出力する。
【0260】
2D-3D変換部6は、誤差取得部5から出力される誤差データerr_2Dと、2次元CGデータ生成部Dev1Aから出力される3次元-2次元変換処理のパラメータを含むデータInfo_3D-2D_conv_prmとを入力する。2D-3D変換部6は、誤差データerr_2Dに対して、データInfo_3D-2D_conv_prmに基づいて、2次元CGデータ生成部Dev1Aで実行された2D-3D変換の逆変換(3D-2D変換)を実行することで、2次元の誤差データerr_2Dに対応する3次元の誤差データerr_3Dを取得する。そして、2D-3D変換部6は、取得した3次元の誤差データerr_3Dを補間部3Cに出力する。
【0261】
3次元CGデータ生成部Dev2Aは、補間部3Cから出力されるデータInfo_crdと、補間部3Cから出力されるデータDoutとを入力する。また、3次元CGデータ生成部Dev2Aは、CG(コンピュータ・グラフィックス)のレンダリングに必要な情報(レンダリングに必要なパラメータ)Info_renderを入力する。なお、CG(コンピュータ・グラフィックス)のレンダリングに必要な情報(レンダリングに必要なパラメータ)であるデータInfo_renderは、CGデータ生成システム4000の外部から所定のインターフェースを介して入力されるものであってもよく、また、CGデータ生成システム4000の記憶部(不図示)に記憶保持されており、当該記憶部から入力されるものであってもよい。また、データInfo_renderは、3次元CGデータ生成部Dev2Aに、予め記憶保持されているものであってもよい。
【0262】
3次元CGデータ生成部Dev2Aは、3次元のポーズデータであるデータDoutに対して、データInfo_render、および、データInfo_crdに基づいて、CGデータ生成処理を実行することで、3次元CGデータを取得する。そして、3次元CGデータ生成部Dev2Aは、取得した3次元CGデータと、3次元ポーズデータDoutとを含むデータをデータD_CG_3Dとして、2次元CGデータ生成部Dev1Aに出力する。
【0263】
2次元CGデータ生成部Dev1Aは、3次元CGデータ生成部Dev2Aから出力されるデータD_CG_3Dを入力する。2次元CGデータ生成部Dev1Aは、データD_CG_3Dに含まれる3次元CGデータに対して、3次元―2次元変換を行うことで、2次元CGデータCG_outを生成する。そして、2次元CGデータ生成部Dev1Aは、生成した2次元CG_outを出力する。
【0264】
また、2次元CGデータ生成部Dev1Aは、データD_CG_3Dに含まれる3次元ポーズデータに対して、3次元―2次元変換を行うことで、2次元ポーズデータを取得する。そして、2次元CGデータ生成部Dev1Aは、取得した2次元ポーズデータを含むデータをデータD2_pose_2Dとして、ポーズデータ生成装置200Bの誤差取得部5に出力する。
【0265】
<4.2:CGデータ生成システムの動作>
以上のように構成されたCGデータ生成システム4000の動作について、以下説明する。
【0266】
図28図29は、CGデータ生成システム4000で実行される処理のシーケンス図である。図28図29において、「PoseData1」で示した欄は、フレーム画像データを用いた処理により取得されるポーズデータを示しており、「PoseData2」で示した欄は、補間処理により取得されるポーズデータを示している。
【0267】
以下、図28図29を参照しながら、CGデータ生成システム4000の動作について説明する。なお、上記実施形態と同様の部分については、詳細な説明を省略する。
【0268】
≪時間ステップtの処理≫
時間ステップtにおいて、撮像装置Cam1により、被写体人物Sub1を含む3次元空間(撮像空間SP1)を撮像することで、フレーム画像データD_img(t)を取得する。フレーム画像データD_img(t)により形成される画像(フレーム画像)は、例えば、図16の上左図に示す画像Img1である。
【0269】
画像ベースポーズデータ取得部1Aは、撮像装置Cam1から出力されるフレーム画像データD_img(t)を入力し、当該フレーム画像データD_img(t)から、2次元ポーズデータを取得する処理を実行し、2次元のポーズデータD1_pose_2D(=V_2d(t))を取得する。
【0270】
そして、2Dポーズデータ取得部1Aは、取得した2次元のポーズデータD1_pose_2D(=V_2d(t))を誤差取得部5に出力する。
【0271】
誤差取得部5は、画像ベースポーズデータ取得部1Aから出力されるデータD1_pose_2D(=V_2d(t))から、2次元CGデータ生成部Dev1Aから出力されるデータD2_pose_2Dを減算する処理、すなわち、
err_2D=D1_pose_2D-D2_pose_2D
に相当する処理を実行する。時刻tにおいては、初期化処理を実行するので、データD2_pose_2Dは「0」(あるいは、無入力)であるので、
err_2D=D1_pose_2D
である。
【0272】
誤差取得部5は、上記により取得した2次元ポーズデータの誤差データerr_2D(=D1_pose_2D=V_2d(t))を2D-3D変換部6に出力する。
【0273】
2D-3D変換部6は、誤差データerr_2D(=V_2d(t))に対して、データInfo_3D-2D_conv_prmに基づいて、2次元CGデータ生成部Dev1Aで実行される2D-3D変換の逆変換(3D-2D変換)を実行することで、2次元の誤差データerr_2Dに対応する3次元の誤差データerr_3D(=Pose_3d(t))を取得する。そして、2D-3D変換部6は、取得した3次元の誤差データerr_3D(=Pose_3d(t))を補間部3Cに出力する。
【0274】
補間部3Cは、時間ステップtが、フレーム画像データが取得された時間ステップであって、初期化処理を行う時間ステップであるので、2D-3D変換部6から入力されたデータerr_3D(=Pose_3d(t))を、出力データDout(3次元ポーズデータDout)として、3次元CGデータ生成部Dev2Aに出力するとともに、当該出力データDoutを記憶保持する。また、補間部3Cは、補間部3Cでの処理(補間処理等)に用いる3次元空間座標を特定するためのデータを含むデータをデータInfo_crdとして、3次元CGデータ生成部Dev2Aに出力する。
【0275】
3次元CGデータ生成部Dev2Aは、補間部3Cから出力されるデータInfo_crdと、補間部3Cから出力されるデータDoutとを入力する。また、3次元CGデータ生成部Dev2Aは、CG(コンピュータ・グラフィックス)のレンダリングに必要な情報(レンダリングに必要なパラメータ)Info_renderを入力する。
【0276】
そして、3次元CGデータ生成部Dev2Aは、3次元のポーズデータであるデータDout(=Pose_3d(t))に対して、データInfo_render、および、データInfo_crdに基づいて、CGデータ生成処理を実行することで、3次元CGデータを取得する。そして、3次元CGデータ生成部Dev2Aは、取得した3次元CGデータと、3次元ポーズデータDout(=Pose_3d(t))とを含むデータをデータD_CG_3Dとして、2次元CGデータ生成部Dev1Aに出力する。
【0277】
2次元CGデータ生成部Dev1Aは、3次元CGデータ生成部Dev2Aから出力されるデータD_CG_3Dを入力する。2次元CGデータ生成部Dev1Aは、データD_CG_3Dに含まれる3次元CGデータに対して、3次元―2次元変換を行うことで、2次元CGデータCG_outを生成する。そして、2次元CGデータ生成部Dev1Aは、生成した2次元CG_outを出力する。
【0278】
≪時間ステップt+1~t+3の処理≫
時間ステップt+1~t+3の各時間ステップにおいて、CGデータ生成システム4000では、第1実施形態(変形例を含む)と同様の処理(時間ステップt+1~t+3の処理の各時間ステップの処理)が実行され、3次元ポーズデータPose_3d(t+1)~Pose_3d(t+3)が取得される。そして、CGデータ生成システム4000では、3次元ポーズデータPose_3d(t+1)~Pose_3d(t+3)を用いて、上記と同様に、3次元CGデータ生成部Dev2Aでの処理、2次元CGデータ生成部Dev1Aでの処理が実行されることで、2次元CGデータCG_outが取得される。
【0279】
≪時間ステップt+4の処理≫
時間ステップt+4において、時間ステップt+1~t+3の処理と同様に、慣性計測装置IMU~IMUは、それぞれ、IMUデータD0(t+4)~D0(t+4)を取得し、取得したIMUデータをポーズデータ生成装置200BのIMUデータ取得部2に送信する。そして、補間部3Cは、時間ステップt+1~t+3の処理と同様の補間処理を実行し、補間処理後の3次元ポーズデータPoseH_3d(t+4)を取得する。そして、補間部3Cは、補間処理後の3次元ポーズデータPoseH_3d(t+4)を、データDoutとして、3次元CGデータ生成部Dev2Aに出力する。
【0280】
3次元CGデータ生成部Dev2Aは、補間部3Cから出力されるデータInfo_crdと、補間部3Cから出力されるデータDout(=PoseH_3d(t+4))とを入力する。また、3次元CGデータ生成部Dev2Aは、CG(コンピュータ・グラフィックス)のレンダリングに必要な情報(レンダリングに必要なパラメータ)Info_renderを入力する。
【0281】
そして、3次元CGデータ生成部Dev2Aは、3次元のポーズデータであるデータDout(=PoseH_3d(t+4))に対して、データInfo_render、および、データInfo_crdに基づいて、CGデータ生成処理を実行することで、3次元CGデータを取得する。そして、3次元CGデータ生成部Dev2Aは、取得した3次元CGデータと、3次元ポーズデータDout(=PoseH_3d(t+4))とを含むデータをデータD_CG_3Dとして、2次元CGデータ生成部Dev1Aに出力する。
【0282】
2次元CGデータ生成部Dev1Aは、3次元CGデータ生成部Dev2Aから出力されるデータD_CG_3Dを入力する。2次元CGデータ生成部Dev1Aは、データD_CG_3Dに含まれる3次元CGデータに対して、3次元―2次元変換を行うことで、2次元CGデータCG_outを生成するとともに、データD_CG_3Dに含まれる3次元ポーズデータPoseH_3d(t+4)に対して、3次元―2次元変換を行うことで、2次元ポーズデータPoseH_2d(t+4)を取得する。そして、2次元CGデータ生成部Dev1Aは、取得した2次元ポーズデータPoseH_2d(t+4)を含むデータをデータD2_pose_2Dとして、ポーズデータ生成装置200Bの誤差取得部5に出力する。
【0283】
また、時間ステップt+4において、撮像装置Cam1により、被写体人物Sub1を含む3次元空間(撮像空間SP1)を撮像することで、フレーム画像データD_img(t+4)を取得する。
【0284】
画像ベースポーズデータ取得部1Aは、時間ステップtのときの処理と同様の処理を実行し、撮像装置Cam1から出力されるフレーム画像データD_img(t+4)から、2次元ポーズデータD1_pose_2D(t+4)(=V_2d(t+4))を取得する。
【0285】
そして、2Dポーズデータ取得部1Aは、取得した2次元のポーズデータD1_pose_2D(=V_2d(t+4))を誤差取得部5に出力する。
【0286】
誤差取得部5は、画像ベースポーズデータ取得部1Aから出力されるデータD1_pose_2D(=V_2d(t+4))と、2次元CGデータ生成部Dev1Aから出力されるデータD2_pose_2D(=PoseH_2d(t+4))とを入力する。誤差取得部5は、データD1_pose_2D(=V_2d(t+4))から、データD2_pose_2D(=PoseH_2d(t+4))を減算する処理、すなわち、
err_2D=D1_pose_2D-D2_pose_2D
(err_2d(t+4)=V_2d(t+4)―PoseH_2d(t+4)
に相当する処理を実行することで、2次元のポーズデータの誤差データerr_2D(=err_2d(t+4))を取得する。そして、誤差取得部5は、取得した2次元のポーズデータの誤差データerr_2D(=err_2d(t+4))を2D-3D変換部6に出力する。
【0287】
2D-3D変換部6は、誤差データerr_2D(=err_2d(t+4))に対して、データInfo_3D-2D_conv_prmに基づいて、2次元CGデータ生成部Dev1Aで実行される2D-3D変換の逆変換(3D-2D変換)を実行することで、2次元の誤差データerr_2Dに対応する3次元の誤差データerr_3D(=err_3d(t+4))を取得する。そして、2D-3D変換部6は、取得した3次元の誤差データerr_3D(=err_3d(t+4))を補間部3Cに出力する。
【0288】
補間部3Cは、2D-3D変換部6から入力した誤差データerr_3D(=err_3d(t+4))と、補間処理後のポーズデータPoseH_3d(t+4)とを用いて、補間処理後のポーズデータPoseH_3d(t+4)を誤差データerr_3D(=err_3d(t+4))により修正する処理(誤差修正処理)を実行する。例えば、補間部3Cは、補間処理後のポーズデータPoseH_3d(t+4)と、画像ベースポーズデータ取得部1Aにより取得された2次元ポーズデータV_2d(t+4)に対応する3次元ポーズデータV_3d(t+4)(2次元ポーズデータV_2d(t+4)を2次元-3次元変換して取得される3次元ポーズデータV_3d(t+4))に近づくように、誤差データerr_3D(=err_3d(t+4))を減算する処理(誤差が少なくなるにする処理)を実行することで、誤差修正処理を実行する。例えば、補間部3Cは、
Pose_3d(t+4)=PoseH_3d(t+4)-k1×err_3d(t+4)
k1:係数
に相当する処理を実行することで、誤差修正処理を実行する。
【0289】
そして、補間部3Cは、誤差修正処理により取得した誤差修正処理後のポーズデータPose_3d(t+4)を出力データDoutとして、3次元CGデータ生成部Dev2に出力するとともに、当該出力データDoutを記憶保持する。
【0290】
3次元CGデータ生成部Dev2Aは、補間部3Cから出力される3次元ポーズデータDout(=Pose_3d(t+4))に対して、データInfo_render、および、データInfo_crdに基づいて、CGデータ生成処理を実行することで、3次元CGデータを取得する。そして、3次元CGデータ生成部Dev2Aは、取得した3次元CGデータと、3次元ポーズデータDout(=Pose_3d(t+4))とを含むデータをデータD_CG_3Dとして、2次元CGデータ生成部Dev1Aに出力する。
【0291】
2次元CGデータ生成部Dev1Aは、3次元CGデータ生成部Dev2Aから出力されるデータD_CG_3Dを入力する。2次元CGデータ生成部Dev1Aは、データD_CG_3Dに含まれる3次元CGデータに対して、3次元―2次元変換を行うことで、2次元CGデータCG_outを生成する。そして、2次元CGデータ生成部Dev1Aは、生成した2次元CG_outを出力する。
【0292】
≪時間ステップt+5以降の処理≫
時間ステップt+5以降、CGデータ生成システム4000は、上記と同様の処理を繰り返し実行する。すなわち、フレーム画像が取得される時間ステップでは、時間ステップt+4の処理と同様の処理が実行され、フレーム画像が取得されない時間ステップでは、時間ステップt+1~t+3の処理と同様の処理が実行される。
【0293】
以上のように、CGデータ生成システム4000では、撮像装置Cam1によりフレーム画像が取得される時間ステップでは、撮像したフレーム画像と、IMUデータからの補間処理、3次元CGデータ生成処理、および、2次元CGデータ生成処理により取得される2次元ポーズデータとの誤差データを用いて、IMUデータから補間処理により取得される3次元ポーズデータに対して、誤差修正処理を実行する。これにより、CGデータ生成システム4000では、誤差修正処理後の3次元ポーズデータを取得することができる。つまり、CGデータ生成システム4000では、フレーム画像が取得される時間ステップで、上記誤差修正処理を行うので、さらに、高精度の3次元ポーズデータを取得することができ、さらに、当該3次元ポーズデータを用いて3次元CGデータ生成処理、2次元CGデータ生成処理を行うことで、高精度のCGデータを生成することができる。
【0294】
また、CGデータ生成システム4000では、上記実施形態(変形例を含む)と同様に、フレーム画像が取得される時間ステップ間の期間(フレーム画像が取得されない期間)では、IMUデータを用いて前時間ステップから現時間ステップの3Dポーズデータを予測して補間する処理(上記補間処理)により、3Dポーズデータを取得することができる。したがって、CGデータ生成システム4000では、撮像装置Cam1によるフレーム画像の取得レート(フレームレート)が低い場合であっても、IMUデータを用いた上記補間処理により、高フレームレートの3Dポーズデータを取得することができる。
【0295】
なお、CGデータ生成システム4000において、フレーム画像が取得される時間ステップであり、かつ、初期化処理を実行する時間ステップにおいて、被写体人物Sub1が、容易に3次元ポーズデータを推定することができる予め決めたポーズをとるようにしてもよい。このようにすることで、初期化処理時の被写体人物Sub1のポーズと、CGデータ生成システム4000で取得される3次元ポーズデータとの誤差がゼロ、あるいは、極小にすることができる。その結果、CGデータ生成システム4000では、さらに高精度な3次元ポーズデータを取得することができる。
【0296】
[他の実施形態]
上記実施形態(変形例を含む)では、画像ベースポーズデータ取得部において、フレーム画像データからポーズデータ(画像ベースポーズデータ)を取得するときに、単独のフレーム画像を用いて処理する場合について説明したが、これに限定されることはない。例えば、ポーズデータ取得部において、複数のフレーム画像(例えば、時系列に連続する複数のフレーム画像)を用いて、フレーム画像データからポーズデータ(画像ベースポーズデータ)を取得する処理(例えば、ニューラルネットワークによる処理)を実行することで、ポーズデータ(画像ベースポーズデータ)を取得するようにしてもよい。なお、ポーズデータ(画像ベースポーズデータ)が取得されるタイミングとIMUデータが取得されるタイミングがずれる場合、ポーズデータ生成装置において、例えば、IMUデータを遅延させて、両者のタイミングを一致させるようにして、補間処理等を実行するようにすればよい。
【0297】
また、上記実施形態(変形例を含む)では、慣性計測装置の数が「3」である場合について、説明したが、これに限定されることはなく、慣性計測装置は、3以外の数であってもよい。また、慣性計測装置の設置位置も上記実施形態(変形例を含む)の場合に限定されることはなく、慣性計測装置は、処理対象(例えば、人)の任意の部位に取り付けてもよい。
【0298】
また、第1実施形態(変形例を含む)のポーズデータ生成システムにおいて、ポーズデータ生成装置の後段に、3次元CGデータ生成部を設け、3次元ポーズデータから、3次元CGデータを取得(生成)するようにしてもよい。
【0299】
また、上記実施形態(変形例を含む)における座標系の設定例は一例であり、上記に限定されるものではない。また、デカルト座標系ではなく、他の座標系(例えば、極座標系)を用いても良い。
【0300】
また、上記実施形態で説明したポーズデータ生成システム、CGデータシステム、ポーズデータ生成装置の各ブロック(各機能部)は、LSIなどの半導体装置により個別に1チップ化されても良いし、一部又は全部を含むように1チップ化されても良い。また、上記実施形態で説明したポーズデータ生成システム、CGデータシステム、ポーズデータ生成装置の各ブロック(各機能部)は、複数のLSIなどの半導体装置により実現されるものであってもよい。
【0301】
なお、ここでは、LSIとしたが、集積度の違いにより、IC、システムLSI、スーパーLSI、ウルトラLSIと呼称されることもある。
【0302】
また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
【0303】
また、上記各実施形態の各機能ブロックの処理の一部または全部は、プログラムにより実現されるものであってもよい。そして、上記各実施形態の各機能ブロックの処理の一部または全部は、コンピュータにおいて、中央演算装置(CPU)により行われる。また、それぞれの処理を行うためのプログラムは、ハードディスク、ROMなどの記憶装置に格納されており、ROMにおいて、あるいはRAMに読み出されて実行される。
【0304】
また、上記実施形態の各処理をハードウェアにより実現してもよいし、ソフトウェア(OS(オペレーティングシステム)、ミドルウェア、あるいは、所定のライブラリとともに実現される場合を含む。)により実現してもよい。さらに、ソフトウェアおよびハードウェアの混在処理により実現しても良い。
【0305】
例えば、上記実施形態(変形例を含む)の各機能部を、ソフトウェアにより実現する場合、図30に示したハードウェア構成(例えば、CPU、GPU、ROM、RAM、入力部、出力部等をバスBusにより接続したハードウェア構成)を用いて、各機能部をソフトウェア処理により実現するようにしてもよい。
【0306】
また、上記実施形態における処理方法の実行順序は、必ずしも、上記実施形態の記載に制限されるものではなく、発明の要旨を逸脱しない範囲で、実行順序を入れ替えることができるものである。
【0307】
前述した方法をコンピュータに実行させるコンピュータプログラム及びそのプログラムを記録したコンピュータ読み取り可能な記録媒体は、本発明の範囲に含まれる。ここで、コンピュータ読み取り可能な記録媒体としては、例えば、フレキシブルディスク、ハードディスク、CD-ROM、MO、DVD、DVD-ROM、DVD-RAM、大容量DVD、次世代DVD、半導体メモリを挙げることができる。
【0308】
上記コンピュータプログラムは、上記記録媒体に記録されたものに限られず、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク等を経由して伝送されるものであってもよい。
【0309】
また、文言「部」は、「サーキトリー(circuitry)」を含む概念であってもよい。サーキトリーは、ハードウェア、ソフトウェア、あるいは、ハードウェアおよびソフトウェアの混在により、その全部または一部が、実現されるものであってもよい。
【0310】
ここに開示される要素の機能は、当該開示される要素を実行するように構成された、あるいは当該開示される機能を実行するようにプログラミングされた汎用プロセッサ、専用プロセッサ、集積回路、ASIC(「特定用途向け集積回路」)、従来の回路構成及び/またはそれらの組み合わせを含む回路構成あるいは処理回路構成が用いられて実装されてもよい。プロセッサは、それが、その中にトランジスタ及び他の回路構成を含むとき、処理回路構成あるいは回路構成として見なされる。本開示において、回路構成、ユニットあるいは手段は、挙げられた機能を実行するハードウェア、あるいは当該機能を実行するようにプログラミングされたハードウェアである。ハードウェアは、挙げられた機能を実行するようにプログラミングされた、あるいは当該機能を実行するように構成された、ここで開示されるいかなるハードウェアあるいは既知の他のものであってもよい。ハードウェアが、あるタイプの回路構成として見なされるかもしれないプロセッサであるとき、回路構成、手段あるいはユニットは、ハードウェアとソフトウェアの組み合わせ、ハードウェアを構成するために用いられるソフトウェア及び/またはプロセッサである。
【0311】
なお、本発明の具体的な構成は、前述の実施形態に限られるものではなく、発明の要旨を逸脱しない範囲で種々の変更および修正が可能である。
【符号の説明】
【0312】
1000、2000 ポーズデータ生成システム
3000、4000 CGデータ生成システム
100、200、200A、200B ポーズデータ生成装置
1、1A 画像ベースポーズデータ取得部
2 IMUデータ取得部
3、3A、3B 補間部
4、4A IMUデータ変換部
5 誤差取得部
6 2D-3D変換部
IMU~IMU 慣性計測装置
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25
図26
図27
図28
図29
図30