(57)【要約】【課題】関節の二次元位置の推定誤差が大きい場合でも高精度なパラメータを生成することができるパラメータ最適化技術を提供する。【解決手段】同一の関節物体を撮影するように設定されたNc台のカメラ1、…、カメラNcで撮影された映像からカメラiの外部パラメータ、フレーム時刻tにおける関節物体の関節jの三次元位置、関節物体の関節ペアmの関節長の３つのパラメータのうち少なくとも１つのパラメータの最適値を生成するパラメータ最適化装置は、再投影誤差項を用いて定義される誤差関数の値を最小化するように最適値を生成する最適化部を含み、再投影誤差項の計算に用いる誤差強度の計算式は、三次元位置をカメラiの画像平面上に投影した二次元位置J2D’(i,t,j)_repと二次元位置J2D’(i,t,j)の誤差が小さい場合には誤差による影響を抑制し、誤差が大きくなるにしたがい誤差の影響を大きくする式である。【選択図】図９
2019079487.tif 000002
【特許請求の範囲】
【請求項１】
Ncを2以上の整数、Njを2以上の整数、Nmを1以上の整数、iを1からNcまでの各整数、jを1からNjまでの各整数、mを1からNmまでの各整数とし、
同一の関節物体を撮影するように設定されたNc台のカメラ1、…、カメラNcで撮影された映像から推定された、フレーム時刻tにおける前記関節物体の関節jのカメラiの画像平面上の二次元位置J2D’(i,t,j)とカメラiの外部パラメータの初期値とフレーム時刻tにおける前記関節物体の関節jの三次元位置J3D’(t,j)の初期値と前記関節物体の関節ペアmの関節長L(m)の初期値から、カメラiの外部パラメータ、フレーム時刻tにおける関節物体の関節jの三次元位置J3D’(t,j)、関節物体の関節ペアmの関節長L(m)の３つのパラメータのうち少なくとも１つのパラメータの最適値を生成する最適化部を含むパラメータ最適化装置であって、
前記最適化部は、
前記二次元位置J2D’(i,t,j)から、前記二次元位置J2D’(i,t,j)の誤差強度P(J2D’(i,t,j))を計算する誤差強度計算部と、
前記二次元位置J2D’(i,t,j)と前記三次元位置J3D’(t,j)の初期値と前記誤差強度P(J2D’(i,t,j))から、再投影誤差項を計算する再投影誤差項計算部と、
前記三次元位置J3D’(t,j)の初期値と前記関節長L(m)の初期値から、関節長制約項を計算する関節長制約項計算部と、
前記三次元位置J3D’(t,j)の初期値から、関節位置制約項を計算する関節位置制約項計算部と、
前記３つのパラメータのうち少なくとも１つのパラメータを最適化対象パラメータとして前記再投影誤差項と前記関節長制約項と前記関節位置制約項を用いて定義される誤差関数の値を最小化するように、前記最適値を生成する最適化処理部とを含み、
前記誤差強度P(J2D’(i,t,j))を計算する式は、
前記三次元位置J3D’(t,j)をカメラiの画像平面上に投影した二次元位置J2D’(i,t,j)_repと前記二次元位置J2D’(i,t,j)の誤差が小さい場合には誤差による影響を抑制し、誤差が大きくなるにしたがい誤差の影響を大きくする式である
パラメータ最適化装置。
【請求項２】
請求項１に記載のパラメータ最適化装置であって、
前記カメラiで撮影された映像から、前記二次元位置J2D’(i,t,j)を推定する二次元位置推定部と、
前記二次元位置J2D’(i,t,j)から、前記カメラiの外部パラメータの初期値と前記三次元位置J3D’(t,j)の初期値と前記関節長L(m)の初期値を推定する初期値推定部とを含む
ことを特徴とするパラメータ最適化装置。
【請求項３】
請求項１または２に記載のパラメータ最適化装置であって、
前記誤差強度P(J2D’(i,t,j))を計算する式は、
【数１０】
2019079487.tif 000012
である（ただし、g_x(α)は平均0、分散σ_x2を持つ正規分布の確率密度関数、g_y(α)は平均0、分散σ_y2を持つ正規分布の確率密度関数、J2D’(i,t,j)_x、J2D'(i,t,j)_yはそれぞれ前記二次元位置J2D’(i,t,j)のx成分、y成分、J2D’(i,t,j)_rep_x、J2D’(i,t,j)_rep_yはそれぞれ前記二次元位置J2D'(i,t,j)_repのx成分、y成分とする）
ことを特徴とするパラメータ最適化装置。
【請求項４】
Ncを2以上の整数、Njを2以上の整数、Nmを1以上の整数、iを1からNcまでの各整数、jを1からNjまでの各整数、mを1からNmまでの各整数とし、
同一の関節物体を撮影するように設定されたNc台のカメラ1、…、カメラNcで撮影された映像から、カメラiの外部パラメータ、フレーム時刻tにおける関節物体の関節jの三次元位置J3D’(t,j)、関節物体の関節ペアmの関節長L(m)の３つのパラメータのうち少なくとも１つのパラメータの最適値とカメラ間の時間ずれの最適値を生成するパラメータ最適化装置であって、
前記パラメータ最適化装置は、
前記カメラiで撮影された映像から、フレーム時刻tにおける前記関節物体の関節jのカメラiの画像平面上の二次元位置J2D’(i,t,j)を推定する二次元位置推定部と、
前記二次元位置J2D’(i,t,j)から、カメラ間の時間ずれΔti_k(k=1, …, Nk、Nkは1以上の整数)と前記二次元位置J2D’(i,t,j)をカメラ間の時間ずれΔti_kに対するフレーム単位の時間ずれδti_kだけ時間方向にずらした補正済二次元位置J2D’(i,t+δti_k,j)を生成する時間ずれ生成部と
前記補正済二次元位置J2D’(i,t+δti_k,j)から、カメラiの外部パラメータの初期値とフレーム時刻t+δti_kにおける前記関節物体の関節j(j=1, …, Nj)の三次元位置J3D’(t+δti_k,j)の初期値、前記関節物体の関節ペアm(m=1, …, Nm)の関節長L(m)の初期値を推定する初期値推定部と、
前記時間ずれΔti_kと前記補正済二次元位置J2D’(i,t+δti_k,j)と前記カメラiの外部パラメータの初期値と前記三次元位置J3D’(t+δti_k,j)の初期値と前記関節長L(m)の初期値から、前記パラメータの最適値と前記時間ずれの最適値を生成する最適化部とを含み、
前記最適化部は、
前記補正済二次元位置J2D’(i,t+δti_k,j)から、前記補正済二次元位置J2D’(i,t+δti_k,j)の誤差強度P(J2D’(i,t+δti_k,j))を計算する誤差強度計算部と、
前記補正済二次元位置J2D’(i,t+δti_k,j)と前記三次元位置J3D’(t+δti_k,j)の初期値と前記誤差強度P(J2D’(i,t+δti_k,j))から、再投影誤差項を計算する再投影誤差項計算部と、
前記三次元位置J3D’(t+δti_k,j)の初期値と前記関節長L(m)の初期値から、関節長制約項を計算する関節長制約項計算部と、
前記三次元位置J3D’(t+δti_k,j)の初期値から、関節位置制約項を計算する関節位置制約項計算部と、
前記３つのパラメータのうち少なくとも１つのパラメータを最適化対象パラメータとして前記再投影誤差項と前記関節長制約項と前記関節位置制約項を用いて定義される誤差関数の値を最小化するように、前記最適化対象パラメータの最適値を生成し、このときの誤差関数の値である誤差関数値を計算し、当該誤差関数値と前記最適化対象パラメータと前記時間ずれΔti_kを出力する最適化処理部と、
前記誤差関数値が最小となる前記最適化対象パラメータの最適値と前記時間ずれΔti_kをそれぞれパラメータの最適値、時間ずれの最適値として出力する時間ずれ評価部とを含み、
前記誤差強度P(J2D’(i,t+δtk,j))を計算する式は、
前記三次元位置J3D’(t+δtk,j)をカメラiの画像平面上に投影した二次元位置J2D’(i,t+δtk,j)_repと前記補正済二次元位置J2D’(i,t+δtk,j)の誤差が小さい場合には誤差による影響を抑制し、誤差が大きくなるにしたがい誤差の影響を大きくする式である
パラメータ最適化装置。
【請求項５】
Ncを2以上の整数、Njを2以上の整数、Nmを1以上の整数、iを1からNcまでの各整数、jを1からNjまでの各整数、mを1からNmまでの各整数とし、
パラメータ最適化装置が、同一の関節物体を撮影するように設定されたNc台のカメラ1、…、カメラNcで撮影された映像から推定された、フレーム時刻tにおける前記関節物体の関節jのカメラiの画像平面上の二次元位置J2D’(i,t,j)とカメラiの外部パラメータの初期値とフレーム時刻tにおける前記関節物体の関節jの三次元位置J3D’(t,j)の初期値と前記関節物体の関節ペアmの関節長L(m)の初期値から、カメラiの外部パラメータ、フレーム時刻tにおける関節物体の関節jの三次元位置J3D’(t,j)、関節物体の関節ペアmの関節長L(m)の３つのパラメータのうち少なくとも１つのパラメータの最適値を生成する最適化ステップを含むパラメータ最適化方法であって、
前記最適化ステップは、
前記二次元位置J2D’(i,t,j)から、前記二次元位置J2D’(i,t,j)の誤差強度P(J2D’(i,t,j))を計算する誤差強度計算ステップと、
前記二次元位置J2D’(i,t,j)と前記三次元位置J3D’(t,j)の初期値と前記誤差強度P(J2D’(i,t,j))から、再投影誤差項を計算する再投影誤差項計算ステップと、
前記三次元位置J3D’(t,j)の初期値と前記関節長L(m)の初期値から、関節長制約項を計算する関節長制約項計算ステップと、
前記三次元位置J3D’(t,j)の初期値から、関節位置制約項を計算する関節位置制約項計算ステップと、
前記３つのパラメータのうち少なくとも１つのパラメータを最適化対象パラメータとして前記再投影誤差項と前記関節長制約項と前記関節位置制約項を用いて定義される誤差関数の値を最小化するように、前記最適値を生成する最適化処理ステップとを含み、
前記誤差強度P(J2D’(i,t,j))を計算する式は、
前記三次元位置J3D’(t,j)をカメラiの画像平面上に投影した二次元位置J2D’(i,t,j)_repと前記二次元位置J2D’(i,t,j)の誤差が小さい場合には誤差による影響を抑制し、誤差が大きくなるにしたがい誤差の影響を大きくする式である
パラメータ最適化方法。
【請求項６】
Ncを2以上の整数、Njを2以上の整数、Nmを1以上の整数、iを1からNcまでの各整数、jを1からNjまでの各整数、mを1からNmまでの各整数とし、
パラメータ最適化装置が、同一の関節物体を撮影するように設定されたNc台のカメラ1、…、カメラNcで撮影された映像から、カメラiの外部パラメータ、フレーム時刻tにおける関節物体の関節jの三次元位置J3D’(t,j)、関節物体の関節ペアmの関節長L(m)の３つのパラメータのうち少なくとも１つのパラメータの最適値とカメラ間の時間ずれの最適値を生成するパラメータ最適化方法であって、
前記パラメータ最適化方法は、
前記カメラiで撮影された映像から、フレーム時刻tにおける前記関節物体の関節jのカメラiの画像平面上の二次元位置J2D’(i,t,j)を推定する二次元位置推定ステップと、
前記二次元位置J2D’(i,t,j)から、カメラ間の時間ずれΔti_k(k=1, …, Nk、Nkは1以上の整数)と前記二次元位置J2D’(i,t,j)をカメラ間の時間ずれΔti_kに対するフレーム単位の時間ずれδti_kだけ時間方向にずらした補正済二次元位置J2D’(i,t+δti_k,j)を生成する時間ずれ生成ステップと
前記補正済二次元位置J2D’(i,t+δti_k,j)から、カメラiの外部パラメータの初期値とフレーム時刻t+δti_kにおける前記関節物体の関節j(j=1, …, Nj)の三次元位置J3D’(t+δti_k,j)の初期値、前記関節物体の関節ペアm(m=1, …, Nm)の関節長L(m)の初期値を推定する初期値推定ステップと、
前記時間ずれΔti_kと前記補正済二次元位置J2D’(i,t+δti_k,j)と前記カメラiの外部パラメータの初期値と前記三次元位置J3D’(t+δti_k,j)の初期値と前記関節長L(m)の初期値から、前記パラメータの最適値と前記時間ずれの最適値を生成する最適化ステップとを含み、
前記最適化ステップは、
前記補正済二次元位置J2D’(i,t+δti_k,j)から、前記補正済二次元位置J2D’(i,t+δti_k,j)の誤差強度P(J2D’(i,t+δti_k,j))を計算する誤差強度計算ステップと、
前記補正済二次元位置J2D’(i,t+δti_k,j)と前記三次元位置J3D’(t+δti_k,j)の初期値と前記誤差強度P(J2D’(i,t+δti_k,j))から、再投影誤差項を計算する再投影誤差項計算ステップと、
前記三次元位置J3D’(t+δti_k,j)の初期値と前記関節長L(m)の初期値から、関節長制約項を計算する関節長制約項計算ステップと、
前記三次元位置J3D’(t+δti_k,j)の初期値から、関節位置制約項を計算する関節位置制約項計算ステップと、
前記３つのパラメータのうち少なくとも１つのパラメータを最適化対象パラメータとして前記再投影誤差項と前記関節長制約項と前記関節位置制約項を用いて定義される誤差関数の値を最小化するように、前記最適化対象パラメータの最適値を生成し、このときの誤差関数の値である誤差関数値を計算し、当該誤差関数値と前記最適化対象パラメータと前記時間ずれΔti_kを出力する最適化処理ステップと、
前記誤差関数値が最小となる前記最適化対象パラメータの最適値と前記時間ずれΔti_kをそれぞれパラメータの最適値、時間ずれの最適値として出力する時間ずれ評価ステップとを含み、
前記誤差強度P(J2D’(i,t+δtk,j))を計算する式は、
前記三次元位置J3D’(t+δtk,j)をカメラiの画像平面上に投影した二次元位置J2D’(i,t+δtk,j)_repと前記補正済二次元位置J2D’(i,t+δtk,j)の誤差が小さい場合には誤差による影響を抑制し、誤差が大きくなるにしたがい誤差の影響を大きくする式である
パラメータ最適化方法。
【請求項７】
請求項１ないし４のいずれか１項に記載のパラメータ最適化装置としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の映像から関節物体の関節の三次元位置を含むパラメータの最適値を生成する技術に関する。
【背景技術】
【０００２】
人体の関節の三次元位置は、人間の動作やそのメカニズムを理解する上で重要である。関節の三次元位置を取得するため、一般には反射マーカや慣性センサを利用したモーションキャプチャシステムが利用されている。これらのシステムは解析対象となる人体に反射マーカや慣性センサを装着させる必要があるため、試合中のスポーツ選手の体に装着させることができないなど、利用シーンに制約が存在する。
【０００３】
一方、カメラ映像から関節の三次元位置を推定するアプローチも考えられる。これらは解析対象に非接触・非侵襲であるため、上記のような装着型のモーションキャプチャシステムが利用できないシーンでも関節の三次元位置が推定できるという利点がある。
【０００４】
一般に、カメラ映像から関節の三次元位置を推定する手法では複数のカメラを利用する。各カメラで撮影された映像を構成するフレームにおける関節の二次元座標値に基づいて三角測量することで、関節の三次元位置を推定する。この手法を適用するためには、複数のカメラの位置関係を示す外部パラメータを事前に推定することと、複数のカメラ間で同期がとれていることとが必要になる。なお、外部パラメータとは、カメラの姿勢を表す回転行列と、カメラの位置を表す並進ベクトルである。また、カメラの外部パラメータを求めることを外部キャリブレーションと呼ぶ。
【０００５】
通常、外部キャリブレーションでは、複数のカメラの共通視野に設置したチェスボードなど構造が既知の参照物体を利用する手法（参考非特許文献１）や共通視野に存在する物体の表面上の特徴が投影された特徴点（自然特徴点）の対応から外部パラメータを推定する手法（参考非特許文献２）が用いられる。
（参考非特許文献１：Zhengyou Zhang, “A Flexible New Technique for Camera Calibration”, IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol.22, Issue 11, pp.1330-1334, Nov. 2000.）
（参考非特許文献２：Sameer Agarwal, et al. ,”Building Rome in a Day”, Communications of the ACM, Vol.54, Issue 10, pp.105-112, Oct. 2011.）
【０００６】
しかしながら、例えば試合中のスポーツ選手の動作を解析する場合、複数のカメラの共通視野となるフィールド内にチェスボードを設置することは困難である。また、自然特徴点は見えの変化に弱く、例えば人体を真正面から撮影した場合や横から撮影した場合における共通の点の特徴量が大きく変化してしまい、対応が取れずに外部パラメータが推定できない、あるいは推定精度が著しく低下することが知られている。
【０００７】
これら参考非特許文献１や参考非特許文献２の手法が抱える問題に対し、非特許文献１では映像中の人体の関節位置を対応点として利用し、関節の二次元座標値からカメラの外部パラメータを推定する手法を提案している。この手法ではチェスボードを利用する必要はない。また、物体表面の特徴点ではなく人体の関節という体内に存在する共通の三次元モデルを仮定しているため、カメラ間の見えの変化が大きい場合にも概ね正しい対応点が取れるという利点がある。ここで、非特許文献１で対応点として利用している人体の関節位置を推定するため、非特許文献２にあるような、学習ベースの二次元画像上における関節推定手法を利用している。
【先行技術文献】
【非特許文献】
【０００８】
【非特許文献１】Jens Puwein, et al. ,”Joint Camera Pose Estimation and 3D Human Pose Estimation in a Multi-Camera Setup”, ACCV(Asian Conference on Computer Vision)2014, Springer, LNCS, Vol.9004, pp.473-487, 2014.
【非特許文献２】Zhe Cao, et al. , “Realtime Multi-Person 2D Pose Estimation Using Part Affinity Fields”, arXiv preprint arXiv:1611.08050, 2016.
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、関節位置は表面上不可視のため、非特許文献２による推定結果には5pxから10px程度の誤差が存在する。これはチェスボードを利用した手法の対応点の検出精度が1px程度であることに対して大きく、外部パラメータの推定精度に大きな影響を及ぼしてしまう。特に、非特許文献１では対応点が正しく検出されていることを前提に誤差関数を設計しているため、関節位置が誤差を含むときに外部パラメータや関節の三次元位置といったパラメータの推定精度が低下するという問題がある。
【００１０】
そこで本発明では、関節の二次元位置の推定誤差が大きい場合でも高精度なパラメータを生成することができるパラメータ最適化技術を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明の一態様は、Ncを2以上の整数、Njを2以上の整数、Nmを1以上の整数、iを1からNcまでの各整数、jを1からNjまでの各整数、mを1からNmまでの各整数とし、同一の関節物体を撮影するように設定されたNc台のカメラ1、…、カメラNcで撮影された映像から推定された、フレーム時刻tにおける前記関節物体の関節jのカメラiの画像平面上の二次元位置J2D’(i,t,j)とカメラiの外部パラメータの初期値とフレーム時刻tにおける前記関節物体の関節jの三次元位置J3D’(t,j)の初期値と前記関節物体の関節ペアmの関節長L(m)の初期値から、カメラiの外部パラメータ、フレーム時刻tにおける関節物体の関節jの三次元位置J3D’(t,j)、関節物体の関節ペアmの関節長L(m)の３つのパラメータのうち少なくとも１つのパラメータの最適値を生成する最適化部を含むパラメータ最適化装置であって、前記最適化部は、前記二次元位置J2D’(i,t,j)から、前記二次元位置J2D’(i,t,j)の誤差強度P(J2D’(i,t,j))を計算する誤差強度計算部と、前記二次元位置J2D’(i,t,j)と前記三次元位置J3D’(t,j)の初期値と前記誤差強度P(J2D’(i,t,j))から、再投影誤差項を計算する再投影誤差項計算部と、前記三次元位置J3D’(t,j)の初期値と前記関節長L(m)の初期値から、関節長制約項を計算する関節長制約項計算部と、前記三次元位置J3D’(t,j)の初期値から、関節位置制約項を計算する関節位置制約項計算部と、前記３つのパラメータのうち少なくとも１つのパラメータを最適化対象パラメータとして前記再投影誤差項と前記関節長制約項と前記関節位置制約項を用いて定義される誤差関数の値を最小化するように、前記最適値を生成する最適化処理部とを含み、前記誤差強度P(J2D’(i,t,j))を計算する式は、前記三次元位置J3D’(t,j)をカメラiの画像平面上に投影した二次元位置J2D’(i,t,j)_repと前記二次元位置J2D’(i,t,j)の誤差が小さい場合には誤差による影響を抑制し、誤差が大きくなるにしたがい誤差の影響を大きくする式である。
【発明の効果】
【００１２】
本発明によれば、関節の二次元位置の推定誤差が大きい場合でも高精度なパラメータを生成することが可能となる。
【図面の簡単な説明】
【００１３】
【図１】パラメータ最適化装置１００の構成を示すブロック図。
【図２】パラメータ最適化装置１００の動作を示すフローチャート。
【図３】被写体をカメラ群で撮影している様子を示す図。
【図４】人体の関節モデルの例を示す図。
【図５】関節の三次元位置と二次元位置の様子を示す図。
【図６】ニューラルネットワークを用いて関節の二次元位置を推定した様子を示す図。
【図７】初期値推定部１２０の構成を示すブロック図。
【図８】初期値推定部１２０の動作を示すフローチャート。
【図９】最適化部１３０の構成を示すブロック図。
【図１０】最適化部１３０の動作を示すフローチャート。
【図１１】二次元位置の分布の様子を示す図。
【図１２】再投影誤差項計算部１３２の動作の詳細を示す図。
【図１３】パラメータ最適化装置２００の構成を示すブロック図。
【図１４】パラメータ最適化装置２００の動作を示すフローチャート。
【図１５】最適化部２３０の構成を示すブロック図。
【図１６】最適化部２３０の動作を示すフローチャート。
【図１７】第三実施形態におけるカメラ配置の一例を示す図。
【図１８】パラメータ最適化装置３００の構成を示すブロック図。
【図１９】パラメータ最適化装置３００の動作を示すフローチャート。
【図２０】被写体同定部３１３の動作の詳細を示す図。
【発明を実施するための形態】
【００１４】
以下、本発明の実施の形態について、詳細に説明する。なお、同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
【００１５】
＜第一実施形態＞
以下、図１〜図２を参照してパラメータ最適化装置１００を説明する。図１は、パラメータ最適化装置１００の構成を示すブロック図である。図２は、パラメータ最適化装置１００の動作を示すフローチャートである。
【００１６】
パラメータ最適化装置１００には、複数のカメラで撮影された映像が入力される。これらのカメラは同一の被写体を撮影するように設定されている。例えば、図３は、関節の三次元位置の推定対象となる人の体が動くことを予定した領域を撮影するようにカメラ群が設定されている様子を示している。なお、被写体は人に限るものではなく、関節を持つ関節物体であればどのようなものでもよい。例えば、脊椎動物などの生命体であってもよいし、アンドロイドのようなロボットであってもよい。また、これらのカメラは、同期はとられているが、未校正であるものとする。
【００１７】
以下では、パラメータ最適化装置１００の入力となる映像は静止画の画像列として扱うこととする。一般に映像の長さは異なる（つまり、映像に含まれる静止画（フレーム）の数は異なる）が、以下では、同数のフレームを含むように映像が調整されているものとする。そこで、カメラの台数をNc（Ncは2以上の整数）、各映像に含まれる静止画（フレーム）の数をNt（Ntは2以上の整数）とし、カメラi(i=1, …, Nc)で撮影した映像を構成する画像列（フレームの列）をI(i,t)(t=1, …, Nt)と表すことにする。
【００１８】
カメラ1を基準となるカメラ、カメラ1の持つ座標系を世界座標系、カメラi(i=1, …, Nc)の外部パラメータである回転行列をRi、並進ベクトルをTiとする。なお、カメラi(i=1, …, Nc)の内部パラメータAiについては、既知とする。焦点距離、主点、レンズ歪みなどが内部パラメータであり、例えば、参考非特許文献１の方法で事前に推定しておけばよい。
【００１９】
図４は、人体の関節モデルの例を示す。図４(a)は14個の関節から成る関節モデル、図４(b)は16個の関節から成る関節モデルである。図４(a)において、例えば、関節３と関節４の関節のペア（前腕に相当）については、姿勢が変化してもその長さの変化量は非常に小さく、不変とみなすことができるが、関節１と関節１４の関節のペア（首に相当）については、姿勢が変化するとその長さの変化量は比較的大きいものと考えられる。同様に、関節ペア(2,3), (5,6), (6,7), (8,9), (9,10), (11,12), (12,13)については長さが不変とみなすことができる一方、関節ペア(1,14), (14,8), (8,11)は長さが不変として扱うことは適切ではないと考えられる。つまり、関節ペアには長さが変わるものとして扱うべきものと不変として扱うことができるものがある。関節モデルが異なることにより、関節の数や長さが不変として扱うことができる関節ペアの数は異なることとなるが、本実施形態の発明は、どのような関節モデルにも適用することが可能である。以下、あるフレーム時刻tにおける関節j(j=1, …, Nj、Njは2以上の整数)の三次元位置をJ3D(t,j)とする（図５参照）。関節jの三次元位置J3D(t,j)がカメラi(i=1, …, Nc)の画像平面上に投影された点の二次元位置をJ2D(i,t,j)とする。また、後述する二次元位置推定部１１０が推定した関節jの二次元位置をJ2D’(i,t,j)とする。姿勢が変化しても長さが不変として扱うことができる関節ペアの数をNm(Nmは1以上の整数)とする。ただし、Nmは想定する人体関節モデル及びそのモデル中で関節長を求める関節ペアの選択に依存する。
【００２０】
図１に示すようにパラメータ最適化装置１００は、二次元位置推定部１１０と、初期値推定部１２０と、最適化部１３０と、記録部１９０を含む。記録部１９０は、処理に必要な情報を適宜記録する構成部である。例えば、カメラi(i=1, …, Nc)で撮影された映像を記録する。オフライン処理を行う場合、記録部１９０はハードディスクドライブ(HDD)のような比較的低速なアクセス速度の記憶メディアでよい。また、オンライン処理を行う場合、記録部１９０はメモリのような比較的高速なアクセス速度の記憶メディアとするとよい。
【００２１】
以下、図２を参照して、パラメータ最適化装置１００の動作について説明する。二次元位置推定部１１０は、記録部１９０に記録しているカメラi(i=1, …, Nc)で撮影された映像を入力とし、フレーム時刻tにおける被写体（人体）の関節j(j=1, …, Nj)のカメラiの画像平面上の二次元位置J2D’(i,t,j)を推定し、出力する（Ｓ１１０）。以下、その処理内容について説明する。カメラiで撮影されたフレーム時刻tの画像I(i,t)に対し、カメラiの画像平面上の人体の関節jの二次元位置J2D’(i,t,j)を推定する。例えば、非特許文献２の記載にあるように、人手で付けた関節の二次元位置の正解データセットを用いて学習したニューラルネットワークを用いて、映像から自動的に人体の関節jの二次元位置J2D’(i,t,j)を推定してもよい。図６は、非特許文献２を用いて関節の二次元位置を推定した結果の一例を示す。なお、推定に失敗した場合はJ2D’(i,t,j)=NULLといった無効値を設定することとする。この処理をすべての映像のすべてのフレーム画像について実行する。つまり、カメラi(i=1, …, Nc)で撮影された映像のフレーム画像I(i,t)(t=1, …, Nt)について実行する。
【００２２】
なお、人手により関節jの二次元位置J2D’(i,t,j)を指定するようにしてもよい。具体的には映像を画像I(i,t)ごとに確認し、図４に示した関節位置が画像に映る人体のどこに対応するかを人手で指定し、その座標を二次元位置J2D’(i,t,j)とするようにしてもよい。
【００２３】
初期値推定部１２０は、Ｓ１１０で推定した二次元位置J2D’(i,t,j)を入力とし、カメラi(i=1, …, Nc)の外部パラメータRi, Tiの初期値、フレーム時刻tにおける人体の関節j(j=1, …, Nj)の三次元位置J3D’(t,j)の初期値、人体の関節ペアm(m=1, …, Nm)の関節長L(m)の初期値を推定し、出力する（Ｓ１２０）。
【００２４】
以下、図７〜図８を参照して初期値推定部１２０について説明する。図７は、初期値推定部１２０の構成を示すブロック図である。図８は、初期値推定部１２０の動作を示すフローチャートである。図７に示すように初期値推定部１２０は、有効二次元位置集合生成部１２１と、外部パラメータ初期値推定部１２２と、三次元位置初期値推定部１２３と、関節長初期値推定部１２４を含む。
【００２５】
有効二次元位置集合生成部１２１は、Ｓ１１０で推定した二次元位置J2D’(i,t,j)を入力とし、有効二次元位置集合J2D_valid_iを生成し、出力する（Ｓ１２１）。有効二次元位置集合J2D_valid_iは、以下説明する各初期値の推定に用いる二次元位置の集合である。カメラiの二次元位置J2D’(i,t,j)の集合をJ2D_i（以下、二次元位置集合という）とすると、集合J2D_valid_iは集合J2D_iの部分集合となる。有効二次元位置集合J2D_valid_iは、以下のようにして生成する。すべてのカメラiに対して、フレーム時刻tにおける関節jの二次元位置J2D’(i,t,j)が有効値である場合（つまり、NULLのような無効値でない場合）、その二次元位置J2D’(i,t,j)をそれぞれ有効二次元位置集合J2D_valid_iに加える。この処理をすべてのフレーム時刻t、すべての関節jに対して行い、有効二次元位置集合J2D_valid_iを生成する。
【００２６】
外部パラメータ初期値推定部１２２は、Ｓ１２１で生成した有効二次元位置集合J2D_valid_iを入力とし、カメラiの外部パラメータRi, Tiの初期値を推定し、出力する（Ｓ１２２）。具体的には、以下のようにして推定する。まず、世界座標系となるカメラ1の有効二次元位置集合J2D_valid_1と、カメラi（i≠1）の有効二次元位置集合J2D_valid_iを用いて、カメラiの外部パラメータRi, Tiを推定する。外部パラメータを用いる手法はどのような手法でもよいが、例えば、参考非特許文献３の方法を用いることができる。すなわち、集合J2D_valid_1と集合J2D_valid_iに対して８ポイントアルゴリズム(8-point algorithm)を適用してカメラiの基礎行列Fiを求め、この基礎行列Fiを分解することによりカメラiの外部パラメータを求める。その他、参考非特許文献４に示されているような５ポイントアルゴリズム(5-point algorithm)を用いても外部パラメータを求めることができる。
（参考非特許文献３：Richard Hartley and Andrew Zisserman, “ Multiple View Geometry in Computer Vision Second Edition”, Cambridge University Press, 2003.）
（参考非特許文献４：David Nister, “An Efficient Solution to the Five-Point Relative Pose Problem”, IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol.26, Issue 6, pp.756-770, 2004.）
【００２７】
なお、８ポイントアルゴリズム、５ポイントアルゴリズムを利用するためには、それぞれNj*Nt≧8、Nj*Nt≧5である必要がある。
【００２８】
次に、他のカメラの外部パラメータを求める。この外部パラメータを求める手法はどのような手法でもよい。例えば、上述したように、カメラ1の有効二次元位置集合J2D_valid_1とカメラn(n=2, …, Nc, n≠i)の有効二次元位置集合J2D_valid_nに対して８ポイントアルゴリズムまたは５ポイントアルゴリズムを適用して外部パラメータを推定してもよい。また、先に求めたカメラiの外部パラメータを用いて推定することもできる。具体的には、DLT(Direct Linear Transformation)法（参考非特許文献３参照）を用いて、集合J2D_valid_1と集合J2D_valid_iに関する対応点の二次元位置のペアとカメラiのカメラパラメータから三角測量をすることで、対応点の三次元座標値を推定し、三次元位置集合J3D_validを生成する。次に集合J3D_validと集合J2D_valid_nの間で、ある点の三次元座標値とその投影像の二次元座標値の対応から三次元座標値を表す座標系とカメラ座標系の間の外部パラメータを求めるPnP問題（参考非特許文献５参照）を解くことで、カメラnの外部パラメータを求める。
（参考非特許文献５：Vincent Lepetit, et val. ,”EPnP: An Accurate O(n) Solution to the PnP problem”, International Journal of Computer Vision, Vol.81, pp.155-166, 2009.）
【００２９】
三次元位置初期値推定部１２３は、Ｓ１２１で生成した有効二次元位置集合J2D_valid_iを入力とし、三次元位置J3D’(t,j)の初期値を推定し、出力する（Ｓ１２３）。関節の三次元位置を求める手法はどのようなものでもよい。例えば、上述したように、集合J2D_valid_1と集合J2D_valid_iに対してDLT法を適用して求めた三次元位置をJ3D’(t,j)としてもよい。また、すべての有効二次元位置集合J2D_valid_iのペアに対してDLT法を適用し、それぞれ対応する関節の三次元位置の平均をJ3D’(t,j)としてもよい。なお、集合J2D_valid_iに含まれなかった、すなわちいずれかの映像で二次元位置が推定できなかったフレーム時刻tにおける関節jの三次元位置J3D’(t,j)については、J3D’(t,j)=NULLと設定することとする。
【００３０】
関節長初期値推定部１２４は、Ｓ１２３で推定した三次元位置J3D’(t,j)の初期値を入力とし、関節ペアm(m=1,…,Nm)の関節長L(m)の初期値を推定し、出力する（Ｓ１２４）。ここで、長さが変わらないと思われる関節ペアの集合をL_constとする。関節長初期値推定部１２４は、三次元位置J3D'(t,j)の初期値を用いて、集合L_constに含まれる関節ペアの関節長を求める。関節長の求め方はどのようなものでもよいが、例えば、関節ペア(2,3)の関節長を求める場合、すべてのフレーム時刻に関して|J3D'(t,2)-J3D'(t,3)|を計算し、その平均をとってもよい。また、平均の代わりに、中央値、最大値、最小値を求める関節長としてもよい。
【００３１】
外部パラメータ初期値推定部１２２が推定したカメラiの外部パラメータRi, Ti、三次元位置初期値推定部１２３が推定した三次元位置J3D’(t,j)、関節長初期値推定部１２４が推定した関節長L(m)をそのまま初期値推定部１２０の出力とする代わりに、外部パラメータRi, Tiと三次元位置J3D’(t,j)については、再投影誤差が最小になるように外部パラメータの非線形最適化を行なうバンドルアジャストメント（参考非特許文献６参照）を適用して得られた外部パラメータと三次元位置を関節長初期値推定部１２４が推定した関節長L(m)とともに初期値として出力するようにしてもよい。
（参考非特許文献６：Bill Triggs, et al. ,”Bundle Adjustment-a Modern Synthesis”, ICCV99, Proceeding of the International Workshop on Vision Algorithms: Theory and Practice. Springer, pp.298-372, 1999.）
【００３２】
この場合、初期値推定部１２０は、さらにバンドルアジャストメント部１２５（図示しない）を含み、バンドルアジャストメント部１２５は、Ｓ１２２で推定したカメラiの外部パラメータRi, Ti、Ｓ１２３で推定した三次元位置J3D’(t,j)を入力とし、バンドルアジャストメントすることにより、カメラiの外部パラメータRi, Tiの初期値と三次元位置J3D’(t,j)の初期値を生成し、出力する（Ｓ１２５）。
【００３３】
最適化部１３０は、Ｓ１１０で推定した二次元位置J2D’(i,t,j)とＳ１２０で推定したカメラiの外部パラメータRi, Tiの初期値と三次元位置J3D’(t,j)の初期値と関節長L(m)の初期値を入力とし、カメラiの外部パラメータ、フレーム時刻tにおける関節物体の関節jの三次元位置J3D’(t,j)、関節物体の関節ペアmの関節長L(m)の３つのパラメータのうち少なくとも１つのパラメータの最適値を生成し、出力する（Ｓ１３０）。最適化部１３０は、まず、再投影誤差項、関節長制約項、関節位置制約項という３つの項を計算し、次に、カメラiの外部パラメータとフレーム時刻tにおける関節物体の関節jの三次元位置J3D’(t,j)と関節物体の関節ペアmの関節長L(m)の３つのパラメータのうち少なくとも１つのパラメータを最適化対象パラメータとして、上記３つの項を用いて定義される誤差関数を用いてパラメータの最適化処理を行う。ここで、最適化とは、誤差関数の値を最小化するパラメータ値を最適値として求めることである。
【００３４】
以下、図９〜図１０を参照して最適化部１３０について説明する。図９は、最適化部１３０の構成を示すブロック図である。図１０は、最適化部１３０の動作を示すフローチャートである。図９に示すように最適化部１３０は、誤差強度計算部１３１と、再投影誤差項計算部１３２と、関節長制約項計算部１３３と、関節位置制約項計算部１３４と、最適化処理部１３５を含む。
【００３５】
誤差強度計算部１３１は、Ｓ１１０で推定した二次元位置J2D’(i,t,j)を入力とし、二次元位置J2D’(i,t,j)の誤差強度P(J2D’(i,t,j))を計算し、出力する（Ｓ１３１）。誤差強度P(J2D’(i,t,j))は、後述する再投影誤差e_rep(i,t,j)を計算する際に誤差の大きさを調整するためのパラメータである。ここで、誤差とは、三次元位置J3D’(t,j)をカメラiの画像平面上に投影した二次元位置J2D’(i,t,j)_repと二次元位置J2D’(i,t,j)の誤差のことである。誤差強度を計算する式は、誤差の影響が出にくくなるような式であれば、どのようなものでもよい。例えば、誤差強度P(J2D'(i,t,j))を成分ごとに以下のように定めてもよい（図１１参照）。この誤差強度P(J2D’(i,t,j))を計算する式は、三次元位置J3D’(t,j)をカメラiの画像平面上に投影した二次元位置J2D’(i,t,j)_repと二次元位置J2D’(i,t,j)の誤差の大きさにしたがってその誤差による影響を変化させる式である。具体的には誤差が小さい場合には誤差による影響を抑制し、誤差が大きくなるにしたがい誤差の影響を大きくする式である。ここで、誤差が小さい場合とは、例えば誤差が小さいことを示す所定の範囲内であること、つまり、誤差が閾値以下となるか、閾値より小さくなることである。例えば、誤差のx成分、y成分に対して、所定の範囲を示す閾値をそれぞれσ_x、σ_yとすると、誤差が小さいことを示す所定の範囲内であることとは、誤差のx成分が閾値σ_xよりもが小さくなり（閾値σ_x以下となり）、誤差のy成分が閾値σ_yよりもが小さくなる（閾値σ_y以下となる）ことである。なお、誤差が大きくなるにしたがい誤差の影響を大きくする代わりに、上記所定の範囲外の誤差であればそのまま誤差を与えるようにしてもよい。次式はこのような式になっている。
【００３６】
【数１】
2019079487.tif 000003
【００３７】
ただし、g_x(α)は平均0、分散σ_x2を持つ正規分布の確率密度関数、g_y(α)は平均0、分散σ_y2を持つ正規分布の確率密度関数である。ここで、σ_x、σ_yは、例えば人体の関節位置のシミュレーションデータを用いて作成した人体のCG画像に対して非特許文献２などの関節位置推定手法を適用し、そのときの推定値と真値の誤差から求めてもよい。あるいは、σ_x、σ_yを用いた様々なテストデータについて外部パラメータを求め、外部パラメータの精度が最もよいときのσ_x、σ_yの値を上記確率密度関数のσ_x、σ_yとして定めるようにしてもよい。また、J2D’(i,t,j)_x、J2D'(i,t,j)_yはそれぞれJ2D’(i,t,j)のx成分、y成分である。J2D’(i,t,j)_rep_x、J2D’(i,t,j)_rep_yはそれぞれJ3D’(i,t,j)をカメラiの画像平面上に投影したときの二次元位置J2D'(i,t,j)_repのx成分、y成分である。二次元位置J2D'(i,t,j)_repは、以下のように計算される同次座標J2D'(i,t,j)_rep_hから求めることができる。
【００３８】
【数２】
2019079487.tif 000004
【００３９】
なお、Aiはカメラiの内部パラメータからなる３行３列の行列である。
【００４０】
この誤差強度を有効値であるすべての二次元位置J2D'(i,t,j)について求める。
【００４１】
再投影誤差項計算部１３２は、Ｓ１１０で推定した二次元位置J2D’(i,t,j)、Ｓ１２０で推定した三次元位置J3D’(t,j)の初期値、Ｓ１３１で計算した誤差強度P(J2D’(i,t,j))を入力とし、再投影誤差項E_repを計算し、出力する（Ｓ１３２）。誤差強度を用いて再投影誤差項を計算することにより、関節の二次元位置が正しく推定されていない場合（推定誤差が大きい場合）でも、その影響を受けにくくする。以下、図１２を参照して、再投影誤差項計算部１３２の動作を説明する。
【００４２】
（ステップ１）
三次元位置J3D'(t,j)をカメラiの画像平面上に投影し二次元位置J2D'(i,t,j)_repを計算する。 
【００４３】
（ステップ２）
ステップ１で計算した二次元位置J2D'(i,t,j)_rep、入力である二次元位置J2D'(i,t,j)と誤差強度P(J2D'(i,t,j))から、再投影誤差e_rep(i,t,j)を計算する。再投影誤差e_rep(i,t,j)は以下のように計算することができる。
【００４４】
【数３】
2019079487.tif 000005
【００４５】
なお、誤差強度P(J2D'(i,t,j))が成分ごとに定められる場合は、再投影誤差e_rep(i,t,j)を計算する式のP(J2D'(i,t,j))(J2D'(i,t,j)-J2D'(i,t,j)_rep)は次式のように成分ごとの積を要素とする二次元座標である。
【００４６】
【数４】
2019079487.tif 000006
【００４７】
（ステップ３）
三次元位置J3D'(t,j)について、ステップ１およびステップ２をすべてのカメラについて計算したか否かを判定する。すべてのカメラについて計算が済んでいた場合はステップ４に移り、そうでない場合はステップ１に戻り、計算が済んでいないカメラについてステップ１およびステップ２を実行する。
【００４８】
（ステップ４）
ステップ１からステップ３について、すべての三次元位置J3D'(t,j)に対して計算したか否かを判定する。すべての三次元位置について計算が済んでいた場合はステップ５に移り、そうでない場合はステップ１に戻り、計算が済んでいない三次元位置についてステップ１、ステップ２、ステップ３を実行する。
【００４９】
（ステップ５）
ステップ４までで計算した再投影誤差e_rep(i,t,j)を用いて再投影誤差項E_repを計算する。例えば、すべてのe_rep(i,t,j)の平均を再投影誤差項E_repとしてもよい。また、平均の代わりに、すべてのe_rep(i,t,j)の中央値、最大値、最小値のいずれかを再投影誤差項E_repとするようにしてもよい。
【００５０】
関節長制約項計算部１３３は、Ｓ１２０で推定した三次元位置J3D’(t,j)の初期値と関節長L(m)の初期値を入力とし、関節長制約項E_lengthを計算し、出力する（Ｓ１３３）。関節長制約項E_lengthは、どのような姿勢でも特定の関節間の長さ（関節ペアの関節長）は変わらないという制約を表す項である。具体的には、関節長制約項E_lengthを以下のように計算する。
【００５１】
【数５】
2019079487.tif 000007
【００５２】
なお、m1、m2は、それぞれ集合L_constのm番目のペアである関節ペアmの一つ目の関節の番号と二つ目の関節の番号を表す。
【００５３】
関節位置制約項計算部１３４は、Ｓ１２０で推定した三次元位置J3D’(t,j)を入力とし、関節位置制約項E_motionを計算し、出力する（Ｓ１３４）。関節位置制約項E_motionは、関節の三次元位置は時間方向に滑らかに変化するという制約を表す項である。具体的には、以下のように計算する。まず、三次元位置J3D’(t,j)に対してスムージング処理を施し、三次元位置J3D’(t,j)_smoothを得る。このとき用いるスムージング処理はどのような処理でもよい。例えば関節jに関して時間方向にカルマンフィルタを適用してもよい。あるいは、パーティクルフィルタやスプライン補間を適用してもよい。三次元位置J3D’(t,j)と三次元位置J3D’(t,j)_smoothを用い、関節位置制約項E_motionを以下のように計算する。
【００５４】
【数６】
2019079487.tif 000008
【００５５】
最適化処理部１３５は、カメラiの外部パラメータ、フレーム時刻tにおける関節物体の関節jの三次元位置J3D’(t,j)、関節物体の関節ペアmの関節長L(m)の３つのパラメータのうち少なくとも１つのパラメータを最適化対象パラメータとして、Ｓ１３２で計算した再投影誤差項E_rep、Ｓ１３３で計算した関節長制約項E_length、Ｓ１３４で計算した関節位置制約項E_motionを用いて定義される誤差関数の値を最小化するように、最適化対象パラメータの最適値を生成し、出力する（Ｓ１３５）。具体的には、以下のように最適化する。まず、最適化処理を行う誤差関数を以下のように定める。
【００５６】
【数７】
2019079487.tif 000009
【００５７】
ただし、λ1,λ2,λ3は各項にかかる非零の係数である。これらの係数λ1,λ2,λ3は、例えば、シミュレーションデータを用いてこれらの様々な組み合わせについて外部パラメータおよび三次元位置を計算し、外部パラメータと三次元位置の推定精度の誤差が最も小さい組み合わせの係数とするのでよい。
【００５８】
誤差関数の最適化において、カメラiの外部パラメータ、フレーム時刻tにおける人体の関節jの三次元位置J3D’(t,j)、人体の関節ペアmの関節長L(m)の３つのパラメータのうち最適値を求めたいパラメータを最適化対象パラメータとする。最適化処理に関してはどのような手法を用いてもよく、例えばニュートン法を用いることができる。また、Levenberg-Marquardt法を用いてもよい。この誤差関数の値を最小化するパラメータの値を最適値とし、出力する。
【００５９】
本実施形態の発明によれば、関節の二次元位置の推定誤差が大きい場合でも高精度なパラメータを生成することが可能となる。
【００６０】
＜第二実施形態＞
第一実施形態では、同期がとれているカメラで撮影された映像を入力とした。このような映像は、同期撮影の機能を有するカメラをケーブルで接続し、撮影することができるが、このようなカメラは非常に高価でありコストの問題が生じる。そこで、参考非特許文献７では音を利用することでカメラ間の同期を取る方法を提案している。
（参考非特許文献７：Nils Hasler, et al. ,”Markerless Motion Capture with Unsynchronized Moving Cameras”, Computer Vision and Pattern Recognition, 2009. CVPR 2009, IEEE Conference on. IEEE, June 2009.）
【００６１】
しかし、参考非特許文献７のように音を用いて同期をとる方法は、スタジアムのような広域の空間では音がマイクに届くまでに時差が存在するため、正しい時間ずれを推定することが難しいという問題がある。
【００６２】
そこで、第二実施形態では、カメラ間の同期がとられていない場合（つまり、時間ずれが存在する場合）において、外部キャリブレーションに加えて時間キャリブレーションを行う形態について述べる。
【００６３】
以下、図１３〜図１４を参照してパラメータ最適化装置２００を説明する。図１３は、パラメータ最適化装置２００の構成を示すブロック図である。図１４は、パラメータ最適化装置２００の動作を示すフローチャートである。
【００６４】
パラメータ最適化装置２００には、複数のカメラで撮影された映像が入力される。これらのカメラは、同一の被写体を撮影するように設定されている。また、これらのカメラは、同期がとられておらず、未校正であるものとする。つまり、複数のカメラ間で同期がとられていない点において、パラメータ最適化装置１００と異なる。
【００６５】
図１３に示すようにパラメータ最適化装置２００は、二次元位置推定部１１０と、時間ずれ生成部２１５と、初期値推定部１２０と、最適化部２３０と、記録部１９０を含む。
【００６６】
以下、図１４を参照して、パラメータ最適化装置２００の動作について説明する。二次元位置推定部１１０は、記録部１９０に記録しているカメラi(i=1, …, Nc)で撮影された映像を入力とし、フレーム時刻tにおける被写体（人体）の関節j(j=1, …, Nj)のカメラiの画像平面上の二次元位置J2D’(i,t,j)を推定し、出力する（Ｓ１１０）。
【００６７】
時間ずれ生成部２１５は、Ｓ１１０で推定した二次元位置J2D’(i,t,j)を入力とし、カメラ間の時間ずれΔti_k(k=1, …, Nk、Nkは1以上の整数)と二次元位置J2D’(i,t,j)をカメラ間の時間ずれΔti_kに対するフレーム単位の時間ずれδti_kだけ時間方向にずらした補正済二次元位置J2D’(i,t+δti_k,j)を生成し、出力する（Ｓ２１５）。カメラ間の時間ずれΔti_kは、基準となるカメラ1とカメラiとの時間のずれである。以下、処理内容について詳細に説明する。まず、カメラ間の時間ずれΔti_kをNk個生成する。カメラ間の時間ずれΔti_kに対するフレーム単位の時間ずれδti_kを以下のように計算する。
【００６８】
【数８】
2019079487.tif 000010
【００６９】
ただし、fpsは映像のフレームレート数を表す。
【００７０】
次に、二次元位置J2D’(i,t,j)をフレーム単位の時間ずれδti_kだけ時間方向にずらした補正済二次元位置J2D’(i,t+δti_k,j)を生成する。補正済二次元位置J2D’(i,t+δti_k,j)はどのように生成してもよく、例えば、線形補間を用いることができる。あるフレーム時刻tにおける二次元位置J2D’(i,t,j)と次のフレーム時刻t+1の二次元位置J2D’(i,t+1,j)がいずれも有効値である場合、次式により、補正済二次元位置J2D’(i,t+δti_k,j)が求められる。
【００７１】
【数９】
2019079487.tif 000011
【００７２】
線形補間の代わりに、連続する数フレームを用いてスプライン補間あるいはラグランジュ補間を行った上で、フレーム単位の時間ずれδti_kだけずらした二次元位置を補正済二次元位置J2D’(i,t+δti_k,j)としてもよい。
【００７３】
なお、δti_1=0とすることにより、補正済二次元位置J2D’(i,t+δti_k,j)(k=1, …, Nk)は二次元位置J2D’(i,t,j)を含む。
【００７４】
初期値推定部１２０は、Ｓ２１５で生成した補正済二次元位置J2D’(i,t+δti_k,j)を入力とし、カメラi(i=1, …, Nc)の外部パラメータRi, Tiの初期値、フレーム時刻t+δti_kにおける人体の関節j(j=1, …, Nj)の三次元位置J3D’(t+δti_k,j)の初期値、人体の関節ペアm(m=1, …, Nm)の関節長L(m)の初期値を推定し、出力する（Ｓ１２０）。
【００７５】
最適化部２３０は、Ｓ２１５で生成した時間ずれΔti_kと補正済二次元位置J2D’(i,t+δti_k,j)とＳ１２０で推定したカメラiの外部パラメータRi, Tiの初期値と三次元位置J3D’(t+δti_k,j)の初期値と関節長L(m)の初期値を入力とし、カメラiの外部パラメータ、フレーム時刻tにおける関節物体の関節jの三次元位置J3D’(t,j)、関節物体の関節ペアmの関節長L(m)の３つのパラメータのうち少なくとも１つのパラメータの最適値と時間ずれΔti_kの最適値を生成し、出力する（Ｓ２３０）。
【００７６】
以下、図１５〜図１６を参照して最適化部２３０について説明する。図１５は、最適化部２３０の構成を示すブロック図である。図１６は、最適化部２３０の動作を示すフローチャートである。図１５に示すように最適化部２３０は、誤差強度計算部１３１と、再投影誤差項計算部１３２と、関節長制約項計算部１３３と、関節位置制約項計算部１３４と、最適化処理部２３５と、時間ずれ評価部２３６を含む。
【００７７】
誤差強度計算部１３１は、Ｓ２１５で生成した補正済二次元位置J2D’(i,t+δti_k,j)を入力とし、補正済二次元位置J2D’(i,t+δti_k,j)の誤差強度P(J2D’(i,t+δti_k,j))を計算し、出力する（Ｓ１３１）。
【００７８】
再投影誤差項計算部１３２は、Ｓ２１５で生成した補正済二次元位置J2D’(i,t+δti_k,j))、Ｓ１２０で推定した三次元位置J3D’(t+δti_k,j)の初期値、Ｓ１３１で計算した誤差強度P(J2D’(i,t+δti_k,j))を入力とし、再投影誤差項E_repを計算し、出力する（Ｓ１３２）。
【００７９】
関節長制約項計算部１３３は、Ｓ１２０で推定した三次元位置J3D’(t+δti_k,j)の初期値と関節長L(m)の初期値を入力とし、関節長制約項E_lengthを計算し、出力する（Ｓ１３３）。
【００８０】
関節位置制約項計算部１３４は、Ｓ１２０で推定した三次元位置J3D’(t+δti_k,j)の初期値を入力とし、関節位置制約項E_motionを計算し、出力する（Ｓ１３４）。
【００８１】
最適化処理部２３５は、カメラiの外部パラメータ、フレーム時刻tにおける関節物体の関節jの三次元位置J3D’(t,j)、関節物体の関節ペアmの関節長L(m)の３つのパラメータのうち少なくとも１つのパラメータを最適化対象パラメータとして、Ｓ１３２で計算した再投影誤差項E_rep、Ｓ１３３で計算した関節長制約項E_length、Ｓ１３４で計算した関節位置制約項E_motionを用いて定義される誤差関数の値を最小化するように、最適化対象パラメータの最適値を生成し、このときの誤差関数の値である誤差関数値を計算し、当該誤差関数値と最適化対象パラメータと時間ずれΔti_kを出力する（Ｓ２３５）。なお、上記誤差関数は式(1)で定義される誤差関数である。
【００８２】
時間ずれ評価部２３６は、Ｓ２３５で計算した誤差関数値のうち、誤差関数値が最小となる最適化対象パラメータの最適値と時間ずれΔti_kをそれぞれパラメータの最適値、時間ずれの最適値として出力する（Ｓ２３６）。
【００８３】
本実施形態の発明によれば、同期がとられていないカメラで撮影された映像を入力として関節の二次元位置の推定誤差が大きくなった場合でも高精度なパラメータを生成することが可能となる。また、同時にカメラ間の時間ずれを推定することにより、時間キャリブレーションを行うことができる。
【００８４】
（変形例）
パラメータ最適化装置１００やパラメータ最適化装置２００は、カメラi(i=1, …, Nc)で撮影された映像を記録した記録部を内部に含む構成としたが、必ずしもそのような構成である必要はない。したがって、例えば、パラメータ最適化装置がネットワークを介して記録部と接続するような形態であってもよい。このような構成とすることにより、遠隔地で撮影された映像に対してもパラメータ最適化処理が可能となる。
【００８５】
また、カメラi(i=1, …, Nc)で撮影された映像を記録した記録部に加えて二次元位置推定部１１０も外部にある構成としてもよい。つまり、カメラi(i=1, …, Nc)で撮影された映像を記録した記録部と二次元位置推定部１１０を含む二次元位置推定装置と初期値推定部１２０と最適化部１３０と記録部を含むパラメータ最適化装置とをネットワークを介して接続するようにしてもよい。このような構成とすることにより、記録部のみを外部におく構成に比して、ネットワーク上のトラフィック量を削減することが可能となる。
【００８６】
なお、ネットワークが存在する箇所は上記の例に限られるものではなく、パラメータ最適化装置の構成部の間に１つ以上ネットワークを置くことにより機能分散させ、パラメータ最適化処理を行うようにしてもよい。
【００８７】
＜第三実施形態＞
第二実施形態では、複数のカメラが同一の被写体を撮影するように設定されていることを前提として、これらのカメラ間で同期をとる。
【００８８】
ここで、図１７に示すように、野球におけるピッチャーやバッターの姿勢を推定し、ピッチャーやバッターの姿勢の変化や動作のタイミングを分析することを考える。対象となる被写体が複数存在し、かつ、これらの被写体が離れている場合に、図１７に示すような位置に設置されたカメラ0で複数の被写体を撮影しようとすると、画角に入り切らない、あるいは、画角に入ったとしても各被写体が小さく映ってしまう。その結果、画角に入ったとしても、各被写体は小さく映るため、姿勢の推定精度が低下するという問題がある。
【００８９】
一方、カメラ1とカメラ1’の組、カメラ2とカメラ2’の組のように被写体ごとに大きく撮影するように設置する場合には、各被写体の姿勢を高精度に推定できるものの、カメラ1とカメラ1’の組、カメラ2とカメラ2’の組はそれぞれ異なる被写体を撮影しているため、異なる被写体を撮影するカメラ間での同期はとれない。このため被写体の動作のタイミングを分析できないという問題がある。
【００９０】
そこで、第三実施形態では、カメラ1、カメラ2のように各被写体を大きく撮影するカメラに加えて、カメラ3のように各被写体を比較的大きく撮影し、複数の被写体を同時に撮影するカメラを用いることにより、被写体の姿勢を高精度に推定できかつカメラ間で同期をとることができる形態について説明する。なお、複数の被写体を撮影するカメラは、各被写体を画像平面上においてより大きく撮影できるような位置に設置されることが好ましい。図１７の例で言えば、カメラ0よりカメラ3のような位置に設置されることが好ましい。また、以下、被写体は、第一実施形態や第二実施形態と同様、人を含む関節物体である。
【００９１】
以下、図１８〜図１９を参照してパラメータ最適化装置３００を説明する。図１８は、パラメータ最適化装置３００の構成を示すブロック図である。図１９は、パラメータ最適化装置３００の動作を示すフローチャートである。
【００９２】
パラメータ最適化装置３００には、複数のカメラで撮影された映像が入力される。これらのカメラは、少なくとも１つの被写体を撮影するように設定されている。また、これらのカメラのうち、少なくとも１つのカメラは、複数の被写体を撮影するように設定されている。更に、これらのカメラは、同期がとられておらず、未校正であるものとする。
【００９３】
以下では、被写体の関節の二次元位置の集合を被写体の二次元姿勢、被写体の関節の三次元位置の集合を被写体の三次元姿勢という。例えば、フレーム時刻tにおけるカメラiでの被写体の二次元姿勢p’(i,t)は、p’(i,t)={J2D’(i,t,j)|j=1, …, Nj}となる。
【００９４】
図１８に示すようにパラメータ最適化装置３００は、二次元位置推定部１１０と、被写体同定部３１３と、時間ずれ生成部２１５と、初期値推定部１２０と、最適化部２３０と、記録部１９０を含む。
【００９５】
以下、図１９を参照して、パラメータ最適化装置３００の動作について説明する。
【００９６】
二次元位置推定部１１０は、記録部１９０に記録しているカメラi(i=1, …, Nc)で撮影された映像を入力とし、フレーム時刻tにおける被写体の関節j(j=1, …, Nj)のカメラiの画像平面上の二次元位置J2D’(i,t,j)を推定し、フレーム時刻tにおけるカメラiでの被写体の二次元姿勢p’(i,t)の集合を生成し、これを出力する（Ｓ１１０）。例えば、図１７のカメラ3のように、複数の被写体を撮影するよう設定されているカメラでは、すべての被写体について、その二次元姿勢を出力する。また、図１７のカメラ1のように、１つの被写体を撮影するよう設定されているカメラでは、当該被写体についての二次元姿勢のみを出力する。つまり、二次元姿勢p’(i,t)の集合の濃度は、フレーム時刻tにおいてカメラiで撮影された被写体の数と一致する。
【００９７】
被写体同定部３１３は、Ｓ１１０の入力であるカメラi(i=1, …, Nc)で撮影された映像とＳ１１０で生成した被写体の二次元姿勢p’(i,t)の集合を入力とし、カメラiでの被写体の二次元姿勢群p’(i)を生成し、更に被写体ごとの二次元姿勢群の集合p’を生成し、出力する（Ｓ３１３）。ここで、p’(i)={p’(i,t)|t=1, …, Nt}である。つまり、カメラiでの被写体の二次元姿勢群p’(i)は、カメラiで撮影された映像の各フレームに含まれる被写体の二次元姿勢p’(i,t)を要素とする集合である。また、p’={p’(i)| i=1, …, Nc}である。つまり、被写体ごとの二次元姿勢群の集合p’は、カメラiでの被写体の二次元姿勢群p’(i)を要素とする集合である。したがって、被写体同定部３１３は、各カメラで撮影された被写体の二次元姿勢を時間方向に対応付けることにより、各カメラでの被写体の二次元姿勢群を生成し、あるカメラで撮影された被写体の二次元姿勢群が別のカメラで撮影された被写体の二次元姿勢群のいずれと対応するかを判定する（つまり、カメラ間で被写体の二次元姿勢群を対応付ける）ことにより、被写体ごとの二次元姿勢群の集合を生成し、出力する。以下、図２０を参照して、被写体同定部３１３の動作を説明する。
【００９８】
（ステップ１）
あるカメラについて、被写体ごとに、時間方向に二次元姿勢を対応付ける。この処理は、例えば、フレーム時刻tにおける２つの被写体の二次元姿勢p1(t), p2(t)とフレーム時刻t+1における２つの被写体の二次元姿勢q1(t+1), q2(t+1)に対して、同一被写体の二次元姿勢を対応付ける処理である。つまり、ある被写体（例えば、ピッチャー）の二次元姿勢はp1(t)とq2(t+1)であり、別の被写体（例えば、バッター）の二次元姿勢はp2(t)とq1(t+1)であるというように、被写体ごとに時間方向に二次元姿勢を対応付ける処理に該当する。この対応付けには、どのような方法を用いてもよい。例えば、二次元姿勢p1(t)での関節jの二次元位置p1(t,j)、二次元姿勢q1(t+1)での関節jの二次元位置q1(t+1,j)、二次元姿勢q2(t+1)での関節jの二次元位置q2(t+1,j)に対して、距離|q1(t+1,j)-p1(t,j)|と距離|q2(t+1,j)-p1(t,j)|を計算し、これらの距離のうち、最小となるフレーム時刻t+1における二次元姿勢を、同一の被写体のものとして対応付ける。別の方法として、二次元姿勢における関節長の平均、二次元姿勢の重心位置の距離を用いることにより、対応付けをおこなってもよい。
【００９９】
（ステップ２）
ステップ１の処理をすべての二次元姿勢について実行したか否かを判定する。すべての二次元姿勢について処理を実行していた場合はステップ３に移り、そうでない場合はステップ１に戻り、処理が実行されていない二次元姿勢についてステップ１の処理を実行する。
【０１００】
（ステップ３）
ステップ１及びステップ２の処理をすべてのカメラについて実行したか否かを判定する。すべてのカメラについて処理を実行していた場合はステップ４に移り、そうでない場合はステップ１に戻り、処理が実行されていないカメラについてステップ１の処理を実行する。
【０１０１】
ステップ３までの処理が終了した時点において、各カメラiでの被写体の二次元姿勢p’(i,t)は、被写体ごとに時間方向に対応づいている。つまり、カメラiでの被写体の二次元姿勢群p’(i)が生成されている。ステップ４では、カメラiでの被写体の二次元姿勢群p’(i)と別のカメラi~での被写体の二次元姿勢群p’(i~)を同一の被写体ごとに対応付ける。なお、カメラiとカメラi~の間の時間ずれは、高々数フレーム程度であることが好ましい。
【０１０２】
（ステップ４）
あるカメラiでの被写体の二次元姿勢群と別のカメラi~での被写体の二次元姿勢群を対応付ける。この対応付けには、どのような方法を用いてもよい。例えば、対応付けの対象となる二次元姿勢群の生成に用いた映像間（つまり、カメラiで撮影された映像とカメラi~で撮影された映像の間）での類似度を計算する方法がある。具体的には、各映像に対して、被写体の二次元姿勢群を含む部分映像を当該映像から切り出す。次に、切り出した部分映像の各フレームに対して特徴量（例えば、SIFT特徴量やHOG特徴量）を計算し、そのフレームごとの特徴量の類似度（例えば、ベクトルの内積）の統計値（例えば、平均値、最大値、中央値）を計算する。この統計値が所定の閾値以上である（より大きい）場合に、最も高かった二次元姿勢群の組を同一被写体の二次元姿勢群であるとして対応付け、被写体ごとの二次元姿勢群の集合p’を生成する。
【０１０３】
（ステップ５）
ステップ４の処理をすべての二次元姿勢群について実行したか否かを判定する。すべての二次元姿勢群について処理を実行していた場合は処理を終了し、そうでない場合はステップ４に戻り、処理が実行されていない二次元姿勢群についてステップ４の処理を実行する。
【０１０４】
被写体同定部３１３における処理により被写体ごとの二次元姿勢群の集合p’が生成された後、パラメータ最適化装置３００は、第二実施形態で説明した、Ｓ２１５以降の処理を被写体ごとの二次元姿勢群の集合p’ごとに行う。
【０１０５】
時間ずれ生成部２１５は、Ｓ３１３で生成した被写体ごとの二次元姿勢群の集合p’を入力とし、被写体ごとの二次元姿勢群の集合p’に含まれる二次元位置J2D’(i,t,j)を用いて、カメラ間の時間ずれΔti_k(k=1, …, Nk、Nkは1以上の整数)と二次元位置J2D’(i,t,j)をカメラ間の時間ずれΔti_kに対するフレーム単位の時間ずれδti_kだけ時間方向にずらした補正済二次元位置J2D’(i,t+δti_k,j)を生成し、被写体ごとの補正済二次元姿勢群の集合p’cを生成し、カメラ間の時間ずれΔti_kと被写体ごとの補正済二次元姿勢群の集合p’cを出力する（Ｓ２１５）。被写体ごとの補正済二次元姿勢の集合p’cは、以下のように生成される。フレーム時刻t+δti_kにおけるカメラiでの被写体の補正済二次元姿勢p’c(i, t+δti_k)をp’c(i, t+δti_k)={J2D’(i,t+δti_k,j)|j=1, …, Nj}、カメラiでの被写体の補正済二次元姿勢群p’c(i)をp’c(i)={p’c(i, t+δti_k)| t=1, …, Nt}とし、被写体ごとの二次元姿勢群の集合p’cを、p’c={p’c(i)| i=1, …, Nc}として生成する。
【０１０６】
初期値推定部１２０は、Ｓ２１５で生成した被写体ごとの補正済二次元姿勢群の集合p’cを入力とし、カメラi(i=1, …, Nc)の外部パラメータRi, Tiの初期値、フレーム時刻t+δti_kにおける被写体の関節j(j=1, …, Nj)の三次元位置J3D’(t+δti_k,j)の初期値、被写体の関節ペアm(m=1, …, Nm)の関節長L(m)の初期値を推定し、出力する（Ｓ１２０）。なお、フレーム時刻t+δti_kにおける被写体の関節jの三次元位置J3D’(t+δti_k,j)の集合はフレーム時刻t+δti_kにおける被写体の三次元姿勢である。
【０１０７】
最適化部２３０は、Ｓ２１５で生成した時間ずれΔti_kと被写体ごとの補正済二次元姿勢群の集合p’cとＳ１２０で推定したカメラiの外部パラメータRi, Tiの初期値と三次元位置J3D’(t+δti_k,j)の初期値と関節長L(m)の初期値を入力とし、カメラiの外部パラメータ、フレーム時刻tにおける被写体の関節jの三次元位置J3D’(t,j)、被写体の関節ペアmの関節長L(m)の３つのパラメータのうち少なくとも１つのパラメータの最適値と時間ずれΔti_kの最適値を生成し、出力する（Ｓ２３０）。なお、被写体ごとに最適値を生成するため、一般にカメラiの外部パラメータや時間ずれの最適値は複数（つまり、被写体の数だけ）生成されることになるが、被写体ごとに生成された最適値の平均をとるなどし、複数の最適値を１つの値に統合することにより、１つの最適値を出力するようにしてもよい。
【０１０８】
上述の説明では、初期値推定部１２０や最適化部２３０を、被写体ごとに分類した二次元位置（つまり、被写体ごとの補正済二次元姿勢群の集合p’c）を入力とし、被写体ごとに初期値推定や最適化の処理を実行する構成部であるとしたが、例えば、外部パラメータの推定に８ポイントアルゴリズムや５ポイントアルゴリズムを用いる場合の初期値推定部１２０のように、複数の被写体の二次元位置を被写体ごとに分類することなく、それらを統合して初期値推定や最適化の処理を行うような構成部とすることもできる。そのため、あるカメラで撮影された映像に複数の被写体が存在する場合には、それらの被写体に対して共通の時間ずれを想定し、その時間ずれを想定した条件のもと、初期値推定や最適化の処理を実行してもよい。こうすることにより、上述したような、被写体ごとに複数の時間ずれの最適値が生成されることを避けることができる。
【０１０９】
また、第一実施形態のように複数のカメラ間に時間ずれが存在しないケースであっても、被写体が複数存在する場合には被写体ごとにパラメータが求まることがある。この場合も、被写体ごとに生成されたパラメータの最適値の平均をとるなどし、複数の最適値を１つの値に統合することにより、１つの最適値を出力するようにしてもよい。なお、複数のカメラ間に時間ずれが存在しないケースも、先ほどと同様、被写体ごとにパラメータを求めるのではなく、複数の被写体の二次元位置を分類することなく、統合して初期値推定や最適化の処理を実行するようにしてもよい。
【０１１０】
本実施形態の発明によれば、同期がとられていないカメラで撮影された映像を入力として関節の二次元位置の推定誤差が大きくなった場合でも高精度なパラメータを生成することが可能となる。また、同時にカメラ間の時間ずれを推定することにより、時間キャリブレーションを行うことができる。
【０１１１】
これにより、例えば、図１７に示したカメラ1とカメラ3の間で同期をとり、被写体1の三次元姿勢を推定することができる。また、カメラ2とカメラ3の間で同期をとり、被写体2の三次元姿勢を推定することもできる。その結果、カメラ1、カメラ2はそれぞれカメラ3と同期しているため、カメラ1とカメラ2の間でも同期がとれることになる。
【０１１２】
＜補記＞
本発明の装置は、例えば単一のハードウェアエンティティとして、キーボードなどが接続可能な入力部、液晶ディスプレイなどが接続可能な出力部、ハードウェアエンティティの外部に通信可能な通信装置（例えば通信ケーブル）が接続可能な通信部、ＣＰＵ（Central Processing Unit、キャッシュメモリやレジスタなどを備えていてもよい）、メモリであるＲＡＭやＲＯＭ、ハードディスクである外部記憶装置並びにこれらの入力部、出力部、通信部、ＣＰＵ、ＲＡＭ、ＲＯＭ、外部記憶装置の間のデータのやり取りが可能なように接続するバスを有している。また必要に応じて、ハードウェアエンティティに、ＣＤ−ＲＯＭなどの記録媒体を読み書きできる装置（ドライブ）などを設けることとしてもよい。このようなハードウェア資源を備えた物理的実体としては、汎用コンピュータなどがある。
【０１１３】
ハードウェアエンティティの外部記憶装置には、上述の機能を実現するために必要となるプログラムおよびこのプログラムの処理において必要となるデータなどが記憶されている（外部記憶装置に限らず、例えばプログラムを読み出し専用記憶装置であるＲＯＭに記憶させておくこととしてもよい）。また、これらのプログラムの処理によって得られるデータなどは、ＲＡＭや外部記憶装置などに適宜に記憶される。
【０１１４】
ハードウェアエンティティでは、外部記憶装置（あるいはＲＯＭなど）に記憶された各プログラムとこの各プログラムの処理に必要なデータが必要に応じてメモリに読み込まれて、適宜にＣＰＵで解釈実行・処理される。その結果、ＣＰＵが所定の機能（上記、…部、…手段などと表した各構成要件）を実現する。
【０１１５】
本発明は上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。また、上記実施形態において説明した処理は、記載の順に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されるとしてもよい。
【０１１６】
既述のように、上記実施形態において説明したハードウェアエンティティ（本発明の装置）における処理機能をコンピュータによって実現する場合、ハードウェアエンティティが有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記ハードウェアエンティティにおける処理機能がコンピュータ上で実現される。
【０１１７】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ（Random Access Memory）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）等を、光磁気記録媒体として、ＭＯ（Magneto-Optical disc）等を、半導体メモリとしてＥＥＰ−ＲＯＭ（Electronically Erasable and Programmable-Read Only Memory）等を用いることができる。
【０１１８】
また、このプログラムの流通は、例えば、そのプログラムを記録したＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【０１１９】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるＡＳＰ（Application Service Provider）型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの（コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等）を含むものとする。
【０１２０】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、ハードウェアエンティティを構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【図１】
2019079487.tif 000013
【図２】
2019079487.tif 000014
【図３】
2019079487.tif 000015
【図４】
2019079487.tif 000016
【図５】
2019079487.tif 000017
【図６】
2019079487.tif 000018
【図７】
2019079487.tif 000019
【図８】
2019079487.tif 000020
【図９】
2019079487.tif 000021
【図１０】
2019079487.tif 000022
【図１１】
2019079487.tif 000023
【図１２】
2019079487.tif 000024
【図１３】
2019079487.tif 000025
【図１４】
2019079487.tif 000026
【図１５】
2019079487.tif 000027
【図１６】
2019079487.tif 000028
【図１７】
2019079487.tif 000029
【図１８】
2019079487.tif 000030
【図１９】
2019079487.tif 000031
【図２０】
2019079487.tif 000032